diff --git a/.babelrc.json b/.babelrc.json index 7aafc53b..9164ce7c 100644 --- a/.babelrc.json +++ b/.babelrc.json @@ -15,4 +15,4 @@ "@babel/preset-react" ], "plugins": [] -} \ No newline at end of file +} diff --git a/README.md b/README.md index 9b2eedc5..fbba3a73 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,15 @@ Frontend часть проекта для сайта maxboom. Онлайн ма - Axios - SCSS module +## Принят следующий порядок импортов: + +- Импорты библиотек (from 'react') +- Импорты абсолютные (from '@/...') +- Импорты относительные внутрь (from './...') и наружу (from '../...') при этом импорты наружу не рекомендуются и следует использовать абсолютные импорты +(SCSS не относится к правилу порядка импортов) + +каждая группа импортов сортируется по алфавиту (hint используй «npx eslint 'путь к файлу' --fix») + ## Работа с git: 1. Участник клонирует проект diff --git a/config/storybook/decorators/StoreDecorator.js b/config/storybook/decorators/StoreDecorator.js index cb6e3cb8..a4393563 100644 --- a/config/storybook/decorators/StoreDecorator.js +++ b/config/storybook/decorators/StoreDecorator.js @@ -4,4 +4,3 @@ export const StoreDecorator = (initialState) => (Story) => ( ); - diff --git a/package-lock.json b/package-lock.json index 7e7ba1f5..f4f90c29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,14 +10,18 @@ "license": "ISC", "dependencies": { "@reduxjs/toolkit": "1.9.5", + "@storybook/test": "^8.0.0", "axios": "^1.6.2", "classnames": "^2.3.2", "focus-trap": "^7.5.4", "formik": "^2.4.5", + "leaflet": "^1.9.4", "normalize-scss": "7.0.1", "react": "18.2.0", "react-dom": "18.2.0", "react-input-mask": "^2.0.4", + "react-leaflet": "^4.2.1", + "react-loading-skeleton": "^3.4.0", "react-redux": "8.1.2", "react-router": "6.15.0", "react-router-dom": "6.15.0", @@ -37,14 +41,15 @@ "@storybook/react-webpack5": "^7.5.1", "@storybook/testing-library": "^0.2.2", "@svgr/webpack": "^8.1.0", - "@types/react": "18.2.20", + "@types/leaflet": "^1.9.8", + "@types/react": "^18.2.64", "@types/react-dom": "18.2.7", "@types/react-input-mask": "^3.0.5", "@types/react-router-dom": "5.3.3", "@typescript-eslint/eslint-plugin": "6.4.1", "@typescript-eslint/parser": "6.4.1", "babel-loader": "9.1.3", - "css-loader": "6.8.1", + "css-loader": "^6.8.1", "dotenv": "16.3.1", "eslint": "8.47.0", "eslint-config-prettier": "9.0.0", @@ -58,7 +63,7 @@ "sass": "1.66.1", "sass-loader": "13.3.2", "storybook": "^7.5.1", - "style-loader": "3.3.3", + "style-loader": "^3.3.3", "stylelint": "15.10.3", "stylelint-config-prettier-scss": "1.0.0", "stylelint-config-standard-scss": "10.0.0", @@ -82,6 +87,11 @@ "node": ">=0.10.0" } }, + "node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==" + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -108,12 +118,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -121,9 +130,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -160,12 +169,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -199,14 +208,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -255,9 +264,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -280,13 +289,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -329,9 +338,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -360,23 +369,23 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -386,13 +395,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -439,9 +448,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -451,55 +460,53 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", - "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.10" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", - "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", - "dev": true, + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, @@ -508,9 +515,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -520,9 +527,9 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -535,14 +542,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" + "@babel/plugin-transform-optional-chaining": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -551,56 +558,20 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { @@ -679,9 +650,9 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", - "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -694,9 +665,9 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -709,9 +680,9 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -896,9 +867,9 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -911,14 +882,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", - "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -929,14 +900,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -946,9 +917,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -961,9 +932,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", - "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -976,12 +947,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -992,12 +963,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1009,18 +980,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1032,13 +1002,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/template": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1048,9 +1018,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", - "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1063,12 +1033,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1079,9 +1049,9 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1094,9 +1064,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1110,12 +1080,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1126,9 +1096,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1142,13 +1112,13 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz", - "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.22.5" + "@babel/plugin-syntax-flow": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1158,12 +1128,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1173,13 +1144,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1190,9 +1161,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1206,9 +1177,9 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1221,9 +1192,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1237,9 +1208,9 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1252,12 +1223,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1268,12 +1239,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1285,15 +1256,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1303,12 +1274,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1335,9 +1306,9 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1350,9 +1321,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1366,9 +1337,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1382,16 +1353,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", + "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" + "@babel/plugin-transform-parameters": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1401,13 +1372,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-replace-supers": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1417,9 +1388,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1433,9 +1404,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", - "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1450,9 +1421,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1465,12 +1436,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1481,13 +1452,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -1499,9 +1470,9 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1529,9 +1500,9 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1578,9 +1549,9 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", - "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1594,9 +1565,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1610,9 +1581,9 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1625,9 +1596,9 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1640,9 +1611,9 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1656,9 +1627,9 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1671,9 +1642,9 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1686,9 +1657,9 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1719,9 +1690,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1734,12 +1705,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1750,12 +1721,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1766,12 +1737,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1782,25 +1753,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.10.tgz", - "integrity": "sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1812,59 +1784,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.10", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.10", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.10", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1876,14 +1847,14 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.22.15.tgz", - "integrity": "sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.0.tgz", + "integrity": "sha512-cum/nSi82cDaSJ21I4PgLTVlj0OXovFk6GRguJYe/IKg6y6JHLTbJhybtX4k35WT9wdeJfEVjycTixMhBHd0Dg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-flow-strip-types": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1907,17 +1878,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", - "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-transform-react-display-name": "^7.22.5", - "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1946,15 +1917,15 @@ } }, "node_modules/@babel/register": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", - "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.5", + "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "engines": { @@ -2003,19 +1974,6 @@ "node": ">=6" } }, - "node_modules/@babel/register/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/register/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -2064,15 +2022,6 @@ "node": ">=6" } }, - "node_modules/@babel/register/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", @@ -2091,34 +2040,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.15.tgz", - "integrity": "sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15", - "debug": "^4.1.0", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2126,13 +2075,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.15.tgz", - "integrity": "sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.15", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2145,12 +2094,6 @@ "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", "dev": true }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -2707,31 +2650,31 @@ "dev": true }, "node_modules/@floating-ui/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", - "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dev": true, "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/dom": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", - "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dev": true, "dependencies": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", - "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dev": true, "dependencies": { - "@floating-ui/dom": "^1.5.1" + "@floating-ui/dom": "^1.6.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -2739,9 +2682,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", - "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", "dev": true }, "node_modules/@humanwhocodes/config-array": { @@ -2806,18 +2749,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2856,23 +2787,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -2994,7 +2908,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -4087,6 +4000,16 @@ "@babel/runtime": "^7.13.10" } }, + "node_modules/@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/@reduxjs/toolkit": { "version": "1.9.5", "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", @@ -4121,47 +4044,24 @@ "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@storybook/addon-actions": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.5.1.tgz", - "integrity": "sha512-GieD3ru6EslKvwol1cE4lvszQCLB/AkQdnLofnqy1nnYso+hRxmPAw9/O+pWfpUBFdjXsQ7GX09+wEUpOJzepw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.17.tgz", + "integrity": "sha512-TBphs4v6LRfyTpFo/WINF0TkMaE3rrNog7wW5mbz6n0j8o53kDN4o9ZEcygSL5zQX43CAaghQTeDCss7ueG7ZQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", + "@storybook/core-events": "7.6.17", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@types/uuid": "^9.0.1", "dequal": "^2.0.2", - "lodash": "^4.17.21", "polished": "^4.2.2", - "prop-types": "^15.7.2", - "react-inspector": "^6.0.0", - "telejson": "^7.2.0", - "ts-dedent": "^2.0.0", "uuid": "^9.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@storybook/addon-actions/node_modules/uuid": { @@ -4178,96 +4078,56 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.5.1.tgz", - "integrity": "sha512-XZoyJw/WoUlVvQHPTbSAZjKy2SEUjaSmAWgcRync25vp+q0obthjx6UnZHEUuH8Ud07HA3FYzlFtMicH5y/OIQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.17.tgz", + "integrity": "sha512-7dize7x8+37PH77kmt69b0xSaeDqOcZ4fpzW6+hk53hIaCVU26eGs4+j+743Xva31eOgZWNLupUhOpUDc6SqZw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@storybook/addon-controls": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.5.1.tgz", - "integrity": "sha512-Xag1e7TZo04LjUenfobkShpKMxTtwa4xM4bXQA8LjaAGZQ7jipbQ4PE73a17K59S2vqq89VAhkuMJWiyaOFqpw==", - "dev": true, - "dependencies": { - "@storybook/blocks": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/manager-api": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.17.tgz", + "integrity": "sha512-zR0aLaUF7FtV/nMRyfniFbCls/e0DAAoXACuOAUAwNAv0lbIS8AyZZiHSmKucCvziUQ6WceeCC7+du3C+9y0rQ==", + "dev": true, + "dependencies": { + "@storybook/blocks": "7.6.17", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@storybook/addon-docs": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.5.1.tgz", - "integrity": "sha512-+wE67oWIhGK9+kv2sxoY2KDXm3v62RfEgxiksdhtffTP/joOK3p88S0lO+8g0G4xfNGUnBhPtzGMuUxWwaH2Pw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.17.tgz", + "integrity": "sha512-FKa4Mdy7nhgvEVZJHpMkHriDzpVHbohn87zv9NCL+Ctjs1iAmzGwxEm0culszyDS1HN2ToVoY0h8CSi2RSSZqA==", "dev": true, "dependencies": { "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/csf-plugin": "7.5.1", - "@storybook/csf-tools": "7.5.1", + "@storybook/blocks": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/csf-plugin": "7.6.17", + "@storybook/csf-tools": "7.6.17", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.5.1", - "@storybook/postinstall": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/react-dom-shim": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/node-logger": "7.6.17", + "@storybook/postinstall": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -4283,24 +4143,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.5.1.tgz", - "integrity": "sha512-/jaUZXV+mE/2G5PgEpFKm4lFEHluWn6GFR/pg+hphvHOzBGA3Y75JMgUfJ5CDYHB1dAVSf9JrPOd8Eb1tpESfA==", - "dev": true, - "dependencies": { - "@storybook/addon-actions": "7.5.1", - "@storybook/addon-backgrounds": "7.5.1", - "@storybook/addon-controls": "7.5.1", - "@storybook/addon-docs": "7.5.1", - "@storybook/addon-highlight": "7.5.1", - "@storybook/addon-measure": "7.5.1", - "@storybook/addon-outline": "7.5.1", - "@storybook/addon-toolbars": "7.5.1", - "@storybook/addon-viewport": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/manager-api": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/preview-api": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.17.tgz", + "integrity": "sha512-qlSpamxuYfT2taF953nC9QijGF2pSbg1ewMNpdwLTj16PTZvR/d8NCDMTJujI1bDwM2m18u8Yc43ibh5LEmxCw==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "7.6.17", + "@storybook/addon-backgrounds": "7.6.17", + "@storybook/addon-controls": "7.6.17", + "@storybook/addon-docs": "7.6.17", + "@storybook/addon-highlight": "7.6.17", + "@storybook/addon-measure": "7.6.17", + "@storybook/addon-outline": "7.6.17", + "@storybook/addon-toolbars": "7.6.17", + "@storybook/addon-viewport": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/manager-api": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", "ts-dedent": "^2.0.0" }, "funding": { @@ -4313,14 +4173,12 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.5.1.tgz", - "integrity": "sha512-js9OV17kpjRowuaGAPfI9aOn/zzt8P589ACZE+/eYBO9jT65CADwAUxg//Uq0/he+Ac9495pcK3BcYyDeym7/g==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.17.tgz", + "integrity": "sha512-R1yBPUUqGn+60aJakn8q+5Zt34E/gU3n3VmgPdryP0LJUdZ5q1/RZShoVDV+yYQ40htMH6oaCv3OyyPzFAGJ6A==", "dev": true, "dependencies": { - "@storybook/core-events": "7.5.1", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.5.1" + "@storybook/global": "^5.0.0" }, "funding": { "type": "opencollective", @@ -4328,21 +4186,13 @@ } }, "node_modules/@storybook/addon-interactions": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.5.1.tgz", - "integrity": "sha512-m9yohFYil+UBwYKFxHYdsAsn8PBCPl6HY/FSgfrDc5PiqT1Ya7paXopimyy9ok+VQt/RC8sEWIm809ONEoxosw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.6.17.tgz", + "integrity": "sha512-6zlX+RDQ1PlA6fp7C+hun8t7h2RXfCGs5dGrhEenp2lqnR/rYuUJRC0tmKpkZBb8kZVcbSChzkB/JYkBjBCzpQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "7.5.1", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/types": "7.6.17", "jest-mock": "^27.0.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" @@ -4350,35 +4200,16 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@storybook/addon-links": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.5.1.tgz", - "integrity": "sha512-KDiQYAVNXxuVTB3QLFZxHlfT8q4KnlNKY+0OODvgD5o1FqFpIyUiR5mIBL4SZMRj2EtwrR3KmZ2UPccFZdu9vw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.6.17.tgz", + "integrity": "sha512-iFUwKObRn0EKI0zMETsil2p9a/81rCuSMEWECsi+khkCAs1FUnD2cT6Ag5ydcNcBXsdtdfDJdtXQrkw+TSoStQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/router": "7.5.1", - "@storybook/types": "7.5.1", - "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" }, "funding": { @@ -4386,57 +4217,35 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "react": { "optional": true - }, - "react-dom": { - "optional": true } } }, "node_modules/@storybook/addon-measure": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.5.1.tgz", - "integrity": "sha512-yR6oELJe0UHYxRijd1YMuGaQRlZ3uABjmrXaFCPnd6agahgTwIJLiK4XamtkVur//LaiJMvtmM2XXrkJ1BvNJw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.17.tgz", + "integrity": "sha512-O5vnHZNkduvZ95jf1UssbOl6ivIxzl5tv+4EpScPYId7w700bxWsJH+QX7ip6KlrCf2o3iUhmPe8bm05ghG2KA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/types": "7.5.1", "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@storybook/addon-onboarding": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.8.tgz", - "integrity": "sha512-3WwCocUuTibHWO89uzAbeONEn6x9NkmxA0mOU4rYPhEsMQ4NDNDD1GXcievZmpwt5VviFgw5FRx8+BxPn54YmQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.11.tgz", + "integrity": "sha512-0Sa7PJDsM6AANOWZX7vq3kgCbS9AZFjr3tfr3bLGfXviwIBKjoZDDdIErJkS3D4mNcDa78lYQvp3PTCKwLIJ9A==", "dev": true, "dependencies": { - "@storybook/telemetry": "^7.1.0-alpha.32", + "@storybook/telemetry": "^7.1.0", "react-confetti": "^6.1.0" }, "peerDependencies": { @@ -4445,116 +4254,59 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.5.1.tgz", - "integrity": "sha512-IMi5Bo34/Q5YUG5uD8ZUTBwlpGrkDIV+PUgkyNIbmn9OgozoCH80Fs7YlGluRFODQISpHwio9qvSFRGdSNT56A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.17.tgz", + "integrity": "sha512-9o9JXDsYjNaDgz/cY5+jv694+aik/1aiRGGvsCv68e1p/ob0glkGKav4lnJe2VJqD+gCmaARoD8GOJlhoQl8JQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/types": "7.5.1", "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@storybook/addon-toolbars": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.5.1.tgz", - "integrity": "sha512-T88hEEQicV6eCovr5TN2nFgKt7wU0o7pAunP5cU01iiVRj63+oQiVIBB8Xtm4tN+/DsqtyP0BTa6rFwt2ULy8A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.17.tgz", + "integrity": "sha512-UMrchbUHiyWrh6WuGnpy34Jqzkx/63B+MSgb3CW7YsQaXz64kE0Rol0TNSznnB+mYXplcqH+ndI4r4kFsmgwDg==", "dev": true, - "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1" - }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@storybook/addon-viewport": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.5.1.tgz", - "integrity": "sha512-L57lOGB3LfKgAdLinaZojRQ9W9w2RC0iP9bVaXwrRVeJdpNayfuW4Kh1C8dmacZroB4Zp2U/nEjkSmdcp6uUWg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.17.tgz", + "integrity": "sha512-sA0QCcf4QAMixWvn8uvRYPfkKCSl6JajJaAspoPqXSxHEpK7uwOlpg3kqFU5XJJPXD0X957M+ONgNvBzYqSpEw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "memoizerific": "^1.11.3", - "prop-types": "^15.7.2" + "memoizerific": "^1.11.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, "node_modules/@storybook/blocks": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.5.1.tgz", - "integrity": "sha512-7b69p6kDdgmlejEMM2mW6/Lz4OmU/R3Qr+TpKnPcV5iS7ADxRQEQCTEMoQ5RyLJf0vDRh/7Ljn/RMo8Ux3X7JA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.17.tgz", + "integrity": "sha512-PsNVoe0bX1mMn4Kk3nbKZ0ItDZZ0YJnYAFJ6toAbsyBAbgzg1sce88sQinzvbn58/RT9MPKeWMPB45ZS7ggiNg==", "dev": true, "dependencies": { - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.5.1", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/docs-tools": "7.6.17", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/manager-api": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -4596,15 +4348,15 @@ "dev": true }, "node_modules/@storybook/builder-manager": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.5.1.tgz", - "integrity": "sha512-a02kg/DCcYgiTz+7rw4KdvQzif+2lZ+NIFF5U5u8SDoCQuoe3wRT6QBrFYQTxJexA4WfO6cpyRLDJ1rx6NLo8A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.17.tgz", + "integrity": "sha512-Sj8hcDYiPCCMfeLzus37czl0zdrAxAz4IyYam2jBjVymrIrcDAFyL1OCZvnq33ft179QYQWhUs9qwzVmlR/ZWg==", "dev": true, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.5.1", - "@storybook/manager": "7.5.1", - "@storybook/node-logger": "7.5.1", + "@storybook/core-common": "7.6.17", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", @@ -4720,33 +4472,35 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.5.1.tgz", - "integrity": "sha512-klZ2Q1lESt4o9HhofsD1cEPFd8T9FCWkMCNVYmPoGepmyVwuibLCJ/U6k4noQ8Wow5SEexKSq2gU7ir7cKcXwA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.22.0", - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/core-webpack": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/preview": "7.5.1", - "@storybook/preview-api": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.6.17.tgz", + "integrity": "sha512-GMaBd8/RzivuAmWrYSt9Rga3j8WLcu5LCMYiPVs+XKXsKAC8lTkV0WRWh8Nk6wTmfzsRQ2acwFjSG5oE4ClZKA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/core-webpack": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview": "7.6.17", + "@storybook/preview-api": "7.6.17", "@swc/core": "^1.3.82", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.0.0", - "babel-plugin-named-exports-order": "^0.0.2", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", + "cjs-module-lexer": "^1.2.3", "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", + "es-module-lexer": "^1.4.1", "express": "^4.17.3", "fork-ts-checker-webpack-plugin": "^8.0.0", "fs-extra": "^11.1.0", "html-webpack-plugin": "^5.5.0", + "magic-string": "^0.30.5", "path-browserify": "^1.0.1", "process": "^0.11.10", "semver": "^7.3.7", @@ -4772,15 +4526,60 @@ } } }, + "node_modules/@storybook/builder-webpack5/node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/@storybook/builder-webpack5/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/@storybook/builder-webpack5/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4794,9 +4593,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4843,13 +4642,13 @@ "dev": true }, "node_modules/@storybook/channels": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.1.tgz", - "integrity": "sha512-7hTGHqvtdFTqRx8LuCznOpqPBYfUeMUt/0IIp7SFuZT585yMPxrYoaK//QmLEWnPb80B8HVTSQi7caUkJb32LA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.17.tgz", + "integrity": "sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.2.0", @@ -4861,23 +4660,23 @@ } }, "node_modules/@storybook/cli": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.5.1.tgz", - "integrity": "sha512-qKIJs8gqXTy0eSEbt0OW5nsJqiV/2+N1eWoiBiIxoZ+8b0ACXIAUcE/N6AsEDUqIq8AMK7lebqjEfIAt2Sp7Mg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.17.tgz", + "integrity": "sha512-1sCo+nCqyR+nKfTcEidVu8XzNoECC7Y1l+uW38/r7s2f/TdDorXaIGAVrpjbSaXSoQpx5DxYJVaKCcQuOgqwcA==", "dev": true, "dependencies": { - "@babel/core": "^7.22.9", - "@babel/preset-env": "^7.22.9", - "@babel/types": "^7.22.5", + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/types": "^7.23.0", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/core-server": "7.5.1", - "@storybook/csf-tools": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/telemetry": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/codemod": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/core-server": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", @@ -4894,7 +4693,7 @@ "get-port": "^5.1.1", "giget": "^1.0.0", "globby": "^11.0.2", - "jscodeshift": "^0.14.0", + "jscodeshift": "^0.15.1", "leven": "^3.1.0", "ora": "^5.4.1", "prettier": "^2.8.0", @@ -4902,7 +4701,6 @@ "puppeteer-core": "^2.1.1", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "simple-update-notifier": "^2.0.0", "strip-json-comments": "^3.0.1", "tempy": "^1.0.1", "ts-dedent": "^2.0.0", @@ -4917,6 +4715,45 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/cli/node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@storybook/cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@storybook/cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4975,6 +4812,12 @@ "node": ">= 6" } }, + "node_modules/@storybook/cli/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/@storybook/cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5132,9 +4975,9 @@ } }, "node_modules/@storybook/cli/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -5174,9 +5017,9 @@ "dev": true }, "node_modules/@storybook/client-logger": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.1.tgz", - "integrity": "sha512-XxbLvg0aQRoBrzxYLcVYCbjDkGbkU8Rfb74XbV2CLiO2bIbFPmA1l1Nwbp+wkCGA+O6Z1zwzSl6wcKKqZ6XZCg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.17.tgz", + "integrity": "sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -5187,22 +5030,22 @@ } }, "node_modules/@storybook/codemod": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.5.1.tgz", - "integrity": "sha512-PqHGOz/CZnRG9pWgshezCacu524CrXOJrCOwMUP9OMpH0Jk/NhBkHaBZrB8wMjn5hekTj0UmRa/EN8wJm9CCUQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.22.9", - "@babel/preset-env": "^7.22.9", - "@babel/types": "^7.22.5", - "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/types": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.17.tgz", + "integrity": "sha512-JuTmf2u3C4fCnjO7o3dqRgrq3ozNYfWlrRP8xuIdvT7niMap7a396hJtSKqS10FxCgKFcMAOsRgrCalH1dWxUg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/types": "^7.23.0", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", - "jscodeshift": "^0.14.0", + "jscodeshift": "^0.15.1", "lodash": "^4.17.21", "prettier": "^2.8.0", "recast": "^0.23.1" @@ -5212,6 +5055,42 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/codemod/node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@storybook/codemod/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/@storybook/codemod/node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", @@ -5228,18 +5107,18 @@ } }, "node_modules/@storybook/components": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.5.1.tgz", - "integrity": "sha512-fdzzxGBV/Fj9pYwfYL3RZsVUHeBqlfLMBP/L6mPmjaZSwHFqkaRZZUajZc57lCtI+TOy2gY6WH3cPavEtqtgLw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.17.tgz", + "integrity": "sha512-lbh7GynMidA+CZcJnstVku6Nhs+YkqjYaZ+mKPugvlVhGVWv0DaaeQFVuZ8cJtUGJ/5FFU4Y+n+gylYUHkGBMA==", "dev": true, "dependencies": { "@radix-ui/react-select": "^1.2.2", "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.5.1", - "@storybook/csf": "^0.1.0", + "@storybook/client-logger": "7.6.17", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" @@ -5254,13 +5133,13 @@ } }, "node_modules/@storybook/core-client": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.5.1.tgz", - "integrity": "sha512-K651UnNKkW8U078CH5rcUqf0siGcfEhwya2yQN5RBb/H78HSLBLdYgzKqxaKtmz+S8DFyWhrgbXZLdBjavozJg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.17.tgz", + "integrity": "sha512-LuDbADK+DPNAOOCXOlvY09hdGVueXlDetsdOJ/DgYnSa9QSWv9Uv+F8QcEgR3QckZJbPlztKJIVLgP2n/Xkijw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/preview-api": "7.5.1" + "@storybook/client-logger": "7.6.17", + "@storybook/preview-api": "7.6.17" }, "funding": { "type": "opencollective", @@ -5268,14 +5147,14 @@ } }, "node_modules/@storybook/core-common": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.5.1.tgz", - "integrity": "sha512-/rQ0/xvxFHSGCgIkK74HrgDMnzfYtDYTCoSod/qCTojfs9aciX+JYgvo5ChPnI/LEKWwxRTkrE7pl2u5+C4XGA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.17.tgz", + "integrity": "sha512-me2TP3Q9/qzqCLoDHUSsUF+VS1MHxfHbTVF6vAz0D/COTxzsxLpu9TxTbzJoBCxse6XRb6wWI1RgF1mIcjic7g==", "dev": true, "dependencies": { - "@storybook/core-events": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/core-events": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", "@types/find-cache-dir": "^3.2.1", "@types/node": "^18.0.0", "@types/node-fetch": "^2.6.4", @@ -5303,9 +5182,9 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -5411,22 +5290,6 @@ "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@storybook/core-common/node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -5548,18 +5411,6 @@ "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@storybook/core-common/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5573,9 +5424,9 @@ } }, "node_modules/@storybook/core-events": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.1.tgz", - "integrity": "sha512-2eyaUhTfmEEqOEZVoCXVITCBn6N7QuZCG2UNxv0l//ED+7MuMiFhVw7kS7H3WOVk65R7gb8qbKFTNX8HFTgBHg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.17.tgz", + "integrity": "sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==", "dev": true, "dependencies": { "ts-dedent": "^2.0.0" @@ -5586,26 +5437,26 @@ } }, "node_modules/@storybook/core-server": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.5.1.tgz", - "integrity": "sha512-DD4BXCH91aZJoFuu0cQwG1ZUmE59kG5pazuE3S89zH1GwKS1jWyeAv4EwEfvynT5Ah1ctd8QdCZCSXVzjq0qcw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.17.tgz", + "integrity": "sha512-KWGhTTaL1Q14FolcoKKZgytlPJUbH6sbJ1Ptj/84EYWFewcnEgVs0Zlnh1VStRZg+Rd1WC1V4yVd/bbDzxrvQA==", "dev": true, "dependencies": { "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.5.1", - "@storybook/channels": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.5.1", + "@storybook/builder-manager": "7.6.17", + "@storybook/channels": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.17", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/telemetry": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", "@types/detect-port": "^1.3.0", "@types/node": "^18.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -5618,7 +5469,7 @@ "express": "^4.17.3", "fs-extra": "^11.1.0", "globby": "^11.0.2", - "ip": "^2.0.0", + "ip": "^2.0.1", "lodash": "^4.17.21", "open": "^8.4.0", "pretty-hrtime": "^1.0.3", @@ -5639,9 +5490,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -5838,9 +5689,9 @@ } }, "node_modules/@storybook/core-server/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -5880,14 +5731,14 @@ "dev": true }, "node_modules/@storybook/core-webpack": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.5.1.tgz", - "integrity": "sha512-FlXj6GCXG0evCC5s7LNcu1uxRC9fG856HQe4PzEk7jDSQdWQRX8Olpo4IOHB1WObuvYqw6Gf0OD6TB5uhnKXmg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.6.17.tgz", + "integrity": "sha512-PyGrFhRM8sTONGwwLWLqBQ1HO+LBnVZ+5TOQO7ejQfdV2FWyNOzjBXm2e5jL/C6XlqiEhmL5pyHEyDBaQJQ3KA==", "dev": true, "dependencies": { - "@storybook/core-common": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/core-common": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", "@types/node": "^18.0.0", "ts-dedent": "^2.0.0" }, @@ -5897,30 +5748,29 @@ } }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", + "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", "dependencies": { "type-fest": "^2.19.0" } }, "node_modules/@storybook/csf-plugin": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.5.1.tgz", - "integrity": "sha512-jhV2aCZhSIXUiQDcHtuCg3dyYMzjYHTwLb4cJtkNw4sXqQoTGydTSWYwWigcHFfKGoyQp82rSgE1hE4YYx6iew==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.17.tgz", + "integrity": "sha512-xTHv9BUh3bkDVCvcbmdfVF0/e96BdrEgqPJ3G3RmKbSzWLOkQ2U9yiPfHzT0KJWPhVwj12fjfZp0zunu+pcS6Q==", "dev": true, "dependencies": { - "@storybook/csf-tools": "7.5.1", + "@storybook/csf-tools": "7.6.17", "unplugin": "^1.3.1" }, "funding": { @@ -5929,17 +5779,17 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.5.1.tgz", - "integrity": "sha512-YChGbT1/odLS4RLb2HtK7ixM7mH5s7G5nOsWGKXalbza4SFKZIU2UzllEUsA+X8YfxMHnCD5TC3xLfK0ByxmzQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.17.tgz", + "integrity": "sha512-dAQtam0EBPeTJYcQPLxXgz4L9JFqD+HWbLFG9CmNIhMMjticrB0mpk1EFIS6vPXk/VsVWpBgMLD7dZlD6YMKcQ==", "dev": true, "dependencies": { - "@babel/generator": "^7.22.9", - "@babel/parser": "^7.22.7", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@storybook/csf": "^0.1.0", - "@storybook/types": "7.5.1", + "@babel/generator": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "@storybook/csf": "^0.1.2", + "@storybook/types": "7.6.17", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -5953,7 +5803,6 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, "engines": { "node": ">=12.20" }, @@ -5968,15 +5817,16 @@ "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.5.1.tgz", - "integrity": "sha512-tDtQGeKU5Kc2XoqZ5vpeGQrOkRg2UoDiSRS6cLy+M/sMB03Annq0ZngnJXaMiv0DLi2zpWSgWqPgYA3TJTZHBw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.17.tgz", + "integrity": "sha512-bYrLoj06adqklyLkEwD32C0Ww6t+9ZVvrJHiVT42bIhTRpFiFPAetl1a9KPHtFLnfduh4n2IxIr1jv32ThPDTA==", "dev": true, "dependencies": { - "@storybook/core-common": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/core-common": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17", "@types/doctrine": "^0.0.3", + "assert": "^2.1.0", "doctrine": "^3.0.0", "lodash": "^4.17.21" }, @@ -5988,100 +5838,141 @@ "node_modules/@storybook/global": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==" }, "node_modules/@storybook/instrumenter": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-7.5.1.tgz", - "integrity": "sha512-bxRoWVVLlevqTFappXj1JfZlvEceBiBPdQQqTTeeA09VL3UyFWDpPFRn8Wf2C43Vt4V18w+krMyb1KfTk37ROQ==", - "dev": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.0.0.tgz", + "integrity": "sha512-wNDVmyLu3kRf/2xf8lQJBI8Gx5eGlvOFwCagUfgd5Ke3l3Xo0XUgNjqFBbqG9ZouC21U6znBTYsIS+eEe61i7w==", "dependencies": { - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", + "@storybook/channels": "8.0.0", + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.5.1" + "@storybook/preview-api": "8.0.0", + "@vitest/utils": "^0.34.6", + "util": "^0.12.4" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.5.1.tgz", - "integrity": "sha512-Jo83sj7KvsZ78vvqjH72ErmQ31Frx6GBLbpeYXZtbAXWl0/LHsxAEVz0Mke+DixzWDyP0/cn+Nw8QUfA+Oz1fg==", - "dev": true, + "node_modules/@storybook/instrumenter/node_modules/@storybook/channels": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.0.tgz", + "integrity": "sha512-uykCBlSIMVodsgTFC/XAgO7JeaTJrKtDmmM6Z4liGkPS6EUvurOEu2vK6FuvojzhLHdVJ5bP+VXSJerfm7aE4Q==", + "dependencies": { + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/global": "^5.0.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager-api": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.5.1.tgz", - "integrity": "sha512-ygwJywluhhE1dpA0jC2D/3NFhMXzFCt+iW4m3cOwexYTuiDWF66AbGOFBx9peE7Wk/Z9doKkf9E3v11enwaidA==", - "dev": true, + "node_modules/@storybook/instrumenter/node_modules/@storybook/client-logger": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.0.tgz", + "integrity": "sha512-olc1vUfaZNkXc7L8UoCdGmyBieHQbsaB+0vVoivYMSa1DHYtXE75RefU3lhMSGrkvIZmXMvfaIDmnyJIOB5FxA==", + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/instrumenter/node_modules/@storybook/core-events": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.0.tgz", + "integrity": "sha512-kkabj4V99gOTBW+y3HM/LTCDekglqb+lslZMamM+Ytxv1lCqCEOIR/OGfnYOyEaK4BLcx61Zp+fO30FZxtoT1w==", + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/instrumenter/node_modules/@storybook/preview-api": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.0.tgz", + "integrity": "sha512-R2NBKtvHi+i1b/3PZe4u4YdJ7dlqr8YTqLn7syB/YSnKRAa7DYed+GJLu4qFJisE6IuYi+57AsdW16otRFEVvg==", "dependencies": { - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", + "@storybook/channels": "8.0.0", + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/router": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/types": "8.0.0", + "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "semver": "^7.3.7", - "store2": "^2.14.2", - "telejson": "^7.2.0", - "ts-dedent": "^2.0.0" + "qs": "^6.10.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/manager-api/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, + "node_modules/@storybook/instrumenter/node_modules/@storybook/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.0.tgz", + "integrity": "sha512-6nJipdgoAkVFk2JpRPCm9vb/Yuak2lmdZRv9qzl8cNRttlbOESVlzbmhgxCmWV0OYUaMeYge9L8NWhJ14LKbzw==", "dependencies": { - "yallist": "^4.0.0" + "@storybook/channels": "8.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager-api/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@storybook/manager": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.17.tgz", + "integrity": "sha512-A1LDDIqMpwRzq/dqkbbiza0QI04o4ZHCl2a3UMDZUV/+QLc2nsr2DAaLk4CVL4/cIc5zGqmIcaOTvprx2YKVBw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-api": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.17.tgz", + "integrity": "sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager-api/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@storybook/mdx2-csf": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz", @@ -6089,9 +5980,9 @@ "dev": true }, "node_modules/@storybook/node-logger": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.5.1.tgz", - "integrity": "sha512-xRMdL5YPe8C9sgJ1R0QD3YbiLjDGrfQk91+GplRD8N9FVCT5dki55Bv5Kp0FpemLYYg6uxAZL5nHmsZHKDKQoA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.17.tgz", + "integrity": "sha512-w59MQuXhhUNrUVmVkXhMwIg2nvFWjdDczLTwYLorhfsE36CWeUOY5QCZWQy0Qf/h+jz8Uo7Evy64qn18v9C4wA==", "dev": true, "funding": { "type": "opencollective", @@ -6099,9 +5990,9 @@ } }, "node_modules/@storybook/postinstall": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.5.1.tgz", - "integrity": "sha512-+LFUe2nNbmmLPKNt34RXSSC1r40yGGOoP/qlaPFwNOgQN2AZUrfqk6ZYnw6LjmcuHpQInZ4y4WDgbzg6QQL3+w==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.17.tgz", + "integrity": "sha512-WaWqB8o9vUc9aaVls+povQSVirf1Xd1LZcVhUKfAocAF3mzYUsnJsVqvnbjRj/F96UFVihOyDt9Zjl/9OvrCvQ==", "dev": true, "funding": { "type": "opencollective", @@ -6109,25 +6000,26 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.5.1.tgz", - "integrity": "sha512-Dt6Na7YyxBHUoo2PJ73epLfGA3HlXMoF8MdtysQM5Pv6ZNcC3QmqoOnR0lQDMw0SzAcreRnY68Gu7xi+zTnlEw==", - "dev": true, - "dependencies": { - "@babel/preset-flow": "^7.22.5", - "@babel/preset-react": "^7.22.5", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/core-webpack": "7.5.1", - "@storybook/docs-tools": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/react": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.6.17.tgz", + "integrity": "sha512-gn/LvIbll9loOkzwbFlxzOZGmJ6t1vF2/gfi+p/N/AifDYe8+LVM1QV4KRVKt6UEJwsQd79lKf7vPH92AQaKKQ==", + "dev": true, + "dependencies": { + "@babel/preset-flow": "^7.22.15", + "@babel/preset-react": "^7.22.15", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", + "@storybook/core-webpack": "7.6.17", + "@storybook/docs-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/react": "7.6.17", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-plugin-add-react-displayname": "^0.0.5", - "babel-plugin-react-docgen": "^4.2.1", "fs-extra": "^11.1.0", - "react-refresh": "^0.11.0", + "magic-string": "^0.30.5", + "react-docgen": "^7.0.0", + "react-refresh": "^0.14.0", "semver": "^7.3.7", "webpack": "5" }, @@ -6153,9 +6045,9 @@ } }, "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -6174,9 +6066,9 @@ } }, "node_modules/@storybook/preset-react-webpack/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6195,9 +6087,9 @@ "dev": true }, "node_modules/@storybook/preview": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.5.1.tgz", - "integrity": "sha512-nfZC103z9Cy27FrJKUr2IjDuVt8Mvn1Z5gZ0TtJihoK7sfLTv29nd/XU9zzrb/epM3o8UEzc63xZZsMaToDbAw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.17.tgz", + "integrity": "sha512-LvkMYK/y6alGjwRVNDIKL1lFlbyZ0H0c8iAbcQkiMoaFiujMQyVswMDKlWcj42Upfr/B1igydiruomc+eUt0mw==", "dev": true, "funding": { "type": "opencollective", @@ -6205,17 +6097,17 @@ } }, "node_modules/@storybook/preview-api": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.5.1.tgz", - "integrity": "sha512-8xjUbuGmHLmw8tfTUCjXSvMM9r96JaexPFmHdwW6XLe71KKdWp8u96vRDRE5648cd+/of15OjaRtakRKqluA/A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.17.tgz", + "integrity": "sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==", "dev": true, "dependencies": { - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/types": "7.5.1", + "@storybook/types": "7.6.17", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -6231,18 +6123,18 @@ } }, "node_modules/@storybook/react": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.5.1.tgz", - "integrity": "sha512-IG97c30fFSmPyGpJ1awHC/+9XnCTqleeOQwROXjroMHSm8m/JTWpHMVLyM1x7b6VAnBhNHWJ+oXLZe/hXkXfpA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.17.tgz", + "integrity": "sha512-lVqzQSU03rRJWYW+gK2gq6mSo3/qtnVICY8B8oP7gc36jVu4ksDIu45bTfukM618ODkUZy0vZe6T4engK3azjA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/core-client": "7.5.1", - "@storybook/docs-tools": "7.5.1", + "@storybook/client-logger": "7.6.17", + "@storybook/core-client": "7.6.17", + "@storybook/docs-tools": "7.6.17", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.5.1", - "@storybook/react-dom-shim": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/types": "7.6.17", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^18.0.0", @@ -6392,9 +6284,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.5.1.tgz", - "integrity": "sha512-bzTIfLm91O9h3rPYJLtRbmsPARerY3z7MoyvadGp8TikvIvf+WyT/vHujw+20SxnqiZVq5Jv65FFlxc46GGB1Q==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.17.tgz", + "integrity": "sha512-32Sa/G+WnvaPiQ1Wvjjw5UM9rr2c4GDohwCcWVv3/LJuiFPqNS6zglAtmnsrlIBnUwRBMLMh/ekCTdqMiUmfDw==", "dev": true, "funding": { "type": "opencollective", @@ -6406,14 +6298,14 @@ } }, "node_modules/@storybook/react-webpack5": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.5.1.tgz", - "integrity": "sha512-iH1y35LjnAmyMA0QhZHiYyGrQYelY0Lds0K+cDZlFDDi7W4YiunULAyakZTje0LctJTLWcR7pWyp3dv2EYHb4g==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.6.17.tgz", + "integrity": "sha512-qGc2JxaSmvPXV7ndxA/8qPtPLK7lAwejL/QdrzLXhxEmVdZLMew640FBYgOV/zWnehV3BnivThln/8PsQyst/g==", "dev": true, "dependencies": { - "@storybook/builder-webpack5": "7.5.1", - "@storybook/preset-react-webpack": "7.5.1", - "@storybook/react": "7.5.1", + "@storybook/builder-webpack5": "7.6.17", + "@storybook/preset-react-webpack": "7.6.17", + "@storybook/react": "7.6.17", "@types/node": "^18.0.0" }, "engines": { @@ -6487,33 +6379,29 @@ } }, "node_modules/@storybook/router": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.5.1.tgz", - "integrity": "sha512-BvKo+IxWwo3dfIG1+vLtZLT4qqkNHL5GTIozTyX04uqt9ByYZL6SJEzxEa1Xn6Qq/fbdQwzCanNHbTlwiTMf7Q==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.17.tgz", + "integrity": "sha512-GnyC0j6Wi5hT4qRhSyT8NPtJfGmf82uZw97LQRWeyYu5gWEshUdM7aj40XlNiScd5cZDp0owO1idduVF2k2l2A==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", + "@storybook/client-logger": "7.6.17", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@storybook/telemetry": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.5.1.tgz", - "integrity": "sha512-z9PGouNqvZ2F7vD79qDF4PN7iW3kE3MO7YX0iKTmzgLi4ImKuXIJRF04GRH8r+WYghnbomAyA4o6z9YJMdNuVw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.17.tgz", + "integrity": "sha512-WOcOAmmengYnGInH98Px44F47DSpLyk20BM+Z/IIQDzfttGOLlxNqBBG1XTEhNRn+AYuk4aZ2JEed2lCjVIxcA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/csf-tools": "7.5.1", + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/csf-tools": "7.6.17", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -6724,6 +6612,107 @@ "node": ">=8" } }, + "node_modules/@storybook/test": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.0.0.tgz", + "integrity": "sha512-am0Pj1wqgsOUpW4RCfZtVGMIF8ddwMCbortOezEKcFuwAaNPE+p62alG+vOVIR0D19fs0XouWJj8rGo3OhzJRA==", + "dependencies": { + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/instrumenter": "8.0.0", + "@storybook/preview-api": "8.0.0", + "@testing-library/dom": "^9.3.1", + "@testing-library/jest-dom": "^6.4.0", + "@testing-library/user-event": "^14.5.2", + "@vitest/expect": "1.1.3", + "@vitest/spy": "^1.1.3", + "chai": "^4.3.7", + "util": "^0.12.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/test/node_modules/@storybook/channels": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.0.tgz", + "integrity": "sha512-uykCBlSIMVodsgTFC/XAgO7JeaTJrKtDmmM6Z4liGkPS6EUvurOEu2vK6FuvojzhLHdVJ5bP+VXSJerfm7aE4Q==", + "dependencies": { + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/global": "^5.0.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/test/node_modules/@storybook/client-logger": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.0.tgz", + "integrity": "sha512-olc1vUfaZNkXc7L8UoCdGmyBieHQbsaB+0vVoivYMSa1DHYtXE75RefU3lhMSGrkvIZmXMvfaIDmnyJIOB5FxA==", + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/test/node_modules/@storybook/core-events": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.0.tgz", + "integrity": "sha512-kkabj4V99gOTBW+y3HM/LTCDekglqb+lslZMamM+Ytxv1lCqCEOIR/OGfnYOyEaK4BLcx61Zp+fO30FZxtoT1w==", + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/test/node_modules/@storybook/preview-api": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.0.tgz", + "integrity": "sha512-R2NBKtvHi+i1b/3PZe4u4YdJ7dlqr8YTqLn7syB/YSnKRAa7DYed+GJLu4qFJisE6IuYi+57AsdW16otRFEVvg==", + "dependencies": { + "@storybook/channels": "8.0.0", + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "8.0.0", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/test/node_modules/@storybook/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.0.tgz", + "integrity": "sha512-6nJipdgoAkVFk2JpRPCm9vb/Yuak2lmdZRv9qzl8cNRttlbOESVlzbmhgxCmWV0OYUaMeYge9L8NWhJ14LKbzw==", + "dependencies": { + "@storybook/channels": "8.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/testing-library": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.2.2.tgz", @@ -6736,13 +6725,13 @@ } }, "node_modules/@storybook/theming": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.5.1.tgz", - "integrity": "sha512-ETLAOn10hI4Mkmjsr0HGcM6HbzaURrrPBYmfXOrdbrzEVN+AHW4FlvP9d8fYyP1gdjPE1F39XvF0jYgt1zXiHQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.17.tgz", + "integrity": "sha512-ZbaBt3KAbmBtfjNqgMY7wPMBshhSJlhodyMNQypv+95xLD/R+Az6aBYbpVAOygLaUQaQk4ar7H/Ww6lFIoiFbA==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.5.1", + "@storybook/client-logger": "7.6.17", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -6756,12 +6745,12 @@ } }, "node_modules/@storybook/types": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.1.tgz", - "integrity": "sha512-ZcMSaqFNx1E+G00nRDUi8kKL7gxJVlnCvbKLNj3V85guy4DkIYAZr31yDqze07gDWbjvKoHIp3tKpgE+2i8upQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.17.tgz", + "integrity": "sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==", "dev": true, "dependencies": { - "@storybook/channels": "7.5.1", + "@storybook/channels": "7.6.17", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" @@ -7041,13 +7030,13 @@ } }, "node_modules/@swc/core": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.95.tgz", - "integrity": "sha512-PMrNeuqIusq9DPDooV3FfNEbZuTu5jKAc04N3Hm6Uk2Fl49cqElLFQ4xvl4qDmVDz97n3n/C1RE0/f6WyGPEiA==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.7.tgz", + "integrity": "sha512-I7a9sUxB+z+UCf6KudqrQH/RgLal/S+E+t4uBdbggycLyJe7WvBgPrQlcN5UpEuD9YC2PJ0CN6kgD6ARStg+pg==", "dev": true, "hasInstallScript": true, "dependencies": { - "@swc/counter": "^0.1.1", + "@swc/counter": "^0.1.2", "@swc/types": "^0.1.5" }, "engines": { @@ -7058,16 +7047,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.95", - "@swc/core-darwin-x64": "1.3.95", - "@swc/core-linux-arm-gnueabihf": "1.3.95", - "@swc/core-linux-arm64-gnu": "1.3.95", - "@swc/core-linux-arm64-musl": "1.3.95", - "@swc/core-linux-x64-gnu": "1.3.95", - "@swc/core-linux-x64-musl": "1.3.95", - "@swc/core-win32-arm64-msvc": "1.3.95", - "@swc/core-win32-ia32-msvc": "1.3.95", - "@swc/core-win32-x64-msvc": "1.3.95" + "@swc/core-darwin-arm64": "1.4.7", + "@swc/core-darwin-x64": "1.4.7", + "@swc/core-linux-arm-gnueabihf": "1.4.7", + "@swc/core-linux-arm64-gnu": "1.4.7", + "@swc/core-linux-arm64-musl": "1.4.7", + "@swc/core-linux-x64-gnu": "1.4.7", + "@swc/core-linux-x64-musl": "1.4.7", + "@swc/core-win32-arm64-msvc": "1.4.7", + "@swc/core-win32-ia32-msvc": "1.4.7", + "@swc/core-win32-x64-msvc": "1.4.7" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -7079,9 +7068,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.95.tgz", - "integrity": "sha512-VAuBAP3MNetO/yBIBzvorUXq7lUBwhfpJxYViSxyluMwtoQDhE/XWN598TWMwMl1ZuImb56d7eUsuFdjgY7pJw==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.7.tgz", + "integrity": "sha512-IhfP2Mrrh9WcdlBJQbPNBhfdOhW/SC910SiuzvxaLgJmzq1tw6TVDNUz4Zf85TbK5uzgR0emtPc9hTGxynl57A==", "cpu": [ "arm64" ], @@ -7095,9 +7084,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.95.tgz", - "integrity": "sha512-20vF2rvUsN98zGLZc+dsEdHvLoCuiYq/1B+TDeE4oolgTFDmI1jKO+m44PzWjYtKGU9QR95sZ6r/uec0QC5O4Q==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.7.tgz", + "integrity": "sha512-MO01pnxJDS6st5IiqyTnAOz9kpAPP/O4lzEUH9E80XdXBzwptS5hNTM0egBlqueWDFrPM26RI81JLtyTU7kR8w==", "cpu": [ "x64" ], @@ -7111,9 +7100,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.95.tgz", - "integrity": "sha512-oEudEM8PST1MRNGs+zu0cx5i9uP8TsLE4/L9HHrS07Ck0RJ3DCj3O2fU832nmLe2QxnAGPwBpSO9FntLfOiWEQ==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.7.tgz", + "integrity": "sha512-+cDaXW6PZqGhXIq9C4xE+/QuyUsLkXf8d8uSXep+rZYDl4YHS9Fi7HpZQnqLX6al/iVhwe3VnxHMGw50gxcr/g==", "cpu": [ "arm" ], @@ -7127,9 +7116,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.95.tgz", - "integrity": "sha512-pIhFI+cuC1aYg+0NAPxwT/VRb32f2ia8oGxUjQR6aJg65gLkUYQzdwuUmpMtFR2WVf7WVFYxUnjo4UyMuyh3ng==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.7.tgz", + "integrity": "sha512-RNnVHRKhEtA3pM34wgb3Vumf5M6/XlWzFdkHEMZIkOKyNSUhZiv8X3tsEK+n1rZQWIDkvlw4YyHtB8vK18WdCA==", "cpu": [ "arm64" ], @@ -7143,9 +7132,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.95.tgz", - "integrity": "sha512-ZpbTr+QZDT4OPJfjPAmScqdKKaT+wGurvMU5AhxLaf85DuL8HwUwwlL0n1oLieLc47DwIJEMuKQkYhXMqmJHlg==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.7.tgz", + "integrity": "sha512-p7Xm4Pib02d1SFS9XXMoOcCTDIkFWMspspptPX00VcjAdZYnXWujWGuD2W+KN1gq5syHB1g3TsYs9LP2dGsKqw==", "cpu": [ "arm64" ], @@ -7159,9 +7148,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.95.tgz", - "integrity": "sha512-n9SuHEFtdfSJ+sHdNXNRuIOVprB8nbsz+08apKfdo4lEKq6IIPBBAk5kVhPhkjmg2dFVHVo4Tr/OHXM1tzWCCw==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.7.tgz", + "integrity": "sha512-ViI5jy03cFYPETsye1J+oPbHE4v8oIDN34qebzvgHUlNKOXfc1ig0Zha5oQnKp3zj1rmjcSLIMqK++WR021G5A==", "cpu": [ "x64" ], @@ -7175,9 +7164,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.95.tgz", - "integrity": "sha512-L1JrVlsXU3LC0WwmVnMK9HrOT2uhHahAoPNMJnZQpc18a0paO9fqifPG8M/HjNRffMUXR199G/phJsf326UvVg==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.7.tgz", + "integrity": "sha512-Nf3Axcx/ILl7XE44eidNNPF39rg/KIeqg2545vrOXJG02iu7pEjZuu8wm6w+23BpP4COjZJymlg9LzPT1ZBD5Q==", "cpu": [ "x64" ], @@ -7191,9 +7180,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.95.tgz", - "integrity": "sha512-YaP4x/aZbUyNdqCBpC2zL8b8n58MEpOUpmOIZK6G1SxGi+2ENht7gs7+iXpWPc0sy7X3YPKmSWMAuui0h8lgAA==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.7.tgz", + "integrity": "sha512-MFkJEaC59AO2HpndmHhCkaj8NJus5etjMtBphOe9em7jmmfdQ7mLenKHbZ/CspHNl8yNPO9Qzpa/at2838x+RQ==", "cpu": [ "arm64" ], @@ -7207,9 +7196,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.95.tgz", - "integrity": "sha512-w0u3HI916zT4BC/57gOd+AwAEjXeUlQbGJ9H4p/gzs1zkSHtoDQghVUNy3n/ZKp9KFod/95cA8mbVF9t1+6epQ==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.7.tgz", + "integrity": "sha512-nwrfERocUei9sxqd6URrWcEC3KDcTBD+beMerB9idvuzy4rcm5k1O1ClUlZ9pJOZn+vMN1tqZjLze4hJMT9STQ==", "cpu": [ "ia32" ], @@ -7223,9 +7212,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.95.tgz", - "integrity": "sha512-5RGnMt0S6gg4Gc6QtPUJ3Qs9Un4sKqccEzgH/tj7V/DVTJwKdnBKxFZfgQ34OR2Zpz7zGOn889xwsFVXspVWNA==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.7.tgz", + "integrity": "sha512-d5T8Z/axAml8FTA+T9RS2mwJDNIbSSz5jcEiWaGuKVDIoSZib2HpMvnMydOGsIrmjfS1Z4ZhdAawivPhAZ3M8Q==", "cpu": [ "x64" ], @@ -7239,9 +7228,9 @@ } }, "node_modules/@swc/counter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", - "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true }, "node_modules/@swc/types": { @@ -7251,10 +7240,9 @@ "dev": true }, "node_modules/@testing-library/dom": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", - "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", - "dev": true, + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -7273,7 +7261,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -7288,7 +7275,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7304,7 +7290,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -7315,14 +7300,12 @@ "node_modules/@testing-library/dom/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@testing-library/dom/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -7331,7 +7314,147 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz", + "integrity": "sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==", + "dependencies": { + "@adobe/css-tools": "^4.3.2", + "@babel/runtime": "^7.9.2", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "@jest/globals": ">= 28", + "@types/bun": "latest", + "@types/jest": ">= 28", + "jest": ">= 28", + "vitest": ">= 0.32" + }, + "peerDependenciesMeta": { + "@jest/globals": { + "optional": true + }, + "@types/bun": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "jest": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==" + }, + "node_modules/@testing-library/jest-dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -7340,10 +7463,9 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.5.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.1.tgz", - "integrity": "sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==", - "dev": true, + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "engines": { "node": ">=12", "npm": ">=6" @@ -7362,15 +7484,14 @@ } }, "node_modules/@types/aria-query": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.3.tgz", - "integrity": "sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==", - "dev": true + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" }, "node_modules/@types/babel__core": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", - "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -7381,18 +7502,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.6", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", - "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", - "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -7400,9 +7521,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", - "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -7412,7 +7533,6 @@ "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -7431,7 +7551,6 @@ "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -7447,18 +7566,18 @@ } }, "node_modules/@types/cross-spawn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.4.tgz", - "integrity": "sha512-GGLpeThc2Bu8FBGmVn76ZU3lix17qZensEI4/MPty0aZpm2CHfgEMis31pf5X5EiudYKcPAsWciAsCALoPo5dw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/detect-port": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.4.tgz", - "integrity": "sha512-HveFGabu3IwATqwLelcp6UZ1MIzSFwk+qswC9luzzHufqAwhs22l7KkINDLWRfXxIPTYnSZ1DuQBEgeVPgUOSA==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.5.tgz", + "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==", "dev": true }, "node_modules/@types/doctrine": { @@ -7468,15 +7587,15 @@ "dev": true }, "node_modules/@types/ejs": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.4.tgz", - "integrity": "sha512-fnM/NjByiWdSRJRrmGxgqOSAnmOnsvX1QcNYk5TVyIIj+7ZqOKMb9gQa4OIl/lil2w/8TiTWV+nz3q8yqxez/w==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", "dev": true }, "node_modules/@types/emscripten": { - "version": "1.39.9", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.9.tgz", - "integrity": "sha512-ILdWj4XYtNOqxJaW22NEQx2gJsLfV5ncxYhhGX1a1H1lXl2Ta0gUz7QOnOoF1xQbJwWDjImi8gXN9mKdIf6n9g==", + "version": "1.39.10", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", + "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", "dev": true }, "node_modules/@types/escodegen": { @@ -7508,14 +7627,12 @@ "node_modules/@types/estree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" }, "node_modules/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -7527,7 +7644,6 @@ "version": "4.17.36", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", - "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -7541,10 +7657,16 @@ "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", "dev": true }, + "node_modules/@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "dev": true + }, "node_modules/@types/graceful-fs": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz", - "integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -7574,8 +7696,7 @@ "node_modules/@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", - "dev": true + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" }, "node_modules/@types/http-proxy": { "version": "1.17.11", @@ -7622,28 +7743,36 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/leaflet": { + "version": "1.9.8", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.8.tgz", + "integrity": "sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/lodash": { - "version": "4.14.200", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.200.tgz", - "integrity": "sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", + "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==", "dev": true }, "node_modules/@types/mdx": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.9.tgz", - "integrity": "sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.11.tgz", + "integrity": "sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==", "dev": true }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/mime-types": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.3.tgz", - "integrity": "sha512-bvxCbHeeS7quxS7uOJShyoOQj/BfLabhF6mk9Rmr+2MRfW8W1yxyyL/0GTxLFTHen41GrIw4K3D4DrLouhb8vg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", + "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", "dev": true }, "node_modules/@types/minimist": { @@ -7655,13 +7784,12 @@ "node_modules/@types/node": { "version": "20.5.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", - "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==", - "dev": true + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" }, "node_modules/@types/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-lX17GZVpJ/fuCjguZ5b3TjEbSENxmEk1B2z02yoXSK9WMEWRivhdSY73wWMn6bpcCDAOh6qAdktpKHIlkDk2lg==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "dependencies": { "@types/node": "*", @@ -7675,15 +7803,15 @@ "dev": true }, "node_modules/@types/parse-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", - "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, "node_modules/@types/pretty-hrtime": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.2.tgz", - "integrity": "sha512-vyv9knII8XeW8TnXDcGH7HqG6FeR56ESN6ExM34d/U8Zvs3xuG34euV6CVyB7KEYI7Ts4lQM8b4NL72e7UadnA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==", "dev": true }, "node_modules/@types/prop-types": { @@ -7694,22 +7822,19 @@ "node_modules/@types/qs": { "version": "6.9.8", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", - "dev": true + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" }, "node_modules/@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.20.tgz", - "integrity": "sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==", + "version": "18.2.73", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.73.tgz", + "integrity": "sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, @@ -7752,17 +7877,18 @@ "@types/react-router": "*" } }, + "node_modules/@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, "node_modules/@types/semver": { "version": "7.5.1", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", @@ -7773,7 +7899,6 @@ "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -7792,7 +7917,6 @@ "version": "1.15.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", - "dev": true, "dependencies": { "@types/http-errors": "*", "@types/mime": "*", @@ -7809,9 +7933,9 @@ } }, "node_modules/@types/unist": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", - "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", "dev": true }, "node_modules/@types/use-sync-external-store": { @@ -7819,6 +7943,12 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, "node_modules/@types/ws": { "version": "8.5.5", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", @@ -7829,9 +7959,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", - "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -8131,6 +8261,126 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@vitest/expect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.1.3.tgz", + "integrity": "sha512-MnJqsKc1Ko04lksF9XoRJza0bGGwTtqfbyrsYv5on4rcEkdo+QgUdITenBQBUltKzdxW7K3rWh+nXRULwsdaVg==", + "dependencies": { + "@vitest/spy": "1.1.3", + "@vitest/utils": "1.1.3", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/@vitest/spy": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.1.3.tgz", + "integrity": "sha512-Ec0qWyGS5LhATFQtldvChPTAHv08yHIOZfiNcjwRQbFPHpkih0md9KAbs7TfeIfL7OFKoe7B/6ukBTqByubXkQ==", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/@vitest/utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.1.3.tgz", + "integrity": "sha512-Dyt3UMcdElTll2H75vhxfpZu03uFpXRCHxWnzcrFjZxT1kTbq8ALUYIeBgGolo1gldVdI0YSlQRacsqxTwNqwg==", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/expect/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/expect/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@vitest/spy": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.4.0.tgz", + "integrity": "sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "0.34.7", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.7.tgz", + "integrity": "sha512-ziAavQLpCYS9sLOorGrFFKmy2gnfiNU0ZJ15TsMz/K92NAPS/rp9K4z6AJQQk5Y8adCy4Iwpxy7pQumQ/psnRg==", + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -8400,9 +8650,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -8448,15 +8698,12 @@ } }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, "engines": { - "node": ">= 14" + "node": ">= 6.0.0" } }, "node_modules/aggregate-error": { @@ -8561,7 +8808,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -8570,7 +8816,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -8619,7 +8864,6 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, "dependencies": { "deep-equal": "^2.0.5" } @@ -8628,7 +8872,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -8782,10 +9025,18 @@ "util": "^0.12.5" } }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, "node_modules/ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, "dependencies": { "tslib": "^2.0.1" @@ -8804,9 +9055,9 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "node_modules/async-limiter": { @@ -8833,7 +9084,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -8899,20 +9149,14 @@ "node": ">=8" } }, - "node_modules/babel-plugin-named-exports-order": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz", - "integrity": "sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==", - "dev": true - }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.6.1", "semver": "^6.3.1" }, "peerDependencies": { @@ -8920,39 +9164,60 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.5.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-plugin-react-docgen": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz", - "integrity": "sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==", + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, "dependencies": { - "ast-types": "^0.14.2", - "lodash": "^4.17.15", - "react-docgen": "^5.0.0" + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/balanced-match": { @@ -9000,9 +9265,9 @@ } }, "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "dev": true, "engines": { "node": ">=0.6" @@ -9153,9 +9418,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -9172,10 +9437,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -9241,40 +9506,19 @@ "node": ">= 0.8" } }, - "node_modules/c8": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", - "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "bin": { - "c8": "bin/c8.js" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9330,9 +9574,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001528", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001528.tgz", - "integrity": "sha512-0Db4yyjR9QMNlsxh+kKWzQtkyflkG/snYheSzkjmvdEtEXB1+jt7A2HmSEiO6XIJPIbo92lHNGNySvE5pZcs5Q==", + "version": "1.0.30001597", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", + "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", "dev": true, "funding": [ { @@ -9358,11 +9602,27 @@ "node": ">=4" } }, + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -9372,17 +9632,22 @@ "node": ">=4" } }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -9395,6 +9660,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -9444,6 +9712,21 @@ "node": ">=8" } }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, "node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", @@ -9483,9 +9766,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "engines": { "node": ">=6" @@ -9509,17 +9792,6 @@ "@colors/colors": "1.5.0" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -9559,7 +9831,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -9567,8 +9838,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colord": { "version": "2.9.3", @@ -9731,6 +10001,15 @@ "node": ">=0.8" } }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -9780,12 +10059,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", - "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dev": true, "dependencies": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.3" }, "funding": { "type": "opencollective", @@ -9793,9 +10072,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.1.tgz", - "integrity": "sha512-wCXGbLjnsP10PlK/thHSQlOLlLKNEkaWbTzVvHHZ79fZNeN1gUmw2gBlpItxPv/pvqldevEXFh/d5stdNvl6EQ==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.36.0.tgz", + "integrity": "sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ==", "dev": true, "hasInstallScript": true, "funding": { @@ -9967,6 +10246,11 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -10086,11 +10370,21 @@ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/deep-equal": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", - "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -10170,6 +10464,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -10183,7 +10493,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -10196,9 +10505,9 @@ } }, "node_modules/defu": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", - "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "dev": true }, "node_modules/del": { @@ -10244,7 +10553,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, "engines": { "node": ">=6" } @@ -10306,6 +10614,14 @@ "detect-port": "bin/detect-port.js" } }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -10351,8 +10667,7 @@ "node_modules/dom-accessibility-api": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" }, "node_modules/dom-converter": { "version": "0.2.0", @@ -10525,9 +10840,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.510", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.510.tgz", - "integrity": "sha512-xPfLIPFcN/WLXBpQ/K4UgE98oUBO5Tia6BD4rkSR0wE7ep/PwBVlgvPJQrIBpmJGVAmUzwPKuDbVt9XV6+uC2g==", + "version": "1.4.703", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.703.tgz", + "integrity": "sha512-094ZZC4nHXPKl/OwPinSMtLN9+hoFkdfQGKnvXbY+3WEAYtVDpz9UhJIViiY6Zb8agvqxiaJzNG9M+pRZWvSZw==", "dev": true }, "node_modules/emoji-regex": { @@ -10679,11 +10994,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -10722,9 +11055,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", "dev": true }, "node_modules/es-set-tostringtag": { @@ -10823,9 +11156,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -10841,7 +11174,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -11472,18 +11804,12 @@ "node": ">=4.0" } }, - "node_modules/estree-to-babel": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz", - "integrity": "sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==", - "dev": true, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dependencies": { - "@babel/traverse": "^7.1.6", - "@babel/types": "^7.2.0", - "c8": "^7.6.0" - }, - "engines": { - "node": ">=8.3.0" + "@types/estree": "^1.0.0" } }, "node_modules/esutils": { @@ -11763,12 +12089,24 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", - "dev": true, "dependencies": { "fs-extra": "11.1.1", "ramda": "0.29.0" } }, + "node_modules/file-system-cache/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -11897,9 +12235,9 @@ "dev": true }, "node_modules/flow-parser": { - "version": "0.219.5", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.219.5.tgz", - "integrity": "sha512-lHx/cl2XjopBx/ma9RYhG7FGj2JLKacoBwtI3leOp8AwRDPGwu6bzJoaCMfIl/sq14KdtY5MGzd5q6nKfGzcuQ==", + "version": "0.230.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.230.0.tgz", + "integrity": "sha512-ZAfKaarESYYcP/RoLdM91vX0u/1RR7jI5TJaFLnxwRlC2mp0o+Rw7ipIY7J6qpIpQYtAobWb/J6S0XPeu0gO8g==", "dev": true, "engines": { "node": ">=0.4.0" @@ -11936,22 +12274,36 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/fork-ts-checker-webpack-plugin": { @@ -12101,9 +12453,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -12203,9 +12555,9 @@ "dev": true }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -12276,7 +12628,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12303,7 +12654,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12317,25 +12667,27 @@ "node": ">=6.9.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12351,9 +12703,9 @@ } }, "node_modules/get-npm-tarball-url": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz", - "integrity": "sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz", + "integrity": "sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==", "dev": true, "engines": { "node": ">=12.17" @@ -12409,16 +12761,17 @@ } }, "node_modules/giget": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/giget/-/giget-1.1.3.tgz", - "integrity": "sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.1.tgz", + "integrity": "sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==", "dev": true, "dependencies": { - "colorette": "^2.0.20", - "defu": "^6.1.2", - "https-proxy-agent": "^7.0.2", - "mri": "^1.2.0", - "node-fetch-native": "^1.4.0", + "citty": "^0.1.5", + "consola": "^3.2.3", + "defu": "^6.1.3", + "node-fetch-native": "^1.6.1", + "nypm": "^0.3.3", + "ohash": "^1.1.3", "pathe": "^1.1.1", "tar": "^6.2.0" }, @@ -12562,7 +12915,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -12573,8 +12925,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -12639,7 +12990,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -12651,7 +13001,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12660,18 +13009,16 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12681,7 +13028,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -12693,7 +13039,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -12705,7 +13050,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -12720,7 +13064,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -12839,12 +13182,6 @@ } ] }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, "node_modules/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -12999,16 +13336,16 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", "dev": true, "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "5", "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6.0.0" } }, "node_modules/human-signals": { @@ -13230,8 +13567,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", @@ -13243,7 +13579,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -13271,9 +13606,9 @@ } }, "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true }, "node_modules/ipaddr.js": { @@ -13298,7 +13633,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -13314,7 +13648,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -13349,7 +13682,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -13373,7 +13705,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -13389,7 +13720,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -13413,7 +13743,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -13479,7 +13808,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -13524,7 +13852,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13570,7 +13897,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -13621,7 +13947,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -13637,7 +13962,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13646,7 +13970,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -13670,7 +13993,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -13685,7 +14007,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -13700,7 +14021,6 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, "dependencies": { "which-typed-array": "^1.1.11" }, @@ -13727,7 +14047,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13748,7 +14067,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -13772,8 +14090,7 @@ "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isexe": { "version": "2.0.0", @@ -13791,9 +14108,9 @@ } }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -13815,54 +14132,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/iterator.prototype": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.1.tgz", @@ -14305,20 +14574,21 @@ } }, "node_modules/jscodeshift": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", - "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", "babel-core": "^7.0.0-bridge.0", "chalk": "^4.1.2", "flow-parser": "0.*", @@ -14326,7 +14596,7 @@ "micromatch": "^4.0.4", "neo-async": "^2.5.0", "node-dir": "^0.1.17", - "recast": "^0.21.0", + "recast": "^0.23.3", "temp": "^0.8.4", "write-file-atomic": "^2.3.0" }, @@ -14335,6 +14605,41 @@ }, "peerDependencies": { "@babel/preset-env": "^7.1.6" + }, + "peerDependenciesMeta": { + "@babel/preset-env": { + "optional": true + } + } + }, + "node_modules/jscodeshift/node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, "node_modules/jscodeshift/node_modules/ansi-styles": { @@ -14352,18 +14657,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jscodeshift/node_modules/ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jscodeshift/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -14398,6 +14691,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jscodeshift/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/jscodeshift/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -14407,21 +14706,6 @@ "node": ">=8" } }, - "node_modules/jscodeshift/node_modules/recast": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "dev": true, - "dependencies": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, "node_modules/jscodeshift/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -14497,7 +14781,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -14577,6 +14860,11 @@ "node": ">=14.0.0" } }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, "node_modules/lefthook": { "version": "1.4.9", "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-1.4.9.tgz", @@ -14892,6 +15180,14 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -14914,59 +15210,44 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, "bin": { "lz-string": "bin/bin.js" } }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dev": true, "dependencies": { - "semver": "^7.5.3" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "semver": "bin/semver" } }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -14991,13 +15272,12 @@ "node_modules/map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" }, "node_modules/markdown-to-jsx": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", - "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.3.tgz", + "integrity": "sha512-qwu2XftKs/SP+f6oCe0ruAFKX6jZaKxrBfDBV4CthqbVbRQwHhNM28QGDQuTldCaOn+hocaqbmGvCuXO5m3smA==", "dev": true, "engines": { "node": ">= 10" @@ -15070,7 +15350,6 @@ "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "dev": true, "dependencies": { "map-or-similar": "^1.5.0" } @@ -15188,7 +15467,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, "engines": { "node": ">=4" } @@ -15311,15 +15589,6 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -15427,9 +15696,9 @@ } }, "node_modules/node-fetch-native": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.0.tgz", - "integrity": "sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz", + "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==", "dev": true }, "node_modules/node-forge": { @@ -15448,9 +15717,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-package-data": { @@ -15539,6 +15808,159 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dev": true, + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/nypm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/nypm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nypm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -15549,10 +15971,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15561,7 +15982,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -15577,7 +15997,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -15586,7 +16005,6 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -15685,6 +16103,12 @@ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -16045,9 +16469,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -16069,11 +16493,19 @@ } }, "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, "node_modules/peek-stream": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", @@ -16434,7 +16866,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -16448,7 +16879,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "engines": { "node": ">=10" }, @@ -16459,8 +16889,7 @@ "node_modules/pretty-format/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/pretty-hrtime": { "version": "1.0.3", @@ -16612,28 +17041,6 @@ "node": ">=8.16.0" } }, - "node_modules/puppeteer-core/node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/puppeteer-core/node_modules/https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", - "dev": true, - "dependencies": { - "agent-base": "5", - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/puppeteer-core/node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -16671,7 +17078,6 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, "dependencies": { "side-channel": "^1.0.4" }, @@ -16718,7 +17124,6 @@ "version": "0.29.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/ramda" @@ -16803,27 +17208,24 @@ } }, "node_modules/react-docgen": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz", - "integrity": "sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", + "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", - "@babel/generator": "^7.12.11", - "@babel/runtime": "^7.7.6", - "ast-types": "^0.14.2", - "commander": "^2.19.0", + "@babel/core": "^7.18.9", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "@types/babel__core": "^7.18.0", + "@types/babel__traverse": "^7.18.0", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", "doctrine": "^3.0.0", - "estree-to-babel": "^3.1.0", - "neo-async": "^2.6.1", - "node-dir": "^0.1.10", - "strip-indent": "^3.0.0" - }, - "bin": { - "react-docgen": "bin/react-docgen.js" + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=16.14.0" } }, "node_modules/react-docgen-typescript": { @@ -16835,24 +17237,12 @@ "typescript": ">= 4.3.x" } }, - "node_modules/react-docgen/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "node_modules/react-docgen/node_modules/@types/doctrine": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", + "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", "dev": true }, - "node_modules/react-docgen/node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -16904,20 +17294,32 @@ "react-dom": ">=0.14.0" } }, - "node_modules/react-inspector": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz", - "integrity": "sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==", - "dev": true, - "peerDependencies": { - "react": "^16.8.4 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "dependencies": { + "@react-leaflet/core": "^2.1.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/react-loading-skeleton": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz", + "integrity": "sha512-1oJEBc9+wn7BbkQQk7YodlYEIjgeR+GrRjD+QXkVjwZN7LGIcAFHrx4NhT7UHGBxNY1+zax3c+Fo6XQM4R7CgA==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/react-redux": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.2.tgz", @@ -16962,9 +17364,9 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -16996,9 +17398,9 @@ } }, "node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.5.tgz", + "integrity": "sha512-3cqjOqg6s0XbOjWvmasmqHch+RLxIEk2r/70rzGXuz3iIGQsQheEQyqYCBb5EECoD01Vo2SIbDqW4paLeLTASw==", "dev": true, "dependencies": { "react-style-singleton": "^2.2.1", @@ -17132,33 +17534,21 @@ } }, "node_modules/recast": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", - "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", + "version": "0.23.6", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.6.tgz", + "integrity": "sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ==", "dev": true, "dependencies": { - "assert": "^2.0.0", "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" }, "engines": { "node": ">= 4" } }, - "node_modules/recast/node_modules/ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -17259,7 +17649,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -17364,15 +17753,6 @@ "strip-ansi": "^6.0.1" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -17403,9 +17783,9 @@ "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -17866,6 +18246,22 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -17915,14 +18311,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17934,51 +18333,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -18190,7 +18544,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, "dependencies": { "internal-slot": "^1.0.4" }, @@ -18199,18 +18552,18 @@ } }, "node_modules/store2": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", + "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==", "dev": true }, "node_modules/storybook": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.5.1.tgz", - "integrity": "sha512-Wg3j3z5H03PYnEcmlnhf6bls0OtjmsNPsQ93dTV8F4AweqBECwzjf94Wj++NrP3X+WbfMoCbBU6LRFuEyzCCxw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.17.tgz", + "integrity": "sha512-8+EIo91bwmeFWPg1eysrxXlhIYv3OsXrznTr4+4Eq0NikqAoq6oBhtlN5K2RGS2lBVF537eN+9jTCNbR+WrzDA==", "dev": true, "dependencies": { - "@storybook/cli": "7.5.1" + "@storybook/cli": "7.6.17" }, "bin": { "sb": "index.js", @@ -18222,9 +18575,9 @@ } }, "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", "dev": true }, "node_modules/string_decoder": { @@ -18589,7 +18942,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -18760,10 +19112,13 @@ } }, "node_modules/swc-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", - "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + }, "peerDependencies": { "@swc/core": "^1.2.147", "webpack": ">=2" @@ -18900,7 +19255,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", - "dev": true, "dependencies": { "memoizerific": "^1.11.3" } @@ -19123,16 +19477,23 @@ "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", - "dev": true + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, "node_modules/tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -19161,9 +19522,9 @@ } }, "node_modules/tocbot": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.21.2.tgz", - "integrity": "sha512-R5Muhi/TUu4i4snWVrMgNoXyJm2f8sJfdgIkQvqb+cuIXQEIMAiWGWgCgYXHqX4+XiS/Bnm7IYZ9Zy6NVe6lhw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz", + "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==", "dev": true }, "node_modules/toidentifier": { @@ -19214,7 +19575,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "dev": true, "engines": { "node": ">=6.10" } @@ -19409,6 +19769,14 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", @@ -19518,6 +19886,12 @@ "node": ">=14.17" } }, + "node_modules/ufo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", + "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==", + "dev": true + }, "node_modules/uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -19644,10 +20018,9 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -19662,17 +20035,26 @@ } }, "node_modules/unplugin": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz", - "integrity": "sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz", + "integrity": "sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==", "dev": true, "dependencies": { - "acorn": "^8.10.0", - "chokidar": "^3.5.3", + "acorn": "^8.11.3", + "chokidar": "^3.6.0", "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.5.0" + "webpack-virtual-modules": "^0.6.1" + }, + "engines": { + "node": ">=14.0.0" } }, + "node_modules/unplugin/node_modules/webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "dev": true + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -19683,9 +20065,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -19738,12 +20120,12 @@ "dev": true }, "node_modules/url/node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.0.tgz", + "integrity": "sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -19753,9 +20135,9 @@ } }, "node_modules/use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz", + "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==", "dev": true, "dependencies": { "tslib": "^2.0.0" @@ -19820,7 +20202,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -19832,8 +20213,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utila": { "version": "0.4.0", @@ -19859,26 +20239,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -20136,9 +20496,9 @@ } }, "node_modules/webpack-hot-middleware": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.4.tgz", - "integrity": "sha512-IRmTspuHM06aZh98OhBJtqLpeWFM8FXJS5UYpKYxCJzyFoyWj1w6VGFfomZU7OPA55dMLrQK0pRT1eQ3PACr4w==", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", + "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "dev": true, "dependencies": { "ansi-html-community": "0.0.8", @@ -20266,7 +20626,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -20308,7 +20667,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, "dependencies": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -20323,7 +20681,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -20351,17 +20708,17 @@ "dev": true }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -20418,38 +20775,67 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } }, "node_modules/wrappy": { "version": "1.0.2", @@ -20512,15 +20898,6 @@ "node": ">=0.4" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -20536,24 +20913,6 @@ "node": ">= 6" } }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", @@ -20615,6 +20974,11 @@ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true }, + "@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==" + }, "@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -20635,19 +20999,18 @@ } }, "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "requires": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" } }, "@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true }, "@babel/core": { @@ -20674,12 +21037,12 @@ } }, "@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "requires": { - "@babel/types": "^7.22.15", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -20704,14 +21067,14 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" } @@ -20745,9 +21108,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", @@ -20764,13 +21127,13 @@ "dev": true }, "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { @@ -20801,9 +21164,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", @@ -20823,30 +21186,30 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" } }, "@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5" } }, @@ -20878,111 +21241,88 @@ } }, "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true }, "@babel/helper-validator-identifier": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", - "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "requires": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.10" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" } }, "@babel/helpers": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", - "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", "dev": true, "requires": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" } }, "@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", - "dev": true, + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "requires": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" + "@babel/plugin-transform-optional-chaining": "^7.23.3" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-proposal-private-property-in-object": { @@ -21038,27 +21378,27 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", - "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -21183,135 +21523,134 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", - "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", - "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/template": "^7.22.15" } }, "@babel/plugin-transform-destructuring": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", - "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21319,19 +21658,19 @@ } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21339,39 +21678,40 @@ } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz", - "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.22.5" + "@babel/plugin-syntax-flow": "^7.23.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21379,18 +21719,18 @@ } }, "@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21398,54 +21738,54 @@ } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" } }, @@ -21460,18 +21800,18 @@ } }, "@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21479,9 +21819,9 @@ } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21489,32 +21829,32 @@ } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", + "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" + "@babel/plugin-transform-parameters": "^7.23.3" } }, "@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-replace-supers": "^7.22.20" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21522,9 +21862,9 @@ } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", - "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21533,40 +21873,40 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -21582,9 +21922,9 @@ } }, "@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -21613,9 +21953,9 @@ } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", - "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -21623,9 +21963,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21633,27 +21973,27 @@ } }, "@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -21661,27 +22001,27 @@ } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -21700,64 +22040,65 @@ } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/preset-env": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.10.tgz", - "integrity": "sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -21769,72 +22110,71 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.10", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.10", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.10", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", "core-js-compat": "^3.31.0", "semver": "^6.3.1" } }, "@babel/preset-flow": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.22.15.tgz", - "integrity": "sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.0.tgz", + "integrity": "sha512-cum/nSi82cDaSJ21I4PgLTVlj0OXovFk6GRguJYe/IKg6y6JHLTbJhybtX4k35WT9wdeJfEVjycTixMhBHd0Dg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-flow-strip-types": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" } }, "@babel/preset-modules": { @@ -21849,17 +22189,17 @@ } }, "@babel/preset-react": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", - "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-transform-react-display-name": "^7.22.5", - "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" } }, "@babel/preset-typescript": { @@ -21876,15 +22216,15 @@ } }, "@babel/register": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", - "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", "dev": true, "requires": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.5", + "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "dependencies": { @@ -21918,16 +22258,6 @@ "path-exists": "^3.0.0" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -21960,12 +22290,6 @@ "requires": { "find-up": "^3.0.0" } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true } } }, @@ -21984,42 +22308,42 @@ } }, "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" } }, "@babel/traverse": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.15.tgz", - "integrity": "sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", "dev": true, "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15", - "debug": "^4.1.0", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.15.tgz", - "integrity": "sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.15", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -22029,12 +22353,6 @@ "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", "dev": true }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, "@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -22298,37 +22616,37 @@ "dev": true }, "@floating-ui/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", - "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dev": true, "requires": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.1" } }, "@floating-ui/dom": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", - "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dev": true, "requires": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, "@floating-ui/react-dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", - "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dev": true, "requires": { - "@floating-ui/dom": "^1.5.1" + "@floating-ui/dom": "^1.6.1" } }, "@floating-ui/utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", - "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", "dev": true }, "@humanwhocodes/config-array": { @@ -22374,12 +22692,6 @@ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -22405,17 +22717,6 @@ "requires": { "ansi-regex": "^6.0.1" } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } } } }, @@ -22512,7 +22813,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, "requires": { "@sinclair/typebox": "^0.27.8" } @@ -23173,6 +23473,12 @@ "@babel/runtime": "^7.13.10" } }, + "@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "requires": {} + }, "@reduxjs/toolkit": { "version": "1.9.5", "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", @@ -23192,30 +23498,19 @@ "@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "@storybook/addon-actions": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.5.1.tgz", - "integrity": "sha512-GieD3ru6EslKvwol1cE4lvszQCLB/AkQdnLofnqy1nnYso+hRxmPAw9/O+pWfpUBFdjXsQ7GX09+wEUpOJzepw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.17.tgz", + "integrity": "sha512-TBphs4v6LRfyTpFo/WINF0TkMaE3rrNog7wW5mbz6n0j8o53kDN4o9ZEcygSL5zQX43CAaghQTeDCss7ueG7ZQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", + "@storybook/core-events": "7.6.17", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@types/uuid": "^9.0.1", "dequal": "^2.0.2", - "lodash": "^4.17.21", "polished": "^4.2.2", - "prop-types": "^15.7.2", - "react-inspector": "^6.0.0", - "telejson": "^7.2.0", - "ts-dedent": "^2.0.0", "uuid": "^9.0.0" }, "dependencies": { @@ -23228,64 +23523,48 @@ } }, "@storybook/addon-backgrounds": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.5.1.tgz", - "integrity": "sha512-XZoyJw/WoUlVvQHPTbSAZjKy2SEUjaSmAWgcRync25vp+q0obthjx6UnZHEUuH8Ud07HA3FYzlFtMicH5y/OIQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.17.tgz", + "integrity": "sha512-7dize7x8+37PH77kmt69b0xSaeDqOcZ4fpzW6+hk53hIaCVU26eGs4+j+743Xva31eOgZWNLupUhOpUDc6SqZw==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" } }, "@storybook/addon-controls": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.5.1.tgz", - "integrity": "sha512-Xag1e7TZo04LjUenfobkShpKMxTtwa4xM4bXQA8LjaAGZQ7jipbQ4PE73a17K59S2vqq89VAhkuMJWiyaOFqpw==", - "dev": true, - "requires": { - "@storybook/blocks": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/manager-api": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.17.tgz", + "integrity": "sha512-zR0aLaUF7FtV/nMRyfniFbCls/e0DAAoXACuOAUAwNAv0lbIS8AyZZiHSmKucCvziUQ6WceeCC7+du3C+9y0rQ==", + "dev": true, + "requires": { + "@storybook/blocks": "7.6.17", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" } }, "@storybook/addon-docs": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.5.1.tgz", - "integrity": "sha512-+wE67oWIhGK9+kv2sxoY2KDXm3v62RfEgxiksdhtffTP/joOK3p88S0lO+8g0G4xfNGUnBhPtzGMuUxWwaH2Pw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.17.tgz", + "integrity": "sha512-FKa4Mdy7nhgvEVZJHpMkHriDzpVHbohn87zv9NCL+Ctjs1iAmzGwxEm0culszyDS1HN2ToVoY0h8CSi2RSSZqA==", "dev": true, "requires": { "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/csf-plugin": "7.5.1", - "@storybook/csf-tools": "7.5.1", + "@storybook/blocks": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/csf-plugin": "7.6.17", + "@storybook/csf-tools": "7.6.17", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.5.1", - "@storybook/postinstall": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/react-dom-shim": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/node-logger": "7.6.17", + "@storybook/postinstall": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -23293,166 +23572,122 @@ } }, "@storybook/addon-essentials": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.5.1.tgz", - "integrity": "sha512-/jaUZXV+mE/2G5PgEpFKm4lFEHluWn6GFR/pg+hphvHOzBGA3Y75JMgUfJ5CDYHB1dAVSf9JrPOd8Eb1tpESfA==", - "dev": true, - "requires": { - "@storybook/addon-actions": "7.5.1", - "@storybook/addon-backgrounds": "7.5.1", - "@storybook/addon-controls": "7.5.1", - "@storybook/addon-docs": "7.5.1", - "@storybook/addon-highlight": "7.5.1", - "@storybook/addon-measure": "7.5.1", - "@storybook/addon-outline": "7.5.1", - "@storybook/addon-toolbars": "7.5.1", - "@storybook/addon-viewport": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/manager-api": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/preview-api": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.17.tgz", + "integrity": "sha512-qlSpamxuYfT2taF953nC9QijGF2pSbg1ewMNpdwLTj16PTZvR/d8NCDMTJujI1bDwM2m18u8Yc43ibh5LEmxCw==", + "dev": true, + "requires": { + "@storybook/addon-actions": "7.6.17", + "@storybook/addon-backgrounds": "7.6.17", + "@storybook/addon-controls": "7.6.17", + "@storybook/addon-docs": "7.6.17", + "@storybook/addon-highlight": "7.6.17", + "@storybook/addon-measure": "7.6.17", + "@storybook/addon-outline": "7.6.17", + "@storybook/addon-toolbars": "7.6.17", + "@storybook/addon-viewport": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/manager-api": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", "ts-dedent": "^2.0.0" } }, "@storybook/addon-highlight": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.5.1.tgz", - "integrity": "sha512-js9OV17kpjRowuaGAPfI9aOn/zzt8P589ACZE+/eYBO9jT65CADwAUxg//Uq0/he+Ac9495pcK3BcYyDeym7/g==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.17.tgz", + "integrity": "sha512-R1yBPUUqGn+60aJakn8q+5Zt34E/gU3n3VmgPdryP0LJUdZ5q1/RZShoVDV+yYQ40htMH6oaCv3OyyPzFAGJ6A==", "dev": true, "requires": { - "@storybook/core-events": "7.5.1", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.5.1" + "@storybook/global": "^5.0.0" } }, "@storybook/addon-interactions": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.5.1.tgz", - "integrity": "sha512-m9yohFYil+UBwYKFxHYdsAsn8PBCPl6HY/FSgfrDc5PiqT1Ya7paXopimyy9ok+VQt/RC8sEWIm809ONEoxosw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.6.17.tgz", + "integrity": "sha512-6zlX+RDQ1PlA6fp7C+hun8t7h2RXfCGs5dGrhEenp2lqnR/rYuUJRC0tmKpkZBb8kZVcbSChzkB/JYkBjBCzpQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "7.5.1", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/types": "7.6.17", "jest-mock": "^27.0.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" } }, "@storybook/addon-links": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.5.1.tgz", - "integrity": "sha512-KDiQYAVNXxuVTB3QLFZxHlfT8q4KnlNKY+0OODvgD5o1FqFpIyUiR5mIBL4SZMRj2EtwrR3KmZ2UPccFZdu9vw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.6.17.tgz", + "integrity": "sha512-iFUwKObRn0EKI0zMETsil2p9a/81rCuSMEWECsi+khkCAs1FUnD2cT6Ag5ydcNcBXsdtdfDJdtXQrkw+TSoStQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/router": "7.5.1", - "@storybook/types": "7.5.1", - "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" } }, "@storybook/addon-measure": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.5.1.tgz", - "integrity": "sha512-yR6oELJe0UHYxRijd1YMuGaQRlZ3uABjmrXaFCPnd6agahgTwIJLiK4XamtkVur//LaiJMvtmM2XXrkJ1BvNJw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.17.tgz", + "integrity": "sha512-O5vnHZNkduvZ95jf1UssbOl6ivIxzl5tv+4EpScPYId7w700bxWsJH+QX7ip6KlrCf2o3iUhmPe8bm05ghG2KA==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/types": "7.5.1", "tiny-invariant": "^1.3.1" } }, "@storybook/addon-onboarding": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.8.tgz", - "integrity": "sha512-3WwCocUuTibHWO89uzAbeONEn6x9NkmxA0mOU4rYPhEsMQ4NDNDD1GXcievZmpwt5VviFgw5FRx8+BxPn54YmQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.11.tgz", + "integrity": "sha512-0Sa7PJDsM6AANOWZX7vq3kgCbS9AZFjr3tfr3bLGfXviwIBKjoZDDdIErJkS3D4mNcDa78lYQvp3PTCKwLIJ9A==", "dev": true, "requires": { - "@storybook/telemetry": "^7.1.0-alpha.32", + "@storybook/telemetry": "^7.1.0", "react-confetti": "^6.1.0" } }, "@storybook/addon-outline": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.5.1.tgz", - "integrity": "sha512-IMi5Bo34/Q5YUG5uD8ZUTBwlpGrkDIV+PUgkyNIbmn9OgozoCH80Fs7YlGluRFODQISpHwio9qvSFRGdSNT56A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.17.tgz", + "integrity": "sha512-9o9JXDsYjNaDgz/cY5+jv694+aik/1aiRGGvsCv68e1p/ob0glkGKav4lnJe2VJqD+gCmaARoD8GOJlhoQl8JQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/types": "7.5.1", "ts-dedent": "^2.0.0" } }, "@storybook/addon-toolbars": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.5.1.tgz", - "integrity": "sha512-T88hEEQicV6eCovr5TN2nFgKt7wU0o7pAunP5cU01iiVRj63+oQiVIBB8Xtm4tN+/DsqtyP0BTa6rFwt2ULy8A==", - "dev": true, - "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1" - } + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.17.tgz", + "integrity": "sha512-UMrchbUHiyWrh6WuGnpy34Jqzkx/63B+MSgb3CW7YsQaXz64kE0Rol0TNSznnB+mYXplcqH+ndI4r4kFsmgwDg==", + "dev": true }, "@storybook/addon-viewport": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.5.1.tgz", - "integrity": "sha512-L57lOGB3LfKgAdLinaZojRQ9W9w2RC0iP9bVaXwrRVeJdpNayfuW4Kh1C8dmacZroB4Zp2U/nEjkSmdcp6uUWg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.17.tgz", + "integrity": "sha512-sA0QCcf4QAMixWvn8uvRYPfkKCSl6JajJaAspoPqXSxHEpK7uwOlpg3kqFU5XJJPXD0X957M+ONgNvBzYqSpEw==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "memoizerific": "^1.11.3", - "prop-types": "^15.7.2" + "memoizerific": "^1.11.3" } }, "@storybook/blocks": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.5.1.tgz", - "integrity": "sha512-7b69p6kDdgmlejEMM2mW6/Lz4OmU/R3Qr+TpKnPcV5iS7ADxRQEQCTEMoQ5RyLJf0vDRh/7Ljn/RMo8Ux3X7JA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.17.tgz", + "integrity": "sha512-PsNVoe0bX1mMn4Kk3nbKZ0ItDZZ0YJnYAFJ6toAbsyBAbgzg1sce88sQinzvbn58/RT9MPKeWMPB45ZS7ggiNg==", "dev": true, "requires": { - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/components": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.5.1", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/docs-tools": "7.6.17", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/manager-api": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -23485,15 +23720,15 @@ } }, "@storybook/builder-manager": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.5.1.tgz", - "integrity": "sha512-a02kg/DCcYgiTz+7rw4KdvQzif+2lZ+NIFF5U5u8SDoCQuoe3wRT6QBrFYQTxJexA4WfO6cpyRLDJ1rx6NLo8A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.17.tgz", + "integrity": "sha512-Sj8hcDYiPCCMfeLzus37czl0zdrAxAz4IyYam2jBjVymrIrcDAFyL1OCZvnq33ft179QYQWhUs9qwzVmlR/ZWg==", "dev": true, "requires": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.5.1", - "@storybook/manager": "7.5.1", - "@storybook/node-logger": "7.5.1", + "@storybook/core-common": "7.6.17", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", @@ -23577,33 +23812,35 @@ } }, "@storybook/builder-webpack5": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.5.1.tgz", - "integrity": "sha512-klZ2Q1lESt4o9HhofsD1cEPFd8T9FCWkMCNVYmPoGepmyVwuibLCJ/U6k4noQ8Wow5SEexKSq2gU7ir7cKcXwA==", - "dev": true, - "requires": { - "@babel/core": "^7.22.0", - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/core-webpack": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/preview": "7.5.1", - "@storybook/preview-api": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.6.17.tgz", + "integrity": "sha512-GMaBd8/RzivuAmWrYSt9Rga3j8WLcu5LCMYiPVs+XKXsKAC8lTkV0WRWh8Nk6wTmfzsRQ2acwFjSG5oE4ClZKA==", + "dev": true, + "requires": { + "@babel/core": "^7.23.2", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/core-webpack": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview": "7.6.17", + "@storybook/preview-api": "7.6.17", "@swc/core": "^1.3.82", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.0.0", - "babel-plugin-named-exports-order": "^0.0.2", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", + "cjs-module-lexer": "^1.2.3", "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", + "es-module-lexer": "^1.4.1", "express": "^4.17.3", "fork-ts-checker-webpack-plugin": "^8.0.0", "fs-extra": "^11.1.0", "html-webpack-plugin": "^5.5.0", + "magic-string": "^0.30.5", "path-browserify": "^1.0.1", "process": "^0.11.10", "semver": "^7.3.7", @@ -23620,15 +23857,52 @@ "webpack-virtual-modules": "^0.5.0" }, "dependencies": { + "@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, "@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "requires": { "undici-types": "~5.26.4" } }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -23639,9 +23913,9 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -23669,13 +23943,13 @@ } }, "@storybook/channels": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.1.tgz", - "integrity": "sha512-7hTGHqvtdFTqRx8LuCznOpqPBYfUeMUt/0IIp7SFuZT585yMPxrYoaK//QmLEWnPb80B8HVTSQi7caUkJb32LA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.17.tgz", + "integrity": "sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.2.0", @@ -23683,23 +23957,23 @@ } }, "@storybook/cli": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.5.1.tgz", - "integrity": "sha512-qKIJs8gqXTy0eSEbt0OW5nsJqiV/2+N1eWoiBiIxoZ+8b0ACXIAUcE/N6AsEDUqIq8AMK7lebqjEfIAt2Sp7Mg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.17.tgz", + "integrity": "sha512-1sCo+nCqyR+nKfTcEidVu8XzNoECC7Y1l+uW38/r7s2f/TdDorXaIGAVrpjbSaXSoQpx5DxYJVaKCcQuOgqwcA==", "dev": true, "requires": { - "@babel/core": "^7.22.9", - "@babel/preset-env": "^7.22.9", - "@babel/types": "^7.22.5", + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/types": "^7.23.0", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/core-server": "7.5.1", - "@storybook/csf-tools": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/telemetry": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/codemod": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/core-server": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", @@ -23716,7 +23990,7 @@ "get-port": "^5.1.1", "giget": "^1.0.0", "globby": "^11.0.2", - "jscodeshift": "^0.14.0", + "jscodeshift": "^0.15.1", "leven": "^3.1.0", "ora": "^5.4.1", "prettier": "^2.8.0", @@ -23724,13 +23998,43 @@ "puppeteer-core": "^2.1.1", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "simple-update-notifier": "^2.0.0", "strip-json-comments": "^3.0.1", "tempy": "^1.0.1", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, "dependencies": { + "@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23771,6 +24075,12 @@ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -23889,9 +24199,9 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -23921,36 +24231,65 @@ } }, "@storybook/client-logger": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.1.tgz", - "integrity": "sha512-XxbLvg0aQRoBrzxYLcVYCbjDkGbkU8Rfb74XbV2CLiO2bIbFPmA1l1Nwbp+wkCGA+O6Z1zwzSl6wcKKqZ6XZCg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.17.tgz", + "integrity": "sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==", "dev": true, "requires": { "@storybook/global": "^5.0.0" } }, "@storybook/codemod": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.5.1.tgz", - "integrity": "sha512-PqHGOz/CZnRG9pWgshezCacu524CrXOJrCOwMUP9OMpH0Jk/NhBkHaBZrB8wMjn5hekTj0UmRa/EN8wJm9CCUQ==", - "dev": true, - "requires": { - "@babel/core": "^7.22.9", - "@babel/preset-env": "^7.22.9", - "@babel/types": "^7.22.5", - "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/types": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.17.tgz", + "integrity": "sha512-JuTmf2u3C4fCnjO7o3dqRgrq3ozNYfWlrRP8xuIdvT7niMap7a396hJtSKqS10FxCgKFcMAOsRgrCalH1dWxUg==", + "dev": true, + "requires": { + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/types": "^7.23.0", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", - "jscodeshift": "^0.14.0", + "jscodeshift": "^0.15.1", "lodash": "^4.17.21", "prettier": "^2.8.0", "recast": "^0.23.1" }, "dependencies": { + "@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", @@ -23960,42 +24299,42 @@ } }, "@storybook/components": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.5.1.tgz", - "integrity": "sha512-fdzzxGBV/Fj9pYwfYL3RZsVUHeBqlfLMBP/L6mPmjaZSwHFqkaRZZUajZc57lCtI+TOy2gY6WH3cPavEtqtgLw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.17.tgz", + "integrity": "sha512-lbh7GynMidA+CZcJnstVku6Nhs+YkqjYaZ+mKPugvlVhGVWv0DaaeQFVuZ8cJtUGJ/5FFU4Y+n+gylYUHkGBMA==", "dev": true, "requires": { "@radix-ui/react-select": "^1.2.2", "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.5.1", - "@storybook/csf": "^0.1.0", + "@storybook/client-logger": "7.6.17", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" } }, "@storybook/core-client": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.5.1.tgz", - "integrity": "sha512-K651UnNKkW8U078CH5rcUqf0siGcfEhwya2yQN5RBb/H78HSLBLdYgzKqxaKtmz+S8DFyWhrgbXZLdBjavozJg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.17.tgz", + "integrity": "sha512-LuDbADK+DPNAOOCXOlvY09hdGVueXlDetsdOJ/DgYnSa9QSWv9Uv+F8QcEgR3QckZJbPlztKJIVLgP2n/Xkijw==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/preview-api": "7.5.1" + "@storybook/client-logger": "7.6.17", + "@storybook/preview-api": "7.6.17" } }, "@storybook/core-common": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.5.1.tgz", - "integrity": "sha512-/rQ0/xvxFHSGCgIkK74HrgDMnzfYtDYTCoSod/qCTojfs9aciX+JYgvo5ChPnI/LEKWwxRTkrE7pl2u5+C4XGA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.17.tgz", + "integrity": "sha512-me2TP3Q9/qzqCLoDHUSsUF+VS1MHxfHbTVF6vAz0D/COTxzsxLpu9TxTbzJoBCxse6XRb6wWI1RgF1mIcjic7g==", "dev": true, "requires": { - "@storybook/core-events": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/core-events": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", "@types/find-cache-dir": "^3.2.1", "@types/node": "^18.0.0", "@types/node-fetch": "^2.6.4", @@ -24019,9 +24358,9 @@ }, "dependencies": { "@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "requires": { "undici-types": "~5.26.4" @@ -24102,16 +24441,6 @@ } } }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, "glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -24191,12 +24520,6 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -24209,35 +24532,35 @@ } }, "@storybook/core-events": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.1.tgz", - "integrity": "sha512-2eyaUhTfmEEqOEZVoCXVITCBn6N7QuZCG2UNxv0l//ED+7MuMiFhVw7kS7H3WOVk65R7gb8qbKFTNX8HFTgBHg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.17.tgz", + "integrity": "sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==", "dev": true, "requires": { "ts-dedent": "^2.0.0" } }, "@storybook/core-server": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.5.1.tgz", - "integrity": "sha512-DD4BXCH91aZJoFuu0cQwG1ZUmE59kG5pazuE3S89zH1GwKS1jWyeAv4EwEfvynT5Ah1ctd8QdCZCSXVzjq0qcw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.17.tgz", + "integrity": "sha512-KWGhTTaL1Q14FolcoKKZgytlPJUbH6sbJ1Ptj/84EYWFewcnEgVs0Zlnh1VStRZg+Rd1WC1V4yVd/bbDzxrvQA==", "dev": true, "requires": { "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.5.1", - "@storybook/channels": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.5.1", + "@storybook/builder-manager": "7.6.17", + "@storybook/channels": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.17", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/telemetry": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", "@types/detect-port": "^1.3.0", "@types/node": "^18.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -24250,7 +24573,7 @@ "express": "^4.17.3", "fs-extra": "^11.1.0", "globby": "^11.0.2", - "ip": "^2.0.0", + "ip": "^2.0.1", "lodash": "^4.17.21", "open": "^8.4.0", "pretty-hrtime": "^1.0.3", @@ -24267,9 +24590,9 @@ }, "dependencies": { "@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "requires": { "undici-types": "~5.26.4" @@ -24419,9 +24742,9 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24451,22 +24774,22 @@ } }, "@storybook/core-webpack": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.5.1.tgz", - "integrity": "sha512-FlXj6GCXG0evCC5s7LNcu1uxRC9fG856HQe4PzEk7jDSQdWQRX8Olpo4IOHB1WObuvYqw6Gf0OD6TB5uhnKXmg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.6.17.tgz", + "integrity": "sha512-PyGrFhRM8sTONGwwLWLqBQ1HO+LBnVZ+5TOQO7ejQfdV2FWyNOzjBXm2e5jL/C6XlqiEhmL5pyHEyDBaQJQ3KA==", "dev": true, "requires": { - "@storybook/core-common": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/core-common": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", "@types/node": "^18.0.0", "ts-dedent": "^2.0.0" }, "dependencies": { "@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "requires": { "undici-types": "~5.26.4" @@ -24475,10 +24798,9 @@ } }, "@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", + "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", "requires": { "type-fest": "^2.19.0" }, @@ -24486,33 +24808,32 @@ "type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" } } }, "@storybook/csf-plugin": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.5.1.tgz", - "integrity": "sha512-jhV2aCZhSIXUiQDcHtuCg3dyYMzjYHTwLb4cJtkNw4sXqQoTGydTSWYwWigcHFfKGoyQp82rSgE1hE4YYx6iew==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.17.tgz", + "integrity": "sha512-xTHv9BUh3bkDVCvcbmdfVF0/e96BdrEgqPJ3G3RmKbSzWLOkQ2U9yiPfHzT0KJWPhVwj12fjfZp0zunu+pcS6Q==", "dev": true, "requires": { - "@storybook/csf-tools": "7.5.1", + "@storybook/csf-tools": "7.6.17", "unplugin": "^1.3.1" } }, "@storybook/csf-tools": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.5.1.tgz", - "integrity": "sha512-YChGbT1/odLS4RLb2HtK7ixM7mH5s7G5nOsWGKXalbza4SFKZIU2UzllEUsA+X8YfxMHnCD5TC3xLfK0ByxmzQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.17.tgz", + "integrity": "sha512-dAQtam0EBPeTJYcQPLxXgz4L9JFqD+HWbLFG9CmNIhMMjticrB0mpk1EFIS6vPXk/VsVWpBgMLD7dZlD6YMKcQ==", "dev": true, "requires": { - "@babel/generator": "^7.22.9", - "@babel/parser": "^7.22.7", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@storybook/csf": "^0.1.0", - "@storybook/types": "7.5.1", + "@babel/generator": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "@storybook/csf": "^0.1.2", + "@storybook/types": "7.6.17", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -24525,15 +24846,16 @@ "dev": true }, "@storybook/docs-tools": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.5.1.tgz", - "integrity": "sha512-tDtQGeKU5Kc2XoqZ5vpeGQrOkRg2UoDiSRS6cLy+M/sMB03Annq0ZngnJXaMiv0DLi2zpWSgWqPgYA3TJTZHBw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.17.tgz", + "integrity": "sha512-bYrLoj06adqklyLkEwD32C0Ww6t+9ZVvrJHiVT42bIhTRpFiFPAetl1a9KPHtFLnfduh4n2IxIr1jv32ThPDTA==", "dev": true, "requires": { - "@storybook/core-common": "7.5.1", - "@storybook/preview-api": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/core-common": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17", "@types/doctrine": "^0.0.3", + "assert": "^2.1.0", "doctrine": "^3.0.0", "lodash": "^4.17.21" } @@ -24541,75 +24863,109 @@ "@storybook/global": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==" }, "@storybook/instrumenter": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-7.5.1.tgz", - "integrity": "sha512-bxRoWVVLlevqTFappXj1JfZlvEceBiBPdQQqTTeeA09VL3UyFWDpPFRn8Wf2C43Vt4V18w+krMyb1KfTk37ROQ==", - "dev": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.0.0.tgz", + "integrity": "sha512-wNDVmyLu3kRf/2xf8lQJBI8Gx5eGlvOFwCagUfgd5Ke3l3Xo0XUgNjqFBbqG9ZouC21U6znBTYsIS+eEe61i7w==", "requires": { - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", + "@storybook/channels": "8.0.0", + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.5.1" + "@storybook/preview-api": "8.0.0", + "@vitest/utils": "^0.34.6", + "util": "^0.12.4" + }, + "dependencies": { + "@storybook/channels": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.0.tgz", + "integrity": "sha512-uykCBlSIMVodsgTFC/XAgO7JeaTJrKtDmmM6Z4liGkPS6EUvurOEu2vK6FuvojzhLHdVJ5bP+VXSJerfm7aE4Q==", + "requires": { + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/global": "^5.0.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/client-logger": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.0.tgz", + "integrity": "sha512-olc1vUfaZNkXc7L8UoCdGmyBieHQbsaB+0vVoivYMSa1DHYtXE75RefU3lhMSGrkvIZmXMvfaIDmnyJIOB5FxA==", + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/core-events": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.0.tgz", + "integrity": "sha512-kkabj4V99gOTBW+y3HM/LTCDekglqb+lslZMamM+Ytxv1lCqCEOIR/OGfnYOyEaK4BLcx61Zp+fO30FZxtoT1w==", + "requires": { + "ts-dedent": "^2.0.0" + } + }, + "@storybook/preview-api": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.0.tgz", + "integrity": "sha512-R2NBKtvHi+i1b/3PZe4u4YdJ7dlqr8YTqLn7syB/YSnKRAa7DYed+GJLu4qFJisE6IuYi+57AsdW16otRFEVvg==", + "requires": { + "@storybook/channels": "8.0.0", + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "8.0.0", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.0.tgz", + "integrity": "sha512-6nJipdgoAkVFk2JpRPCm9vb/Yuak2lmdZRv9qzl8cNRttlbOESVlzbmhgxCmWV0OYUaMeYge9L8NWhJ14LKbzw==", + "requires": { + "@storybook/channels": "8.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + } + } } }, "@storybook/manager": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.5.1.tgz", - "integrity": "sha512-Jo83sj7KvsZ78vvqjH72ErmQ31Frx6GBLbpeYXZtbAXWl0/LHsxAEVz0Mke+DixzWDyP0/cn+Nw8QUfA+Oz1fg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.17.tgz", + "integrity": "sha512-A1LDDIqMpwRzq/dqkbbiza0QI04o4ZHCl2a3UMDZUV/+QLc2nsr2DAaLk4CVL4/cIc5zGqmIcaOTvprx2YKVBw==", "dev": true }, "@storybook/manager-api": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.5.1.tgz", - "integrity": "sha512-ygwJywluhhE1dpA0jC2D/3NFhMXzFCt+iW4m3cOwexYTuiDWF66AbGOFBx9peE7Wk/Z9doKkf9E3v11enwaidA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.17.tgz", + "integrity": "sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==", "dev": true, "requires": { - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/router": "7.5.1", - "@storybook/theming": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/router": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "semver": "^7.3.7", "store2": "^2.14.2", "telejson": "^7.2.0", "ts-dedent": "^2.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } } }, "@storybook/mdx2-csf": { @@ -24619,45 +24975,46 @@ "dev": true }, "@storybook/node-logger": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.5.1.tgz", - "integrity": "sha512-xRMdL5YPe8C9sgJ1R0QD3YbiLjDGrfQk91+GplRD8N9FVCT5dki55Bv5Kp0FpemLYYg6uxAZL5nHmsZHKDKQoA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.17.tgz", + "integrity": "sha512-w59MQuXhhUNrUVmVkXhMwIg2nvFWjdDczLTwYLorhfsE36CWeUOY5QCZWQy0Qf/h+jz8Uo7Evy64qn18v9C4wA==", "dev": true }, "@storybook/postinstall": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.5.1.tgz", - "integrity": "sha512-+LFUe2nNbmmLPKNt34RXSSC1r40yGGOoP/qlaPFwNOgQN2AZUrfqk6ZYnw6LjmcuHpQInZ4y4WDgbzg6QQL3+w==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.17.tgz", + "integrity": "sha512-WaWqB8o9vUc9aaVls+povQSVirf1Xd1LZcVhUKfAocAF3mzYUsnJsVqvnbjRj/F96UFVihOyDt9Zjl/9OvrCvQ==", "dev": true }, "@storybook/preset-react-webpack": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.5.1.tgz", - "integrity": "sha512-Dt6Na7YyxBHUoo2PJ73epLfGA3HlXMoF8MdtysQM5Pv6ZNcC3QmqoOnR0lQDMw0SzAcreRnY68Gu7xi+zTnlEw==", - "dev": true, - "requires": { - "@babel/preset-flow": "^7.22.5", - "@babel/preset-react": "^7.22.5", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/core-webpack": "7.5.1", - "@storybook/docs-tools": "7.5.1", - "@storybook/node-logger": "7.5.1", - "@storybook/react": "7.5.1", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.6.17.tgz", + "integrity": "sha512-gn/LvIbll9loOkzwbFlxzOZGmJ6t1vF2/gfi+p/N/AifDYe8+LVM1QV4KRVKt6UEJwsQd79lKf7vPH92AQaKKQ==", + "dev": true, + "requires": { + "@babel/preset-flow": "^7.22.15", + "@babel/preset-react": "^7.22.15", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", + "@storybook/core-webpack": "7.6.17", + "@storybook/docs-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/react": "7.6.17", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-plugin-add-react-displayname": "^0.0.5", - "babel-plugin-react-docgen": "^4.2.1", "fs-extra": "^11.1.0", - "react-refresh": "^0.11.0", + "magic-string": "^0.30.5", + "react-docgen": "^7.0.0", + "react-refresh": "^0.14.0", "semver": "^7.3.7", "webpack": "5" }, "dependencies": { "@types/node": { - "version": "18.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", - "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "version": "18.19.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.23.tgz", + "integrity": "sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==", "dev": true, "requires": { "undici-types": "~5.26.4" @@ -24673,9 +25030,9 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24690,23 +25047,23 @@ } }, "@storybook/preview": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.5.1.tgz", - "integrity": "sha512-nfZC103z9Cy27FrJKUr2IjDuVt8Mvn1Z5gZ0TtJihoK7sfLTv29nd/XU9zzrb/epM3o8UEzc63xZZsMaToDbAw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.17.tgz", + "integrity": "sha512-LvkMYK/y6alGjwRVNDIKL1lFlbyZ0H0c8iAbcQkiMoaFiujMQyVswMDKlWcj42Upfr/B1igydiruomc+eUt0mw==", "dev": true }, "@storybook/preview-api": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.5.1.tgz", - "integrity": "sha512-8xjUbuGmHLmw8tfTUCjXSvMM9r96JaexPFmHdwW6XLe71KKdWp8u96vRDRE5648cd+/of15OjaRtakRKqluA/A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.17.tgz", + "integrity": "sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==", "dev": true, "requires": { - "@storybook/channels": "7.5.1", - "@storybook/client-logger": "7.5.1", - "@storybook/core-events": "7.5.1", - "@storybook/csf": "^0.1.0", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/types": "7.5.1", + "@storybook/types": "7.6.17", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -24718,18 +25075,18 @@ } }, "@storybook/react": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.5.1.tgz", - "integrity": "sha512-IG97c30fFSmPyGpJ1awHC/+9XnCTqleeOQwROXjroMHSm8m/JTWpHMVLyM1x7b6VAnBhNHWJ+oXLZe/hXkXfpA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.17.tgz", + "integrity": "sha512-lVqzQSU03rRJWYW+gK2gq6mSo3/qtnVICY8B8oP7gc36jVu4ksDIu45bTfukM618ODkUZy0vZe6T4engK3azjA==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/core-client": "7.5.1", - "@storybook/docs-tools": "7.5.1", + "@storybook/client-logger": "7.6.17", + "@storybook/core-client": "7.6.17", + "@storybook/docs-tools": "7.6.17", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.5.1", - "@storybook/react-dom-shim": "7.5.1", - "@storybook/types": "7.5.1", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/types": "7.6.17", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^18.0.0", @@ -24859,21 +25216,21 @@ } }, "@storybook/react-dom-shim": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.5.1.tgz", - "integrity": "sha512-bzTIfLm91O9h3rPYJLtRbmsPARerY3z7MoyvadGp8TikvIvf+WyT/vHujw+20SxnqiZVq5Jv65FFlxc46GGB1Q==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.17.tgz", + "integrity": "sha512-32Sa/G+WnvaPiQ1Wvjjw5UM9rr2c4GDohwCcWVv3/LJuiFPqNS6zglAtmnsrlIBnUwRBMLMh/ekCTdqMiUmfDw==", "dev": true, "requires": {} }, "@storybook/react-webpack5": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.5.1.tgz", - "integrity": "sha512-iH1y35LjnAmyMA0QhZHiYyGrQYelY0Lds0K+cDZlFDDi7W4YiunULAyakZTje0LctJTLWcR7pWyp3dv2EYHb4g==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.6.17.tgz", + "integrity": "sha512-qGc2JxaSmvPXV7ndxA/8qPtPLK7lAwejL/QdrzLXhxEmVdZLMew640FBYgOV/zWnehV3BnivThln/8PsQyst/g==", "dev": true, "requires": { - "@storybook/builder-webpack5": "7.5.1", - "@storybook/preset-react-webpack": "7.5.1", - "@storybook/react": "7.5.1", + "@storybook/builder-webpack5": "7.6.17", + "@storybook/preset-react-webpack": "7.6.17", + "@storybook/react": "7.6.17", "@types/node": "^18.0.0" }, "dependencies": { @@ -24889,25 +25246,25 @@ } }, "@storybook/router": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.5.1.tgz", - "integrity": "sha512-BvKo+IxWwo3dfIG1+vLtZLT4qqkNHL5GTIozTyX04uqt9ByYZL6SJEzxEa1Xn6Qq/fbdQwzCanNHbTlwiTMf7Q==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.17.tgz", + "integrity": "sha512-GnyC0j6Wi5hT4qRhSyT8NPtJfGmf82uZw97LQRWeyYu5gWEshUdM7aj40XlNiScd5cZDp0owO1idduVF2k2l2A==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", + "@storybook/client-logger": "7.6.17", "memoizerific": "^1.11.3", "qs": "^6.10.0" } }, "@storybook/telemetry": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.5.1.tgz", - "integrity": "sha512-z9PGouNqvZ2F7vD79qDF4PN7iW3kE3MO7YX0iKTmzgLi4ImKuXIJRF04GRH8r+WYghnbomAyA4o6z9YJMdNuVw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.17.tgz", + "integrity": "sha512-WOcOAmmengYnGInH98Px44F47DSpLyk20BM+Z/IIQDzfttGOLlxNqBBG1XTEhNRn+AYuk4aZ2JEed2lCjVIxcA==", "dev": true, "requires": { - "@storybook/client-logger": "7.5.1", - "@storybook/core-common": "7.5.1", - "@storybook/csf-tools": "7.5.1", + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/csf-tools": "7.6.17", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -25064,6 +25421,85 @@ } } }, + "@storybook/test": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.0.0.tgz", + "integrity": "sha512-am0Pj1wqgsOUpW4RCfZtVGMIF8ddwMCbortOezEKcFuwAaNPE+p62alG+vOVIR0D19fs0XouWJj8rGo3OhzJRA==", + "requires": { + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/instrumenter": "8.0.0", + "@storybook/preview-api": "8.0.0", + "@testing-library/dom": "^9.3.1", + "@testing-library/jest-dom": "^6.4.0", + "@testing-library/user-event": "^14.5.2", + "@vitest/expect": "1.1.3", + "@vitest/spy": "^1.1.3", + "chai": "^4.3.7", + "util": "^0.12.4" + }, + "dependencies": { + "@storybook/channels": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.0.tgz", + "integrity": "sha512-uykCBlSIMVodsgTFC/XAgO7JeaTJrKtDmmM6Z4liGkPS6EUvurOEu2vK6FuvojzhLHdVJ5bP+VXSJerfm7aE4Q==", + "requires": { + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/global": "^5.0.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/client-logger": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.0.tgz", + "integrity": "sha512-olc1vUfaZNkXc7L8UoCdGmyBieHQbsaB+0vVoivYMSa1DHYtXE75RefU3lhMSGrkvIZmXMvfaIDmnyJIOB5FxA==", + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/core-events": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.0.tgz", + "integrity": "sha512-kkabj4V99gOTBW+y3HM/LTCDekglqb+lslZMamM+Ytxv1lCqCEOIR/OGfnYOyEaK4BLcx61Zp+fO30FZxtoT1w==", + "requires": { + "ts-dedent": "^2.0.0" + } + }, + "@storybook/preview-api": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.0.tgz", + "integrity": "sha512-R2NBKtvHi+i1b/3PZe4u4YdJ7dlqr8YTqLn7syB/YSnKRAa7DYed+GJLu4qFJisE6IuYi+57AsdW16otRFEVvg==", + "requires": { + "@storybook/channels": "8.0.0", + "@storybook/client-logger": "8.0.0", + "@storybook/core-events": "8.0.0", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "8.0.0", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.0.tgz", + "integrity": "sha512-6nJipdgoAkVFk2JpRPCm9vb/Yuak2lmdZRv9qzl8cNRttlbOESVlzbmhgxCmWV0OYUaMeYge9L8NWhJ14LKbzw==", + "requires": { + "@storybook/channels": "8.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + } + } + } + }, "@storybook/testing-library": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.2.2.tgz", @@ -25076,24 +25512,24 @@ } }, "@storybook/theming": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.5.1.tgz", - "integrity": "sha512-ETLAOn10hI4Mkmjsr0HGcM6HbzaURrrPBYmfXOrdbrzEVN+AHW4FlvP9d8fYyP1gdjPE1F39XvF0jYgt1zXiHQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.17.tgz", + "integrity": "sha512-ZbaBt3KAbmBtfjNqgMY7wPMBshhSJlhodyMNQypv+95xLD/R+Az6aBYbpVAOygLaUQaQk4ar7H/Ww6lFIoiFbA==", "dev": true, "requires": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.5.1", + "@storybook/client-logger": "7.6.17", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" } }, "@storybook/types": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.1.tgz", - "integrity": "sha512-ZcMSaqFNx1E+G00nRDUi8kKL7gxJVlnCvbKLNj3V85guy4DkIYAZr31yDqze07gDWbjvKoHIp3tKpgE+2i8upQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.17.tgz", + "integrity": "sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==", "dev": true, "requires": { - "@storybook/channels": "7.5.1", + "@storybook/channels": "7.6.17", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" @@ -25242,99 +25678,99 @@ } }, "@swc/core": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.95.tgz", - "integrity": "sha512-PMrNeuqIusq9DPDooV3FfNEbZuTu5jKAc04N3Hm6Uk2Fl49cqElLFQ4xvl4qDmVDz97n3n/C1RE0/f6WyGPEiA==", - "dev": true, - "requires": { - "@swc/core-darwin-arm64": "1.3.95", - "@swc/core-darwin-x64": "1.3.95", - "@swc/core-linux-arm-gnueabihf": "1.3.95", - "@swc/core-linux-arm64-gnu": "1.3.95", - "@swc/core-linux-arm64-musl": "1.3.95", - "@swc/core-linux-x64-gnu": "1.3.95", - "@swc/core-linux-x64-musl": "1.3.95", - "@swc/core-win32-arm64-msvc": "1.3.95", - "@swc/core-win32-ia32-msvc": "1.3.95", - "@swc/core-win32-x64-msvc": "1.3.95", - "@swc/counter": "^0.1.1", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.7.tgz", + "integrity": "sha512-I7a9sUxB+z+UCf6KudqrQH/RgLal/S+E+t4uBdbggycLyJe7WvBgPrQlcN5UpEuD9YC2PJ0CN6kgD6ARStg+pg==", + "dev": true, + "requires": { + "@swc/core-darwin-arm64": "1.4.7", + "@swc/core-darwin-x64": "1.4.7", + "@swc/core-linux-arm-gnueabihf": "1.4.7", + "@swc/core-linux-arm64-gnu": "1.4.7", + "@swc/core-linux-arm64-musl": "1.4.7", + "@swc/core-linux-x64-gnu": "1.4.7", + "@swc/core-linux-x64-musl": "1.4.7", + "@swc/core-win32-arm64-msvc": "1.4.7", + "@swc/core-win32-ia32-msvc": "1.4.7", + "@swc/core-win32-x64-msvc": "1.4.7", + "@swc/counter": "^0.1.2", "@swc/types": "^0.1.5" } }, "@swc/core-darwin-arm64": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.95.tgz", - "integrity": "sha512-VAuBAP3MNetO/yBIBzvorUXq7lUBwhfpJxYViSxyluMwtoQDhE/XWN598TWMwMl1ZuImb56d7eUsuFdjgY7pJw==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.7.tgz", + "integrity": "sha512-IhfP2Mrrh9WcdlBJQbPNBhfdOhW/SC910SiuzvxaLgJmzq1tw6TVDNUz4Zf85TbK5uzgR0emtPc9hTGxynl57A==", "dev": true, "optional": true }, "@swc/core-darwin-x64": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.95.tgz", - "integrity": "sha512-20vF2rvUsN98zGLZc+dsEdHvLoCuiYq/1B+TDeE4oolgTFDmI1jKO+m44PzWjYtKGU9QR95sZ6r/uec0QC5O4Q==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.7.tgz", + "integrity": "sha512-MO01pnxJDS6st5IiqyTnAOz9kpAPP/O4lzEUH9E80XdXBzwptS5hNTM0egBlqueWDFrPM26RI81JLtyTU7kR8w==", "dev": true, "optional": true }, "@swc/core-linux-arm-gnueabihf": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.95.tgz", - "integrity": "sha512-oEudEM8PST1MRNGs+zu0cx5i9uP8TsLE4/L9HHrS07Ck0RJ3DCj3O2fU832nmLe2QxnAGPwBpSO9FntLfOiWEQ==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.7.tgz", + "integrity": "sha512-+cDaXW6PZqGhXIq9C4xE+/QuyUsLkXf8d8uSXep+rZYDl4YHS9Fi7HpZQnqLX6al/iVhwe3VnxHMGw50gxcr/g==", "dev": true, "optional": true }, "@swc/core-linux-arm64-gnu": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.95.tgz", - "integrity": "sha512-pIhFI+cuC1aYg+0NAPxwT/VRb32f2ia8oGxUjQR6aJg65gLkUYQzdwuUmpMtFR2WVf7WVFYxUnjo4UyMuyh3ng==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.7.tgz", + "integrity": "sha512-RNnVHRKhEtA3pM34wgb3Vumf5M6/XlWzFdkHEMZIkOKyNSUhZiv8X3tsEK+n1rZQWIDkvlw4YyHtB8vK18WdCA==", "dev": true, "optional": true }, "@swc/core-linux-arm64-musl": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.95.tgz", - "integrity": "sha512-ZpbTr+QZDT4OPJfjPAmScqdKKaT+wGurvMU5AhxLaf85DuL8HwUwwlL0n1oLieLc47DwIJEMuKQkYhXMqmJHlg==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.7.tgz", + "integrity": "sha512-p7Xm4Pib02d1SFS9XXMoOcCTDIkFWMspspptPX00VcjAdZYnXWujWGuD2W+KN1gq5syHB1g3TsYs9LP2dGsKqw==", "dev": true, "optional": true }, "@swc/core-linux-x64-gnu": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.95.tgz", - "integrity": "sha512-n9SuHEFtdfSJ+sHdNXNRuIOVprB8nbsz+08apKfdo4lEKq6IIPBBAk5kVhPhkjmg2dFVHVo4Tr/OHXM1tzWCCw==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.7.tgz", + "integrity": "sha512-ViI5jy03cFYPETsye1J+oPbHE4v8oIDN34qebzvgHUlNKOXfc1ig0Zha5oQnKp3zj1rmjcSLIMqK++WR021G5A==", "dev": true, "optional": true }, "@swc/core-linux-x64-musl": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.95.tgz", - "integrity": "sha512-L1JrVlsXU3LC0WwmVnMK9HrOT2uhHahAoPNMJnZQpc18a0paO9fqifPG8M/HjNRffMUXR199G/phJsf326UvVg==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.7.tgz", + "integrity": "sha512-Nf3Axcx/ILl7XE44eidNNPF39rg/KIeqg2545vrOXJG02iu7pEjZuu8wm6w+23BpP4COjZJymlg9LzPT1ZBD5Q==", "dev": true, "optional": true }, "@swc/core-win32-arm64-msvc": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.95.tgz", - "integrity": "sha512-YaP4x/aZbUyNdqCBpC2zL8b8n58MEpOUpmOIZK6G1SxGi+2ENht7gs7+iXpWPc0sy7X3YPKmSWMAuui0h8lgAA==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.7.tgz", + "integrity": "sha512-MFkJEaC59AO2HpndmHhCkaj8NJus5etjMtBphOe9em7jmmfdQ7mLenKHbZ/CspHNl8yNPO9Qzpa/at2838x+RQ==", "dev": true, "optional": true }, "@swc/core-win32-ia32-msvc": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.95.tgz", - "integrity": "sha512-w0u3HI916zT4BC/57gOd+AwAEjXeUlQbGJ9H4p/gzs1zkSHtoDQghVUNy3n/ZKp9KFod/95cA8mbVF9t1+6epQ==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.7.tgz", + "integrity": "sha512-nwrfERocUei9sxqd6URrWcEC3KDcTBD+beMerB9idvuzy4rcm5k1O1ClUlZ9pJOZn+vMN1tqZjLze4hJMT9STQ==", "dev": true, "optional": true }, "@swc/core-win32-x64-msvc": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.95.tgz", - "integrity": "sha512-5RGnMt0S6gg4Gc6QtPUJ3Qs9Un4sKqccEzgH/tj7V/DVTJwKdnBKxFZfgQ34OR2Zpz7zGOn889xwsFVXspVWNA==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.7.tgz", + "integrity": "sha512-d5T8Z/axAml8FTA+T9RS2mwJDNIbSSz5jcEiWaGuKVDIoSZib2HpMvnMydOGsIrmjfS1Z4ZhdAawivPhAZ3M8Q==", "dev": true, "optional": true }, "@swc/counter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", - "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true }, "@swc/types": { @@ -25344,10 +25780,9 @@ "dev": true }, "@testing-library/dom": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", - "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", - "dev": true, + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -25363,7 +25798,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -25372,7 +25806,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -25382,7 +25815,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -25390,20 +25822,104 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/jest-dom": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz", + "integrity": "sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==", + "requires": { + "@adobe/css-tools": "^4.3.2", + "@babel/runtime": "^7.9.2", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -25411,10 +25927,9 @@ } }, "@testing-library/user-event": { - "version": "14.5.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.1.tgz", - "integrity": "sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==", - "dev": true, + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "requires": {} }, "@trysound/sax": { @@ -25424,15 +25939,14 @@ "dev": true }, "@types/aria-query": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.3.tgz", - "integrity": "sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==", - "dev": true + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" }, "@types/babel__core": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", - "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "requires": { "@babel/parser": "^7.20.7", @@ -25443,18 +25957,18 @@ } }, "@types/babel__generator": { - "version": "7.6.6", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", - "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", - "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -25462,9 +25976,9 @@ } }, "@types/babel__traverse": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", - "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "requires": { "@babel/types": "^7.20.7" @@ -25474,7 +25988,6 @@ "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, "requires": { "@types/connect": "*", "@types/node": "*" @@ -25493,7 +26006,6 @@ "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", - "dev": true, "requires": { "@types/node": "*" } @@ -25509,18 +26021,18 @@ } }, "@types/cross-spawn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.4.tgz", - "integrity": "sha512-GGLpeThc2Bu8FBGmVn76ZU3lix17qZensEI4/MPty0aZpm2CHfgEMis31pf5X5EiudYKcPAsWciAsCALoPo5dw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", "dev": true, "requires": { "@types/node": "*" } }, "@types/detect-port": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.4.tgz", - "integrity": "sha512-HveFGabu3IwATqwLelcp6UZ1MIzSFwk+qswC9luzzHufqAwhs22l7KkINDLWRfXxIPTYnSZ1DuQBEgeVPgUOSA==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.5.tgz", + "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==", "dev": true }, "@types/doctrine": { @@ -25530,15 +26042,15 @@ "dev": true }, "@types/ejs": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.4.tgz", - "integrity": "sha512-fnM/NjByiWdSRJRrmGxgqOSAnmOnsvX1QcNYk5TVyIIj+7ZqOKMb9gQa4OIl/lil2w/8TiTWV+nz3q8yqxez/w==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", "dev": true }, "@types/emscripten": { - "version": "1.39.9", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.9.tgz", - "integrity": "sha512-ILdWj4XYtNOqxJaW22NEQx2gJsLfV5ncxYhhGX1a1H1lXl2Ta0gUz7QOnOoF1xQbJwWDjImi8gXN9mKdIf6n9g==", + "version": "1.39.10", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", + "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", "dev": true }, "@types/escodegen": { @@ -25570,14 +26082,12 @@ "@types/estree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" }, "@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -25589,7 +26099,6 @@ "version": "4.17.36", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", - "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", @@ -25603,10 +26112,16 @@ "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", "dev": true }, + "@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "dev": true + }, "@types/graceful-fs": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz", - "integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "requires": { "@types/node": "*" @@ -25636,8 +26151,7 @@ "@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", - "dev": true + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" }, "@types/http-proxy": { "version": "1.17.11", @@ -25684,28 +26198,36 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/leaflet": { + "version": "1.9.8", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.8.tgz", + "integrity": "sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, "@types/lodash": { - "version": "4.14.200", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.200.tgz", - "integrity": "sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", + "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==", "dev": true }, "@types/mdx": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.9.tgz", - "integrity": "sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.11.tgz", + "integrity": "sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==", "dev": true }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/mime-types": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.3.tgz", - "integrity": "sha512-bvxCbHeeS7quxS7uOJShyoOQj/BfLabhF6mk9Rmr+2MRfW8W1yxyyL/0GTxLFTHen41GrIw4K3D4DrLouhb8vg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", + "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", "dev": true }, "@types/minimist": { @@ -25717,13 +26239,12 @@ "@types/node": { "version": "20.5.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", - "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==", - "dev": true + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" }, "@types/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-lX17GZVpJ/fuCjguZ5b3TjEbSENxmEk1B2z02yoXSK9WMEWRivhdSY73wWMn6bpcCDAOh6qAdktpKHIlkDk2lg==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "requires": { "@types/node": "*", @@ -25737,15 +26258,15 @@ "dev": true }, "@types/parse-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", - "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, "@types/pretty-hrtime": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.2.tgz", - "integrity": "sha512-vyv9knII8XeW8TnXDcGH7HqG6FeR56ESN6ExM34d/U8Zvs3xuG34euV6CVyB7KEYI7Ts4lQM8b4NL72e7UadnA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==", "dev": true }, "@types/prop-types": { @@ -25756,22 +26277,19 @@ "@types/qs": { "version": "6.9.8", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", - "dev": true + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" }, "@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/react": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.20.tgz", - "integrity": "sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==", + "version": "18.2.73", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.73.tgz", + "integrity": "sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA==", "requires": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, @@ -25814,17 +26332,18 @@ "@types/react-router": "*" } }, + "@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true + }, "@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, "@types/semver": { "version": "7.5.1", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", @@ -25835,7 +26354,6 @@ "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, "requires": { "@types/mime": "^1", "@types/node": "*" @@ -25854,7 +26372,6 @@ "version": "1.15.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", - "dev": true, "requires": { "@types/http-errors": "*", "@types/mime": "*", @@ -25871,9 +26388,9 @@ } }, "@types/unist": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", - "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", "dev": true }, "@types/use-sync-external-store": { @@ -25881,6 +26398,12 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, "@types/ws": { "version": "8.5.5", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", @@ -25891,9 +26414,9 @@ } }, "@types/yargs": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", - "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -26083,6 +26606,97 @@ "eslint-visitor-keys": "^3.4.1" } }, + "@vitest/expect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.1.3.tgz", + "integrity": "sha512-MnJqsKc1Ko04lksF9XoRJza0bGGwTtqfbyrsYv5on4rcEkdo+QgUdITenBQBUltKzdxW7K3rWh+nXRULwsdaVg==", + "requires": { + "@vitest/spy": "1.1.3", + "@vitest/utils": "1.1.3", + "chai": "^4.3.10" + }, + "dependencies": { + "@vitest/spy": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.1.3.tgz", + "integrity": "sha512-Ec0qWyGS5LhATFQtldvChPTAHv08yHIOZfiNcjwRQbFPHpkih0md9KAbs7TfeIfL7OFKoe7B/6ukBTqByubXkQ==", + "requires": { + "tinyspy": "^2.2.0" + } + }, + "@vitest/utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.1.3.tgz", + "integrity": "sha512-Dyt3UMcdElTll2H75vhxfpZu03uFpXRCHxWnzcrFjZxT1kTbq8ALUYIeBgGolo1gldVdI0YSlQRacsqxTwNqwg==", + "requires": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } + } + }, + "@vitest/spy": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.4.0.tgz", + "integrity": "sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==", + "requires": { + "tinyspy": "^2.2.0" + } + }, + "@vitest/utils": { + "version": "0.34.7", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.7.tgz", + "integrity": "sha512-ziAavQLpCYS9sLOorGrFFKmy2gnfiNU0ZJ15TsMz/K92NAPS/rp9K4z6AJQQk5Y8adCy4Iwpxy7pQumQ/psnRg==", + "requires": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } + } + }, "@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -26318,9 +26932,9 @@ } }, "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true }, "acorn-import-assertions": { @@ -26350,13 +26964,10 @@ "dev": true }, "agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "requires": { - "debug": "^4.3.4" - } + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true }, "aggregate-error": { "version": "3.1.0", @@ -26433,14 +27044,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -26480,7 +27089,6 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, "requires": { "deep-equal": "^2.0.5" } @@ -26489,7 +27097,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, "requires": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -26604,10 +27211,15 @@ "util": "^0.12.5" } }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, "ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, "requires": { "tslib": "^2.0.1" @@ -26620,9 +27232,9 @@ "dev": true }, "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "async-limiter": { @@ -26648,8 +27260,7 @@ "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "axios": { "version": "1.6.2", @@ -26697,51 +27308,64 @@ "test-exclude": "^6.0.0" } }, - "babel-plugin-named-exports-order": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz", - "integrity": "sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==", - "dev": true - }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", "dev": true, "requires": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.6.1", "semver": "^6.3.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + } } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.2" - } - }, - "babel-plugin-react-docgen": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz", - "integrity": "sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "requires": { - "ast-types": "^0.14.2", - "lodash": "^4.17.15", - "react-docgen": "^5.0.0" + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + } } }, "balanced-match": { @@ -26772,9 +27396,9 @@ } }, "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "dev": true }, "big.js": { @@ -26905,15 +27529,15 @@ } }, "browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" } }, "bser": { @@ -26953,34 +27577,16 @@ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, - "c8": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", - "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - } - }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -27018,9 +27624,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001528", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001528.tgz", - "integrity": "sha512-0Db4yyjR9QMNlsxh+kKWzQtkyflkG/snYheSzkjmvdEtEXB1+jt7A2HmSEiO6XIJPIbo92lHNGNySvE5pZcs5Q==", + "version": "1.0.30001597", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", + "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", "dev": true }, "case-sensitive-paths-webpack-plugin": { @@ -27029,21 +27635,42 @@ "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true }, + "chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, + "check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "requires": { + "get-func-name": "^2.0.2" + } + }, "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -27085,6 +27712,21 @@ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true }, + "citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "requires": { + "consola": "^3.2.3" + } + }, + "cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, "classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", @@ -27115,9 +27757,9 @@ } }, "cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true }, "cli-table3": { @@ -27130,17 +27772,6 @@ "string-width": "^4.2.0" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -27173,7 +27804,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -27181,8 +27811,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "colord": { "version": "2.9.3", @@ -27331,6 +27960,12 @@ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true }, + "consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -27371,18 +28006,18 @@ "dev": true }, "core-js-compat": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", - "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dev": true, "requires": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.3" } }, "core-js-pure": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.1.tgz", - "integrity": "sha512-wCXGbLjnsP10PlK/thHSQlOLlLKNEkaWbTzVvHHZ79fZNeN1gUmw2gBlpItxPv/pvqldevEXFh/d5stdNvl6EQ==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.36.0.tgz", + "integrity": "sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ==", "dev": true }, "core-util-is": { @@ -27497,6 +28132,11 @@ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -27580,11 +28220,18 @@ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "requires": { + "type-detect": "^4.0.0" + } + }, "deep-equal": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", - "dev": true, "requires": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -27646,6 +28293,16 @@ "clone": "^1.0.2" } }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -27656,16 +28313,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, "requires": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "defu": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", - "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "dev": true }, "del": { @@ -27698,8 +28354,7 @@ "dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" }, "destroy": { "version": "1.2.0", @@ -27744,6 +28399,11 @@ "debug": "4" } }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -27780,8 +28440,7 @@ "dom-accessibility-api": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" }, "dom-converter": { "version": "0.2.0", @@ -27923,9 +28582,9 @@ } }, "electron-to-chromium": { - "version": "1.4.510", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.510.tgz", - "integrity": "sha512-xPfLIPFcN/WLXBpQ/K4UgE98oUBO5Tia6BD4rkSR0wE7ep/PwBVlgvPJQrIBpmJGVAmUzwPKuDbVt9XV6+uC2g==", + "version": "1.4.703", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.703.tgz", + "integrity": "sha512-094ZZC4nHXPKl/OwPinSMtLN9+hoFkdfQGKnvXbY+3WEAYtVDpz9UhJIViiY6Zb8agvqxiaJzNG9M+pRZWvSZw==", "dev": true }, "emoji-regex": { @@ -28053,11 +28712,23 @@ "which-typed-array": "^1.1.10" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -28093,9 +28764,9 @@ } }, "es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", "dev": true }, "es-set-tostringtag": { @@ -28175,9 +28846,9 @@ } }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true }, "escape-html": { @@ -28189,8 +28860,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "escodegen": { "version": "2.1.0", @@ -28638,15 +29308,12 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, - "estree-to-babel": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz", - "integrity": "sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==", - "dev": true, + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "requires": { - "@babel/traverse": "^7.1.6", - "@babel/types": "^7.2.0", - "c8": "^7.6.0" + "@types/estree": "^1.0.0" } }, "esutils": { @@ -28896,10 +29563,21 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", - "dev": true, "requires": { "fs-extra": "11.1.1", "ramda": "0.29.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } } }, "filelist": { @@ -29010,9 +29688,9 @@ "dev": true }, "flow-parser": { - "version": "0.219.5", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.219.5.tgz", - "integrity": "sha512-lHx/cl2XjopBx/ma9RYhG7FGj2JLKacoBwtI3leOp8AwRDPGwu6bzJoaCMfIl/sq14KdtY5MGzd5q6nKfGzcuQ==", + "version": "0.230.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.230.0.tgz", + "integrity": "sha512-ZAfKaarESYYcP/RoLdM91vX0u/1RR7jI5TJaFLnxwRlC2mp0o+Rw7ipIY7J6qpIpQYtAobWb/J6S0XPeu0gO8g==", "dev": true }, "focus-trap": { @@ -29032,19 +29710,26 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "requires": { "is-callable": "^1.1.3" } }, "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "requires": { "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } } }, "fork-ts-checker-webpack-plugin": { @@ -29152,9 +29837,9 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -29228,9 +29913,9 @@ "dev": true }, "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -29286,8 +29971,7 @@ "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.6", @@ -29304,8 +29988,7 @@ "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gensync": { "version": "1.0.0-beta.2", @@ -29313,22 +29996,21 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==" }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-nonce": { @@ -29338,9 +30020,9 @@ "dev": true }, "get-npm-tarball-url": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz", - "integrity": "sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz", + "integrity": "sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==", "dev": true }, "get-package-type": { @@ -29372,16 +30054,17 @@ } }, "giget": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/giget/-/giget-1.1.3.tgz", - "integrity": "sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.1.tgz", + "integrity": "sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==", "dev": true, "requires": { - "colorette": "^2.0.20", - "defu": "^6.1.2", - "https-proxy-agent": "^7.0.2", - "mri": "^1.2.0", - "node-fetch-native": "^1.4.0", + "citty": "^0.1.5", + "consola": "^3.2.3", + "defu": "^6.1.3", + "node-fetch-native": "^1.6.1", + "nypm": "^0.3.3", + "ohash": "^1.1.3", "pathe": "^1.1.1", "tar": "^6.2.0" } @@ -29491,7 +30174,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "requires": { "get-intrinsic": "^1.1.3" } @@ -29499,8 +30181,7 @@ "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "graphemer": { "version": "1.4.0", @@ -29551,7 +30232,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -29559,41 +30239,35 @@ "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, "has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -29602,7 +30276,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, "requires": { "function-bind": "^1.1.2" } @@ -29703,12 +30376,6 @@ "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, "html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -29813,12 +30480,12 @@ } }, "https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", "dev": true, "requires": { - "agent-base": "^7.0.2", + "agent-base": "5", "debug": "4" } }, @@ -29966,8 +30633,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.8", @@ -29979,7 +30645,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, "requires": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -30001,9 +30666,9 @@ } }, "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true }, "ipaddr.js": { @@ -30022,7 +30687,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -30032,7 +30696,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -30058,7 +30721,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -30076,7 +30738,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -30085,8 +30746,7 @@ "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { "version": "2.13.1", @@ -30101,7 +30761,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -30143,7 +30802,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -30172,8 +30830,7 @@ "is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" }, "is-nan": { "version": "1.3.2", @@ -30201,7 +30858,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -30234,7 +30890,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -30243,14 +30898,12 @@ "is-set": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, "requires": { "call-bind": "^1.0.2" } @@ -30265,7 +30918,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -30274,7 +30926,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -30283,7 +30934,6 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, "requires": { "which-typed-array": "^1.1.11" } @@ -30297,8 +30947,7 @@ "is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" }, "is-weakref": { "version": "1.0.2", @@ -30313,7 +30962,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -30331,8 +30979,7 @@ "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "isexe": { "version": "2.0.0", @@ -30347,9 +30994,9 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true }, "istanbul-lib-instrument": { @@ -30365,44 +31012,6 @@ "semver": "^6.3.0" } }, - "istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, "iterator.prototype": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.1.tgz", @@ -30734,20 +31343,21 @@ } }, "jscodeshift": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", - "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "dev": true, - "requires": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, + "requires": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", "babel-core": "^7.0.0-bridge.0", "chalk": "^4.1.2", "flow-parser": "0.*", @@ -30755,11 +31365,34 @@ "micromatch": "^4.0.4", "neo-async": "^2.5.0", "node-dir": "^0.1.17", - "recast": "^0.21.0", + "recast": "^0.23.3", "temp": "^0.8.4", "write-file-atomic": "^2.3.0" }, "dependencies": { + "@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -30769,15 +31402,6 @@ "color-convert": "^2.0.1" } }, - "ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "dev": true, - "requires": { - "tslib": "^2.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -30803,24 +31427,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "recast": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "dev": true, - "requires": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -30883,7 +31501,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -30949,6 +31566,11 @@ "dotenv-expand": "^10.0.0" } }, + "leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, "lefthook": { "version": "1.4.9", "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-1.4.9.tgz", @@ -31166,6 +31788,14 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "requires": { + "get-func-name": "^2.0.1" + } + }, "lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -31187,40 +31817,31 @@ "lz-string": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" + }, + "magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } }, "make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "semver": "^7.5.3" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -31243,13 +31864,12 @@ "map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" }, "markdown-to-jsx": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", - "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.3.tgz", + "integrity": "sha512-qwu2XftKs/SP+f6oCe0ruAFKX6jZaKxrBfDBV4CthqbVbRQwHhNM28QGDQuTldCaOn+hocaqbmGvCuXO5m3smA==", "dev": true, "requires": {} }, @@ -31299,7 +31919,6 @@ "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "dev": true, "requires": { "map-or-similar": "^1.5.0" } @@ -31386,8 +32005,7 @@ "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, "mini-css-extract-plugin": { "version": "2.7.6", @@ -31478,12 +32096,6 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -31559,9 +32171,9 @@ } }, "node-fetch-native": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.0.tgz", - "integrity": "sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz", + "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==", "dev": true }, "node-forge": { @@ -31577,9 +32189,9 @@ "dev": true }, "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "normalize-package-data": { @@ -31649,6 +32261,98 @@ "boolbase": "^1.0.0" } }, + "nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dev": true, + "requires": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "dependencies": { + "execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true + }, + "human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -31656,16 +32360,14 @@ "dev": true }, "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -31674,14 +32376,12 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -31756,6 +32456,12 @@ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, + "ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true + }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -32019,9 +32725,9 @@ }, "dependencies": { "lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true } } @@ -32039,11 +32745,16 @@ "dev": true }, "pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" + }, "peek-stream": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", @@ -32269,7 +32980,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, "requires": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -32279,14 +32989,12 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" } } }, @@ -32420,22 +33128,6 @@ "ws": "^6.1.0" }, "dependencies": { - "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true - }, - "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", - "dev": true, - "requires": { - "agent-base": "5", - "debug": "4" - } - }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -32466,7 +33158,6 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, "requires": { "side-channel": "^1.0.4" } @@ -32486,8 +33177,7 @@ "ramda": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", - "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", - "dev": true + "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==" }, "randombytes": { "version": "2.1.0", @@ -32549,37 +33239,28 @@ } }, "react-docgen": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz", - "integrity": "sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", + "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", "dev": true, "requires": { - "@babel/core": "^7.7.5", - "@babel/generator": "^7.12.11", - "@babel/runtime": "^7.7.6", - "ast-types": "^0.14.2", - "commander": "^2.19.0", + "@babel/core": "^7.18.9", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "@types/babel__core": "^7.18.0", + "@types/babel__traverse": "^7.18.0", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", "doctrine": "^3.0.0", - "estree-to-babel": "^3.1.0", - "neo-async": "^2.6.1", - "node-dir": "^0.1.10", - "strip-indent": "^3.0.0" + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" }, "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "@types/doctrine": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", + "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } } } }, @@ -32632,18 +33313,25 @@ "warning": "^4.0.2" } }, - "react-inspector": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz", - "integrity": "sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==", - "dev": true, - "requires": {} - }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "requires": { + "@react-leaflet/core": "^2.1.0" + } + }, + "react-loading-skeleton": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz", + "integrity": "sha512-1oJEBc9+wn7BbkQQk7YodlYEIjgeR+GrRjD+QXkVjwZN7LGIcAFHrx4NhT7UHGBxNY1+zax3c+Fo6XQM4R7CgA==", + "requires": {} + }, "react-redux": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.2.tgz", @@ -32665,9 +33353,9 @@ } }, "react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", "dev": true }, "react-remove-scroll": { @@ -32684,9 +33372,9 @@ } }, "react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.5.tgz", + "integrity": "sha512-3cqjOqg6s0XbOjWvmasmqHch+RLxIEk2r/70rzGXuz3iIGQsQheEQyqYCBb5EECoD01Vo2SIbDqW4paLeLTASw==", "dev": true, "requires": { "react-style-singleton": "^2.2.1", @@ -32765,27 +33453,16 @@ } }, "recast": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", - "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", + "version": "0.23.6", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.6.tgz", + "integrity": "sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ==", "dev": true, "requires": { - "assert": "^2.0.0", "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" - }, - "dependencies": { - "ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "dev": true, - "requires": { - "tslib": "^2.0.1" - } - } } }, "rechoir": { @@ -32868,7 +33545,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -32949,12 +33625,6 @@ "strip-ansi": "^6.0.1" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -32979,9 +33649,9 @@ "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" }, "resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { "is-core-module": "^2.13.0", @@ -33312,6 +33982,19 @@ "send": "0.18.0" } }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -33349,14 +34032,14 @@ "dev": true }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { @@ -33365,41 +34048,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "requires": { - "semver": "^7.5.3" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -33579,30 +34227,29 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, "requires": { "internal-slot": "^1.0.4" } }, "store2": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", + "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==", "dev": true }, "storybook": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.5.1.tgz", - "integrity": "sha512-Wg3j3z5H03PYnEcmlnhf6bls0OtjmsNPsQ93dTV8F4AweqBECwzjf94Wj++NrP3X+WbfMoCbBU6LRFuEyzCCxw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.17.tgz", + "integrity": "sha512-8+EIo91bwmeFWPg1eysrxXlhIYv3OsXrznTr4+4Eq0NikqAoq6oBhtlN5K2RGS2lBVF537eN+9jTCNbR+WrzDA==", "dev": true, "requires": { - "@storybook/cli": "7.5.1" + "@storybook/cli": "7.6.17" } }, "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", "dev": true }, "string_decoder": { @@ -33865,7 +34512,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -33988,11 +34634,13 @@ } }, "swc-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", - "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", "dev": true, - "requires": {} + "requires": { + "@swc/counter": "^0.1.3" + } }, "synchronous-promise": { "version": "2.0.17", @@ -34109,7 +34757,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", - "dev": true, "requires": { "memoizerific": "^1.11.3" } @@ -34284,16 +34931,20 @@ "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, "tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", - "dev": true + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, "tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==" + }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -34316,9 +34967,9 @@ } }, "tocbot": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.21.2.tgz", - "integrity": "sha512-R5Muhi/TUu4i4snWVrMgNoXyJm2f8sJfdgIkQvqb+cuIXQEIMAiWGWgCgYXHqX4+XiS/Bnm7IYZ9Zy6NVe6lhw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz", + "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==", "dev": true }, "toidentifier": { @@ -34354,8 +35005,7 @@ "ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "dev": true + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" }, "ts-loader": { "version": "9.4.4", @@ -34504,6 +35154,11 @@ "prelude-ls": "^1.2.1" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, "type-fest": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", @@ -34579,6 +35234,12 @@ "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true }, + "ufo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", + "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==", + "dev": true + }, "uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -34669,10 +35330,9 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" }, "unpipe": { "version": "1.0.0", @@ -34681,15 +35341,23 @@ "dev": true }, "unplugin": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz", - "integrity": "sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz", + "integrity": "sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==", "dev": true, "requires": { - "acorn": "^8.10.0", - "chokidar": "^3.5.3", + "acorn": "^8.11.3", + "chokidar": "^3.6.0", "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.5.0" + "webpack-virtual-modules": "^0.6.1" + }, + "dependencies": { + "webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "dev": true + } } }, "untildify": { @@ -34699,9 +35367,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -34734,20 +35402,20 @@ "dev": true }, "qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.0.tgz", + "integrity": "sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==", "dev": true, "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" } } } }, "use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz", + "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==", "dev": true, "requires": { "tslib": "^2.0.0" @@ -34782,7 +35450,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -34794,8 +35461,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utila": { "version": "0.4.0", @@ -34815,25 +35481,6 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, - "v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "dependencies": { - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - } - } - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -35043,9 +35690,9 @@ } }, "webpack-hot-middleware": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.4.tgz", - "integrity": "sha512-IRmTspuHM06aZh98OhBJtqLpeWFM8FXJS5UYpKYxCJzyFoyWj1w6VGFfomZU7OPA55dMLrQK0pRT1eQ3PACr4w==", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", + "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "dev": true, "requires": { "ansi-html-community": "0.0.8", @@ -35115,7 +35762,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -35148,7 +35794,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, "requires": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -35160,7 +35805,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -35182,39 +35826,53 @@ "dev": true }, "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "requires": { - "color-name": "~1.1.4" + "ansi-regex": "^6.0.1" } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true } } }, @@ -35292,12 +35950,6 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -35310,21 +35962,6 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", diff --git a/package.json b/package.json index 27e246a6..25fa73a9 100644 --- a/package.json +++ b/package.json @@ -32,14 +32,18 @@ }, "dependencies": { "@reduxjs/toolkit": "1.9.5", + "@storybook/test": "^8.0.0", "axios": "^1.6.2", "classnames": "^2.3.2", "focus-trap": "^7.5.4", "formik": "^2.4.5", + "leaflet": "^1.9.4", "normalize-scss": "7.0.1", "react": "18.2.0", "react-dom": "18.2.0", "react-input-mask": "^2.0.4", + "react-leaflet": "^4.2.1", + "react-loading-skeleton": "^3.4.0", "react-redux": "8.1.2", "react-router": "6.15.0", "react-router-dom": "6.15.0", @@ -59,14 +63,15 @@ "@storybook/react-webpack5": "^7.5.1", "@storybook/testing-library": "^0.2.2", "@svgr/webpack": "^8.1.0", - "@types/react": "18.2.20", + "@types/leaflet": "^1.9.8", + "@types/react": "^18.2.64", "@types/react-dom": "18.2.7", "@types/react-input-mask": "^3.0.5", "@types/react-router-dom": "5.3.3", "@typescript-eslint/eslint-plugin": "6.4.1", "@typescript-eslint/parser": "6.4.1", "babel-loader": "9.1.3", - "css-loader": "6.8.1", + "css-loader": "^6.8.1", "dotenv": "16.3.1", "eslint": "8.47.0", "eslint-config-prettier": "9.0.0", @@ -80,7 +85,7 @@ "sass": "1.66.1", "sass-loader": "13.3.2", "storybook": "^7.5.1", - "style-loader": "3.3.3", + "style-loader": "^3.3.3", "stylelint": "15.10.3", "stylelint-config-prettier-scss": "1.0.0", "stylelint-config-standard-scss": "10.0.0", diff --git a/src/app/App.tsx b/src/app/App.tsx index 89f712ad..4f28eeef 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -1,6 +1,7 @@ import { useEffect } from 'react' import { RouterProvider } from 'react-router-dom' +import { getCart } from '@/entities/CartEntity/model/slice/cartEntitySlice' import { loginActions } from '@/features/login/model/slice/loginSlice' import { $api } from '@/shared/api/api' import { tokenFromStorageGet } from '@/shared/libs/helpers/localStorageHandler' @@ -17,6 +18,8 @@ function App() { dispatch(loginActions.initAuth(token)) $api.addToken(token) } + + dispatch(getCart()) }, [dispatch]) return } diff --git a/src/app/providers/StoreProvider/config/StateSchema.ts b/src/app/providers/StoreProvider/config/StateSchema.ts index 1a5862f9..b9a47753 100644 --- a/src/app/providers/StoreProvider/config/StateSchema.ts +++ b/src/app/providers/StoreProvider/config/StateSchema.ts @@ -1,4 +1,4 @@ -import { CategorySchema } from '@/entities/Category/types/types' +import { CategoryId, CategorySlug, CategorySchema } from '@/entities/Category/types/types' import { SearchResultSchema } from '@/features/SearchProduct/types/types' import { LoginSchema } from '@/features/login/model/types/types' import { BrandSchema } from '@/widgets/BrandBlock/types/types' @@ -7,18 +7,45 @@ import { ShopNewsSchema } from '@/widgets/NewsBlock/model/types/types' import { StoreReviewsSchema } from '@/widgets/ReviewsBlock/model/types/types' import { IBlogPostsSchema } from '@/widgets/BlogBlock/model/types/types' import { CoreBaseFooterSchema } from '@/widgets/Footer/model/types/types' +import { IStoriesSchema } from '@/widgets/StoriesBlock/model/types/types' import { CoreBaseHeaderSchema } from '@/widgets/Header/model/types/types' +import { TProductSchema } from '@/pages/ProductPage/model/types/productTypes' +import { CategoryListSchema } from '@/widgets/CategoryGrid/model/types/types' +import { ICategoryProductsSchema } from '@/pages/ProductsPage/types/types' +import { IFeedbackSchema } from '@/pages/FeedbackPage/model/types/types' +import { ICategorySchema, IMainCategorySchema } from '@/widgets/CategoryList/types/types' +import { ICategoryFiltersSchema } from '@/components/Dropdown/types/types' +import type { IFeedbackFormSchema } from '@/widgets/FeedbackForm/model/scheme/feedbackFormSliceSchema' +import { ICartEntitySchema } from '@/entities/CartEntity/model/types/types' +import { IAboutUsSchema } from '@/pages/AboutUsPage/model/types/types' +import { ICartSchema } from '@/pages/CartPage/model/types' +import { IProductAmountStateSchema } from '@/features/CartEdit/model/types' export interface StateSchema { + aboutUs: IAboutUsSchema login: LoginSchema storeReviews: StoreReviewsSchema category: CategorySchema + categoryList: CategoryListSchema coreBaseFooter: CoreBaseFooterSchema coreBaseHeader: CoreBaseHeaderSchema brand: BrandSchema searchResult: SearchResultSchema shopNews: ShopNewsSchema + stories: IStoriesSchema blogPosts: IBlogPostsSchema + product: TProductSchema + categoryProduct: ICategoryProductsSchema + feedback: IFeedbackSchema + feedbackForm: IFeedbackFormSchema + categoryId: CategoryId + categorySlug: CategorySlug + categoryBranches: ICategorySchema + getCategories: IMainCategorySchema + cart: ICartSchema + cartEntity: ICartEntitySchema + categoryFilters: ICategoryFiltersSchema + productAmount: IProductAmountStateSchema } export interface ThunkExtraArg { diff --git a/src/app/providers/StoreProvider/config/store.ts b/src/app/providers/StoreProvider/config/store.ts index f73e04fd..f77005b7 100644 --- a/src/app/providers/StoreProvider/config/store.ts +++ b/src/app/providers/StoreProvider/config/store.ts @@ -1,5 +1,4 @@ import { configureStore, ReducersMapObject } from '@reduxjs/toolkit' - import { loginReducer } from '@/features/login/model/slice/loginSlice' import { $api } from '@/shared/api/api' import categorySlice from '@/entities/Category/slice/categorySlice' @@ -8,14 +7,29 @@ import searchProductSlice from '@/features/SearchProduct/slice/searchProductSlic import { storeReviewsReducer } from '@/widgets/ReviewsBlock/model/slice/reviewsSlice' import footerSlice from '@/widgets/Footer/model/slice/footerSlice' import { shopNewsReducer } from '@/widgets/NewsBlock/model/slice/shopNewsSlice' +import { storiesReducer } from '@/widgets/StoriesBlock/model/slice/storiesSlice' import { blogPostsReducer } from '@/widgets/BlogBlock/model/slice/blogPostsSlice' import headerSlice from '@/widgets/Header/model/slice/headerSlice' - import { StateSchema, ThunkExtraArg } from './StateSchema' +import { productSliceReducer } from '@/pages/ProductPage/model/slice/productSlice' +import categoryGridSlice from '@/widgets/CategoryGrid/model/slice/categoryGridSlice' +import { categoriesProductsReducer } from '@/pages/ProductsPage/slice/productsOfCategorySlice' +import { categoryIdSliceReducer } from '@/entities/Category/slice/categoryIdSlice' +import { categorySlugSliceReducer } from '@/entities/Category/slice/categorySlugSlice' +import { categoryBranchesReducer } from '@/widgets/CategoryList/slice/pageCategoryBranchesSlice' +import { getCategoriesReducer } from '@/widgets/CategoryList/slice/pageCategoriesSlice' +import { feedbackReducer } from '@/pages/FeedbackPage/model/slice/feedbackSlice' +import { categoryFiltersSliceReducer } from '@/components/Dropdown/slice/filtersSlice' +import { feedbackFormReducer } from '@/widgets/FeedbackForm/model/slice/feedbackFormSlice' +import { aboutUsReducer } from '@/pages/AboutUsPage/model/slice/aboutUsSlice' +import { cartReducer } from '@/pages/CartPage/model/slice' +import { cartEntityReducer } from '@/entities/CartEntity/model/slice/cartEntitySlice' +import { productAmountReducer } from '@/features/CartEdit/model/slice/productAmountSlice' export type RootState = StateSchema const rootReducer: ReducersMapObject = { + aboutUs: aboutUsReducer, login: loginReducer, category: categorySlice, coreBaseHeader: headerSlice, @@ -24,7 +38,21 @@ const rootReducer: ReducersMapObject = { searchResult: searchProductSlice, storeReviews: storeReviewsReducer, shopNews: shopNewsReducer, - blogPosts: blogPostsReducer + stories: storiesReducer, + blogPosts: blogPostsReducer, + product: productSliceReducer, + categoryProduct: categoriesProductsReducer, + categoryList: categoryGridSlice, + feedback: feedbackReducer, + feedbackForm: feedbackFormReducer, + categoryId: categoryIdSliceReducer, + categorySlug: categorySlugSliceReducer, + categoryBranches: categoryBranchesReducer, + getCategories: getCategoriesReducer, + cartEntity: cartEntityReducer, + cart: cartReducer, + categoryFilters: categoryFiltersSliceReducer, + productAmount: productAmountReducer } export function createReduxStore(initialState: RootState) { diff --git a/src/app/router/AppRouter/ui/AppRouter.tsx b/src/app/router/AppRouter/ui/AppRouter.tsx index 0ab51e64..753d9b41 100644 --- a/src/app/router/AppRouter/ui/AppRouter.tsx +++ b/src/app/router/AppRouter/ui/AppRouter.tsx @@ -1,16 +1,24 @@ import { createBrowserRouter } from 'react-router-dom' +import AboutUsPage from '@/pages/AboutUsPage/AboutUsPage' import BlogPage from '@/pages/BlogPage/BlogPage' import CartPage from '@/pages/CartPage/CartPage' import { CategoryPage } from '@/pages/CategoryPage/CategoryPage' import ComparePage from '@/pages/ComparePage/ComparePage' +import ContactsPage from '@/pages/ContactsPage/ContactsPage' +import DeliveryPage from '@/pages/DeliveryPage/DeliveryPage' import ErrorPage from '@/pages/ErrorPage/ErrorPage' -import FavoritesPage from '@/pages/FavoritesPage/FavoritesPage' +import { FavoritesPage } from '@/pages/FavoritesPage/FavoritesPage' +import { FeedbackPage } from '@/pages/FeedbackPage/FeedbackPage' +import FormReturnPage from '@/pages/FormReturnPage/FormReturnPage' +import HelpPage from '@/pages/HelpPage/HelpPage' import LoginPage from '@/pages/LoginPage/LoginPage' import MainPage from '@/pages/MainPage/MainPage' +import { ProductPage } from '@/pages/ProductPage/ProductPage' import { ProductsPage } from '@/pages/ProductsPage/ProductsPage' import RootPage from '@/pages/RootPage/RootPage' import SearchResultsPage from '@/pages/SearchResultsPage/SearchResultsPage' +import VouchersPage from '@/pages/VouchersPage/VouchersPage' import { Routes } from '@/shared/config/routerConfig/routes' export const AppRouter = createBrowserRouter([ @@ -23,43 +31,102 @@ export const AppRouter = createBrowserRouter([ path: '', element: }, + { + path: Routes.ABOUT, + element: + }, { path: Routes.BLOG, element: }, { - path: Routes.PRODUCTS_ID, - element: + path: Routes.BRANDS, + element: // временная заглушка нужна страница со всеми брендами }, - // Добавил как временную заглушку пока не будет страницы категории { path: Routes.CATEGORIES + '/all', element: }, { - path: Routes.CATEGORIES + '/:slug', - element: // временная заглушка нужна страница категорий + path: Routes.CART, + element: }, { - path: Routes.LOGIN, - element: + path: Routes.CATEGORIES + '/:slug', + element: // временная заглушка нужна страница категорий }, { path: Routes.COMPARE, element: }, + { + path: Routes.DELIVERY, + element: + }, { path: Routes.FAVORITES, element: }, { - path: Routes.CART, - element: + path: Routes.LOGIN, + element: + }, + { + path: Routes.NEWS, + element: // временная заглушка нужна страница с новостями + }, + { + path: Routes.PRIVACY, + element: // временная заглушка нужна страница с политикой безопасности + }, + { + path: Routes.PRODUCTS, + element: // временная заглушка нужна страница со всеми товарами категории или подкатегории + }, + { + path: Routes.PRODUCTS_ID, + element: + }, + { + path: Routes.REVIEWS, + element: }, { path: Routes.SEARCH, element: + }, + { + path: Routes.HELP, + element: + }, + { + path: Routes.STORE_REVIEWS, + element: // временная заглушка нужна страница с отзывами о магазине + }, + { + path: Routes.TERMS, + element: // временная заглушка нужна страница с условиями соглашения + }, + { + path: Routes.ADD_RETURN, + element: + }, + { + path: Routes.VOUCHERS, + element: + }, + { + path: Routes.PRODUCT + '/:slug', + element: + }, + { + path: Routes.CONTACTS, + element: } + /* { + path: Routes.CERTIFICATE, + element: + } */ ] } ]) diff --git a/src/assets/icons/ArrowRightNextPage.svg b/src/assets/icons/ArrowRightNextPage.svg new file mode 100644 index 00000000..fa887f48 --- /dev/null +++ b/src/assets/icons/ArrowRightNextPage.svg @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/IconArrowDown.svg b/src/assets/icons/IconArrowDown.svg new file mode 100644 index 00000000..508d687d --- /dev/null +++ b/src/assets/icons/IconArrowDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/IconArrowUp.svg b/src/assets/icons/IconArrowUp.svg new file mode 100644 index 00000000..5b568bd2 --- /dev/null +++ b/src/assets/icons/IconArrowUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/YMap.svg b/src/assets/icons/YMap.svg new file mode 100644 index 00000000..4f296179 --- /dev/null +++ b/src/assets/icons/YMap.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/iconCategory.svg b/src/assets/icons/iconCategory.svg new file mode 100644 index 00000000..9557b4b7 --- /dev/null +++ b/src/assets/icons/iconCategory.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/iconMenu.svg b/src/assets/icons/iconMenu.svg new file mode 100644 index 00000000..c1fc5fb6 --- /dev/null +++ b/src/assets/icons/iconMenu.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/iconSearch.svg b/src/assets/icons/iconSearch.svg new file mode 100644 index 00000000..ac0c10a9 --- /dev/null +++ b/src/assets/icons/iconSearch.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/banner/banner.png b/src/assets/images/banner/banner.png new file mode 100644 index 00000000..ec99b24c Binary files /dev/null and b/src/assets/images/banner/banner.png differ diff --git a/src/assets/images/cart/arrow-right.svg b/src/assets/images/cart/arrow-right.svg new file mode 100644 index 00000000..f667108e --- /dev/null +++ b/src/assets/images/cart/arrow-right.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/src/assets/images/sideBarMenu/IconArrowDown.svg b/src/assets/images/sideBarMenu/IconArrowDown.svg new file mode 100644 index 00000000..3025b2c5 --- /dev/null +++ b/src/assets/images/sideBarMenu/IconArrowDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/sideBarMenu/iconCategory.svg b/src/assets/images/sideBarMenu/iconCategory.svg new file mode 100644 index 00000000..e49cbebf --- /dev/null +++ b/src/assets/images/sideBarMenu/iconCategory.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/slider/info-slide.png b/src/assets/images/slider/info-slide.png new file mode 100644 index 00000000..5e630cc6 Binary files /dev/null and b/src/assets/images/slider/info-slide.png differ diff --git a/src/components/Arrows/Arrows.tsx b/src/components/Arrows/Arrows.tsx deleted file mode 100644 index 2afb104b..00000000 --- a/src/components/Arrows/Arrows.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { FC } from 'react' - -import IconArrow from '@/assets/icons/IconArrow' - -import styles from './arrow.module.scss' - -type Props = { - changeSlide: (number: number) => void - type: 'prev' | 'next' -} - -/** - * @param {string} type - Тип стрелки: левый или правый - * @param {function} changeSlide - функция, которая меняет слайды. - * В качестве аргумента принимает либо 1(перемотка вправо) либо (-1)(перемотка влево) - */ -const Arrows: FC = props => { - const { changeSlide, type } = props - const number = type === 'prev' ? -1 : 1 - - return ( - - ) -} - -export default Arrows diff --git a/src/components/Arrows/arrow.module.scss b/src/components/Arrows/arrow.module.scss deleted file mode 100644 index 38ccb956..00000000 --- a/src/components/Arrows/arrow.module.scss +++ /dev/null @@ -1,22 +0,0 @@ -@use '../../shared/styles/utils/mixins' as media; -@use '../../shared/styles/utils/variables' as color; - -.arrow__button { - width: 100%; - height: 100%; - transition: background 0.25s; - - @include media.respond-to('middle') { - display: none; - } -} - -.arrow__button:hover { - background: rgba(255 255 255 / 5%); -} - -.slider__swg { - width: 9px; - height: 16px; - color: color.$white; -} diff --git a/src/components/ArticleBlock/ArticleBlock.tsx b/src/components/ArticleBlock/ArticleBlock.tsx deleted file mode 100644 index 63a930f4..00000000 --- a/src/components/ArticleBlock/ArticleBlock.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import ArrowReadNext from '@/assets/icons/ArrowReadNext.svg' -import description from '@/assets/images/articleBlock/description.png' -import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' -import Link from '@/shared/ui/Link/Link' -import Paragraph from '@/shared/ui/Paragraph/Paragraph' - -import styles from './articleBlock.module.scss' - -function ArticleBlock() { - return ( -
-
- интерьер -
- Уникальный магазин техники и гаджетов - - На естественном языке сказать об одном и том же факте можно бесконечным числом способов. Можно - переставлять слова местами, заменять их на синонимы, склонять по падежам (если говорим о языке с - падежами) и тд. - - - Необходимость определять схожесть двух фраз возникла при решении одной небольшой практической - - -

Читать дальше

- - -
-
-
- ) -} - -export default ArticleBlock diff --git a/src/components/BlogCategories/blog-categories.module.scss b/src/components/BlogCategories/blog-categories.module.scss index 6e8ed1d3..47b03eb1 100644 --- a/src/components/BlogCategories/blog-categories.module.scss +++ b/src/components/BlogCategories/blog-categories.module.scss @@ -8,8 +8,6 @@ border-radius: 10px; background: #fff; - - &__items { margin-top: 25px; max-width: 280px; diff --git a/src/components/CardPreview/CardPreview.tsx b/src/components/CardPreview/CardPreview.tsx deleted file mode 100644 index e3c632d6..00000000 --- a/src/components/CardPreview/CardPreview.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { FC, lazy, useState, Suspense } from 'react' - -import { Button, ButtonSize, ButtonTheme } from '@/shared/ui/Button/Button' -import Modal from '@/shared/ui/Modal/Modal' -import Spinner from '@/shared/ui/Spinner/Spinner' - -import { CardPreviewFooter } from '../CardPreviewFooter/CardPreviewFooter' -import { CardPreviewHeader } from '../CardPreviewHeader/CardPreviewHeader' -import { ProductAvailability } from '../ProductAvailability/ProductAvailability' - -import styles from './CardPreview.module.scss' - -const LazyQuickPurchaseForm = lazy(() => import('@/features/QuickPurchase/index')) - -/** - * Компонент с контентом поп-апа товара. - */ -export const CardPreview: FC = () => { - const [isInCart, setIsInCart] = useState(false) - const [isLiked, setIsLiked] = useState(false) - const [isInCompared, setIsInCompared] = useState(false) - const [isModalOpen, setIsModalOpen] = useState(false) - const [isModalClosing, setIsModalClosing] = useState(false) - - const handleAddToCart = () => { - setIsInCart(!isInCart) - } - - const handleQuickPurchase = () => { - setIsModalOpen(true) - } - - const handleRedirect = () => { - // ... Перенаправить пользователя на страницу товара - } - - const handleLike = () => { - setIsLiked(!isLiked) - } - - const handleAddToCompared = () => { - setIsInCompared(!isInCompared) - } - - const changeModalState = () => { - setIsModalOpen(!isModalOpen) - } - - return ( - <> - {isModalOpen && ( - - }> - - - - )} -
- {/* @TODO: Добавить компонент для фотографии товара - https://github.com/Studio-Yandex-Practicum/maxboom_frontend/issues/41 */} - GPS-трекер -
- -
- - {/* @TODO: Завести shared/ui-компоненты под типографику - https://github.com/Studio-Yandex-Practicum/maxboom_frontend/issues/77 */} -

989 ₽

-

9999 или более: 989 ₽

-
- - -
-
- -
-
- - ) -} diff --git a/src/components/CatalogLink/CatalogLink.tsx b/src/components/CatalogLink/CatalogLink.tsx deleted file mode 100644 index b23546fd..00000000 --- a/src/components/CatalogLink/CatalogLink.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import classNames from 'classnames' -import { FC } from 'react' - -import Link, { TLinkProps } from '@/shared/ui/Link/Link' - -import styles from './catalogLink.module.scss' - -/** - * @param {string} className - нужно для изменения некоторых css- параметров - * @param to - путь для ссылки - * @param children дочерние компоненты - */ -const CatalogLink: FC = ({ className, to = '', children }) => { - const classes = classNames(styles['catalog-link'], className) - - return ( - - {children} - - ) -} - -export default CatalogLink diff --git a/src/components/CategoryList/CategoryList.tsx b/src/components/CategoryList/CategoryList.tsx deleted file mode 100644 index e8b78610..00000000 --- a/src/components/CategoryList/CategoryList.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { FC } from 'react' - -import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' -import Link from '@/shared/ui/Link/Link' - -import styles from './CategoryList.module.scss' - -/** - * Список категорий для страницы товаров. - * Фиксированная высота настраивается классом .category-list__items - */ -export const CategoryList: FC = () => { - return ( -
- - Категории - -
    -
  • - - FM-трансмиттеры (1) - -
  • -
  • - - GPS-трекеры (1) - -
  • -
  • - - SSD-накопители (1) - -
  • -
  • - - Автомобильные зарядные устройства (2) - -
  • -
  • - - Аккумуляторы для радиоуправляемых игрушек (13) - -
  • -
  • - - SSD-накопители (1) - -
  • -
-
- ) -} diff --git a/src/components/Dots/Dots.tsx b/src/components/Dots/Dots.tsx deleted file mode 100644 index f0ce5635..00000000 --- a/src/components/Dots/Dots.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { FC } from 'react' - -import styles from './dots.module.scss' - -export type Props = { - length: number - slideNumber: number - goToSlide: (number: number) => void -} - -/** - * Component Dots - * - * @param {number} length - число , соответсвующее количеству слайдов - * @param {number} sliderNumber - индех слайдера в массиве - * @param {function} goToSlide - переход на нужный слайд - */ -const Dots: FC = props => { - const { length, slideNumber, goToSlide } = props - - return ( -
-
    - {Array.from({ length: length }).map((item, index) => { - return ( -
  • goToSlide(index)} - className={`${styles.dots__item} ${slideNumber === index ? styles.dots__item_active : ''}`} - /> - ) - })} -
-
- ) -} - -export default Dots diff --git a/src/components/Dropdown/Dropdown.tsx b/src/components/Dropdown/Dropdown.tsx index 0728b969..1101be7b 100644 --- a/src/components/Dropdown/Dropdown.tsx +++ b/src/components/Dropdown/Dropdown.tsx @@ -1,9 +1,11 @@ import React, { ChangeEvent, useState } from 'react' +import type { TSortOptions } from '@/components/PageControls/PageControls' + import styles from './Dropdown.module.scss' interface DropdownProps extends React.HTMLProps { - items: (string | number)[] + items: TSortOptions[] defaultItem?: string onSelect: React.ChangeEventHandler } @@ -26,8 +28,8 @@ export const Dropdown: React.FC = ({ items, defaultItem, onSelect return ( diff --git a/src/components/Dropdown/selectors/selectors.tsx b/src/components/Dropdown/selectors/selectors.tsx new file mode 100644 index 00000000..26cdf7e0 --- /dev/null +++ b/src/components/Dropdown/selectors/selectors.tsx @@ -0,0 +1,5 @@ +import { RootState } from '@/app/providers/StoreProvider/config/store' + +export const selectFilterProducts = (state: RootState) => state.categoryFilters.filterProducts + +export const selectFilterQuantity = (state: RootState) => state.categoryFilters.productQuantityFilter diff --git a/src/components/Dropdown/slice/filtersSlice.tsx b/src/components/Dropdown/slice/filtersSlice.tsx new file mode 100644 index 00000000..688a2977 --- /dev/null +++ b/src/components/Dropdown/slice/filtersSlice.tsx @@ -0,0 +1,26 @@ +import { createSlice } from '@reduxjs/toolkit' + +import type { ICategoryFiltersSchema } from '@/components/Dropdown/types/types' +import { SORT_NAMES, SORT_VALUES } from '@/shared/constants/constants' + +const initialState: ICategoryFiltersSchema = { + filterProducts: { name: SORT_NAMES.NAMES_A_YA, value: SORT_VALUES.NAMES_A_YA }, + productQuantityFilter: { name: '15', value: '15' } +} + +const categoryFiltersSlice = createSlice({ + name: 'categoryFilters', + initialState, + reducers: { + setFilterProducts(state, action) { + state.filterProducts = action.payload + }, + setProductQuantityFilter(state, action) { + state.productQuantityFilter = action.payload + } + } +}) + +export const { reducer: categoryFiltersSliceReducer } = categoryFiltersSlice + +export const { setFilterProducts, setProductQuantityFilter } = categoryFiltersSlice.actions diff --git a/src/components/Dropdown/types/types.ts b/src/components/Dropdown/types/types.ts new file mode 100644 index 00000000..5126125c --- /dev/null +++ b/src/components/Dropdown/types/types.ts @@ -0,0 +1,9 @@ +export interface ICategoryFiltersSchema { + filterProducts: IFilterSchema + productQuantityFilter: IFilterSchema +} + +export type IFilterSchema = { + name: string + value: string +} diff --git a/src/components/HeaderAccount/HeaderAccount.tsx b/src/components/HeaderAccount/HeaderAccount.tsx deleted file mode 100644 index f07fc3eb..00000000 --- a/src/components/HeaderAccount/HeaderAccount.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { FC, lazy, useState, Suspense, useEffect } from 'react' -import { useSelector } from 'react-redux' - -import CartIcon from '@/assets/images/headerAccount/cart.svg' -import HeartIcon from '@/assets/images/headerAccount/heart.svg' -import PersonIcon from '@/assets/images/headerAccount/person.svg' -import PersonAuthIcon from '@/assets/images/headerAccount/person_auth.svg' -import ScalesIcon from '@/assets/images/headerAccount/scales.svg' -import { getUserAuthStatus } from '@/features/login/model/selectors/getUserAuthStatus' -import { logout } from '@/features/login/model/services/logout/logout' -import { loginActions } from '@/features/login/model/slice/loginSlice' -import { Routes } from '@/shared/config/routerConfig/routes' -import { useAppDispatch } from '@/shared/libs/hooks/store' -import Link from '@/shared/ui/Link/Link' -import Modal from '@/shared/ui/Modal/Modal' -import Spinner from '@/shared/ui/Spinner/Spinner' - -import styles from './headerAccount.module.scss' - -export type HeaderAccountProps = { - counter: number - total: string -} - -const LazyLoginForm = lazy(() => import('@/features/login/index')) - -/** - * @param {string} counter - счетчик количества товаров в корзине - * @param {string} total - полная стоимость - */ -const HeaderAccount: FC = ({ counter, total }) => { - const [isModalOpen, setIsModalOpen] = useState(false) - const [isModalClosing, setIsModalClosing] = useState(false) - - const dispatch = useAppDispatch() - const isAuth = useSelector(getUserAuthStatus) - - const handlePersonIconClick = () => { - setIsModalOpen(true) - } - - const changeModalState = () => { - setIsModalOpen(!isModalOpen) - dispatch(loginActions.errorReset()) - } - - const onLogout = () => { - dispatch(logout()) - } - - useEffect(() => { - if (isAuth && isModalOpen) { - setIsModalOpen(!isModalOpen) - } - }, [isModalOpen, isAuth]) - - return ( - <> - {isModalOpen && ( - - }> - - - - )} -
    -
  • - {isAuth ? ( - // Временная реализация - // TODO заменить на дропдаун на ховер в контекстном меню добавить пункт-кнопку для разлогина пока висит на иконке - - ) : ( - - )} -
  • - -
  • - - - -
  • -
  • - - - -
  • -
  • - - -
    -
    -

    Корзина

    -

    {counter}

    -
    -

    {total}

    -
    - -
  • -
- - ) -} - -export default HeaderAccount diff --git a/src/components/HeaderAccount/header-account.module.scss b/src/components/HeaderAccount/header-account.module.scss deleted file mode 100644 index edd72976..00000000 --- a/src/components/HeaderAccount/header-account.module.scss +++ /dev/null @@ -1,74 +0,0 @@ -@use '../../shared/styles/utils/variables' as color; - -.header { - &__cart { - height: 46px; - border: 1px solid color.$theme-secondary-color; - display: flex; - justify-content: center; - align-items: center; - border-radius: 5px; - box-sizing: border-box; - padding: 10px; - } - - &__cart:hover { - border: 1px solid #fff; - } - - &__cart-container { - display: flex; - flex-direction: column; - margin-left: 10px; - row-gap: 5px; - } - - &__cart-counter { - margin: 0; - padding: 0; - font-weight: 600; - font-size: 14px; - color: #aaa3f8; - } - - &__cart-image { - width: 20px; - height: 20px; - object-fit: cover; - } - - &__cart-total { - margin: 0; - padding: 0; - font-weight: 600; - font-size: 13px; - color: white; - } - - &__cart-total-text { - margin: 0; - padding: 0; - font-weight: 600; - font-size: 14px; - color: #aaa3f8; - } - - &__cart-wrapper { - display: flex; - column-gap: 5px; - margin-left: 129px; - } - - &__counter-container { - display: flex; - column-gap: 5px; - } - - &__line { - width: 2px; - height: 34px; - background: color.$theme-secondary-color; - margin-left: 10px; - margin-right: 10px; - } -} diff --git a/src/components/PageControls/PageControls.tsx b/src/components/PageControls/PageControls.tsx index 426f8179..df371bd6 100644 --- a/src/components/PageControls/PageControls.tsx +++ b/src/components/PageControls/PageControls.tsx @@ -8,13 +8,18 @@ import { ECardView } from '@/shared/model/types/common' import styles from './PageControls.module.scss' +export type TSortOptions = { + name: string + value?: string +} + type TPageControls = { cardView: string handleCardViewChange: (view: ECardView) => void handleItemsPerPageChange: ChangeEventHandler handleSortChange: ChangeEventHandler - itemPerPageOptions: number[] - sortOptions: string[] + itemPerPageOptions: TSortOptions[] + sortOptions: TSortOptions[] } /** diff --git a/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.module.scss b/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.module.scss new file mode 100644 index 00000000..ffc7909f --- /dev/null +++ b/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.module.scss @@ -0,0 +1,28 @@ +@use '../../../shared/styles/utils/variables' as var; + +.sk-page-controls { + width: 100%; + display: flex; + justify-content: space-between; + + &__dropdowns { + display: flex; + gap: 12px; + } + + &__dropdown { + width: 150px; + height: 36px; + } + + &__cards-controls { + display: flex; + gap: 10px; + } + + &__cards-control { + width: 36px; + height: 36px; + border-radius: 6px; + } +} diff --git a/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.stories.tsx b/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.stories.tsx new file mode 100644 index 00000000..236034bb --- /dev/null +++ b/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.stories.tsx @@ -0,0 +1,23 @@ +import { Meta, StoryObj } from '@storybook/react' +import { type FC } from 'react' + +import { PageControlsSkeletons } from '@/components/PageControls/PageControlsSkeletons/PageControlsSkeletons' + +const StorybookWrapper: FC = () => { + return ( +
+ +
+ ) +} + +const meta = { + title: 'shared/PageControlsSkeletons', + component: StorybookWrapper, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} diff --git a/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.tsx b/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.tsx new file mode 100644 index 00000000..e15eacb4 --- /dev/null +++ b/src/components/PageControls/PageControlsSkeletons/PageControlsSkeletons.tsx @@ -0,0 +1,21 @@ +import { type FC } from 'react' +import Skeleton from 'react-loading-skeleton' +import 'react-loading-skeleton/dist/skeleton.css' + +import styles from './PageControlsSkeletons.module.scss' + +export const PageControlsSkeletons: FC = () => { + return ( +
+
+ + +
+
    + + + +
+
+ ) +} diff --git a/src/components/PageDescription/PageDescription.tsx b/src/components/PageDescription/PageDescription.tsx index 00281992..f38c8dff 100644 --- a/src/components/PageDescription/PageDescription.tsx +++ b/src/components/PageDescription/PageDescription.tsx @@ -1,29 +1,44 @@ +import { type FC } from 'react' +import 'react-loading-skeleton/dist/skeleton.css' +import { useParams } from 'react-router-dom' + +import { getNoun } from '@/shared/libs/helpers/getNoun' +import Breadcrumbs from '@/shared/ui/Breadcrumbs/Breadcrumbs' import Heading from '@/shared/ui/Heading/Heading' -import Link from '@/shared/ui/Link/Link' -import Subheading from '@/shared/ui/Subheading/Subheading' import styles from './PageDescription.module.scss' +type Props = { + count: number + heading: string +} /** * Компонент заголовка страницы товаров. * Содержит информацию о текущей просматриваемой категории. - * Содержит "хлебные крошки" со ссылкой на главную страницу. + * @param {number} count - количество товаров в категории; + * @param {string} heading - наименование-заголовок; */ -export const PageDescription = () => { +export const PageDescription: FC = ({ count, heading }) => { + const { slug } = useParams() + + const links = [ + { heading: 'Главная', href: '/' }, + { heading: heading, href: '/categories/' + slug } + ] + return (
- GPS-трекеры{' '} - 1 товар -
-
- - - Главная - {' '} - / GPS-трекеры - + {heading}{' '} + {count >= 0 ? ( + + {count} {getNoun(count, 'товар', 'товара', 'товаров')} + + ) : ( + '' + )}
+
) } diff --git a/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.module.scss b/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.module.scss new file mode 100644 index 00000000..61a7cd45 --- /dev/null +++ b/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.module.scss @@ -0,0 +1,17 @@ +@use '../../../shared/styles/utils/variables' as var; + +.sk-content { + width: 330px; + height:30px +} + +.sk-content__description { + display: flex; + flex-direction: column; + align-self: flex-start; + gap: 10px; +} + +.sk-content__breadcrumbs { + height: 16px; +} diff --git a/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.stories.tsx b/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.stories.tsx new file mode 100644 index 00000000..ea2a2d68 --- /dev/null +++ b/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.stories.tsx @@ -0,0 +1,23 @@ +import { Meta, StoryObj } from '@storybook/react' +import { type FC } from 'react' + +import { PageDescriptionSkeleton } from '@/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton' + +const StorybookWrapper: FC = () => { + return ( +
+ +
+ ) +} + +const meta = { + title: 'shared/PageDescriptionSkeleton', + component: StorybookWrapper, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} diff --git a/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.tsx b/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.tsx new file mode 100644 index 00000000..9de55a5e --- /dev/null +++ b/src/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.tsx @@ -0,0 +1,15 @@ +import { type FC } from 'react' +import Skeleton from 'react-loading-skeleton' + +import styles from '@/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton.module.scss' + +export const PageDescriptionSkeleton: FC = () => { + return ( +
+
+ +
+ +
+ ) +} diff --git a/src/components/ProductAvailability/ProductAvailability.tsx b/src/components/ProductAvailability/ProductAvailability.tsx deleted file mode 100644 index 555b97c7..00000000 --- a/src/components/ProductAvailability/ProductAvailability.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { FC } from 'react' - -import styles from './ProductAvailability.module.scss' - -/** - * Компонент с версткой информации о наличии товара на складе и его артикулом. - */ -export const ProductAvailability: FC = () => { - return ( -
- - - На складе - - Код товара: 38024926 -
- ) -} diff --git a/src/components/ProductCard/ProductCard.tsx b/src/components/ProductCard/ProductCard.tsx deleted file mode 100644 index 1bb2995b..00000000 --- a/src/components/ProductCard/ProductCard.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import classnames from 'classnames' -import { FC, useState } from 'react' - -import { PRODUCT_PHOTOS } from '@/mockData/productsPageOptions' -import { ECardView } from '@/shared/model/types/common' -import Carousel from '@/shared/ui/Carousel/Carousel' - -import { ProductAvailability } from '../ProductAvailability/ProductAvailability' -import { WidgetButtonsFunctions } from '../WidgetButtonsFunctions/WidgetButtonsFunctions' -import { WidgetButtonsPurchase } from '../WidgetButtonsPurchase/WidgetButtonsPurchase' - -import styles from './ProductCard.module.scss' -import { getStylesForCurrentLayout } from './utils/utils' - -type TProductCard = { - layout: ECardView - onEyeClick: VoidFunction -} - -/** - * Компонент карточки товара в списке товаров. - * @param {string} layout - тип выбранной сетки отображения карточек товаров; - * @param {function} onEyeClick - функция для открытия поп-апа с подробной информацией о товаре; - */ -export const ProductCard: FC = ({ layout, onEyeClick }) => { - const [isInCart, setIsInCart] = useState(false) - const [isLiked, setIsLiked] = useState(false) - const [isInCompared, setIsInCompared] = useState(false) - - const handleAddToCart = () => { - setIsInCart(!isInCart) - } - - const handleLike = () => { - setIsLiked(!isLiked) - } - - const handleAddToCompared = () => { - setIsInCompared(!isInCompared) - } - - return ( -
- {layout === 'list' && ( -
- -
- )} -
-
- Хит -
- {layout === 'grid' && ( -
- -
- )} -
- -
-
- -

- GPS-трекер для отслеживания собак, детей, автомобилей с приложением на телефон. -

-
- 989 ₽ - {layout !== 'compact' && ( -
- -
- )} -
-
- {layout === 'list' && ( -

- GSM/GPS трекер-маяк GF-07 для отслеживания собак, детей, автомобилей с приложением на телефон. - Миниатюрный GPS трекер модели GF-07 предназначен для охраны вашего имущества и контроля за - местонахождением. -

- )} - {layout === 'compact' && ( -
- - -
- )} -
-
- ) -} diff --git a/src/components/Slider/Slider.tsx b/src/components/Slider/Slider.tsx deleted file mode 100644 index d4261345..00000000 --- a/src/components/Slider/Slider.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { FC, useState } from 'react' - -import { sliderData } from '@/mockData/sliderData' -import { media } from '@/shared/styles/utils/media' -import Link from '@/shared/ui/Link/Link' -import Img from '@/ui/img' - -import Arrows from '../Arrows/Arrows' -import Dots from '../Dots/Dots' - -import styles from './slider.module.scss' - -/** - * Component Slider - * - * @example - * - */ -const Slider: FC = () => { - const [slide, setSlide] = useState(0) - - const changeSlide = (direction: number = 1) => { - let slideNumber = 0 - - if (slide + direction < 0) { - slideNumber = sliderData.length - 1 - } else { - slideNumber = (slide + direction) % sliderData.length - } - - setSlide(slideNumber) - } - - const goToSlide = (numberOfSlide: number) => { - setSlide(numberOfSlide % sliderData.length) - } - - return ( -
-
-
- -
-
- {sliderData.map((item, index) => { - return ( -
- -
-

{item.title}

-

{item.subTitle}

-

{item.price}

-
- {item.alt} - -
- ) - })} -
-
- -
- -
-
- ) -} - -export default Slider diff --git a/src/components/Slider/slider.module.scss b/src/components/Slider/slider.module.scss deleted file mode 100644 index 851368c1..00000000 --- a/src/components/Slider/slider.module.scss +++ /dev/null @@ -1,101 +0,0 @@ -@use '../../shared/styles/utils/mixins' as media; -@use '../../shared/styles/utils/variables' as color; - -.container { - width: 960px; - max-width: 100%; - height: 370px; - margin: 0 auto; - padding: 0 10px; - - @include media.respond-to('middle') { - width: 653px; - height: 512px; - } -} - -.slider { - width: 100%; - height: 100%; - position: relative; - border-radius: 5px; - overflow: hidden; - - &__list { - width: 100%; - height: 100%; - display: flex; - position: absolute; - left: 0; - background-color: red; - transition: transform 0.5s ease-in-out; - } - - &__item { - flex: 1 0 100%; - position: relative; - background-color: color.$theme-secondary-color; - } -} - -.arrow__wrap_prev { - position: absolute; - top: 0; - left: 0; - width: 8.5%; - height: 100%; - z-index: 1; // Опустил с 10 на 1 чтобы не вылезали поверх всплывающих окон -} - -.arrow__wrap_next { - position: absolute; - top: 0; - right: 0; - width: 8.5%; - height: 100%; - z-index: 1; // Опустил с 10 на 1 чтобы не вылезали поверх всплывающих окон -} - -.item__link { - color: color.$white; - position: absolute; - width: 100%; - height: 100%; - - .item__content { - position: absolute; - left: 12%; - top: 33%; - - @include media.respond-to('middle') { - left: 39%; - top: 5%; - } - - .item__info { - font-size: 14px; - line-height: 1.3; - font-weight: 500; - opacity: 0.5; - margin-bottom: 12px; - } - - .item__title { - font-size: 20px; - line-height: 1.2; - font-weight: 500; - margin-bottom: 20px; - } - - .item__price { - display: inline-flex; - border-radius: 5px; - background: color.$white; - color: color.$body-color; - font-size: 25px; - line-height: 1.2; - font-weight: 500; - padding: 10px 15px; - } - } -} diff --git a/src/components/SliderBlock/SliderBlock.tsx b/src/components/SliderBlock/SliderBlock.tsx deleted file mode 100644 index b8e0c118..00000000 --- a/src/components/SliderBlock/SliderBlock.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import Slider from '../Slider/Slider' - -import styles from './slider-block.module.scss' - -/** - * Component SliderBlock - * Обертка для слайдера на главной странице. - * - * @example - * - */ -const SliderBlock = () => { - return ( -
- -
- ) -} - -export default SliderBlock diff --git a/src/components/SliderBlock/slider-block.module.scss b/src/components/SliderBlock/slider-block.module.scss deleted file mode 100644 index 35f66a6e..00000000 --- a/src/components/SliderBlock/slider-block.module.scss +++ /dev/null @@ -1,7 +0,0 @@ -@use '../../shared/styles/utils/variables' as color; - -.slider { - width: 100%; - background-color: color.$theme-primary-color; - padding: 30px 0 50px; -} diff --git a/src/components/WidgetButtonsPurchase/WidgetButtonsPurchase.module.scss b/src/components/WidgetButtonsPurchase/WidgetButtonsPurchase.module.scss deleted file mode 100644 index 9643a645..00000000 --- a/src/components/WidgetButtonsPurchase/WidgetButtonsPurchase.module.scss +++ /dev/null @@ -1,13 +0,0 @@ -.customButton { - display: flex; - align-items: center; - justify-content: center; - gap: 10px; - cursor: pointer; - transition: background-color 0.2s ease-in-out; - - svg { - width: 20px; - height: 20px; - } -} diff --git a/src/components/WrapperForMainContent/wrapper.module.scss b/src/components/WrapperForMainContent/wrapper.module.scss index 7c46dc23..3a68d41a 100644 --- a/src/components/WrapperForMainContent/wrapper.module.scss +++ b/src/components/WrapperForMainContent/wrapper.module.scss @@ -12,10 +12,11 @@ @include media.respond-to('middle') { max-width: 768px; - width: 100%; + width: 100%; } @include media.respond-to('small') { width: 390px; + gap: 20px; } } diff --git a/src/entities/AboutUs/index.ts b/src/entities/AboutUs/index.ts new file mode 100644 index 00000000..c3a76b41 --- /dev/null +++ b/src/entities/AboutUs/index.ts @@ -0,0 +1,2 @@ +import AboutUs from './ui/AboutUs' +export default AboutUs diff --git a/src/entities/AboutUs/model/types/types.ts b/src/entities/AboutUs/model/types/types.ts new file mode 100644 index 00000000..e651eeae --- /dev/null +++ b/src/entities/AboutUs/model/types/types.ts @@ -0,0 +1,3 @@ +export interface IAboutUs { + text?: string +} diff --git a/src/entities/AboutUs/ui/AboutUs.module.scss b/src/entities/AboutUs/ui/AboutUs.module.scss new file mode 100644 index 00000000..352c85a6 --- /dev/null +++ b/src/entities/AboutUs/ui/AboutUs.module.scss @@ -0,0 +1,8 @@ +@use '@/shared/styles/utils/variables' as var; + +.text { + line-height: 2; + font-size: 16px; + font-weight: 400; + color: var.$body-color; +} diff --git a/src/entities/AboutUs/ui/AboutUs.stories.tsx b/src/entities/AboutUs/ui/AboutUs.stories.tsx new file mode 100644 index 00000000..482257de --- /dev/null +++ b/src/entities/AboutUs/ui/AboutUs.stories.tsx @@ -0,0 +1,21 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import AboutUs from './AboutUs' + +const meta = { + title: 'entities/AboutUs', + component: AboutUs, + parameters: { + layout: 'centered' + }, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + text: 'Ваш магазин. Партнерская программа совершенно бесплатна и позволяет участникам получать дополнительный доход путём размещения ссылок как на весь наш магазин Ваш магазин, так и на отдельные товары. Каждая покупка, совершённая по партнерской ссылке, приносит агентскую комиссию. Стандартный размер комиссии составляет 5%.Ваш магазин. Партнерская программа совершенно бесплатна и позволяет участникам получать дополнительный доход путём размещения ссылок как на весь наш магазин Ваш магазин, так и на отдельные товары. Каждая покупка, совершённая по партнерской ссылке, приносит агентскую комиссию. Стандартный размер комиссии составляет 5%.Ваш магазин. Партнерская программа совершенно бесплатна и позволяет участникам получать дополнительный доход путём размещения ссылок как на весь наш магазин Ваш магазин, так и на отдельные товары. Каждая покупка, совершённая по партнерской ссылке, приносит агентскую комиссию. Стандартный размер комиссии составляет 5%.Ваш магазин. Партнерская программа совершенно бесплатна и позволяет участникам получать дополнительный доход путём размещения ссылок как на весь наш магазин Ваш магазин, так и на отдельные товары. Каждая покупка, совершённая по партнерской ссылке, приносит агентскую комиссию. Стандартный размер комиссии составляет 5%.Ваш магазин. Партнерская программа совершенно бесплатна и позволяет участникам получать дополнительный доход путём размещения ссылок как на весь наш магазин Ваш магазин, так и на отдельные товары. Каждая покупка, совершённая по партнерской ссылке, приносит агентскую комиссию. Стандартный размер комиссии составляет 5%.Ваш магазин. Партнерская программа совершенно бесплатна и позволяет участникам получать дополнительный доход путём размещения ссылок как на весь наш магазин Ваш магазин, так и на отдельные товары. Каждая покупка, совершённая по партнерской ссылке, приносит агентскую комиссию. Стандартный размер комиссии составляет 5%.Ваш магазин. Партнерская программа совершенно бесплатна и позволяет участникам получать дополнительный доход путём размещения ссылок как на весь наш магазин Ваш магазин, так и на отдельные товары. Каждая покупка, совершённая по партнерской ссылке, приносит агентскую комиссию. Стандартный размер комиссии составляет 5%.Ваш магазин. Партнерская программа совершенно бесплатна и позволяет участникам получать дополнительный доход путём размещения ссылок как на весь наш магазин Ваш магазин, так и на отдельные товары. Каждая покупка, совершённая по партнерской ссылке, приносит агентскую комиссию. Стандартный размер комиссии составляет 5%.' + } +} diff --git a/src/entities/AboutUs/ui/AboutUs.tsx b/src/entities/AboutUs/ui/AboutUs.tsx new file mode 100644 index 00000000..4e29673b --- /dev/null +++ b/src/entities/AboutUs/ui/AboutUs.tsx @@ -0,0 +1,18 @@ +import { FC } from 'react' + +import Paragraph from '@/shared/ui/Paragraph/Paragraph' + +import { IAboutUs } from '../model/types/types' + +import styles from './AboutUs.module.scss' + +/** + * Карточка из блока "О нас" + * @param {Props} text - текст + */ + +const AboutUs: FC = ({ text }) => { + return {text} +} + +export default AboutUs diff --git a/src/entities/AdvantageCard/ui/AdvantageCard/advantageCard.module.scss b/src/entities/AdvantageCard/ui/AdvantageCard/advantageCard.module.scss index 1507fe7a..59cdbbbd 100644 --- a/src/entities/AdvantageCard/ui/AdvantageCard/advantageCard.module.scss +++ b/src/entities/AdvantageCard/ui/AdvantageCard/advantageCard.module.scss @@ -2,45 +2,43 @@ @use '../../../../shared/styles/utils/variables' as var; .card { - display: flex; - width: 100%; - min-height: 1px; - padding-left: 10px; - padding-right: 10px; - padding-bottom: 20px; - + display: flex; + width: 100%; + min-height: 1px; + padding-left: 10px; + padding-right: 10px; + padding-bottom: 20px; } .link { - padding: 13px 20px; - background-color: var.$white; - text-decoration: none; - width: 100%; - border-radius: 10px; - height: 70px; - display: flex; - align-items: center; - justify-content: center; - color: var.$body-color; - transition: color 0.25s; - column-gap: 16px; - - @include media.respond-to('middle') { - justify-content: left; - } + padding: 13px 20px; + background-color: var.$white; + text-decoration: none; + width: 100%; + border-radius: 10px; + height: 70px; + display: flex; + align-items: center; + justify-content: center; + color: var.$body-color; + transition: color 0.25s; + column-gap: 16px; + @include media.respond-to('middle') { + justify-content: left; + } } .text { - padding: 0; - margin: 0; - font-size: 15px; - font-style: normal; - font-weight: 500; - line-height: 19.95px; + padding: 0; + margin: 0; + font-size: 15px; + font-style: normal; + font-weight: 500; + line-height: 19.95px; } .image { - height: 45px; - width: 45px; -} \ No newline at end of file + height: 45px; + width: 45px; +} diff --git a/src/entities/BannerCard/BannerCard.module.scss b/src/entities/BannerCard/BannerCard.module.scss new file mode 100644 index 00000000..39c2e737 --- /dev/null +++ b/src/entities/BannerCard/BannerCard.module.scss @@ -0,0 +1,77 @@ +@use '@/app/styles/index' as color; +@use '../../shared/styles/utils/mixins' as media; + +.storybook { + width: 1500px; + height: 400px; +} + +.slider { + flex: 1 0 100%; + position: relative; + background-color: color.$theme-secondary-color; +} + +.link { + color: color.$black; + position: absolute; + width: 100%; + height: 100%; + + .content { + position: absolute; + left: 12%; + top: 100px; + + @include media.respond-to('middle') { + left: 2%; + top: 40px; + } + @include media.respond-to('small') { + left: 3%; + top: 10px; + } + + .title { + margin-top: 5px; + font-size: 30px; + color: color.$black; + line-height: 37.5px; + + @include media.respond-to('middle') { + font-size: 15px; + line-height: 18px; + font-weight: 500; + } + @include media.respond-to('small') { + font-size: 13px; + line-height: 10px; + } + } + } +} + +.button { + border: 1px solid color.$body-color-light-grey; + column-gap: 15px; + background-color: inherit; + color: color.$black; + margin-top: 30px; + + path { + fill: color.$black; + } + + @include media.respond-to('middle') { + font-size: 15px; + width: 150px; + height: 30px; + margin-top: 10px; + } + @include media.respond-to('small') { + font-size: 13px; + width: 130px; + height: 20px; + margin-top: 10px; + } +} diff --git a/src/entities/BannerCard/BannerCard.stories.tsx b/src/entities/BannerCard/BannerCard.stories.tsx new file mode 100644 index 00000000..56782b4e --- /dev/null +++ b/src/entities/BannerCard/BannerCard.stories.tsx @@ -0,0 +1,48 @@ +import type { Meta, StoryObj } from '@storybook/react' +import { FC } from 'react' + +import img1 from '@/assets/images/banner/banner.png' + +import BannerCard, { TBannerCard } from './BannerCard' +import styles from './BannerCard.module.scss' + +const StorybookWrapper: FC = ({ id, alt, title, subtitle, href, urlImg, urlImg_m }) => { + return ( +
+ +
+ ) +} + +const meta = { + title: 'entities/BannerCard', + component: StorybookWrapper, + parameters: { + layout: 'centered' + }, + + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Normal: Story = { + args: { + id: 100, + urlImg: img1, + urlImg_m: img1, + alt: 'Mobil', + title: 'DJI OSMO', + subtitle: 'Mobile 4', + href: 'jelektronika/telefony-i-smart-chasy/umnye-chasy' + } +} diff --git a/src/entities/BannerCard/BannerCard.tsx b/src/entities/BannerCard/BannerCard.tsx new file mode 100644 index 00000000..f9b6f510 --- /dev/null +++ b/src/entities/BannerCard/BannerCard.tsx @@ -0,0 +1,56 @@ +import { FC } from 'react' + +import ArrowRightNextPage from '@/assets/icons/ArrowRightNextPage.svg' +import { media } from '@/shared/styles/utils/media' +import { Button, ButtonSize, ButtonTheme } from '@/shared/ui/Button/Button' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import Link from '@/shared/ui/Link/Link' +import Img from '@/ui/img' + +import styles from './BannerCard.module.scss' + +export type TBannerCard = { + id: number + urlImg: string + urlImg_m: string + alt: string + title: string + subtitle: string + href: string +} + +/** + * Entity SliderCard + * Карточка для SliderBlock на главной странице. + * @param {string} urlImg - изображение + * @param {string} urlImg_m - изображение + * @param {string} alt - название картинки, если картинка не подгрузится + * @param {string} title - название + * @param {string} subtitle - название + * @param {string} href - ссылка + */ + +const BannerCard: FC = ({ alt, title, subtitle, href, urlImg, urlImg_m }) => { + return ( +
+ +
+ + {title} + + + {subtitle} + + + +
+ {alt} + +
+ ) +} + +export default BannerCard diff --git a/src/entities/BlogCard/BlogCard.module.scss b/src/entities/BlogCard/BlogCard.module.scss index a6175bb4..a82f5d06 100644 --- a/src/entities/BlogCard/BlogCard.module.scss +++ b/src/entities/BlogCard/BlogCard.module.scss @@ -1,21 +1,20 @@ @use '@/app/styles/index' as var; .card { - max-width: 340px; - min-width: 340px; + width: 340px; position: relative; transition: transform 0.3s ease-in-out; display: flex; flex-direction: column; justify-content: space-between; - gap: 15px; + gap: 15px; &:hover { transform: scale(1.1, 1.05); - transition: transform 0.3s ease-in-out; + transition: transform 0.3s ease-in-out; } - .heading + .heading { font-size: #{'min(max(14px, 1.2vw), 16px)'}; } @@ -29,12 +28,12 @@ } .img { - height: 462px; - width: 100%; + height: 462px; + width: 100%; border-radius: 6px; transition: transform 0.3s ease-in-out; scroll-snap-align: start; object-fit: cover; } - -} \ No newline at end of file + +} diff --git a/src/entities/BrandCard/BrandCard.module.scss b/src/entities/BrandCard/BrandCard.module.scss index d7137d83..ee751c62 100644 --- a/src/entities/BrandCard/BrandCard.module.scss +++ b/src/entities/BrandCard/BrandCard.module.scss @@ -22,7 +22,6 @@ width: 100%; height: 148px; } - } .wrap { diff --git a/src/entities/CardReview/ui/CardReview/cardReview.module.scss b/src/entities/CardReview/ui/CardReview/cardReview.module.scss index 296f8a0a..6a7e5b50 100644 --- a/src/entities/CardReview/ui/CardReview/cardReview.module.scss +++ b/src/entities/CardReview/ui/CardReview/cardReview.module.scss @@ -1,87 +1,87 @@ @use '../../../../shared/styles/utils/variables' as color; .review { - display: flex; - flex-direction: column; - min-width: 340px; - align-items: flex-start; - justify-content: space-between; - padding: 35px 30px 40px 40px; - gap: 9px; - - .title { - display: flex; - align-items: center; - gap: 3px; - } + display: flex; + flex-direction: column; + min-width: 340px; + align-items: flex-start; + justify-content: space-between; + padding: 35px 30px 40px 40px; + gap: 9px; - p { - font-size: 0.9375rem; - font-weight: 400; - line-height: 1.7; - } + .title { + display: flex; + align-items: center; + gap: 3px; + } - &__header { - display: flex; - align-items: center; - line-height: 1.62; - gap: 11px; + p { + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.7; + } - h3 { - font-size: 1rem; - font-weight: 500; - } + &__header { + display: flex; + align-items: center; + line-height: 1.62; + gap: 11px; - span { - font-size: 0.875rem; - font-weight: 400; - display: flex; - align-items: center; - gap: 3px; - } + h3 { + font-size: 1rem; + font-weight: 500; } - &__initials { - width: 40px; - height: 40px; - border-radius: 50%; - background: color.$bg-gradient-green; - color: color.$white; - font-size: 1.125rem; - font-weight: 500; - line-height: 1.2; - display: flex; - align-items: center; - justify-content: center; + span { + font-size: 0.875rem; + font-weight: 400; + display: flex; + align-items: center; + gap: 3px; } + } + + &__initials { + width: 40px; + height: 40px; + border-radius: 50%; + background: color.$bg-gradient-green; + color: color.$white; + font-size: 1.125rem; + font-weight: 500; + line-height: 1.2; + display: flex; + align-items: center; + justify-content: center; + } - &__data { - font-weight: 400; - line-height: 1.7; + &__data { + font-weight: 400; + line-height: 1.7; - p { - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 5; - -webkit-box-orient: vertical; - text-overflow: clip; - } + p { + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 5; + -webkit-box-orient: vertical; + text-overflow: clip; + } - span { - font-size: 0.875rem; - opacity: 0.4; - } + span { + font-size: 0.875rem; + opacity: 0.4; } + } } .link__text { - font-size: 0.9375rem; - line-height: 1.7; - font-weight: 500; - text-decoration: none; - color: color.$link-color; + font-size: 0.9375rem; + line-height: 1.7; + font-weight: 500; + text-decoration: none; + color: color.$link-color; - &:hover { - opacity: 0.7; - } -} \ No newline at end of file + &:hover { + opacity: 0.7; + } +} diff --git a/src/entities/CartEntity/model/functions/cartHelper.ts b/src/entities/CartEntity/model/functions/cartHelper.ts new file mode 100644 index 00000000..5cc15680 --- /dev/null +++ b/src/entities/CartEntity/model/functions/cartHelper.ts @@ -0,0 +1,27 @@ +import type { ICartProduct } from '../types/types' + +/** + * Функция проверки наличия товара в корзине + * + * @param {string} slug Slug товара + * @param {ICartProduct[]} cartProducts Массив товаров в корзине + * @returns {boolean} true, если товар есть в корзине + */ +export const isInCartBySlug = (slug: string, cartProducts: ICartProduct[]): boolean => { + if (cartProducts.length === 0) return false + + return cartProducts.some(p => p.product.slug === slug) +} + +/** + * Функция проверки наличия товара в корзине + * + * @param {number} id Id товара + * @param {ICartProduct[]} cartProducts Массив товаров в корзине + * @returns {boolean} true, если товар есть в корзине + */ +export const isInCartById = (id: number, cartProducts: ICartProduct[]): boolean => { + if (cartProducts.length === 0) return false + + return cartProducts.some(p => p.product.id === id) +} diff --git a/src/entities/CartEntity/model/hooks/cartHooks.ts b/src/entities/CartEntity/model/hooks/cartHooks.ts new file mode 100644 index 00000000..c50c7a4a --- /dev/null +++ b/src/entities/CartEntity/model/hooks/cartHooks.ts @@ -0,0 +1,45 @@ +import { useEffect, useState } from 'react' +import { useNavigate } from 'react-router' + +import { Routes } from '@/shared/config/routerConfig/routes' +import { useAppDispatch } from '@/shared/libs/hooks/store' + +import { isInCartBySlug } from '../functions/cartHelper' +import { addToCart } from '../slice/cartEntitySlice' + +import { useCartSelector } from './sliceHooks' + +/** + * Hook для отслеживания есть ли товар в корзине + * + * @param {string} slug - slug продукта + * @param {number} id - id продукта + * @returns {object} - {isInCart, handleAddToCart} возвращает стейт isInCart со значением true/false и функцию добавления товара в текущую корзину + */ +export const useProductInCart = (slug: string, id: number) => { + const cart = useCartSelector() + const dispatch = useAppDispatch() + const navigate = useNavigate() + + const [isInCart, setIsInCart] = useState(false) + + useEffect(() => { + setIsInCart(isInCartBySlug(slug, cart.cart.products)) + }, [slug, cart.cart.products]) + + const addThisToCart = () => { + if (id) { + dispatch(addToCart({ product: id, cart: cart.cart.id, amount: 1 })) + } + } + + const handleAddToCart = () => { + if (!isInCart) { + addThisToCart() + } else { + navigate(Routes.CART) + } + } + + return { isInCart, handleAddToCart } +} diff --git a/src/entities/CartEntity/model/hooks/sliceHooks.ts b/src/entities/CartEntity/model/hooks/sliceHooks.ts new file mode 100644 index 00000000..86a80d67 --- /dev/null +++ b/src/entities/CartEntity/model/hooks/sliceHooks.ts @@ -0,0 +1,5 @@ +import { useSelector } from 'react-redux' + +import { StateSchema } from '@/app/providers/StoreProvider' + +export const useCartSelector = () => useSelector((store: StateSchema) => store.cartEntity) diff --git a/src/entities/CartEntity/model/slice/cartEntitySlice.ts b/src/entities/CartEntity/model/slice/cartEntitySlice.ts new file mode 100644 index 00000000..9dd574d4 --- /dev/null +++ b/src/entities/CartEntity/model/slice/cartEntitySlice.ts @@ -0,0 +1,79 @@ +import { createAsyncThunk, createSlice } from '@reduxjs/toolkit' + +import type { ThunkConfig } from '@/app/providers/StoreProvider/config/StateSchema' +import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' +import { rejectedPayloadHandle } from '@/shared/api/rejectedPayloadHandle' +import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' + +import type { IAddedProduct, ICartEntity, ICartEntitySchema } from '../types/types' + +export const getCart = createAsyncThunk>( + 'cart/getCart', + async (_, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + try { + const { data } = await extra.api.get(`api/${ApiRoutes.CART_LIST}/`) + return data + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) + +export const addToCart = createAsyncThunk>( + 'cart/addToCart', + async (addedProduct, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + try { + await extra.api.post(`api/${ApiRoutes.CART_LIST}/`, addedProduct) + + thunkAPI.dispatch(getCart()) + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) + +const initialState: ICartEntitySchema = { + isLoading: false, + error: null, + cart: { + id: 0, + products: [], + user: 0, + cart_full_price: 0 + } +} + +export const cartEntitySlice = createSlice({ + name: 'cart', + initialState, + reducers: {}, + extraReducers: builder => { + builder + .addCase(getCart.pending, state => { + state.isLoading = true + }) + .addCase(getCart.fulfilled, (state, { payload }) => { + state.isLoading = false + state.cart = payload + }) + .addCase(getCart.rejected, (state, { payload }) => { + state.isLoading = false + state.error = rejectedPayloadHandle(payload) + }), + builder + .addCase(addToCart.pending, state => { + state.isLoading = true + }) + .addCase(addToCart.fulfilled, state => { + state.isLoading = false + }) + .addCase(addToCart.rejected, (state, { payload }) => { + state.isLoading = false + state.error = rejectedPayloadHandle(payload) + }) + } +}) + +export const { actions: cartEntityActions, reducer: cartEntityReducer } = cartEntitySlice diff --git a/src/entities/CartEntity/model/types/types.ts b/src/entities/CartEntity/model/types/types.ts new file mode 100644 index 00000000..ebbcbce6 --- /dev/null +++ b/src/entities/CartEntity/model/types/types.ts @@ -0,0 +1,52 @@ +export interface ICartEntitySchema { + isLoading?: boolean + error?: string | string[] | null + cart: ICartEntity +} + +export interface ICartEntity { + id: number + products: ICartProduct[] + user: number + cart_full_price: number +} + +export interface ICartProduct { + name: string + image: 'string' + price: number + amount: number + full_price: number + product: TProduct +} + +export interface IAddedProduct { + product: number + cart: number + amount: number +} + +interface IObjectWithImage { + image: string + index?: number +} + +type TImgList = Array + +type TProduct = { + label_popular: boolean + label_hit: boolean + id: number + category: string + brand: string + price: number + name: string + slug: string + description: string + code: number + wb_urls: string + quantity: number + is_deleted: boolean + wholesale: number + images: TImgList +} diff --git a/src/entities/Category/selectors/categorySelectors.ts b/src/entities/Category/selectors/categorySelectors.ts index 05535e0b..66b7d092 100644 --- a/src/entities/Category/selectors/categorySelectors.ts +++ b/src/entities/Category/selectors/categorySelectors.ts @@ -2,3 +2,9 @@ import { RootState } from '@/app/providers/StoreProvider/config/store' export const selectCategories = (state: RootState) => state.category.categories export const selectDisplayedCategories = (state: RootState) => state.category.displayedCategories + +export const selectCategoryId = (state: RootState) => state.categoryId.categoryId + +export const selectCategorySlug = (state: RootState) => state.categorySlug.categorySlug + +export const getLoading = (state: RootState) => state.category.isLoading diff --git a/src/entities/Category/slice/categoryIdSlice.ts b/src/entities/Category/slice/categoryIdSlice.ts new file mode 100644 index 00000000..43096601 --- /dev/null +++ b/src/entities/Category/slice/categoryIdSlice.ts @@ -0,0 +1,21 @@ +import { createSlice } from '@reduxjs/toolkit' + +import type { CategoryId } from '../types/types' + +const initialState: CategoryId = { + categoryId: 0 +} + +const categoryIdSlice = createSlice({ + name: 'categoryId', + initialState, + reducers: { + setCategoryId(state, action) { + state.categoryId = action.payload + } + } +}) + +export const { reducer: categoryIdSliceReducer } = categoryIdSlice + +export const { setCategoryId } = categoryIdSlice.actions diff --git a/src/entities/Category/slice/categorySlice.ts b/src/entities/Category/slice/categorySlice.ts index fa71e0be..0df9227e 100644 --- a/src/entities/Category/slice/categorySlice.ts +++ b/src/entities/Category/slice/categorySlice.ts @@ -5,9 +5,10 @@ import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' import { rejectedPayloadHandle } from '@/shared/api/rejectedPayloadHandle' import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' -import { Category, CategorySchema } from '../types/types' +import type { Category, CategorySchema } from '../types/types' const initialState: CategorySchema = { + isLoading: false, categories: [], displayedCategories: [], error: undefined @@ -34,13 +35,16 @@ const categorySlice = createSlice({ extraReducers: builder => { builder .addCase(fetchCategories.pending, state => { + state.isLoading = true state.error = undefined }) .addCase(fetchCategories.fulfilled, (state, action) => { + state.isLoading = false state.categories = action.payload state.displayedCategories = action.payload.filter((c: Category) => c.is_visible_on_main === true) }) .addCase(fetchCategories.rejected, (state, { payload }) => { + state.isLoading = false state.error = rejectedPayloadHandle(payload) }) } diff --git a/src/entities/Category/slice/categorySlugSlice.ts b/src/entities/Category/slice/categorySlugSlice.ts new file mode 100644 index 00000000..9e50c5d7 --- /dev/null +++ b/src/entities/Category/slice/categorySlugSlice.ts @@ -0,0 +1,21 @@ +import { createSlice } from '@reduxjs/toolkit' + +import type { CategorySlug } from '../types/types' + +const initialState: CategorySlug = { + categorySlug: '' +} + +const categorySlugSlice = createSlice({ + name: 'categorySlug', + initialState, + reducers: { + setCategorySlug(state, action) { + state.categorySlug = action.payload + } + } +}) + +export const { reducer: categorySlugSliceReducer } = categorySlugSlice + +export const { setCategorySlug } = categorySlugSlice.actions diff --git a/src/entities/Category/types/types.ts b/src/entities/Category/types/types.ts index b46dc406..fd8605e2 100644 --- a/src/entities/Category/types/types.ts +++ b/src/entities/Category/types/types.ts @@ -1,4 +1,5 @@ export interface CategorySchema { + isLoading: boolean categories: Category[] displayedCategories: Category[] error?: string | string[] @@ -15,3 +16,11 @@ export interface Category { image?: string type?: 'category' } + +export interface CategoryId { + categoryId: number +} + +export interface CategorySlug { + categorySlug: string +} diff --git a/src/entities/ContactCard/contactCard.module.scss b/src/entities/ContactCard/contactCard.module.scss index 9520775b..62e8a2ea 100644 --- a/src/entities/ContactCard/contactCard.module.scss +++ b/src/entities/ContactCard/contactCard.module.scss @@ -19,4 +19,4 @@ width: 60px; height: 60px; margin-bottom: 12px; -} \ No newline at end of file +} diff --git a/src/entities/Favorite/model/functions/functions.ts b/src/entities/Favorite/model/functions/functions.ts new file mode 100644 index 00000000..825fac53 --- /dev/null +++ b/src/entities/Favorite/model/functions/functions.ts @@ -0,0 +1,75 @@ +import { FAVORITE_PRODUCTS_LIMIT } from '@/shared/constants/constants' +import { SESSION_STORAGE } from '@/shared/constants/sessionStorage' + +import type { TProduct } from '../types/types' + +/** + * Ф-я проверяет наличие продукта в массив избранных продуктов в session storage + * @param {TProduct} product продукт + * @return {boolean} true/false в зависимости от нахождения в избранном + */ +export const isInFavoriteProducts = (product: TProduct): boolean => { + const favoriteProductsStr = sessionStorage.getItem(SESSION_STORAGE.FAVORITE) || '[]' + const favoriteProducts: TProduct[] = JSON.parse(favoriteProductsStr) as TProduct[] + + if (product && product.slug && includesProduct(product, favoriteProducts)) { + return true + } + + return false +} + +/** + * Ф-я добавляет продукт в массив избранных продуктов в session storage + * @param {TProduct} product продукт + */ +export const addToFavoriteProducts = (product: TProduct): void => { + const favoriteProductsStr = sessionStorage.getItem(SESSION_STORAGE.FAVORITE) || '[]' + const favoriteProducts: TProduct[] = JSON.parse(favoriteProductsStr) as TProduct[] + + if (product && product.slug && !includesProduct(product, favoriteProducts)) { + if (favoriteProducts.length === FAVORITE_PRODUCTS_LIMIT) { + favoriteProducts.shift() + } + favoriteProducts.push(product) + + sessionStorage.setItem(SESSION_STORAGE.FAVORITE, JSON.stringify(favoriteProducts)) + window.dispatchEvent(new Event('storage')) + } +} + +/** + * Ф-я удаляет продукт из массива избранных продуктов в session storage, если он в нем есть + * @param {TProduct} product продукт + */ +export const removeFromFavoriteProducts = (product: TProduct): void => { + const favoriteProductsStr = sessionStorage.getItem(SESSION_STORAGE.FAVORITE) || '[]' + const favoriteProducts: TProduct[] = JSON.parse(favoriteProductsStr) as TProduct[] + + if (product && product.slug && includesProduct(product, favoriteProducts)) { + favoriteProducts.splice(indexOfProduct(product, favoriteProducts), 1) + + sessionStorage.setItem(SESSION_STORAGE.FAVORITE, JSON.stringify(favoriteProducts)) + window.dispatchEvent(new Event('storage')) + } +} + +function includesProduct(product: TProduct, favoriteProducts: TProduct[]): boolean { + return favoriteProducts.some(p => p.slug === product.slug) +} + +function indexOfProduct(product: TProduct, favoriteProducts: TProduct[]): number { + return favoriteProducts.findIndex(p => p.slug === product.slug) +} + +/** + * Функция возвращает список избранных товаров favoriteProducts из текущей сессии session storage. + * + * @return {TProduct[]} - массив продуктов в избранном + */ +export const getFavoriteProductsFromStorage = (): TProduct[] => { + const favoriteProductsStr = sessionStorage.getItem(SESSION_STORAGE.FAVORITE) || '[]' + const favoriteProducts: TProduct[] = JSON.parse(favoriteProductsStr) as TProduct[] + + return favoriteProducts +} diff --git a/src/entities/Favorite/model/hooks/useFavorite.ts b/src/entities/Favorite/model/hooks/useFavorite.ts new file mode 100644 index 00000000..a22fcbd4 --- /dev/null +++ b/src/entities/Favorite/model/hooks/useFavorite.ts @@ -0,0 +1,28 @@ +import { useEffect, useState } from 'react' + +import { getFavoriteProductsFromStorage } from '../functions/functions' +import type { TProduct } from '../types/types' + +/** + * Hook для получения продуктов из избранного + * + * @returns {TProduct[]} состояние favoriteProducts с массивом продуктов в избранном + */ +export const useFavorite = () => { + const [favoriteProducts, setFavoriteProducts] = useState([]) + + useEffect(() => { + setFavoriteProducts(getFavoriteProductsFromStorage()) + window.addEventListener('storage', handleStorage) + + return () => { + window.removeEventListener('storage', handleStorage) + } + }, []) + + const handleStorage = () => { + setFavoriteProducts(getFavoriteProductsFromStorage()) + } + + return favoriteProducts +} diff --git a/src/entities/Favorite/model/hooks/useWithFavorie.ts b/src/entities/Favorite/model/hooks/useWithFavorie.ts new file mode 100644 index 00000000..b0adafcc --- /dev/null +++ b/src/entities/Favorite/model/hooks/useWithFavorie.ts @@ -0,0 +1,34 @@ +import { useEffect, useState } from 'react' + +import { + addToFavoriteProducts, + isInFavoriteProducts, + removeFromFavoriteProducts +} from '../functions/functions' +import type { TProduct } from '../types/types' + +/** + * Hook для добавления/удаления, проверки наличия продукта в избранном + * + * @param {TProduct} product - продукт + * @returns {object} - состояние isLiked нахождения продукта в избранном и функцию handleLike для добавления/удаления в/из избранное + */ +export const useWithFavorite = (product: TProduct) => { + const [isLiked, setIsLiked] = useState(isInFavoriteProducts(product)) + + useEffect(() => { + setIsLiked(isInFavoriteProducts(product)) + }, [product]) + + const handleLike = () => { + if (!isLiked) { + addToFavoriteProducts(product) + setIsLiked(true) + } else { + removeFromFavoriteProducts(product) + setIsLiked(false) + } + } + + return { isLiked, handleLike } +} diff --git a/src/entities/Favorite/model/types/types.ts b/src/entities/Favorite/model/types/types.ts new file mode 100644 index 00000000..c8b1d290 --- /dev/null +++ b/src/entities/Favorite/model/types/types.ts @@ -0,0 +1,30 @@ +export interface IObjectWithImage { + image: string + index?: number +} + +export type TImgList = Array + +export type TProduct = { + label_popular: boolean + label_hit: boolean + id: number + category: string + brand: string + price: number + name: string + slug: string + description: string + code: number + wb_urls: string + quantity: number + is_deleted: boolean + wholesale: number + images: TImgList +} + +export type TProductSchema = { + product: TProduct + isLoading?: boolean + error?: string | string[] +} diff --git a/src/entities/FeedbackCard/FeedbackCard.module.scss b/src/entities/FeedbackCard/FeedbackCard.module.scss new file mode 100644 index 00000000..88d74b3f --- /dev/null +++ b/src/entities/FeedbackCard/FeedbackCard.module.scss @@ -0,0 +1,114 @@ +@use '../../shared/styles/utils/variables' as color; +@use '../../shared/styles/utils/mixins' as media; + +.feedbackcard { + width: 100%; + display: flex; + flex-direction: column; + min-width: 340px; + align-items: flex-start; + justify-content: space-between; + padding: 40px; + gap: 20px; + background-color: color.$white; + border-radius: 5px; + + &__header { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + + @include media.respond-to('large') { + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + gap: 5px; + } + } + + &__usercontainer { + width: 100%; + display: flex; + align-items: center; + justify-content: flex-start; + gap: 10px; + } + + &__initials { + width: 40px; + height: 40px; + border-radius: 50%; + background: color.$bg-gradient-green; + color: color.$white; + font-size: 1.125rem; + font-weight: 500; + line-height: 1.2; + display: flex; + align-items: center; + justify-content: center; + } + + &__scorewraper { + position: relative; + display: flex; + flex-direction: column; + gap: 5px; + } + + &__username { + font-size: 16px; + line-height: 1.2; + font-weight: 700; + } + + &__score { + font-size: 15px; + line-height: 1.2; + font-weight: 500; + color: color.$link-color; + display: flex; + gap: 5px; + cursor: pointer; + transition: opacity 0.4s; + + &:hover { + opacity: 0.7; + } + } + + &__score:hover + .feedbackcard__scorepopap { + opacity: 1; + } + + &__date { + font-size: 15px; + line-height: 1.2; + font-weight: 400; + + @include media.respond-to('large') { + margin-left: 50px; + } + + &_isanswer { + margin-left: 0; + } + } + + &__text { + font-size: 15px; + line-height: 1.7; + font-weight: 400; + } + + &__replay { + width: 100%; + padding: 30px; + display: flex; + flex-direction: column; + justify-items: center; + gap: 20px; + background-color: color.$body-bg; + border-radius: 5px; + } +} diff --git a/src/entities/FeedbackCard/FeedbackCard.stories.tsx b/src/entities/FeedbackCard/FeedbackCard.stories.tsx new file mode 100644 index 00000000..005cea97 --- /dev/null +++ b/src/entities/FeedbackCard/FeedbackCard.stories.tsx @@ -0,0 +1,36 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import { FeedbackCard } from './FeedbackCard' + +const meta = { + title: 'entities/FeedbackCard', + component: FeedbackCard, + parameters: { + layout: 'centered' + }, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + feedback: { + pk: 5, + text: 'Все отлично, только в заказе были 3 маркера, которые засохли и не писали . После спирта вроде пишут, но не так , как остальные) Все отлично, только в заказе были 3 маркера, которые засохли и не писали . После спирта вроде пишут, но не так , как остальные)', + pub_date: '2024-01-22T09:34:00.730333+03:00', + author_name: 'Алексей Владимирович', + author_email: 'av@gmail.com', + average_score: 5.0, + delivery_speed_score: 5, + quality_score: 5, + price_score: 5, + replay: { + text: 'Благодарим за отзыв!', + pub_date: '2024-03-17T17:42:26.577549+03:00', + name: 'Администратор' + } + } + } +} diff --git a/src/entities/FeedbackCard/FeedbackCard.tsx b/src/entities/FeedbackCard/FeedbackCard.tsx new file mode 100644 index 00000000..2ba44f03 --- /dev/null +++ b/src/entities/FeedbackCard/FeedbackCard.tsx @@ -0,0 +1,58 @@ +import { FC } from 'react' + +import IconStar from '@/assets/icons/IconStar' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import Paragraph from '@/shared/ui/Paragraph/Paragraph' +import Subheading from '@/shared/ui/Subheading/Subheading' + +import styles from './FeedbackCard.module.scss' +import { getFeedbackDate } from './model/functions/functions' +import { IFeedback } from './model/types/types' +import { ScorePopup } from './ui/ScorePopup/ScorePopup' + +interface IFeedbackCardProps { + feedback: IFeedback +} + +/** + * Компонент карточки отзыва + * @param feedback {IFeedback} данные отзыва + */ +export const FeedbackCard: FC = ({ feedback }) => { + const initials = feedback.author_name.slice(0, 1) + + return ( +
+
+
+
{initials}
+
+ + {feedback.author_name} + + + Оценил(а) магазин на {feedback.average_score} + + + +
+
+ {getFeedbackDate(feedback.pub_date)} +
+ {feedback.text} + {feedback.replay && ( +
+
+ + Ответ: {feedback.replay.name} + + + {getFeedbackDate(feedback.replay.pub_date)} + +
+ {feedback.replay.text} +
+ )} +
+ ) +} diff --git a/src/entities/FeedbackCard/model/functions/functions.ts b/src/entities/FeedbackCard/model/functions/functions.ts new file mode 100644 index 00000000..c846fa7c --- /dev/null +++ b/src/entities/FeedbackCard/model/functions/functions.ts @@ -0,0 +1,7 @@ +export const getFeedbackDate = (pubDate: string): string => { + const parsedDate = new Date(pubDate) + const year = parsedDate.getFullYear() + const month = parsedDate.getMonth() + 1 < 10 ? `0${parsedDate.getMonth() + 1}` : parsedDate.getMonth() + 1 + const day = parsedDate.getDate() < 10 ? `0${parsedDate.getDate()}` : parsedDate.getDate() + return `${day}.${month}.${year}` +} diff --git a/src/entities/FeedbackCard/model/types/types.ts b/src/entities/FeedbackCard/model/types/types.ts new file mode 100644 index 00000000..5ea31820 --- /dev/null +++ b/src/entities/FeedbackCard/model/types/types.ts @@ -0,0 +1,17 @@ +export interface IFeedback { + pk: number + text: string + pub_date: string + author_name: string + author_email: string + average_score: number + delivery_speed_score: number + quality_score: number + price_score: number + replay: IFeedbackReplay | null +} +export interface IFeedbackReplay { + text: string + pub_date: string + name: string +} diff --git a/src/entities/FeedbackCard/ui/ScorePopup/ScorePopup.module.scss b/src/entities/FeedbackCard/ui/ScorePopup/ScorePopup.module.scss new file mode 100644 index 00000000..481efb60 --- /dev/null +++ b/src/entities/FeedbackCard/ui/ScorePopup/ScorePopup.module.scss @@ -0,0 +1,33 @@ +@use '../../../../shared/styles/utils/variables' as color; + +.scorepopup { + opacity: 0; + width: 250px; + padding: 20px; + margin: 0; + position: absolute; + top: 50px; + left: 20px; + background-color: color.$white; + list-style: none; + border-radius: 5px; + box-shadow: 0 0 5px rgb(0 0 0 / 10%); + transition: opacity 0.5s; + + &__line { + margin: 0; + padding: 0; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 15px; + line-height: 1.2; + font-weight: 400; + } + + &__score { + display: flex; + gap: 5px; + align-items: center; + } +} diff --git a/src/entities/FeedbackCard/ui/ScorePopup/ScorePopup.tsx b/src/entities/FeedbackCard/ui/ScorePopup/ScorePopup.tsx new file mode 100644 index 00000000..b5542f7e --- /dev/null +++ b/src/entities/FeedbackCard/ui/ScorePopup/ScorePopup.tsx @@ -0,0 +1,46 @@ +import { FC } from 'react' + +import IconStar from '@/assets/icons/IconStar' +import Paragraph from '@/shared/ui/Paragraph/Paragraph' + +import { IFeedback } from '../../model/types/types' + +import styles from './ScorePopup.module.scss' + +interface IScorePopupProps { + feedback: IFeedback + className?: string +} + +/** + * Компонент всплывающего окна с подробными оценками отзыва + * @param feedback {IFeedback} данные отзыва + * @param className {string} внешние стили + */ +export const ScorePopup: FC = ({ feedback, className }) => { + return ( +
    +
  • + Скорость доставки + + {feedback.delivery_speed_score} + + +
  • +
  • + Цена + + {feedback.price_score} + + +
  • +
  • + Качество товара + + {feedback.quality_score} + + +
  • +
+ ) +} diff --git a/src/entities/HeaderAccount/HeaderAccount.tsx b/src/entities/HeaderAccount/HeaderAccount.tsx new file mode 100644 index 00000000..d09938cb --- /dev/null +++ b/src/entities/HeaderAccount/HeaderAccount.tsx @@ -0,0 +1,125 @@ +import { FC, lazy, useState, Suspense, useEffect } from 'react' +import { useSelector } from 'react-redux' + +import SearchIcon from '@/assets/icons/iconSearch.svg' +import { getUserAuthStatus } from '@/features/login/model/selectors/getUserAuthStatus' +import { logout } from '@/features/login/model/services/logout/logout' +import { loginActions } from '@/features/login/model/slice/loginSlice' +import { Routes } from '@/shared/config/routerConfig/routes' +import CartIcon from '@/shared/icons/cart.svg' +import HeartIcon from '@/shared/icons/heart.svg' +import PersonIcon from '@/shared/icons/person.svg' +import PersonAuthIcon from '@/shared/icons/person_auth.svg' +import ScalesIcon from '@/shared/icons/scales.svg' +import { useAppDispatch } from '@/shared/libs/hooks/store' +import { useResize } from '@/shared/libs/hooks/useResize' +import { Button } from '@/shared/ui/Button/Button' +import Link from '@/shared/ui/Link/Link' +import Modal from '@/shared/ui/Modal/Modal' +import Paragraph from '@/shared/ui/Paragraph/Paragraph' +import Spinner from '@/shared/ui/Spinner/Spinner' + +import styles from './headerAccount.module.scss' + +export type HeaderAccountProps = { + counter: number + total: string +} + +const LazyLoginForm = lazy(() => import('@/features/login/index')) + +/** + * @param {string} counter - счетчик количества товаров в корзине + * @param {string} total - полная стоимость + */ +const HeaderAccount: FC = ({ counter, total }) => { + const [isModalOpen, setIsModalOpen] = useState(false) + const [isModalClosing, setIsModalClosing] = useState(false) + + const { isScreenLg } = useResize() + + const dispatch = useAppDispatch() + const isAuth = useSelector(getUserAuthStatus) + + const handlePersonIconClick = () => { + setIsModalOpen(true) + } + + const changeModalState = () => { + setIsModalOpen(!isModalOpen) + dispatch(loginActions.errorReset()) + } + + const onLogout = () => { + dispatch(logout()) + } + + useEffect(() => { + if (isAuth && isModalOpen) { + setIsModalOpen(!isModalOpen) + } + }, [isModalOpen, isAuth]) + + return ( + <> + {isModalOpen && ( + + }> + + + + )} +
    + {!isScreenLg && } +
  • + {/* Временная реализация + TODO заменить на дропдаун на ховер в контекстном меню добавить пункт-кнопку для разлогина пока висит на иконке */} + +
  • + + {isScreenLg && ( +
  • + + + +
  • + )} + + {isScreenLg && ( +
  • + + + +
  • + )} + +
  • + + + {isScreenLg && ( +
    +
    + Корзина + {counter} +
    + {total} +
    + )} + +
  • +
+ + ) +} + +export default HeaderAccount diff --git a/src/components/HeaderAccount/headerAccount.module.scss b/src/entities/HeaderAccount/headerAccount.module.scss similarity index 53% rename from src/components/HeaderAccount/headerAccount.module.scss rename to src/entities/HeaderAccount/headerAccount.module.scss index cee6d75e..cc479828 100644 --- a/src/components/HeaderAccount/headerAccount.module.scss +++ b/src/entities/HeaderAccount/headerAccount.module.scss @@ -1,66 +1,81 @@ @use '../../shared/styles/utils/variables' as var; -.header { +.headerAccount { + grid-area: account; + display: flex; + align-items: center; + gap: 5px; + + &__mobile { + display: flex; + align-items: center; + gap: 24px; + } + + &__search { + cursor: pointer; + + &:active { + transform: scale(0.9); + } + } + &__cart { - height: 46px; - border: 1px solid var.$theme-secondary-color; display: flex; justify-content: center; align-items: center; + height: 46px; + border: 1px solid var.$theme-secondary-color; border-radius: 5px; - box-sizing: border-box; padding: 10px; + transition: border 0.25s; + + &:hover { + border: 1px solid var.$white; + } } - &__cart:hover { - border: 1px solid var.$white; + &__cartMobile { + display: flex; + justify-content: center; + align-items: center; + padding: 0; + cursor: pointer; + + &:active { + transform: scale(0.9); + } } - &__cart-container { + &__cartContainer { display: flex; flex-direction: column; margin-left: 10px; row-gap: 5px; } - &__cart-counter { - margin: 0; - padding: 0; - font-weight: 600; + &__cartCounter { + line-height: 14px; font-size: 14px; + font-weight: 600; color: var.$header-color; } - &__cart-image { - // width: 20px; - // height: 20px; - // object-fit: cover; - // поменял иконки из макета в итоге стили не нужны - } - - &__cart-total { - margin: 0; - padding: 0; - font-weight: 600; + &__cartTotal { + line-height: 13px; font-size: 13px; + font-weight: 600; color: var.$white; } - &__cart-total-text { - margin: 0; - padding: 0; + &__cartTotalText { + line-height: 13px; + font-size: 13px; font-weight: 600; - font-size: 14px; color: var.$header-color; } - &__cart-wrapper { - display: flex; - column-gap: 5px; - margin-left: 129px; - } - - &__counter-container { + &__counterContainer { display: flex; column-gap: 5px; } diff --git a/src/entities/HeroCard/HeroCard.module.scss b/src/entities/HeroCard/HeroCard.module.scss new file mode 100644 index 00000000..a3f4e640 --- /dev/null +++ b/src/entities/HeroCard/HeroCard.module.scss @@ -0,0 +1,59 @@ +@use '@/app/styles/index' as color; +@use '../../shared/styles/utils/mixins' as media; + +.storybook { + width: 2000px; + height: 700px; +} + +.slider { + display: flex; + flex: 1 0 100%; + position: relative; + background-color: color.$theme-secondary-color; + height: 100%; +} + +.link { + display: flex; + color: color.$white; + width: 100%; + height: 100%; + position: relative; + + + .content { + display: flex; + flex-direction: column; + justify-content: center; + width: 250px; + position: absolute; + left: 12%; + top: 100px; + + @include media.respond-to('small') { + top: 50px; + } + + .title { + margin-top: 12px; + margin-bottom: 20px; + color: color.$white; + } + + .price { + display: flex; + justify-content: center; + align-items: center; + border-radius: 5px; + background: color.$white; + color: color.$body-color; + font-size: 25px; + padding: 10px 15px; + width: 180px; + } + } +} + + + diff --git a/src/entities/HeroCard/HeroCard.stories.tsx b/src/entities/HeroCard/HeroCard.stories.tsx new file mode 100644 index 00000000..d8a9b8b6 --- /dev/null +++ b/src/entities/HeroCard/HeroCard.stories.tsx @@ -0,0 +1,49 @@ +import type { Meta, StoryObj } from '@storybook/react' +import { FC } from 'react' + +import img from '@/assets/images/slider/slide4-940x370.webp' +import img_m from '@/assets/images/slider/slide4-m-530x530.webp' + +import HeroCard, { THeroCardProps } from './HeroCard' +import styles from './HeroCard.module.scss' + +const StorybookWrapper: FC = ({ alt, title, subTitle, price, href, urlImg, urlImg_m }) => { + return ( +
+ +
+ ) +} + +const meta = { + title: 'entities/HeroCard', + component: StorybookWrapper, + parameters: { + layout: 'centered' + }, + + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Normal: Story = { + args: { + urlImg: img, + urlImg_m: img_m, + alt: 'Pacific blue', + title: 'Pacific blue', + subTitle: 'Iphone 12 Pro Max', + price: 'от 70000 Р', + href: 'jelektronika/telefony-i-smart-chasy/umnye-chasy' + } +} diff --git a/src/entities/HeroCard/HeroCard.tsx b/src/entities/HeroCard/HeroCard.tsx new file mode 100644 index 00000000..4a6573d0 --- /dev/null +++ b/src/entities/HeroCard/HeroCard.tsx @@ -0,0 +1,51 @@ +import { FC } from 'react' + +import { media } from '@/shared/styles/utils/media' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import Link from '@/shared/ui/Link/Link' +import Paragraph from '@/shared/ui/Paragraph/Paragraph' +import Subheading from '@/shared/ui/Subheading/Subheading' +import Img from '@/ui/img' + +import styles from './HeroCard.module.scss' + +export type THeroCardProps = { + urlImg: string + urlImg_m: string + alt: string + title: string + subTitle: string + price: string + href: string +} + +/** + * Entity SliderCard + * Карточка для SliderBlock на главной странице. + * @param {string} urlImg - изображение + * @param {string} urlImg_m - изображение + * @param {string} alt - название картинки, если картинка не подгрузится + * @param {string} title - название + * @param {string} subTitle - название + * @param {string} price - цена + * @param {string} href - ссылка + */ + +const HeroCard: FC = ({ alt, title, subTitle, price, href, urlImg, urlImg_m }) => { + return ( +
+ +
+ {title} + + {subTitle} + + {price} +
+ {alt} + +
+ ) +} + +export default HeroCard diff --git a/src/entities/HeroInfo/HeroInfo.module.scss b/src/entities/HeroInfo/HeroInfo.module.scss new file mode 100644 index 00000000..f84762f0 --- /dev/null +++ b/src/entities/HeroInfo/HeroInfo.module.scss @@ -0,0 +1,28 @@ +@use '@/app/styles/index' as color; +@use '../../shared/styles/utils/mixins' as media; + +.container { + display: flex; + flex-direction: column; + align-items: center; + row-gap: 20px; + width: 460px; + height: 370px; + background-color: color.$theme-secondary-color; + border-radius: 5px; + padding-top: 30px; + + @include media.respond-to('large') { + display: none; + } +} + +.title { + color: color.$white; +} + +.button { + border: 1px solid color.$subtitle-color; + column-gap: 15px; + background-color: inherit; +} diff --git a/src/entities/HeroInfo/HeroInfo.stories.tsx b/src/entities/HeroInfo/HeroInfo.stories.tsx new file mode 100644 index 00000000..46a76f29 --- /dev/null +++ b/src/entities/HeroInfo/HeroInfo.stories.tsx @@ -0,0 +1,19 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import HeroInfo from './HeroInfo' + +const meta = { + title: 'entities/HeroInfo', + component: HeroInfo, + parameters: { + layout: 'centered' + }, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: {} +} diff --git a/src/entities/HeroInfo/HeroInfo.tsx b/src/entities/HeroInfo/HeroInfo.tsx new file mode 100644 index 00000000..eb362d19 --- /dev/null +++ b/src/entities/HeroInfo/HeroInfo.tsx @@ -0,0 +1,34 @@ +import { FC } from 'react' + +import ArrowRightNextPage from '@/assets/icons/ArrowRightNextPage.svg' +import { Button, ButtonSize, ButtonTheme } from '@/shared/ui/Button/Button' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import Subheading from '@/shared/ui/Subheading/Subheading' + +import img from '../../assets/images/slider/info-slide.png' + +import styles from './HeroInfo.module.scss' + +/** + * Entity SliderInfo + * Карточка для SliderBlock на главной странице. + */ + +const HeroInfo: FC = () => { + function goTo() {} + return ( +
+ Квадрокоптер + + DJI Mini 2 Fly More Combo + + + товар +
+ ) +} + +export default HeroInfo diff --git a/src/entities/NewsCard/NewsCard.module.scss b/src/entities/NewsCard/NewsCard.module.scss index 52fad4c9..5539a193 100644 --- a/src/entities/NewsCard/NewsCard.module.scss +++ b/src/entities/NewsCard/NewsCard.module.scss @@ -1,23 +1,21 @@ @use '@/app/styles/index' as var; .card { - max-width: 340px; - min-width: 340px; + width: 340px; position: relative; transition: transform 0.3s ease-in-out; display: flex; flex-direction: column; justify-content: space-between; - gap: 15px; + gap: 15px; &:hover { transform: scale(1.1, 1.05); - transition: transform 0.3s ease-in-out; + transition: transform 0.3s ease-in-out; } - .heading - { - font-size: #{'min(max(14px, 1.2vw), 16px)'}; + .heading { + font-size: #{'min(max(14px, 1.2vw), 16px)'}; } &:hover .heading { @@ -41,13 +39,13 @@ line-height: 120%; font-weight: 500; } - + .img { - height: 180px; - width: 100%; + height: 180px; + width: 100%; border-radius: 6px; transition: transform 0.3s ease-in-out; scroll-snap-align: start; object-fit: cover; } -} \ No newline at end of file +} diff --git a/src/entities/Payments/Payments.tsx b/src/entities/Payments/Payments.tsx index a966e37d..7ffaf681 100644 --- a/src/entities/Payments/Payments.tsx +++ b/src/entities/Payments/Payments.tsx @@ -10,22 +10,19 @@ type TPayments = { type Logo = { image: string - title: string url: string } /** платежная система - * @param {string} image - путь к картинке - * @param {string} title - название - * @param {string} url - путь к сайту + * @param {url: string, image: string} data[] массив платежных систем */ const Payments: FC = ({ data }) => { return (
    {data.footer.additional_logos.map(logo => ( -
  • - - {logo.title} +
  • + + {logo.url}
  • ))} diff --git a/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.module.scss b/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.module.scss index 489891f7..8c10f0d4 100644 --- a/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.module.scss +++ b/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.module.scss @@ -1,59 +1,56 @@ @use '../../../../shared/styles/utils/variables' as var; @use '../../../../shared/styles/utils/mixins' as media; - - .description { - display: flex; - align-items: center; - padding: 10px; - background: var.$white; - border-radius: 10px; - height: 110px; - width: 80%; + display: flex; + align-items: center; + padding: 10px; + background: var.$white; + border-radius: 10px; + height: 110px; + width: 60%; } .frame { - width: 90px; - height: 90px; - display: flex; - align-items: center; - justify-content: center; - padding: 10px; - margin: 0 20px 0 0; - background: var.$white; - border-radius: 5px; - - @include media.respond-to('large') { - border: 1px solid var.$light-grey; - } + width: 90px; + height: 90px; + display: flex; + align-items: center; + justify-content: center; + padding: 10px; + margin: 0 20px 0 0; + background: var.$white; + border-radius: 5px; + + @include media.respond-to('large') { + border: 1px solid var.$light-grey; + } } .image { - display: flex; - max-height: 100%; - width: 70px; - height: 70px; - object-fit: cover; + display: flex; + max-height: 100%; + width: 70px; + height: 70px; + object-fit: cover; } .description_wrapper { - display: flex; - flex-direction: column; - max-height: 80px; + display: flex; + flex-direction: column; + max-height: 80px; } .name { - display: flex; - font-size: 15px; - line-height: 1.35; - font-weight: 700; - color: var.$body-color; - text-overflow: ellipsis; - overflow: hidden; - width: 250px; - - @include media.respond-to('large') { - width: 100%; - } -} \ No newline at end of file + display: flex; + font-size: 15px; + line-height: 1.35; + font-weight: 700; + color: var.$body-color; + text-overflow: ellipsis; + overflow: hidden; + + @include media.respond-to('large') { + width: 100%; + } +} diff --git a/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.stories.tsx b/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.stories.tsx index fedf7210..d981b87a 100644 --- a/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.stories.tsx +++ b/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.stories.tsx @@ -18,10 +18,19 @@ type Story = StoryObj export const Default: Story = { args: { - src: image1, - name: 'Переходник', - article: '1229239192', - price: 782, - currency: '₽' + id: 1, + category: 'техника', + brand: 'Tefal', + images: [ + { + image: image1 + } + ], + price: '1000', + name: 'Tefal Iron', + slug: '1hfjnfjkf', + description: 'Functional', + code: 108290, + wb_urls: 'jnfne' } } diff --git a/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.tsx b/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.tsx index 4532a1f0..59cdbb8d 100644 --- a/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.tsx +++ b/src/entities/ProductEntity/ui/ProductEntity/ProductEntity.tsx @@ -1,27 +1,29 @@ import { type FC } from 'react' -import { TProduct } from '@/mockData/productsData' +import { IProduct } from '@/shared/model/types/ProductModel' import Subheading from '@/shared/ui/Subheading/Subheading' import styles from './ProductEntity.module.scss' /** * Компонент служит для отображения товаров, пришедших с сервера. - * @param {string} src-картика с изображением продукта; + * @param {IImagesData[]} images-картика с изображением продукта; * @param {string} name- название продукта; - * @param {string} article -артикул продукта; + * @param {number} id -артикул продукта; * @param {number} price -стоимость продукта; * @param {string} currency - валюта, в которой обозначена стоимость; */ -export const ProductEntity: FC = product => { +export const ProductEntity: FC = product => { return (
    - {'product'} + {product.images.length > 0 && ( + {'product'} + )}
    - {product.article} + {product.id} {product.name}
    diff --git a/src/entities/SearchResult/SearchResult.tsx b/src/entities/SearchResult/SearchResult.tsx index f6a14a02..d01be9c8 100644 --- a/src/entities/SearchResult/SearchResult.tsx +++ b/src/entities/SearchResult/SearchResult.tsx @@ -1,9 +1,9 @@ import { forwardRef } from 'react' import SearchItem from '@/entities/SearchItem/SearchItem' -import { TCategory } from '@/models/CategoryModel' import { Routes } from '@/shared/config/routerConfig/routes' import { SEARCH_CATEGORY, SEARCH_PRODUCT } from '@/shared/constants/constants' +import { TCategory } from '@/shared/model/types/CategoryModel' import type { TProduct } from '@/shared/model/types/common' import Link from '@/shared/ui/Link/Link' diff --git a/src/entities/SideBarButton/index.tsx b/src/entities/SideBarButton/index.tsx new file mode 100644 index 00000000..a55ea03a --- /dev/null +++ b/src/entities/SideBarButton/index.tsx @@ -0,0 +1,2 @@ +import SideBarButton from './ui/SideBarButton' +export default SideBarButton diff --git a/src/entities/SideBarButton/ui/SideBarButton.module.scss b/src/entities/SideBarButton/ui/SideBarButton.module.scss new file mode 100644 index 00000000..b743ba5d --- /dev/null +++ b/src/entities/SideBarButton/ui/SideBarButton.module.scss @@ -0,0 +1,20 @@ +@use '@/shared/styles/utils/variables' as var; + +.sideBarButton { + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px; + width: fit-content; + background: var.$white; + font-size: 14px; + color: var.$body-color; + fill: var.$body-color; + padding: 5px 15px; + transition: 0.25s; +} + +.sideBarButton:hover { + color: var.$header-color; + fill: var.$header-color; +} diff --git a/src/entities/SideBarButton/ui/SideBarButton.stories.tsx b/src/entities/SideBarButton/ui/SideBarButton.stories.tsx new file mode 100644 index 00000000..08499064 --- /dev/null +++ b/src/entities/SideBarButton/ui/SideBarButton.stories.tsx @@ -0,0 +1,17 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import SideBarButton from './SideBarButton' + +const meta = { + title: 'entities/SideBarButton', + component: SideBarButton, + parameters: { + layout: 'centered' + }, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} diff --git a/src/entities/SideBarButton/ui/SideBarButton.tsx b/src/entities/SideBarButton/ui/SideBarButton.tsx new file mode 100644 index 00000000..d2010c11 --- /dev/null +++ b/src/entities/SideBarButton/ui/SideBarButton.tsx @@ -0,0 +1,31 @@ +import { FC } from 'react' + +import CategoryIcon from '@/assets/images/sideBarMenu/iconCategory.svg' +import { Button, ButtonDesign, ButtonSize } from '@/shared/ui/Button/Button' + +import styles from './SideBarButton.module.scss' + +interface ISideBarButton { + onClick: () => void +} + +/** + * Компонент кнопки "Меню" - для адаптива Side Bar Menu + * @param {function} onClick - функция клика для открытия модального окна SideBarMenuModal + */ + +const SideBarButton: FC = ({ onClick }) => { + return ( + + ) +} + +export default SideBarButton diff --git a/src/entities/StoryCard/StoryCard.module.scss b/src/entities/StoryCard/StoryCard.module.scss index 5cbcdd55..bbb60849 100644 --- a/src/entities/StoryCard/StoryCard.module.scss +++ b/src/entities/StoryCard/StoryCard.module.scss @@ -1,21 +1,28 @@ @use '@/app/styles/index' as var; + .card { + width: 160px; position: relative; transition: transform 0.3s ease-in-out; display: flex; flex-direction: column; justify-content: space-between; - gap: 15px; + gap: 15px; &:hover { transform: scale(1.1, 1.05); - transition: transform 0.3s ease-in-out; + transition: transform 0.3s ease-in-out; } - - img { + + + .img { + height: 240px; + width: 100%; border-radius: 6px; transition: transform 0.3s ease-in-out; scroll-snap-align: start; - } -} \ No newline at end of file + object-fit: cover; + } +} + diff --git a/src/entities/StoryCard/StoryCard.stories.tsx b/src/entities/StoryCard/StoryCard.stories.tsx index 7711456c..ae3933ce 100644 --- a/src/entities/StoryCard/StoryCard.stories.tsx +++ b/src/entities/StoryCard/StoryCard.stories.tsx @@ -18,10 +18,7 @@ type Story = StoryObj export const Default: Story = { args: { - card: { - id: 1, - src: Img1, - alt: 'Stock image' - } + pictures: [Img1], + link: 'https://gealit.ru/api/catalogue/3w-clinic--krem-dlya-glaz-s-ekstraktom-chernogo-zhemchuga-black-pearl-eye-cream-whitening-40-ml-410158271/' } } diff --git a/src/entities/StoryCard/StoryCard.tsx b/src/entities/StoryCard/StoryCard.tsx index 2c811b34..a6fcc5c5 100644 --- a/src/entities/StoryCard/StoryCard.tsx +++ b/src/entities/StoryCard/StoryCard.tsx @@ -1,23 +1,29 @@ import { FC } from 'react' -import { TCard } from '@/models/CardModel' +import NoImage from '@/assets/icons/image-not-found-icon.svg' import Link from '@/shared/ui/Link/Link' import styles from './StoryCard.module.scss' -export type Props = { - card: TCard +type TProps = { + link: string + pictures: string[] } /** * Карточка из блока группы историй - * @param {TCard} card - параметры карточки из группы историй + * @param {string} link - ссылка, которая будет, вероятно, вести на страницу истории + * @param {string[]} pictures - массив картинок, относящийся к одной story */ -const StoryCard: FC = ({ card }) => { +const StoryCard: FC = ({ link, pictures }) => { return ( - - {card.alt} + + {pictures[0] ? ( + {'новость'} + ) : ( + + )} ) } diff --git a/src/components/CardPreviewFooter/CardPreviewFooter.module.scss b/src/features/CardPreviewFooter/CardPreviewFooter.module.scss similarity index 100% rename from src/components/CardPreviewFooter/CardPreviewFooter.module.scss rename to src/features/CardPreviewFooter/CardPreviewFooter.module.scss diff --git a/src/components/CardPreviewFooter/CardPreviewFooter.tsx b/src/features/CardPreviewFooter/CardPreviewFooter.tsx similarity index 100% rename from src/components/CardPreviewFooter/CardPreviewFooter.tsx rename to src/features/CardPreviewFooter/CardPreviewFooter.tsx diff --git a/src/components/CardPreviewHeader/CardPreviewHeader.module.scss b/src/features/CardPreviewHeader/CardPreviewHeader.module.scss similarity index 100% rename from src/components/CardPreviewHeader/CardPreviewHeader.module.scss rename to src/features/CardPreviewHeader/CardPreviewHeader.module.scss diff --git a/src/components/CardPreviewHeader/CardPreviewHeader.tsx b/src/features/CardPreviewHeader/CardPreviewHeader.tsx similarity index 95% rename from src/components/CardPreviewHeader/CardPreviewHeader.tsx rename to src/features/CardPreviewHeader/CardPreviewHeader.tsx index 623e3e87..716351cc 100644 --- a/src/components/CardPreviewHeader/CardPreviewHeader.tsx +++ b/src/features/CardPreviewHeader/CardPreviewHeader.tsx @@ -8,6 +8,7 @@ import { Button, ButtonSize } from '@/shared/ui/Button/Button' import styles from './CardPreviewHeader.module.scss' interface TCardPreviewHeader { + brand: string isLiked: boolean isInCompared: boolean handleLike: VoidFunction @@ -26,7 +27,8 @@ export const CardPreviewHeader: FC = ({ isLiked, isInCompared, handleLike, - handleAddToCompared + handleAddToCompared, + brand }) => { return (
    @@ -51,7 +53,7 @@ export const CardPreviewHeader: FC = ({
    {/* @TODO: Завести shared/ui-компоненты под типографику https://github.com/Studio-Yandex-Practicum/maxboom_frontend/issues/77 */} -

    Maxboom

    +

    {brand}

    Производитель

    diff --git a/src/features/CartCouponApply/ui/CartCouponApply/CartCouponApply.module.scss b/src/features/CartCouponApply/ui/CartCouponApply/CartCouponApply.module.scss index df6c740d..c173372b 100644 --- a/src/features/CartCouponApply/ui/CartCouponApply/CartCouponApply.module.scss +++ b/src/features/CartCouponApply/ui/CartCouponApply/CartCouponApply.module.scss @@ -2,79 +2,78 @@ @use '../../../../shared/styles/utils/mixins' as media; .container { - display: flex; - flex-direction: column; - padding: 30px 40px; - background-color: var.$white; - width: 460px; - border-radius: 5px; + display: flex; + flex-direction: column; + padding: 30px 40px; + background-color: var.$white; + width: 460px; + border-radius: 5px; - @include media.respond-to('large') { - width: 100% - } + @include media.respond-to('large') { + width: 100%; + } } .wrapper { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 10px; + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 10px; } .title { - font-size: 18px; - line-height: 1.2; - font-weight: 600; + font-size: 18px; + line-height: 1.2; + font-weight: 600; } .button_change { - border: none; - padding: 0; - font-size: 14px; - color: var.$link-color; + border: none; + padding: 0; + font-size: 14px; + color: var.$link-color; - &:hover { - opacity: 0.8; - } + &:hover { + opacity: 0.8; + } } .link { - text-decoration: none; + text-decoration: none; } .form { - display: flex; - align-items: center; - justify-content: space-between; - border: 1px solid var.$light-grey; - border-radius: 5px; - padding: 3px 3px 3px 20px; + display: flex; + align-items: center; + justify-content: space-between; + border: 1px solid var.$light-grey; + border-radius: 5px; + padding: 3px 3px 3px 20px; - &:focus-within { - border: 1px solid var.$black; - } + &:focus-within { + border: 1px solid var.$black; + } } -.form>.input { - margin-left: 0; - - &::placeholder { - color: var.$body-color-light-grey; - } +.form > .input { + margin-left: 0; + &::placeholder { + color: var.$body-color-light-grey; + } } .button { - height: 36px; - padding: 5px 20px; - background: var.$light-grey; - color: var.$black; - font-size: 14px; - font-weight: 700; + height: 36px; + padding: 5px 20px; + background: var.$light-grey; + color: var.$black; + font-size: 14px; + font-weight: 700; - &:hover { - background-color: var.$theme-primary-color; - color: var.$white; - } -} \ No newline at end of file + &:hover { + background-color: var.$theme-primary-color; + color: var.$white; + } +} diff --git a/src/features/CartEdit/model/selectors.ts b/src/features/CartEdit/model/selectors.ts new file mode 100644 index 00000000..2963212e --- /dev/null +++ b/src/features/CartEdit/model/selectors.ts @@ -0,0 +1,9 @@ +import { StateSchema } from '@/app/providers/StoreProvider' + +export const putIncreaseProductAmountSelector = (state: StateSchema) => { + return state.productAmount.isIncreaseSuccessful +} + +export const getProductListSelector = (state: StateSchema) => { + return state.productAmount.productList +} diff --git a/src/features/CartEdit/model/services/putDecreaseProductAmount.ts b/src/features/CartEdit/model/services/putDecreaseProductAmount.ts new file mode 100644 index 00000000..513d95a5 --- /dev/null +++ b/src/features/CartEdit/model/services/putDecreaseProductAmount.ts @@ -0,0 +1,23 @@ +import { createAsyncThunk } from '@reduxjs/toolkit' + +import { ThunkConfig } from '@/app/providers/StoreProvider/config/StateSchema' +import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' +import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' +import { IProductCartList } from '@/shared/model/types/ProductCartListModel' + +export const putDecreaseProductAmount = createAsyncThunk>( + 'cart-decrease-product-amount', + async (productId, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + try { + const { data } = await extra.api.put( + `api/${ApiRoutes.DECREASE_PRODUCT_AMOUNT}`, + { product: productId }, + { withCredentials: true } + ) + return data + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) diff --git a/src/features/CartEdit/model/services/putIncreaseProductAmount.ts b/src/features/CartEdit/model/services/putIncreaseProductAmount.ts new file mode 100644 index 00000000..31f22575 --- /dev/null +++ b/src/features/CartEdit/model/services/putIncreaseProductAmount.ts @@ -0,0 +1,25 @@ +import { createAsyncThunk } from '@reduxjs/toolkit' + +import { ThunkConfig } from '@/app/providers/StoreProvider/config/StateSchema' +import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' +import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' +import { IProductCartList } from '@/shared/model/types/ProductCartListModel' + +export const putIncreaseProductAmount = createAsyncThunk>( + 'cart-increase-product-amount', + async (productId, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + try { + const { data } = await extra.api.put( + `api/${ApiRoutes.INCREASE_PRODUCT_AMOUNT}`, + { product: productId }, + { + withCredentials: true + } + ) + return data + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) diff --git a/src/features/CartEdit/model/slice/productAmountSlice.ts b/src/features/CartEdit/model/slice/productAmountSlice.ts new file mode 100644 index 00000000..62ff426b --- /dev/null +++ b/src/features/CartEdit/model/slice/productAmountSlice.ts @@ -0,0 +1,68 @@ +import { createSlice } from '@reduxjs/toolkit' + +import { rejectedPayloadHandle } from '@/shared/api/rejectedPayloadHandle' + +import { putDecreaseProductAmount } from '../services/putDecreaseProductAmount' +import { putIncreaseProductAmount } from '../services/putIncreaseProductAmount' +import { IProductAmountStateSchema } from '../types' + +const initialState: IProductAmountStateSchema = { + isIncreaseSuccessful: false, + productList: { + amount: 0, + product: { + id: 0, + category: 'string', + brand: 'string', + images: [], + price: '', + name: '', + slug: '', + description: '', + code: 2147483647, + wb_urls: '' + }, + full_price: 0, + full_weight: 0 + }, + isDecreaseSuccessful: false +} + +export const productAmountSlice = createSlice({ + name: 'cart/product/amount', + initialState, + reducers: { + setProductList: (state, { payload }) => { + state.productList = payload + } + }, + extraReducers: builder => { + builder + .addCase(putIncreaseProductAmount.pending, state => { + state.isIncreaseSuccessful = false + state.isDecreaseSuccessful = false + }) + .addCase(putIncreaseProductAmount.fulfilled, (state, { payload }) => { + state.isIncreaseSuccessful = true + state.productList = payload + }) + .addCase(putIncreaseProductAmount.rejected, (state, { payload }) => { + state.isIncreaseSuccessful = false + state.error = rejectedPayloadHandle(payload) + }) + + .addCase(putDecreaseProductAmount.pending, state => { + state.isDecreaseSuccessful = false + }) + .addCase(putDecreaseProductAmount.fulfilled, (state, { payload }) => { + state.isDecreaseSuccessful = true + state.productList = payload + }) + .addCase(putDecreaseProductAmount.rejected, (state, { payload }) => { + state.isDecreaseSuccessful = false + state.error = rejectedPayloadHandle(payload) + }) + } +}) + +export const { actions: productAmountActions, reducer: productAmountReducer } = productAmountSlice diff --git a/src/features/CartEdit/model/types.ts b/src/features/CartEdit/model/types.ts new file mode 100644 index 00000000..55789200 --- /dev/null +++ b/src/features/CartEdit/model/types.ts @@ -0,0 +1,8 @@ +import { IProductCartList } from '@/shared/model/types/ProductCartListModel' + +export interface IProductAmountStateSchema { + isIncreaseSuccessful: boolean + isDecreaseSuccessful: boolean + productList: IProductCartList + error?: string | string[] +} diff --git a/src/features/CartEdit/ui/CartEdit/CartEdit.module.scss b/src/features/CartEdit/ui/CartEdit/CartEdit.module.scss index 674bc603..0829ec83 100644 --- a/src/features/CartEdit/ui/CartEdit/CartEdit.module.scss +++ b/src/features/CartEdit/ui/CartEdit/CartEdit.module.scss @@ -2,170 +2,176 @@ @use '../../../../shared/styles/utils/mixins' as media; .container { - display: flex; - align-items: center; + display: flex; + align-items: center; + width: 100%; + min-width: 500px; + height: 140px; + background-color: var.$white; + border-radius: 10px; + padding: 20px; + position: relative; + + @include media.respond-to('large') { width: 100%; - min-width: 500px; - height: 140px; - background-color: var.$white; - border-radius: 10px; - padding: 20px; - position: relative; - - @include media.respond-to('large') { - width: 100%; - flex-direction: column; - height: 200px; - row-gap: 20px; - padding-right: 20px; - } + flex-direction: column; + height: 200px; + row-gap: 20px; + padding-right: 20px; + } } .product { - display: flex; - align-items: center; - width: 70%; + display: flex; + align-items: center; + width: 70%; - @include media.respond-to('large') { - width: 100%; - } + @include media.respond-to('large') { + width: 100%; + } } - .input { - display: flex; - font-size: 18px; - line-height: 28px; - font-weight: 500; - letter-spacing: 0.1px; - background: inherit; - height: 100%; - min-width: 20px; - max-width: 40px; - text-align: center; - appearance: none; - outline: none; - margin-left: 1px; - margin-right: 1px; + display: flex; + font-size: 18px; + line-height: 28px; + font-weight: 500; + letter-spacing: 0.1px; + background: inherit; + height: 100%; + min-width: 20px; + max-width: 40px; + text-align: center; + appearance: none; + outline: none; + margin-left: 1px; + margin-right: 1px; } .counter { - border: 1px solid var.$light-grey; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: space-between; - background-color: inherit; - padding: 4px; - height: 48px; - - @include media.respond-to('large') { - width: 100%; - } + border: 1px solid var.$light-grey; + border-radius: 4px; + display: flex; + align-items: center; + justify-content: space-between; + background-color: inherit; + padding: 4px; + height: 48px; + + @include media.respond-to('large') { + width: 100%; + } } .button { - border: none; - background: none; - padding: 0; - font-family: inherit; - display: flex; - align-items: center; - justify-content: center; - width: 20px; - height: 100%; - transition: background 0.25s; + border: none; + background: none; + padding: 0; + font-family: inherit; + display: flex; + align-items: center; + justify-content: center; + width: 50px; // bug поменяла 20 на 50 для того,чтобы svg отображался в storybook, при 20px в storybook svg сжимается сильно и пропадает, на сайте padding от + onClick={decreaseAmountHandler}> + + { - setQuantity(product.article, Number(e.target.value)) - }}> - + onClick={increaseAmountHandler}> + +
    • - +
    • -
    • - +
    diff --git a/src/components/CategoryList/CategoryList.module.scss b/src/features/CategoryItem/CategoryItem.module.scss similarity index 51% rename from src/components/CategoryList/CategoryList.module.scss rename to src/features/CategoryItem/CategoryItem.module.scss index 6dc06164..4dc8b649 100644 --- a/src/components/CategoryList/CategoryList.module.scss +++ b/src/features/CategoryItem/CategoryItem.module.scss @@ -1,24 +1,5 @@ @use '../../shared/styles/utils/variables' as var; -.category-list { - padding: 30px; - max-width: 330px; - max-height: calc(100vh - 300px); - background-color: var.$white; - border-radius: 10px; -} - -.category-list__title { - margin-bottom: 20px; -} - -/* @TODO: Настроить фиксированную высоту -https://github.com/Studio-Yandex-Practicum/maxboom_frontend/issues/61 */ -.category-list__items { - max-height: calc(100% - 50px); - overflow-y: auto; -} - .category-list__item { display: flex; align-items: center; diff --git a/src/features/CategoryItem/CategoryItem.stories.tsx b/src/features/CategoryItem/CategoryItem.stories.tsx new file mode 100644 index 00000000..52288288 --- /dev/null +++ b/src/features/CategoryItem/CategoryItem.stories.tsx @@ -0,0 +1,20 @@ +import { Meta, StoryObj } from '@storybook/react' + +import { CategoryItem } from '@/features/CategoryItem/CategoryItem' + +const meta = { + title: 'features/CategoryItem', + component: CategoryItem, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj +export const Default: Story = { + args: { + name: 'Тестовое имя категории', + slug: '/test', + count: 999, + id: 999 + } +} diff --git a/src/features/CategoryItem/CategoryItem.tsx b/src/features/CategoryItem/CategoryItem.tsx new file mode 100644 index 00000000..b853861c --- /dev/null +++ b/src/features/CategoryItem/CategoryItem.tsx @@ -0,0 +1,39 @@ +import type { FC } from 'react' +import { useDispatch } from 'react-redux' + +import { setCategoryId } from '@/entities/Category/slice/categoryIdSlice' +import { setCategorySlug } from '@/entities/Category/slice/categorySlugSlice' +import styles from '@/features/CategoryItem/CategoryItem.module.scss' +import { Routes } from '@/shared/config/routerConfig/routes' +import Link from '@/shared/ui/Link/Link' + +type Props = { + name: string + slug: string + count: number + id: number +} + +/** + * Компонент единицы категории в списке категорий бокового меню + * @param {string} name - название категории; + * @param {string} slug - URL для страницы категориии; + * @param {number} count - количество товаров в категории; + * @param {number} id - id категории; + */ +export const CategoryItem: FC = ({ name, slug, count, id }) => { + const dispatch = useDispatch() + return ( +
  • + { + dispatch(setCategoryId(id)) + dispatch(setCategorySlug(slug)) + }}> + {name} ({count}) + +
  • + ) +} diff --git a/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.module.scss b/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.module.scss new file mode 100644 index 00000000..eee44f42 --- /dev/null +++ b/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.module.scss @@ -0,0 +1,6 @@ +.sk-category-list__item { + display: flex; + min-height: 45px; + border-radius: 5px; + margin-bottom: 5px; +} diff --git a/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.stories.tsx b/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.stories.tsx new file mode 100644 index 00000000..a17a45df --- /dev/null +++ b/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.stories.tsx @@ -0,0 +1,23 @@ +import { Meta, StoryObj } from '@storybook/react' +import { type FC } from 'react' + +import { CategoryItemSkeleton } from '@/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton' + +const StorybookWrapper: FC = () => { + return ( +
    + +
    + ) +} + +const meta = { + title: 'features/CategoryItemSkeleton', + component: StorybookWrapper, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} diff --git a/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.tsx b/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.tsx new file mode 100644 index 00000000..f754ce2e --- /dev/null +++ b/src/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.tsx @@ -0,0 +1,8 @@ +import { type FC } from 'react' +import Skeleton from 'react-loading-skeleton' + +import styles from '@/features/CategoryItem/CategoryItemSkeleton/CategoryItemSkeleton.module.scss' + +export const CategoryItemSkeleton: FC = () => { + return +} diff --git a/src/features/Contacts/Contacts.tsx b/src/features/Contacts/Contacts.tsx index df35d504..a868c49c 100644 --- a/src/features/Contacts/Contacts.tsx +++ b/src/features/Contacts/Contacts.tsx @@ -34,7 +34,6 @@ const Contacts: FC = ({ messenger }) => { ))}
- + + )} + + ) +} diff --git a/src/components/ProductAvailability/ProductAvailability.module.scss b/src/features/ProductAvailability/ProductAvailability.module.scss similarity index 76% rename from src/components/ProductAvailability/ProductAvailability.module.scss rename to src/features/ProductAvailability/ProductAvailability.module.scss index 40f34298..d251ec08 100644 --- a/src/components/ProductAvailability/ProductAvailability.module.scss +++ b/src/features/ProductAvailability/ProductAvailability.module.scss @@ -12,14 +12,21 @@ font-size: 12px; } -.product-card__status-dot { +.product-card_status{ display: block; width: 6px; height: 6px; border-radius: 50%; +} + +.product-card_status_in-stock { background-color: var.$product-avaliability-status; } +.product-card_status_zero { + background-color: var.$promo-color; +} + .product-card__code { font-size: 11px; color: var.$body-color-light-grey; diff --git a/src/features/ProductAvailability/ProductAvailability.tsx b/src/features/ProductAvailability/ProductAvailability.tsx new file mode 100644 index 00000000..3b359a38 --- /dev/null +++ b/src/features/ProductAvailability/ProductAvailability.tsx @@ -0,0 +1,31 @@ +import { FC } from 'react' + +import styles from './ProductAvailability.module.scss' + +/** + * Компонент с версткой информации о наличии товара на складе и его артикулом. + */ +type Props = { + code: number + quantity: number +} +export const ProductAvailability: FC = ({ code, quantity }) => { + return ( +
+ + {quantity > 0 ? ( + <> + + На складе + + ) : ( + <> + + Нет на складе + + )} + + Код товара: {code} +
+ ) +} diff --git a/src/features/ProductImgCarousel/ProductImgCarousel.module.scss b/src/features/ProductImgCarousel/ProductImgCarousel.module.scss new file mode 100644 index 00000000..064e3ce8 --- /dev/null +++ b/src/features/ProductImgCarousel/ProductImgCarousel.module.scss @@ -0,0 +1,38 @@ +@use '@/shared/styles/utils/variables' as var; +@use '@/shared/styles/utils/mixins' as media; + +.wrapper { + height: 670px; + display: flex; + background-color: var.$white; + + @include media.respond-to('large') { + flex-direction: column-reverse; + align-items: center; + } + + .carouselwrapper { + width: 500px; + height: 100%; + + @include media.respond-to('middle') { + width: 300px; + } + + .maincontainer { + width: 100%; + height: 100%; + background-color: var.$white; + display: flex; + flex-direction: row; + align-items: center; + border-top: 2px solid var.$bg-subscribe; + border-bottom: 2px solid var.$bg-subscribe; + + @include media.respond-to('large') { + border-top: none; + border-bottom: none; + } + } + } +} diff --git a/src/features/ProductImgCarousel/ProductImgCarousel.stories.tsx b/src/features/ProductImgCarousel/ProductImgCarousel.stories.tsx new file mode 100644 index 00000000..7fa44d97 --- /dev/null +++ b/src/features/ProductImgCarousel/ProductImgCarousel.stories.tsx @@ -0,0 +1,53 @@ +import { Meta, StoryObj } from '@storybook/react' + +import { ProductImgCarousel } from './ProductImgCarousel' + +export default { component: ProductImgCarousel } + +const Metadata = { + title: 'features/ProductImgCarousel', + component: ProductImgCarousel, + parameters: { + product: 'данные о товаре' + } +} as Meta + +type Story = StoryObj + +export const Default: Story = { + args: { + imgList: [ + { + image: 'https://ir.ozone.ru/s3/multimedia-b/wc1000/6661991531.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-9/wc1000/6661991493.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-j/wc1000/6661991575.jpg' + }, + { + image: + 'https://maxboom.ru/image/cachewebp/catalog/vol862/part86256/86256350/images/big/1-1000x1000.webp' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-y/wc1000/6661991482.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-v/wc1000/6661991551.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-1-x/wc1000/6928616361.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-n/wc1000/6767151887.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-d/wc1000/6767151877.jpg' + } + ], + setShowPopup: () => { + alert('Должен всплывать попап') + } + } +} diff --git a/src/features/ProductImgCarousel/ProductImgCarousel.tsx b/src/features/ProductImgCarousel/ProductImgCarousel.tsx new file mode 100644 index 00000000..541b8102 --- /dev/null +++ b/src/features/ProductImgCarousel/ProductImgCarousel.tsx @@ -0,0 +1,26 @@ +import { useState, type FC } from 'react' + +import { TProductImgCarouselProps } from './model/types/productImgCarouselType' +import styles from './ProductImgCarousel.module.scss' +import { ImgCarousel } from './ui/ImgCarousel/ImgCarousel' +import { PreviewCarousel } from './ui/PreviewCarousel/PreviewCarousel' + +/** + * Компонент переключения фотографий товара на странице товара + * @param imgList (TImgList) - список фотографий товаров + * @param setShowPopup (f(boolean)) - функция управления видимостью попапа + */ +export const ProductImgCarousel: FC = ({ imgList, setShowPopup }) => { + const [curImg, setCurImg] = useState(0) + + return ( +
+ +
+
+ {} +
+
+
+ ) +} diff --git a/src/features/ProductImgCarousel/model/constants/constants.ts b/src/features/ProductImgCarousel/model/constants/constants.ts new file mode 100644 index 00000000..3ce509e4 --- /dev/null +++ b/src/features/ProductImgCarousel/model/constants/constants.ts @@ -0,0 +1,22 @@ +import { TImgSizes } from '../types/productImgCarouselType' + +export const IMG_SIZE_PAGE: TImgSizes = { + Xl: { + width: 500, + height: 500 + }, + Md: { + width: 300, + height: 300 + } +} +export const IMG_SIZE_POPUP: TImgSizes = { + Xl: { + width: 720, + height: 720 + }, + Md: { + width: 470, + height: 470 + } +} diff --git a/src/features/ProductImgCarousel/model/functions/functions.ts b/src/features/ProductImgCarousel/model/functions/functions.ts new file mode 100644 index 00000000..fdea98d2 --- /dev/null +++ b/src/features/ProductImgCarousel/model/functions/functions.ts @@ -0,0 +1,29 @@ +import { TImgList } from '../types/productImgCarouselType' + +/** + * Функция получения массива первью товара из массива фотографий товара. + * @param imgList: TImgList - список изображений + * @param maxCount: number - количесвто вырезаемых элементов + * @param lastElement: number - значение индекса до которого вырезаются элементы + */ +export const slicedImgList = (imgList: TImgList, maxCount: number, lastElement: number): TImgList => { + if (imgList.length > maxCount) { + let end = maxCount + let start = 0 + if (lastElement > maxCount - 1) { + end = lastElement + 1 + start = lastElement - (maxCount - 1) + } + return imgList.slice(start, end) + } + return imgList.slice(0) +} + +/** + * Функция получения индекса текущей выбранной отображаемой превьюшки из индекса выбранной фотографии товара + * @param maxCount: number - количесвто элементов на экране + * @param lastElement: number - значение индекса элемента + */ +export const getDisplayedIndex = (maxCount: number, lastElement: number): number => { + return lastElement > maxCount - 1 ? maxCount - 1 : lastElement +} diff --git a/src/features/ProductImgCarousel/model/types/productImgCarouselType.ts b/src/features/ProductImgCarousel/model/types/productImgCarouselType.ts new file mode 100644 index 00000000..f55451fd --- /dev/null +++ b/src/features/ProductImgCarousel/model/types/productImgCarouselType.ts @@ -0,0 +1,47 @@ +import { Dispatch, SetStateAction } from 'react' + +export type TBoxProps = { + children: React.ReactNode +} + +interface IObjectWithImage { + image: string + index?: number +} + +export type TImgList = Array + +export type TImgCarouselProps = { + imgList: TImgList + isPopup: boolean + setShowPopup: Dispatch> + curImg: number +} + +export type TProductImgCarouselProps = { + imgList: TImgList + setShowPopup: Dispatch> +} + +export type TImgSize = { + width: number + height: number +} + +export type TImgSizes = { + Xl: TImgSize + Md: TImgSize +} + +export type TPreviewCarouselProps = { + imgList: TImgList + curImg: number + setCurImg: Dispatch> +} + +export type TDisplayedImgList = { + displayedIndex: number + displayedImages: TImgList +} + +export type TchangeImgArgs = 'next' | 'prev' | 'current' diff --git a/src/features/ProductImgCarousel/ui/ImgCarousel/ImgCarousel.module.scss b/src/features/ProductImgCarousel/ui/ImgCarousel/ImgCarousel.module.scss new file mode 100644 index 00000000..a514f26e --- /dev/null +++ b/src/features/ProductImgCarousel/ui/ImgCarousel/ImgCarousel.module.scss @@ -0,0 +1,31 @@ +@use '@/shared/styles/utils/variables' as var; +@use '@/shared/styles/utils/mixins' as media; + +.imgcarousel { + height: 100%; + width: 100%; + overflow: hidden; + + &__allimg { + height: 100%; + display: flex; + align-items: center; + transition: translate; + transition-property: transform; + transition-duration: 300ms; + transition-timing-function: ease-in-out; + } + + &__imageframe { + min-width: '100%'; + height: '100%'; + background-color: var.$white; + display: flex; + justify-content: center; + align-items: center; + background-size: contain; + background-repeat: no-repeat; + background-position: center center; + cursor: pointer; + } +} diff --git a/src/features/ProductImgCarousel/ui/ImgCarousel/ImgCarousel.tsx b/src/features/ProductImgCarousel/ui/ImgCarousel/ImgCarousel.tsx new file mode 100644 index 00000000..1c9e3f37 --- /dev/null +++ b/src/features/ProductImgCarousel/ui/ImgCarousel/ImgCarousel.tsx @@ -0,0 +1,116 @@ +import React, { FC, useEffect, useMemo, useState } from 'react' + +import { bodyScrollControl } from '@/shared/libs/helpers/popupHelper' +import { useResize } from '@/shared/libs/hooks/useResize' + +import { IMG_SIZE_PAGE, IMG_SIZE_POPUP } from '../../model/constants/constants' +import { TImgCarouselProps } from '../../model/types/productImgCarouselType' + +import styles from './ImgCarousel.module.scss' + +/** + * Компонент фотографии товара на странице товара. + * @param isPopup (boolean) - значение true, если компонент отображается в рамках попапа + * @param imgList (TImgList) - список изображений + * @param setShowPopup (f(boolean)) - функция управления видимостью попапа + * @param curImg (number) - индекс текущего изображения + */ +export const ImgCarousel: FC = ({ imgList, isPopup, setShowPopup, curImg }) => { + const [offset, setOffset] = useState(() => ({ + imgOffset: '0', + offsetX: 'center', + offsetY: 'center' + })) + const [scale, setScale] = useState('contain') + + const resize = useResize() + + const getImgSise = () => { + if (!resize.isScreenMd) { + return isPopup ? IMG_SIZE_POPUP.Md : IMG_SIZE_PAGE.Md + } else { + return isPopup ? IMG_SIZE_POPUP.Xl : IMG_SIZE_PAGE.Xl + } + } + + const [imgSize, setImgSize] = useState(getImgSise()) + + useEffect(() => { + setImgSize(getImgSise()) + }, [resize.isScreenMd]) + + useEffect(() => { + setOffset({ + imgOffset: (-imgSize.width * curImg).toString(), + offsetX: 'center', + offsetY: 'center' + }) + setScale('contain') + }, [curImg]) + + const resetScale = (): void => { + setScale('contain') + setOffset(prevOffset => ({ + imgOffset: prevOffset.imgOffset, + offsetX: 'center', + offsetY: 'center' + })) + } + + const moseMoveHandle = (e: React.MouseEvent) => { + setOffset(prevOffset => ({ + imgOffset: prevOffset.imgOffset, + offsetX: `${Math.max(-e.nativeEvent.offsetX, -imgSize.width / 2)}px`, + offsetY: `${-e.nativeEvent.offsetY}px` + })) + if (scale !== '150%') { + setScale('150%') + } + } + + const mouseLeaveHanle = () => { + resetScale() + } + + const mouseClickHandle = () => { + setShowPopup(true) + bodyScrollControl(true) + } + + const photoList = useMemo(() => { + return imgList.map(i => ( +
+ )) + }, [imgList, offset, scale]) + + return ( +
+
+
+ {photoList} +
+
+ ) +} diff --git a/src/features/ProductImgCarousel/ui/PreviewCarousel/PreviewCarousel.module.scss b/src/features/ProductImgCarousel/ui/PreviewCarousel/PreviewCarousel.module.scss new file mode 100644 index 00000000..8921e281 --- /dev/null +++ b/src/features/ProductImgCarousel/ui/PreviewCarousel/PreviewCarousel.module.scss @@ -0,0 +1,127 @@ +@use '@/shared/styles/utils/variables' as var; +@use '@/shared/styles/utils/mixins' as media; + +.previewcarousel { + width: 160px; + height: 100%; + background-color: var.$white; + box-sizing: border-box; + display: flex; + flex-direction: column; + overflow: hidden; + + @include media.respond-to('large') { + flex-direction: row; + justify-content: center; + width: 100%; + height: 160px; + } + + &__images { + width: 160px; + height: 550px; + background-color: var.$white; + display: flex; + flex-direction: column; + overflow: hidden; + + @include media.respond-to('large') { + flex-direction: row; + justify-content: center; + width: 80%; + height: 100%; + } + } + + &__imageframe { + width: 100%; + max-width: 160px; + min-height: 110px; + box-sizing: border-box; + border-top: 2px solid var.$bg-subscribe; + border-left: 2px solid var.$bg-subscribe; + border-right: 2px solid var.$bg-subscribe; + background-color: var.$white; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + transition: background-color 0.3s; + + &_active { + background-color: var.$body-bg; + } + + @include media.respond-to('large') { + border-right: none; + border-bottom: 2px solid var.$bg-subscribe; + } + + &:last-child { + @include media.respond-to('large') { + border-right: 2px solid var.$bg-subscribe; + } + } + } + + &__image { + display: block; + max-width: 70px; + max-height: 70px; + width: auto; + height: auto; + transition: transform 0.2s; + + &:hover { + transform: scale(1.2); + } + } + + &__buttons { + width: 100%; + height: 120px; + display: flex; + + &_hidden { + display: none; + } + + @include media.respond-to('large') { + width: 20%; + height: 100%; + flex-direction: row-reverse; + } + } + + &__button { + width: 50%; + height: 100%; + transition: background-color 0.3s; + + &:hover { + background-color: var.$body-bg; + } + + @include media.respond-to('middle') { + padding: 1px; + } + + &_arrowDown { + @include media.respond-to('large') { + transform: rotate(270deg); + } + @include media.respond-to('middle') { + transform: rotate(270deg) scale(0.5); + } + } + + &_arrowUp { + @include media.respond-to('large') { + transform: rotate(270deg); + } + @include media.respond-to('middle') { + transform: rotate(270deg) scale(0.5); + } + } + } +} diff --git a/src/features/ProductImgCarousel/ui/PreviewCarousel/PreviewCarousel.tsx b/src/features/ProductImgCarousel/ui/PreviewCarousel/PreviewCarousel.tsx new file mode 100644 index 00000000..5f982df9 --- /dev/null +++ b/src/features/ProductImgCarousel/ui/PreviewCarousel/PreviewCarousel.tsx @@ -0,0 +1,115 @@ +import React, { type FC, useState, useEffect, useMemo } from 'react' + +import IconArrowDown from '@/assets/icons/IconArrowDown.svg' +import IconArrowUp from '@/assets/icons/IconArrowUp.svg' +import { Button, ButtonTheme, ButtonDesign, ButtonSize } from '@/shared/ui/Button/Button' +import { DISPLAYED_IMAGES_NUMBER } from '@/widgets/Product/model/constants/constants' + +import { getDisplayedIndex, slicedImgList } from '../../model/functions/functions' +import { + TDisplayedImgList, + TPreviewCarouselProps, + TchangeImgArgs +} from '../../model/types/productImgCarouselType' + +import styles from './PreviewCarousel.module.scss' + +/** + * Компонент выбора фотографии товара на странице товара. + * @param imgList (TImgList) - список фотографий товаров + * @param curImg (number) - индекс текущего изображения + * @param setCurImg (f(number)) - функция установки текущего изображения + */ +export const PreviewCarousel: FC = ({ imgList, curImg, setCurImg }) => { + const [displayed, setDisplayed] = useState({ + displayedIndex: 0, + displayedImages: [] + }) + + useEffect(() => { + setDisplayed({ + displayedImages: slicedImgList(imgList, DISPLAYED_IMAGES_NUMBER, 0), + displayedIndex: getDisplayedIndex(DISPLAYED_IMAGES_NUMBER, 0) + }) + }, [imgList]) + + const changeImg = (direction: TchangeImgArgs, curIndex: number = 0) => { + if (imgList.length) { + let index: number = 0 + switch (direction) { + case 'next': + index = curImg < imgList.length - 1 ? curImg + 1 : 0 + break + case 'prev': + index = curImg > 0 ? curImg - 1 : imgList.length - 1 + break + case 'current': + index = curIndex + break + } + setCurImg(index) + setDisplayed({ + displayedImages: slicedImgList(imgList, DISPLAYED_IMAGES_NUMBER, index), + displayedIndex: getDisplayedIndex(DISPLAYED_IMAGES_NUMBER, index) + }) + } + } + + const onNextHandle = () => { + changeImg('next') + } + + const onPrevHandle = () => { + changeImg('prev') + } + + const onImageClickHandle = (e: React.MouseEvent) => { + e.stopPropagation() + const el = e.currentTarget as HTMLDivElement + const index = Number(el.getAttribute('data-index')) + changeImg('current', index) + } + + const prevList = useMemo(() => { + return displayed.displayedImages.map((o, index) => ( +
+ {`фото +
+ )) + }, [displayed]) + + return ( +
+
{prevList}
+
+ + +
+
+ ) +} diff --git a/src/features/QuickPurchase/ui/QuickPurchaseForm/QuickPurchaseForm.module.scss b/src/features/QuickPurchase/ui/QuickPurchaseForm/QuickPurchaseForm.module.scss index 2181e2c0..632c3f35 100644 --- a/src/features/QuickPurchase/ui/QuickPurchaseForm/QuickPurchaseForm.module.scss +++ b/src/features/QuickPurchase/ui/QuickPurchaseForm/QuickPurchaseForm.module.scss @@ -65,5 +65,5 @@ .button { width: 100%; - height: 56px + height: 56px; } diff --git a/src/features/RollUp/RollUp.module.scss b/src/features/RollUp/RollUp.module.scss new file mode 100644 index 00000000..ab6ace86 --- /dev/null +++ b/src/features/RollUp/RollUp.module.scss @@ -0,0 +1,65 @@ +@use '@/shared/styles/utils/variables' as var; +@use '@/shared/styles/utils/mixins' as media; + +.rollup { + min-width: 100%; + display: flex; + flex-direction: column; + background-color: var.$white; + border: 2px solid var.$bg-subscribe; + border-bottom: none; + border-radius: 6px; + + &__header { + padding: 10px; + padding-left: 30px; + width: 100%; + height: 100px; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + border-bottom: none; + border-radius: 6px; + cursor: pointer; + + &_rolledup { + border-bottom: 2px solid var.$bg-subscribe; + } + } + + &__buttonicon { + transition: transform 0.3s; + } + + &__buttonicon_rolledout { + transform: rotate(180deg); + } + + &__headertext { + font-size: 24px; + line-height: 1; + transition: all 0.3s; + } + + &__header:hover &__headertext { + color: var.$header-color; + } + + &__header:hover &__buttonicon path { + fill: var.$header-color; + } + + &__rollupchild { + padding: 30px; + padding-top: 0; + border-bottom: 2px solid var.$bg-subscribe; + border-radius: 6px; + transition: all 0.5s; + + &_rolledup { + border-bottom: none; + padding: 0; + } + } +} diff --git a/src/features/RollUp/RollUp.stories.tsx b/src/features/RollUp/RollUp.stories.tsx new file mode 100644 index 00000000..cd3a4c7b --- /dev/null +++ b/src/features/RollUp/RollUp.stories.tsx @@ -0,0 +1,28 @@ +import { Meta, StoryObj } from '@storybook/react' + +import { RollUp } from './RollUp' + +export default { component: RollUp } +const Metadata = { + title: 'features/RollUp', + component: RollUp +} as Meta + +type Story = StoryObj + +export const Default: Story = { + args: { + children: ( +

+ Диск 3M Trizact Foam Disc P5000, 150 ммКомплект по фото. Забавно, но в сети запрос примеры текстов + копирайтеров почти неразлучен с хвостами типа лучшие.Топ-20 лучших продающих статей, 50 лучших текстов + для лендинга и т.д. Посыл прост: если вы копирайтеры, делайте так же, и Welcome To Top. А если + заказчики, то теперь вам ясно, что такое успешный копирайтинг. И никаких проблем? Как бы не так. + Проблема в том, что познание хорошего не работает без познания плохого. Слепое равнение на топов + гарантировано загонит копирайтера-новичка в творческий тупик. А клиента превратит в маньяка, не + способного объяснить, что ему не нравится. Конечно, контент контенту рознь. К примеру, не надо быть + копирайтером, дабы понять, что с этим текстом что-то не так: +

+ ) + } +} diff --git a/src/features/RollUp/RollUp.tsx b/src/features/RollUp/RollUp.tsx new file mode 100644 index 00000000..404ef00b --- /dev/null +++ b/src/features/RollUp/RollUp.tsx @@ -0,0 +1,43 @@ +import { useState, type FC, PropsWithChildren } from 'react' + +import IconArrowDown from '@/assets/icons/IconArrowDown.svg' +import { Button, ButtonDesign, ButtonSize } from '@/shared/ui/Button/Button' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' + +import styles from './RollUp.module.scss' + +/** + * Компонент разворачивающегося блока + * @param {children} React.ReactNode - контент; + */ +export const RollUp: FC = ({ children }) => { + const [isRolledOut, setIsRolledOut] = useState(false) + + const onButtonClickHandl = () => { + setIsRolledOut(!isRolledOut) + } + + return ( +
+
+ + Описание + + +
+
+ {isRolledOut && children} +
+
+ ) +} diff --git a/src/features/SearchProduct/ui/SearchProduct.module.scss b/src/features/SearchProduct/ui/SearchProduct.module.scss index b2279efd..31a51ff2 100644 --- a/src/features/SearchProduct/ui/SearchProduct.module.scss +++ b/src/features/SearchProduct/ui/SearchProduct.module.scss @@ -1,14 +1,16 @@ @use '@/shared/styles/utils/variables' as var; .form { + grid-area: search; + position: relative; + display: flex; + justify-content: space-between; + align-items: center; width: 100%; + max-width: 800px; height: 46px; background-color: var.$theme-secondary-color; - display: flex; - align-items: center; - justify-content: space-between; border-radius: 5px; - position: relative; } .button { diff --git a/src/features/SideBar/index.tsx b/src/features/SideBar/index.tsx new file mode 100644 index 00000000..dcbb04b0 --- /dev/null +++ b/src/features/SideBar/index.tsx @@ -0,0 +1,2 @@ +import SideBar from './ui/SideBar' +export default SideBar diff --git a/src/features/SideBar/ui/SideBar.module.scss b/src/features/SideBar/ui/SideBar.module.scss new file mode 100644 index 00000000..c4e3791e --- /dev/null +++ b/src/features/SideBar/ui/SideBar.module.scss @@ -0,0 +1,51 @@ +@use '@/shared/styles/utils/variables' as var; +@use '@/shared/styles/utils/mixins' as media; + +.sideBar { + display: flex; + flex-direction: column; + min-width: 100%; + border-radius: 5px; + + &__header { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + background: var.$body-bg; + border-radius: 6px; + padding: 10px 10px 10px 15px; + cursor: pointer; + transition: 0.25s; + } + + &__headerText { + transition: 0.25s; + } + + &__headerArrow { + fill: var.$body-color; + transition: 0.25s; + } + + &__headerArrow_active { + transform: rotate(180deg); + } + + &__header:hover &__headerText { + color: var.$header-color; + } + + &__header:hover &__headerArrow path { + fill: var.$header-color; + } + + &__children { + padding: 15px 0 20px; + transition: 0.5s; + + &_close { + padding: 0; + } + } +} diff --git a/src/features/SideBar/ui/SideBar.stories.tsx b/src/features/SideBar/ui/SideBar.stories.tsx new file mode 100644 index 00000000..a9489c90 --- /dev/null +++ b/src/features/SideBar/ui/SideBar.stories.tsx @@ -0,0 +1,48 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import SideBar from './SideBar' + +const meta = { + title: 'features/SideBar', + component: SideBar, + tags: ['autodocs'], + args: {} +} satisfies Meta + +export default meta + +type Story = StoryObj + +export const Default: Story = () => { + return ( + + ) +} + +Default.args = {} diff --git a/src/features/SideBar/ui/SideBar.tsx b/src/features/SideBar/ui/SideBar.tsx new file mode 100644 index 00000000..2babfbdd --- /dev/null +++ b/src/features/SideBar/ui/SideBar.tsx @@ -0,0 +1,70 @@ +import { KeyboardEvent, KeyboardEventHandler, ReactElement, useState, type FC } from 'react' + +import ArrowIcon from '@/assets/images/sideBarMenu/IconArrowDown.svg' +import Paragraph from '@/shared/ui/Paragraph/Paragraph' + +import styles from './SideBar.module.scss' + +export interface ISideBar { + title?: string + isVisible?: boolean + onClick?: () => void + onKeyUp?: KeyboardEventHandler + children?: ReactElement | JSX.Element | JSX.Element[] +} + +/** + * Компонент SideBar - кнопка, раскрывающаяся в бургер меню + * @param {string} title - название разворачивающейся кнопки; + * @param {boolean} isVisible - атрибут дающий видимость иконке стрелочки; + * @param {function} onClick - функция выхода из профиля handleLogOut; + * @param {function} onKeyUp - функция выхода из профиля handleLogOut при нажатии клавиши Enter; + * @param {JSX.Element} children - контент; + */ + +const SideBar: FC = ({ title, isVisible, onClick, onKeyUp, children }) => { + const [isActive, setIsActive] = useState(false) + + const handleClick = () => { + setIsActive(!isActive) + } + + const handleKeyDown = (e: KeyboardEvent) => { + if (e.code === 'Enter' || e.code === 'Space') { + e.preventDefault() + e.stopPropagation() + handleClick() + } + } + + return ( +
  • +
    + {title} + {isVisible && ( + + )} +
    + {isVisible && ( +
    + {isActive && children} +
    + )} +
  • + ) +} + +export default SideBar diff --git a/src/features/SideBarMenuModal/SideBarLink/SideBarLink.module.scss b/src/features/SideBarMenuModal/SideBarLink/SideBarLink.module.scss new file mode 100644 index 00000000..2313a5b5 --- /dev/null +++ b/src/features/SideBarMenuModal/SideBarLink/SideBarLink.module.scss @@ -0,0 +1,26 @@ +@use '@/shared/styles/utils/variables' as var; + +.sideBarLink { + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px; + background: var.$body-bg; + min-height: 45px; + border-radius: 5px; + font-size: 15px; + color: var.$body-color; + fill: var.$body-color; + padding: 10px 15px; + cursor: pointer; + transition: 0.25s; + + &__arrow { + transform: rotate(270deg); + } +} + +.sideBarLink:hover { + color: var.$header-color; + fill: var.$header-color; +} diff --git a/src/features/SideBarMenuModal/SideBarLink/SideBarLink.tsx b/src/features/SideBarMenuModal/SideBarLink/SideBarLink.tsx new file mode 100644 index 00000000..784830b3 --- /dev/null +++ b/src/features/SideBarMenuModal/SideBarLink/SideBarLink.tsx @@ -0,0 +1,31 @@ +import { KeyboardEventHandler, FC } from 'react' + +import ArrowIcon from '@/assets/images/sideBarMenu/IconArrowDown.svg' + +import styles from './SideBarLink.module.scss' + +export interface ISideBarLink { + isVisible?: boolean + onKeyUp?: KeyboardEventHandler + onClick?: () => void + title?: string +} + +/** + * Компонент модального окна SideBarMenuModal, отвечающий за развертывание названий обьектов массива + * @param {boolean} isVisible - булево значение скрывающее стрелку; + * @param {function} onKeyUp - функция обнуляющая пользователя по нажатии клавиши Enter; + * @param {function} onClick - функция клика по роуту; + * @param {string} title - название роута; + */ + +const SideBarLink: FC = ({ isVisible, onKeyUp, onClick, title }) => { + return ( +
    + {title} + {isVisible && } +
    + ) +} + +export default SideBarLink diff --git a/src/features/SideBarMenuModal/SideBarSublinks/SideBarSublinks.module.scss b/src/features/SideBarMenuModal/SideBarSublinks/SideBarSublinks.module.scss new file mode 100644 index 00000000..bf5ba39b --- /dev/null +++ b/src/features/SideBarMenuModal/SideBarSublinks/SideBarSublinks.module.scss @@ -0,0 +1,47 @@ +@use '@/shared/styles/utils/variables' as var; + +.sideBarSublinks { + display: flex; + flex-direction: column; + align-items: center; + background: var.$white; + width: 100%; + border-radius: 5px; + + &__header { + display: flex; + align-items: center; + gap: 10px; + width: 100%; + margin-bottom: 18px; + cursor: pointer; + } + + &__headerArrow { + transform: rotate(90deg); + } + + &__routes { + display: flex; + flex-direction: column; + gap: 5px; + width: 100%; + } + + &__route { + display: flex; + align-items: center; + background: var.$body-bg; + min-height: 45px; + border-radius: 5px; + font-size: 15px; + color: var.$body-color; + padding: 10px 10px 10px 15px; + cursor: pointer; + transition: 0.25s; + } + + &__route:hover { + color: var.$header-color; + } +} diff --git a/src/features/SideBarMenuModal/SideBarSublinks/SideBarSublinks.tsx b/src/features/SideBarMenuModal/SideBarSublinks/SideBarSublinks.tsx new file mode 100644 index 00000000..72de537f --- /dev/null +++ b/src/features/SideBarMenuModal/SideBarSublinks/SideBarSublinks.tsx @@ -0,0 +1,67 @@ +import { KeyboardEvent, FC } from 'react' +import { useNavigate } from 'react-router-dom' + +import ArrowIcon from '@/assets/images/sideBarMenu/IconArrowDown.svg' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import Link from '@/shared/ui/Link/Link' + +import { IData } from '../model/types/types' + +import styles from './SideBarSublinks.module.scss' + +export interface ISideBarSublinks { + isActive?: boolean + choice?: number + index?: number + item?: IData + title?: string +} + +/** + * Компонент модального окна SideBarMenuModal, отвечающий за развертывание роутов и их названий + * @param {boolean} isActive - булево значение; + * @param {number} choice - изменяемое состояние индекса; + * @param {number} index - индекс выбранной кнопки; + * @param {object} item - обьект массива; + * @param {string} title - заголовок обьекта массива; + */ + +const SideBarSublinks: FC = ({ isActive, choice, index, item, title }) => { + const navigate = useNavigate() + + const handleKeyDown = (e: KeyboardEvent, index: string) => { + if (e.code === 'Enter' || e.code === 'Space') { + e.preventDefault() + navigate(index) + } + } + + return ( + <> + {choice === index && ( +
    +
    + + {title} +
    +
      + {isActive && + choice === index && + item?.routes?.map((el: IData, i: number) => ( +
    • + handleKeyDown(e, el.route || '#')} + to={el.route || '#'} + className={styles.sideBarSublinks__route}> + {el.subtitle} + +
    • + ))} +
    +
    + )} + + ) +} + +export default SideBarSublinks diff --git a/src/features/SideBarMenuModal/index.tsx b/src/features/SideBarMenuModal/index.tsx new file mode 100644 index 00000000..c6f87fd2 --- /dev/null +++ b/src/features/SideBarMenuModal/index.tsx @@ -0,0 +1,2 @@ +import SideBarMenuModal from './ui/SideBarMenuModal' +export default SideBarMenuModal diff --git a/src/features/SideBarMenuModal/model/types/types.ts b/src/features/SideBarMenuModal/model/types/types.ts new file mode 100644 index 00000000..6ff2a7d8 --- /dev/null +++ b/src/features/SideBarMenuModal/model/types/types.ts @@ -0,0 +1,10 @@ +export interface IData { + routes?: IRoute[] + subtitle?: string + route?: string +} + +export interface IRoute { + subtitle?: string + route?: string +} diff --git a/src/features/SideBarMenuModal/ui/SideBarMenuModal.module.scss b/src/features/SideBarMenuModal/ui/SideBarMenuModal.module.scss new file mode 100644 index 00000000..f16bd10a --- /dev/null +++ b/src/features/SideBarMenuModal/ui/SideBarMenuModal.module.scss @@ -0,0 +1,45 @@ +@use '@/shared/styles/utils/variables' as var; + +.sideBarMenuModal { + position: absolute; + bottom: 0; + display: flex; + flex-direction: column; + justify-content: flex-end; + gap: 5px; + width: 100%; + padding: 25px; + + &__container { + display: flex; + flex-direction: column; + gap: 18px; + background: var.$white; + border-radius: 10px; + padding: 30px; + } + + &__list { + display: flex; + flex-direction: column; + gap: 5px; + list-style: none; + } + + &__button { + display: flex; + align-items: center; + background: var.$white; + border-radius: 10px; + font-size: 15px; + font-weight: 700; + letter-spacing: 0.5px; + color: var.$body-color; + padding: 10px 20px; + transition: 0.25s; + } + + &__button:hover { + color: var.$header-color; + } +} diff --git a/src/features/SideBarMenuModal/ui/SideBarMenuModal.stories.tsx b/src/features/SideBarMenuModal/ui/SideBarMenuModal.stories.tsx new file mode 100644 index 00000000..7a8a7d3f --- /dev/null +++ b/src/features/SideBarMenuModal/ui/SideBarMenuModal.stories.tsx @@ -0,0 +1,34 @@ +import type { Meta, StoryObj } from '@storybook/react' +import { useState } from 'react' + +import SideBarMenuModal from './SideBarMenuModal' + +const meta = { + title: 'features/SideBarMenuModal', + component: SideBarMenuModal, + parameters: { + layout: 'centered' + }, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = () => { + const [user, setUser] = useState('Elon Musk') + + const handleLogOut = () => { + setUser('') + } + + return ( +
    + +
    + ) +} + +Default.args = { + user: 'Elon Musk' +} diff --git a/src/features/SideBarMenuModal/ui/SideBarMenuModal.tsx b/src/features/SideBarMenuModal/ui/SideBarMenuModal.tsx new file mode 100644 index 00000000..3c43d20d --- /dev/null +++ b/src/features/SideBarMenuModal/ui/SideBarMenuModal.tsx @@ -0,0 +1,82 @@ +import { KeyboardEventHandler, KeyboardEvent, FC, useState } from 'react' + +import { userData, noUserData } from '@/mockData/sideBarProfileData' +import { Button } from '@/shared/ui/Button/Button' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' + +import SideBarLink from '../SideBarLink/SideBarLink' +import SideBarSublinks from '../SideBarSublinks/SideBarSublinks' + +import styles from './SideBarMenuModal.module.scss' + +export interface ISideBarMenuModal { + handleClose?: () => void + onKeyUp?: KeyboardEventHandler + handleLogOut?: () => void + user?: string +} + +/** + * Модальное окно SideBarMenuModal + * @param {function} handleClose - функция установки булевого значения, для обозначения состояние процесса закрытия модального окна; + * @param {function} onKeyUp - функция обнуляющая пользователя по нажатии клавиши Enter; + * @param {function} handleLogOut - функция обнуляющая пользователя по клику мышки; + * @param {string} user - приходящий с сервера пользователь; + */ + +const SideBarMenuModal: FC = ({ handleClose, onKeyUp, handleLogOut, user }) => { + const [isActive, setIsActive] = useState(false) + const [choice, setChoice] = useState(0) + + const data = user ? userData : noUserData + + const handleClick = (index: number) => { + setChoice(index) + setIsActive(!isActive) + } + + const handleKeyDown = (e: KeyboardEvent, index: number) => { + if (e.code === 'Enter' || e.code === 'Space') { + e.preventDefault() + setChoice(index) + setIsActive(!isActive) + } + } + + return ( +
    +
    + {user && !isActive && {user}} + +
      + {data && + data.map((item, index) => ( +
    • handleKeyDown(e, index)} onClick={() => handleClick(index)}> + {!isActive ? ( + + ) : ( + + )} +
    • + ))} + + {user && !isActive && ( + + )} +
    +
    + + +
    + ) +} + +export default SideBarMenuModal diff --git a/src/features/Slider/model/types.ts b/src/features/Slider/model/types.ts new file mode 100644 index 00000000..73f48f22 --- /dev/null +++ b/src/features/Slider/model/types.ts @@ -0,0 +1,4 @@ +export enum Direction { + PREV = 'prev', + NEXT = 'next' +} diff --git a/src/components/Dots/dots.module.scss b/src/features/Slider/ui/Dot/Dot.module.scss similarity index 65% rename from src/components/Dots/dots.module.scss rename to src/features/Slider/ui/Dot/Dot.module.scss index b2c4c10e..e7c06d4c 100644 --- a/src/components/Dots/dots.module.scss +++ b/src/features/Slider/ui/Dot/Dot.module.scss @@ -1,17 +1,7 @@ -@use '../../shared/styles/utils/mixins' as media; -@use '../../shared/styles/utils/variables' as color; - -.slider__pagination { - position: absolute; - width: 100%; - left: 0; - bottom: 0; - - .dots { - display: flex; - justify-content: center; - cursor: pointer; +@use '@/shared/styles/utils/mixins' as media; +@use '@/shared/styles/utils/variables' as color; +.dots { &__item { list-style: none; position: relative; @@ -38,5 +28,4 @@ background-color: color.$white; opacity: 1; } - } -} + } \ No newline at end of file diff --git a/src/features/Slider/ui/Dot/Dot.tsx b/src/features/Slider/ui/Dot/Dot.tsx new file mode 100644 index 00000000..8c80bd1c --- /dev/null +++ b/src/features/Slider/ui/Dot/Dot.tsx @@ -0,0 +1,21 @@ +import { FC } from 'react' + +import styles from './Dot.module.scss' + +export type Props = { + isActive: boolean + onClick: () => void +} + +/** + * Карточка из блока группы историй + * @param {TCard} card - параметры карточки из группы историй + */ + +const Dot: FC = ({ isActive, onClick }) => { + return ( +
  • + ) +} + +export default Dot diff --git a/src/features/Slider/ui/Slider/Slider.module.scss b/src/features/Slider/ui/Slider/Slider.module.scss new file mode 100644 index 00000000..d979d0e6 --- /dev/null +++ b/src/features/Slider/ui/Slider/Slider.module.scss @@ -0,0 +1,79 @@ +@use '@/shared/styles/utils/mixins' as media; +@use '@/shared/styles/utils/variables' as color; + +.slider { + display: flex; + flex-grow: 1; + position: relative; + border-radius: 5px; + overflow: hidden; + + &__list { + width: 100%; + display: flex; + position: absolute; + left: 0; + transition: transform 0.5s ease-in-out; + } + } + +.arrow__wrap_prev { + position: absolute; + top: 0; + left: 0; + width: 8.5%; + height: 100%; + z-index: 1; + } + + .arrow__wrap_next { + position: absolute; + top: 0; + right: 0; + width: 8.5%; + height: 100%; + z-index: 1; + } + + .slider__pagination { + position: absolute; + width: 100%; + left: 0; + bottom: 0; + + .dots { + display: flex; + justify-content: center; + cursor: pointer; + } + + } + + .storybook { + width: 940px; + height: 370px; + } + + .arrow__button { + position: absolute; + width: 100%; + height: 100%; + transition: background 0.25s; + z-index: 100; + + &:hover{ + background: rgba(255 255 255 / 5%); + } + + @include media.respond-to('middle') { + display: none; + } + + .icon { + path { + fill: color.$white; + } + } + } + + diff --git a/src/features/Slider/ui/Slider/Slider.stories.tsx b/src/features/Slider/ui/Slider/Slider.stories.tsx new file mode 100644 index 00000000..30edb111 --- /dev/null +++ b/src/features/Slider/ui/Slider/Slider.stories.tsx @@ -0,0 +1,30 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import img3 from '@/assets/images/slider/slide4-940x370.webp' + +import Slider from './Slider' +import styles from './Slider.module.scss' + +const meta = { + title: 'features/Slider', + component: Slider, + parameters: { + layout: 'centered' + }, + + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Normal: Story = { + args: { + children: [ + img, + img, + img + ], + className: styles.storybook + } +} diff --git a/src/features/Slider/ui/Slider/Slider.tsx b/src/features/Slider/ui/Slider/Slider.tsx new file mode 100644 index 00000000..f81245a0 --- /dev/null +++ b/src/features/Slider/ui/Slider/Slider.tsx @@ -0,0 +1,80 @@ +import { Children, FC, PropsWithChildren, ReactNode, useEffect, useState } from 'react' + +import IconLeftArrow from '@/assets/icons/IconLeftArrow.svg' +import IconRightArrow from '@/assets/icons/IconRightArrow.svg' +import { Button } from '@/shared/ui/Button/Button' + +import { Direction } from '../../model/types' +import Dot from '../Dot/Dot' + +import styles from './Slider.module.scss' + +type TProps = { + className?: string +} + +/** + * @param {string} className - для передачи дополнительных параметров стиля + */ +const Slider: FC> = ({ children, className, ...props }) => { + const [slideNumber, setSlideNumber] = useState(0) + const [localChildren, setLocalChildren] = useState>([]) + + function changeSlide(direction: Direction) { + let nextSlideNumber + if (direction === Direction.NEXT) { + nextSlideNumber = (slideNumber + 1) % localChildren.length + } else { + nextSlideNumber = (slideNumber - 1) % localChildren.length + } + if (nextSlideNumber < 0) { + nextSlideNumber = nextSlideNumber + localChildren.length + } + setSlideNumber(nextSlideNumber) + } + + useEffect(() => { + setLocalChildren(Children.toArray(children)) + }, [children]) + + return ( +
    +
    + +
    +
    + {children} +
    +
    + +
    +
    +
      + {localChildren.map((item, index) => ( + { + setSlideNumber(index) + }} + /> + ))} +
    +
    +
    + ) +} + +export default Slider diff --git a/src/features/SubscribeForm/subscribeForm.module.scss b/src/features/SubscribeForm/SubscribeForm.module.scss similarity index 67% rename from src/features/SubscribeForm/subscribeForm.module.scss rename to src/features/SubscribeForm/SubscribeForm.module.scss index a6bcd5da..fca147c9 100644 --- a/src/features/SubscribeForm/subscribeForm.module.scss +++ b/src/features/SubscribeForm/SubscribeForm.module.scss @@ -8,10 +8,15 @@ &_footer { max-width: 570px; row-gap: 10px; + + @include media.respond-to('large') { + max-width: 100%; + margin-bottom: 70px; + } } &_subscribe { - max-width: 740px; + width: 740px; row-gap: 20px; } } @@ -24,9 +29,11 @@ padding: 3px 3px 3px 14px; border-radius: 5px; position: relative; + border: 2px solid transparent; + transition: border-color 0.4s; &:focus-within { - outline: 2px solid var.$theme-primary-color; + border-color: var.$theme-primary-color; } &_footer { @@ -36,12 +43,28 @@ &_subscribe { background-color: var.$white; } + + @include media.respond-to('large') { + margin-top: 20px; + } } -.form > input { - &::placeholder { - color: var.$theme-primary-color; - transition: color 0.25s ease-in-out; +.field { + width: 100%; + padding: 10px 16px; + border: none; + outline: none; + box-shadow: none; + font-size: 14px; + font-weight: 400; + line-height: 1.5; + + &_footer { + color: var.$white; + } + + &_subscribe { + color: var.$black; } &:focus { @@ -51,6 +74,20 @@ } } +.span { + font-size: 14px; + font-weight: 400; + line-height: 1.5; + + &_footer { + color: var.$white; + } + + &_subscribe { + color: var.$black; + } +} + .button { padding: 14px 21px; display: flex; @@ -96,6 +133,11 @@ font-size: 16px; font-weight: 500; line-height: 16px; + + @include media.respond-to('xl') { + font-size: 14.5px; + line-height: 1; + } } &_subscribe { @@ -110,7 +152,7 @@ @include media.respond-to('large') { display: flex; - font-size: 16px; + font-size: 15px; font-weight: 400; line-height: 16px; } diff --git a/src/features/SubscribeForm/SubscribeForm.stories.ts b/src/features/SubscribeForm/SubscribeForm.stories.ts new file mode 100644 index 00000000..b926e05c --- /dev/null +++ b/src/features/SubscribeForm/SubscribeForm.stories.ts @@ -0,0 +1,23 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import SubscribeForm from './SubscribeForm' + +const meta = { + title: 'features/SubscribeForm', + component: SubscribeForm, + parameters: { + layout: 'centered' + } +} as Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + type: 'footer', + onSubmit: () => { + alert('Действие по сабмиту формы') + } + } +} diff --git a/src/features/SubscribeForm/SubscribeForm.tsx b/src/features/SubscribeForm/SubscribeForm.tsx index 4282c9ca..53e6ae7e 100644 --- a/src/features/SubscribeForm/SubscribeForm.tsx +++ b/src/features/SubscribeForm/SubscribeForm.tsx @@ -1,25 +1,32 @@ import classNames from 'classnames' -import { type FC, FormEvent } from 'react' +import { Field, Form, Formik, FormikErrors, FormikTouched } from 'formik' +import { FormEvent, useState, type FC } from 'react' import SubscribeIcon from '@/assets/images/subscriptionForm/icon-subsc.svg' -import { Input, InputSize, InputTheme } from '@/shared/ui/Input/Input' +import { useResize } from '@/shared/libs/hooks/useResize' +import { FormMsg } from '@/shared/ui/FormMsg/FormMsg' +import { EMsgType } from '@/shared/ui/FormMsg/model/types/types' +import Label from '@/shared/ui/Label/Label' +import Span from '@/shared/ui/Span/Span' -import styles from './subscribeForm.module.scss' +import { validationSchema } from './model/validationSchema/validationSchema' +import styles from './SubscribeForm.module.scss' type TSubscribeForm = { type: 'footer' | 'subscribe' className?: string - onSubmit: (event: FormEvent) => void + onSubmit: () => void } -// @TODO: Перевести форму на Formik + Yup -// https://github.com/Studio-Yandex-Practicum/maxboom_frontend/issues/91 /** * @param {string} type - определяет внешний вид для компонентов footer и для subscribe - * @param {string} className - нужно будет, если захотят переиспользовать компонент + * @param {string} className - для переопределения стилей
    * @param {string} onSubmit - функция для обработки формы */ const SubscribeForm: FC = ({ type, onSubmit, className = '' }) => { + const [showErrorMsg, setShowErrorMsg] = useState(false) + const { isScreenLg, isScreenMd, isScreenSm } = useResize() + const classNameContainer = classNames(styles.container, { [styles.container]: true, [styles.container_footer]: type === 'footer', @@ -35,21 +42,83 @@ const SubscribeForm: FC = ({ type, onSubmit, className = '' }) = [styles.form_footer]: type === 'footer', [styles.form_subscribe]: type === 'subscribe' }) + const classNameField = classNames({ + [styles.field]: true, + [styles.field_footer]: type === 'footer', + [styles.field_subscribe]: type === 'subscribe' + }) + const classNameSpan = classNames({ + [styles.span]: true, + [styles.span_footer]: type === 'footer', + [styles.span_subscribe]: type === 'subscribe' + }) + + const submitHandle = () => { + //@TODO: Доделать после появления эндпоинта на BE + onSubmit() + } + + const preSubmitHandle = ( + e: FormEvent, + touched: FormikTouched<{ + email: string + }>, + errors: FormikErrors<{ + email: string + }> + ) => { + e.preventDefault() + setShowErrorMsg(Boolean(touched.email && errors.email)) + } return ( -
    - {/* @TODO: Добавить компонент Label - https://github.com/Studio-Yandex-Practicum/maxboom_frontend/issues/102 */} - -

    Мы не будем присылать вам спам. Только скидки и выгодные предложения

    - - - - -
    + + {({ isSubmitting, errors, touched }) => ( +
    { + preSubmitHandle(e, touched, errors) + }}> + + {(isScreenSm || isScreenMd) && !isScreenLg && ( + + Мы не будем присылать вам спам. Только скидки и выгодные предложения + + )} +
    + + +
    + {showErrorMsg && errors.email && ( + { + setShowErrorMsg(false) + }} + disableClose={false} + type={EMsgType.popup} + /> + )} + + )} +
    ) } diff --git a/src/features/SubscribeForm/model/constants/constants.ts b/src/features/SubscribeForm/model/constants/constants.ts new file mode 100644 index 00000000..46387279 --- /dev/null +++ b/src/features/SubscribeForm/model/constants/constants.ts @@ -0,0 +1,2 @@ +export const EMAIL_VALIDATION_ERROR = 'E-mail адрес введён неверно!' +export const EMAIL_REQUIRED_ERROR = 'Укажите E-mail адрес!' diff --git a/src/features/SubscribeForm/model/types/types.ts b/src/features/SubscribeForm/model/types/types.ts new file mode 100644 index 00000000..fce635ed --- /dev/null +++ b/src/features/SubscribeForm/model/types/types.ts @@ -0,0 +1,3 @@ +export interface ISubscribeFormValues { + email: string +} diff --git a/src/features/SubscribeForm/model/validationSchema/validationSchema.ts b/src/features/SubscribeForm/model/validationSchema/validationSchema.ts new file mode 100644 index 00000000..b37a9852 --- /dev/null +++ b/src/features/SubscribeForm/model/validationSchema/validationSchema.ts @@ -0,0 +1,7 @@ +import * as Yup from 'yup' + +import { EMAIL_REQUIRED_ERROR, EMAIL_VALIDATION_ERROR } from '../constants/constants' + +export const validationSchema = Yup.object().shape({ + email: Yup.string().required(EMAIL_REQUIRED_ERROR).email(EMAIL_VALIDATION_ERROR) +}) diff --git a/src/components/WidgetButtonsFunctions/WidgetButtonsFunctions.module.scss b/src/features/WidgetButtonsFunctions/WidgetButtonsFunctions.module.scss similarity index 100% rename from src/components/WidgetButtonsFunctions/WidgetButtonsFunctions.module.scss rename to src/features/WidgetButtonsFunctions/WidgetButtonsFunctions.module.scss diff --git a/src/features/WidgetButtonsFunctions/WidgetButtonsFunctions.stories.tsx b/src/features/WidgetButtonsFunctions/WidgetButtonsFunctions.stories.tsx new file mode 100644 index 00000000..3f448eb8 --- /dev/null +++ b/src/features/WidgetButtonsFunctions/WidgetButtonsFunctions.stories.tsx @@ -0,0 +1,34 @@ +import { Story, Meta } from '@storybook/react' + +import { WidgetButtonsFunctions } from '@/features/WidgetButtonsFunctions/WidgetButtonsFunctions' +import { ECardView } from '@/shared/model/types/common' + +export default { + title: 'features/WidgetButtonsFunction', + component: WidgetButtonsFunctions +} as Meta + +type TWidgetButtonsFunctions = { + isLiked: boolean + handleLike: VoidFunction + isInCompared: boolean + handleAddToCompared: VoidFunction + layout: ECardView +} + +const Template: Story = args => + +export const Grid = Template.bind({}) +Grid.args = { + layout: ECardView.GRID +} + +export const List = Template.bind({}) +List.args = { + layout: ECardView.LIST +} + +export const Compact = Template.bind({}) +Compact.args = { + layout: ECardView.COMPACT +} diff --git a/src/components/WidgetButtonsFunctions/WidgetButtonsFunctions.tsx b/src/features/WidgetButtonsFunctions/WidgetButtonsFunctions.tsx similarity index 84% rename from src/components/WidgetButtonsFunctions/WidgetButtonsFunctions.tsx rename to src/features/WidgetButtonsFunctions/WidgetButtonsFunctions.tsx index bb9185d9..f8a69472 100644 --- a/src/components/WidgetButtonsFunctions/WidgetButtonsFunctions.tsx +++ b/src/features/WidgetButtonsFunctions/WidgetButtonsFunctions.tsx @@ -5,9 +5,8 @@ import IconCompare from '@/assets/icons/IconCompare.svg' import IconLike from '@/assets/icons/IconLike' import { ECardView } from '@/shared/model/types/common' import { Button, ButtonSize, ButtonTheme } from '@/shared/ui/Button/Button' - -import styles from '../ProductCard/ProductCard.module.scss' -import { getStylesForCurrentLayout } from '../ProductCard/utils/utils' +import { getStylesForCurrentLayout } from '@/shared/ui/ProductLabels/utils/utils' +import styles from '@/widgets/ProductItem/ProductItem.module.scss' import stylesSvg from './WidgetButtonsFunctions.module.scss' @@ -47,8 +46,8 @@ export const WidgetButtonsFunctions: FC = ({ [getStylesForCurrentLayout('customButton', stylesSvg)[layout]]: layout })}> @@ -60,8 +59,8 @@ export const WidgetButtonsFunctions: FC = ({ [getStylesForCurrentLayout('customButton', stylesSvg)[layout]]: layout })}> diff --git a/src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.module.scss b/src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.module.scss new file mode 100644 index 00000000..8f069f5f --- /dev/null +++ b/src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.module.scss @@ -0,0 +1,27 @@ +.customButtonsContainer { + display: flex; + justify-content: end; + gap: 5px; +} + +.customButton { + max-width: 120px; + min-height: 50px; + padding: 5px; + display: flex; + align-items: center; + justify-content: center; + gap: 2px; + cursor: pointer; + transition: background-color 0.2s ease-in-out; + + &_eye { + min-width: 30px; + justify-content: center; + } + + svg { + width: 25px; + height: 20px; + } +} diff --git a/src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.stories.tsx b/src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.stories.tsx new file mode 100644 index 00000000..e59e6c03 --- /dev/null +++ b/src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.stories.tsx @@ -0,0 +1,33 @@ +import { Story, Meta } from '@storybook/react' + +import { WidgetButtonsPurchase } from '@/features/WidgetButtonsPurchase/WidgetButtonsPurchase' +import { ECardView } from '@/shared/model/types/common' + +export default { + title: 'features/WidgetButtonsPurchase', + component: WidgetButtonsPurchase +} as Meta + +type TWidgetButtonsPurchase = { + isInCart: boolean + handleAddToCart: VoidFunction + onEyeClick: VoidFunction + layout: ECardView +} + +const Template: Story = args => + +export const Grid = Template.bind({}) +Grid.args = { + layout: ECardView.GRID +} + +export const List = Template.bind({}) +List.args = { + layout: ECardView.LIST +} + +export const Compact = Template.bind({}) +Compact.args = { + layout: ECardView.COMPACT +} diff --git a/src/components/WidgetButtonsPurchase/WidgetButtonsPurchase.tsx b/src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.tsx similarity index 79% rename from src/components/WidgetButtonsPurchase/WidgetButtonsPurchase.tsx rename to src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.tsx index abf41054..a401df22 100644 --- a/src/components/WidgetButtonsPurchase/WidgetButtonsPurchase.tsx +++ b/src/features/WidgetButtonsPurchase/WidgetButtonsPurchase.tsx @@ -1,3 +1,4 @@ +import classNames from 'classnames' import { FC } from 'react' import IconCart from '@/assets/icons/IconCart.svg' @@ -30,18 +31,22 @@ export const WidgetButtonsPurchase: FC = ({ const size = layout === ECardView.COMPACT ? ButtonSize.S : ButtonSize.XS return ( - <> +
    - - +
    ) } diff --git a/src/features/login/model/validation/validation.ts b/src/features/login/model/validation/validation.ts index 00e1ba18..c59427e2 100644 --- a/src/features/login/model/validation/validation.ts +++ b/src/features/login/model/validation/validation.ts @@ -6,6 +6,17 @@ export const validationSchema = Yup.object().shape({ .email('Укажите корректный адрес электронной почты'), password: Yup.string() .required('Введите пароль') - .min(3, 'Минимальная длина пароля 8 символов') // поменял для тестового юзера - .max(64, 'Максимальная длина пароля 64 символа') + .min(6, 'Минимальная длина пароля 6 символов') // поменял для тестового юзера + .max(64, 'Максимальная длина пароля 64 символа'), + name: Yup.string() + .required('Введите имя') + .min(6, 'Минимальная длина имени 6 символов') + .max(64, 'Максимальная длина имени 64 символа'), + surname: Yup.string() + .required('Введите фамилию') + .min(1, 'Минимальная длина фамилии 1 символ') + .max(64, 'Максимальная длина фамилии 64 символа'), + tel: Yup.string() + .required('Введите номер телефона') + .matches(/^\+7\d{10}$/, 'Номер телефона должен быть в формате +7XXXXXXXXXX (X - цифра)') }) diff --git a/src/mockData/bannerData.ts b/src/mockData/bannerData.ts new file mode 100644 index 00000000..083c266e --- /dev/null +++ b/src/mockData/bannerData.ts @@ -0,0 +1,32 @@ +import img1 from '@/assets/images/banner/banner.png' +import { TBannerCard } from '@/entities/BannerCard/BannerCard' + +export const bannerData: TBannerCard[] = [ + { + id: 100, + urlImg: img1, + urlImg_m: img1, + alt: 'Mobil', + title: 'DJI OSMO', + subtitle: 'Mobile 4', + href: 'jelektronika/telefony-i-smart-chasy/umnye-chasy' + }, + { + id: 101, + urlImg: img1, + urlImg_m: img1, + alt: 'Mobil', + title: 'DJI OSMO', + subtitle: 'Mobile 4', + href: 'jelektronika/telefony-i-smart-chasy/umnye-chasy' + }, + { + id: 102, + urlImg: img1, + urlImg_m: img1, + alt: 'Mobil', + title: 'DJI OSMO', + subtitle: 'Mobile 4', + href: 'jelektronika/telefony-i-smart-chasy/umnye-chasy' + } +] diff --git a/src/mockData/catalogListData.ts b/src/mockData/catalogListData.ts deleted file mode 100644 index 59ce5a6c..00000000 --- a/src/mockData/catalogListData.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { CatalogLinksId } from '@/shared/config/catalogLinks/catalogLinks' -import { Routes } from '@/shared/config/routerConfig/routes' - -export const linkItems = [ - { index: 0, label: 'Блог', to: Routes.BLOG }, - { index: 1, label: 'Новости', to: '' }, - { index: 2, label: 'Отзывы о магазине', to: '' }, - { index: 3, label: 'Контакты', to: '' } -] - -export const catalogListData = [ - { - id: 1, - name: 'FM-трасмиттреры', - slug: CatalogLinksId.TRANSMIT, - image: require('@/assets/images/categoryCards/img-categories-01-210x263.webp') - }, - { - id: 2, - name: 'GPS-треккеры', - slug: CatalogLinksId.GPS_TRACK, - image: require('@/assets/images/categoryCards/img-categories-02-171x252.webp') - }, - { - id: 3, - name: 'SSD-диски', - slug: CatalogLinksId.SSD, - image: require('@/assets/images/categoryCards/img-categories-03-187x325.webp') - }, - { - id: 4, - name: 'Автозапчасти', - slug: CatalogLinksId.AUTO_PARTS, - image: require('@/assets/images/categoryCards/img-categories-04-180x252.webp') - }, - { - id: 5, - name: 'Зарядные устройства', - slug: CatalogLinksId.CAR_CHARGES, - image: require('@/assets/images/categoryCards/img-categories-05-197x300.webp') - }, - { - id: 6, - name: 'Смартфоны и аксессуары', - slug: CatalogLinksId.SMARTPHONES, - image: require('@/assets/images/categoryCards/img-categories-06-235x325.webp') - } -] diff --git a/src/mockData/sliderData.ts b/src/mockData/heroData.ts similarity index 88% rename from src/mockData/sliderData.ts rename to src/mockData/heroData.ts index d6429e9b..09c024e1 100644 --- a/src/mockData/sliderData.ts +++ b/src/mockData/heroData.ts @@ -1,14 +1,13 @@ -import img1 from '@/assets/images/slider/img-intro-01-233x355.webp' import img2 from '@/assets/images/slider/slide2-940x370.webp' import img2_m from '@/assets/images/slider/slide2-m-530x530.webp' import img3 from '@/assets/images/slider/slide4-940x370.webp' import img3_m from '@/assets/images/slider/slide4-m-530x530.webp' -export const sliderData = [ +export const heroData = [ { id: 100, - urlImg: img1, - urlImg_m: img1, + urlImg: img3, + urlImg_m: img3_m, alt: 'Pacific blue', width: 233, height: 355, diff --git a/src/mockData/productsPageOptions.ts b/src/mockData/productsPageOptions.ts index 93b238ea..c6fbdd94 100644 --- a/src/mockData/productsPageOptions.ts +++ b/src/mockData/productsPageOptions.ts @@ -1,14 +1,3 @@ -export const SORT_OPTION = [ - 'Название А-Я', - 'Название Я-А', - 'Сначала дешевые', - 'Сначала дорогие', - 'Модель А-Я', - 'Модель Я-А' -] - -export const ITEMS_PER_PAGE_OPTION = [15, 25, 50, 75, 100] - export const TOTAL_PAGES = 10 import image1 from '@/assets/images/product/1-260x260.webp' diff --git a/src/mockData/searchData.ts b/src/mockData/searchData.ts index 8307f91f..e77b5a95 100644 --- a/src/mockData/searchData.ts +++ b/src/mockData/searchData.ts @@ -4,11 +4,13 @@ import { TResultData } from '@/shared/model/types/common' export const searchResponseData: TResultData = { data: [ { + id: 1, name: 'FM-трасмиттреры', slug: '/index.php?route=product/category&path=652', type: 'category' }, { + id: 2, name: 'GPS-треккеры', slug: '/index.php?route=product/category&path=196', type: 'category' diff --git a/src/mockData/sideBarProfileData.ts b/src/mockData/sideBarProfileData.ts new file mode 100644 index 00000000..97ef7cdf --- /dev/null +++ b/src/mockData/sideBarProfileData.ts @@ -0,0 +1,52 @@ +import { Routes } from '@/shared/config/routerConfig/routes' + +const user = [ + { + title: 'Мои данные', + routes: [ + { subtitle: 'Личный Кабинет', route: Routes.HOME }, // '/my-account' - данного роута пока нет + { subtitle: 'Изменить контактную информацию', route: Routes.HOME }, // '/edit-account' - данного роута пока нет + { subtitle: 'Изменить свой пароль', route: Routes.HOME }, // '/change-password' - данного роута пока нет + { subtitle: 'Изменить мои адреса', route: Routes.HOME }, // '/address-book' - данного роута пока нет + { subtitle: 'Посмотреть закладки', route: Routes.HOME } // '/wishlist' - данного роута пока нет + ] + } +] + +const noUser = [ + { + title: 'Мои данные', + routes: [ + { subtitle: 'Вход', route: Routes.LOGIN }, + { subtitle: 'Регистрация', route: Routes.HOME }, // '/create-account' - данного роута пока нет + { subtitle: 'Забыли пароль?', route: Routes.HOME }, // '/forgot-password' - данного роута пока нет + { subtitle: 'Личный Кабинет', route: Routes.HOME } // '/my-account' - данного роута пока нет + ] + } +] + +const forAll = [ + { + title: 'Мои заказы', + routes: [ + { subtitle: 'История заказов', route: Routes.HOME }, // '/order-history' - данного роута пока нет + { subtitle: 'Файлы для скачивания', route: Routes.HOME }, // '/downloads' - данного роута пока нет + { subtitle: 'Бонусные баллы: 0', route: Routes.HOME }, // '/reward-points' - данного роута пока нет + { subtitle: 'Запросы на возврат', route: Routes.HOME }, // '/returns' - данного роута пока нет + { subtitle: 'История транзакций', route: Routes.HOME }, // '/transactions' - данного роута пока нет + { subtitle: 'Периодические платежи', route: Routes.HOME } // '/index.php?route=account/recurring' - данного роута пока нет + ] + }, + { + title: 'Мой партнерский аккаунт', + routes: [{ subtitle: 'Регистрация партнерского аккаунта', route: Routes.HOME }] + }, // '/index.php?route=account/affiliate/add' - данного роута пока нет + { + title: 'Подписка', + routes: [{ subtitle: 'Подписаться или отказаться от рассылки новостей', route: Routes.HOME }] + } // '/newsletter' - данного роута пока нет +] + +export const userData = user.concat(forAll) + +export const noUserData = noUser.concat(forAll) diff --git a/src/pages/AboutUsPage/AboutUsPage.module.scss b/src/pages/AboutUsPage/AboutUsPage.module.scss new file mode 100644 index 00000000..fbd4bf6c --- /dev/null +++ b/src/pages/AboutUsPage/AboutUsPage.module.scss @@ -0,0 +1,15 @@ +@use '@/shared/styles/utils/variables' as var; + +.aboutUs { + display: flex; + flex-direction: column; + gap: 30px; + width: 100%; + padding: 0 0 56px; + + &__titleBox { + display: flex; + flex-direction: column; + gap: 10px; + } +} diff --git a/src/pages/AboutUsPage/AboutUsPage.tsx b/src/pages/AboutUsPage/AboutUsPage.tsx new file mode 100644 index 00000000..375d4288 --- /dev/null +++ b/src/pages/AboutUsPage/AboutUsPage.tsx @@ -0,0 +1,44 @@ +import { useEffect } from 'react' +import { useSelector } from 'react-redux' + +import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' +import AboutUs from '@/entities/AboutUs' +import { useAppDispatch } from '@/shared/libs/hooks/store' +import Breadcrumbs from '@/shared/ui/Breadcrumbs/Breadcrumbs' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' + +import styles from './AboutUsPage.module.scss' +import { getAboutUsSelector } from './model/selectors/selectors' +import { getAboutUs } from './model/services/getAboutUs' + +const links = [ + { heading: 'Главная', href: '/' }, + { heading: 'О нас', href: '' } +] + +const AboutUsPage = () => { + const dispatch = useAppDispatch() + const aboutUs = useSelector(getAboutUsSelector) + + useEffect(() => { + dispatch(getAboutUs()) + }, [dispatch]) + + return ( + +
    +
    + {aboutUs?.map((item, index) => ( + + {item.headline} + + ))} + +
    + {aboutUs?.map((item, index) => )} +
    +
    + ) +} + +export default AboutUsPage diff --git a/src/pages/AboutUsPage/model/selectors/selectors.ts b/src/pages/AboutUsPage/model/selectors/selectors.ts new file mode 100644 index 00000000..44475771 --- /dev/null +++ b/src/pages/AboutUsPage/model/selectors/selectors.ts @@ -0,0 +1,5 @@ +import { StateSchema } from '@/app/providers/StoreProvider' + +export const getAboutUsSelector = (state: StateSchema) => { + return state.aboutUs.result +} diff --git a/src/pages/AboutUsPage/model/services/getAboutUs.tsx b/src/pages/AboutUsPage/model/services/getAboutUs.tsx new file mode 100644 index 00000000..c9a30ece --- /dev/null +++ b/src/pages/AboutUsPage/model/services/getAboutUs.tsx @@ -0,0 +1,20 @@ +import { createAsyncThunk } from '@reduxjs/toolkit' + +import { ThunkConfig } from '@/app/providers/StoreProvider/config/StateSchema' +import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' +import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' + +import { IData } from '../types/types' + +export const getAboutUs = createAsyncThunk>( + 'aboutUs/getAboutUs', + async (_, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + try { + const { data } = await extra.api.get(`api/${ApiRoutes.ABOUTUS}`) + return data + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) diff --git a/src/pages/AboutUsPage/model/slice/aboutUsSlice.tsx b/src/pages/AboutUsPage/model/slice/aboutUsSlice.tsx new file mode 100644 index 00000000..a053b143 --- /dev/null +++ b/src/pages/AboutUsPage/model/slice/aboutUsSlice.tsx @@ -0,0 +1,35 @@ +import { createSlice } from '@reduxjs/toolkit' + +import { rejectedPayloadHandle } from '@/shared/api/rejectedPayloadHandle' + +import { getAboutUs } from '../services/getAboutUs' +import { IAboutUsSchema } from '../types/types' + +const initialState: IAboutUsSchema = { + isLoading: false, + result: [], + error: null +} + +export const aboutUsSlice = createSlice({ + name: 'aboutUs', + initialState, + reducers: {}, + extraReducers: builder => { + builder + .addCase(getAboutUs.pending, state => { + state.isLoading = true + state.error = null + }) + .addCase(getAboutUs.fulfilled, (state, { payload }) => { + state.isLoading = false + state.result = payload + }) + .addCase(getAboutUs.rejected, (state, { payload }) => { + state.isLoading = false + state.error = rejectedPayloadHandle(payload) + }) + } +}) + +export const { actions: aboutUsActions, reducer: aboutUsReducer } = aboutUsSlice diff --git a/src/pages/AboutUsPage/model/types/types.ts b/src/pages/AboutUsPage/model/types/types.ts new file mode 100644 index 00000000..a321c4c9 --- /dev/null +++ b/src/pages/AboutUsPage/model/types/types.ts @@ -0,0 +1,10 @@ +export interface IData { + headline?: string + text?: string +} + +export interface IAboutUsSchema { + isLoading: boolean + result?: IData[] + error?: string | string[] | null +} diff --git a/src/pages/CartPage/CartPage.module.scss b/src/pages/CartPage/CartPage.module.scss index 03e9bdb9..a942fbb7 100644 --- a/src/pages/CartPage/CartPage.module.scss +++ b/src/pages/CartPage/CartPage.module.scss @@ -2,51 +2,51 @@ @use '../../shared/styles/utils/mixins' as media; .container { - display: flex; - column-gap: 20px; - margin-bottom: 160px; - width: 100%; - - @include media.respond-to('large') { - flex-direction: column; - row-gap: 20px; - } + display: flex; + column-gap: 20px; + margin-bottom: 160px; + width: 100%; + + @include media.respond-to('large') { + flex-direction: column; + row-gap: 20px; + } } .cards { - display: flex; - flex-direction: column; - row-gap: 10px; - width: 100%; + display: flex; + flex-direction: column; + row-gap: 10px; + width: 100%; } .wrapper { - display: flex; - flex-direction: column; - row-gap: 10px; + display: flex; + flex-direction: column; + row-gap: 10px; } .heading { - margin-top: 20px; + margin-top: 20px; } .titles { - display: flex; - flex-direction: column; - align-self: start; - row-gap: 10px; - margin-bottom: 20px; - margin-top: 25px; + display: flex; + flex-direction: column; + align-self: start; + row-gap: 10px; + margin-bottom: 20px; + margin-top: 25px; } .link { - text-decoration: none; - color: var.$subtitle-color; - font-size: 13.5px; - font-weight: 400; - line-height: 16.2px; - - &:hover { - color: var.$theme-primary-color; - } -} \ No newline at end of file + text-decoration: none; + color: var.$subtitle-color; + font-size: 13.5px; + font-weight: 400; + line-height: 16.2px; + + &:hover { + color: var.$theme-primary-color; + } +} diff --git a/src/pages/CartPage/CartPage.tsx b/src/pages/CartPage/CartPage.tsx index 8d7b82b2..cfb03561 100644 --- a/src/pages/CartPage/CartPage.tsx +++ b/src/pages/CartPage/CartPage.tsx @@ -1,18 +1,19 @@ -import { useEffect, useState } from 'react' +import { useEffect } from 'react' +import { useSelector } from 'react-redux' import { Link } from 'react-router-dom' import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' import { CartCouponApply } from '@/features/CartCouponApply/ui/CartCouponApply/CartCouponApply' import { CartEdit } from '@/features/CartEdit/ui/CartEdit/CartEdit' -import { TCart, TCartItem, TCartItemExt, cartData } from '@/mockData/cartData' -import { getProduct } from '@/shared/api/maxboom/product' -import { MAX_PRODUCTS_NUMBER } from '@/shared/constants/constants' -import { TOrder } from '@/shared/model/types/common' +import { useAppDispatch } from '@/shared/libs/hooks/store' +import { ICart } from '@/shared/model/types/CartModel' import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' import Subheading from '@/shared/ui/Subheading/Subheading' import { MakeOrder } from '@/widgets/MakeOrder/ui/MakeOrder/MakeOrder' import styles from './CartPage.module.scss' +import { getCartSelector } from './model/selector' +import { getCartList } from './model/services' /** * Компонент страница корзины. На странице отображаются товары в корзине, можно изменять кол-во товаров в корзине, @@ -20,108 +21,19 @@ import styles from './CartPage.module.scss' */ const CartPage = () => { - const [cart, updateCart] = useState(cartData) - const [cartWithProducts, updateCartWithProducts] = useState([]) - const [order, setOrder] = useState({ - amount: 0, - productsSum: 0, - currency: '₽', - productsSumWithoutDiscount: 0, - total: 0 - }) + const dispatch = useAppDispatch() + const cart: ICart = useSelector(getCartSelector) useEffect(() => { - const _products = cart.products.map(item => { - const product = getProduct(item.article)! - return { ...product, quantity: item.quantity } - }) - updateCartWithProducts(_products) - }, [cart]) - - useEffect(() => { - let amount = 0 - let productsSum = 0 - for (let i = 0; i < cartWithProducts.length; i = i + 1) { - amount += cartWithProducts[i].quantity - productsSum += cartWithProducts[i].quantity * cartWithProducts[i].price - } - - setOrder({ - ...order, - amount: amount, - productsSum: productsSum, - productsSumWithoutDiscount: productsSum, - total: productsSum - }) - }, [cartWithProducts]) - - function increaseQuantity(productArticle: string) { - const products = new Array() - - for (let i = 0; i < cart.products.length; i = i + 1) { - const item = cart.products[i] - if (item.article === productArticle) { - if (item.quantity < MAX_PRODUCTS_NUMBER) { - item.quantity = item.quantity + 1 - products.push(item) - } - } else { - products.push(item) - } - } - - updateCart({ - ...cart, - products: products - }) - } - - function decreaseQuantity(productArticle: string) { - const products = new Array() - for (let i = 0; i < cart.products.length; i = i + 1) { - const item = cart.products[i] - if (item.article === productArticle) { - if (item.quantity > 1) { - item.quantity = item.quantity - 1 - } else { - item.quantity = 0 - } - } - products.push(item) - } - updateCart({ - ...cart, - products: products - }) - } - function setQuantity(productArticle: string, quantity: number) { - const products = new Array() - for (let i = 0; i < cart.products.length; i = i + 1) { - const item = cart.products[i] - if (item.article === productArticle) { - item.quantity = quantity - } - products.push(item) - } - updateCart({ - ...cart, - products: products - }) - } - - function removeProduct(productArticle: string) { - const newProductsArray = cart.products.filter(item => item.article !== productArticle) - updateCart({ - ...cart, - products: newProductsArray - }) - } + dispatch(getCartList()) + }, []) return (
    - Оформление заказа ({cart.weight.toFixed(2)} {cart.unit}) + Оформление заказа ({cart.cart_full_weight.toFixed(2)} кг) + {/* Кг приходит с бека или нет, tbd */} @@ -135,21 +47,19 @@ const CartPage = () => {
    - {cartWithProducts.map(item => { - return ( - - ) + {cart.products.map(item => { + return })}
    - - + total + item.amount, 0)} + currency="RUB" + productsSum={cart.cart_full_price} + productsSumWithoutDiscount={cart.cart_full_price} + total={cart.cart_full_price} + /> +
    diff --git a/src/pages/CartPage/model/selector.ts b/src/pages/CartPage/model/selector.ts new file mode 100644 index 00000000..4c120071 --- /dev/null +++ b/src/pages/CartPage/model/selector.ts @@ -0,0 +1,5 @@ +import { StateSchema } from '@/app/providers/StoreProvider' + +export const getCartSelector = (state: StateSchema) => { + return state.cart.cart +} diff --git a/src/pages/CartPage/model/services.ts b/src/pages/CartPage/model/services.ts new file mode 100644 index 00000000..2cdeb36b --- /dev/null +++ b/src/pages/CartPage/model/services.ts @@ -0,0 +1,21 @@ +import { createAsyncThunk } from '@reduxjs/toolkit' + +import { ThunkConfig } from '@/app/providers/StoreProvider/config/StateSchema' +import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' +import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' +import { ICart } from '@/shared/model/types/CartModel' + +export const getCartList = createAsyncThunk>( + 'cart', + async (_, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + try { + const { data } = await extra.api.get(`api/${ApiRoutes.CART_LIST}`, { + withCredentials: true + }) + return data + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) diff --git a/src/pages/CartPage/model/slice.ts b/src/pages/CartPage/model/slice.ts new file mode 100644 index 00000000..b87e37ca --- /dev/null +++ b/src/pages/CartPage/model/slice.ts @@ -0,0 +1,39 @@ +import { createSlice } from '@reduxjs/toolkit' + +import { rejectedPayloadHandle } from '@/shared/api/rejectedPayloadHandle' + +import { getCartList } from './services' +import { ICartSchema } from './types' + +const initialState: ICartSchema = { + isLoading: false, + cart: { + id: -1, + products: [], + user: -1, + cart_full_price: 0, + cart_full_weight: 0 + } +} + +export const cartSlice = createSlice({ + name: 'cart/list', + initialState, + reducers: {}, + extraReducers: builder => { + builder + .addCase(getCartList.pending, state => { + state.isLoading = true + }) + .addCase(getCartList.fulfilled, (state, { payload }) => { + state.isLoading = false + state.cart = payload + }) + .addCase(getCartList.rejected, (state, { payload }) => { + state.isLoading = false + state.error = rejectedPayloadHandle(payload) + }) + } +}) + +export const { actions: cartActions, reducer: cartReducer } = cartSlice diff --git a/src/pages/CartPage/model/types.ts b/src/pages/CartPage/model/types.ts new file mode 100644 index 00000000..4e4c3ca9 --- /dev/null +++ b/src/pages/CartPage/model/types.ts @@ -0,0 +1,7 @@ +import { ICart } from '@/shared/model/types/CartModel' + +export interface ICartSchema { + isLoading: boolean + cart: ICart + error?: string | string[] +} diff --git a/src/pages/ContactsPage/ContactsPage.module.scss b/src/pages/ContactsPage/ContactsPage.module.scss new file mode 100644 index 00000000..595d672e --- /dev/null +++ b/src/pages/ContactsPage/ContactsPage.module.scss @@ -0,0 +1,82 @@ +.contacts { + display: flex; + flex-direction: column; + padding-top: 24px; + padding-bottom: 56px; + + &__titleBox { + display: flex; + flex-direction: column; + gap: 10px; + width: 100%; + max-width: 1330px; + margin: 0 auto; + padding-bottom: 30px; + } + + &__map { + width: 100%; + width: 500px; + height: 500px; + background-color: #333; + } + + &__frame { + width: 100%; + min-height: 425px; + } + + &__info { + display: flex; + justify-content: space-between; + margin: 30px auto; + max-width: 1330px; + width: 100%; + gap: 50px; + } + + &__block { + display: flex; + flex-direction: column; + gap: 20px; + } + + &__blockAdress { + display: flex; + align-items: center; + gap: 10px; + } + + &__adress { + display: flex; + flex-direction: column; + width: 230px; + gap: 20px; + min-height: 325px; + } + + &__adressPhone { + min-height: 325px; + width: 150px; + } + + &__text { + font-weight: 600; + margin-bottom: 5px; + } + + &__city { + margin-left: 5px; + text-decoration: none; + color: #4791FF; + } + + &__city:hover { + opacity: 0.7; + } + + &__mall { + text-decoration: none; + color: #171717; + } +} diff --git a/src/pages/ContactsPage/ContactsPage.tsx b/src/pages/ContactsPage/ContactsPage.tsx new file mode 100644 index 00000000..4e423797 --- /dev/null +++ b/src/pages/ContactsPage/ContactsPage.tsx @@ -0,0 +1,85 @@ +import type { FC } from 'react' +import { Link } from 'react-router-dom' + +import YMap from '@/assets/icons/YMap.svg' +import FormQuestion from '@/features/FormQuestion/ui/FormQuestion' +import Breadcrumbs from '@/shared/ui/Breadcrumbs/Breadcrumbs' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import Map from '@/widgets/Map/Map' + +import styles from './ContactsPage.module.scss' + +const links = [ + { heading: 'Главная', href: '/' }, + { heading: 'Контакты', href: '' } +] + +const ContactsPage: FC = () => { + return ( +
    +
    + Контакты + +
    + +
    +
    + Основной магазин +
      +
    • Телефон
    • +
    • +7 977 848-02-28
    • +
    • Будни, с 10.00 до 20.00
    • +
    +
      +
    • Электронная почта
    • + + Maxboomofficial@yandex.ru + +
    +
      +
    • Адрес магазина
    • + + + г. Москва + +
    +
    +
    + Наши реквизиты +
    +

    Банковские и юридические реквизиты

    +
    +
      +
    • Наименование
    • +
    • Maxboom.ru
    • +
    +
    +
    +
    +
      +
    • ОГРН
    • +
    • 123456789
    • +
    +
      +
    • Адрес
    • +
    • 104329, Москва г, Талалихина
    • +
    • ул, дом № 1, корпус 3, оф.8
    • +
    +
    +
    +
      +
    • Телефон
    • +
    • +7 977 848-02-28
    • +
    +
    +
    + +
    +
    + ) +} + +export default ContactsPage diff --git a/src/pages/DeliveryPage/DeliveryPage.module.scss b/src/pages/DeliveryPage/DeliveryPage.module.scss new file mode 100644 index 00000000..51b13192 --- /dev/null +++ b/src/pages/DeliveryPage/DeliveryPage.module.scss @@ -0,0 +1,13 @@ +.delivery { + display: flex; + flex-direction: column; + gap: 30px; + width: 100%; + padding: 0 0 56px; + + &__titleBox { + display: flex; + flex-direction: column; + gap: 10px; + } +} diff --git a/src/pages/DeliveryPage/DeliveryPage.tsx b/src/pages/DeliveryPage/DeliveryPage.tsx new file mode 100644 index 00000000..8abdd721 --- /dev/null +++ b/src/pages/DeliveryPage/DeliveryPage.tsx @@ -0,0 +1,25 @@ +import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' +import Breadcrumbs from '@/shared/ui/Breadcrumbs/Breadcrumbs' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' + +import styles from './DeliveryPage.module.scss' + +const links = [ + { heading: 'Главная', href: '/' }, + { heading: 'Информация о доставке', href: '' } +] + +const DeliveryPage = () => { + return ( + +
    +
    + Информация о доставке + +
    +
    +
    + ) +} + +export default DeliveryPage diff --git a/src/pages/FavoritesPage/FavoritesPage.module.scss b/src/pages/FavoritesPage/FavoritesPage.module.scss index a97c1975..ea75fadb 100644 --- a/src/pages/FavoritesPage/FavoritesPage.module.scss +++ b/src/pages/FavoritesPage/FavoritesPage.module.scss @@ -1,3 +1,28 @@ -.heading { - align-self: flex-start; +@use '../../shared/styles/utils/mixins' as media; + +.pageDescriptor { + width: 100%; + display: flex; + flex-direction: column; + gap: 10px; +} + +.favoritePage__container { + width: 100%; + display: flex; + justify-content: start; + align-items: start; + gap: 10px; + + @include media.respond-to('middle') { + flex-direction: column; + gap: 10px; + } +} + +.favoritePage__list { + max-width: calc(292px * 3 + 60px); + display: flex; + flex-wrap: wrap; + gap: 30px; } diff --git a/src/pages/FavoritesPage/FavoritesPage.tsx b/src/pages/FavoritesPage/FavoritesPage.tsx index 2e426205..4df50a85 100644 --- a/src/pages/FavoritesPage/FavoritesPage.tsx +++ b/src/pages/FavoritesPage/FavoritesPage.tsx @@ -1,19 +1,97 @@ +import { FC, KeyboardEvent, Suspense, useState } from 'react' + import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' +import { useFavorite } from '@/entities/Favorite/model/hooks/useFavorite' +import SideBarButton from '@/entities/SideBarButton' +import SideBarMenuModal from '@/features/SideBarMenuModal' +import { Routes } from '@/shared/config/routerConfig/routes' +import { useResize } from '@/shared/libs/hooks/useResize' +import { ECardView } from '@/shared/model/types/common' +import Breadcrumbs from '@/shared/ui/Breadcrumbs/Breadcrumbs' import Heading from '@/shared/ui/Heading/Heading' -import Subheading from '@/shared/ui/Subheading/Subheading' +import Modal from '@/shared/ui/Modal/Modal' +import Spinner from '@/shared/ui/Spinner/Spinner' +import { ProductsList } from '@/widgets/ProductsList/ProductsList' +import SideBarMenu from '@/widgets/SideBarMenu' import styles from './FavoritesPage.module.scss' +const links = [ + { heading: 'Главная', href: '/' }, + { heading: 'Личный Кабинет', href: Routes.LOGIN }, + { heading: 'Избранные товары', href: '' } +] + /** * Страница с избранными товарами */ -const FavoritesPage = () => { +export const FavoritesPage: FC = () => { + const favoriteProducts = useFavorite() + const { isScreenMd } = useResize() + const [isModalOpen, setIsModalOpen] = useState(false) + const [isModalClosing, setIsModalClosing] = useState(false) + const [user, setUser] = useState('Elon Musk') // TODO получать пользователя из редакса + + const handleClick = () => { + setIsModalOpen(true) + } + + const changeModalState = () => { + setIsModalOpen(!isModalOpen) + } + + const handleLogOut = () => { + setUser('') + } + + const handleKeyUp = (e: KeyboardEvent) => { + if (e.code === 'Enter' || e.code === 'Space') { + e.preventDefault() + handleLogOut() + } + } + return ( - Избранные товары - В разработке +
    + Избранные товары + +
    +
    + {isScreenMd ? ( + + ) : ( + + )} +
    + +
    +
    + {isModalOpen && ( + + }> + + + + )}
    ) } - -export default FavoritesPage diff --git a/src/pages/FeedbackPage/FeedbackPage.module.scss b/src/pages/FeedbackPage/FeedbackPage.module.scss new file mode 100644 index 00000000..e203c8f7 --- /dev/null +++ b/src/pages/FeedbackPage/FeedbackPage.module.scss @@ -0,0 +1,49 @@ +@use '../../shared/styles/utils/variables' as color; +@use '../../shared/styles/utils/mixins' as media; + +.feedbackpage { + width: 100%; + display: flex; + flex-direction: column; + align-items: flex-start; + + &__pageDescriptor { + width: 100%; + display: flex; + flex-direction: column; + gap: 10px; + } + + &__container { + margin-top: 40px; + width: 100%; + display: flex; + align-items: flex-start; + gap: 25px; + + @include media.respond-to('large') { + flex-direction: column-reverse; + } + } + + &__rightcolumn { + width: 35%; + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 20px; + + @include media.respond-to('large') { + width: 100%; + } + } + + &__submitbtn { + width: 100%; + transition: opacity 0.5s; + + &:hover { + opacity: 0.8; + } + } +} diff --git a/src/pages/FeedbackPage/FeedbackPage.tsx b/src/pages/FeedbackPage/FeedbackPage.tsx new file mode 100644 index 00000000..9ff970b8 --- /dev/null +++ b/src/pages/FeedbackPage/FeedbackPage.tsx @@ -0,0 +1,82 @@ +import { useEffect, useState } from 'react' +import { useSelector } from 'react-redux' + +import { StateSchema } from '@/app/providers/StoreProvider' +import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' +import { bodyScrollControl } from '@/shared/libs/helpers/popupHelper' +import { useAppDispatch } from '@/shared/libs/hooks/store' +import { useResize } from '@/shared/libs/hooks/useResize' +import Breadcrumbs from '@/shared/ui/Breadcrumbs/Breadcrumbs' +import { Button, ButtonSize, ButtonTheme } from '@/shared/ui/Button/Button' +import Heading from '@/shared/ui/Heading/Heading' +import { AveregeMark } from '@/widgets/AveregeMark/AveregeMark' +import { FeedbackForm } from '@/widgets/FeedbackForm/FeedbackForm' +import { FeedbackList } from '@/widgets/FeedbackList/FeedbackList' + +import styles from './FeedbackPage.module.scss' +import { getAverageMark, getFeedbacks } from './model/slice/feedbackSlice' +import { FeedbackFormPopup } from './ui/FeedbackFormPopup/FeedbackFormPopup' + +/** + * Страница отзывов о сайте. + * + */ +export const FeedbackPage = () => { + const dispatch = useAppDispatch() + const feedback = useSelector((store: StateSchema) => store.feedback) + const { isScreenLg } = useResize() + const [showPopup, setShowPopup] = useState(false) + + const links = [ + { heading: 'Главная', href: '/' }, + { heading: 'Отзывы о магазине', href: '' } + ] + + useEffect(() => { + //TODO реализовать пагинацию, временно отображать 1-ую страницу + dispatch(getFeedbacks(1)) + + dispatch(getAverageMark()) + }, []) + + const showPopupBtnClickHandle = (e: React.MouseEvent) => { + e.stopPropagation() + setShowPopup(true) + bodyScrollControl(true) + } + + return ( + +
    +
    + Отзывы о магазине + +
    +
    + +
    + + {isScreenLg ? ( + + ) : ( + + )} +
    +
    +
    + {showPopup && } +
    + ) +} diff --git a/src/pages/FeedbackPage/model/slice/feedbackSlice.ts b/src/pages/FeedbackPage/model/slice/feedbackSlice.ts new file mode 100644 index 00000000..2c459349 --- /dev/null +++ b/src/pages/FeedbackPage/model/slice/feedbackSlice.ts @@ -0,0 +1,80 @@ +import { createAsyncThunk, createSlice } from '@reduxjs/toolkit' + +import { ThunkConfig } from '@/app/providers/StoreProvider/config/StateSchema' +import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' +import { rejectedPayloadHandle } from '@/shared/api/rejectedPayloadHandle' +import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' + +import { IAverageMark, IFeedback, IFeedbackSchema } from '../types/types' + +export const getFeedbacks = createAsyncThunk>( + 'feedback/getFeedbacks', + async (page, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + try { + const { data } = await extra.api.get(`api/${ApiRoutes.STORE_REVIEWS}/?page=${page}`) + + return data.results + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) + +export const getAverageMark = createAsyncThunk>( + 'feedback/getAverageMark', + async (_, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + try { + const { data } = await extra.api.get(`api/${ApiRoutes.STORE_REVIEWS}/average-rate/`) + return data + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) + +const initialState: IFeedbackSchema = { + isLoading: false, + feedbacks: [], + averageMark: { + delivery_speed_score__avg: 0, + quality_score__avg: 0, + price_score__avg: 0, + average_score__avg: 0 + } +} + +export const feedbackSlice = createSlice({ + name: 'feedback', + initialState, + reducers: {}, + extraReducers: builder => { + builder + .addCase(getFeedbacks.pending, state => { + state.isLoading = true + }) + .addCase(getFeedbacks.fulfilled, (state, { payload }) => { + state.isLoading = false + state.feedbacks = payload + }) + .addCase(getFeedbacks.rejected, (state, { payload }) => { + state.isLoading = false + state.error = rejectedPayloadHandle(payload) + }), + builder + .addCase(getAverageMark.pending, state => { + state.isLoading = true + }) + .addCase(getAverageMark.fulfilled, (state, { payload }) => { + state.isLoading = false + state.averageMark = payload + }) + .addCase(getAverageMark.rejected, (state, { payload }) => { + state.isLoading = false + state.error = rejectedPayloadHandle(payload) + }) + } +}) + +export const { actions: feedbackActions, reducer: feedbackReducer } = feedbackSlice diff --git a/src/pages/FeedbackPage/model/types/types.ts b/src/pages/FeedbackPage/model/types/types.ts new file mode 100644 index 00000000..605b4a3f --- /dev/null +++ b/src/pages/FeedbackPage/model/types/types.ts @@ -0,0 +1,37 @@ +export interface IGetFeedbackResponse { + count: number + previous: string + next: string + results: IFeedback[] +} + +export interface IFeedback { + pk: number + text: string + pub_date: string + author_name: string + author_email: string + average_score: number + delivery_speed_score: number + quality_score: number + price_score: number + replay: IFeedbackReplay | null +} +export interface IFeedbackReplay { + text: string + pub_date: string + name: string +} + +export interface IAverageMark { + delivery_speed_score__avg: number + quality_score__avg: number + price_score__avg: number + average_score__avg: number +} +export interface IFeedbackSchema { + isLoading: boolean + feedbacks: IFeedback[] + averageMark: IAverageMark + error?: string | string[] +} diff --git a/src/pages/FeedbackPage/ui/FeedbackFormPopup/FeedbackFormPopup.module.scss b/src/pages/FeedbackPage/ui/FeedbackFormPopup/FeedbackFormPopup.module.scss new file mode 100644 index 00000000..5358b267 --- /dev/null +++ b/src/pages/FeedbackPage/ui/FeedbackFormPopup/FeedbackFormPopup.module.scss @@ -0,0 +1,50 @@ +@use '../../../../shared/styles/utils/variables' as color; + +.feedbackformpopup { + position: absolute; + left: 0; + top: 0; + width: 100vw; + height: 100vh; + background-color: rgb(0 0 0 / 80%); + z-index: 10; + + &__wrapper { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 90%; + max-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + gap: 40px; + background-color: color.$white; + + &::-webkit-scrollbar { + width: 0; + } + } + + &__closebtn { + position: absolute; + top: 10px; + right: 10px; + background-color: transparent; + color: color.$theme-primary-color; + border: none; + padding: 0; + margin: 0; + font-size: 30px; + font-weight: 600; + line-height: 1; + cursor: pointer; + opacity: 1; + transition: all 0.4s ease; + + &:hover { + opacity: 0.8; + } + } +} diff --git a/src/pages/FeedbackPage/ui/FeedbackFormPopup/FeedbackFormPopup.tsx b/src/pages/FeedbackPage/ui/FeedbackFormPopup/FeedbackFormPopup.tsx new file mode 100644 index 00000000..ca83e795 --- /dev/null +++ b/src/pages/FeedbackPage/ui/FeedbackFormPopup/FeedbackFormPopup.tsx @@ -0,0 +1,37 @@ +import { Dispatch, FC, SetStateAction } from 'react' + +import { bodyScrollControl } from '@/shared/libs/helpers/popupHelper' +import { Button } from '@/shared/ui/Button/Button' +import { FeedbackForm } from '@/widgets/FeedbackForm/FeedbackForm' + +import styles from './FeedbackFormPopup.module.scss' + +interface IFeedbackFormPopupProp { + setShowPopup: Dispatch> +} + +/** + * Попап с формой добавления отзыва + * + * @param {Dispatch>} setShowPopup Функция управления состоянием видимости попапа + */ +export const FeedbackFormPopup: FC = ({ setShowPopup }) => { + const closeClickHandle = (e: React.MouseEvent) => { + e.stopPropagation() + setShowPopup(false) + bodyScrollControl(false) + } + + return ( +
    +
    + + +
    +
    + ) +} diff --git a/src/pages/FormReturnPage/FormReturnPage.module.scss b/src/pages/FormReturnPage/FormReturnPage.module.scss new file mode 100644 index 00000000..e0ea4a2a --- /dev/null +++ b/src/pages/FormReturnPage/FormReturnPage.module.scss @@ -0,0 +1,50 @@ +@use '../../shared/styles/utils/mixins' as media; + +.formReturn { + display: flex; + flex-direction: column; + gap: 30px; + width: 100%; + padding: 0 0 56px; + + &__titleBox { + display: flex; + flex-direction: column; + gap: 10px; + } + + &__title { + width: 100%; + } + + &__mainBox { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 20px; + + @include media.respond-to('middle') { + flex-direction: column; + gap: 10px; + } + } + + &__burger { + position: sticky; + display: flex; + justify-content: center; + align-items: center; + top: 20px; + width: 342px; + height: 255px; + border-radius: 10px; + border: 2px solid red; + + @include media.respond-to('middle') { + width: 240px; + height: 48px; + } + } +} + + diff --git a/src/pages/FormReturnPage/FormReturnPage.tsx b/src/pages/FormReturnPage/FormReturnPage.tsx new file mode 100644 index 00000000..3b8ccb32 --- /dev/null +++ b/src/pages/FormReturnPage/FormReturnPage.tsx @@ -0,0 +1,90 @@ +import { KeyboardEvent, FC, Suspense, lazy, useState } from 'react' + +import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' +import SideBarButton from '@/entities/SideBarButton' +import { Routes } from '@/shared/config/routerConfig/routes' +import { useResize } from '@/shared/libs/hooks/useResize' +import Breadcrumbs from '@/shared/ui/Breadcrumbs/Breadcrumbs' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import Modal from '@/shared/ui/Modal/Modal' +import Spinner from '@/shared/ui/Spinner/Spinner' +import FormReturn from '@/widgets/FormReturn' +import SideBarMenu from '@/widgets/SideBarMenu' + +import styles from './FormReturnPage.module.scss' + +const SideBarMenuModal = lazy(() => import('@/features/SideBarMenuModal')) + +const links = [ + { heading: 'Главная', href: Routes.HOME }, + { heading: 'Личный Кабинет', href: Routes.LOGIN }, + { heading: 'Возврат товара', href: '' } +] + +const FormReturnPage: FC = () => { + const [isModalOpen, setIsModalOpen] = useState(false) + const [isModalClosing, setIsModalClosing] = useState(false) + const [user, setUser] = useState('Elon Musk') // позже юзера будем получать из редакса + + const { isScreenMd } = useResize() + + const changeModalState = () => { + setIsModalOpen(!isModalOpen) + } + + const handleClick = () => { + setIsModalOpen(true) + } + + const handleLogOut = () => { + setUser('') + } + + const handleKeyUp = (e: KeyboardEvent) => { + if (e.code === 'Enter' || e.code === 'Space') { + e.preventDefault() + handleLogOut() + } + } + + return ( + <> + {isModalOpen && ( + + }> + + + + )} + +
    +
    + + Возврат товара + + +
    +
    + {isScreenMd ? ( + + ) : ( + + )} + +
    +
    +
    + + ) +} + +export default FormReturnPage diff --git a/src/pages/HelpPage/HelpPage.module.scss b/src/pages/HelpPage/HelpPage.module.scss new file mode 100644 index 00000000..3429efb5 --- /dev/null +++ b/src/pages/HelpPage/HelpPage.module.scss @@ -0,0 +1,34 @@ +@use '../../shared/styles/utils/variables' as var; + +.help { + align-self: flex-start; + + &__path { + text-align: left; + margin: 0; + padding: 0; + } + + &__cats { + display: flex; + flex-direction: column; + max-width: 340px; + padding: 40px 30px 65px; + align-items: flex-start; + border-radius: 10px; + background: var.$white; + max-height: 300px; + } + + &__wrapper { + display: flex; + gap: 30px; + } + + &__container { + display: flex; + flex-direction: column; + max-width: 100%; + gap: 30px; + } +} diff --git a/src/pages/HelpPage/HelpPage.tsx b/src/pages/HelpPage/HelpPage.tsx new file mode 100644 index 00000000..3dfce32f --- /dev/null +++ b/src/pages/HelpPage/HelpPage.tsx @@ -0,0 +1,31 @@ +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import Subheading from '@/shared/ui/Subheading/Subheading' +import FormReturn from '@/widgets/FormReturn/ui/FormReturn' +import HelpCategories from '@/widgets/HelpCategories/HelpCategories' + +import WrapperForMainContent from '../../components/WrapperForMainContent/WrapperForMainContent' + +import styles from './HelpPage.module.scss' + +const HelpPage = () => { + return ( + +
    +
    + Помощь + Главная/Помощь +
    + Категории + +
    +
    +
    + Форма возврата + +
    +
    +
    + ) +} + +export default HelpPage diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index a5f22d1c..1a8e1b0e 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -1,22 +1,26 @@ -import ArticleBlock from '@/components/ArticleBlock/ArticleBlock' -import SliderBlock from '@/components/SliderBlock/SliderBlock' import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' import { TEXT_CUSTOMERS_ABOUT_US, LINK_REVIEWS_ALL } from '@/shared/constants/constants' import Advantages from '@/widgets/Advantages/ui/Advantages/Advantages' +import ArticleBlock from '@/widgets/ArticleBlock/ArticleBlock' +import BannerBlock from '@/widgets/BannerBlock/ui/BannerBlock' import BlogBlock from '@/widgets/BlogBlock/ui/BlogBlock' import BrandsBlock from '@/widgets/BrandBlock/ui/BrandBlock/BrandBlock' import CategoryGrid from '@/widgets/CategoryGrid/CategoryGrid' +import HeroBlock from '@/widgets/HeroBlock/ui/HeroBlock/HeroBlock' import NewsBlock from '@/widgets/NewsBlock/ui/NewsBlock' import ReviewsBlock from '@/widgets/ReviewsBlock/ui/ReviewsBlock/ReviewsBlock' import StoriesBlock from '@/widgets/StoriesBlock/ui/StoriesBlock' import Subscribe from '@/widgets/Subscribe/Subscribe' +import { ViewedProducts } from '@/widgets/ViewedProducts/ViewedProducts' const MainPage = () => { return ( <> - + + + @@ -24,6 +28,7 @@ const MainPage = () => { + diff --git a/src/pages/ProductPage/ProductPage.module.scss b/src/pages/ProductPage/ProductPage.module.scss new file mode 100644 index 00000000..d4a58af9 --- /dev/null +++ b/src/pages/ProductPage/ProductPage.module.scss @@ -0,0 +1,6 @@ +.pageDescriptor { + width: 100%; + display: flex; + flex-direction: column; + gap: 10px; +} diff --git a/src/pages/ProductPage/ProductPage.tsx b/src/pages/ProductPage/ProductPage.tsx new file mode 100644 index 00000000..4fc63ffd --- /dev/null +++ b/src/pages/ProductPage/ProductPage.tsx @@ -0,0 +1,55 @@ +import { useEffect } from 'react' +import { useSelector } from 'react-redux' +import { useParams } from 'react-router' + +import { StateSchema } from '@/app/providers/StoreProvider' +import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' +import { useAppDispatch } from '@/shared/libs/hooks/store' +import Breadcrumbs from '@/shared/ui/Breadcrumbs/Breadcrumbs' +import Heading from '@/shared/ui/Heading/Heading' +import Advantages from '@/widgets/Advantages/ui/Advantages/Advantages' +import { Product } from '@/widgets/Product/Product' +import { ProductInfo } from '@/widgets/ProductInfo/ProductInfo' +import { ViewedProducts } from '@/widgets/ViewedProducts/ViewedProducts' + +import { addToViewedProducts } from './model/functions/functions' +import { getProduct } from './model/slice/productSlice' +import styles from './ProductPage.module.scss' + +/** + * Страница с выбранным товаром. + * @ /slug - идентификатор товара в backend передаваемый в url + */ +export const ProductPage = () => { + const dispatch = useAppDispatch() + const productStore = useSelector((store: StateSchema) => store.product) + const { slug } = useParams() + + const links = [ + { heading: 'Главная', href: '/' }, + { heading: productStore.product.name, href: '' } + ] + + useEffect(() => { + if (slug) dispatch(getProduct(slug)) + }, [slug]) + + useEffect(() => { + addToViewedProducts(productStore.product) + }, [productStore.product]) + + return ( + <> + +
    + {productStore.product.name} + +
    + + + + +
    + + ) +} diff --git a/src/pages/ProductPage/model/constants/constants.ts b/src/pages/ProductPage/model/constants/constants.ts new file mode 100644 index 00000000..47d60ae1 --- /dev/null +++ b/src/pages/ProductPage/model/constants/constants.ts @@ -0,0 +1,62 @@ +//TO DO удалить после реализации подклчюения к API +export const testProd = { + isPopular: true, + id: 2966, + category: 'Круги шлифовальные', + brand: '3M', + images: [ + { + image: 'https://ir.ozone.ru/s3/multimedia-b/wc1000/6661991531.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-9/wc1000/6661991493.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-j/wc1000/6661991575.jpg' + }, + { + image: + 'https://maxboom.ru/image/cachewebp/catalog/vol862/part86256/86256350/images/big/1-1000x1000.webp' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-y/wc1000/6661991482.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-v/wc1000/6661991551.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-1-x/wc1000/6928616361.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-n/wc1000/6767151887.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-d/wc1000/6767151877.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-y/wc1000/6661991482.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-v/wc1000/6661991551.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-1-x/wc1000/6928616361.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-n/wc1000/6767151887.jpg' + }, + { + image: 'https://ir.ozone.ru/s3/multimedia-d/wc1000/6767151877.jpg' + } + ], + price: 728, + name: '3M Круг P5000 Trizact Hookit матирующий 150мм 30362', + slug: '3m-krug-p5000-trizact-hookit-matiruyuschij-150mm-30362-119465471', + description: + 'Диск 3M Trizact Foam Disc P5000, 150 ммКомплект по фото. Забавно, но в сети запрос примеры текстов копирайтеров почти неразлучен с хвостами типа лучшие.Топ-20 лучших продающих статей, 50 лучших текстов для лендинга и т.д. Посыл прост: если вы копирайтеры, делайте так же, и Welcome To Top. А если заказчики, то теперь вам ясно, что такое успешный копирайтинг. И никаких проблем? Как бы не так. Проблема в том, что познание хорошего не работает без познания плохого. Слепое равнение на топов гарантировано загонит копирайтера-новичка в творческий тупик. А клиента превратит в маньяка, не способного объяснить, что ему не нравится. Конечно, контент контенту рознь. К примеру, не надо быть копирайтером, дабы понять, что с этим текстом что-то не так:', + code: 119465471, + wb_urls: 'https://www.wildberries.ru/catalog/119465471/detail.aspx', + quantity: 999999, + is_deleted: false, + wholesale: 0 +} diff --git a/src/pages/ProductPage/model/functions/functions.ts b/src/pages/ProductPage/model/functions/functions.ts new file mode 100644 index 00000000..08f636f5 --- /dev/null +++ b/src/pages/ProductPage/model/functions/functions.ts @@ -0,0 +1,26 @@ +import { VIEWED_PRODUCTS_LIMIT } from '@/shared/constants/constants' +import { SESSION_STORAGE } from '@/shared/constants/sessionStorage' + +import { TProduct } from '../types/productTypes' + +/** + * Функция добавления товара в список просмотренных товаров viewedProducts в session storage. + * @param product: TProduct - текущий товар + */ +export const addToViewedProducts = (product: TProduct): void => { + const viewedProductsStr = sessionStorage.getItem(SESSION_STORAGE.VIEWED) || '[]' + const viewedProducts: TProduct[] = JSON.parse(viewedProductsStr) as TProduct[] + + if (product && product.slug && !includesProduct(product, viewedProducts)) { + if (viewedProducts.length === VIEWED_PRODUCTS_LIMIT) { + viewedProducts.shift() + } + viewedProducts.push(product) + + sessionStorage.setItem(SESSION_STORAGE.VIEWED, JSON.stringify(viewedProducts)) + } +} + +function includesProduct(product: TProduct, viewedProducts: TProduct[]): boolean { + return viewedProducts.some(p => p.slug === product.slug) +} diff --git a/src/pages/ProductPage/model/slice/productSlice.ts b/src/pages/ProductPage/model/slice/productSlice.ts new file mode 100644 index 00000000..74cd69a4 --- /dev/null +++ b/src/pages/ProductPage/model/slice/productSlice.ts @@ -0,0 +1,73 @@ +import { createAsyncThunk, createSlice } from '@reduxjs/toolkit' + +import { ThunkConfig } from '@/app/providers/StoreProvider/config/StateSchema' +import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' +import { rejectedPayloadHandle } from '@/shared/api/rejectedPayloadHandle' +import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' + +import { IObjectWithImage, TProduct, TProductSchema } from '../types/productTypes' + +export const getProduct = createAsyncThunk>( + 'product/getProduct', + async (slug, thunkAPI) => { + const { rejectWithValue, extra } = thunkAPI + + try { + const response = await extra.api.get(`api/${ApiRoutes.PRODUCT}/${slug}`) + return response.data + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) + +const initialState: TProductSchema = { + error: [''], + isLoading: false, + product: { + label_popular: false, + label_hit: false, + id: 0, + category: '', + brand: '', + price: 0, + name: '', + slug: '', + description: '', + code: 0, + wb_urls: '', + quantity: 0, + is_deleted: false, + wholesale: 0, + images: [] + } +} + +const productSlice = createSlice({ + name: 'product', + initialState, + reducers: {}, + extraReducers: builder => { + builder + .addCase(getProduct.pending, state => { + state.isLoading = true + state.error = undefined + }) + .addCase(getProduct.fulfilled, (state: TProductSchema, { payload }) => { + state.isLoading = false + state.product = payload + state.product.images = payload.images.map((img: IObjectWithImage, index: number) => { + return { + image: img.image, + index + } + }) + }) + .addCase(getProduct.rejected, (state: TProductSchema, { payload }) => { + state.isLoading = false + state.error = rejectedPayloadHandle(payload) + }) + } +}) + +export const productSliceReducer = productSlice.reducer diff --git a/src/pages/ProductPage/model/types/productTypes.ts b/src/pages/ProductPage/model/types/productTypes.ts new file mode 100644 index 00000000..c8b1d290 --- /dev/null +++ b/src/pages/ProductPage/model/types/productTypes.ts @@ -0,0 +1,30 @@ +export interface IObjectWithImage { + image: string + index?: number +} + +export type TImgList = Array + +export type TProduct = { + label_popular: boolean + label_hit: boolean + id: number + category: string + brand: string + price: number + name: string + slug: string + description: string + code: number + wb_urls: string + quantity: number + is_deleted: boolean + wholesale: number + images: TImgList +} + +export type TProductSchema = { + product: TProduct + isLoading?: boolean + error?: string | string[] +} diff --git a/src/pages/ProductsPage/ProductsPage.tsx b/src/pages/ProductsPage/ProductsPage.tsx index d923b96f..a6778b27 100644 --- a/src/pages/ProductsPage/ProductsPage.tsx +++ b/src/pages/ProductsPage/ProductsPage.tsx @@ -1,15 +1,25 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' +import { useSelector } from 'react-redux' +import { useLocation } from 'react-router' -import { CardPreview } from '@/components/CardPreview/CardPreview' -import { CategoryList } from '@/components/CategoryList/CategoryList' +import { selectFilterProducts, selectFilterQuantity } from '@/components/Dropdown/selectors/selectors' +import { setFilterProducts, setProductQuantityFilter } from '@/components/Dropdown/slice/filtersSlice' import { PageControls } from '@/components/PageControls/PageControls' +import { PageControlsSkeletons } from '@/components/PageControls/PageControlsSkeletons/PageControlsSkeletons' import { PageDescription } from '@/components/PageDescription/PageDescription' +import { PageDescriptionSkeleton } from '@/components/PageDescription/PageDescriptionSkeleton/PageDescriptionSkeleton' import { Pagination } from '@/components/Pagination/Pagination' -import { ProductCard } from '@/components/ProductCard/ProductCard' import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' -import { ITEMS_PER_PAGE_OPTION, SORT_OPTION, TOTAL_PAGES } from '@/mockData/productsPageOptions' +import { selectCategorySlug } from '@/entities/Category/selectors/categorySelectors' +import { TOTAL_PAGES } from '@/mockData/productsPageOptions' +import { getLoading, getProductsOfCategorySelector } from '@/pages/ProductsPage/selectors/selectors' +import { getProducts } from '@/pages/ProductsPage/services/getProducts' +import { ITEMS_PER_PAGE_OPTION, NUMBER_OF_PRODUCTS, SORT_OPTION } from '@/shared/constants/constants' +import { useAppDispatch } from '@/shared/libs/hooks/store' import { ECardView } from '@/shared/model/types/common' -import Modal from '@/shared/ui/Modal/Modal' +import { CategoryList } from '@/widgets/CategoryList/CategoryList' +import { ProductSkeleton } from '@/widgets/ProductItem/ProductSkeleton/ProductSkeleton' +import { ProductsList } from '@/widgets/ProductsList/ProductsList' import styles from './ProductsPage.module.scss' @@ -23,19 +33,34 @@ import styles from './ProductsPage.module.scss' export const ProductsPage = () => { const [cardView, setCardView] = useState(ECardView.GRID) const [currentPage, setCurrentPage] = useState(1) - const [isModalOpen, setIsModalOpen] = useState(false) - const [isModalClosing, setIsModalClosing] = useState(false) + + const dispatch = useAppDispatch() + + const categoriesProducts = useSelector(getProductsOfCategorySelector) + const categorySlug = useSelector(selectCategorySlug) + + const location = useLocation() + + const categoryId = Number(location.search.replace('?id=', '')) + + const selectProductsFilter = useSelector(selectFilterProducts) + const filterProducts = selectProductsFilter ? `&ordering=${selectProductsFilter.value}` : '' + + const selectQuantityFilter = useSelector(selectFilterQuantity) + const filterQuantity = selectQuantityFilter ? `&limit=${selectQuantityFilter.value}` : '' + + const isLoading = useSelector(getLoading) const handleSortChange: React.ChangeEventHandler = event => { - // Handle sort change logic here - // eslint-disable-next-line @typescript-eslint/no-unused-vars const selectedOption = event.target.value + const setCategoryFilters = SORT_OPTION.find(item => item.name === selectedOption) + dispatch(setFilterProducts(setCategoryFilters)) } const handleItemsPerPageChange: React.ChangeEventHandler = event => { - // Handle items per page change logic here - // eslint-disable-next-line @typescript-eslint/no-unused-vars const selectedOption = event.target.value + const setQuantityFilters = ITEMS_PER_PAGE_OPTION.find(item => item.name === selectedOption) + dispatch(setProductQuantityFilter(setQuantityFilters)) } const handleCardViewChange = (view: ECardView) => { @@ -56,38 +81,46 @@ export const ProductsPage = () => { if (currentPage < TOTAL_PAGES) setCurrentPage(currentPage + 1) } - const changeModalState = () => { - setIsModalOpen(!isModalOpen) - } + useEffect(() => { + dispatch(getProducts({ categoryId, filterProducts, filterQuantity })) + }, [categoryId, categorySlug, filterProducts, filterQuantity]) return ( <> - {isModalOpen && ( - - - - )} - + {isLoading ? ( + + ) : ( + + )}
    -
    - {Array.from({ length: 8 }, (_, index) => ( - - ))} + {isLoading ? ( + <> + + {Array(NUMBER_OF_PRODUCTS) + .fill(0) + .map((_, i) => ( + + ))} + + ) : categoriesProducts.results.length > 0 ? ( + <> + + + + ) : ( + 'В данной категории нет товаров' + )}
    { + return state.categoryProduct.productsData +} + +export const getLoading = (state: RootState) => { + return state.categoryProduct.isLoading +} diff --git a/src/pages/ProductsPage/services/getProducts.ts b/src/pages/ProductsPage/services/getProducts.ts new file mode 100644 index 00000000..ec9ec5d7 --- /dev/null +++ b/src/pages/ProductsPage/services/getProducts.ts @@ -0,0 +1,31 @@ +import { createAsyncThunk } from '@reduxjs/toolkit' + +import { ThunkConfig } from '@/app/providers/StoreProvider/config/StateSchema' +import { apiErrorIdentify } from '@/shared/api/apiErrorIdentify' +import { ApiError, ApiErrorTypes, ApiRoutes } from '@/shared/api/types' +import { ACTION_GET_PRODUCTS_OF_CATEGORY } from '@/shared/constants/constants' + +import { ProductsInfo } from '../types/types' + +type Params = { + categoryId: number + filterProducts: string + filterQuantity: string +} +export const getProducts = createAsyncThunk>( + ACTION_GET_PRODUCTS_OF_CATEGORY, + async (params, thunkAPI) => { + const { categoryId, filterProducts, filterQuantity } = params + const { rejectWithValue, extra } = thunkAPI + try { + const { data } = await extra.api.get( + `api/${ApiRoutes.PRODUCT}${ + categoryId > 0 ? `?category=${categoryId}` : '' + }${filterProducts}${filterQuantity}` + ) + return data + } catch (error) { + return rejectWithValue(apiErrorIdentify(error, ApiErrorTypes.DATA_EMPTY_ERROR)) + } + } +) diff --git a/src/pages/ProductsPage/slice/productsOfCategorySlice.ts b/src/pages/ProductsPage/slice/productsOfCategorySlice.ts new file mode 100644 index 00000000..718b65ab --- /dev/null +++ b/src/pages/ProductsPage/slice/productsOfCategorySlice.ts @@ -0,0 +1,44 @@ +import { createSlice } from '@reduxjs/toolkit' + +import { rejectedPayloadHandle } from '@/shared/api/rejectedPayloadHandle' +import { REDUCER_CATEGORIES_PRODUCTS } from '@/shared/constants/constants' + +import { getProducts } from '../services/getProducts' +import { ICategoryProductsSchema } from '../types/types' + +const initialState: ICategoryProductsSchema = { + isLoading: false, + productsData: { + category_name: '', + count: 0, + next: '', + previous: '', + results: [] + } +} + +export const categoriesProductsSlice = createSlice({ + name: REDUCER_CATEGORIES_PRODUCTS, + initialState, + reducers: { + errorReset: state => { + state.error = undefined + } + }, + extraReducers: builder => { + builder + .addCase(getProducts.pending, state => { + state.isLoading = true + }) + .addCase(getProducts.fulfilled, (state, { payload }) => { + state.isLoading = false + state.productsData = payload + }) + .addCase(getProducts.rejected, (state, { payload }) => { + state.isLoading = false + state.error = rejectedPayloadHandle(payload) + }) + } +}) +export const { actions: categoriesProductsActions, reducer: categoriesProductsReducer } = + categoriesProductsSlice diff --git a/src/pages/ProductsPage/types/types.ts b/src/pages/ProductsPage/types/types.ts new file mode 100644 index 00000000..5ff92a3b --- /dev/null +++ b/src/pages/ProductsPage/types/types.ts @@ -0,0 +1,38 @@ +export interface ProductsData { + id: number + category: string + brand: string + images: TImgList + price: number + name: string + slug: string + description: string + code: number + wb_urls: string + quantity: number + is_deleted: boolean + wholesale: number + label_hit: boolean + label_popular: boolean +} + +export interface ProductsInfo { + category_name: string + count: number + next: string + previous: string + results: ProductsData[] +} + +export interface ICategoryProductsSchema { + isLoading: boolean + productsData: ProductsInfo + error?: string | string[] +} + +export interface IObjectWithImage { + image: string + index?: number +} + +export type TImgList = Array diff --git a/src/pages/RootPage/RootPage.tsx b/src/pages/RootPage/RootPage.tsx index 3da8245d..4111c809 100644 --- a/src/pages/RootPage/RootPage.tsx +++ b/src/pages/RootPage/RootPage.tsx @@ -9,14 +9,14 @@ import styles from './root.module.scss' const RootPage = () => { return ( - <> +
    - +
    ) } diff --git a/src/pages/RootPage/root.module.scss b/src/pages/RootPage/root.module.scss index fba92b0c..64b81395 100644 --- a/src/pages/RootPage/root.module.scss +++ b/src/pages/RootPage/root.module.scss @@ -1,3 +1,10 @@ +.rootPageWrapper { + display: grid; + grid-template-rows: auto 1fr auto; + min-height: 100vh; + margin: 0; +} + .main { display: flex; flex-direction: column; diff --git a/src/pages/VouchersPage/VouchersPage.module.scss b/src/pages/VouchersPage/VouchersPage.module.scss new file mode 100644 index 00000000..cf281446 --- /dev/null +++ b/src/pages/VouchersPage/VouchersPage.module.scss @@ -0,0 +1,17 @@ +.vouchers { + display: flex; + flex-direction: column; + align-items: center; + gap: 20px; + width: 100%; + box-sizing: border-box; + margin: 0; + padding: 56px 0; +} + +.title { + width: 100%; + max-width: 700px; + margin: 0; + padding: 0; +} diff --git a/src/pages/VouchersPage/VouchersPage.tsx b/src/pages/VouchersPage/VouchersPage.tsx new file mode 100644 index 00000000..61dbbb31 --- /dev/null +++ b/src/pages/VouchersPage/VouchersPage.tsx @@ -0,0 +1,20 @@ +import WrapperForMainContent from '@/components/WrapperForMainContent/WrapperForMainContent' +import Heading, { HeadingType } from '@/shared/ui/Heading/Heading' +import FormBuyGiftCertificate from '@/widgets/FormBuyGiftCertificate' + +import styles from './VouchersPage.module.scss' + +const VouchersPage = () => { + return ( + +
    + + Купить подарочный сертификат + + +
    +
    + ) +} + +export default VouchersPage diff --git a/src/shared/api/api.ts b/src/shared/api/api.ts index ff6c7543..ca516002 100644 --- a/src/shared/api/api.ts +++ b/src/shared/api/api.ts @@ -7,6 +7,7 @@ export interface ApiInstance extends AxiosInstance { export const $api: ApiInstance = Object.create( axios.create({ + withCredentials: true, baseURL: __API__ }), { diff --git a/src/shared/api/types.ts b/src/shared/api/types.ts index bc87b64b..bc674244 100644 --- a/src/shared/api/types.ts +++ b/src/shared/api/types.ts @@ -1,13 +1,20 @@ export enum ApiRoutes { + ABOUTUS = 'core/about', LOGIN = 'token/login', LOGOUT = 'token/logout', BRANDS = 'catalogue/brand', SEARCH = 'search', STORE_REVIEWS = 'store-reviews', CATEGORIES = 'catalogue/category', + CATEGORIES_ON_MAIN = 'catalogue/category/?is_visible_on_main=true', SHOP_NEWS = 'shopnews', BLOG_POSTS = 'shopblog/posts', - CORE_BASE = 'core/base' + CORE_BASE = 'core/base', + STORIES = 'stories', + PRODUCT = 'catalogue', + CART_LIST = 'cart', + INCREASE_PRODUCT_AMOUNT = 'cart/add/', + DECREASE_PRODUCT_AMOUNT = 'cart/subtract/' } export enum ApiErrorTypes { diff --git a/src/shared/config/catalogLinks/catalogLinks.ts b/src/shared/config/catalogLinks/catalogLinks.ts deleted file mode 100644 index 7b58e1c6..00000000 --- a/src/shared/config/catalogLinks/catalogLinks.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum CatalogLinksId { - TRANSMIT = '1', - GPS_TRACK = '2', - SSD = '3', - AUTO_PARTS = '4', - CAR_CHARGES = '5', - SMARTPHONES = '6' -} diff --git a/src/shared/config/routerConfig/routes.ts b/src/shared/config/routerConfig/routes.ts index ed581a30..21928c16 100644 --- a/src/shared/config/routerConfig/routes.ts +++ b/src/shared/config/routerConfig/routes.ts @@ -1,18 +1,25 @@ export enum Routes { - HOME = '/', - PRODUCTS = '/products/', - PRODUCTS_ID = '/products/:id', - BLOG = '/blog', ABOUT = '/about', - NEWS = '/news', - REVIEWS = '/reviews', - CONTACTS = '/contacts', - VOUCHERS = '/vouchers', + ADD_RETURN = '/add-return', + BLOG = '/blog', + BRANDS = '/brands', CART = '/cart', CATEGORIES = '/categories', COMPARE = '/compare', + CONTACTS = '/contacts', + DELIVERY = '/delivery', FAVORITES = '/favorites', + HOME = '/', LOGIN = '/login', - BRANDS = '/brands', - SEARCH = '/search/:query' + NEWS = '/news', + PRIVACY = '/privacy', + PRODUCTS = '/products/', + PRODUCTS_ID = '/products/:id', + REVIEWS = '/reviews', // отзывы о магазине + SEARCH = '/search/:query', + STORE_REVIEWS = '/store-reviews', + TERMS = '/terms', + VOUCHERS = '/vouchers', + PRODUCT = '/product', + HELP = '/help' } diff --git a/src/shared/constants/constants.ts b/src/shared/constants/constants.ts index d879f756..fb05d7ed 100644 --- a/src/shared/constants/constants.ts +++ b/src/shared/constants/constants.ts @@ -11,14 +11,14 @@ export const SEARCH_PRODUCT: string = 'product' export const LEFT_POSITION: string = 'left' export const RIGHT_POSITION: string = 'right' -export const PHONE_NUMBER: string = '+7 917 938-87-33' - export const TEXT_PROMO = '% Акция' export const LINK_SHOW_ALL = 'Показать все' export const LINK_NEWS_ALL = 'Все новости' export const LINK_REVIEWS_ALL = 'Все отзывы' +export const VIEWED_PRODUCTS_COUNT_ON_MAIN = 4 + //mock for BlogMainItem component export const fromSS = 378 @@ -37,7 +37,69 @@ export const ACTION_GET_SHOP_NEWS = 'get-shop-news' export const ACTION_GET_BLOG_POSTS = 'get-blog-posts' export const ACTION_GET_СATEGORY = 'get-all-category' +export const ACTION_GET_PRODUCTS_OF_CATEGORY = 'get-products-of-category' +export const ACTION_GET_CATEGORY_BRANCHES = 'get-category-branches' +export const ACTION_GET_CATEGORIES = 'get-categories' + // Reducers export const REDUCER_SHOP_NEWS = 'shopNews' export const REDUCER_BLOG_POSTS = 'shopBlogPosts' + export const REDUCER_CATEGORY = 'allcategory' + +export const REDUCER_CATEGORY_BRANCHES = 'getCategoryBranches' +export const REDUCER_CATEGORIES = 'getCategories' +export const REDUCER_CATEGORIES_PRODUCTS = 'shopCategoriesProducts' + +//Product page +export const VIEWED_PRODUCTS_LIMIT = 10 + +//Favorite page +export const FAVORITE_PRODUCTS_LIMIT = 10 + +//Feedback form +export const NAME_LENGTH_MIN_LIMIT = 2 +export const NAME_LENGTH_MAX_LIMIT = 30 +export const FEEDBACK_LENGTH_MIN_LIMIT = 25 +export const FEEDBACK_LENGTH_MAX_LIMIT = 1000 + +//Filters for ProductsPage +export enum SORT_NAMES { + NAMES_A_YA = 'Название А-Я', + NAMES_YA_A = 'Название Я-А', + PRICE_TO_MORE = 'Сначала дешевые', + PRICE_TO_LESS = 'Сначала дорогие', + MODEL_A_YA = 'Модель А-Я', + MODEL_YA_A = 'Модель Я-А' +} + +export enum SORT_VALUES { + NAMES_A_YA = 'name', + NAMES_YA_A = '-name', + PRICE_TO_MORE = 'price', + PRICE_TO_LESS = '-price', + /* eslint-disable */ + MODEL_A_YA = 'name', + MODEL_YA_A = '-name' +} + +export const SORT_OPTION = [ + { name: SORT_NAMES.NAMES_A_YA, value: SORT_VALUES.NAMES_A_YA }, + { name: SORT_NAMES.NAMES_YA_A, value: SORT_VALUES.NAMES_YA_A }, + { name: SORT_NAMES.PRICE_TO_MORE, value: SORT_VALUES.PRICE_TO_MORE }, + { name: SORT_NAMES.PRICE_TO_LESS, value: SORT_VALUES.PRICE_TO_LESS }, + { name: SORT_NAMES.MODEL_A_YA, value: SORT_VALUES.MODEL_A_YA }, + { name: SORT_NAMES.MODEL_YA_A, value: SORT_VALUES.MODEL_YA_A } +] + +export const ITEMS_PER_PAGE_OPTION = [ + { name: '15', value: '15' }, + { name: '25', value: '25' }, + { name: '50', value: '50' }, + { name: '75', value: '75' }, + { name: '100', value: '100' } +] + +//For Skeleton +export const NUMBER_OF_CATEGORY_LINES = 15 +export const NUMBER_OF_PRODUCTS = 15 diff --git a/src/shared/constants/sessionStorage.ts b/src/shared/constants/sessionStorage.ts new file mode 100644 index 00000000..6d99ccd5 --- /dev/null +++ b/src/shared/constants/sessionStorage.ts @@ -0,0 +1,4 @@ +export enum SESSION_STORAGE { + VIEWED = 'viewedProducts', + FAVORITE = 'favoriteProducts' +} diff --git a/src/shared/icons/IconCategories.svg b/src/shared/icons/IconCategories.svg index 0dd53ff7..dde646ff 100644 --- a/src/shared/icons/IconCategories.svg +++ b/src/shared/icons/IconCategories.svg @@ -4,15 +4,10 @@ viewBox="0 0 11 11" fill="#fff" xmlns="http://www.w3.org/2000/svg"> - + - - - - - diff --git a/src/assets/images/headerAccount/cart.svg b/src/shared/icons/cart.svg similarity index 100% rename from src/assets/images/headerAccount/cart.svg rename to src/shared/icons/cart.svg diff --git a/src/assets/images/headerAccount/heart.svg b/src/shared/icons/heart.svg similarity index 100% rename from src/assets/images/headerAccount/heart.svg rename to src/shared/icons/heart.svg diff --git a/src/assets/images/headerAccount/person.svg b/src/shared/icons/person.svg similarity index 100% rename from src/assets/images/headerAccount/person.svg rename to src/shared/icons/person.svg diff --git a/src/assets/images/headerAccount/person_auth.svg b/src/shared/icons/person_auth.svg similarity index 100% rename from src/assets/images/headerAccount/person_auth.svg rename to src/shared/icons/person_auth.svg diff --git a/src/assets/images/headerAccount/scales.svg b/src/shared/icons/scales.svg similarity index 100% rename from src/assets/images/headerAccount/scales.svg rename to src/shared/icons/scales.svg diff --git a/src/shared/libs/helpers/getNoun.ts b/src/shared/libs/helpers/getNoun.ts new file mode 100644 index 00000000..e1c187a4 --- /dev/null +++ b/src/shared/libs/helpers/getNoun.ts @@ -0,0 +1,22 @@ +/** + * Функция изменения окончания слова, в зависимости от значения числа + * @param {number} number - число, от которого зависит окончание; + * @param {string} var1 - вариант текста; + * @param {string} var2 - вариант текста; + * @param {string} var3 - вариант текста; + */ +export const getNoun = (number: number, var1?: string, var2?: string, var3?: string) => { + let n = Math.abs(number) + n %= 100 + if (n >= 5 && n <= 20) { + return var3 + } + n %= 10 + if (n === 1) { + return var1 + } + if (n >= 2 && n <= 4) { + return var2 + } + return var3 +} diff --git a/src/shared/libs/helpers/handleCutDescription.ts b/src/shared/libs/helpers/handleCutDescription.ts new file mode 100644 index 00000000..e9076290 --- /dev/null +++ b/src/shared/libs/helpers/handleCutDescription.ts @@ -0,0 +1,11 @@ +/** + * Функция ограничения текста описания до 175 символов + * @param {string} description - текст-описание; + */ +export const handleCutDescription = (description: string) => { + let sliced: string = description.slice(0, 175) + if (sliced.length < description.length) { + sliced += '...' + } + return sliced +} diff --git a/src/shared/libs/helpers/popupHelper.ts b/src/shared/libs/helpers/popupHelper.ts new file mode 100644 index 00000000..20311485 --- /dev/null +++ b/src/shared/libs/helpers/popupHelper.ts @@ -0,0 +1,13 @@ +/** + * Функция скрывает или отображает вертикальную прокрутку у body. + * Используется при открытии попапа + * + * @param {boolean} needsToHide если true, то ф-я скроект прокрутку, false - вернет как было до скрытия (значение по умполчанию - false). + */ +export const bodyScrollControl = (needsToHide: boolean = false): void => { + if (needsToHide) { + document.body.style.position = 'fixed' + } else { + document.body.style.position = '' + } +} diff --git a/src/shared/libs/hooks/useResize.ts b/src/shared/libs/hooks/useResize.ts new file mode 100644 index 00000000..1d5f91af --- /dev/null +++ b/src/shared/libs/hooks/useResize.ts @@ -0,0 +1,35 @@ +import debounce from 'lodash/debounce' +import { useState, useEffect } from 'react' + +const SCREEN_SM = 390 +const SCREEN_MD = 768 +const SCREEN_LG = 1200 +const SCREEN_XL = 1400 +const DEDOUNCE_PERIOD = 500 + +/** + * Hook определения текущего размера экрана в ссответствии с указанными в константах размерами + * @returns {isScreenSm, isScreenMd, isScreenLg, isScreenXl} свойство имеет значение true, если размер окна достиг соответствующего значения + */ + +export const useResize = () => { + const [width, setWidth] = useState(window.innerWidth) + + useEffect(() => { + const handleResize = debounce(() => { + setWidth(window.innerWidth) + }, DEDOUNCE_PERIOD) + + window.addEventListener('resize', handleResize) + return () => { + window.removeEventListener('resize', handleResize) + } + }, []) + + return { + isScreenSm: width >= SCREEN_SM, + isScreenMd: width >= SCREEN_MD, + isScreenLg: width >= SCREEN_LG, + isScreenXl: width >= SCREEN_XL + } +} diff --git a/src/shared/mockData/catalogListData.ts b/src/shared/mockData/catalogListData.ts new file mode 100644 index 00000000..211871d8 --- /dev/null +++ b/src/shared/mockData/catalogListData.ts @@ -0,0 +1,42 @@ +import { Routes } from '@/shared/config/routerConfig/routes' + +export const linkItems = [ + { index: 0, label: 'Блог', to: Routes.BLOG }, + { index: 1, label: 'Новости', to: Routes.NEWS }, + { index: 2, label: 'Отзывы о магазине', to: Routes.REVIEWS }, + { index: 3, label: 'Контакты', to: Routes.CONTACTS } +] + +export const catalogListData = [ + { + id: 15, + name: 'Браслеты', + slug: 'brasletyi1', + branches: [], + root: 'Бижутерия', + is_prohibited: false, + is_visible_on_main: true, + image: + 'http://gealit.ru/media/category-images/brasletyi/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_2023-11-29_163851.jpg' + }, + { + id: 1, + name: 'Машинки', + slug: 'mashinki', + branches: [], + root: 'Игрушки', + is_prohibited: false, + is_visible_on_main: true, + image: 'http://gealit.ru/media/category-images/mashinki/170734.jpg' + }, + { + id: 22, + name: 'Медиаплееры', + slug: 'mediapleeryi1', + branches: [], + root: 'Телевизоры и аудиотехника', + is_prohibited: false, + is_visible_on_main: true, + image: null + } +] diff --git a/src/mockData/coreBaseData.ts b/src/shared/mockData/coreBaseData.ts similarity index 100% rename from src/mockData/coreBaseData.ts rename to src/shared/mockData/coreBaseData.ts diff --git a/src/mockData/headerAccountData.ts b/src/shared/mockData/headerAccountData.ts similarity index 100% rename from src/mockData/headerAccountData.ts rename to src/shared/mockData/headerAccountData.ts diff --git a/src/shared/model/types/CartModel.ts b/src/shared/model/types/CartModel.ts new file mode 100644 index 00000000..1789b898 --- /dev/null +++ b/src/shared/model/types/CartModel.ts @@ -0,0 +1,9 @@ +import { IProductCartList } from './ProductCartListModel' + +export interface ICart { + id: number + products: IProductCartList[] + user: number + cart_full_price: number + cart_full_weight: number +} diff --git a/src/models/CategoryModel.ts b/src/shared/model/types/CategoryModel.ts similarity index 75% rename from src/models/CategoryModel.ts rename to src/shared/model/types/CategoryModel.ts index c72d75e5..a4037d53 100644 --- a/src/models/CategoryModel.ts +++ b/src/shared/model/types/CategoryModel.ts @@ -1,11 +1,11 @@ export type TCategory = { - id?: number + id: number name: string slug: string branches?: TCategory[] - root?: TCategory + root?: string is_prohibited?: boolean is_visible_on_main?: boolean - image?: string + image?: string | null type?: 'category' } diff --git a/src/shared/model/types/ImageModel.ts b/src/shared/model/types/ImageModel.ts new file mode 100644 index 00000000..d8401c19 --- /dev/null +++ b/src/shared/model/types/ImageModel.ts @@ -0,0 +1,3 @@ +export interface IImage { + image: string +} diff --git a/src/shared/model/types/ProductCartListModel.ts b/src/shared/model/types/ProductCartListModel.ts new file mode 100644 index 00000000..79f8da98 --- /dev/null +++ b/src/shared/model/types/ProductCartListModel.ts @@ -0,0 +1,8 @@ +import { IProduct } from './ProductModel' + +export interface IProductCartList { + amount: number + product: IProduct + full_price: number + full_weight: number +} diff --git a/src/shared/model/types/ProductModel.ts b/src/shared/model/types/ProductModel.ts new file mode 100644 index 00000000..627dc61d --- /dev/null +++ b/src/shared/model/types/ProductModel.ts @@ -0,0 +1,20 @@ +import { IImage } from './ImageModel' + +export interface IProduct { + id: number + category: string + brand: string + images: IImage[] + price: string + name: string + slug: string + description: string + code: number + wb_urls: string + quantity?: number + is_deleted?: boolean + wholesale?: number + label_hit?: boolean + label_popular?: boolean + weight?: string +} diff --git a/src/shared/model/types/common.ts b/src/shared/model/types/common.ts index 8bab6046..0f116e34 100644 --- a/src/shared/model/types/common.ts +++ b/src/shared/model/types/common.ts @@ -1,4 +1,4 @@ -import { TCategory } from '@/models/CategoryModel' +import { TCategory } from '@/shared/model/types/CategoryModel' export type TProduct = { name: string @@ -20,6 +20,14 @@ export enum ECardView { COMPACT = 'compact' } +export enum ECheckboxSize { + M = 'medium' +} + +export enum ECheckboxTheme { + PRIMARY = 'primary' +} + export type TOrder = { amount: number productsSum: number @@ -27,3 +35,17 @@ export type TOrder = { productsSumWithoutDiscount: number total: number } + +export type TFormReturn = { + name: string + surname: string + email: string + tel: string + numberOrder: string + dateOrder: string + itemInfo: string + model: string + amount: string + textArea: string + myChoice: string +} diff --git a/src/shared/styles/utils/_mixins.scss b/src/shared/styles/utils/_mixins.scss index a4372c1b..9dcfe10f 100644 --- a/src/shared/styles/utils/_mixins.scss +++ b/src/shared/styles/utils/_mixins.scss @@ -8,7 +8,7 @@ $breakpoints: ( max-width: 1200px ), 'middle': ( - max-width: 768px + max-width: 769px ), 'small': ( max-width: 390px diff --git a/src/shared/styles/utils/_variables.scss b/src/shared/styles/utils/_variables.scss index ec658f55..d19933b0 100644 --- a/src/shared/styles/utils/_variables.scss +++ b/src/shared/styles/utils/_variables.scss @@ -20,5 +20,6 @@ $bg-gradient-green: linear-gradient(90deg, #02aab0 0%, #00cdac 100%); $theme-purple-500: #1306a1; // исправить цвет $theme-purple-400: #1306a1; // Исправить цвет $product-label-hit: #800080; +$product-label-popular: #efbf13; $product-avaliability-status: #13d154; -$light-grey: #F1F1F5; \ No newline at end of file +$light-grey: #f1f1f5; diff --git a/src/shared/ui/Breadcrumbs/Breadcrumbs.module.scss b/src/shared/ui/Breadcrumbs/Breadcrumbs.module.scss new file mode 100644 index 00000000..1d2ce11f --- /dev/null +++ b/src/shared/ui/Breadcrumbs/Breadcrumbs.module.scss @@ -0,0 +1,14 @@ +@use '../../styles/utils/variables' as var; + +.breadcrumbs { + display: flex; +} + +.link { + color: var.$subtitle-color; + transition: color 0.3s; + + &:hover { + color: var.$theme-secondary-color; + } +} diff --git a/src/shared/ui/Breadcrumbs/Breadcrumbs.stories.tsx b/src/shared/ui/Breadcrumbs/Breadcrumbs.stories.tsx new file mode 100644 index 00000000..945f9fc8 --- /dev/null +++ b/src/shared/ui/Breadcrumbs/Breadcrumbs.stories.tsx @@ -0,0 +1,24 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import Breadcrumbs from './Breadcrumbs' + +const meta = { + title: 'shared/Breadcrumbs', + component: Breadcrumbs, + parameters: { + layout: 'centered' + }, + tags: ['autodocs'] +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + links: [ + { heading: 'Главная', href: '/' }, + { heading: 'Браслеты', href: '/categories/' + 'bracelets' } + ] + } +} diff --git a/src/shared/ui/Breadcrumbs/Breadcrumbs.tsx b/src/shared/ui/Breadcrumbs/Breadcrumbs.tsx new file mode 100644 index 00000000..5ba8c814 --- /dev/null +++ b/src/shared/ui/Breadcrumbs/Breadcrumbs.tsx @@ -0,0 +1,42 @@ +import { FC } from 'react' + +import Link from '../Link/Link' +import Subheading from '../Subheading/Subheading' + +import styles from './Breadcrumbs.module.scss' + +export type TLinkProps = { + heading: string + href: string +} +type TBreadcrumbsProps = { + links: TLinkProps[] +} + +/** + * shared/ui компонент хлебные крошки, принимает список ссылок и рендерит их; + * @param {TLinkProps[]} links - ссылки, которые попадают в хлебные крошки + * @param {string} heading - название категории + * @param {string} href - ссылка + */ + +const Breadcrumbs: FC = ({ links }) => { + return ( +
    + {links.map((link, index) => { + return ( + (index !== links.length - 1 && ( + + + {link.heading} + +  /  + + )) || {link.heading} + ) + })} +
    + ) +} + +export default Breadcrumbs diff --git a/src/shared/ui/Button/Button.module.scss b/src/shared/ui/Button/Button.module.scss index d8bdb13e..4a76797c 100644 --- a/src/shared/ui/Button/Button.module.scss +++ b/src/shared/ui/Button/Button.module.scss @@ -47,6 +47,10 @@ color: color.$white; } +.previous { + background: color.$bg-no-image; +} + .big { font-size: 32px; line-height: 40px; diff --git a/src/shared/ui/Button/Button.stories.tsx b/src/shared/ui/Button/Button.stories.tsx index 17718e3f..b4b8f77c 100644 --- a/src/shared/ui/Button/Button.stories.tsx +++ b/src/shared/ui/Button/Button.stories.tsx @@ -77,3 +77,9 @@ export const Secondary: Story = { theme: ButtonTheme.SECONDARY } } +export const Previous: Story = { + args: { + children: 'Text', + theme: ButtonTheme.PREVIOUS + } +} diff --git a/src/shared/ui/Button/Button.tsx b/src/shared/ui/Button/Button.tsx index 3746fc5c..467e094e 100644 --- a/src/shared/ui/Button/Button.tsx +++ b/src/shared/ui/Button/Button.tsx @@ -7,7 +7,8 @@ export enum ButtonTheme { OUTLINED = 'outlined', PRIMARY = 'primary', SECONDARY = 'secondary', - SUCCESS = 'success' + SUCCESS = 'success', + PREVIOUS = 'previous' } export enum ButtonSize { diff --git a/src/shared/ui/ButtonDots/ButtonDots.module.scss b/src/shared/ui/ButtonDots/ButtonDots.module.scss index 04927204..a45b0729 100644 --- a/src/shared/ui/ButtonDots/ButtonDots.module.scss +++ b/src/shared/ui/ButtonDots/ButtonDots.module.scss @@ -1,22 +1,21 @@ @use '../../../shared/styles/utils/variables' as var; @use '../../../shared/styles/utils/mixins' as media; - .button { - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - padding: 20px; - border: none; - background-color: inherit; - position: relative; - right: 0; - top: 0; - border-radius: 10px; - z-index: 10px; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + padding: 20px; + border: none; + background-color: inherit; + position: relative; + right: 0; + top: 0; + border-radius: 10px; + z-index: 10px; } .container { - position: relative; -} \ No newline at end of file + position: relative; +} diff --git a/src/shared/ui/Carousel/Carousel.stories.tsx b/src/shared/ui/Carousel/Carousel.stories.tsx deleted file mode 100644 index 8bbb8945..00000000 --- a/src/shared/ui/Carousel/Carousel.stories.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Story, Meta } from '@storybook/react' - -import { PRODUCT_PHOTOS } from '@/mockData/productsPageOptions' -import { ECardView } from '@/shared/model/types/common' - -import Carousel, { CarouselProps } from './Carousel' - -export default { - title: 'shared/Carousel', - component: Carousel -} as Meta - -const Template: Story = args => - -export const Grid = Template.bind({}) -Grid.args = { - photos: PRODUCT_PHOTOS, - layout: ECardView.GRID -} - -export const Compact = Template.bind({}) -Compact.args = { - photos: PRODUCT_PHOTOS, - layout: ECardView.COMPACT -} diff --git a/src/shared/ui/CatalogLink/CatalogLink.tsx b/src/shared/ui/CatalogLink/CatalogLink.tsx new file mode 100644 index 00000000..8ff7bb96 --- /dev/null +++ b/src/shared/ui/CatalogLink/CatalogLink.tsx @@ -0,0 +1,36 @@ +import classNames from 'classnames' +import { FC } from 'react' +import { useDispatch } from 'react-redux' + +import { AppDispatch } from '@/app/providers/StoreProvider/config/store' +import { setCategoryId } from '@/entities/Category/slice/categoryIdSlice' +import { setCategorySlug } from '@/entities/Category/slice/categorySlugSlice' +import Link, { type TLinkProps } from '@/shared/ui/Link/Link' + +import styles from './catalogLink.module.scss' + +/** + * @param {string} className - нужно для изменения некоторых css- параметров + * @param to - путь для ссылки + * @param children дочерние компоненты + * @param {number} categoryId - id категории + * @param {string} categorySlug- URL категории + */ +const CatalogLink: FC = ({ className, to = '', children, categoryId, categorySlug }) => { + const classes = classNames(styles['catalog-link'], className) + const dispatch = useDispatch() + + return ( + { + dispatch(setCategoryId(categoryId)) + dispatch(setCategorySlug(categorySlug)) + }}> + {children} + + ) +} + +export default CatalogLink diff --git a/src/components/CatalogLink/catalogLink.module.scss b/src/shared/ui/CatalogLink/catalogLink.module.scss similarity index 83% rename from src/components/CatalogLink/catalogLink.module.scss rename to src/shared/ui/CatalogLink/catalogLink.module.scss index c7114363..264b36a8 100644 --- a/src/components/CatalogLink/catalogLink.module.scss +++ b/src/shared/ui/CatalogLink/catalogLink.module.scss @@ -1,4 +1,4 @@ -@use '../../shared/styles/utils/variables' as var; +@use '../../styles/utils/variables' as var; .catalog-link { height: 35px; @@ -16,6 +16,7 @@ font-weight: 700; letter-spacing: 0.5px; text-decoration: none; + transition: background .25s, border .25s; } .catalog-link:hover { diff --git a/src/shared/ui/CatalogLink/ui/skeleton/CatalogLinkSkeleton.tsx b/src/shared/ui/CatalogLink/ui/skeleton/CatalogLinkSkeleton.tsx new file mode 100644 index 00000000..ddb7eb09 --- /dev/null +++ b/src/shared/ui/CatalogLink/ui/skeleton/CatalogLinkSkeleton.tsx @@ -0,0 +1,20 @@ +import { FC } from 'react' +import Skeleton from 'react-loading-skeleton' +import 'react-loading-skeleton/dist/skeleton.css' + +interface ICatalogLinkSkeleton { + width: number + height: number +} + +/** + * Компонент CatalogLinkSkeleton - заставка, пока не загрузятся CatalogLink + * @param {number} width - ширина скелетона + * @param {number} height - высота скелетона + */ + +const CatalogLinkSkeleton: FC = ({ width, height }) => { + return +} + +export default CatalogLinkSkeleton diff --git a/src/shared/ui/CategoryCard/ui/CategoryCard.tsx b/src/shared/ui/CategoryCard/ui/CategoryCard.tsx index a80a877b..0c23c183 100644 --- a/src/shared/ui/CategoryCard/ui/CategoryCard.tsx +++ b/src/shared/ui/CategoryCard/ui/CategoryCard.tsx @@ -1,7 +1,7 @@ import { type FC } from 'react' -import { TCategory } from '@/models/CategoryModel' import { Routes } from '@/shared/config/routerConfig/routes' +import { TCategory } from '@/shared/model/types/CategoryModel' import Link from '@/shared/ui/Link/Link' import Subheading from '../../Subheading/Subheading' diff --git a/src/shared/ui/Checkbox/Checkbox.module.scss b/src/shared/ui/Checkbox/Checkbox.module.scss new file mode 100644 index 00000000..2da5e7fd --- /dev/null +++ b/src/shared/ui/Checkbox/Checkbox.module.scss @@ -0,0 +1,32 @@ +@use '../../../shared/styles/utils/variables' as var; + +.formReturn { + &__checkbox { + display: flex; + align-items: center; + cursor: pointer; + + &:first-child { + margin-top: 10px; + } + } + + &__radio { + height: 20px; + width: 20px; + background-color: var.$theme-primary-color; + margin: 10px 15px 10px 0; + border-color: var.$body-color; + cursor: pointer; + accent-color: var.$theme-primary-color; + } +} + +.primary { + accent-color: var.$theme-primary-color; +} + +.medium { + height: 20px; + width: 20px; +} diff --git a/src/shared/ui/Checkbox/Checkbox.stories.tsx b/src/shared/ui/Checkbox/Checkbox.stories.tsx new file mode 100644 index 00000000..13b174ff --- /dev/null +++ b/src/shared/ui/Checkbox/Checkbox.stories.tsx @@ -0,0 +1,42 @@ +/* eslint-disable */ +// TODO: https://github.com/Studio-Yandex-Practicum/maxboom_frontend/issues/263 +import { Formik, Form } from 'formik' +import { Meta, StoryObj } from '@storybook/react' +import Checkbox, { CheckboxProps } from './Checkbox' +import { ECheckboxTheme, ECheckboxSize } from '@/shared/model/types/common' + +export default { + title: 'shared/Checkbox', + component: Checkbox, + decorators: [ + Story => ( + console.log(values)}> +
    + + +
    + ) + ], + parameters: { + layout: 'centered' + }, + argTypes: { + checked: { control: 'boolean' } + } +} as Meta + +const Template: StoryObj = { + render: args => +} + +export const Primary = { + ...Template, + args: { + name: 'Text', + value: 'Text', + type: 'radio', + label: 'Text', + theme: ECheckboxTheme.PRIMARY, + size: ECheckboxSize.M + } +} diff --git a/src/shared/ui/Checkbox/Checkbox.tsx b/src/shared/ui/Checkbox/Checkbox.tsx new file mode 100644 index 00000000..1fb6f56b --- /dev/null +++ b/src/shared/ui/Checkbox/Checkbox.tsx @@ -0,0 +1,63 @@ +/* eslint-disable */ +// TODO: https://github.com/Studio-Yandex-Practicum/maxboom_frontend/issues/263 +import { FC } from 'react' +import { Field, useField } from 'formik' +import style from './Checkbox.module.scss' +import { Input } from '@/shared/ui/Input/Input' +import classNames from 'classnames' +import { ECheckboxTheme, ECheckboxSize } from '@/shared/model/types/common' + +export interface CheckboxProps { + name: string + value?: string + type?: 'radio' | 'checkbox' + label?: string + htmlFor: string + theme?: ECheckboxTheme + size?: ECheckboxSize + className?: string +} + +/** + * компонент Button + * @param {string} props.name - имя для привязки к htmlFor + * @param {string} props.value - значение выбранного поля + * @param {string} props.label - название поля + * @param {string} props.htmlFor - для привязки к field + * @param {ECheckboxTheme} props.theme - тема представления + * @param {ECheckboxSize} props.size - размер + */ + +const Checkbox: FC = props => { + const { + className, + type = 'radio', + value, + htmlFor, + label, + name, + theme = ECheckboxTheme.PRIMARY, + size = ECheckboxSize.M + } = props + + const additionalClasses = [className, theme && style[theme], style[size]] + + const [field] = useField({ name, type, value }) + + return ( + + ) +} + +export default Checkbox diff --git a/src/components/ContextMenuElement/ContextMenuElement.tsx b/src/shared/ui/ContextMenuElement/ContextMenuElement.tsx similarity index 99% rename from src/components/ContextMenuElement/ContextMenuElement.tsx rename to src/shared/ui/ContextMenuElement/ContextMenuElement.tsx index 16b419ef..283d98aa 100644 --- a/src/components/ContextMenuElement/ContextMenuElement.tsx +++ b/src/shared/ui/ContextMenuElement/ContextMenuElement.tsx @@ -61,6 +61,7 @@ const ContextMenuElement: FC = ({ return (
    + +export default meta +type Story = StoryObj + +export const Succeed: Story = { + args: { + text: 'Данные успешно отправлены!', + isError: false, + disableClose: false, + closeHandle: () => { + alert('Выполненяются действия из переданной функции') + } + } +} + +export const Error: Story = { + args: { + text: 'Ошибка отправки данных на сервер!', + isError: true, + disableClose: false, + closeHandle: () => { + alert('Выполненяются действия из переданной функции') + } + } +} + +export const ErrorWithoutCloseBtn: Story = { + args: { text: 'Ошибка валидации полей формы', isError: true, disableClose: true } +} diff --git a/src/shared/ui/FormMsg/FormMsg.tsx b/src/shared/ui/FormMsg/FormMsg.tsx new file mode 100644 index 00000000..c51ebb13 --- /dev/null +++ b/src/shared/ui/FormMsg/FormMsg.tsx @@ -0,0 +1,65 @@ +import { FC, MouseEvent, useEffect, useState } from 'react' + +import styles from './FormMsg.module.scss' +import { EMsgType } from './model/types/types' + +interface IFormMsgProps { + text: string + isError: boolean + disableClose?: boolean + closeHandle?: () => void + className?: string + type?: EMsgType +} + +/** + * Компонент высплывающей ошибки на форме + * @param {string} text текст сообщения + * @param {boolean} isError true, если это сообщение об ошибке + * @param {boolean} [disableClose = false] true, если необходимо убрать возможность закрытия окна + * @param {function} closeHandle void-функция, вызываемая при нажатии на кнопку закрытия + * @param {EMsgType} type тип высплывающей ошибки: EMsgType.popup - открывает как банер-попап ввреху страницы, EMsgType.form (по умолчанию) открывает в зависимости от места в tsx + */ +export const FormMsg: FC = ({ + text, + isError, + closeHandle, + className = '', + type = EMsgType.form, + disableClose = false +}) => { + const [isOpen, setIsOpen] = useState(false) + const onCloseHandel = (e: MouseEvent) => { + e.stopPropagation() + if (typeof closeHandle === 'function') { + if (type === EMsgType.popup) { + setIsOpen(false) + setTimeout(() => { + closeHandle() + }, 500) + } else { + closeHandle() + } + } + } + + useEffect(() => { + if (type === EMsgType.popup) { + setIsOpen(true) + } + }, []) + + return ( +
    +

    {text}

    + {!disableClose && ( + + )} +
    + ) +} diff --git a/src/shared/ui/FormMsg/model/types/types.ts b/src/shared/ui/FormMsg/model/types/types.ts new file mode 100644 index 00000000..7effe951 --- /dev/null +++ b/src/shared/ui/FormMsg/model/types/types.ts @@ -0,0 +1,4 @@ +export enum EMsgType { + form = 'form', + popup = 'popup' +} diff --git a/src/shared/ui/Heading/Heading.tsx b/src/shared/ui/Heading/Heading.tsx index c140039a..9e73955a 100644 --- a/src/shared/ui/Heading/Heading.tsx +++ b/src/shared/ui/Heading/Heading.tsx @@ -7,14 +7,16 @@ export enum HeadingType { MAIN = 'main', MEDIUM = 'medium', NORMAL = 'normal', - SMALL = 'small' + SMALL = 'small', + PRODUCT = 'product' } const tags = { [HeadingType.MAIN]: 'h1', [HeadingType.MEDIUM]: 'h2', [HeadingType.NORMAL]: 'h3', - [HeadingType.SMALL]: 'h4' + [HeadingType.SMALL]: 'h4', + [HeadingType.PRODUCT]: 'h3' } type THeadingProps = React.HTMLAttributes & { @@ -32,7 +34,8 @@ const Heading: FC = ({ children, className, type = HeadingType.MA [styles.big]: type === HeadingType.MAIN, [styles.medium]: type === HeadingType.MEDIUM, [styles.normal]: type === HeadingType.NORMAL, - [styles.small]: type === HeadingType.SMALL + [styles.small]: type === HeadingType.SMALL, + [styles.product]: type === HeadingType.PRODUCT }) const HeadingTag = tags[type] // as keyof JSX.IntrinsicElements diff --git a/src/shared/ui/Heading/heading.module.scss b/src/shared/ui/Heading/heading.module.scss index a6ffd294..2c3a047d 100644 --- a/src/shared/ui/Heading/heading.module.scss +++ b/src/shared/ui/Heading/heading.module.scss @@ -1,27 +1,41 @@ @use '../../styles/utils/variables' as var; .title { - color: var.$body-color; - font-weight: 700; + color: var.$body-color; + font-weight: 700; } - .big { - font-size: 25px; - line-height: 28.75px; + font-size: 25px; + line-height: 28.75px; } .medium { - font-size: 24px; - line-height: 28.8px; + font-size: 24px; + line-height: 28.8px; } .normal { - font-size: 20px; - line-height: 23px; + font-size: 20px; + line-height: 23px; } .small { - font-size: 16px; - line-height: 25.92px; + font-size: 16px; + line-height: 25.92px; +} + +.product { + font-size: 14px; + font-weight: 700; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} + +.product:hover { + color: var.$theme-primary-color; + cursor: pointer; } diff --git a/src/shared/ui/Label/Label.tsx b/src/shared/ui/Label/Label.tsx index 971f765f..388589d6 100644 --- a/src/shared/ui/Label/Label.tsx +++ b/src/shared/ui/Label/Label.tsx @@ -10,6 +10,7 @@ type TLabelProps = React.HTMLAttributes & { /** * @param {string} className - для передачи дополнительных параметров стиля */ + const Label: FC = ({ htmlFor, children, className, ...props }) => { return (