@@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file @@ -50,7 +50,7 @@ export function useImageBot(slug: string) { setStoreParams(bot) } - // это пиз**ц + // это пиз**ц const resetParams = () => { if (botParams) { dispatch(setParams({})) @@ -1,31 +1,73 @@ .card { - background-color: var(--new-ui-main-color); - width: 381px; - height: 227px; - border-radius: 15px; - margin-right: 20px; - margin-top: 20px; - - cursor: pointer; - padding: 30px; - box-sizing: border-box; - - @media (max-width:420px) { - width: 92vw; - } - - .description { - margin-top: 20px; - - .title { - font-weight: 600; - } - - .text { - color: var(--new-ui-gray-color); - font-weight: 400; - margin-top: 6px; - font-size: 15px; - } - } -} \ No newline at end of file + background-color: var(--new-ui-main-color); + width: 381px; + height: 227px; + border-radius: 15px; + margin-right: 20px; + margin-top: 20px; + + cursor: pointer; + padding: 30px; + box-sizing: border-box; + + @media (max-width: 420px) { + width: 92vw; + } + + .description { + margin-top: 20px; + + .title { + font-weight: 600; + } + + .text { + color: var(--new-ui-gray-color); + font-weight: 400; + margin-top: 6px; + font-size: 15px; + } + } +} + +.blocked { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + border-radius: 15px; + padding-right: 20px; + cursor: not-allowed; + + span { + color: white; + font-weight: 500; + } +} + +.locked { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + border-radius: 15px; + padding-right: 20px; + + span { + color: white; + padding-top: 10px; + font-weight: 500; + } +} @@ -2,6 +2,8 @@ import React, { useEffect, useMemo } from 'react' import { Avatar, Box, Button, Typography } from '@mui/material' import Image from 'next/image' import Link from 'next/link' +import LockSvg from '@/src/assets/svg/lock.svg?react' +import BlockedSvg from '@/src/assets/svg/blocked.svg?react' import styles from './card.module.scss' @@ -10,12 +12,12 @@ export type CardProps = { icon: string text: string uid: string + blocked?: boolean slug: string accessed_models?: string[] | null } -const ChatCard = ({ text, icon, title, uid, slug, accessed_models }: CardProps) => { - +const ChatCard = ({ text, icon, title, uid, slug, accessed_models, blocked }: CardProps) => { const link = useMemo(() => { return accessed_models && !accessed_models.includes(slug) ? '/account?scope=subscribe' @@ -23,8 +25,16 @@ const ChatCard = ({ text, icon, title, uid, slug, accessed_models }: CardProps) }, [accessed_models]) return ( - - + + @@ -33,46 +43,19 @@ const ChatCard = ({ text, icon, title, uid, slug, accessed_models }: CardProps) {text} - {accessed_models && !accessed_models.includes(slug) && ( - - - - - + {blocked ? ( +
+ + Модель недоступна +
+ ) : ( + accessed_models && + !accessed_models.includes(slug) && ( +
+ + Недоступно в текущем тарифе +
+ ) )}
@@ -29,7 +29,14 @@ interface Props { isLoader?: boolean } -export const Layout: React.FC = ({ children, device, isAuthPage = false, titlePage, title = titlePage, isLoader }) => { +export const Layout: React.FC = ({ + children, + device, + isAuthPage = false, + titlePage, + title = titlePage, + isLoader, +}) => { const { data: sessionData } = useSession() const appState = useAppSelector((state) => state) const dispatch = useAppDispatch() @@ -56,7 +63,10 @@ export const Layout: React.FC = ({ children, device, isAuthPage = false, }, [status]) React.useEffect(() => { - if ((sessionData && !sessionStorage.getItem('firstRender')) || (sessionData && !localStorage.getItem('global_settings'))) { + if ( + (sessionData && !sessionStorage.getItem('firstRender')) || + (sessionData && !localStorage.getItem('global_settings')) + ) { dispatch(getUserAccountSettings(sessionData.access)) sessionStorage.setItem('firstRender', 'true') } @@ -81,7 +91,10 @@ export const Layout: React.FC = ({ children, device, isAuthPage = false, targetDevice: device, targetType: 'sidemenu', }) - if (setting) setting?.value?.sidemenu_state === 'opened' ? setSidemenuDefaultOpen(true) : setSidemenuDefaultOpen(false) + if (setting) + setting?.value?.sidemenu_state === 'opened' + ? setSidemenuDefaultOpen(true) + : setSidemenuDefaultOpen(false) } }, [appState.settings.state]) @@ -126,9 +139,23 @@ export const Layout: React.FC = ({ children, device, isAuthPage = false, {!isAuthPage ? ( desktop ? ( - - - + + + {children} @@ -10,6 +10,7 @@ import { addToFavorites, deleteFromFavorites } from '@/src/shared/api/endpoints' import { Card } from '@/src/shared/card/card' import { API_URL } from '@/src/shared/lib/constants' import { getTypeDevice } from '@/src/shared/lib/helpers' +import { IShortModel } from '@/src/entities/model-entity' interface Model { uid: string @@ -46,7 +47,7 @@ export async function getServerSideProps(context: any): Promise<{ props: any }> } } -async function getImages(token?: string): Promise { +async function getImages(token?: string): Promise { try { const { data } = await axios.get(API_URL + '/ml_models/?category=audio', { headers: { @@ -60,7 +61,7 @@ async function getImages(token?: string): Promise { } export const Images: React.FC = ({ deviceType }) => { - const [bots, setBots] = useState(null) + const [bots, setBots] = useState(null) const { data } = useSession() @@ -72,26 +73,7 @@ export const Images: React.FC = ({ deviceType }) => { getImages(data?.access).then((res) => setBots(res)) }, [data?.access]) - const changeFavorite = async (uid: string) => { - let res = 400 - if (bots?.find((el) => el.uid === uid)!.is_favourite === true) { - res = await deleteFromFavorites(uid, data?.access) - } else { - res = await addToFavorites(uid, data?.access) - } - - if (res !== 400) - setBots((prev) => - prev!.map((el) => { - if (el.uid === uid) { - el.is_favourite = !el.is_favourite - } - - return el - }) - ) - } return ( @@ -103,7 +85,8 @@ export const Images: React.FC = ({ deviceType }) => { uid={item.uid} key={item.uid} title={item.title} - icon={item.image_link} + blocked={item.blocked} + icon={item.image} text={item.description} slug={item.slug} /> @@ -9,8 +9,8 @@ import ChatCard from '@/src/main/components/chat_bot_card' import { Layout } from '@/src/main/layout' import { useAppSelector } from '@/src/main/store/store' import model_api from '@/src/shared/api/models/api' -import { IShortModel } from '@/src/shared/api/models/models' import { getTypeDevice } from '@/src/shared/lib/helpers' +import { IShortModel } from '@/src/entities/model-entity' export async function getServerSideProps(context: any): Promise<{ props: any }> { const deviceType = getTypeDevice(context) @@ -42,7 +42,9 @@ const Page: React.FC = ({ deviceType }) => { return ( - Чат-боты + + Чат-боты + {bots ? ( bots.map((item, idx) => ( @@ -50,6 +52,7 @@ const Page: React.FC = ({ deviceType }) => { accessed_models={user.payment_plan.plan.accessed_models} uid={item.uid} key={idx} + blocked={item.blocked} title={item.title} icon={item.image} text={item.description} @@ -169,6 +169,7 @@ const Images: React.FC = ({ deviceType, deviceOs }) => { { const deviceType = getTypeDevice(context) @@ -38,7 +38,9 @@ export const Images: React.FC = ({ deviceType }) => { return ( - Изображения + + Изображения + {bots ? ( bots.map((item, idx) => { @@ -46,8 +48,9 @@ export const Images: React.FC = ({ deviceType }) => { { @@ -1,32 +1,72 @@ .card { - width: 381px; - overflow: hidden; - position: relative; - height: 290px; - border-radius: 15px; - background-color: var(--new-ui-main-color); - margin-top: 15px; - margin-right: 20px; + width: 381px; + overflow: hidden; + position: relative; + height: 290px; + border-radius: 15px; + background-color: var(--new-ui-main-color); + margin-top: 15px; + margin-right: 20px; - @media (max-width:420px) { - width: 92vw; - height: 300px; - } - - .description { - padding: 15px 20px; + @media (max-width: 420px) { + width: 92vw; + height: 300px; + } - .title { - color: var(--new-ui-text-color); - font-weight: 600; - font-size: 21px; - } - .text { - margin-top: 15px; - font-size: 15px; - color: var(--new-ui-gray-color); - } - } + .description { + padding: 15px 20px; + .title { + color: var(--new-ui-text-color); + font-weight: 600; + font-size: 21px; + } + .text { + margin-top: 15px; + font-size: 15px; + color: var(--new-ui-gray-color); + } + } +} -} \ No newline at end of file +.blocked { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + border-radius: 15px; + padding-right: 20px; + cursor: not-allowed; + + span { + color: white; + font-weight: 500; + } +} + +.locked { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + border-radius: 15px; + padding-right: 20px; + + span { + color: white; + padding-top: 10px; + font-weight: 500; + } +} @@ -2,6 +2,8 @@ import React, { useMemo } from 'react' import { Box, Button, Typography } from '@mui/material' import Image from 'next/image' import Link from 'next/link' +import LockSvg from '@/src/assets/svg/lock.svg?react' +import BlockedSvg from '@/src/assets/svg/blocked.svg?react' import styles from './card.module.scss' @@ -11,10 +13,12 @@ interface IProps { title: string slug: string uid: string + blocked: boolean accessed_models?: string[] | null } -export const Card = ({ text, icon, title, uid, slug, accessed_models }: IProps) => { +export const Card = ({ text, icon, title, blocked, slug, accessed_models }: IProps) => { + const link = useMemo(() => { return accessed_models && !accessed_models.includes(slug) ? '/account?scope=subscribe' @@ -22,8 +26,8 @@ export const Card = ({ text, icon, title, uid, slug, accessed_models }: IProps) }, [accessed_models]) return ( - - + + {text} - {accessed_models && !accessed_models.includes(slug) && ( - - - - - + {blocked ? ( +
+ + Модель недоступна +
+ ) : ( + accessed_models && + !accessed_models.includes(slug) && ( +
+ + Недоступно в текущем тарифе +
+ ) )}
@@ -30,6 +30,25 @@ display: flex; align-items: center; justify-content: center; + padding-right: 10px; + span { + color: white; + font-weight: 600; + padding-left: 8px; + } + } + + &__locked { + background-color: rgba($color: #000000, $alpha: 0.7); + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + padding-right: 10px; span { color: white; font-weight: 600; @@ -7,6 +7,8 @@ import SuccessRoundedSvg from '@/src/assets/svg/success-rounded.svg?react' import ClockSvg from '@/src/assets/svg/clock.svg?react' import LightningSvg from '@/src/assets/svg/lightning.svg?react' import LockSvg from '@/src/assets/svg/lock.svg?react' +import BlockedSvg from '@/src/assets/svg/blocked.svg?react' +import { useAppSelector } from '@/src/main/store/store' interface ImagePopupModelProps extends IShortModel { active: boolean @@ -35,6 +37,13 @@ export const ImagePopupModel = ({ averageTokenCost, setActive, }: ImagePopupModelProps) => { + const { accessed_models } = useAppSelector((state) => state.user.payment_plan.plan) + + const isAccess = useMemo( + () => accessed_models && accessed_models.includes(slug), + [accessed_models] + ) + // жесткий костыль))) - временный const formatedTime = useMemo(() => { if (!actual_stat) return null @@ -55,12 +64,25 @@ export const ImagePopupModel = ({ }, [actual_stat, averageTokenCost]) return ( -
!blocked && setActive(slug)} className={styles.model}> - {blocked && ( -
- - Недоступно в текущем тарифе +
{ + if (blocked || !isAccess) return + setActive(slug) + }} + className={styles.model} + > + {blocked ? ( +
+ + Модель недоступна
+ ) : ( + !isAccess && ( +
+ + Недоступно в текущем тарифе +
+ ) )}
@@ -113,9 +113,15 @@ } }, "node_modules/@babel/compat-data": { +<<<<<<< HEAD "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", +======= + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", +>>>>>>> task-feature-35 "license": "MIT", "engines": { "node": ">=6.9.0" @@ -168,6 +174,7 @@ } }, "node_modules/@babel/generator": { +<<<<<<< HEAD "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", @@ -175,6 +182,15 @@ "dependencies": { "@babel/parser": "^7.26.5", "@babel/types": "^7.26.5", +======= + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", +>>>>>>> task-feature-35 "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -212,18 +228,30 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { +<<<<<<< HEAD "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", +======= + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", + "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", +>>>>>>> task-feature-35 "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", +<<<<<<< HEAD "@babel/helper-replace-supers": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/traverse": "^7.25.9", +======= + "@babel/helper-replace-supers": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.26.9", +>>>>>>> task-feature-35 "semver": "^6.3.1" }, "engines": { @@ -440,12 +468,21 @@ } }, "node_modules/@babel/parser": { +<<<<<<< HEAD "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", "license": "MIT", "dependencies": { "@babel/types": "^7.26.7" +======= + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.9" +>>>>>>> task-feature-35 }, "bin": { "parser": "bin/babel-parser.js" @@ -648,6 +685,7 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { +<<<<<<< HEAD "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", @@ -657,6 +695,17 @@ "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-remap-async-to-generator": "^7.25.9", "@babel/traverse": "^7.25.9" +======= + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" +>>>>>>> task-feature-35 }, "engines": { "node": ">=6.9.0" @@ -902,6 +951,7 @@ } }, "node_modules/@babel/plugin-transform-for-of": { +<<<<<<< HEAD "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", @@ -909,6 +959,15 @@ "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", +======= + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", +>>>>>>> task-feature-35 "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { @@ -1455,6 +1514,7 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { +<<<<<<< HEAD "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", @@ -1462,6 +1522,15 @@ "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" +======= + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" +>>>>>>> task-feature-35 }, "engines": { "node": ">=6.9.0" @@ -1487,9 +1556,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { +<<<<<<< HEAD "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.7.tgz", "integrity": "sha512-5cJurntg+AT+cgelGP9Bt788DKiAw9gIMSMU2NJrLAilnj0m8WZWUNZPSLOmadYsujHutpgElO+50foX+ib/Wg==", +======= + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz", + "integrity": "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==", +>>>>>>> task-feature-35 "dev": true, "license": "MIT", "dependencies": { @@ -1574,6 +1649,7 @@ } }, "node_modules/@babel/preset-env": { +<<<<<<< HEAD "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", @@ -1581,6 +1657,15 @@ "license": "MIT", "dependencies": { "@babel/compat-data": "^7.26.5", +======= + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", +>>>>>>> task-feature-35 "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", @@ -1594,7 +1679,11 @@ "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.25.9", +<<<<<<< HEAD "@babel/plugin-transform-async-generator-functions": "^7.25.9", +======= + "@babel/plugin-transform-async-generator-functions": "^7.26.8", +>>>>>>> task-feature-35 "@babel/plugin-transform-async-to-generator": "^7.25.9", "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", @@ -1609,7 +1698,11 @@ "@babel/plugin-transform-dynamic-import": "^7.25.9", "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", +<<<<<<< HEAD "@babel/plugin-transform-for-of": "^7.25.9", +======= + "@babel/plugin-transform-for-of": "^7.26.9", +>>>>>>> task-feature-35 "@babel/plugin-transform-function-name": "^7.25.9", "@babel/plugin-transform-json-strings": "^7.25.9", "@babel/plugin-transform-literals": "^7.25.9", @@ -1637,7 +1730,11 @@ "@babel/plugin-transform-shorthand-properties": "^7.25.9", "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", +<<<<<<< HEAD "@babel/plugin-transform-template-literals": "^7.25.9", +======= + "@babel/plugin-transform-template-literals": "^7.26.8", +>>>>>>> task-feature-35 "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", @@ -1645,9 +1742,15 @@ "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", +<<<<<<< HEAD "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.38.1", +======= + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", +>>>>>>> task-feature-35 "semver": "^6.3.1" }, "engines": { @@ -1725,6 +1828,7 @@ } }, "node_modules/@babel/template": { +<<<<<<< HEAD "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", @@ -1733,12 +1837,23 @@ "@babel/code-frame": "^7.25.9", "@babel/parser": "^7.25.9", "@babel/types": "^7.25.9" +======= + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" +>>>>>>> task-feature-35 }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { +<<<<<<< HEAD "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", @@ -1749,6 +1864,18 @@ "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", "@babel/types": "^7.26.7", +======= + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", +>>>>>>> task-feature-35 "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1757,9 +1884,15 @@ } }, "node_modules/@babel/types": { +<<<<<<< HEAD "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", +======= + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", +>>>>>>> task-feature-35 "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -4040,6 +4173,7 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { +<<<<<<< HEAD "version": "0.10.6", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", @@ -4048,6 +4182,16 @@ "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.2", "core-js-compat": "^3.38.0" +======= + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" +>>>>>>> task-feature-35 }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4211,9 +4355,15 @@ } }, "node_modules/caniuse-lite": { +<<<<<<< HEAD "version": "1.0.30001696", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", +======= + "version": "1.0.30001699", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", + "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", +>>>>>>> task-feature-35 "funding": [ { "type": "opencollective", @@ -4841,9 +4991,15 @@ "dev": true }, "node_modules/electron-to-chromium": { +<<<<<<< HEAD "version": "1.5.90", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", +======= + "version": "1.5.101", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", + "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==", +>>>>>>> task-feature-35 "license": "ISC" }, "node_modules/emoji-regex": {