commit aede56d4f2b606b6bf19ee28195c3ca7a725eb6c Author: seungheerho Date: Tue Mar 25 17:30:21 2025 +0900 feat diff --git a/.env.dev b/.env.dev new file mode 100644 index 0000000..966c3a4 --- /dev/null +++ b/.env.dev @@ -0,0 +1,8 @@ +REACT_APP_API_URL=https://cms-api-dev.angkorcoms.com +REACT_APP_VERSION=2.0.0 +REACT_APP_CODE=009 + +REACT_APP_AES_SECRETKEY=unionmobilekookhwa20230906open11 +REACT_APP_AES_IV=unionmobileivhuh +REACT_APP_DEV_THUMBNAIL_SERVER=https://d2ngfzyfwzgoim.cloudfront.net/ +GENERATE_SOURCEMAP=false diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..c7a6b81 --- /dev/null +++ b/.env.prod @@ -0,0 +1,7 @@ +REACT_APP_API_URL=https://cms-api.angkorlifes.com +REACT_APP_VERSION=2.0.0 +REACT_APP_CODE=008 + +REACT_APP_AES_SECRETKEY=unionmobilekookhwa20230906open11 +REACT_APP_AES_IV=unionmobileivhuh +REACT_APP_PROD_THUMBNAIL_SERVER=https://d2ngfzyfwzgoim.cloudfront.net/ diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6a58efe --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +# 자동 줄바꿈 변환 방지 +* text=auto +*.js text eol=lf +*.jsx text eol=lf +*.ts text eol=lf +*.tsx text eol=lf +*.scss text eol=lf +*.css text eol=lf \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..77599e6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +node_modules +build +coverage +.vscode \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9f5f355 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "useTabs": false, + "trailingComma": "none", + "jsxBracketSameLine": false, + "printWidth": 120 +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..fcf9ec1 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}", + "preLaunchTask": "npm: start:dev" + } + ] + } + \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ea2320b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "typescript.updateImportsOnFileMove.enabled": "always", + "javascript.updateImportsOnFileMove.enabled": "always" + } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..29eeb23 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "npm: start:dev", + "type": "npm", + "script": "start:dev", + "isBackground": true, + "problemMatcher": { + "owner": "custom", + "pattern": [ + { + "regexp": "No issues found", + "file": 1, + "location": 2, + "message": 3 + } + ], + "background": { + "activeOnStart": true, + "beginsPattern": "Files successfully emitted, wating for typecheck results...", + "endsPattern": "No issues found" + } + }, + "detail": "env-cmd -f .env.dev craco start" + } + ] +} \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..b87cb00 --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/craco.config.ts b/craco.config.ts new file mode 100644 index 0000000..e8abbb8 --- /dev/null +++ b/craco.config.ts @@ -0,0 +1,14 @@ +const { CracoAliasPlugin } = require('react-app-alias'); + +export default { + plugins: [ + { + plugin: CracoAliasPlugin, + options: { + source: 'tsconfig', + baseUrl: '.', + tsConfigPath: './tsconfig.paths.json' + } + } + ] +}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..49f4324 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,45 @@ +import js from '@eslint/js'; +import react from 'eslint-plugin-react'; +import reactJsxRuntime from 'eslint-plugin-react/jsx-runtime'; +import typescript from '@typescript-eslint/eslint-plugin'; +import prettier from 'eslint-plugin-prettier'; +import tsParser from '@typescript-eslint/parser'; + +export default [ + { + root: true, + languageOptions: { + parser: tsParser, + parserOptions: { + project: './tsconfig.json' + } + }, + settings: { + react: { + version: 'detect' + } + }, + plugins: { + react, + prettier, + '@typescript-eslint': typescript + }, + rules: { + ...js.configs.recommended.rules, + ...react.configs.recommended.rules, + ...reactJsxRuntime.configs.recommended.rules, + ...typescript.configs.recommended.rules, + ...prettier.configs.recommended.rules, + + 'prettier/prettier': ['error', { singleQuote: true, endOfLine: 'auto' }], + 'arrow-body-style': 'off', + 'prefer-arrow-callback': 'off' + }, + ignores: ['craco.config.ts'], + environment: { + browser: true, + es2021: true, + jest: true + } + } +]; diff --git a/md b/md new file mode 100644 index 0000000..e69de29 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ca7ccbb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,19637 @@ +{ + "name": "angkoremoticons-cms", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "angkoremoticons-cms", + "version": "0.1.0", + "dependencies": { + "@reduxjs/toolkit": "^2.6.1", + "@tanstack/react-query": "^5.68.0", + "@tanstack/react-query-devtools": "^5.68.0", + "@testing-library/dom": "^10.4.0", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.2.0", + "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.2", + "axios": "^1.8.3", + "bootstrap": "^5.3.3", + "classnames": "^2.5.1", + "crypto-js": "^4.2.0", + "date-fns": "^4.1.0", + "nvd3": "^1.8.6", + "react": "^19.0.0", + "react-bootstrap": "^2.10.9", + "react-datepicker": "^8.2.1", + "react-dom": "^19.0.0", + "react-icons": "^5.5.0", + "react-perfect-scrollbar": "^1.5.8", + "react-redux": "^9.2.0", + "react-router-dom": "^7.3.0", + "react-scripts": "5.0.1", + "react-select": "^5.10.1", + "react-toastify": "^11.0.5", + "redux-persist": "^6.0.0", + "typescript": "^4.9.5", + "web-vitals": "^2.1.4" + }, + "devDependencies": { + "@craco/craco": "^7.1.0", + "@eslint/js": "^9.22.0", + "@types/crypto-js": "^4.2.2", + "@types/node": "^22.13.10", + "@types/react": "^19.0.11", + "@types/react-dom": "^19.0.4", + "env-cmd": "^10.1.0", + "eslint": "^8.57.1", + "eslint-plugin-react": "^7.37.4", + "globals": "^16.0.0", + "prettier": "3.5.3", + "react-app-alias": "^2.2.2", + "sass": "^1.86.0", + "typescript-eslint": "^8.26.1" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", + "license": "MIT" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "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/@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==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.10.tgz", + "integrity": "sha512-QsfQZr4AiLpKqn7fz+j7SN+f43z2DZCgGyYbNJ2vJOqKfG4E6MZer1+jqGZqKJaxq/gdO2DC/nUu45+pOL5p2Q==", + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", + "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.26.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "license": "MIT", + "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/helper-define-polyfill-provider/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", + "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", + "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.10" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "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.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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.", + "license": "MIT", + "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-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" + }, + "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.", + "license": "MIT", + "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-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "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.", + "license": "MIT", + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "license": "MIT", + "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-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", + "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz", + "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz", + "integrity": "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", + "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-react-display-name": "^7.25.9", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/plugin-transform-react-jsx-development": "^7.25.9", + "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/@craco/craco": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@craco/craco/-/craco-7.1.0.tgz", + "integrity": "sha512-oRAcPIKYrfPXp9rSzlsDNeOaVtDiKhoyqSXUoqiK24jCkHr4T8m/a2f74yXIzCbIheoUWDOIfWZyRgFgT+cpqA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "autoprefixer": "^10.4.12", + "cosmiconfig": "^7.0.1", + "cosmiconfig-typescript-loader": "^1.0.0", + "cross-spawn": "^7.0.3", + "lodash": "^4.17.21", + "semver": "^7.3.7", + "webpack-merge": "^5.8.0" + }, + "bin": { + "craco": "dist/bin/craco.js" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "react-scripts": "^5.0.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@csstools/normalize.css": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", + "integrity": "sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==", + "license": "CC0-1.0" + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "license": "CC0-1.0", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.27.5", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.5.tgz", + "integrity": "sha512-BX3jKxo39Ba05pflcQmqPPwc0qdNsdNi/eweAFtoIdrJWNen2sVEWMEac3i6jU55Qfx+lOcdMNKYn2CtWmlnOQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.9", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "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==", + "license": "MIT", + "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", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", + "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==", + "license": "MIT", + "dependencies": { + "ansi-html": "^0.0.9", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^4.2.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x || 5.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", + "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.6.1.tgz", + "integrity": "sha512-SSlIqZNYhqm/oMkXbtofwZSt9lrncblzo6YcZ9zoX+zLngRBrCOjK4lNLdkNucJF58RHOWrD9txT3bT3piH7Zw==", + "license": "MIT", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.9.4.tgz", + "integrity": "sha512-N4C7haUc3vn4LTwVUPlkJN8Ach/+yIMvRuTVIhjilNHqegY60SGLrzud6errOMNJwSnmYFnt1J0H/k8FE3A4KA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@popperjs/core": "^2.11.8", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.5.0", + "@types/warning": "^3.0.3", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.4", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/@restart/hooks": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.5.1.tgz", + "integrity": "sha512-EMoH04NHS1pbn07iLTjIjgttuqb7qu4+/EyhAx27MHpoENcB2ZdSsLTNxmKD+WEPnZigo62Qc8zjGnNxoSE/5Q==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "license": "MIT" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", + "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "license": "MIT", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.68.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.68.0.tgz", + "integrity": "sha512-r8rFYYo8/sY/LNaOqX84h12w7EQev4abFXDWy4UoDVUJzJ5d9Fbmb8ayTi7ScG+V0ap44SF3vNs/45mkzDGyGw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-devtools": { + "version": "5.67.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.67.2.tgz", + "integrity": "sha512-O4QXFFd7xqp6EX7sdvc9tsVO8nm4lpWBqwpgjpVLW5g7IeOY6VnS/xvs/YzbRhBVkKTMaJMOUGU7NhSX+YGoNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.68.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.68.0.tgz", + "integrity": "sha512-mMOdGDKlwTP/WV72QqSNf4PAMeoBp/DqBHQ222wBfb51Looi8QUqnCnb9O98ZgvNISmy6fzxRGBJdZ+9IBvX2Q==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.68.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@tanstack/react-query-devtools": { + "version": "5.68.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.68.0.tgz", + "integrity": "sha512-h9ArHkfa7SD5eGnJ9h+9M5uYWBdeVeY+WalrtGLCAtJJvHx6/RrtbbzxeoEQbPyx3f0kPcwJ58DGQ+7CBXelpg==", + "license": "MIT", + "dependencies": { + "@tanstack/query-devtools": "5.67.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.68.0", + "react": "^18 || ^19" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", + "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.2.0.tgz", + "integrity": "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@testing-library/user-event": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "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==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, + "node_modules/@types/crypto-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", + "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "license": "MIT", + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "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==", + "license": "MIT" + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" + }, + "node_modules/@types/q": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.0.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.11.tgz", + "integrity": "sha512-vrdxRZfo9ALXth6yPfV16PYTLZwsUWhVjjC+DkfE5t1suNSbBrWC9YqSuuxJZ8Ps6z1o2ycRpIqzZJIgklq4Tw==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", + "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", + "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", + "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "is-string": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", + "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-loader": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", + "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.4", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-macros/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "license": "MIT" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@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", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz", + "integrity": "sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/bfj": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "license": "BSD-2-Clause" + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/check-types": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "license": "MIT" + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.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==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/coa/node_modules/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/coa/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==", + "license": "MIT" + }, + "node_modules/coa/node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/coa/node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", + "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.0.2", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "license": "MIT" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz", + "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz", + "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz", + "integrity": "sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7", + "ts-node": "^10.7.0" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "typescript": ">=3" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "license": "MIT", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "license": "CC0-1.0", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "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==", + "license": "MIT" + }, + "node_modules/cssdb": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", + "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "CC0-1.0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", + "integrity": "sha512-yFk/2idb8OHPKkbAL8QaOaqENNoMhIaSHZerk3oQsECwkObkCpJyjYwCe+OHiq6UEdhe1m8ZGARRRO3ljFjlKg==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "license": "BSD-2-Clause" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "license": "MIT" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "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==", + "license": "MIT", + "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", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "license": "BSD-2-Clause" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.120", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", + "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-cmd": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", + "integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^4.0.0", + "cross-spawn": "^7.0.0" + }, + "bin": { + "env-cmd": "bin/env-cmd.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "license": "BSD-3-Clause", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "license": "MIT", + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "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==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/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==", + "license": "MIT" + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", + "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz", + "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "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==", + "license": "BSD-3-Clause", + "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/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==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "license": "MIT", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watch-typeahead/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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "license": "MIT", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", + "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", + "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "license": "MIT", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/launch-editor": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", + "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/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==", + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.10.tgz", + "integrity": "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nvd3": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/nvd3/-/nvd3-1.8.6.tgz", + "integrity": "sha512-YGQ9hAQHuQCF0JmYkT2GhNMHb5pA+vDfQj6C2GdpQPzdRPj/srPG3mh/3fZzUFt+at1NusLk/RqICUWkxm4viQ==", + "license": "Apache-2.0", + "peerDependencies": { + "d3": "^3.4.4" + } + }, + "node_modules/nwsapi": { + "version": "2.2.18", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.18.tgz", + "integrity": "sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", + "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", + "license": "MIT", + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "gopd": "^1.0.1", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/perfect-scrollbar": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz", + "integrity": "sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw==", + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "license": "CC0-1.0", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-import/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "license": "MIT", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "license": "MIT", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/prop-types-extra/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==", + "license": "MIT" + }, + "node_modules/prop-types/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==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-app-alias/-/react-app-alias-2.2.2.tgz", + "integrity": "sha512-mkebUkGLEBA8A8jripu5h1e3cccGl8wWHCUmyJo43/KhaN91DO3qyCLWGWneogqkG4PWhp2JHtlCJ06YSdHVYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "license": "MIT", + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/react-bootstrap": { + "version": "2.10.9", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.9.tgz", + "integrity": "sha512-TJUCuHcxdgYpOqeWmRApM/Dy0+hVsxNRFvq2aRFQuxhNi/+ivOxC5OdWIeHS3agxvzJ4Ev4nDw2ZdBl9ymd/JQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.9.4", + "@types/prop-types": "^15.7.12", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-datepicker": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-8.2.1.tgz", + "integrity": "sha512-1pyALWM9mTZ7DG7tfcApwBy2kkld9Kz/EI++LhPnoXJAASbvuq6fdsDfkoB3q1JrxF7vhghVmQ759H/rOwUNNw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.27.3", + "clsx": "^2.1.1", + "date-fns": "^4.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/react-error-overlay": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", + "license": "MIT" + }, + "node_modules/react-icons": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-perfect-scrollbar": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz", + "integrity": "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==", + "license": "MIT", + "dependencies": { + "perfect-scrollbar": "^1.5.0", + "prop-types": "^15.6.1" + }, + "peerDependencies": { + "react": ">=16.3.3", + "react-dom": ">=16.3.3" + } + }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.3.0.tgz", + "integrity": "sha512-466f2W7HIWaNXTKM5nHTqNxLrHTyXybm7R0eBlVSt0k/u55tTCDO194OIx/NrYD4TS5SXKTNekXfT37kMKUjgw==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.3.0.tgz", + "integrity": "sha512-z7Q5FTiHGgQfEurX/FBinkOXhWREJIAB2RiU24lvcBa82PxUpwqvs/PAXb9lJyPjTs2jrl6UkLvCZVGJPeNuuQ==", + "license": "MIT", + "dependencies": { + "react-router": "7.3.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-scripts": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/react-scripts/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/react-select": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.10.1.tgz", + "integrity": "sha512-roPEZUL4aRZDx6DcsD+ZNreVl+fM8VsKn0Wtex1v4IazH60ILp5xhdlp464IsEAlJdXeD+BhDAFsBVMfvLQueA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-toastify": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz", + "integrity": "sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==", + "license": "MIT", + "dependencies": { + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": "^18 || ^19", + "react-dom": "^18 || ^19" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "license": "MIT", + "peerDependencies": { + "redux": ">4.0.0" + } + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "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==", + "license": "MIT", + "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", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "license": "ISC" + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "license": "CC0-1.0" + }, + "node_modules/sass": { + "version": "1.86.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.0.tgz", + "integrity": "sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "license": "MIT" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "license": "MIT", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/svgo/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/svgo/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==", + "license": "MIT" + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svgo/node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/svgo/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/tailwindcss/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/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==", + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typescript-eslint": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", + "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.26.1", + "@typescript-eslint/parser": "8.26.1", + "@typescript-eslint/utils": "8.26.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", + "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/type-utils": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", + "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", + "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", + "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", + "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", + "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", + "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", + "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/typescript-eslint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "license": "MIT" + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-vitals": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "license": "MIT", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", + "license": "MIT", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", + "license": "MIT" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "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==", + "license": "MIT", + "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", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f13cb3c --- /dev/null +++ b/package.json @@ -0,0 +1,78 @@ +{ + "name": "angkoremoticons-cms", + "version": "0.1.0", + "private": true, + "dependencies": { + "@reduxjs/toolkit": "^2.6.1", + "@tanstack/react-query": "^5.68.0", + "@tanstack/react-query-devtools": "^5.68.0", + "@testing-library/dom": "^10.4.0", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.2.0", + "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.2", + "axios": "^1.8.3", + "bootstrap": "^5.3.3", + "classnames": "^2.5.1", + "crypto-js": "^4.2.0", + "date-fns": "^4.1.0", + "nvd3": "^1.8.6", + "react": "^19.0.0", + "react-bootstrap": "^2.10.9", + "react-datepicker": "^8.2.1", + "react-dom": "^19.0.0", + "react-icons": "^5.5.0", + "react-perfect-scrollbar": "^1.5.8", + "react-redux": "^9.2.0", + "react-router-dom": "^7.3.0", + "react-scripts": "5.0.1", + "react-select": "^5.10.1", + "react-toastify": "^11.0.5", + "redux-persist": "^6.0.0", + "typescript": "^4.9.5", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "env-cmd -f .env.prod craco start", + "start:dev": "env-cmd -f .env.dev craco start", + "build": "set \"GENERATE_SOURCEMAP=false\" && set \"BUILD_PATH=build/prod\" && env-cmd -f .env.prod craco build", + "build:dev": "set \"GENERATE_SOURCEMAP=false\" && set \"BUILD_PATH=build/dev\" && env-cmd -f .env.dev craco build", + "test": "craco test", + "eject": "craco eject", + "format": "prettier --write ." + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@craco/craco": "^7.1.0", + "@eslint/js": "^9.22.0", + "@types/crypto-js": "^4.2.2", + "@types/node": "^22.13.10", + "@types/react": "^19.0.11", + "@types/react-dom": "^19.0.4", + "env-cmd": "^10.1.0", + "eslint": "^8.57.1", + "eslint-plugin-react": "^7.37.4", + "globals": "^16.0.0", + "prettier": "3.5.3", + "react-app-alias": "^2.2.2", + "sass": "^1.86.0", + "typescript-eslint": "^8.26.1" + } +} diff --git a/public/assets/fonts/datta/datta-icons.css b/public/assets/fonts/datta/datta-icons.css new file mode 100644 index 0000000..e3321ad --- /dev/null +++ b/public/assets/fonts/datta/datta-icons.css @@ -0,0 +1,79 @@ +@charset "UTF-8"; + +@font-face { + font-family: 'pct'; + src: url('fonts/pct.eot'); + src: + url('fonts/pct.eot?#iefix') format('embedded-opentype'), + url('fonts/pct.woff') format('woff'), + url('fonts/pct.ttf') format('truetype'), + url('fonts/pct.svg#pct') format('svg'); + font-weight: normal; + font-style: normal; +} + +[data-icon]:before { + font-family: 'pct' !important; + content: attr(data-icon); + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + speak: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +[class^='pct-']:before, +[class*=' pct-']:before { + font-family: 'pct' !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + speak: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.pct-arrow1:before { + content: '\61'; +} +.pct-arrow2:before { + content: '\62'; +} +.pct-arrow3:before { + content: '\63'; +} +.pct-arrow4:before { + content: '\64'; +} +.pct-chat1:before { + content: '\65'; +} +.pct-chat2:before { + content: '\66'; +} +.pct-chat3:before { + content: '\67'; +} +.pct-chat4:before { + content: '\68'; +} +.pct-loader1:before { + content: '\69'; +} +.pct-arrow-sharp1:before { + content: '\6a'; +} +.pct-arrow-sharp2:before { + content: '\6b'; +} +.pct-arrow-sharp3:before { + content: '\6c'; +} +.pct-arrow-sharp4:before { + content: '\6d'; +} diff --git a/public/assets/fonts/datta/fonts/pct.eot b/public/assets/fonts/datta/fonts/pct.eot new file mode 100644 index 0000000..8ceda30 Binary files /dev/null and b/public/assets/fonts/datta/fonts/pct.eot differ diff --git a/public/assets/fonts/datta/fonts/pct.svg b/public/assets/fonts/datta/fonts/pct.svg new file mode 100644 index 0000000..2f670ac --- /dev/null +++ b/public/assets/fonts/datta/fonts/pct.svg @@ -0,0 +1,23 @@ + + + +Generated by Fontastic.me + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/fonts/datta/fonts/pct.ttf b/public/assets/fonts/datta/fonts/pct.ttf new file mode 100644 index 0000000..ea8e2ab Binary files /dev/null and b/public/assets/fonts/datta/fonts/pct.ttf differ diff --git a/public/assets/fonts/datta/fonts/pct.woff b/public/assets/fonts/datta/fonts/pct.woff new file mode 100644 index 0000000..d106341 Binary files /dev/null and b/public/assets/fonts/datta/fonts/pct.woff differ diff --git a/public/assets/fonts/feather/fonts/feather.eot b/public/assets/fonts/feather/fonts/feather.eot new file mode 100644 index 0000000..2771093 Binary files /dev/null and b/public/assets/fonts/feather/fonts/feather.eot differ diff --git a/public/assets/fonts/feather/fonts/feather.svg b/public/assets/fonts/feather/fonts/feather.svg new file mode 100644 index 0000000..c9f2bef --- /dev/null +++ b/public/assets/fonts/feather/fonts/feather.svg @@ -0,0 +1,759 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/fonts/feather/fonts/feather.ttf b/public/assets/fonts/feather/fonts/feather.ttf new file mode 100644 index 0000000..e8112bd Binary files /dev/null and b/public/assets/fonts/feather/fonts/feather.ttf differ diff --git a/public/assets/fonts/feather/fonts/feather.woff b/public/assets/fonts/feather/fonts/feather.woff new file mode 100644 index 0000000..05d6c78 Binary files /dev/null and b/public/assets/fonts/feather/fonts/feather.woff differ diff --git a/public/assets/fonts/feather/icon-font.css b/public/assets/fonts/feather/icon-font.css new file mode 100644 index 0000000..bd7abea --- /dev/null +++ b/public/assets/fonts/feather/icon-font.css @@ -0,0 +1,992 @@ +@font-face { + font-family: 'feather'; + src: url('fonts/feather.eot?t=1501841394106'); + /* IE9*/ + src: + url('fonts/feather.eot?t=1501841394106#iefix') format('embedded-opentype'), + url('fonts/feather.ttf?t=1501841394106') format('truetype'), + url('fonts/feather.svg?t=1501841394106#feather') format('svg'); + /* iOS 4.1- */ +} + +.feather { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'feather' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-alert-octagon:before { + content: '\e81b'; +} + +.icon-alert-circle:before { + content: '\e81c'; +} + +.icon-activity:before { + content: '\e81d'; +} + +.icon-alert-triangle:before { + content: '\e81e'; +} + +.icon-align-center:before { + content: '\e81f'; +} + +.icon-airplay:before { + content: '\e820'; +} + +.icon-align-justify:before { + content: '\e821'; +} + +.icon-align-left:before { + content: '\e822'; +} + +.icon-align-right:before { + content: '\e823'; +} + +.icon-arrow-down-left:before { + content: '\e824'; +} + +.icon-arrow-down-right:before { + content: '\e825'; +} + +.icon-anchor:before { + content: '\e826'; +} + +.icon-aperture:before { + content: '\e827'; +} + +.icon-arrow-left:before { + content: '\e828'; +} + +.icon-arrow-right:before { + content: '\e829'; +} + +.icon-arrow-down:before { + content: '\e82a'; +} + +.icon-arrow-up-left:before { + content: '\e82b'; +} + +.icon-arrow-up-right:before { + content: '\e82c'; +} + +.icon-arrow-up:before { + content: '\e82d'; +} + +.icon-award:before { + content: '\e82e'; +} + +.icon-bar-chart:before { + content: '\e82f'; +} + +.icon-at-sign:before { + content: '\e830'; +} + +.icon-bar-chart-2:before { + content: '\e831'; +} + +.icon-battery-charging:before { + content: '\e832'; +} + +.icon-bell-off:before { + content: '\e833'; +} + +.icon-battery:before { + content: '\e834'; +} + +.icon-bluetooth:before { + content: '\e835'; +} + +.icon-bell:before { + content: '\e836'; +} + +.icon-book:before { + content: '\e837'; +} + +.icon-briefcase:before { + content: '\e838'; +} + +.icon-camera-off:before { + content: '\e839'; +} + +.icon-calendar:before { + content: '\e83a'; +} + +.icon-bookmark:before { + content: '\e83b'; +} + +.icon-box:before { + content: '\e83c'; +} + +.icon-camera:before { + content: '\e83d'; +} + +.icon-check-circle:before { + content: '\e83e'; +} + +.icon-check:before { + content: '\e83f'; +} + +.icon-check-square:before { + content: '\e840'; +} + +.icon-cast:before { + content: '\e841'; +} + +.icon-chevron-down:before { + content: '\e842'; +} + +.icon-chevron-left:before { + content: '\e843'; +} + +.icon-chevron-right:before { + content: '\e844'; +} + +.icon-chevron-up:before { + content: '\e845'; +} + +.icon-chevrons-down:before { + content: '\e846'; +} + +.icon-chevrons-right:before { + content: '\e847'; +} + +.icon-chevrons-up:before { + content: '\e848'; +} + +.icon-chevrons-left:before { + content: '\e849'; +} + +.icon-circle:before { + content: '\e84a'; +} + +.icon-clipboard:before { + content: '\e84b'; +} + +.icon-chrome:before { + content: '\e84c'; +} + +.icon-clock:before { + content: '\e84d'; +} + +.icon-cloud-lightning:before { + content: '\e84e'; +} + +.icon-cloud-drizzle:before { + content: '\e84f'; +} + +.icon-cloud-rain:before { + content: '\e850'; +} + +.icon-cloud-off:before { + content: '\e851'; +} + +.icon-codepen:before { + content: '\e852'; +} + +.icon-cloud-snow:before { + content: '\e853'; +} + +.icon-compass:before { + content: '\e854'; +} + +.icon-copy:before { + content: '\e855'; +} + +.icon-corner-down-right:before { + content: '\e856'; +} + +.icon-corner-down-left:before { + content: '\e857'; +} + +.icon-corner-left-down:before { + content: '\e858'; +} + +.icon-corner-left-up:before { + content: '\e859'; +} + +.icon-corner-up-left:before { + content: '\e85a'; +} + +.icon-corner-up-right:before { + content: '\e85b'; +} + +.icon-corner-right-down:before { + content: '\e85c'; +} + +.icon-corner-right-up:before { + content: '\e85d'; +} + +.icon-cpu:before { + content: '\e85e'; +} + +.icon-credit-card:before { + content: '\e85f'; +} + +.icon-crosshair:before { + content: '\e860'; +} + +.icon-disc:before { + content: '\e861'; +} + +.icon-delete:before { + content: '\e862'; +} + +.icon-download-cloud:before { + content: '\e863'; +} + +.icon-download:before { + content: '\e864'; +} + +.icon-droplet:before { + content: '\e865'; +} + +.icon-edit-2:before { + content: '\e866'; +} + +.icon-edit:before { + content: '\e867'; +} + +.icon-edit-1:before { + content: '\e868'; +} + +.icon-external-link:before { + content: '\e869'; +} + +.icon-eye:before { + content: '\e86a'; +} + +.icon-feather:before { + content: '\e86b'; +} + +.icon-facebook:before { + content: '\e86c'; +} + +.icon-file-minus:before { + content: '\e86d'; +} + +.icon-eye-off:before { + content: '\e86e'; +} + +.icon-fast-forward:before { + content: '\e86f'; +} + +.icon-file-text:before { + content: '\e870'; +} + +.icon-film:before { + content: '\e871'; +} + +.icon-file:before { + content: '\e872'; +} + +.icon-file-plus:before { + content: '\e873'; +} + +.icon-folder:before { + content: '\e874'; +} + +.icon-filter:before { + content: '\e875'; +} + +.icon-flag:before { + content: '\e876'; +} + +.icon-globe:before { + content: '\e877'; +} + +.icon-grid:before { + content: '\e878'; +} + +.icon-heart:before { + content: '\e879'; +} + +.icon-home:before { + content: '\e87a'; +} + +.icon-github:before { + content: '\e87b'; +} + +.icon-image:before { + content: '\e87c'; +} + +.icon-inbox:before { + content: '\e87d'; +} + +.icon-layers:before { + content: '\e87e'; +} + +.icon-info:before { + content: '\e87f'; +} + +.icon-instagram:before { + content: '\e880'; +} + +.icon-layout:before { + content: '\e881'; +} + +.icon-link-2:before { + content: '\e882'; +} + +.icon-life-buoy:before { + content: '\e883'; +} + +.icon-link:before { + content: '\e884'; +} + +.icon-log-in:before { + content: '\e885'; +} + +.icon-list:before { + content: '\e886'; +} + +.icon-lock:before { + content: '\e887'; +} + +.icon-log-out:before { + content: '\e888'; +} + +.icon-loader:before { + content: '\e889'; +} + +.icon-mail:before { + content: '\e88a'; +} + +.icon-maximize-2:before { + content: '\e88b'; +} + +.icon-map:before { + content: '\e88c'; +} + +.icon-map-pin:before { + content: '\e88e'; +} + +.icon-menu:before { + content: '\e88f'; +} + +.icon-message-circle:before { + content: '\e890'; +} + +.icon-message-square:before { + content: '\e891'; +} + +.icon-minimize-2:before { + content: '\e892'; +} + +.icon-mic-off:before { + content: '\e893'; +} + +.icon-minus-circle:before { + content: '\e894'; +} + +.icon-mic:before { + content: '\e895'; +} + +.icon-minus-square:before { + content: '\e896'; +} + +.icon-minus:before { + content: '\e897'; +} + +.icon-moon:before { + content: '\e898'; +} + +.icon-monitor:before { + content: '\e899'; +} + +.icon-more-vertical:before { + content: '\e89a'; +} + +.icon-more-horizontal:before { + content: '\e89b'; +} + +.icon-move:before { + content: '\e89c'; +} + +.icon-music:before { + content: '\e89d'; +} + +.icon-navigation-2:before { + content: '\e89e'; +} + +.icon-navigation:before { + content: '\e89f'; +} + +.icon-octagon:before { + content: '\e8a0'; +} + +.icon-package:before { + content: '\e8a1'; +} + +.icon-pause-circle:before { + content: '\e8a2'; +} + +.icon-pause:before { + content: '\e8a3'; +} + +.icon-percent:before { + content: '\e8a4'; +} + +.icon-phone-call:before { + content: '\e8a5'; +} + +.icon-phone-forwarded:before { + content: '\e8a6'; +} + +.icon-phone-missed:before { + content: '\e8a7'; +} + +.icon-phone-off:before { + content: '\e8a8'; +} + +.icon-phone-incoming:before { + content: '\e8a9'; +} + +.icon-phone:before { + content: '\e8aa'; +} + +.icon-phone-outgoing:before { + content: '\e8ab'; +} + +.icon-pie-chart:before { + content: '\e8ac'; +} + +.icon-play-circle:before { + content: '\e8ad'; +} + +.icon-play:before { + content: '\e8ae'; +} + +.icon-plus-square:before { + content: '\e8af'; +} + +.icon-plus-circle:before { + content: '\e8b0'; +} + +.icon-plus:before { + content: '\e8b1'; +} + +.icon-pocket:before { + content: '\e8b2'; +} + +.icon-printer:before { + content: '\e8b3'; +} + +.icon-power:before { + content: '\e8b4'; +} + +.icon-radio:before { + content: '\e8b5'; +} + +.icon-repeat:before { + content: '\e8b6'; +} + +.icon-refresh-ccw:before { + content: '\e8b7'; +} + +.icon-rewind:before { + content: '\e8b8'; +} + +.icon-rotate-ccw:before { + content: '\e8b9'; +} + +.icon-refresh-cw:before { + content: '\e8ba'; +} + +.icon-rotate-cw:before { + content: '\e8bb'; +} + +.icon-save:before { + content: '\e8bc'; +} + +.icon-search:before { + content: '\e8bd'; +} + +.icon-server:before { + content: '\e8be'; +} + +.icon-scissors:before { + content: '\e8bf'; +} + +.icon-share-2:before { + content: '\e8c0'; +} + +.icon-share:before { + content: '\e8c1'; +} + +.icon-shield:before { + content: '\e8c2'; +} + +.icon-settings:before { + content: '\e8c3'; +} + +.icon-skip-back:before { + content: '\e8c4'; +} + +.icon-shuffle:before { + content: '\e8c5'; +} + +.icon-sidebar:before { + content: '\e8c6'; +} + +.icon-skip-forward:before { + content: '\e8c7'; +} + +.icon-slack:before { + content: '\e8c8'; +} + +.icon-slash:before { + content: '\e8c9'; +} + +.icon-smartphone:before { + content: '\e8ca'; +} + +.icon-square:before { + content: '\e8cb'; +} + +.icon-speaker:before { + content: '\e8cc'; +} + +.icon-star:before { + content: '\e8cd'; +} + +.icon-stop-circle:before { + content: '\e8ce'; +} + +.icon-sun:before { + content: '\e8cf'; +} + +.icon-sunrise:before { + content: '\e8d0'; +} + +.icon-tablet:before { + content: '\e8d1'; +} + +.icon-tag:before { + content: '\e8d2'; +} + +.icon-sunset:before { + content: '\e8d3'; +} + +.icon-target:before { + content: '\e8d4'; +} + +.icon-thermometer:before { + content: '\e8d5'; +} + +.icon-thumbs-up:before { + content: '\e8d6'; +} + +.icon-thumbs-down:before { + content: '\e8d7'; +} + +.icon-toggle-left:before { + content: '\e8d8'; +} + +.icon-toggle-right:before { + content: '\e8d9'; +} + +.icon-trash-2:before { + content: '\e8da'; +} + +.icon-trash:before { + content: '\e8db'; +} + +.icon-trending-up:before { + content: '\e8dc'; +} + +.icon-trending-down:before { + content: '\e8dd'; +} + +.icon-triangle:before { + content: '\e8de'; +} + +.icon-type:before { + content: '\e8df'; +} + +.icon-twitter:before { + content: '\e8e0'; +} + +.icon-upload:before { + content: '\e8e1'; +} + +.icon-umbrella:before { + content: '\e8e2'; +} + +.icon-upload-cloud:before { + content: '\e8e3'; +} + +.icon-unlock:before { + content: '\e8e4'; +} + +.icon-user-check:before { + content: '\e8e5'; +} + +.icon-user-minus:before { + content: '\e8e6'; +} + +.icon-user-plus:before { + content: '\e8e7'; +} + +.icon-user-x:before { + content: '\e8e8'; +} + +.icon-user:before { + content: '\e8e9'; +} + +.icon-users:before { + content: '\e8ea'; +} + +.icon-video-off:before { + content: '\e8eb'; +} + +.icon-video:before { + content: '\e8ec'; +} + +.icon-voicemail:before { + content: '\e8ed'; +} + +.icon-volume-x:before { + content: '\e8ee'; +} + +.icon-volume-2:before { + content: '\e8ef'; +} + +.icon-volume-1:before { + content: '\e8f0'; +} + +.icon-volume:before { + content: '\e8f1'; +} + +.icon-watch:before { + content: '\e8f2'; +} + +.icon-wifi:before { + content: '\e8f3'; +} + +.icon-x-square:before { + content: '\e8f4'; +} + +.icon-wind:before { + content: '\e8f5'; +} + +.icon-x:before { + content: '\e8f6'; +} + +.icon-x-circle:before { + content: '\e8f7'; +} + +.icon-zap:before { + content: '\e8f8'; +} + +.icon-zoom-in:before { + content: '\e8f9'; +} + +.icon-zoom-out:before { + content: '\e8fa'; +} + +.icon-command:before { + content: '\e8fb'; +} + +.icon-cloud:before { + content: '\e8fc'; +} + +.icon-hash:before { + content: '\e8fd'; +} + +.icon-headphones:before { + content: '\e8fe'; +} + +.icon-underline:before { + content: '\e8ff'; +} + +.icon-italic:before { + content: '\e900'; +} + +.icon-bold:before { + content: '\e901'; +} + +.icon-crop:before { + content: '\e902'; +} + +.icon-help-circle:before { + content: '\e903'; +} + +.icon-paperclip:before { + content: '\e904'; +} + +.icon-shopping-cart:before { + content: '\e905'; +} + +.icon-tv:before { + content: '\e906'; +} + +.icon-wifi-off:before { + content: '\e907'; +} + +.icon-minimize:before { + content: '\e88d'; +} + +.icon-maximize:before { + content: '\e908'; +} + +.icon-gitlab:before { + content: '\e909'; +} + +.icon-sliders:before { + content: '\e90a'; +} + +.icon-star-on:before { + content: '\e90b'; +} + +.icon-heart-on:before { + content: '\e90c'; +} diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..f3c4529 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..d9e6b4a --- /dev/null +++ b/public/index.html @@ -0,0 +1,27 @@ + + + + + AngkorLife Emoticions CMS + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..1f2f141 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/src/App.test.tsx b/src/App.test.tsx new file mode 100644 index 0000000..2a68616 --- /dev/null +++ b/src/App.test.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..ec5b62f --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,56 @@ +import { toast, ToastContainer } from 'react-toastify'; +import { MutationCache, QueryCache, QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; +import axios from 'axios'; +import RootLayout from '@layout/RootLayout'; + +const App = () => { + const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false + }, + mutations: { + retry: false + } + }, + queryCache: new QueryCache({ + onError: (error) => { + if (axios.isAxiosError(error)) { + toast.error(`${error.response?.data?.errorMessage || error.message || 'An unexpected error occurred.'}`); + } else { + toast.error('An unexpected error occurred.'); + } + } + }), + mutationCache: new MutationCache({ + onError: (error) => { + if (axios.isAxiosError(error)) { + toast.error(`${error.response?.data?.errorMessage || error.message || 'An unexpected error occurred.'}`); + } else { + toast.error('An unexpected error occurred.'); + } + } + }) + }); + + return ( + + + + + + ); +}; + +export default App; diff --git a/src/components/errorboundary/ErrorBoundary.tsx b/src/components/errorboundary/ErrorBoundary.tsx new file mode 100644 index 0000000..b8f383b --- /dev/null +++ b/src/components/errorboundary/ErrorBoundary.tsx @@ -0,0 +1,67 @@ +import React, { JSX } from 'react'; +import AlertModal from '@components/ui/modal/AlertModal'; + +interface ErrorBoundaryProps { + children: JSX.Element; + onReset?: () => void; + navigate: (path: string) => void; +} + +interface ErrorBoundaryState { + hasError: boolean; + error: Error | null; + isModalOpen: boolean; +} + +class ErrorBoundary extends React.Component { + state: ErrorBoundaryState = { hasError: false, error: null, isModalOpen: false }; + + /* 에러 발생시 fallback UI 표시하도록 상태 업데이트 */ + static getDerivedStateFromError(error: Error) { + return { hasError: true, error, isModalOpen: true }; + } + + /* 에러 내용과 발생 위치에 대한 log */ + componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void { + if (process.env.NODE_ENV === 'development') { + console.error('Uncaught error:', error, errorInfo); + } + } + + handleCloseBtn = () => { + this.setState({ hasError: false, error: null, isModalOpen: false }); + this.props.navigate('/'); + }; + + // confirm 버튼 활성화시 -> reset 동작 + handleConfirmBtn = () => { + this.setState({ hasError: false, error: null, isModalOpen: false }); + if (this.props.onReset) { + this.props.onReset(); + } + }; + + render() { + const { hasError, isModalOpen, error } = this.state; + if (hasError) { + const modalBtn = { + closeTxt: 'Close', + isCancelBtn: true // 필요에 따라 설정 + }; + const modalTxt = error || 'An unexpected error occurred.'; + + return ( + + {'Error: ' + (modalTxt || 'An unexpected error occurred.')} + + ); + } + return this.props.children; + } +} + +export default ErrorBoundary; diff --git a/src/components/scrolltotop/ScrollToTop.tsx b/src/components/scrolltotop/ScrollToTop.tsx new file mode 100644 index 0000000..ebb0a83 --- /dev/null +++ b/src/components/scrolltotop/ScrollToTop.tsx @@ -0,0 +1,18 @@ +import React, { ReactElement, useEffect } from 'react'; +import { useLocation } from 'react-router-dom'; + +interface Props { + children?: React.ReactNode; +} + +const ScrollToTop = ({ children }: Props): ReactElement => { + const location = useLocation(); + + useEffect(() => { + window.scrollTo(0, 0); + }, [location]); + + return <>{children}; +}; + +export default ScrollToTop; diff --git a/src/components/ui/button/Button.module.scss b/src/components/ui/button/Button.module.scss new file mode 100644 index 0000000..c09312d --- /dev/null +++ b/src/components/ui/button/Button.module.scss @@ -0,0 +1,104 @@ +@mixin button-styles( + $background-color, + $color, + $border-radius: 4px, + $border-color: transparent, + $apply-hover: true, + $hover-background: null, + $hover-color: $color +) { + background-color: $background-color; + color: $color; + border-radius: $border-radius; + border: 1px solid $border-color; + + @if $apply-hover { + &:hover { + background-color: $hover-background; + color: $hover-color; + } + } +} + +.button { + border: none; + cursor: pointer; + font-size: 14px; + font-family: pretendard; + line-height: 1px; + transition: + background-color 0.2s ease, + color 0.2s ease; + + // [action] 공통 스타일 + @mixin base-action { + display: flex; + justify-content: center; + align-items: center; + gap: 2px; + height: 36px; + } + + // ------------------------------------- SIZE -------------------------------------- + + // Delete(icon) + &--xs { + @include base-action; + } + + // Details, Edit + &--sm { + height: 30px; + padding: 0.5rem 1rem; + } + + // Close, Confirm, Process, Cancel + &--md { + height: 33px; + min-width: 100px; + padding: 0.5rem 1rem; + } + + // Add, Delete, Change, Reset + &--lg { + @include base-action; + min-width: 74px; + } + + // ------------------------------------- SIZE -------------------------------------- + + // ------------------------------------- STYLE ------------------------------------- + + // Details, Edit + &--rounded { + @include button-styles(#fff, #7e84a3, 4px, #a1a7c4, #fff, #6c757d, #fff); + } + + // Confirm + &--confirm { + @include button-styles(#fec702, #fff, 50px, null, true, #fdde6d, #fff); + } + + // Process + &--process { + @include button-styles(#fec702, #fff, 4px, null, true, #fdde6d, #fff); + } + + // Close, Cancel + &--close { + @include button-styles(#fff, #858c97, 50px, #c2cad4, false); + } + + // Add, Reset, Change, Delete + &--action { + @include button-styles(#fff, #7e84a3, 4px, #d5d7e3, false); + } + + &[disabled] { + opacity: 0.3; + pointer-events: none; + cursor: not-allowed; + } +} + +// ------------------------------------- STYLE ------------------------------------- diff --git a/src/components/ui/button/Button.tsx b/src/components/ui/button/Button.tsx new file mode 100644 index 0000000..01e6827 --- /dev/null +++ b/src/components/ui/button/Button.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import styles from './Button.module.scss'; +import classNames from 'classnames/bind'; + +const cn = classNames.bind(styles); + +interface ButtonProps { + size?: 'xs' | 'sm' | 'md' | 'lg'; + color?: 'rounded' | 'confirm' | 'process' | 'close' | 'action' | 'disabled'; + type?: 'button' | 'submit' | 'reset'; + value?: string | number; + name?: string; + children: React.ReactNode; + onClick?: (e: React.MouseEvent) => void; + disabled?: boolean; +} + +const Button: React.FC = ({ + size = 'sm', + color = 'rounded', + type = 'button', + value, + name, + children, + onClick, + disabled +}) => { + const classNames = cn('button', `button--${size}`, `button--${color}`); + + return ( + + ); +}; + +export default Button; diff --git a/src/components/ui/button/SortButton.module.scss b/src/components/ui/button/SortButton.module.scss new file mode 100644 index 0000000..8312075 --- /dev/null +++ b/src/components/ui/button/SortButton.module.scss @@ -0,0 +1,20 @@ +.btn_sort { + background: none; + border: none; + display: flex; + justify-content: center; + align-items: center; + + &:focus { + outline: none; + } +} + +.arrow { + margin-left: 8px; +} +.default_arrow { + display: flex; + flex-direction: column; + align-items: end; +} diff --git a/src/components/ui/button/SortButton.tsx b/src/components/ui/button/SortButton.tsx new file mode 100644 index 0000000..8cf1520 --- /dev/null +++ b/src/components/ui/button/SortButton.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import classNames from 'classnames/bind'; + +import styles from './SortButton.module.scss'; +import SortDown from '@styles/images/icons/ic-arrow-down.svg'; +import SortUp from '@styles/images/icons/ic-arrow-up.svg'; + +const cn = classNames.bind(styles); + +interface Props { + label: string; + column: string; + onClick: React.MouseEventHandler; + dataList: { + content: object[]; + } | null; + sortRequest: { + sort: string[]; + }; +} + +const SortButton = ({ label, column, onClick, dataList, sortRequest }: Props) => { + const isSortActive = sortRequest.sort[0] && sortRequest.sort[0].startsWith(column); + const isAscending = sortRequest.sort[0] === `${column},asc`; + + return ( + + ); +}; + +export default SortButton; diff --git a/src/components/ui/loader/Loader.tsx b/src/components/ui/loader/Loader.tsx new file mode 100644 index 0000000..67a9bbc --- /dev/null +++ b/src/components/ui/loader/Loader.tsx @@ -0,0 +1,13 @@ +import React from 'react'; + +const Loader: React.FC = () => { + return ( +
+
+
+
+
+ ); +}; + +export default Loader; diff --git a/src/components/ui/modal/AlertModal.module.scss b/src/components/ui/modal/AlertModal.module.scss new file mode 100644 index 0000000..3de9252 --- /dev/null +++ b/src/components/ui/modal/AlertModal.module.scss @@ -0,0 +1,71 @@ +.container { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + z-index: 1001; + background: rgba(0, 0, 0, 0.5); // 어두운 배경 + overflow-y: auto; + + .modal-wrap { + position: relative; + width: 500px; // 모달의 기본 너비 + max-width: 90%; // 작은 화면에서 반응형 + background: #fff; + border-radius: 8px; + box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.2); + padding: 36px 40px 30px; + font-family: Pretendard, sans-serif; + + .body { + color: #505050; + font-family: Pretendard; + font-size: 14px; + font-weight: 400; + white-space: pre-line; + margin-bottom: 16px; + } + + .footer { + display: flex; + justify-content: flex-end; + gap: 10px; + + .btn { + padding: 6px 16px; + border-radius: 4px; + font-size: 14px; + font-weight: 500; + min-width: 100px; + cursor: pointer; + transition: all 0.3s ease; + + &.confirm { + background-color: #fec702; + border-radius: 50px; + color: #fff; + border: none; + + &:hover { + background-color: darken(#fec702, 10%); + } + } + + &.cancel { + background-color: #fff; + border: 1px solid #c2cad4; + border-radius: 50px; + color: #858c97; + + &:hover { + background-color: darken(#fff, 3%); + } + } + } + } + } +} diff --git a/src/components/ui/modal/AlertModal.tsx b/src/components/ui/modal/AlertModal.tsx new file mode 100644 index 0000000..80f6407 --- /dev/null +++ b/src/components/ui/modal/AlertModal.tsx @@ -0,0 +1,64 @@ +import React, { useEffect } from 'react'; +import ReactDOM from 'react-dom'; +import Button from '../button/Button'; + +interface Button { + onClose: () => void; + buttonName: string; +} + +interface AlertModalProps { + isOpen: boolean; + closeBtn?: Button; + confirmBtn?: Button; + children: React.ReactNode; + disabled?: boolean; +} + +const AlertModal = ({ isOpen, closeBtn, confirmBtn, children, disabled }: AlertModalProps) => { + // 모달 열린 상태에선 스크롤 제어 + useEffect(() => { + if (isOpen && document.body.style.overflow !== 'hidden') { + document.body.style.overflow = 'hidden'; + } + + return () => { + if (!document.querySelector('.modal_wrapper')) { + document.body.style.overflow = 'auto'; + } + }; + }, [isOpen]); + + const handleClickOutside = (event: React.MouseEvent) => { + event.preventDefault(); + event.stopPropagation(); + }; + + if (!isOpen) { + return null; + } + + return ReactDOM.createPortal( +
handleClickOutside(e)}> +
+
e.stopPropagation()}> +

{children}

+
+ {closeBtn && ( + + )} + {confirmBtn && ( + + )} +
+
+
, + document.body + ); +}; + +export default AlertModal; diff --git a/src/components/ui/modal/Modal.tsx b/src/components/ui/modal/Modal.tsx new file mode 100644 index 0000000..7867156 --- /dev/null +++ b/src/components/ui/modal/Modal.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; + +interface Props { + isOpen: boolean; + onClose: (isOpen: boolean) => void; + children: React.ReactNode; +} + +const Modal: React.FC = ({ isOpen, onClose, children }) => { + const handleClickOutside = (event: React.MouseEvent) => { + if ((event.target as Element).className === 'black_bg') { + onClose(false); + } + }; + + if (!isOpen) { + return null; + } + + return ReactDOM.createPortal( +
handleClickOutside(e)}> +
+
{children}
+
, + document.body + ); +}; + +export default Modal; diff --git a/src/components/ui/pagination/Pagination.tsx b/src/components/ui/pagination/Pagination.tsx new file mode 100644 index 0000000..63ad107 --- /dev/null +++ b/src/components/ui/pagination/Pagination.tsx @@ -0,0 +1,55 @@ +import React from 'react'; + +import prevImg from '@icons/chevron-left.svg'; +import nextImg from '@icons/chevron-right.svg'; + +interface Props { + totalItems: number; + itemsPerPage: number; + currentPage: number; + onPaginate: (pageNumber: number) => void; +} + +const Pagination = ({ totalItems, itemsPerPage, currentPage, onPaginate }: Props) => { + const totalPage = Math.ceil(totalItems / itemsPerPage); + const pagesToShow = 10; + + return ( +
+ + {Array.from( + { length: pagesToShow }, + (_, index) => Math.floor((currentPage - 1) / pagesToShow) * pagesToShow + 1 + index + ).map((num) => { + if (num <= totalPage) { + return ( + + ); + } else { + return null; + } + })} + +
+ ); +}; + +export default Pagination; diff --git a/src/components/ui/radio/Radio.module.scss b/src/components/ui/radio/Radio.module.scss new file mode 100644 index 0000000..8530b4b --- /dev/null +++ b/src/components/ui/radio/Radio.module.scss @@ -0,0 +1,45 @@ +.radio { + margin: 0 16px 0 0; + padding-left: 23px; + cursor: pointer; + background-repeat: no-repeat; + background-image: url('~@icons/btn-radio-default.svg'); + background-position: left; +} + +.radio { + &.checked { + cursor: default; + background-image: url('~@icons/btn-radio-active.svg'); + } +} + +input[type='radio'] { + display: none; +} + +// ----------------------------------------------- + +.chart_radio_label { + font-family: 'Pretendard'; + padding: 0 12px; + display: inline-block; + line-height: 36px; + color: #131523; + cursor: pointer; + font-size: 13px; + background: none; + margin: 0; + width: 70px; + text-align: center; + + &.checked { + background: #fec702; + color: #fff; + border-radius: 5px; + } +} + +.input_name { + color: #fff; +} diff --git a/src/components/ui/radio/Radio.tsx b/src/components/ui/radio/Radio.tsx new file mode 100644 index 0000000..40a72f7 --- /dev/null +++ b/src/components/ui/radio/Radio.tsx @@ -0,0 +1,52 @@ +import React from 'react'; +import styles from './Radio.module.scss'; +import classNames from 'classnames/bind'; + +const cn = classNames.bind(styles); + +export interface RadioOption { + id: string; + label: string; +} + +interface RadioGroupProps { + className?: 'radio' | 'chart_radio_label'; + options: RadioOption[]; + name: string; + value: string; + onChange: (option: RadioOption) => void; + disabled?: boolean; +} + +const Radio: React.FC = ({ + className = 'radio', + options, + name, + value, + onChange, + disabled = false +}) => { + return ( + <> + {options.map((option) => ( + + ))} + + ); +}; + +export default Radio; diff --git a/src/components/ui/searchBar/SearchBar.module.scss b/src/components/ui/searchBar/SearchBar.module.scss new file mode 100644 index 0000000..3c7e6f6 --- /dev/null +++ b/src/components/ui/searchBar/SearchBar.module.scss @@ -0,0 +1,37 @@ +.search-form { + display: flex; + align-items: center; + border: 1px solid #d5d7e3; + border-radius: 18px; + width: 300px; + + @media (max-width: 1200px) { + width: 200px; // 작은 화면에서 중간 크기 + } + + button { + height: 100%; + border: none; + background: none; + padding-left: 10px; + + &.disabled { + cursor: auto; + } + } + + input { + width: 100%; + height: 36px; + border-radius: 18px; + border: 0; + padding: 6px 12px; + background-color: #fff; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: #131523; + appearance: none; + -moz-appearance: none; + } +} diff --git a/src/components/ui/searchBar/SearchBar.tsx b/src/components/ui/searchBar/SearchBar.tsx new file mode 100644 index 0000000..5ac1e9e --- /dev/null +++ b/src/components/ui/searchBar/SearchBar.tsx @@ -0,0 +1,28 @@ +import React, { forwardRef } from 'react'; +import classNames from 'classnames/bind'; + +import styles from './SearchBar.module.scss'; +import SearchIcon from '@images/icons/ic-search.svg'; + +const cn = classNames.bind(styles); + +interface Props { + onClick: React.MouseEventHandler; + onKeyDown: React.KeyboardEventHandler; + placeholderText: string; +} + +const SearchBar = forwardRef(({ onClick, onKeyDown, placeholderText }, ref) => { + return ( +
+ + +
+ ); +}); + +SearchBar.displayName = 'SearchBar'; + +export default SearchBar; diff --git a/src/hooks/useModal.ts b/src/hooks/useModal.ts new file mode 100644 index 0000000..fb0a2fe --- /dev/null +++ b/src/hooks/useModal.ts @@ -0,0 +1,19 @@ +import { useState } from 'react'; + +interface ModalState { + isOpen: boolean; + modalData?: T; +} + +export const useModal = () => { + const [modal, setModal] = useState>({ isOpen: false }); + + const handleToggleModal = (isOpen: boolean, modalData?: T) => { + setModal({ + isOpen, + modalData: isOpen ? modalData : undefined + }); + }; + + return { ...modal, handleToggleModal }; +}; diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000..25738fb --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,25 @@ +import ReactDOM from 'react-dom/client'; +import { Provider } from 'react-redux'; +import { PersistGate } from 'redux-persist/integration/react'; +import { BrowserRouter } from 'react-router-dom'; + +import { persistor, store } from './redux'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +import './styles/custom/custom.scss'; +import './styles/styles.css'; +import './styles/common.css'; + +const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); +root.render( + + + + + + + +); + +reportWebVitals(); diff --git a/src/layout/AuthLayout.tsx b/src/layout/AuthLayout.tsx new file mode 100644 index 0000000..e4329d4 --- /dev/null +++ b/src/layout/AuthLayout.tsx @@ -0,0 +1,31 @@ +import { Navigate, Route, Routes } from 'react-router-dom'; + +import SignIn from '@pages/authentication/SignIn'; +import IntegrationProcess from '@pages/authentication/IntegrationProcess'; +import SecondaryCertification from '@pages/authentication/SecondaryCertification'; + +import loginLogo from '@images/logo/login-logo.png'; + +const AuthLayout = () => { + return ( +
+
+
+
+
+ login_logo +
+ + } /> + } /> + } /> + } /> + +
+
+
+
+ ); +}; + +export default AuthLayout; diff --git a/src/layout/MasterLayout.tsx b/src/layout/MasterLayout.tsx new file mode 100644 index 0000000..682f620 --- /dev/null +++ b/src/layout/MasterLayout.tsx @@ -0,0 +1,96 @@ +import React, { useEffect } from 'react'; +import { Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom'; +import { useSelector } from 'react-redux'; + +import { RootState } from '@redux/index'; +import ErrorBoundary from '@components/errorboundary/ErrorBoundary'; + +import 'react-toastify/dist/ReactToastify.css'; +import { useMenuPrivacyQuery } from '@api/menuAPI'; +import Loader from '@components/ui/loader/Loader'; +import Header from './components/header/Header'; +import Sidebar from './components/Sidebar'; + +const MasterLayout = () => { + const authLv = { + level: useSelector((state: RootState) => state.auth.userData?.auth as string) + }; + const { data: menuItems = [], isLoading } = useMenuPrivacyQuery(authLv); + + const navigate = useNavigate(); + const location = useLocation(); + + useEffect(() => { + if (!isLoading && menuItems.length > 0 && location.pathname === '/') { + navigate(menuItems[0]?.menuLink); + } + }, [isLoading, menuItems, location]); + + interface DynamicRouteCompnentProps { + path: string; + componentName: string; + } + + const DynamicRouteComponent: React.FC = ({ path, componentName }) => { + const menuPath = path.replace(/\s/g, ''); + const menuName = componentName.replace(/\s/g, ''); + + const Component = React.lazy(() => + import(`../pages${menuPath}/${menuName}`).catch(() => ({ default: () => <>error })) + ); + + return ( + }> + + + ); + }; + + if (isLoading) { + return null; + } + + return ( + <> + {/*
*/} +
+
+ +
+
+
+
+
+ + + {menuItems?.map((item, index) => + item.children[0] ? ( + item.children?.map((cItem, cIndex) => ( + } + /> + )) + ) : ( + } + /> + ) + )} + } /> + + +
+
+
+
+
+
+ + ); +}; + +export default MasterLayout; diff --git a/src/layout/RootLayout.tsx b/src/layout/RootLayout.tsx new file mode 100644 index 0000000..fb6961e --- /dev/null +++ b/src/layout/RootLayout.tsx @@ -0,0 +1,29 @@ +import React, { useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { useSelector } from 'react-redux'; +import { RootState } from '../redux'; + +import AuthLayout from './AuthLayout'; +import MasterLayout from './MasterLayout'; +import ScrollToTop from '@components/scrolltotop/ScrollToTop'; + +const RootLayout = () => { + const isAuthenticated = useSelector((state: RootState) => state.auth.isAuthenticated); + const navigate = useNavigate(); + + useEffect(() => { + const handleLogout = (): void => { + navigate('/'); + }; + + window.addEventListener('logout', handleLogout); + + return () => { + window.removeEventListener('logout', handleLogout); + }; + }, [navigate]); + + return {isAuthenticated ? : }; +}; + +export default RootLayout; diff --git a/src/layout/TitleLayout.tsx b/src/layout/TitleLayout.tsx new file mode 100644 index 0000000..e1a7b03 --- /dev/null +++ b/src/layout/TitleLayout.tsx @@ -0,0 +1,20 @@ +import React, { ReactNode } from 'react'; +import { Row, Col } from 'react-bootstrap'; + +interface TitleLaytoutProps { + title: string; + children: ReactNode; +} + +const TitleLayout: React.FC = ({ title, children }) => { + return ( +
+

{title}

+ + {children} + +
+ ); +}; + +export default TitleLayout; diff --git a/src/layout/components/Sidebar.tsx b/src/layout/components/Sidebar.tsx new file mode 100644 index 0000000..5369aa0 --- /dev/null +++ b/src/layout/components/Sidebar.tsx @@ -0,0 +1,85 @@ +import React from 'react'; +import { Link, useLocation } from 'react-router-dom'; + +import { MenuPrivacyResponse } from '@api/menuAPI'; + +import ScrollBar from 'react-perfect-scrollbar'; + +interface Props { + menuInfo: MenuPrivacyResponse[]; +} + +const Sidebar = ({ menuInfo }: Props) => { + const location = useLocation(); + const naviLinkClass = ['nav-link']; + + const navItem = (menuInfo: MenuPrivacyResponse, index: number) => { + // 🔹 menuFolder에 "/emoticons/" 또는 "/manage/"가 포함되지 않으면 렌더링하지 않음 + if (!menuInfo.menuFolder.includes('/emoticons/') && !menuInfo.menuFolder.includes('/manage/')) { + return null; + } + + if ([menuInfo.menuLink].concat(menuInfo.children.map((item) => item.menuLink)).includes(location.pathname)) { + if (!naviLinkClass.includes('active')) { + naviLinkClass.push('active'); + } + } else { + const activeIndex = naviLinkClass.findIndex((item) => item === 'active'); + + if (activeIndex > 0) { + naviLinkClass.splice(activeIndex, 1); + } + } + + if (menuInfo.children[0]?.id) { + return ( +
  • + + + + + + {menuInfo.menuName} + + +
      {menuInfo.children.map((item, index) => navItem(item, index))}
    +
  • + ); + } else if (menuInfo.parentId === 0) { + return ( +
  • + + + + + + {menuInfo.menuName} + + +
  • + ); + } else { + return ( +
  • + + {menuInfo.menuName} + +
  • + ); + } + }; + + return ( + + ); +}; + +export default Sidebar; diff --git a/src/layout/components/header/Header.tsx b/src/layout/components/header/Header.tsx new file mode 100644 index 0000000..0878373 --- /dev/null +++ b/src/layout/components/header/Header.tsx @@ -0,0 +1,114 @@ +import React, { useState } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import { Dropdown } from 'react-bootstrap'; +import { useDispatch, useSelector } from 'react-redux'; + +import { RootState } from '@redux/index'; +import { logoutSuccess } from '@redux/auth'; +import { aesDecrypt } from '@utils/cryption'; + +import Modal from '@components/ui/modal/Modal'; + +import headerLogo from '@images/logo/logo-main.png'; +import imgBell from '@icons/ic-bell.svg'; +import downImg from '@icons/ic-chevron-down.svg'; +import userInfoImg from '@icons/ic-user.svg'; +import logoutImg from '@icons/ic-logout.svg'; +import AdminInfo from './my_info/AdminInfoModal'; + +interface Props { + pagePath: string; +} + +const Header = ({ pagePath }: Props) => { + const version = process.env.REACT_APP_VERSION; + const userName = aesDecrypt(useSelector((state: RootState) => state.auth.userData?.userName as string)); + + const [isModalOpen, setIsModalOpen] = useState(false); + + const dispatch = useDispatch(); + + const navigate = useNavigate(); + + const headerClass = ['navbar', 'pcoded-header', 'navbar-expand-lg']; + + const openModal = (e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + + setIsModalOpen(true); + }; + + const handleLogout = () => { + dispatch(logoutSuccess()); + navigate('/'); + }; + + return ( + <> + setIsModalOpen(false)}> + setIsModalOpen(false)} /> + +
    +
    + +
    + angkor chat + {version} +
    + +
    +
    + +
    +
    + + ); +}; + +export default Header; diff --git a/src/layout/components/header/my_info/AdminInfoModal.tsx b/src/layout/components/header/my_info/AdminInfoModal.tsx new file mode 100644 index 0000000..7f1014f --- /dev/null +++ b/src/layout/components/header/my_info/AdminInfoModal.tsx @@ -0,0 +1,213 @@ +import React, { useState } from 'react'; +import { toast } from 'react-toastify'; + +import { InfoResponse, useInfoQuery } from '@api/authAPI'; +import { useSimpleCodeListQuery } from '@api/codeAPI'; +import { useCheckPasswordMutation, useUpdatePasswordMutation } from '@api/adminAPI'; +import { sha256Encrypt } from '@utils/cryption'; + +import AlertModal from '@components/ui/modal/AlertModal'; +import Button from '@components/ui/button/Button'; + +interface Props { + onClose: () => void; +} + +const AUTH_CODE = '008'; + +const AdminInfo = ({ onClose }: Props) => { + const [toggleChangePassword, setToggleChangePassword] = useState(true); + + const { data: myInfo = {} as InfoResponse, isLoading: infoLoading, isError: infoError } = useInfoQuery(); + const { + data: authCodeList = [], + isLoading: authCodeLoading, + isError: authCodeError + } = useSimpleCodeListQuery(AUTH_CODE); + + const Password: React.FC = () => { + return ( +
    + ******** + +
    + ); + }; + + const ChangePassword: React.FC = () => { + const [modal, setModal] = useState({ + isOpen: false, + txt: '' + }); + + const [changePassword, setChangePassword] = useState({ + currentPassword: '', + newPassword: '', + confirmPassword: '', + isPasswordCheck: false + }); + + const { mutate: checkPassword } = useCheckPasswordMutation(); + const { mutate: updataPassword } = useUpdatePasswordMutation(); + + const handleModalClose = (toggle: boolean) => { + setModal((prevState) => ({ ...prevState, isOpen: false })); + + if (toggle) { + setToggleChangePassword(true); + } + }; + + const handleCurrentPasswordCheck = () => { + const request = { + userId: myInfo.adminId, + password: sha256Encrypt(changePassword.currentPassword) + }; + + checkPassword(request, { + onSuccess: () => { + setChangePassword((prevState) => ({ ...prevState, isPasswordCheck: true })); + setModal({ + isOpen: true, + txt: 'You can change your password.' + }); + } + }); + }; + + const handlePasswordChange = () => { + const passwordPattern = /^(?=.*[0-9])(?=.*[!@#$%^&*()])(?=.{8,16}).*$/; + const isValidPassword = passwordPattern.test(changePassword.newPassword); + + if (!isValidPassword) { + setModal({ + isOpen: true, + txt: 'New Password must be at least 8 characters and not more than 16 characters, including at least one digit/special character (!@#$%^&*()).' + }); + } else if (changePassword.currentPassword === changePassword.newPassword) { + setModal({ isOpen: true, txt: 'You cannot set the same password as your previous password.' }); + } else if (changePassword.newPassword !== changePassword.confirmPassword) { + setModal({ isOpen: true, txt: 'Password is different.' }); + } else { + const request = { + userId: myInfo.adminId, + password: sha256Encrypt(changePassword.newPassword) + }; + + updataPassword(request, { + onSuccess: () => { + toast.success('Your password has been changed.'); + onClose(); + } + }); + } + }; + + return ( + <> + handleModalClose(false), + buttonName: 'Close' + }} + > + {modal.txt} + +
    + {!changePassword.isPasswordCheck && ( +
    + setChangePassword((prevState) => ({ ...prevState, currentPassword: e.target.value }))} + /> + +
    + )} + {changePassword.isPasswordCheck && ( + <> + setChangePassword((prevState) => ({ ...prevState, newPassword: e.target.value }))} + /> +
    + + setChangePassword((prevState) => ({ ...prevState, confirmPassword: e.target.value })) + } + /> + +
    + + )} +
    + + ); + }; + + if (infoLoading && authCodeLoading) { + return <>; + } + + if (infoError || authCodeError) { + return 데이터 로딩에 실패했습니다. 다시 시도해 주세요.; + } + + return ( + <> +
    + My Info +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Administrator Name{myInfo.name}
    Email{myInfo.email}
    Password{toggleChangePassword ? : }
    Phone Number{myInfo.phone}
    Permission{authCodeLoading ? '' : authCodeList.find((item) => item.code === myInfo.auth)?.codeName}
    Group{myInfo.groupName}
    +
    +
    + +
    + + ); +}; + +export default AdminInfo; diff --git a/src/pages/authentication/IntegrationProcess.tsx b/src/pages/authentication/IntegrationProcess.tsx new file mode 100644 index 0000000..98f4cf1 --- /dev/null +++ b/src/pages/authentication/IntegrationProcess.tsx @@ -0,0 +1,113 @@ +import React, { useState } from 'react'; +import { FaUserCircle, FaLock } from 'react-icons/fa'; +import { useNavigate } from 'react-router-dom'; +import { useDispatch } from 'react-redux'; + +import { integrationSuccess } from '@redux/auth'; +import { aesEncrypt } from '@utils/cryption'; +import { useCheckIdMutation } from '@api/authAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; + +const FaUserCircleIcon = FaUserCircle as unknown as React.FC>; +const FaLockIcon = FaLock as unknown as React.FC>; + +const IntegrationProcess: React.FC = () => { + const [isModalOpen, setIsModalOpen] = useState(false); + const [modalTxt, setModalTxt] = useState(''); + const [modalBtn, setModalBtn] = useState({ + isCancelBtn: false, + closeTxt: 'Close' + }); + const [angkorId, setAngkorId] = useState(''); + + const { mutate: checkId } = useCheckIdMutation(); + const dispatch = useDispatch(); + + const navigate = useNavigate(); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + const request = { + angkorId: angkorId + }; + + checkId(request, { + onSuccess: () => { + setModalTxt( + `Your AngkorLife User ID is ${angkorId}. + Do you want to continue logging in?` + ); + setModalBtn({ isCancelBtn: true, closeTxt: 'Cancel' }); + setIsModalOpen(true); + }, + onError: (error) => { + if (error.response?.data.errorCode === 2000) { + setModalTxt( + `This AngkorLife User ID does not exist. + Set the userID in the AngkorLife app.` + ); + setIsModalOpen(true); + } else { + setModalTxt(error.response?.data.errorMessage as string); + setIsModalOpen(true); + } + } + }); + }; + + const handleCloseBtn = () => { + if (modalBtn.isCancelBtn === true) { + setModalBtn({ isCancelBtn: false, closeTxt: 'Close' }); + } + + setIsModalOpen(false); + }; + + const handleConfirmBtn = () => { + dispatch(integrationSuccess(aesEncrypt(angkorId))); + + navigate('/secondCert'); + }; + + return ( + <> + handleCloseBtn(), buttonName: modalBtn.closeTxt }} + {...(modalBtn.isCancelBtn ? { confirmBtn: { onClose: () => handleConfirmBtn(), buttonName: 'Confirm' } } : {})} + > + {modalTxt} + +
    + + AngkorLife ID is not linked. +
    + You need to link your AngkorLife ID to continue logging in. +
    +
    +
    + + + + setAngkorId(e.target.value)} + /> +
    + +
    +
    + + ); +}; + +export default IntegrationProcess; diff --git a/src/pages/authentication/SecondaryCertification.tsx b/src/pages/authentication/SecondaryCertification.tsx new file mode 100644 index 0000000..070fe60 --- /dev/null +++ b/src/pages/authentication/SecondaryCertification.tsx @@ -0,0 +1,158 @@ +import React, { useCallback, useEffect, useRef, useState } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { useNavigate } from 'react-router-dom'; + +import { RootState } from '@redux/index'; +import { loginAuthenticate } from '@redux/auth'; +import { aesDecrypt } from '@utils/cryption'; + +import Stopwatch from './components/Stopwatch'; +import { useAuthCheckMutation, useAuthCodeMutation } from '@api/authAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; + +const SecondaryCertification: React.FC = () => { + const [isModalOpen, setIsModalOpen] = useState(false); + const [modalTxt, setModalTxt] = useState(''); + const [authCodeInfo, setAuthCodeInfo] = useState({ authKey: '', authNumber: '', userId: '' }); + const [authCodeMap, setAuthCodeMap] = useState(new Array(6).fill('')); + + const authCodeMapRefs = useRef<(HTMLInputElement | null)[]>([]); + + const { mutate: authCode } = useAuthCodeMutation(); + const { mutate: authCheck } = useAuthCheckMutation(); + const angkorId = useSelector((state: RootState) => state.auth.userData?.angkorUserId as string); + const dispatch = useDispatch(); + + const navigate = useNavigate(); + + const handelReset = useCallback(() => { + const request = { + id: aesDecrypt(angkorId) + }; + + authCode(request, { + onSuccess: (data) => { + setAuthCodeInfo((prevState) => ({ + ...prevState, + authKey: data.tokenType + ' ' + data.authKey, + userId: data.userId + })); + } + }); + + setAuthCodeMap(new Array(6).fill('')); + }, [angkorId, authCode]); + + useEffect(() => { + handelReset(); + authCodeMapRefs.current[0]?.focus(); + }, [handelReset]); + + const submitAuthCheck = () => { + authCheck(authCodeInfo, { + onSuccess: (data) => { + dispatch(loginAuthenticate(data.accessToken)); + + navigate('/'); + } + }); + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + submitAuthCheck(); + }; + + useEffect(() => { + setAuthCodeInfo((prevState) => ({ + ...prevState, + authNumber: authCodeMap.join('') + })); + }, [authCodeMap]); + + const handleKeydown = (e: React.KeyboardEvent, index: number) => { + const key = e.key; + if (/^\d$/.test(key)) { + setAuthCodeMap((codeMap) => codeMap.map((num, i) => (i === index ? key : num))); + + authCodeMapRefs.current[index + 1]?.focus(); + } else if (['Backspace', 'Delete'].includes(key)) { + setAuthCodeMap((codeMap) => { + const updated = [...codeMap.slice(0, index), ...codeMap.slice(index + 1)]; + + updated.push(''); + + return updated; + }); + + if (authCodeMap[index + 1] === '' || index === 5) { + authCodeMapRefs.current[index - 1]?.focus(); + } + } else if (key === 'ArrowLeft') { + authCodeMapRefs.current[index - 1]?.focus(); + } else if (key === 'ArrowRight') { + if (!authCodeMap[index]) { + return; + } + authCodeMapRefs.current[index + 1]?.focus(); + } else if (key === 'Enter') { + e.preventDefault(); + + submitAuthCheck(); + } else { + e.preventDefault(); + } + }; + + const handleClick = (index: number) => { + if (authCodeMap[index] === '') { + const currentTarget: number = authCodeMap.findIndex((value) => value === ''); + + authCodeMapRefs.current[currentTarget]?.focus(); + } + }; + + return ( + <> + setIsModalOpen(false), buttonName: 'Close' }}> + {modalTxt} + +
    + + Check the authentication number on AngkorLife. + +
    +
    + {authCodeMap.map((input, index) => ( + handleKeydown(e, index)} + onClick={() => handleClick(index)} + ref={(item) => { + authCodeMapRefs.current[index] = item; + }} + /> + ))} +
    +
    + handelReset()} /> +
    + +
    +
    + + ); +}; + +export default SecondaryCertification; diff --git a/src/pages/authentication/SignIn.tsx b/src/pages/authentication/SignIn.tsx new file mode 100644 index 0000000..029be40 --- /dev/null +++ b/src/pages/authentication/SignIn.tsx @@ -0,0 +1,134 @@ +import React, { useEffect, useState } from 'react'; +import { FaUserCircle, FaLock } from 'react-icons/fa'; +import { useNavigate } from 'react-router-dom'; +import { useDispatch } from 'react-redux'; + +import '@styles/style.scss'; +import { sha256Encrypt, aesDecrypt } from '@utils/cryption'; +import { loginSuccess } from '@redux/auth'; +import { useLoginMutation } from '@api/authAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; + +const FaUserCircleIcon = FaUserCircle as unknown as React.FC>; +const FaLockIcon = FaLock as unknown as React.FC>; + +const SignIn: React.FC = () => { + const [isModalOpen, setIsModalOpen] = useState(false); + const [modalTxt, setModalTxt] = useState(''); + const [email, setEmail] = useState(''); + const [rememberEmail, setRememberEmail] = useState(false); + + const { mutate: login } = useLoginMutation(); + const dispatch = useDispatch(); + + const navigate = useNavigate(); + + useEffect(() => { + const emailInfo = window.localStorage.getItem('EmailSave'); + + if (emailInfo) { + setRememberEmail(true); + setEmail(emailInfo); + } + }, []); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + const formData = new FormData(e.currentTarget); + const request = { + id: formData.get('email') as string, + password: sha256Encrypt(formData.get('password') as string) + }; + + login(request, { + onSuccess: (data) => { + if (data) { + // redux state update + dispatch(loginSuccess(data)); + + // Remeber Email Check + if (rememberEmail) { + window.localStorage.setItem('EmailSave', email); + } else { + window.localStorage.removeItem('EmailSave'); + } + + // Account Integration Check + if (aesDecrypt(data.angkorUserId).length === 0) { + navigate('/integration'); + } else { + navigate('/secondCert'); + } + } else { + setModalTxt('An unknown error has occurred. Please retry again.'); + setIsModalOpen(true); + } + } + }); + }; + + const handleRememberEmailChange = () => { + setRememberEmail(!rememberEmail); + }; + + return ( + <> + setIsModalOpen(false), buttonName: 'Close' }}> + {modalTxt} + +
    +
    +
    + + + + { + setEmail(e.target.value); + }} + /> +
    +
    + + + + +
    +
    +
    + + +
    +
    + +
    +
    + + ); +}; + +export default SignIn; diff --git a/src/pages/authentication/components/Stopwatch.tsx b/src/pages/authentication/components/Stopwatch.tsx new file mode 100644 index 0000000..7d1f4f6 --- /dev/null +++ b/src/pages/authentication/components/Stopwatch.tsx @@ -0,0 +1,54 @@ +import { useEffect, useState } from 'react'; + +interface StopwatchProps { + initialTime: number; + onReset: () => void; +} + +const Stopwatch = ({ initialTime, onReset }: StopwatchProps) => { + const [timeLeft, setTimeLeft] = useState(initialTime); + + useEffect(() => { + // 타이머가 0이 되면 카운트 정지 + if (timeLeft === 0) { + return; + } + + // 매 초마다 timeLeft 1 씩 감소 + const intervalId = setInterval(() => { + setTimeLeft((prevTimeLeft) => prevTimeLeft - 1); + }, 1000); + + // 컴포넌트가 언마운트 되거나 timeLeft 가 변경될때 마다 인터벌을 정리합니다. + return () => clearInterval(intervalId); + }, [timeLeft]); + + // 타이머 리셋 + const resetTimer = () => { + setTimeLeft(initialTime); + onReset(); + }; + + // 시간 표기 + const formatTimeLeft = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + + return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; + }; + + return ( + <> +

    {formatTimeLeft()}

    + + Send code again + + + ); +}; + +export default Stopwatch; diff --git a/src/pages/emoticons/givingEmoticons/GivingEmoticons.tsx b/src/pages/emoticons/givingEmoticons/GivingEmoticons.tsx new file mode 100644 index 0000000..e5e2b35 --- /dev/null +++ b/src/pages/emoticons/givingEmoticons/GivingEmoticons.tsx @@ -0,0 +1,42 @@ +import { useState } from 'react'; + +import GivingEmoticonsList from './components/GivingEmoticonList'; +import EmoticonOwnerList from './components/EmoticonOwnerList'; + +type ComponentType = 'List' | 'Details'; + +export interface GivingEmoticonState { + guid: number; + emoticonName: string; +} + +const GivingEmoticons = () => { + const [currentComponent, setCurrentComponent] = useState('List'); + const [emoticonState, setEmoticonState] = useState({ guid: 0, emoticonName: '' }); + + const handleDetailClick = () => { + setCurrentComponent('Details'); + }; + + const handleBackClick = () => { + setCurrentComponent('List'); + }; + + return ( +
    +

    Giving Emoticons

    + {currentComponent === 'List' && ( +
    + +
    + )} + {currentComponent === 'Details' && ( +
    + +
    + )} +
    + ); +}; + +export default GivingEmoticons; diff --git a/src/pages/emoticons/givingEmoticons/components/EmoticonOwnerList.tsx b/src/pages/emoticons/givingEmoticons/components/EmoticonOwnerList.tsx new file mode 100644 index 0000000..dbdef4a --- /dev/null +++ b/src/pages/emoticons/givingEmoticons/components/EmoticonOwnerList.tsx @@ -0,0 +1,293 @@ +import React, { useRef, useState } from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import { format, parse } from 'date-fns'; +import classNames from 'classnames/bind'; + +import { handleSearchSubmit } from '@utils/searchBoxUtils'; + +import { GivingEmoticonState } from '../GivingEmoticons'; +import OwnerDetailModal from './OwnerDetailModal'; +import NonOwnerAddModal from './NonOwnerAddModal'; + +import styles from '../../manageEmoticons/ManageEmoticons.module.scss'; +import PrevIcon from '@icons/chevron-left.svg'; +import DropDownIcon from '@icons/ic-chevron-down.svg'; +import PlusIcon from '@images/icons/ic-plus.svg'; +import { EmoticonOwnerListRequest, useEmoticonOwnerListQuery } from '@api/emoticonAPI'; +import { setNewSortType } from '@utils/sortUtils'; +import Modal from '@components/ui/modal/Modal'; +import SearchBar from '@components/ui/searchBar/SearchBar'; +import Button from '@components/ui/button/Button'; +import SortButton from '@components/ui/button/SortButton'; +import Pagination from '@components/ui/pagination/Pagination'; + +const cn = classNames.bind(styles); + +interface EmoticonModalInfo { + isOpen: boolean; + modalName: string | null; +} + +export interface OwnerDetailData { + angkorId: string | undefined; + userId: string | undefined; + emoticonCode: number; + emoticonName: string; + saveDate: string | undefined; + expiredDate: string | undefined; +} + +interface Props { + onBackClick: (e: React.MouseEvent) => void; + emoticonState: GivingEmoticonState; +} + +const EmoticonOwnerList = ({ onBackClick, emoticonState }: Props) => { + const [modalInfo, setModalInfo] = useState({ + isOpen: false, + modalName: null + }); + const [emoticonOwnerListRequest, setEmoticonOwnerListRequest] = useState({ + page: 1, + size: 10, + sort: [], + searchKeyword: '', + status: '' + }); + const [ownerDetailData, setOwnerDetailData] = useState({ + angkorId: '', + userId: '', + emoticonCode: emoticonState.guid, + emoticonName: emoticonState.emoticonName, + saveDate: '', + expiredDate: '' + }); + const [isDropBoxOpen, setIsDropBoxOpen] = useState(false); + + // Ref + const searchRef = useRef(null); + + // API + const { data: emoticonOwnerListData = null } = useEmoticonOwnerListQuery( + emoticonState.guid, + emoticonOwnerListRequest + ); + + // Func + // Date 포맷팅 함수 + const formatDate = (dateNum: number) => { + const dateStr = dateNum.toString(); + const parsedDate = parse(dateStr, 'yyyyMMdd', new Date()); + + if (dateStr.startsWith('9999')) return 'indefinitely'; + + return format(parsedDate, 'yyyy-MM-dd'); + }; + + // Sort 정렬 변경 핸들러 + const handleSortChange = (column: 'saveDt') => { + setEmoticonOwnerListRequest((prev) => ({ + ...prev, + sort: setNewSortType(column, prev.sort) + })); + }; + + const handleDropBoxClick = () => { + setIsDropBoxOpen(!isDropBoxOpen); + }; + + // Status 종류 변경 핸들러 + const handleStatusChange = (status: string) => { + setEmoticonOwnerListRequest((prev) => ({ + ...prev, + status: status + })); + setIsDropBoxOpen(false); + }; + + // Detail Modal Open 핸들러 + const handleDetailModalOpen = (e: React.MouseEvent) => { + const modalType = e.currentTarget.textContent; + const selectedUserNo = Number(e.currentTarget.value); + const userData = emoticonOwnerListData?.content.find((user) => user.userNo === selectedUserNo); + + setModalInfo(() => ({ + isOpen: true, + modalName: modalType + })); + + setOwnerDetailData(() => ({ + angkorId: userData?.angkorId, + userId: userData?.userId, + emoticonCode: emoticonState.guid, + emoticonName: emoticonState.emoticonName, + saveDate: userData?.saveDt, + expiredDate: formatDate(userData?.expiredDate as number) + })); + }; + + // Add Modal Open 핸들러 + const handleAddModalOpen = (e: React.MouseEvent) => { + const modalType = e.currentTarget.textContent; + + setModalInfo(() => ({ + isOpen: true, + modalName: modalType + })); + }; + + // Modal close 핸들러 + const handleModalClose = () => { + setModalInfo(() => ({ + isOpen: false, + modalName: null + })); + }; + + return ( + <> + + {modalInfo.modalName === 'Add' && ( + + )} + {modalInfo.modalName === 'Details' && ( + + )} + +
    + + + + + +
    + + {`Gift Emoticon (${emoticonState.emoticonName})`}{' '} + > Emoticon Owners + List +
    +
    + +
    + handleSearchSubmit(event, searchRef, setEmoticonOwnerListRequest)} + onClick={(event) => handleSearchSubmit(event, searchRef, setEmoticonOwnerListRequest)} + placeholderText="Angkor Id, User Id" + /> + +
    +
    + +
    + + + + + + + + + + + + + {emoticonOwnerListData?.content.map((item, idx: number) => ( + + + + + + + + + + ))} + +
    NoAngkor IdUser IdExpired Date + handleSortChange('saveDt')} + dataList={emoticonOwnerListData} + sortRequest={emoticonOwnerListRequest} + /> + + + {isDropBoxOpen && ( +
      +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    + )} +
    {item.userNo}{item.angkorId}{item.userId} {formatDate(item.expiredDate)}{item.saveDt} + + {['Using', 'Hiding', 'Deleted'].find((constants) => constants.includes(item.status))} + + +
    +
    + + setEmoticonOwnerListRequest((prevState) => ({ ...prevState, page: pageNumber })) + } + /> +
    +
    +
    +
    + +
    +
    + + ); +}; + +export default EmoticonOwnerList; diff --git a/src/pages/emoticons/givingEmoticons/components/GivingEmoticonList.tsx b/src/pages/emoticons/givingEmoticons/components/GivingEmoticonList.tsx new file mode 100644 index 0000000..040bed6 --- /dev/null +++ b/src/pages/emoticons/givingEmoticons/components/GivingEmoticonList.tsx @@ -0,0 +1,57 @@ +import React, { useState } from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import classNames from 'classnames/bind'; + +import { GivingEmoticonState } from '../GivingEmoticons'; +import EmoticonTable from '../../manageEmoticons/components/EmoticonTable'; + +import styles from '../../manageEmoticons/ManageEmoticons.module.scss'; +import { EmoticonListRequest, useEmoticonListQuery } from '@api/emoticonAPI'; +import { SEARCH_FILTER_OPTIONS_EMOTICONS } from '@constants/constants'; + +const cn = classNames.bind(styles); + +interface Props { + onDetailClick: (e: React.MouseEvent) => void; + setEmoticonState: React.Dispatch>; +} + +const GivingEmoticonsList = ({ onDetailClick, setEmoticonState }: Props) => { + const [emoticonListRequest, setEmoticonListRequest] = useState({ + page: 1, + size: 9, + sort: [], + emotiType: SEARCH_FILTER_OPTIONS_EMOTICONS[3].value + }); + + // API + const { data: emoticonListData } = useEmoticonListQuery(emoticonListRequest); + + return ( + <> +
    + + + + + Gift Emoticon List + + + + + + + +
    + + ); +}; + +export default GivingEmoticonsList; diff --git a/src/pages/emoticons/givingEmoticons/components/NonOwnerAddModal.module.scss b/src/pages/emoticons/givingEmoticons/components/NonOwnerAddModal.module.scss new file mode 100644 index 0000000..cda74d4 --- /dev/null +++ b/src/pages/emoticons/givingEmoticons/components/NonOwnerAddModal.module.scss @@ -0,0 +1,276 @@ +.giving_emoticon_table { + padding-bottom: 40px; + font-family: pretendard; + + h5 { + padding-bottom: 20px; + font-size: 20px; + font-weight: 700; + border-bottom: 1px solid #e6e9f4; + margin: 0; + } + + table { + tr { + color: #131523; + font-size: 14px; + border-bottom: 1px solid #e6e9f4; + display: flex; + align-items: center; + + th { + width: 140px; + font-weight: 600; + padding: 1.0625rem 0.5rem; + display: block; + } + + td { + height: 100%; + display: flex; + align-items: center; + gap: 15px; + border-left: 1px solid #e6e9f4; + padding: 15px 0.5rem; + width: 540px; + } + + &:nth-child(1) { + td { + height: 70px; /* 첫 번째 td의 높이 */ + } + } + + &:nth-child(2) { + td { + height: 150px; /* 두 번째 td의 높이 */ + overflow-y: scroll; + background-color: #dbdbdb24; + } + } + } + .date_picker { + display: flex; + width: 140px; + align-items: center; + color: #131523; + background-color: #f5f6fa; + outline: 0; + box-shadow: none; + border: 1px solid #c2cad4; + border-radius: 4px; + font-family: 'Poppins'; + letter-spacing: -0.65px; + padding: 8px 34px 7px 9px; + gap: 3px; + font-weight: 500; + .sendDate { + background: transparent; + border: 0; + outline: none; + cursor: pointer; + } + } + + .selected_user_container { + display: flex; + flex-direction: column; + align-items: center; + width: 90%; + height: 100%; + margin: 0 auto; + } + + .selected_user_box { + margin: 8px auto; + padding: 15px 20px; + height: 45px; + width: 90%; + display: flex; + align-items: center; + justify-content: space-between; + background: #ffffff; + border-radius: 20px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 더 부드러운 그림자 효과 */ + cursor: pointer; + transition: + background-color 0.2s ease-in-out, + box-shadow 0.2s ease-in-out; /* 전환 효과 추가 */ + + &:hover { + background-color: #f1f1f1; /* 호버 시 배경색 변화 */ + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); /* 호버 시 그림자 강화 */ + + button { + opacity: 1; + } + } + + span { + padding: 0 10px; + font-size: 16px; /* 폰트 크기 조정 */ + color: #333; /* 텍스트 색상 변경 */ + } + + button { + border: 0; + background: none; + color: #d9534f; /* 더 부드러운 색상 */ + margin-left: 15px; + font-size: 16px; /* 폰트 크기 조정 */ + font-weight: 600; + opacity: 0; + transition: + opacity 0.2s ease-in-out, + transform 0.2s ease-in-out; /* 전환 효과 조정 */ + + &:focus, + &:active { + outline: none; + } + } + } + } +} + +.userList_table { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + font-size: 12px; + color: #131523; + font-family: pretendard; + + .userList_table_header { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #e6e9f4; + padding-bottom: 20px; + + h5 { + font-size: 20px; + font-weight: 700; + margin: 0; + } + } + + table { + width: 100%; + display: flex; + flex-direction: column; + height: 100%; + + thead { + display: flex; + justify-content: center; + align-items: center; + border-bottom: 1px solid #e6e9f4; + tr { + width: 100%; + height: 50px; + display: flex; + justify-content: center; + align-items: center; + th { + text-align: center; + font-weight: 500; + padding: 1rem 0; + + .form-check { + padding-left: 0; + input[type='checkbox'] { + display: none; + } + input[type='checkbox'] + label { + height: 23px; + cursor: pointer; + padding-left: 23px; + background-repeat: no-repeat; + background-image: url('~@icons/btn-check-box-default.svg'); + background-position: left; + } + input[type='checkbox']:checked + label { + background-image: url('~@icons/btn-check-box-active.svg'); + } + } + + button { + background: none; + border: none; + &:focus { + outline: none; + } + } + &.status { + position: relative; + .status_img { + img { + width: 20px; + height: 20px; + } + } + ul { + &.status_dropdown_menu { + display: none; + position: absolute; + inset: 0px auto auto 0px; + margin: 0px; + transform: translate(0px, 40px); + box-shadow: 0 1px 4px 0 rgba(21, 34, 50, 0.08); + background: #fff; + border-radius: 0.25rem; + z-index: 900; + &.show { + display: block; + } + } + } + } + } + } + } + + tbody { + tr { + display: flex; + border-bottom: 1px solid #e6e9f4; + width: 100%; + td { + display: flex; + align-items: center; + vertical-align: middle; + justify-content: center; + padding: 1rem 3px; + text-align: center; + font-size: 14px; + .form-check { + padding-left: 0; + input[type='checkbox'] { + display: none; + } + input[type='checkbox'] + label { + height: 23px; + cursor: pointer; + padding-left: 23px; + background-repeat: no-repeat; + background-image: url('~@icons/btn-check-box-default.svg'); + background-position: left; + } + input[type='checkbox']:checked + label { + background-image: url('~@icons/btn-check-box-active.svg'); + } + } + } + } + } + } +} + +// select style +.select_custom { + width: 100%; +} diff --git a/src/pages/emoticons/givingEmoticons/components/NonOwnerAddModal.tsx b/src/pages/emoticons/givingEmoticons/components/NonOwnerAddModal.tsx new file mode 100644 index 0000000..5b50f02 --- /dev/null +++ b/src/pages/emoticons/givingEmoticons/components/NonOwnerAddModal.tsx @@ -0,0 +1,260 @@ +import React, { useRef, useState } from 'react'; +import classNames from 'classnames/bind'; +import { useQueryClient } from '@tanstack/react-query'; +import DatePicker from 'react-datepicker'; +import Select, { SingleValue } from 'react-select'; +import { addMonths, format } from 'date-fns'; +import { toast } from 'react-toastify'; + +import { handleSearchSubmit } from '@utils/searchBoxUtils'; + +import styles from './NonOwnerAddModal.module.scss'; +import CalendarIcon from '@icons/ic-calendar.svg'; +import { + EmoticonNonOwnerListRequest, + useEmoticonNonOwnerListQuery, + usePostAdminGiftEmoticonMutation +} from '@api/emoticonAPI'; +import { EXPIRE_DATE_OPTIONS_EMOTICONS, SearchFilterOption } from '@constants/constants'; +import SearchBar from '@components/ui/searchBar/SearchBar'; +import Pagination from '@components/ui/pagination/Pagination'; +import Button from '@components/ui/button/Button'; + +const cn = classNames.bind(styles); + +interface Props { + emoticonGuid: number; + onCloseModal: () => void; +} + +const NonOwnerAddModal = ({ emoticonGuid, onCloseModal }: Props) => { + const [emoticonNonOwnerListRequest, setEmoticonNonOwnerListRequest] = useState({ + page: 1, + size: 10, + sort: [], + searchKeyword: '' + }); + const [changedExpiredDate, setChangedExpireDate] = useState(new Date()); + const [checkedItems, setCheckedItems] = useState([]); + + // Ref + const searchRef = useRef(null); + + // API + const queryClient = useQueryClient(); + const { data: NonOwnerListData } = useEmoticonNonOwnerListQuery(emoticonGuid, emoticonNonOwnerListRequest); + const { mutate: postAdminGiftEmoticon, isPending: isPostingAdminGiftedEmoticon } = usePostAdminGiftEmoticonMutation(); + + // Func + // Datepicker date 변경 핸들러 + const handleExpireDateChange = (date: Date) => { + setChangedExpireDate(date); + }; + + // Datepicker 옆의 날짜 select option 핸들러 + const handleExpireOptionChange = (option: SingleValue) => { + const now = new Date(); + const newDate = Number(option?.value); + + switch (option?.label) { + case EXPIRE_DATE_OPTIONS_EMOTICONS[0].label: + return setChangedExpireDate(now); + case EXPIRE_DATE_OPTIONS_EMOTICONS[1].label: + return setChangedExpireDate(addMonths(now, newDate)); + case EXPIRE_DATE_OPTIONS_EMOTICONS[2].label: + return setChangedExpireDate(addMonths(now, newDate)); + case EXPIRE_DATE_OPTIONS_EMOTICONS[3].label: + return setChangedExpireDate(addMonths(now, newDate)); + case EXPIRE_DATE_OPTIONS_EMOTICONS[4].label: + return setChangedExpireDate(new Date(9999, 0, 1)); + default: + return setChangedExpireDate(now); + } + }; + + // user 개개인 체크 핸들러 + const handleUserSelect = (checked: boolean, userAngkorId: string) => { + if (checked) { + setCheckedItems((prev) => [...prev, userAngkorId]); + } else { + setCheckedItems((prev) => prev.filter((item) => item !== userAngkorId)); + } + }; + + // user 전체 체크 핸들러 + const handleAllUsersSelect = (checked: boolean) => { + const allUserAngkorIdArr = NonOwnerListData?.content.map((user) => user.angkorId as string); + + if (checked) { + setCheckedItems((prev) => { + const newSet = new Set([...prev, ...(allUserAngkorIdArr as string[])]); + return Array.from(newSet); + }); + } else { + const newUserArr = [...checkedItems].filter((user) => !allUserAngkorIdArr?.includes(user)); + + setCheckedItems(newUserArr); + } + }; + + // 선택된 user 체크 해제 핸들러 + const handleSelectedUserDelete = (userId: string) => { + const newSelectedUsers = checkedItems.filter((user) => user !== userId); + + setCheckedItems(newSelectedUsers); + }; + + // user에게 이모티콘 선물하기, Process Btn 핸들러 + const handleProcess = () => { + const request = { + guid: emoticonGuid, + angkorId: checkedItems, + expiredDate: Number(format(changedExpiredDate, 'yyyyMMdd')), + status: 'U' + }; + + postAdminGiftEmoticon(request, { + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['emoticonOwnerList'] }); + queryClient.invalidateQueries({ queryKey: ['emoticonNonOwnerList'] }); + onCloseModal(); + toast.success('Giving emoticons as a gift was successful.'); + } + }); + }; + + return ( + <> +
    +
    Giving emoticons as a Gift
    + + + + + + + + + + + +
    Expired Date +
    +
    + CalendarIcon +
    + +
    +
    Selected User +
    + {checkedItems.length > 0 + ? checkedItems.map((user) => ( +
    handleSelectedUserDelete(user)} + > + {user} + +
    + )) + : null} +
    +
    +
    +
    +
    +
    User Search
    + handleSearchSubmit(event, searchRef, setEmoticonNonOwnerListRequest)} + onClick={(event) => handleSearchSubmit(event, searchRef, setEmoticonNonOwnerListRequest)} + placeholderText="Angkor Id, User Id" + /> +
    + + + + + + + + + + + {NonOwnerListData?.content.map((user, idx) => ( + + + + + + + ))} + +
    +
    + ) => handleAllUsersSelect(e.target.checked)} + checked={NonOwnerListData?.content + .map((item) => item.angkorId) + .every((angkorId) => checkedItems.includes(angkorId))} + /> + +
    +
    NoUser IdAngkor Id
    +
    + ) => + handleUserSelect(e.target.checked, user.angkorId) + } + checked={checkedItems.includes(user.angkorId)} + /> + + +
    +
    {user.userNo}{user.userId}{user.angkorId}
    +
    + + setEmoticonNonOwnerListRequest((prevState) => ({ ...prevState, page: pageNumber })) + } + /> +
    +
    +
    + + +
    + + ); +}; + +export default NonOwnerAddModal; diff --git a/src/pages/emoticons/givingEmoticons/components/OwnerDetailModal.module.scss b/src/pages/emoticons/givingEmoticons/components/OwnerDetailModal.module.scss new file mode 100644 index 0000000..2a90bb4 --- /dev/null +++ b/src/pages/emoticons/givingEmoticons/components/OwnerDetailModal.module.scss @@ -0,0 +1,48 @@ +.owner_detail_modal { + padding: 0 20px; + h5 { + padding-bottom: 20px; + font-size: 20px; + font-weight: 700; + border-bottom: 1px solid #e6e9f4; + margin: 0; + } + + tbody { + tr { + color: #131523; + font-size: 14px; + border-bottom: 1px solid #e6e9f4; + display: flex; + align-items: center; + th { + height: 50px; + font-weight: 600; + padding: 1.0625rem 0.5rem; + width: 140px; + display: block; + } + td { + border-left: 1px solid #e6e9f4; + padding: 1.25rem 1rem; + width: 493px; + display: block; + } + } + &:last-child { + td { + display: flex; + gap: 10px; + align-items: center; + } + } + } + + .footer { + gap: 10px; + display: flex; + justify-content: center; + width: 100%; + margin-top: 30px; + } +} diff --git a/src/pages/emoticons/givingEmoticons/components/OwnerDetailModal.tsx b/src/pages/emoticons/givingEmoticons/components/OwnerDetailModal.tsx new file mode 100644 index 0000000..0800895 --- /dev/null +++ b/src/pages/emoticons/givingEmoticons/components/OwnerDetailModal.tsx @@ -0,0 +1,198 @@ +import { useState } from 'react'; +import classNames from 'classnames/bind'; +import DatePicker from 'react-datepicker'; +import { format, parseISO } from 'date-fns'; +import { useQueryClient } from '@tanstack/react-query'; +import { toast } from 'react-toastify'; + +import { OwnerDetailData } from './EmoticonOwnerList'; + +import 'react-datepicker/dist/react-datepicker.css'; +import styles from './OwnerDetailModal.module.scss'; +import CalendarIcon from '@icons/ic-calendar.svg'; +import { useDeleteEmoticonOwnershipMutation, useUpdateExpiredDateMutation } from '@api/emoticonAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Button from '@components/ui/button/Button'; + +const cn = classNames.bind(styles); + +interface ButtonInfo { + onClose: () => void; // 함수 타입 정의 + buttonName: string; // 문자열 타입 정의 +} + +interface AlertModalInfo { + isOpen: boolean; + txt: string; + closeBtn: ButtonInfo; + confirmBtn?: ButtonInfo; +} + +interface Props { + ownerDetailData: OwnerDetailData; + onCloseModal: () => void; +} + +const OwnerDetailModal = ({ ownerDetailData, onCloseModal }: Props) => { + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + closeBtn: { onClose: onCloseModal, buttonName: 'Cancel' }, + confirmBtn: { onClose: onCloseModal, buttonName: 'Confirm' } + }); + const [changedExpiredDate, setChangedExpireDate] = useState(ownerDetailData.expiredDate as string); + + // API + const queryClient = useQueryClient(); + const { mutate: patchExpireDate } = useUpdateExpiredDateMutation(); + const { mutate: deleteOwnership } = useDeleteEmoticonOwnershipMutation(); + + // Func + // Datepicker의 날짜 변경 핸들러 + const handleExpireDateChange = (date: Date) => { + const newDate = format(date, 'yyyy-MM-dd'); + + setChangedExpireDate(newDate); + }; + + const handleChangeBtnClick = () => { + setAlertModal({ + isOpen: true, + txt: "Are you sure you want to extend the validity of this user's emoji?", + closeBtn: { + onClose: handleAlertClose, + buttonName: 'Cancel' + }, + confirmBtn: { + onClose: handleExpireDateConfirm, + buttonName: 'Confirm' + } + }); + }; + + // Change 버튼 활성화 이후, Alert Modal confirm 버튼 핸들러 + const handleExpireDateConfirm = () => { + const request = { + guid: ownerDetailData.emoticonCode, + angkorId: ownerDetailData.angkorId as string, + expiredDate: Number(format(parseISO(changedExpiredDate), 'yyyyMMdd')) + }; + + patchExpireDate(request, { + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['emoticonOwnerList'] }); + setAlertModal((prev) => ({ ...prev, txt: '', isOpen: false })); + onCloseModal(); + toast.success('Expiration date updated.'); + } + }); + }; + + const handleDeleteBtnClick = () => { + setAlertModal({ + isOpen: true, + txt: "Are you sure you want to delete that user's emoji?", + closeBtn: { + onClose: handleAlertClose, + buttonName: 'Cancel' + }, + confirmBtn: { + onClose: handleDeleteConfirm, + buttonName: 'Confirm' + } + }); + }; + + // Delete 버튼 활성화 이후, Alert Modal close 버튼 핸들러 + const handleAlertClose = () => { + setAlertModal((prev) => ({ ...prev, txt: '', isOpen: false })); + }; + + // Delete 버튼 활성화 이후, Alert Modal confirm 버튼 핸들러 + const handleDeleteConfirm = () => { + const request = { + guid: ownerDetailData.emoticonCode, + angkorId: ownerDetailData.angkorId as string + }; + + deleteOwnership(request, { + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['emoticonOwnerList'] }); + setAlertModal((prev) => ({ ...prev, txt: '', isOpen: false })); + onCloseModal(); + toast.success('Emoticon owner removed'); + } + }); + }; + + return ( +
    + + {alertModal.txt} + +
    Emoticon Owners Details
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Angkor Id{ownerDetailData.angkorId}
    User Id{ownerDetailData.userId}
    Emoticon Code{ownerDetailData.emoticonCode}
    Emoticon Name{ownerDetailData.emoticonName}
    Save Date{ownerDetailData.saveDate}
    Expired Date +
    +
    + ic_chevron_down +
    + +
    + +
    + +
    + + +
    +
    + ); +}; + +export default OwnerDetailModal; diff --git a/src/pages/emoticons/manageEmoticons/ManageEmoticons.module.scss b/src/pages/emoticons/manageEmoticons/ManageEmoticons.module.scss new file mode 100644 index 0000000..7d9abad --- /dev/null +++ b/src/pages/emoticons/manageEmoticons/ManageEmoticons.module.scss @@ -0,0 +1,175 @@ +.manage_emoticons { + .card_header { + display: flex; + justify-content: space-between; + align-items: center; + + .header_box { + display: flex; + gap: 1rem; + } + } +} + +.emoticon_list_table { + width: 100%; + border-top: 1px solid #e6e9f4; + font-size: 12px; + color: #131523; + font-family: pretendard; + table { + width: 100%; + display: flex; + flex-direction: column; + height: 100%; + thead { + border-bottom: 1px solid #e6e9f4; + tr { + width: 100%; + display: flex; + align-items: center; + height: 50px; + th { + display: flex; + justify-content: center; + font-weight: 500; + &.status { + position: relative; + + .status_img, + .open { + img { + transition: transform 0.2s ease-in-out; + width: 20px; + height: 20px; + } + } + .open img { + transform: rotate(180deg); + } + + ul { + &.status_dropdown_menu { + position: absolute; + top: 25px; + left: 50%; + transform: translateX(-50%); + margin: 0px; + box-shadow: 0 1px 4px 0 rgba(21, 34, 50, 0.1); + background: #fff; + border-radius: 0.25rem; + z-index: 10; + + li { + display: block; + width: 100%; + padding: 0.25rem 1rem; + clear: both; + font-weight: 400; + color: #131523; + text-align: initial; + white-space: nowrap; + background-color: transparent; + border: 0; + + button { + color: #131523; + border: none; + background-color: #fff; + + i { + width: 10px; + height: 10px; + border-radius: 50%; + display: inline-block; + vertical-align: middle; + margin-right: 10px; + transform: translateY(-1px); + background: #fec702; + + &.all { + background: linear-gradient(126deg, red, orange, yellow, green, blue, navy, purple); + opacity: 0.7; + } + + &.normal, + &.my_status_1 { + background: #21d59b; + } + + &.block, + &.my_status_0 { + background: #f0142f; + } + &.report, + &.my_status_2 { + background: #fec702; + } + + &.withdraw { + background: #c2cad4; + } + } + } + } + } + } + } + } + .btn_sort { + display: flex; + justify-content: center; + align-items: center; + gap: 0.5rem; + background: none; + border: none; + i { + display: flex; + flex-direction: column; + } + } + } + } + + tbody { + overflow-y: scroll; + width: 100%; + &::-webkit-scrollbar { + width: 6px; + height: 6px; + background-color: transparent; + } + &::-webkit-scrollbar-track { + border-radius: 0; + background-color: transparent; + } + &::-webkit-scrollbar-thumb { + border-radius: 9px; + background-color: #a5a7ab; + } + tr { + width: 100%; + display: flex; + border-bottom: 1px solid #e6e9f4; + + td { + display: flex; + align-items: center; + justify-content: center; + padding: 15px 0.5rem; + + i { + width: 10px; + height: 10px; + border-radius: 50%; + display: inline-block; + vertical-align: middle; + margin-right: 10px; + transform: translateY(-1px); + background: #fec702; + } + } + } + } + } +} diff --git a/src/pages/emoticons/manageEmoticons/ManageEmoticons.tsx b/src/pages/emoticons/manageEmoticons/ManageEmoticons.tsx new file mode 100644 index 0000000..cee0199 --- /dev/null +++ b/src/pages/emoticons/manageEmoticons/ManageEmoticons.tsx @@ -0,0 +1,117 @@ +import React, { useState } from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import Select, { SingleValue } from 'react-select'; +import classNames from 'classnames/bind'; + +import EmoticonTable from './components/EmoticonTable'; +import EmoticonAddModal from './components/modal/EmoticonAddModal'; +import EmoticonDetailModal from './components/modal/EmoticonDetailModal'; + +import styles from './ManageEmoticons.module.scss'; +import PlusIcon from '@images/icons/ic-plus.svg'; +import { EmoticonListRequest, useEmoticonListQuery } from '@api/emoticonAPI'; +import { SEARCH_FILTER_OPTIONS_EMOTICONS, SearchFilterOption } from '@constants/constants'; +import Modal from '@components/ui/modal/Modal'; +import Button from '@components/ui/button/Button'; + +const cn = classNames.bind(styles); + +interface EmoticonModalInfo { + isOpen: boolean; + modalName: string | null; + emoticonGuid: number; +} + +const ManageEmoticons = () => { + const [modalInfo, setModalInfo] = useState({ + isOpen: false, + modalName: null, + emoticonGuid: 0 + }); + const [emoticonListRequest, setEmoticonListRequest] = useState({ + page: 1, + size: 9, + sort: [], + emotiType: SEARCH_FILTER_OPTIONS_EMOTICONS[1].value + }); + + // API + const { data: emoticonListData } = useEmoticonListQuery(emoticonListRequest); + console.log(emoticonListData); + // Func + // selectBox 옵션 이벤트 + const handleSelectChange = (selectedOption: SingleValue) => { + if (selectedOption) { + setEmoticonListRequest((prev) => ({ ...prev, emotiType: selectedOption.value, page: 1 })); + } + }; + + // modal open 이벤트 + const handleModalOpen = (e: React.MouseEvent) => { + const modalType = e.currentTarget.textContent; + const selectedEmoticonGuid = Number(e.currentTarget.value); + + setModalInfo(() => ({ + isOpen: true, + modalName: modalType, + emoticonGuid: selectedEmoticonGuid + })); + }; + + // modal close 이벤트 + const handleModalClose = () => { + setModalInfo(() => ({ + isOpen: false, + modalName: null, + emoticonGuid: 0 + })); + }; + + return ( + <> + + {modalInfo.modalName === 'Add' && } + {modalInfo.modalName === 'Edit' && ( + + )} + + +
    +

    Manage Emoticons

    + + + + + Emoticon List +
    + + + + + Emoticon Count + + + +
    +
    + + +
    +
    + + + + Status + + + + + + isDefault + + + + + + +
    +
    +
    Short cut
    + help +
    +
      +
    • + + + +

      Active

      +
    • +
    +
    +
    +
    +
    File Upload
    + + +
    +
      + {Children.toArray( + emoticonDetailFiles?.map((item, index) => { + return ( +
    • handleDragStart(e, index)} + onDragEnd={(e) => handleDragEnd(e, index)} + onDragOver={handelDragOver} + draggable + > +
      + + +

      {index + 1}

      +
      +
    • + ); + }) + )} +
    +
    +
    + + +
    + + + ); +}; + +export default EmoticonAddModal; diff --git a/src/pages/emoticons/manageEmoticons/components/modal/EmoticonDetailModal.module.scss b/src/pages/emoticons/manageEmoticons/components/modal/EmoticonDetailModal.module.scss new file mode 100644 index 0000000..8139a0f --- /dev/null +++ b/src/pages/emoticons/manageEmoticons/components/modal/EmoticonDetailModal.module.scss @@ -0,0 +1,165 @@ +//Emoticons modal +.emoticon_detail_modal { + .modal_title { + padding-bottom: 20px; + font-size: 20px; + font-weight: 700; + font-family: pretendard; + border-bottom: 1px solid #e6e9f4; + margin: 0; + } + + table { + tbody { + tr { + font-family: pretendard; + color: #131523; + font-size: 14px; + border-bottom: 1px solid #e6e9f4; + display: flex; + align-items: center; + th { + width: 240px; + height: 50px; + font-weight: 600; + padding: 1.0625rem 0.5rem; + display: block; + } + td { + border-left: 1px solid #e6e9f4; + padding: 15px 0.5rem; + width: 440px; + display: block; + .form_control { + display: block; + width: 100%; + padding: 0.5rem 0.75rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: #131523; + background-color: #f5f6fa; + background-clip: padding-box; + border: 0 solid #ced4da; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0; + } + } + } + } + } +} + +// Short cut +.short_cut_section { + padding-top: 60px; + .section_header { + padding-bottom: 20px; + font-size: 20px; + font-weight: 700; + font-family: pretendard; + border-bottom: 1px solid #e6e9f4; + } + + .section_upload { + display: flex; + flex-wrap: wrap; + -moz-column-gap: 15px; + column-gap: 15px; + row-gap: 10px; + padding-bottom: 1rem; + padding-top: 1rem; + input[type='file'] { + display: none; + } + label { + width: 100px; + height: 100px; + border-radius: 4px; + display: block; + cursor: pointer; + position: relative; + } + P { + font-family: theme-font-family; + text-align: center; + font-size: 20px; + color: #858c97; + } + } +} + +// File Upload +.file_upload_section { + .section_header { + border-bottom: 1px solid #e6e9f4; + padding-bottom: 20px; + font-size: 20px; + font-weight: 700; + font-family: pretendard; + margin: 0; + } + + .section_upload { + display: flex; + flex-wrap: wrap; + -moz-column-gap: 15px; + column-gap: 15px; + row-gap: 10px; + padding-top: 20px; + input[type='file'] { + display: none; + } + label { + width: 100px; + height: 100px; + border-radius: 4px; + display: block; + cursor: pointer; + position: relative; + } + P { + text-align: center; + font-size: 20px; + font-weight: 500; + color: #858c97; + } + } +} + +// footer +.modal_footer { + gap: 10px; + display: flex; + justify-content: end; + width: 100%; + margin-top: 30px; + font-family: pretendard; +} + +/* 그외 */ +.img_no_file { + width: 24px; + height: 24px; + display: block; + position: absolute; + transform: translate(-50%, -50%); + top: 50%; + left: 50%; +} + +.img_has_file { + width: 100px; + height: 100px; +} + +.lable_img_no_file { + width: 100px; + height: 100px; + display: block; + background: #f6f6f8; + border-radius: 4px; + border: 1px dashed #707070; +} diff --git a/src/pages/emoticons/manageEmoticons/components/modal/EmoticonDetailModal.tsx b/src/pages/emoticons/manageEmoticons/components/modal/EmoticonDetailModal.tsx new file mode 100644 index 0000000..c72592a --- /dev/null +++ b/src/pages/emoticons/manageEmoticons/components/modal/EmoticonDetailModal.tsx @@ -0,0 +1,488 @@ +import React, { Children, useEffect, useRef, useState } from 'react'; +import classNames from 'classnames/bind'; +import { useQueryClient } from '@tanstack/react-query'; +import { toast } from 'react-toastify'; + +import styles from './EmoticonDetailModal.module.scss'; +import PlusIcon from '@icons/ic-plus.svg'; +import { + EmoticonPatchJsonData, + FileDetail, + ReorderFile, + useEmoticonDetailsQuery, + useUpdateEmoticonFileMutation, + useUpdateEmoticonMutation +} from '@api/emoticonAPI'; +import Radio, { RadioOption } from '@components/ui/radio/Radio'; +import { validateImageFileProperties, ValidateImageResponse } from '@utils/fileUtils'; +import AlertModal from '@components/ui/modal/AlertModal'; +import { DEFAULT_TYPE } from '@constants/constants'; +import Button from '@components/ui/button/Button'; + +const cn = classNames.bind(styles); + +interface EmoticonState { + emoticonName: string; + status: number; + statusNm: string; + isDefault: string; +} + +interface Props { + emoticonGuid: number; + onCloseModal: () => void; +} + +const EmoticonDetailsDataModal = ({ emoticonGuid, onCloseModal }: Props) => { + const [modal, setModal] = useState({ + isOpen: false, + txt: '' + }); + const [emoticonState, setEmoticonState] = useState({ + emoticonName: '', + status: 0, + statusNm: '', + isDefault: '' + }); + const [shortCutImageUrl, setShortCutImageUrl] = useState(); // shortCut image URL + const [reorderFiles, setReorderFiles] = useState([]); + const [emoticonDetailFilesUrl, setEmoticonDetailFilesUrl] = useState([]); // files image URL + const [isDataChanged, setIsDataChanged] = useState(false); + const [isApiCalled, setIsApiCalled] = useState(false); + + // Ref + const dropIndexRef = useRef(null); + + // API + const queryClient = useQueryClient(); + const { data: emoticonDetailsData } = useEmoticonDetailsQuery(emoticonGuid); + const { mutate: updateEmoticon, isPending: isUpdatingEmoticon } = useUpdateEmoticonMutation(); + const { mutate: updateEmoticonFile } = useUpdateEmoticonFileMutation(); + + // emoticonDetailsData 변경에 따른 emoticonState 초기 값 셋팅. - useEffect + useEffect(() => { + if (emoticonDetailsData) { + setEmoticonState({ + emoticonName: emoticonDetailsData.emoticonName, + status: emoticonDetailsData.status, + statusNm: emoticonDetailsData.status === 0 ? 'OFF' : 'ON', + isDefault: emoticonDetailsData.isDefault + }); + setEmoticonDetailFilesUrl(emoticonDetailsData.detailFile.sort((a, b) => a.dispOrd - b.dispOrd)); + setShortCutImageUrl(emoticonDetailsData.shortCutFile[0].absFilePath); + } + }, [emoticonDetailsData]); + + // detail modal의 detail 이미지를 수정하여 사진 변경 API가 호출 된 상황에, confirm을 누르지 않고 모달 외부를 눌러 언마운트 시켰을 때, query 무효화를 시킨다. - useEffect + useEffect(() => { + document.addEventListener('mousedown', handleModalOutsideClick); + return () => { + document.removeEventListener('mousedown', handleModalOutsideClick); + }; + }, [isApiCalled]); + + // Func + // api requestBody에 쓰일 데이터 타입 체크하는 함수 + const convertToFormData = (requestBody: EmoticonPatchJsonData, formDataBody: File): FormData => { + const formData = new FormData(); + + formData.append( + 'request', + new Blob([JSON.stringify(requestBody)], { + type: 'application/json' + }) + ); + + formData.append('file', formDataBody); + + return formData; + }; + + const handleModalClose = () => { + setModal((prevState) => ({ ...prevState, isOpen: false })); + }; + + const handleModalOutsideClick = (event: MouseEvent) => { + if ((event.target as Element).className === 'black_bg') { + if (isApiCalled) { + queryClient.invalidateQueries({ queryKey: ['emoticonList'] }); + queryClient.invalidateQueries({ queryKey: ['emoticonDetails'] }); + } + onCloseModal(); + } + }; + + const handleEmoticonNameChange = (e: React.ChangeEvent) => { + setEmoticonState((prev) => ({ ...prev, emoticonName: e.target.value })); + setIsDataChanged(true); + }; + + const handleStatusChange = (option: RadioOption) => { + const status = Number(option.id); + setEmoticonState((prev) => ({ ...prev, status: status, statusNm: option.id === '0' ? 'OFF' : 'ON' })); + setIsDataChanged(true); + }; + + const handleIsDefaultChange = (option: RadioOption) => { + const selecteDefaultType = option.id; + setEmoticonState((prev) => ({ ...prev, isDefault: selecteDefaultType })); + setIsDataChanged(true); + }; + + const handleDragStart = (e: React.DragEvent, dropIndex: number) => { + dropIndexRef.current = dropIndex; + }; + + const handelDragOver = (e: React.DragEvent) => { + e.preventDefault(); + }; + + const handleDragEnd = (e: React.DragEvent, dragStartIndex: number) => { + e.preventDefault(); + const dropIndex = dropIndexRef.current; + + if (dropIndex === dragStartIndex || dropIndex === null || dropIndex === undefined) { + return; + } + + const updatedEmoticonDetailFiles: FileDetail[] = JSON.parse(JSON.stringify(emoticonDetailFilesUrl)); + + // emoticonDetailFilesUrl 배열을 drag, drop에 맞게 업데이트 + [updatedEmoticonDetailFiles[dragStartIndex], updatedEmoticonDetailFiles[dropIndex]] = [ + updatedEmoticonDetailFiles[dropIndex], + updatedEmoticonDetailFiles[dragStartIndex] + ]; + + const newReorderFiles = updatedEmoticonDetailFiles + .filter((file) => file.id !== undefined && file.dispOrd !== undefined) + .map((file, index) => ({ + id: file.id as number, + dispOrd: (index + 1) as number + })) + .sort((a, b) => a.id - b.id); + + setReorderFiles(newReorderFiles); + setEmoticonDetailFilesUrl(updatedEmoticonDetailFiles); + setIsDataChanged(true); + + dropIndexRef.current = null; // 참조 초기화 + }; + + const handleShortcutUpload = async (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + + // 0. image 유무, 조건 + if (!file) { + return; + } + + // 1. image 형식, 조건 + if (file.type !== 'image/png') { + alert('Select the correct file format. (PNG)'); + e.target.value = ''; // 파일 선택 취소 + return; + } + + // 2. image 용량 및 크기 검사 + const imageValidationResult: ValidateImageResponse = await validateImageFileProperties(file, 150 * 1024, 96, 96); + + if (!imageValidationResult.isValid) { + setModal({ + isOpen: true, + txt: imageValidationResult.message || 'Unknown error' + }); + e.target.value = ''; // 파일 선택 취소 + return; + } + + // 파일을 읽어 Base64 인코딩된 데이터 URL로 변환 + const reader = new FileReader(); + reader.readAsDataURL(file); + + reader.onloadend = () => { + const ShortCutImageUrl = reader.result as string; + + if (ShortCutImageUrl) { + const requestBody = { + guid: emoticonGuid, + dispOrd: 0 + }; + const typeCheckedFormData = convertToFormData(requestBody, file); + + setShortCutImageUrl(ShortCutImageUrl); + setIsDataChanged(true); + updateEmoticonFile(typeCheckedFormData, { + onSuccess: () => { + setIsApiCalled(true); + } + }); + } + }; + }; + + const handleDetailFileUpload = async (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + const selectedImageDispOrd = Number(e.target.dataset.displayOrder); // e.target으로 값에 접근하면 string으로 잡히기에, Number로 변환 + const selectedImageId = Number(e.target.dataset.id); + const selectedImageIndex = Number(e.target.dataset.index); + + let imageValidationResult: ValidateImageResponse = { isValid: false, message: '' }; + const validGifCount = emoticonDetailFilesUrl.length !== 12; + const validPngCount = emoticonDetailFilesUrl.length !== 12; + + // 0. image file 유무, 조건 + if (!file) { + return; + } + + // 1. GIF와 PNG가 아닌 경우, 조건 + if (file.type !== 'image/gif' && file.type !== 'image/png') { + alert('Select the correct file format. (GIF or PNG)'); + e.target.value = ''; // 파일 선택 취소 + return; + } else if (file.type === 'image/gif' && validGifCount) { + // 2. gif 형식 + 사진 갯수 + 그외 이미지 유효 조건들 확인, 조건 + imageValidationResult = await validateImageFileProperties(file, 2 * 1024 * 1024, 360, 360); + } else if (file.type === 'image/png' && validPngCount) { + // 3. png 형식 + 사진 갯수 + 그외 이미지 유효 조건들 확인, 조건 + imageValidationResult = await validateImageFileProperties(file, 150 * 1024, 360, 360); + } + + if (!imageValidationResult.isValid) { + setModal({ + isOpen: true, + txt: imageValidationResult.message || 'Unknown error' + }); + e.target.value = ''; // 파일 선택 취소 + return; + } + + // 위의 모든 이미지 업로드 조건을 통과하면, 이미지 파일의 url을 위의 url state에 동기화한다. + const reader = new FileReader(); + reader.readAsDataURL(file); + + reader.onloadend = () => { + const uploadedEmoticonDetailImagesUrl = reader.result as string; + + if (uploadedEmoticonDetailImagesUrl) { + const requestBody = { + guid: emoticonGuid, + dispOrd: selectedImageDispOrd + }; + + const typeCheckedFormData = convertToFormData(requestBody, file); + + const changeUploadDetailFileUrl = { + id: selectedImageId, + dispOrd: selectedImageDispOrd, + absFilePath: uploadedEmoticonDetailImagesUrl + }; + + // 이미지 미리보기 업데이트용 + setEmoticonDetailFilesUrl((prev) => { + const newState = [...prev]; + newState[selectedImageIndex] = changeUploadDetailFileUrl; + return newState; + }); + + setIsDataChanged(true); + updateEmoticonFile(typeCheckedFormData, { + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['emoticonList'] }); + setIsApiCalled(true); + } + }); + } + }; + }; + + const handleCancelClick = () => { + if (isApiCalled) { + queryClient.invalidateQueries({ queryKey: ['emoticonList'] }); + queryClient.invalidateQueries({ queryKey: ['emoticonDetails'] }); + onCloseModal(); + } else { + onCloseModal(); + } + }; + + const handleConfirmClick = () => { + // shortCut과 file image만 변경됐을 경우, 조건 ( 이미지 순서 변경 + 그외 이름 등의 사항의 변경은 해당 안 된다.) + if (reorderFiles.length === 0 && !isDataChanged) { + queryClient.invalidateQueries({ queryKey: ['emoticonList'] }); + queryClient.invalidateQueries({ queryKey: ['emoticonDetails'] }); + onCloseModal(); + return; + } + + const request = { + guid: emoticonGuid, + emotiName: emoticonState.emoticonName, + status: emoticonState.status.toString(), + isDefault: emoticonState.isDefault, + reorderFiles: reorderFiles + }; + + updateEmoticon(request, { + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['emoticonList'] }); + queryClient.invalidateQueries({ queryKey: ['emoticonDetails'] }); + onCloseModal(); + toast.success('The emoticon has been edited.'); + } + }); + }; + + return ( + <> + + {modal.txt} + +
    +
    Register a default Emoticon
    + + + + + + + + + + + + + + + +
    Emoticon Name + +
    Status + +
    isDefault + +
    +
    +
    Short cut
    +
      +
    • + + +

      Active

      +
    • +
    +
    +
    +
    File Upload
    +
      + {Children.toArray( + emoticonDetailFilesUrl?.map((item, index) => ( +
    • handleDragStart(e, index)} + onDragEnd={(e) => handleDragEnd(e, index)} + onDragOver={handelDragOver} + draggable + > +
      + + +

      {index + 1}

      +
      +
    • + )) + )} +
    +
    +
    + + +
    +
    + + ); +}; + +export default EmoticonDetailsDataModal; diff --git a/src/pages/manage/administrator/AdministratorList.tsx b/src/pages/manage/administrator/AdministratorList.tsx new file mode 100644 index 0000000..b98aae8 --- /dev/null +++ b/src/pages/manage/administrator/AdministratorList.tsx @@ -0,0 +1,256 @@ +import { useRef, useState } from 'react'; +import { Card } from 'react-bootstrap'; +import { useQueryClient } from '@tanstack/react-query'; +import { toast } from 'react-toastify'; + +import AdministratorDetailModal from './components/AdministratorDetailModal'; +import AdministratorAddModal from './components/AdministratorAddModal'; + +import PlusImg from '@icons/ic-plus.svg'; +import DeleteImg from '@icons/ic-bin.svg'; +import { useModal } from '@hooks/useModal'; +import { AdminListRequest, useAdminListQuery, useDeleteAdminMutation } from '@api/adminAPI'; +import { useSimpleCodeListQuery } from '@api/codeAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Modal from '@components/ui/modal/Modal'; +import TitleLayout from '@layout/TitleLayout'; +import SearchBar from '@components/ui/searchBar/SearchBar'; +import { handleSearchSubmit } from '@utils/searchBoxUtils'; +import Button from '@components/ui/button/Button'; +import Pagination from '@components/ui/pagination/Pagination'; + +const AUTH_CODE = '008'; + +const AdministratorList = () => { + const { isOpen, handleToggleModal } = useModal(); + const [checkItems, setCheckItems] = useState({ id: [] as number[] }); + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + + // 전체선택 핸들러 + const handleAllCheckClick = (checked: HTMLInputElement['checked']) => { + if (checked) { + setCheckItems({ id: adminListData?.content.map((item) => item.id) ?? [] }); + } else { + setCheckItems({ id: [] }); + } + }; + + // 개별선택 핸들러 + const handleSingleCheckClick = (checked: HTMLInputElement['checked'], id: number) => { + if (checked) { + setCheckItems((prevState) => ({ + ...prevState, + id: [...prevState.id, id] + })); + } else { + setCheckItems((prevState) => ({ + ...prevState, + id: checkItems.id.filter((item) => item !== id) + })); + } + }; + + const [id, setId] = useState(0); + const [adminListRequest, setAdminListRequest] = useState({ + page: 1, + size: 10, + sort: [], + searchKeyword: '' + }); + + // Ref + const searchRef = useRef(null); + + // API + const queryClient = useQueryClient(); + const { data: authCodeList = [], isLoading: authCodeLoading } = useSimpleCodeListQuery(AUTH_CODE); + const { data: adminListData = null, isLoading: adminListLoading } = useAdminListQuery(adminListRequest); + const { mutate: deleteAdmin, isPending: isDeletingAdmin } = useDeleteAdminMutation(); + + // Func + // Modal event + const handleModalBtnClick = (id?: number) => { + id ? setId(id) : setId(0); + handleToggleModal(true); + }; + + // 삭제 핸들러 + const handleDeleteClick = () => { + deleteAdmin(checkItems, { + onSuccess: () => { + toast.success('Admin has been deleted'); + // setAlertModal((prev) => ({ + // ...prev, + // isOpen: false + // })); + queryClient.invalidateQueries({ queryKey: ['adminList'] }); + } + }); + }; + + return ( + <> + + setAlertModal({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }), + buttonName: 'Close' + }} + {...(alertModal.confirmBtn.isConfirm + ? { confirmBtn: { onClose: () => alertModal.confirmBtn.onConfirmClick(), buttonName: 'Process' } } + : {})} + > + {alertModal.txt} + + handleToggleModal(false)}> + {id > 0 ? ( + handleToggleModal(false)} /> + ) : ( + handleToggleModal(false)} /> + )} + + + + + +
    + Administrator List +
    + handleSearchSubmit(event, searchRef, setAdminListRequest)} + onKeyDown={(event) => handleSearchSubmit(event, searchRef, setAdminListRequest)} + placeholderText="Name, Email, Contact" + /> + +
    +
    +
    + +
    + + + + + + + + + + + + + + + {adminListData?.content.map((admin, idx) => ( + + + + + + + + + + + ))} + +
    +
    + { + handleAllCheckClick(e.target.checked); + }} + checked={checkItems.id.length === adminListData?.content.length} + /> + +
    +
    AdministratorPerson in chargePermissionContactEmailGroup
    +
    + handleSingleCheckClick(e.target.checked, admin.id)} + checked={checkItems.id.includes(admin.id) ? true : false} + /> + +
    +
    {admin.userId}{admin.name} + {authCodeList.map((item) => (item.code === admin.auth ? item.codeName : ''))} + {admin.phone}{admin.email}{admin.groupName} + +
    +
    +
    + +
    +
    + + setAdminListRequest((prevState) => ({ ...prevState, page: pageNumber })) + } + /> +
    +
    +
    +
    +
    +
    + + ); +}; + +export default AdministratorList; diff --git a/src/pages/manage/administrator/components/AdministratorAddModal.tsx b/src/pages/manage/administrator/components/AdministratorAddModal.tsx new file mode 100644 index 0000000..c50a08d --- /dev/null +++ b/src/pages/manage/administrator/components/AdministratorAddModal.tsx @@ -0,0 +1,184 @@ +import Select from 'react-select'; +import { useEffect, useRef, useState } from 'react'; +import { useQueryClient } from '@tanstack/react-query'; +import { toast } from 'react-toastify'; +import { useSimpleCodeListQuery } from '@api/codeAPI'; +import { useAdminGroupCodeQuery } from '@api/adminGroupAPI'; +import { AddAdminRequest, useAddAdminMutation } from '@api/adminAPI'; +import { isEmpty } from '@utils/objectUtils'; +import Button from '@components/ui/button/Button'; + +interface Props { + onCloseModal: () => void; +} + +const AUTH_CODE = '008'; + +const AdministratorAddModal = ({ onCloseModal }: Props) => { + const [addAdminRequest, setAddAdminRequest] = useState({ + email: '', + name: '', + phone: '', + grp: '', + auth: '' + }); + + // Ref + const nameRef = useRef(null); + const contactRef = useRef(null); + const emailRef = useRef(null); + + // API + const queryClient = useQueryClient(); + const { data: authCodeList } = useSimpleCodeListQuery(AUTH_CODE); + const { data: groupCodeList } = useAdminGroupCodeQuery(); + const { mutate: addAdmin, isPending: isPostingAdmin } = useAddAdminMutation(); + + const groupCodeOptions = + groupCodeList?.map((group) => ({ + label: group.groupName, + value: group.groupCd + })) ?? []; + + const authCodeOptions = + authCodeList?.map((auth) => ({ + label: auth.codeName, + value: auth.code + })) ?? []; + + useEffect(() => { + if (authCodeList && authCodeList.length > 0) { + setAddAdminRequest((prevState) => ({ ...prevState, auth: authCodeList[0].code })); + } + }, [authCodeList]); + + useEffect(() => { + if (groupCodeList && groupCodeList.length > 0) { + setAddAdminRequest((prevState) => ({ ...prevState, grp: groupCodeList[0].groupCd })); + } + }, [groupCodeList]); + + // Func + const handleConfirmClick = () => { + if (addAdminRequest.name === '') { + toast.error('Please enter your name.'); + nameRef.current?.focus(); + + return; + } else if (!/^[\d-]+$/.test(addAdminRequest.phone)) { + toast.error('Please enter your contact.'); + contactRef.current?.focus(); + + return; + } else if (!/^[\w.-]+\w@[\w.-]+\w$/.test(addAdminRequest.email)) { + toast.error('Please enter your email in the correct format.'); + emailRef.current?.focus(); + + return; + } + + addAdmin(addAdminRequest, { + onSuccess: () => { + toast.success('A new Admin has been created.'); + onCloseModal(); + queryClient.invalidateQueries({ queryKey: ['adminList'] }); + queryClient.invalidateQueries({ queryKey: ['adminInfo'] }); + } + }); + }; + + return ( + <> +
    + Add Administrator +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AdministratorAdmin + Number (Auto Create)
    Person in charge + setAddAdminRequest((prevState) => ({ ...prevState, name: e.target.value }))} + placeholder="Name" + disabled={isEmpty(addAdminRequest)} + /> +
    Contact + setAddAdminRequest((prevState) => ({ ...prevState, phone: e.target.value }))} + placeholder="000-0000-0000" + disabled={isEmpty(addAdminRequest)} + /> +
    Email + setAddAdminRequest((prevState) => ({ ...prevState, email: e.target.value }))} + placeholder="AngkorLife@email.com" + disabled={isEmpty(addAdminRequest)} + /> +
    Group +
    Permission +
    +
    +
    + + +
    + + ); +}; + +export default AdministratorAddModal; diff --git a/src/pages/manage/administrator/components/AdministratorDetailModal.tsx b/src/pages/manage/administrator/components/AdministratorDetailModal.tsx new file mode 100644 index 0000000..fb3fafc --- /dev/null +++ b/src/pages/manage/administrator/components/AdministratorDetailModal.tsx @@ -0,0 +1,232 @@ +import Select from 'react-select'; +import { useEffect, useRef, useState } from 'react'; +import { useQueryClient } from '@tanstack/react-query'; +import { toast } from 'react-toastify'; +import { UpdateAdminRequest, useAdminInfoQuery, useResetPasswordMutation, useUpdateAdminMutation } from '@api/adminAPI'; +import { useSimpleCodeListQuery } from '@api/codeAPI'; +import { useAdminGroupCodeQuery } from '@api/adminGroupAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import { isEmpty } from '@utils/objectUtils'; +import Button from '@components/ui/button/Button'; + +interface Props { + id: number; + onCloseModal: () => void; +} + +const AUTH_CODE = '008'; + +const AdministratorDetailModal = ({ id, onCloseModal }: Props) => { + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + isConfirm: false + }); + + const [updateAdminRequest, setUpdateAdminRequest] = useState({ + email: '', + name: '', + phone: '', + grp: '', + auth: '', + id: 0 + }); + + // Ref + const nameRef = useRef(null); + const contactRef = useRef(null); + const emailRef = useRef(null); + + // API + const queryClient = useQueryClient(); + const { data: authCodeList } = useSimpleCodeListQuery(AUTH_CODE); + const { data: groupCodeList } = useAdminGroupCodeQuery(); + const { data: adminInfo } = useAdminInfoQuery(id); + const { mutate: updateAdmin, isPending: isUpdatingAdmin } = useUpdateAdminMutation(); + const { mutate: resetPassword, isPending: isResettingPassword } = useResetPasswordMutation(); + + // 변수 + const groupCodeOptions = + groupCodeList?.map((group) => ({ + label: group.groupName, + value: group.groupCd + })) ?? []; + + const authCodeOptions = + authCodeList?.map((auth) => ({ + label: auth.codeName, + value: auth.code + })) ?? []; + + // Func + const handlePasswordReset = () => { + const resetAccount = { + userId: adminInfo?.userId || '', + email: adminInfo?.email + }; + + resetPassword(resetAccount, { + onSuccess: () => { + toast.success('A temporary password has been sent to your e-mail.'); + onCloseModal(); + } + }); + }; + + const handleConfirmClick = () => { + if (updateAdminRequest.name === '') { + toast.error('Please enter your name.'); + nameRef.current?.focus(); + + return; + } else if (!/^[\d-]+$/.test(updateAdminRequest.phone)) { + toast.error('Please enter your contact.'); + contactRef.current?.focus(); + + return; + } else if (!/^[\w.-]+\w@[\w.-]+\w$/.test(updateAdminRequest.email)) { + toast.error('Please enter your email in the correct format.'); + emailRef.current?.focus(); + + return; + } + + updateAdmin(updateAdminRequest, { + onSuccess: () => { + toast.success('Admin has been updated.'); + onCloseModal(); + queryClient.invalidateQueries({ queryKey: ['adminList'] }); + queryClient.invalidateQueries({ queryKey: ['adminInfo'] }); + } + }); + }; + + useEffect(() => { + if (adminInfo && adminInfo !== undefined) { + setUpdateAdminRequest(adminInfo); + } + }, [adminInfo]); + + return ( + <> + onCloseModal(), buttonName: 'Close' }} + disabled={isResettingPassword} + > + {alertModal.txt} + +
    + Edit Administrator +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AdministratorAdmin(임시)
    Person in charge + setUpdateAdminRequest((prevState) => ({ ...prevState, name: e.target.value }))} + placeholder="Name" + disabled={isEmpty(updateAdminRequest)} + /> +
    Contact + setUpdateAdminRequest((prevState) => ({ ...prevState, phone: e.target.value }))} + placeholder="000-0000-0000" + disabled={isEmpty(updateAdminRequest)} + /> +
    Email + setUpdateAdminRequest((prevState) => ({ ...prevState, email: e.target.value }))} + placeholder="AngkorLife@email.com" + disabled={isEmpty(updateAdminRequest)} + /> +
    Group +
    Permission +
    +
    +
    +
    + +
    +
    + + +
    +
    + + ); +}; + +export default AdministratorDetailModal; diff --git a/src/pages/manage/code/Code.tsx b/src/pages/manage/code/Code.tsx new file mode 100644 index 0000000..c7e82c2 --- /dev/null +++ b/src/pages/manage/code/Code.tsx @@ -0,0 +1,36 @@ +import React, { useState } from 'react'; +import { Col, Row } from 'react-bootstrap'; + +import MajorCode from './components/MajorCode'; +import MinorCode from './components/MinorCode'; + +export interface Major { + code: string; + name: string; +} + +const Code: React.FC = () => { + const [major, setMajor] = useState({ code: '', name: '' }); + + return ( +
    +

    Code

    + + + + + + + + +
    + ); +}; + +export default Code; diff --git a/src/pages/manage/code/components/AddCodeModal.tsx b/src/pages/manage/code/components/AddCodeModal.tsx new file mode 100644 index 0000000..0e40813 --- /dev/null +++ b/src/pages/manage/code/components/AddCodeModal.tsx @@ -0,0 +1,196 @@ +import React, { useEffect, useState } from 'react'; +import { useQueryClient } from '@tanstack/react-query'; +import { toast } from 'react-toastify'; +import { AddCodeRequest, useAddCodeMutation } from '@api/codeAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Button from '@components/ui/button/Button'; + +interface Props { + major: { code: string; name: string }; + onClose: () => void; +} + +const AddCodeModal = ({ major, onClose }: Props) => { + const [isSuccess, setIsSuccess] = useState(false); + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '' + }); + const [addMajorRequest, setAddMajorRequest] = useState({ + majorName: '', + codeEn: '', + codeKr: '', + etc: '' + }); + + const queryClient = useQueryClient(); + + const { mutate: addMajor, isPending: isPostingMajor } = useAddCodeMutation(); + + useEffect(() => { + if (major.code !== '') { + setAddMajorRequest((prevState) => ({ ...prevState, major: major.code, majorName: undefined })); + } + }, [major]); + + const handleConfirmClick = () => { + if (addMajorRequest.majorName === '' || addMajorRequest.codeEn === '' || addMajorRequest.codeKr === '') { + setAlertModal({ isOpen: true, txt: 'Please fill the empty form.' }); + return; + } + + addMajor(addMajorRequest, { + onSuccess: () => { + setIsSuccess(true); + queryClient.invalidateQueries({ queryKey: ['codeList'] }); + queryClient.invalidateQueries({ queryKey: ['majorCodeList'] }); + toast.success('Major has been created.'); + onClose(); + }, + onError: (error) => { + setAlertModal({ isOpen: true, txt: error.response?.data.errorMessage as string }); + setIsSuccess(false); + } + }); + }; + + const handleAlertModalClose = () => { + setAlertModal({ isOpen: false, txt: '' }); + + if (isSuccess) { + onClose(); + } + }; + + // etc 이미지 -> base64로 변환 + const handleInsertImg = (e: React.ChangeEvent) => { + const file = e.target.files ? e.target.files[0] : null; + + if (!file) { + return; + } + + const fileReader = new FileReader(); + + fileReader.readAsDataURL(file); + fileReader.onloadend = () => { + const menuIconUrl = fileReader.result?.toString(); + + if (menuIconUrl) { + setAddMajorRequest((prevState) => ({ + ...prevState, + etc: menuIconUrl + })); + } + fileReader.onloadend = null; + }; + }; + + return ( + <> + handleAlertModalClose(), + buttonName: 'Close' + }} + > + {alertModal.txt} + +
    + Add Code +
    +
    + + + + + + + + + + + + + + + + + + + +
    Major Name + {major.code === '' ? ( + + setAddMajorRequest((prevState) => ({ + ...prevState, + majorName: e.target.value + })) + } + placeholder="Enter a major name." + /> + ) : ( + major.name + )} +
    Code Eng + + setAddMajorRequest((prevState) => ({ + ...prevState, + codeEn: e.target.value + })) + } + placeholder="Enter a major name(eng)." + /> +
    Code Kmer + + setAddMajorRequest((prevState) => ({ + ...prevState, + codeKr: e.target.value + })) + } + placeholder="Enter a major name(kmer)." + /> +
    Etc. (Optional) + + setAddMajorRequest((prevState) => ({ + ...prevState, + etc: e.target.value + })) + } + placeholder="Enter additional contents." + /> + {major.code.includes('005') && ( +
    + + +
    + )} +
    +
    +
    + + +
    + + ); +}; + +export default AddCodeModal; diff --git a/src/pages/manage/code/components/DetailCodeModal.tsx b/src/pages/manage/code/components/DetailCodeModal.tsx new file mode 100644 index 0000000..2000f30 --- /dev/null +++ b/src/pages/manage/code/components/DetailCodeModal.tsx @@ -0,0 +1,241 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { useQueryClient } from '@tanstack/react-query'; + +import DeleteIcon from '@icons/ic-bin.svg'; +import { toast } from 'react-toastify'; +import { UpdateCodeRequest, useDeleteCodeMutation, useUpdateCodeMutation } from '@api/codeAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Button from '@components/ui/button/Button'; + +interface Props { + code: { code: string; codeEn: string; codeKr: string; etc: string }; + onClose: () => void; +} + +const DetailCodeModal = ({ code, onClose }: Props) => { + const [isSuccess, setIsSuccess] = useState(false); + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + isConfirm: false + }); + const [updateMajorRequest, setUpdateMajorRequest] = useState({ + data: { + codeEn: '', + codeKr: '', + etc: '' + }, + path: '' + }); + + // Ref + const codeEngRef = useRef(null); + const codeKrRef = useRef(null); + + // API + const queryClient = useQueryClient(); + const { mutate: updateCode, isPending: isUpdatingCode } = useUpdateCodeMutation(); + const { mutate: deleteCode, isPending: isDeletingCode } = useDeleteCodeMutation(); + + useEffect(() => { + if (code) { + setUpdateMajorRequest({ + data: { + codeEn: code.codeEn, + codeKr: code.codeKr, + etc: code.etc + }, + path: code.code + }); + } + }, [code]); + + const handleConfirmClick = () => { + if (!codeEngRef.current?.value.trim() || !codeKrRef.current?.value.trim()) { + toast.error('Both codes are required.'); + return; + } + + updateCode(updateMajorRequest, { + onSuccess: () => { + setIsSuccess(true); + queryClient.invalidateQueries({ queryKey: ['codeList'] }); + queryClient.invalidateQueries({ queryKey: ['majorCodeList'] }); + toast.success('Code has been updated.'); + onClose(); + }, + onError: (error) => { + setAlertModal({ isOpen: true, txt: error.response?.data.errorMessage as string, isConfirm: false }); + setIsSuccess(false); + } + }); + }; + + const handleDeleteClick = () => { + deleteCode(code.code, { + onSuccess: () => { + toast.success('Code has been deleted.'); + onClose(); + setIsSuccess(true); + queryClient.invalidateQueries({ queryKey: ['codeList'] }); + queryClient.invalidateQueries({ queryKey: ['majorCodeList'] }); + }, + onError: (error) => { + setAlertModal({ isOpen: true, txt: error.response?.data.errorMessage as string, isConfirm: false }); + setIsSuccess(false); + } + }); + }; + + const handleAlertModalClose = () => { + setAlertModal({ isOpen: false, txt: '', isConfirm: false }); + + if (isSuccess) { + queryClient.invalidateQueries({ queryKey: ['codeList'] }); + onClose(); + } + }; + + const handleInsertImg = (e: React.ChangeEvent) => { + const file = e.target.files ? e.target.files[0] : null; + + if (!file) { + return; + } + + const fileReader = new FileReader(); + fileReader.readAsDataURL(file); + fileReader.onloadend = () => { + const menuIconUrl = fileReader.result?.toString(); + + if (menuIconUrl) { + setUpdateMajorRequest((prevState) => ({ + ...prevState, + data: { + ...prevState.data, + etc: menuIconUrl + } + })); + } + fileReader.onloadend = null; + }; + }; + + return ( + <> + + {alertModal.txt} + +
    + Edit Code +
    +
    + + + + + + + + + + + + + + + + + + + +
    Code{code.code}
    Code Eng + { + setUpdateMajorRequest((prevState) => ({ + ...prevState, + data: { + ...prevState.data, + codeEn: e.target.value + } + })); + }} + placeholder="Enter a code name (eng)." + /> +
    Code Kr + + setUpdateMajorRequest((prevState) => ({ + ...prevState, + data: { + ...prevState.data, + codeKr: e.target.value + } + })) + } + placeholder="Enter a code name (kr)." + /> +
    Etc. (Optional) + + setUpdateMajorRequest((prevState) => ({ + ...prevState, + data: { + ...prevState.data, + etc: e.target.value + } + })) + } + placeholder="Enter text or add an image." + /> + {code.code.startsWith('005') && ( +
    + + +
    + )} +
    +
    +
    +
    + +
    +
    + + +
    +
    + + ); +}; + +export default DetailCodeModal; diff --git a/src/pages/manage/code/components/MajorCode.tsx b/src/pages/manage/code/components/MajorCode.tsx new file mode 100644 index 0000000..d60f6c9 --- /dev/null +++ b/src/pages/manage/code/components/MajorCode.tsx @@ -0,0 +1,189 @@ +import React, { Dispatch, SetStateAction, useRef, useState } from 'react'; +import { Card } from 'react-bootstrap'; + +import { Major } from '../Code'; +import MajorNameModal from './MajorNameModal'; +import AddCodeModal from './AddCodeModal'; + +import PlusImg from '@icons/ic-plus.svg'; +import { MajorCodeListRequest, useMajorCodeListQuery } from '@api/codeAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Modal from '@components/ui/modal/Modal'; +import SearchBar from '@components/ui/searchBar/SearchBar'; +import { handleSearchSubmit } from '@utils/searchBoxUtils'; +import Button from '@components/ui/button/Button'; +import Pagination from '@components/ui/pagination/Pagination'; + +interface Props { + setMajorCode: Dispatch>; +} + +const MajorCode = ({ setMajorCode }: Props) => { + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + const [modalInfo, setModalInfo] = useState({ + isOpen: false, + modalName: '', + code: '', + name: '' + }); + const [codeListRequest, setCodeListRequest] = useState({ + page: 1, + size: 10, + sort: [], + searchKeyword: '' + }); + + const searchRef = useRef(null); + + const { data: majorList, isLoading: majorLoading, refetch: majorRefetch } = useMajorCodeListQuery(codeListRequest); + + // Minors event + const handleMinorsClick = (e: React.MouseEvent) => { + const majorCode = e.currentTarget.value; + const majorName = e.currentTarget.name; + + setMajorCode({ code: majorCode, name: majorName }); + }; + + if (majorLoading) { + return null; + } + + return ( + <> + + setAlertModal({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }), + buttonName: 'Close' + }} + {...(alertModal.confirmBtn.isConfirm + ? { confirmBtn: { onClose: () => alertModal.confirmBtn.onConfirmClick(), buttonName: 'Confirm' } } + : {})} + > + {alertModal.txt} + + setModalInfo({ isOpen: false, modalName: '', code: '', name: '' })} + > + {modalInfo.modalName === 'major' ? ( + setModalInfo({ isOpen: false, modalName: '', code: '', name: '' })} + majorListRefetch={majorRefetch} + /> + ) : ( + setModalInfo({ isOpen: false, modalName: '', code: '', name: '' })} + /> + )} + + + +
    + + Code List + > + Major Code + +
    + handleSearchSubmit(event, searchRef, setCodeListRequest)} + onKeyDown={(event) => handleSearchSubmit(event, searchRef, setCodeListRequest)} + placeholderText="Major Name" + /> + +
    +
    +
    + +
    + + + + + + + + + + {majorList?.content.map((item, idx) => ( + + + + + + ))} + +
    Major CodeMajor Name
    {item.major}{item.majorName} + + +
    +
    + + setCodeListRequest((prevState) => ({ ...prevState, page: pageNumber })) + } + /> +
    +
    +
    +
    + + ); +}; + +export default MajorCode; diff --git a/src/pages/manage/code/components/MajorNameModal.tsx b/src/pages/manage/code/components/MajorNameModal.tsx new file mode 100644 index 0000000..7140f2e --- /dev/null +++ b/src/pages/manage/code/components/MajorNameModal.tsx @@ -0,0 +1,111 @@ +import React, { useState } from 'react'; +import { QueryObserverResult, useQueryClient } from '@tanstack/react-query'; + +import { toast } from 'react-toastify'; +import { Page } from 'src/services/commonResponse/PageResponse'; +import { MajorCodeListResponse, UpdateMajorNameRequest, useUpdateMajorNameMutation } from '@api/codeAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import { isEmpty } from '@utils/objectUtils'; +import Button from '@components/ui/button/Button'; + +interface Props { + major: { code: string; name: string }; + onClose: () => void; + majorListRefetch: () => Promise, Error>>; +} + +const MajorNameModal = ({ major, onClose, majorListRefetch }: Props) => { + const [updateSuccess, setUpdateSuccess] = useState(false); + const [modal, setModal] = useState({ + isOpen: false, + txt: '' + }); + const [updateMajorNameRequest, setUpdateMajorNameRequest] = useState({ + data: { + codeValue: major.name + }, + path: major.code + }); + + // API + const queryClient = useQueryClient(); + const { mutate: updateMajorName, isPending: isUpdatingMajorName } = useUpdateMajorNameMutation(); + + const handleConfirmClick = () => { + updateMajorName(updateMajorNameRequest, { + onSuccess: () => { + toast.success('Major name has been updated.'); + onClose(); + setUpdateSuccess(true); + queryClient.invalidateQueries({ queryKey: ['majorCodeList'] }); + }, + onError: (error) => { + setModal({ isOpen: true, txt: error.response?.data.errorMessage as string }); + setUpdateSuccess(false); + } + }); + }; + + const handleAlertModalClose = () => { + setModal({ isOpen: false, txt: '' }); + + if (updateSuccess) { + majorListRefetch(); + onClose(); + } + }; + + return ( + <> + handleAlertModalClose(), + buttonName: 'Close' + }} + > + {modal.txt} + +
    + Major Name +
    +
    + + + + + + + + + + + +
    Major Code{major.code}
    Major Name + + setUpdateMajorNameRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, codeValue: e.target.value } + })) + } + readOnly={isEmpty(updateMajorNameRequest.data)} + /> +
    +
    +
    + + +
    + + ); +}; + +export default MajorNameModal; diff --git a/src/pages/manage/code/components/MinorCode.tsx b/src/pages/manage/code/components/MinorCode.tsx new file mode 100644 index 0000000..0a13191 --- /dev/null +++ b/src/pages/manage/code/components/MinorCode.tsx @@ -0,0 +1,236 @@ +import React, { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react'; +import { Card } from 'react-bootstrap'; + +import AddCodeModal from './AddCodeModal'; +import DetailCodeModal from './DetailCodeModal'; +import { Major } from '../Code'; + +import prevImg from '@icons/chevron-left.svg'; +import plusImg from '@icons/ic-plus.svg'; +import { CodeListRequest, useCodeListQuery } from '@api/codeAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Modal from '@components/ui/modal/Modal'; +import SearchBar from '@components/ui/searchBar/SearchBar'; +import Button from '@components/ui/button/Button'; +import Pagination from '@components/ui/pagination/Pagination'; + +interface Props { + major: Major; + setMajor: Dispatch>; +} + +interface ModalInfo { + isOpen?: boolean; + modalName: string; + code: string; + codeEn?: string; + codeKr?: string; + etc?: string; +} + +const MinorCode = ({ major, setMajor }: Props) => { + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + const [modalInfo, setModalInfo] = useState({ + isOpen: false, + modalName: '', + code: '' + }); + const [codeListRequest, setCodeListRequest] = useState({ + params: { + page: 1, + size: 10, + sort: [], + searchKeyword: '' + }, + path: '' + }); + + const searchRef = useRef(null); + + const { data: codeList, isLoading: codeLoading } = useCodeListQuery(codeListRequest); + + useEffect(() => { + if (major.code !== '') { + setCodeListRequest((prevState) => ({ + ...prevState, + path: major.code + })); + } + }, [major]); + + // 검색 이벤트 + const handleSearchSubmit = (event: React.MouseEvent | React.KeyboardEvent) => { + if ( + event.type === 'click' || + (event.type === 'keydown' && (event as React.KeyboardEvent).key === 'Enter') + ) { + event.preventDefault(); + setCodeListRequest((prevState) => ({ + ...prevState, + params: { + ...prevState.params, + searchKeyword: searchRef.current?.value.trim() || '', + page: 1 + } + })); + } + }; + + const handlePrevClick = () => { + setMajor({ code: '', name: '' }); + }; + + if (codeLoading) { + return null; + } + + return ( + <> + + setAlertModal({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }), + buttonName: 'Close' + }} + {...(alertModal.confirmBtn.isConfirm + ? { confirmBtn: { onClose: () => alertModal.confirmBtn.onConfirmClick(), buttonName: 'Confirm' } } + : {})} + > + {alertModal.txt} + + setModalInfo({ modalName: '', code: '' })}> + {modalInfo.modalName === 'add' ? ( + setModalInfo({ modalName: '', code: '' })} + /> + ) : ( + setModalInfo({ modalName: '', code: '' })} + /> + )} + + + +
    + + + Major Code ({major.name})> + Minor Code + +
    + + +
    +
    +
    + +
    + + + + + + + + + + + + {codeList?.content.map((item, idx) => ( + + + + + + + + ))} + +
    CodeCode EngCode Kmeretc
    {item.code}{item.codeEn}{item.codeKr} + {item.etc.startsWith('data:image') ? ( + {item.codeEn} + ) : ( + item.etc + )} + + +
    +
    + + setCodeListRequest((prevState) => ({ + ...prevState, + params: { ...prevState.params, page: pageNumber } + })) + } + /> +
    +
    +
    +
    + + ); +}; + +export default MinorCode; diff --git a/src/pages/manage/group/Group.tsx b/src/pages/manage/group/Group.tsx new file mode 100644 index 0000000..3745546 --- /dev/null +++ b/src/pages/manage/group/Group.tsx @@ -0,0 +1,269 @@ +import React, { useRef, useState } from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import GroupDetailModal from './components/GroupDetailModal'; +import GroupAddModal from './components/GroupAddModal'; +import plusImg from '@icons/ic-plus.svg'; +import deleteImg from '@icons/ic-bin.svg'; +import { toast } from 'react-toastify'; +import { AdminGroupListRequest, useAdminGroupListQuery, useDeleteAdminGroupMutation } from '@api/adminGroupAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Modal from '@components/ui/modal/Modal'; +import SearchBar from '@components/ui/searchBar/SearchBar'; +import Button from '@components/ui/button/Button'; +import Pagination from '@components/ui/pagination/Pagination'; + +const Group = () => { + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + const [isModalOpen, setIsModalOpen] = useState(false); + const [groupCd, setGroupCd] = useState(''); + const [checkItems, setCheckItems] = useState({ groupCd: [] as string[] }); + const [groupListRequest, setGroupListRequest] = useState({ + page: 1, + size: 10, + sort: [], + searchKeyword: '' + }); + + const searchRef = useRef(null); + + const { data: groupList = null, refetch: groupListRefetch } = useAdminGroupListQuery(groupListRequest); + const { mutate: deleteGroup, isPending: isDeletingGroup } = useDeleteAdminGroupMutation(); + + // Modal event + const handleModalBtnClick = (groupCd?: string) => { + groupCd ? setGroupCd(groupCd) : setGroupCd(''); + + setIsModalOpen(true); + }; + + // Search event + const handleSearch = () => { + setGroupListRequest((prevState) => ({ + ...prevState, + page: 0 + })); + + groupListRefetch(); + }; + + // CheckBox check event + const handleAllCheckClick = (checked: HTMLInputElement['checked']) => { + if (checked) { + setCheckItems((prevState) => ({ + ...prevState, + groupCd: [...prevState.groupCd, ...(groupList?.content.map((item) => item.groupCd) ?? [])] + })); + } else { + setCheckItems({ groupCd: [] }); + } + }; + + const handleSingleCheckClick = (checked: HTMLInputElement['checked'], groupCd: string) => { + if (checked) { + setCheckItems((prevState) => ({ + ...prevState, + groupCd: [...prevState.groupCd, groupCd] + })); + } else { + setCheckItems((prevState) => ({ + ...prevState, + groupCd: checkItems.groupCd.filter((item) => item !== groupCd) + })); + } + }; + + // Delete event + const handleDeleteClick = () => { + deleteGroup(checkItems, { + onSuccess: () => { + toast.success('Admin Group has been deleted'); + setAlertModal({ + isOpen: false, + txt: 'Admin Group has been deleted', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => null + } + }); + + groupListRefetch(); + }, + onError: (error) => { + setAlertModal({ + isOpen: true, + txt: error.response?.data.errorMessage as string, + confirmBtn: { + isConfirm: false, + onConfirmClick: () => null + } + }); + } + }); + }; + + return ( + <> + + setAlertModal({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }), + buttonName: 'Close' + }} + {...(alertModal.confirmBtn.isConfirm + ? { confirmBtn: { onClose: () => alertModal.confirmBtn.onConfirmClick(), buttonName: 'Process' } } + : {})} + > + {alertModal.txt} + + setIsModalOpen(false)}> + {groupCd === '' ? ( + setIsModalOpen(false)} groupListRefetch={groupListRefetch} /> + ) : ( + setIsModalOpen(false)} + groupListRefetch={groupListRefetch} + /> + )} + +
    +

    Group

    + + + + +
    + Group List +
    + groupListRefetch()} + onKeyDown={(e) => { + e.preventDefault(); + handleSearch(); + }} + placeholderText="Group Name" + /> +
    + +
    +
    +
    +
    + +
    + + + + + + + + + + + {groupList?.content.map((group, idx) => ( + + + + + + + ))} + +
    +
    + handleAllCheckClick(e.target.checked)} + checked={checkItems.groupCd.length === groupList?.content.length ? true : false} + /> + +
    +
    Group NameMembers
    +
    + handleSingleCheckClick(e.target.checked, group.groupCd)} + checked={checkItems.groupCd.includes(group.groupCd) ? true : false} + /> + +
    +
    {group.groupName}{group.members} + +
    +
    +
    + +
    +
    + + setGroupListRequest((prevState) => ({ ...prevState, page: pageNumber })) + } + /> +
    +
    +
    +
    +
    + +
    +
    + + ); +}; + +export default Group; diff --git a/src/pages/manage/group/components/GroupAddModal.tsx b/src/pages/manage/group/components/GroupAddModal.tsx new file mode 100644 index 0000000..b62e780 --- /dev/null +++ b/src/pages/manage/group/components/GroupAddModal.tsx @@ -0,0 +1,99 @@ +import { useRef, useState } from 'react'; +import { QueryObserverResult, useQueryClient } from '@tanstack/react-query'; +import { toast } from 'react-toastify'; +import { AddAdminGroupRequest, AdminGroupListResponse, useAddAdminGroupMutation } from '@api/adminGroupAPI'; +import { Page } from 'src/services/commonResponse/PageResponse'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Button from '@components/ui/button/Button'; + +interface Props { + onCloseModal: () => void; + groupListRefetch: () => Promise, Error>>; +} + +const GroupAddModal = ({ onCloseModal, groupListRefetch }: Props) => { + const [addSuccess, setAddSuccess] = useState(false); + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '' + }); + const [addGroupRequest, setAddGroupRequest] = useState({ + groupName: '' + }); + + // Ref + const groupNameRef = useRef(null); + + // API + const queryClient = useQueryClient(); + const { mutate: addGroup, isPending: isPostingGroup } = useAddAdminGroupMutation(); + + const handleConfirmClick = () => { + if (addGroupRequest.groupName === '') { + toast.error('Please enter group name.'); + groupNameRef.current?.focus(); + return; + } + + addGroup(addGroupRequest, { + onSuccess: () => { + toast.success('A new admin group has been created.'); + queryClient.invalidateQueries({ queryKey: ['adminGroupList'] }); + onCloseModal(); + setAddSuccess(true); + }, + onError: (error) => { + setAlertModal({ isOpen: true, txt: error.response?.data.errorMessage as string }); + setAddSuccess(false); + } + }); + }; + + const handleAlertModalClose = () => { + setAlertModal({ isOpen: false, txt: '' }); + + if (addSuccess) { + groupListRefetch(); + onCloseModal(); + } + }; + + return ( + <> + handleAlertModalClose(), buttonName: 'Close' }}> + {alertModal.txt} + +
    + Add Group +
    +
    + + + + + + + +
    Group Name + setAddGroupRequest((prevState) => ({ ...prevState, groupName: e.target.value }))} + placeholder="Group Name" + /> +
    +
    +
    + + +
    + + ); +}; + +export default GroupAddModal; diff --git a/src/pages/manage/group/components/GroupDetailModal.tsx b/src/pages/manage/group/components/GroupDetailModal.tsx new file mode 100644 index 0000000..dbe1d84 --- /dev/null +++ b/src/pages/manage/group/components/GroupDetailModal.tsx @@ -0,0 +1,122 @@ +import React, { useRef, useState } from 'react'; +import { QueryObserverResult, useQueryClient } from '@tanstack/react-query'; + +import { toast } from 'react-toastify'; +import { + AdminGroupListResponse, + UpdateAdminGroupRequest, + useAdminGroupInfoQuery, + useUpdateAdminGroupMutation +} from '@api/adminGroupAPI'; +import { Page } from 'src/services/commonResponse/PageResponse'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Button from '@components/ui/button/Button'; + +interface Props { + groupCd: string; + onCloseModal: () => void; + groupListRefetch: () => Promise, Error>>; +} + +const GroupDetailModal = ({ groupCd, onCloseModal, groupListRefetch }: Props) => { + const [addSuccess, setAddSuccess] = useState(false); + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '' + }); + const [updateGroupRequest, setUpdateGroupRequest] = useState({ + groupCd: '', + groupName: '' + }); + + // Ref + const groupNameRef = useRef(null); + + // API + const queryClient = useQueryClient(); + const { data: groupInfo } = useAdminGroupInfoQuery(groupCd); + const { mutate: updateGroup, isPending: isUpdatingGroup } = useUpdateAdminGroupMutation(); + + const handleConfirmClick = () => { + if (updateGroupRequest.groupName === '') { + toast.error('Please enter group name.'); + groupNameRef.current?.focus(); + return; + } + + updateGroup(updateGroupRequest, { + onSuccess: () => { + toast.success('Admin group has been updated.'); + onCloseModal(); + setAddSuccess(true); + groupListRefetch(); + }, + onError: () => { + setAddSuccess(false); + } + }); + }; + + const handleAlertModalClose = () => { + setAlertModal({ isOpen: false, txt: '' }); + + if (addSuccess) { + groupListRefetch(); + onCloseModal(); + } + }; + + return ( + <> + handleAlertModalClose(), buttonName: 'Close' }}> + {alertModal.txt} + +
    + Edit Group +
    +
    + + + + + + + + + + + + + + + +
    Group Name + + setUpdateGroupRequest((prevState) => ({ + ...prevState, + groupCd: e.target.value, + groupName: 'bbbbbbbbb' + })) + } + placeholder="Group Name" + /> +
    Members{groupInfo?.members}
    Create Date{groupInfo?.createDt}
    +
    +
    + + +
    + + ); +}; + +export default GroupDetailModal; diff --git a/src/pages/manage/menu/Menu.tsx b/src/pages/manage/menu/Menu.tsx new file mode 100644 index 0000000..68cca95 --- /dev/null +++ b/src/pages/manage/menu/Menu.tsx @@ -0,0 +1,51 @@ +import React, { useEffect, useState } from 'react'; +import { useLocation } from 'react-router-dom'; +import { Col, Row } from 'react-bootstrap'; + +import TopMenu from './components/TopMenu'; +import SubMenu from './components/SubMenu'; + +export interface TopMenuInfo { + id: number; + name: string; +} + +const Menu: React.FC = () => { + const [topMenuInfo, setTopMenuInfo] = useState({ id: 0, name: '' }); + const location = useLocation(); + + useEffect(() => { + const searchParams = new URLSearchParams(location.search); + const newId = searchParams.get('id'); + const newName = searchParams.get('name'); + setTopMenuInfo((prevState) => ({ + ...prevState, + id: newId ? parseInt(newId, 10) : 0, + name: newName || '' + })); + }, [location.search]); + + return ( +
    +

    Menu

    c + + {topMenuInfo.id === 0 && ( +
    + + + +
    + )} + {topMenuInfo.id !== 0 && ( +
    + + + +
    + )} +
    +
    + ); +}; + +export default Menu; diff --git a/src/pages/manage/menu/components/MenuAddModal.tsx b/src/pages/manage/menu/components/MenuAddModal.tsx new file mode 100644 index 0000000..cdfacea --- /dev/null +++ b/src/pages/manage/menu/components/MenuAddModal.tsx @@ -0,0 +1,212 @@ +import React, { useState } from 'react'; +import { useQueryClient } from '@tanstack/react-query'; + +import { toast } from 'react-toastify'; +import { AddMenuRequest, useAddMenuMutation } from '@api/menuAPI'; +import { useSimpleCodeListQuery } from '@api/codeAPI'; +import Radio, { RadioOption } from '@components/ui/radio/Radio'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Button from '@components/ui/button/Button'; + +interface Props { + id?: number; + onClose: () => void; + isTopMenu: boolean; +} + +const MenuAddModal = ({ id, onClose, isTopMenu }: Props) => { + const [addSuccess, setAddSuccess] = useState(false); + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '' + }); + + const [addMenuRequest, setAddMenuRequest] = useState({ + topId: id ?? 0, + menuName: '', + menuLink: '', + menuFolder: '', + menuFile: '', + menuIcon: '', + levels: [] + }); + + const code = process.env.REACT_APP_CODE as string; + + // API + const queryClient = useQueryClient(); + const { data: authCodeList, isLoading: isAuthCodeLoading } = useSimpleCodeListQuery('008'); + const { mutate: addMenu, isPending: isPostingMenu } = useAddMenuMutation(); + + // Func + const handleConfirmClick = () => { + addMenu(addMenuRequest, { + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['menuTopList'] }); + queryClient.invalidateQueries({ queryKey: ['menuSubList'] }); + toast.success('A new menu has been created.'); + onClose(); + setAddSuccess(true); + }, + onError: () => { + setAddSuccess(false); + } + }); + }; + + const handleAlertModalClose = () => { + setAlertModal({ isOpen: false, txt: '' }); + + if (addSuccess) { + queryClient.invalidateQueries({ queryKey: ['menuSubList'] }); + queryClient.invalidateQueries({ queryKey: ['menuTopList'] }); + onClose(); + } + }; + + const handleRadioCheck = (option: RadioOption, code: string) => { + if (option.id.includes('Y')) { + setAddMenuRequest((prevState) => ({ ...prevState, levels: [...prevState.levels, code] })); + } else { + setAddMenuRequest((prevState) => ({ ...prevState, levels: prevState.levels.filter((item) => item !== code) })); + } + }; + + const handleInsertImg = (e: React.ChangeEvent) => { + const file = e.target.files ? e.target.files[0] : null; + + if (!file) { + return; + } + + const fileReader = new FileReader(); + + fileReader.readAsDataURL(file); + fileReader.onloadend = () => { + const menuIconUrl = fileReader.result?.toString(); + + if (menuIconUrl) { + setAddMenuRequest((prevState) => ({ ...prevState, menuIcon: menuIconUrl })); + e.target.value = ''; + } + fileReader.onloadend = null; + }; + }; + + if (isAuthCodeLoading) { + return null; + } + + return ( + <> + handleAlertModalClose(), + buttonName: 'Close' + }} + > + {alertModal.txt} + +
    + Manage Menu Add +
    +
    + + + + + + + + + + + + + + + + + + + {isTopMenu && ( + + + + + )} + {authCodeList?.map((item, index) => ( + + + + + ))} + +
    Menu Name + setAddMenuRequest((prevState) => ({ ...prevState, menuName: e.target.value }))} + placeholder="Enter a menu name" + /> +
    Menu Link + setAddMenuRequest((prevState) => ({ ...prevState, menuLink: e.target.value }))} + placeholder="Enter a menu link" + /> +
    Menu Folder + setAddMenuRequest((prevState) => ({ ...prevState, menuFolder: e.target.value }))} + placeholder="Enter a menu folder" + /> +
    Menu File + setAddMenuRequest((prevState) => ({ ...prevState, menuFile: e.target.value }))} + placeholder="Enter a menu file" + /> +
    Menu Icon + setAddMenuRequest((prevState) => ({ ...prevState, menuIcon: e.target.value }))} + placeholder="Enter a menu icon" + /> +
    + + handleInsertImg(e)} /> +
    +
    {item.codeName} +
    + handleRadioCheck(option, item.code)} + /> +
    +
    +
    +
    + + +
    + + ); +}; + +export default MenuAddModal; diff --git a/src/pages/manage/menu/components/MenuDetailModal.tsx b/src/pages/manage/menu/components/MenuDetailModal.tsx new file mode 100644 index 0000000..ea6975b --- /dev/null +++ b/src/pages/manage/menu/components/MenuDetailModal.tsx @@ -0,0 +1,282 @@ +import React, { useState, useEffect } from 'react'; +import { useQueryClient } from '@tanstack/react-query'; + +import { toast } from 'react-toastify'; +import { UpdateMenuRequest, useMenuDetailQuery, useUpdateMenuMutation } from '@api/menuAPI'; +import { useSimpleCodeListQuery } from '@api/codeAPI'; +import Radio, { RadioOption } from '@components/ui/radio/Radio'; +import AlertModal from '@components/ui/modal/AlertModal'; +import { isEmpty } from '@utils/objectUtils'; +import Button from '@components/ui/button/Button'; + +interface Props { + id: number; + onClose: () => void; + isTopMenu: boolean; +} + +const MenuDetailModal = ({ id, onClose, isTopMenu }: Props) => { + const [updateSuccess, setUpdateSuccess] = useState(false); + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '' + }); + const [updateMenuRequest, setUpdateMenuRequest] = useState({ + data: { + menuName: '', + menuLink: '', + menuFolder: '', + menuFile: '', + menuIcon: '', + levels: [] + }, + path: id + }); + + const code = process.env.REACT_APP_CODE as string; + + const queryClient = useQueryClient(); + + const { mutate: updateMenu, isPending: isUpdateingMenu } = useUpdateMenuMutation(); + const { data: menuDetail } = useMenuDetailQuery(id); + const { data: authCodeList } = useSimpleCodeListQuery('008'); + + useEffect(() => { + if (menuDetail) { + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { + menuName: menuDetail.menuName, + menuLink: menuDetail.menuLink, + menuFolder: menuDetail.menuFolder, + menuFile: menuDetail.menuFile, + menuIcon: menuDetail.menuIcon, + levels: menuDetail.levels + } + })); + } + }, [menuDetail]); + + const handleProcessClick = () => { + updateMenu(updateMenuRequest, { + onSuccess: () => { + toast.success('A menu has been updated.'); + onClose(); + setUpdateSuccess(true); + queryClient.invalidateQueries({ queryKey: ['menuTopList'] }); + queryClient.invalidateQueries({ queryKey: ['menuSubList'] }); + }, + onError: (error) => { + setAlertModal({ isOpen: true, txt: error.response?.data.errorMessage as string }); + setUpdateSuccess(false); + } + }); + }; + + const handleAlertModalClose = () => { + setAlertModal({ isOpen: false, txt: '' }); + + if (updateSuccess) { + queryClient.invalidateQueries({ queryKey: ['menuPrivacy'] }); + queryClient.invalidateQueries({ queryKey: ['menuDetail'] }); + + if (isTopMenu) { + queryClient.invalidateQueries({ queryKey: ['menuTopList'] }); + } else { + queryClient.invalidateQueries({ queryKey: ['menuSubList'] }); + } + onClose(); + } + }; + + const handleRadioCheck = (option: RadioOption, code: string) => { + if (option.id.includes('Y')) { + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, levels: [...prevState.data.levels, code] } + })); + } else { + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, levels: prevState.data.levels.filter((item) => item !== code) } + })); + } + }; + + const handleInsertImg = (e: React.ChangeEvent) => { + const file = e.target.files ? e.target.files[0] : null; + + if (!file) { + return; + } + + const fileReader = new FileReader(); + + fileReader.readAsDataURL(file); + fileReader.onloadend = () => { + const menuIconUrl = fileReader.result?.toString(); + + if (menuIconUrl) { + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, menuIcon: menuIconUrl } + })); + } + fileReader.onloadend = null; + }; + }; + + return ( + <> + handleAlertModalClose(), + buttonName: 'Close' + }} + > + {alertModal.txt} + +
    + Menu Info +
    +
    + + + + + + + + + + + + + + + + + + + {isTopMenu && ( + + + + + )} + {authCodeList?.map((item, index) => ( + + + + + ))} + +
    Menu Name + + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, menuName: e.target.value } + })) + } + readOnly={isEmpty(updateMenuRequest.data)} + /> +
    Menu Link + + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, menuLink: e.target.value } + })) + } + readOnly={isEmpty(updateMenuRequest.data)} + /> +
    Menu Folder + + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, menuFolder: e.target.value } + })) + } + readOnly={isEmpty(updateMenuRequest.data)} + /> +
    Menu File + + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, menuFile: e.target.value } + })) + } + readOnly={isEmpty(updateMenuRequest.data)} + /> +
    Menu Icon + + setUpdateMenuRequest((prevState) => ({ + ...prevState, + data: { ...prevState.data, menuIcon: e.target.value } + })) + } + readOnly={isEmpty(updateMenuRequest.data)} + placeholder="Enter a menu icon" + /> +
    + + +
    +
    {item.codeName} +
    +
    + handleRadioCheck(option, item.code)} + disabled={isEmpty(updateMenuRequest.data)} + /> +
    +
    +
    +
    +
    + + +
    + + ); +}; + +MenuDetailModal.displayName = 'MenuDisplayModal'; + +export default MenuDetailModal; diff --git a/src/pages/manage/menu/components/SubMenu.tsx b/src/pages/manage/menu/components/SubMenu.tsx new file mode 100644 index 0000000..4e3cf66 --- /dev/null +++ b/src/pages/manage/menu/components/SubMenu.tsx @@ -0,0 +1,392 @@ +import { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react'; +import { Card } from 'react-bootstrap'; +import { useQueryClient } from '@tanstack/react-query'; +import { useNavigate } from 'react-router-dom'; + +import MenuDetailModal from './MenuDetailModal'; +import MenuAddModal from './MenuAddModal'; +import { TopMenuInfo } from '../Menu'; + +import prevImg from '@icons/chevron-left.svg'; +import plusImg from '@icons/ic-plus.svg'; +import deleteImg from '@icons/ic-bin.svg'; +import { toast } from 'react-toastify'; +import { + MenuListResponse, + ReorderMenuRequest, + useDeleteMenuMutation, + useMenuSubListQuery, + useReorderMenuMutation +} from '@api/menuAPI'; +import { useSimpleCodeListQuery } from '@api/codeAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Modal from '@components/ui/modal/Modal'; +import Button from '@components/ui/button/Button'; + +interface Props { + topMenuInfo: TopMenuInfo; + setTopMenuInfo: Dispatch>; +} + +const SubMenu = ({ topMenuInfo, setTopMenuInfo }: Props) => { + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + const [isModalOpen, setIsModalOpen] = useState(false); + const [displayOrderChange, setDisplayOrderChange] = useState(false); + const [menuId, setMenuId] = useState(0); + const [menuList, setMenuList] = useState([]); + const [checkItems, setCheckItems] = useState([]); + const [originalMenuList, setOriginalMenuList] = useState([]); + + const code = process.env.REACT_APP_CODE as string; + + const navigate = useNavigate(); + + // Ref + const draggingMenuIndex = useRef(0); + + // API + const queryClient = useQueryClient(); + const { mutate: deleteMenu, isPending: isDeletingMenu } = useDeleteMenuMutation(); + const { mutate: reorderMenu } = useReorderMenuMutation(); + const { data: subMenuList = [], isLoading: subMenuListLoading } = useMenuSubListQuery(topMenuInfo.id); + const { data: authCodeList = [], isLoading: authCodeLoading } = useSimpleCodeListQuery('008'); + + useEffect(() => { + setMenuList(subMenuList); + }, [subMenuList]); + + // 드래그 시작 시 원래 상태 저장 + useEffect(() => { + setOriginalMenuList([...menuList]); + }, [displayOrderChange]); + + // Prev + const handlePrevClick = () => { + navigate(-1); + setMenuList([]); + setTopMenuInfo({ id: 0, name: '' }); + }; + + // Modal + const handleModalBtnClick = (modalName: string, id: number) => { + if (modalName === 'add') { + setMenuId(0); + setIsModalOpen(true); + } else if (modalName === 'detail') { + setMenuId(id); + setIsModalOpen(true); + } + }; + + // CheckBox Check Event + const handleAllCheckClick = (checked: HTMLInputElement['checked']) => { + if (checked) { + setCheckItems(subMenuList.map((item) => item.id)); + } else { + setCheckItems([]); + } + }; + + const handleSingleCheckClick = (checked: HTMLInputElement['checked'], id: number) => { + if (checked) { + setCheckItems((prevState) => [...prevState, id]); + } else { + setCheckItems(checkItems.filter((item) => item !== id)); + } + }; + + // Drag Event + const handleDragEnter = (idx: number) => { + draggingMenuIndex.current = idx; + }; + + const handleDragEnd = (idx: number) => { + setMenuList((prevState) => { + const newArr = [...prevState]; + + [newArr[idx], newArr[draggingMenuIndex.current]] = [prevState[draggingMenuIndex.current], prevState[idx]]; + + return newArr; + }); + }; + + // Delete Event + const handleDeleteClick = () => { + deleteMenu(checkItems, { + onSuccess: () => { + toast.success('Menu has been deleted'); + setAlertModal({ + isOpen: false, + txt: 'Menu has been deleted', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + queryClient.invalidateQueries({ queryKey: ['menuPrivacy'] }); + queryClient.invalidateQueries({ queryKey: ['menuSubList'] }); + }, + onError: (error) => { + setAlertModal({ + isOpen: false, + txt: error.response?.data.errorMessage as string, + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + } + }); + }; + + // Display Order Event + const handleDisplayOrderChangeProcess = () => { + const displayOrderList: ReorderMenuRequest[] = menuList.map((item, index) => ({ + id: item.id, + displayOrder: index + })); + + reorderMenu(displayOrderList, { + onSuccess: () => { + setAlertModal({ + isOpen: true, + txt: 'The displayOrder has been changed', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + setDisplayOrderChange(false); + queryClient.invalidateQueries({ queryKey: ['menuPrivacy'] }); + queryClient.invalidateQueries({ queryKey: ['menuSubList'] }); + }, + onError: (error) => { + setAlertModal({ + isOpen: true, + txt: error.response?.data.errorMessage as string, + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + } + }); + }; + + // ChangeDisplayOrder 변경 후 cancel 버튼 클릭 시 롤백 + const handleCancel = () => { + setMenuList(originalMenuList); + setDisplayOrderChange(false); + }; + + if (subMenuListLoading && authCodeLoading) { + return null; + } + + return ( + <> + + setAlertModal({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }), + buttonName: 'Close' + }} + {...(alertModal.confirmBtn.isConfirm + ? { confirmBtn: { onClose: () => alertModal.confirmBtn.onConfirmClick(), buttonName: 'Confirm' } } + : {})} + > + {alertModal.txt} + + setIsModalOpen(false)}> + {menuId > 0 ? ( + setIsModalOpen(false)} isTopMenu={false} /> + ) : ( + setIsModalOpen(false)} isTopMenu={false} /> + )} + + + +
    + + + Top Menu ({topMenuInfo.name}) + > + Sub Menu + +
    +
    + +
    +
    +
    +
    + +
    + + + + + + + + + + {authCodeList.map((item, index) => ( + + ))} + + + + {menuList.length !== 0 && + menuList?.map((item, idx) => ( + { + handleDragEnter(idx); + }, + onDragOver: (e) => { + e.preventDefault(); + }, + onDragEnd: () => { + handleDragEnd(idx); + }, + draggable: true + } + : null)} + > + + + + + + + {authCodeList.map((authItem, authIndex) => ( + + ))} + + + ))} + +
    +
    + handleAllCheckClick(e.target.checked)} + checked={ + checkItems.length === subMenuList.length ? (subMenuList.length === 0 ? false : true) : false + } + /> +
    +
    Menu NameMenu LinkMenu FolderMenu FileDisplay Order + {item.codeName} + + +
    +
    + handleSingleCheckClick(e.target.checked, item.id)} + checked={checkItems.includes(item.id) ? true : false} + /> +
    +
    {item.menuName}{item.menuLink}{item.menuFolder}{item.menuFile}{item.displayOrder} + {item.levels[authIndex] === authItem.code ? 'Y' : 'N'} + + +
    +
    +
    + +
    +
    +
    + {displayOrderChange ? ( + <> + + + + ) : ( + + )} +
    +
    +
    +
    +
    +
    + + ); +}; + +export default SubMenu; diff --git a/src/pages/manage/menu/components/TopMenu.tsx b/src/pages/manage/menu/components/TopMenu.tsx new file mode 100644 index 0000000..66e5089 --- /dev/null +++ b/src/pages/manage/menu/components/TopMenu.tsx @@ -0,0 +1,375 @@ +import React, { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react'; +import { Card } from 'react-bootstrap'; +import { useLocation, useNavigate } from 'react-router-dom'; + +import { TopMenuInfo } from '../Menu'; + +import plusImg from '@icons/ic-plus.svg'; +import deleteImg from '@icons/ic-bin.svg'; +import { useQueryClient } from '@tanstack/react-query'; +import { toast } from 'react-toastify'; +import { + MenuListResponse, + ReorderMenuRequest, + useDeleteMenuMutation, + useMenuTopListQuery, + useReorderMenuMutation +} from '@api/menuAPI'; +import { useSimpleCodeListQuery } from '@api/codeAPI'; +import AlertModal from '@components/ui/modal/AlertModal'; +import Modal from '@components/ui/modal/Modal'; +import MenuDetailModal from './MenuDetailModal'; +import MenuAddModal from './MenuAddModal'; +import Button from '@components/ui/button/Button'; + +interface Props { + setTopId: Dispatch>; +} + +const TopMenu = ({ setTopId }: Props) => { + const [alertModal, setAlertModal] = useState({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + + const [isModalOpen, setIsModalOpen] = useState(false); + const [menuId, setMenuId] = useState(0); + const [displayOrderChange, setDisplayOrderChange] = useState(false); + const [menuList, setMenuList] = useState([]); + const [checkItems, setCheckItems] = useState([]); + + const code = process.env.REACT_APP_CODE as string; + + const draggingMenuIndex = useRef(0); + + const queryClient = useQueryClient(); + + const { data: topMenuList = [], isLoading: topMenuListLoading } = useMenuTopListQuery(); + const { data: authCodeList = [], isLoading: authCodeLoading } = useSimpleCodeListQuery('008'); + const { mutate: reorderMenu } = useReorderMenuMutation(); + const { mutate: deleteMenu, isPending: isDeletingMenu } = useDeleteMenuMutation(); + + const navigate = useNavigate(); + const location = useLocation(); + + useEffect(() => { + if (topMenuList.length > 0) { + setMenuList(topMenuList); + } + }, [topMenuList]); + + // Modal event + const handleModalBtnClick = (modalName: string, id?: number) => { + if (modalName === 'add') { + setMenuId(0); + setIsModalOpen(true); + } else if (modalName === 'detail' && id) { + setMenuId(id); + setIsModalOpen(true); + } + }; + + // CheckBox Check Event + const handleAllCheckClick = (checked: HTMLInputElement['checked']) => { + if (checked) { + setCheckItems(topMenuList.map((item) => item.id)); + } else { + setCheckItems([]); + } + }; + + const handleSingleCheckClick = (checked: HTMLInputElement['checked'], id: number) => { + if (checked) { + setCheckItems((prevState) => [...prevState, id]); + } else { + setCheckItems(checkItems.filter((item) => item !== id)); + } + }; + + // Drag Event + const handleDragEnter = (idx: number) => { + draggingMenuIndex.current = idx; + }; + + const handleDragEnd = (idx: number) => { + setMenuList((prevState) => { + const newArr = [...prevState]; + + [newArr[idx], newArr[draggingMenuIndex.current]] = [prevState[draggingMenuIndex.current], prevState[idx]]; + + return newArr; + }); + }; + + // Sub Menu Event + const handleSubMenuClick = (e: React.MouseEvent) => { + const menuId: number = parseInt(e.currentTarget.value); + const menuName: string = menuList.find((item) => item.id === menuId)?.menuName ?? ''; + + const searchParams = new URLSearchParams(location.search); + searchParams.set('id', String(menuId)); + searchParams.set('name', String(menuName)); + + navigate({ + pathname: location.pathname, + search: `?${searchParams.toString()}` + }); + + setTopId({ id: menuId, name: menuName }); + }; + + // Delete Event + const handleDeleteClick = () => { + deleteMenu(checkItems, { + onSuccess: () => { + toast.success('Menu has been deleted'); + setAlertModal({ + isOpen: false, + txt: 'Menu has been deleted', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => null + } + }); + + queryClient.invalidateQueries({ queryKey: ['menuPrivacy'] }); + queryClient.invalidateQueries({ queryKey: ['menuTopList'] }); + } + }); + }; + + // Display Order Event + const handleDisplayOrderChangeProcess = () => { + const displayOrderList: ReorderMenuRequest[] = menuList.map((item, index) => ({ + id: item.id, + displayOrder: index + })); + + reorderMenu(displayOrderList, { + onSuccess: () => { + setAlertModal({ + isOpen: true, + txt: 'The displayOrder has been changed', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + setDisplayOrderChange(false); + queryClient.invalidateQueries({ queryKey: ['menuPrivacy'] }); + queryClient.invalidateQueries({ queryKey: ['menuTopList'] }); + }, + onError: (error) => { + setAlertModal({ + isOpen: true, + txt: error.response?.data.errorMessage as string, + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }); + } + }); + }; + + // ChangeDisplayOrder 변경 후 cancel 버튼 클릭 시 롤백 + const handleCancel = () => { + setMenuList(topMenuList); + setDisplayOrderChange(false); + }; + + if (topMenuListLoading && authCodeLoading) { + return null; + } + + return ( + <> + + setAlertModal({ + isOpen: false, + txt: '', + confirmBtn: { + isConfirm: false, + onConfirmClick: () => { + return; + } + } + }), + buttonName: 'Close' + }} + {...(alertModal.confirmBtn.isConfirm + ? { confirmBtn: { onClose: () => alertModal.confirmBtn.onConfirmClick(), buttonName: 'Confirm' } } + : {})} + > + {alertModal.txt} + + setIsModalOpen(false)}> + {menuId > 0 ? ( + setIsModalOpen(false)} isTopMenu={true} /> + ) : ( + setIsModalOpen(false)} isTopMenu={true} /> + )} + + + +
    + + Menu List + > + Top Menu + +
    + +
    +
    +
    + +
    + + + + + + + + + + {authCodeList.map((item, index) => ( + + ))} + + + + {menuList.length === 0 + ? null + : menuList.map((item, idx) => ( + { + handleDragEnter(idx); + }, + onDragOver: (e) => { + e.preventDefault(); + }, + onDragEnd: () => { + handleDragEnd(idx); + }, + draggable: true + } + : null)} + > + + + + + + + {authCodeList.map((authItem, authIndex) => ( + + ))} + + + ))} + +
    +
    + handleAllCheckClick(e.target.checked)} + checked={checkItems.length === topMenuList.length ? true : false} + /> +
    +
    Menu NameMenu LinkMenu FolderMenu FileDisplay Order + {item.codeName} + + +
    +
    + handleSingleCheckClick(e.target.checked, item.id)} + checked={checkItems.includes(item.id) ? true : false} + /> +
    +
    {item.menuName}{item.menuLink}{item.menuFolder}{item.menuFile}{item.displayOrder} + {item.levels[authIndex] === authItem.code ? 'Y' : 'N'} + + + +
    +
    +
    + +
    +
    +
    + {displayOrderChange ? ( + <> + + + + ) : ( + + )} +
    +
    +
    +
    +
    +
    + + ); +}; + +export default TopMenu; diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts new file mode 100644 index 0000000..6431bc5 --- /dev/null +++ b/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/redux/auth.ts b/src/redux/auth.ts new file mode 100644 index 0000000..ff55de3 --- /dev/null +++ b/src/redux/auth.ts @@ -0,0 +1,55 @@ +import { createSlice } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; + +interface UserData { + auth: string; + userNo: number; + userId: string; + userName: string; + angkorUserId: string | null; + accessToken: string; +} + +export interface AuthState { + isAuthenticated: boolean; + userData: UserData | null; +} + +const initialState: AuthState = { + isAuthenticated: false, + userData: null +}; + +export const authSlice = createSlice({ + name: 'auth', + initialState, + reducers: { + loginSuccess: (state, action: PayloadAction) => { + state.userData = action.payload; + }, + integrationSuccess: (state, action: PayloadAction) => { + if (state.userData) { + state.userData.angkorUserId = action.payload; + } + }, + loginAuthenticate: (state, action: PayloadAction) => { + state.isAuthenticated = true; + if (state.userData) { + state.userData.accessToken = action.payload; + } + }, + tokenRefresh: (state, action: PayloadAction) => { + if (state.userData) { + state.userData.accessToken = action.payload; + } + }, + logoutSuccess: (state) => { + state.userData = null; + state.isAuthenticated = false; + } + } +}); + +export const { loginSuccess, integrationSuccess, loginAuthenticate, tokenRefresh, logoutSuccess } = authSlice.actions; + +export default authSlice.reducer; diff --git a/src/redux/index.ts b/src/redux/index.ts new file mode 100644 index 0000000..e4a3d03 --- /dev/null +++ b/src/redux/index.ts @@ -0,0 +1,31 @@ +import { combineReducers, configureStore } from '@reduxjs/toolkit'; +import { persistStore, persistReducer, FLUSH, REHYDRATE, PAUSE, PURGE, REGISTER, PERSIST } from 'redux-persist'; +import storageSession from 'redux-persist/lib/storage/session'; + +import authReducer from './auth'; + +const persistConfig = { + key: 'root', + storage: storageSession, + whitelist: ['auth'] +}; + +const rootReducer = combineReducers({ + auth: authReducer +}); + +const persistedReducer = persistReducer(persistConfig, rootReducer); + +export const store = configureStore({ + reducer: persistedReducer, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware({ + serializableCheck: { + ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER] + } + }) +}); + +export type RootState = ReturnType; + +export const persistor = persistStore(store); diff --git a/src/reportWebVitals.ts b/src/reportWebVitals.ts new file mode 100644 index 0000000..49a2a16 --- /dev/null +++ b/src/reportWebVitals.ts @@ -0,0 +1,15 @@ +import { ReportHandler } from 'web-vitals'; + +const reportWebVitals = (onPerfEntry?: ReportHandler) => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/src/services/api/adminAPI.ts b/src/services/api/adminAPI.ts new file mode 100644 index 0000000..0ad3510 --- /dev/null +++ b/src/services/api/adminAPI.ts @@ -0,0 +1,196 @@ +import { UseMutationResult, UseQueryResult, useMutation, useQuery, keepPreviousData } from '@tanstack/react-query'; +import { AxiosError } from 'axios'; +import { Page } from '../commonResponse/PageResponse'; +import { customAxios, ErrorResponse } from '@lib/customAxios'; + +// ------------------------------ GET /admin/list ------------------------------ + +export interface AdminListRequest { + page: number; + size: number; + sort: string[]; + searchKeyword: string; +} + +export interface AdminListResponse { + id: number; + userId: string; + name: string; + auth: string; + phone: string; + email: string; + grp: string; + groupName: string; +} + +const adminList = (request: AdminListRequest): Promise> => { + return customAxios.get>('admin/list', { params: request }).then((res) => res.data); +}; + +export const useAdminListQuery = (request: AdminListRequest): UseQueryResult, Error> => { + return useQuery, Error>({ + queryKey: ['adminList', request], + queryFn: () => adminList(request), + staleTime: Infinity, + gcTime: 1000 * 60 * 60, + refetchOnWindowFocus: false, + refetchOnMount: false, + placeholderData: keepPreviousData + }); +}; +// ------------------------------ GET /admin/list ------------------------------ + +// ------------------------------ GET /admin/{id} ------------------------------ + +export interface AdminInfoResponse { + id: number; + email: string; + name: string; + phone: string; + grp: string; + groupName: string; + auth: string; + mngrId: string; + userId: string; +} + +const adminInfo = (id: number): Promise => { + return customAxios.get(`admin/${id}`).then((res) => res.data); +}; + +export const useAdminInfoQuery = (id: number): UseQueryResult => { + return useQuery({ + queryKey: ['adminInfo', id], + queryFn: () => adminInfo(id), + staleTime: Infinity, + gcTime: 1000 * 60 * 60, + refetchOnWindowFocus: false, + refetchOnMount: false, + enabled: id !== 0 + }); +}; +// ------------------------------ GET /admin/{id} ------------------------------ + +// ------------------------------ POST /admin ------------------------------ +export interface AddAdminRequest { + email: string; + name: string; + phone: string; + grp: string; + auth: string; +} + +const addAdmin = (request: AddAdminRequest): Promise => { + return customAxios.post('admin', request); +}; + +export const useAddAdminMutation = (): UseMutationResult, AddAdminRequest, unknown> => { + return useMutation, AddAdminRequest, unknown>({ + mutationFn: addAdmin + }); +}; +// ------------------------------ POST /admin ------------------------------ + +// ------------------------------ PATCH /admin ------------------------------ +export interface UpdateAdminRequest { + email: string; + name: string; + phone: string; + grp: string; + auth: string; + id: number; +} + +const updateAdmin = (request: UpdateAdminRequest): Promise => { + return customAxios.patch('admin', request); +}; + +export const useUpdateAdminMutation = (): UseMutationResult< + void, + AxiosError, + UpdateAdminRequest, + unknown +> => { + return useMutation, UpdateAdminRequest, unknown>({ + mutationFn: updateAdmin + }); +}; +// ------------------------------ PATCH /admin/{id} ------------------------------ + +// ------------------------------ DELETE /admin ------------------------------ +interface deleteAdminRequest { + id: number[]; +} + +const deleteAdmin = (request: deleteAdminRequest): Promise => { + return customAxios.delete('admin', { data: request }); +}; + +export const useDeleteAdminMutation = (): UseMutationResult< + void, + AxiosError, + deleteAdminRequest, + unknown +> => { + return useMutation, deleteAdminRequest, unknown>({ + mutationFn: deleteAdmin + }); +}; +// ------------------------------ DELETE /admin ------------------------------ + +// ------------------------------ POST /admin/check/password ------------------------------ +interface PasswordRequest { + userId: string; + password?: string; + email?: string; +} + +const checkPassword = (request: PasswordRequest): Promise => { + return customAxios.post('admin/check/password', request); +}; + +export const useCheckPasswordMutation = (): UseMutationResult< + void, + AxiosError, + PasswordRequest, + unknown +> => { + return useMutation, PasswordRequest, unknown>({ + mutationFn: checkPassword + }); +}; +// ------------------------------ POST /admin/check/password ------------------------------ + +// ------------------------------ PATCH /admin/update/password ------------------------------ +const updatePassword = (request: PasswordRequest): Promise => { + return customAxios.patch('admin/update/password', request); +}; + +export const useUpdatePasswordMutation = (): UseMutationResult< + void, + AxiosError, + PasswordRequest, + unknown +> => { + return useMutation, PasswordRequest, unknown>({ + mutationFn: updatePassword + }); +}; +// ------------------------------ PATCH /admin/update/password ------------------------------ + +// ------------------------------ PATCH /admin/reset/password ------------------------------ +const resetPassword = (request: PasswordRequest): Promise => { + return customAxios.patch('admin/reset/password', request); +}; + +export const useResetPasswordMutation = (): UseMutationResult< + void, + AxiosError, + PasswordRequest, + unknown +> => { + return useMutation, PasswordRequest, unknown>({ + mutationFn: resetPassword + }); +}; +// ------------------------------ PATCH /admin/reset/password ------------------------------ diff --git a/src/services/api/adminGroupAPI.ts b/src/services/api/adminGroupAPI.ts new file mode 100644 index 0000000..e8957ac --- /dev/null +++ b/src/services/api/adminGroupAPI.ts @@ -0,0 +1,142 @@ +import { UseMutationResult, UseQueryResult, useMutation, useQuery } from '@tanstack/react-query'; +import { AxiosError } from 'axios'; +import { Page } from '../commonResponse/PageResponse'; +import { customAxios, ErrorResponse } from '@lib/customAxios'; + +// ------------------------------ GET /admin/group/list ------------------------------ +export interface AdminGroupListRequest { + page: number; + size: number; + sort: string[]; + searchKeyword: string; +} + +export interface AdminGroupListResponse { + groupCd: string; + groupName: string; + members: number; +} + +const adminGroupList = (request: AdminGroupListRequest): Promise> => { + return customAxios.get>('admin/group/list', { params: request }).then((res) => res.data); +}; + +export const useAdminGroupListQuery = ( + request: AdminGroupListRequest +): UseQueryResult, Error> => { + return useQuery, Error>({ + queryKey: ['adminGroupList', request], + queryFn: () => adminGroupList(request), + refetchOnMount: true, + refetchOnWindowFocus: true + }); +}; +// ------------------------------ GET /admin/group/list ------------------------------ + +// ------------------------------ GET /admin/group/{id} ------------------------------ +interface AdminGroupInfoResponse { + groupCd: string; + groupName: string; + members: number; + createDt: string; +} + +const adminGroupInfo = (id: string): Promise => { + return customAxios.get(`admin/group/${id}`).then((res) => res.data); +}; + +export const useAdminGroupInfoQuery = (id: string): UseQueryResult => { + return useQuery({ + queryKey: ['adminGroupInfo', id], + queryFn: () => adminGroupInfo(id), + refetchOnMount: false, + refetchOnWindowFocus: false, + staleTime: 1000 * 60 * 5, + enabled: id !== '' + }); +}; +// ------------------------------ GET /admin/group/{id} ------------------------------ + +// ------------------------------ GET /admin/group/code ------------------------------ +interface AdminGroupCodeResponse { + groupCd: string; + groupName: string; +} + +const adminGroupCode = (): Promise => { + return customAxios.get('admin/group/code').then((res) => res.data); +}; + +export const useAdminGroupCodeQuery = (): UseQueryResult => { + return useQuery({ + queryKey: ['adminGroupCode'], + queryFn: adminGroupCode, + refetchOnMount: false, + refetchOnWindowFocus: false + }); +}; +// ------------------------------ GET /admin/group/code ------------------------------ + +// ------------------------------ POST /admin/group ------------------------------ +export interface AddAdminGroupRequest { + groupName: string; +} + +const addAdminGroup = (request: AddAdminGroupRequest): Promise => { + return customAxios.post('admin/group', request); +}; + +export const useAddAdminGroupMutation = (): UseMutationResult< + void, + AxiosError, + AddAdminGroupRequest, + unknown +> => { + return useMutation, AddAdminGroupRequest, unknown>({ + mutationFn: addAdminGroup + }); +}; +// ------------------------------ POST /admin/group ------------------------------ + +// ------------------------------ PATCH /admin/group ------------------------------ +export interface UpdateAdminGroupRequest { + groupName: string; + groupCd: string; +} + +const updateAdminGroup = (request: UpdateAdminGroupRequest): Promise => { + return customAxios.patch('admin/group', request); +}; + +export const useUpdateAdminGroupMutation = (): UseMutationResult< + void, + AxiosError, + UpdateAdminGroupRequest, + unknown +> => { + return useMutation, UpdateAdminGroupRequest, unknown>({ + mutationFn: updateAdminGroup + }); +}; +// ------------------------------ PATCH /admin/group ------------------------------ + +// ------------------------------ DELETE /admin/group ------------------------------ +interface DeleteAdminGroupRequest { + groupCd: string[]; +} + +const deleteAdminGroup = (request: DeleteAdminGroupRequest): Promise => { + return customAxios.delete('admin/group', { data: request }); +}; + +export const useDeleteAdminGroupMutation = (): UseMutationResult< + void, + AxiosError, + DeleteAdminGroupRequest, + unknown +> => { + return useMutation, DeleteAdminGroupRequest, unknown>({ + mutationFn: deleteAdminGroup + }); +}; +// ------------------------------ DELETE /admin/group ------------------------------ diff --git a/src/services/api/authAPI.ts b/src/services/api/authAPI.ts new file mode 100644 index 0000000..a8d213d --- /dev/null +++ b/src/services/api/authAPI.ts @@ -0,0 +1,126 @@ +import { customAxios, ErrorResponse } from '@lib/customAxios'; +import { UseMutationResult, UseQueryResult, useMutation, useQuery } from '@tanstack/react-query'; +import { AxiosError } from 'axios'; + +// ------------------------------ POST /login ------------------------------ +interface LoginRequest { + id: string; + password: string; +} + +interface LoginResponse { + userNo: number; + userId: string; + userName: string; + angkorUserId: string; + auth: string; + accessToken: string; +} + +const login = (request: LoginRequest): Promise => { + return customAxios.post('login', request).then((res) => res.data); +}; + +export const useLoginMutation = (): UseMutationResult< + LoginResponse, + AxiosError, + LoginRequest, + unknown +> => { + return useMutation, LoginRequest, unknown>({ + mutationFn: login + }); +}; +// ------------------------------ POST /login ------------------------------ + +// ------------------------------ GET /check/{id} ------------------------------ +interface CheckIdRequest { + angkorId: string; +} + +const checkId = (request: CheckIdRequest): Promise => { + return customAxios.get(`check/${request.angkorId}`); +}; + +export const useCheckIdMutation = (): UseMutationResult, CheckIdRequest, unknown> => { + return useMutation, CheckIdRequest, unknown>({ + mutationFn: checkId + }); +}; +// ------------------------------ GET /check/{id} ------------------------------ + +// ------------------------------ POST /auth/code ------------------------------ +interface AuthCodeRequest { + id: string; +} + +interface AuthCodeResponse { + userId: string; + tokenType: string; + authKey: string; +} + +const authCode = (request: AuthCodeRequest): Promise => { + return customAxios.post('auth/code', null, { params: request }).then((res) => res.data); +}; + +export const useAuthCodeMutation = (): UseMutationResult< + AuthCodeResponse, + AxiosError, + AuthCodeRequest, + unknown +> => { + return useMutation, AuthCodeRequest, unknown>({ + mutationFn: authCode + }); +}; +// ------------------------------ POST /auth/code ------------------------------ + +// ------------------------------ GET /auth/check ------------------------------ +interface AuthCheckRequest { + authKey: string; + authNumber: string; + userId: string; +} + +const authCheck = (request: AuthCheckRequest): Promise => { + return customAxios.get('auth/check', { params: request }).then((res) => res.data); +}; + +export const useAuthCheckMutation = (): UseMutationResult< + LoginResponse, + AxiosError, + AuthCheckRequest, + unknown +> => { + return useMutation, AuthCheckRequest, unknown>({ + mutationFn: authCheck + }); +}; +// ------------------------------ GET /auth/check ------------------------------ + +// ------------------------------ GET /info ------------------------------ +export interface InfoResponse { + adminId: string; + name: string; + email: string; + phone: string; + grp: string; + groupName: string; + auth: string; + angkorUserId: string; +} + +const info = (): Promise => { + return customAxios.get('info').then((res) => res.data); +}; + +export const useInfoQuery = (): UseQueryResult => { + return useQuery({ + queryKey: ['info'], + queryFn: () => info(), + refetchOnMount: false, + refetchOnWindowFocus: false + }); +}; +// ------------------------------ GET /info ------------------------------ diff --git a/src/services/api/codeAPI.ts b/src/services/api/codeAPI.ts new file mode 100644 index 0000000..8035833 --- /dev/null +++ b/src/services/api/codeAPI.ts @@ -0,0 +1,176 @@ +import { UseMutationResult, UseQueryResult, keepPreviousData, useMutation, useQuery } from '@tanstack/react-query'; +import { AxiosError } from 'axios'; +import { Page } from '../commonResponse/PageResponse'; +import { customAxios, ErrorResponse } from '@lib/customAxios'; + +// ------------------------------ GET /code/major/list ------------------------------ +export interface MajorCodeListRequest { + page: number; + size: number; + sort: string[]; + searchKeyword: string; +} + +export interface MajorCodeListResponse { + major: string; + majorName: string; +} + +const majorCodeList = (request: MajorCodeListRequest): Promise> => { + return customAxios.get(`code/major/list`, { params: request }).then((res) => res.data); +}; + +export const useMajorCodeListQuery = ( + request: MajorCodeListRequest +): UseQueryResult, Error> => { + return useQuery, Error>({ + queryKey: ['majorCodeList', request], + queryFn: () => majorCodeList(request), + refetchOnMount: false, + refetchOnWindowFocus: false, + placeholderData: keepPreviousData + }); +}; +// ------------------------------ GET /code/major/list ------------------------------ + +// ------------------------------ GET /code/{major}/list ------------------------------ + +interface CodeListParams { + page: number; + size: number; + sort: string[]; + searchKeyword: string; +} +export interface CodeListRequest { + path: string; + params: CodeListParams; +} + +export interface CodeListResponse { + code: string; + codeEn: string; + codeKr: string; + etc: string; +} + +const codeList = (request: CodeListRequest): Promise> => { + return customAxios.get(`code/${request.path}/list`, { params: request.params }).then((res) => res.data); +}; + +export const useCodeListQuery = (request: CodeListRequest): UseQueryResult, Error> => { + return useQuery, Error>({ + queryKey: ['codeList', request], + queryFn: () => codeList(request), + refetchOnMount: false, + refetchOnWindowFocus: false, + placeholderData: keepPreviousData, + enabled: request.path !== '' + }); +}; +// ------------------------------ GET /code/{major}/list ------------------------------ + +// ------------------------------ GET /code/{major}/list/simple ------------------------------ +interface SimpleCodeListResponse { + code: string; + codeName: string; +} + +const simpleCodeList = (request: string): Promise => { + return customAxios.get('code/' + request + '/list/simple').then((res) => res.data); +}; + +export const useSimpleCodeListQuery = (request: string): UseQueryResult => { + return useQuery({ + queryKey: ['simpleCodeList', request], + queryFn: () => simpleCodeList(request), + refetchOnMount: false, + refetchOnWindowFocus: false + }); +}; +// ------------------------------ GET /code/{major}/list/simple ------------------------------ + +// ------------------------------ POST /code ------------------------------ +export interface AddCodeRequest { + major?: string; + majorName?: string; + codeEn: string; + codeKr: string; + etc: string; +} + +const addCode = (request: AddCodeRequest): Promise => { + return customAxios.post('code', request); +}; + +export const useAddCodeMutation = (): UseMutationResult, AddCodeRequest, unknown> => { + return useMutation, AddCodeRequest, unknown>({ + mutationFn: addCode + }); +}; +// ------------------------------ POST /code ------------------------------ + +// ------------------------------ PATCH /code/{code} ------------------------------ +interface UpdateCodeData { + codeEn: string; + codeKr: string; + etc: string; +} + +export interface UpdateCodeRequest { + data: UpdateCodeData; + path: string; +} + +const updateCode = (request: UpdateCodeRequest): Promise => { + return customAxios.patch(`code/${request.path}`, request.data); +}; + +export const useUpdateCodeMutation = (): UseMutationResult< + void, + AxiosError, + UpdateCodeRequest, + unknown +> => { + return useMutation, UpdateCodeRequest, unknown>({ + mutationFn: updateCode + }); +}; +// ------------------------------ PATCH /code/{code} ------------------------------ + +// ------------------------------ PATCH /code/{major}/name ------------------------------ +interface UpdateMajorNameData { + codeValue: string; +} + +export interface UpdateMajorNameRequest { + data: UpdateMajorNameData; + path: string; +} + +const updateMajorName = (request: UpdateMajorNameRequest): Promise => { + return customAxios.patch(`code/${request.path}/name`, request.data); +}; + +export const useUpdateMajorNameMutation = (): UseMutationResult< + void, + AxiosError, + UpdateMajorNameRequest, + unknown +> => { + return useMutation, UpdateMajorNameRequest, unknown>({ + mutationFn: updateMajorName + }); +}; +// ------------------------------ PATCH /code/{major}/name ------------------------------ + +// ------------------------------ DELETE /code/{code} ------------------------------ +const deleteCode = (path: string): Promise => { + return customAxios.delete(`code/${path}`); +}; + +export const useDeleteCodeMutation = (): UseMutationResult, string, unknown> => { + return useMutation, string, unknown>({ + mutationFn: deleteCode + }); +}; +// ------------------------------ DELETE /code/{code} ------------------------------ diff --git a/src/services/api/emoticonAPI.ts b/src/services/api/emoticonAPI.ts new file mode 100644 index 0000000..b30b06d --- /dev/null +++ b/src/services/api/emoticonAPI.ts @@ -0,0 +1,319 @@ +import { AxiosError } from 'axios'; +import { useMutation, UseMutationResult, useQuery, UseQueryResult } from '@tanstack/react-query'; +import { Page } from '../commonResponse/PageResponse'; +import { customAxios } from '@lib/customAxios'; +import { ErrorResponse } from 'react-router-dom'; + +// ------------------------------ GET /emoticon/list ------------------------------ + +export interface EmoticonListRequest { + page: number; + size: number; + sort: string[]; + emotiType: string; +} + +export interface EmoticonListResponse { + guid: number; + emotiName: string; + likesCnt: string; + price: string; + regDt: string; + status: string; + absFilePath: string; + isDefault: string; +} + +const emoticonList = async (params: EmoticonListRequest): Promise> => { + const res = await customAxios.get>('emoticon/list', { params }); + return res.data; +}; + +export const useEmoticonListQuery = ( + params: EmoticonListRequest +): UseQueryResult, AxiosError> => { + return useQuery, AxiosError>({ + queryKey: ['emoticonList', params], + queryFn: () => emoticonList(params), + refetchOnMount: false, + refetchOnWindowFocus: false, + staleTime: 1000 * 60 * 5 + }); +}; + +// ------------------------------ GET /emoticon/list ------------------------------ + +// ------------------------------ GET /emoticon/{guid} ------------------------------ + +export interface FileDetail { + id?: number; + guid?: number; + dispOrd: number; + absFilePath: string; + fileSize?: string; + updateDt?: string; +} + +interface EmoticonDetailsResponse { + emoticonName: string; + status: number; + detailFile: FileDetail[]; + shortCutFile: FileDetail[]; + isDefault: string; +} + +const emoticonDetails = (request: number): Promise => { + return customAxios.get(`emoticon/${request}`).then((res) => { + return res.data; + }); +}; + +export const useEmoticonDetailsQuery = ( + request: number +): UseQueryResult> => { + return useQuery>({ + queryKey: ['emoticonDetails', request], + queryFn: () => emoticonDetails(request), + refetchOnMount: false, + refetchOnWindowFocus: false, + staleTime: 1000 * 60 * 5 + }); +}; + +// ------------------------------ GET /emoticon/{guid} ------------------------------ + +// ------------------------------ GET /emoticon/{guid}/owner ------------------------------ + +export interface EmoticonOwnerListRequest { + page: number; + size: number; + sort: string[]; + searchKeyword: string; + status: string; +} + +interface EmoticonOwnerListResponse { + userNo: number; + angkorId: string; + userId: string; + expiredDate: number; + saveDt: string; + status: string; +} + +const emoticonOwnerList = ( + guid: number, + params: EmoticonOwnerListRequest +): Promise> => { + return customAxios.get>(`emoticon/${guid}/owner`, { params }).then((res) => { + return res.data; + }); +}; + +export const useEmoticonOwnerListQuery = ( + guid: number, + params: EmoticonOwnerListRequest +): UseQueryResult, AxiosError> => { + return useQuery, AxiosError>({ + queryKey: ['emoticonOwnerList', guid, params], + queryFn: () => emoticonOwnerList(guid, params), + refetchOnMount: false, + refetchOnWindowFocus: false, + staleTime: 1000 * 60 * 5 + }); +}; + +// ------------------------------ GET /emoticon/{guid}/owner ------------------------------ + +// ------------------------------ GET /emoticon/{guid}/non-owner ------------------------------ + +export interface EmoticonNonOwnerListRequest { + page: number; + size: number; + sort: string[]; + searchKeyword: string; +} + +interface EmoticonOwnerListResponse { + userNo: number; + angkorId: string; + userId: string; +} + +const emoticonNonOwnerList = ( + guid: number, + params: EmoticonNonOwnerListRequest +): Promise> => { + return customAxios.get>(`emoticon/${guid}/non-owner`, { params }).then((res) => { + return res.data; + }); +}; + +export const useEmoticonNonOwnerListQuery = ( + guid: number, + params: EmoticonNonOwnerListRequest +): UseQueryResult, AxiosError> => { + return useQuery, AxiosError>({ + queryKey: ['emoticonNonOwnerList', guid, params], + queryFn: () => emoticonNonOwnerList(guid, params), + refetchOnMount: false, + refetchOnWindowFocus: false, + staleTime: 1000 * 60 * 5 + }); +}; + +// ------------------------------ GET /emoticon/{guid}/non-owner ------------------------------ + +// ------------------------------ POST /emoticon ------------------------------ +export interface EmoticonPostJsonData { + emotiName: string; + status: string; + isDefault: string; +} +export interface EmoticonPostFormData { + files: (File | null)[]; + shortCutFiles: (File | null)[]; +} + +const postEmoticon = (request: FormData): Promise => { + return customAxios.post('emoticon', request, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); +}; + +export const usePostEmoticonMutation = (): UseMutationResult, FormData, unknown> => { + return useMutation, FormData, unknown>({ + mutationFn: postEmoticon + }); +}; + +// ------------------------------ POST /emoticon ------------------------------ + +// ------------------------------ POST /emoticon/admin/gift ------------------------------ +interface AdminGiftEmoticonRequest { + guid: number; + angkorId: string[]; + expiredDate: number; + status: string; +} + +const postAdminGiftEmoticon = (request: AdminGiftEmoticonRequest): Promise => { + return customAxios.post('emoticon/admin/gift', request); +}; + +export const usePostAdminGiftEmoticonMutation = (): UseMutationResult< + void, + AxiosError, + AdminGiftEmoticonRequest, + unknown +> => { + return useMutation, AdminGiftEmoticonRequest, unknown>({ + mutationFn: postAdminGiftEmoticon + }); +}; + +// ------------------------------ POST /emoticon/admin/gift ------------------------------ + +// ------------------------------ PATCH /emoticon ------------------------------ +export interface ReorderFile { + id: number; + dispOrd: number; +} + +interface EmoticonRequest { + guid: number; + emotiName: string; + status: string; + isDefault: string; + reorderFiles: ReorderFile[]; +} + +const updateEmoticon = (request: EmoticonRequest): Promise => { + return customAxios.patch('emoticon', request); +}; + +export const useUpdateEmoticonMutation = (): UseMutationResult< + void, + AxiosError, + EmoticonRequest, + unknown +> => { + return useMutation, EmoticonRequest, unknown>({ + mutationFn: updateEmoticon + }); +}; +// ------------------------------ PATCH /emoticon ------------------------------ + +// ------------------------------ PATCH /emoticon/{guid}/{angkorId} ------------------------------ +interface ExpiredDateRequest { + guid: number; + angkorId: string; + expiredDate: number; +} + +const updateExpiredDate = (request: ExpiredDateRequest): Promise => { + return customAxios.patch(`emoticon/${request.guid}/${request.angkorId}`, { expiredDate: request.expiredDate }); +}; + +export const useUpdateExpiredDateMutation = (): UseMutationResult< + void, + AxiosError, + ExpiredDateRequest, + unknown +> => { + return useMutation, ExpiredDateRequest, unknown>({ + mutationFn: updateExpiredDate + }); +}; +// ------------------------------ PATCH /emoticon/{guid}/{angkorId} ------------------------------ + +// ------------------------------ PATCH /emoticon/file ------------------------------ + +export interface EmoticonPatchJsonData { + guid: number; + dispOrd: number; +} + +const updateEmoticonFile = (request: FormData): Promise => { + return customAxios.patch('emoticon/file', request, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); +}; + +export const useUpdateEmoticonFileMutation = (): UseMutationResult< + void, + AxiosError, + FormData, + unknown +> => { + return useMutation, FormData, unknown>({ + mutationFn: updateEmoticonFile + }); +}; +// ------------------------------ PATCH /emoticon/file ------------------------------ + +// ------------------------------ DELETE /emoticon/{guid}/{angkorId} ------------------------------ +interface DeleteEmoticonOwnershipRequest { + guid: number; + angkorId: string; +} + +const deleteEmoticonOwnership = (request: DeleteEmoticonOwnershipRequest): Promise => { + return customAxios.delete(`emoticon/${request.guid}/${request.angkorId}`); +}; + +export const useDeleteEmoticonOwnershipMutation = (): UseMutationResult< + void, + AxiosError, + DeleteEmoticonOwnershipRequest, + unknown +> => { + return useMutation, DeleteEmoticonOwnershipRequest, unknown>({ + mutationFn: deleteEmoticonOwnership + }); +}; +// ------------------------------ DELETE /emoticon/{guid}/{angkorId} ------------------------------ diff --git a/src/services/api/menuAPI.ts b/src/services/api/menuAPI.ts new file mode 100644 index 0000000..a886e05 --- /dev/null +++ b/src/services/api/menuAPI.ts @@ -0,0 +1,184 @@ +import { customAxios, ErrorResponse } from '@lib/customAxios'; +import { UseMutationResult, UseQueryResult, useMutation, useQuery } from '@tanstack/react-query'; +import { AxiosError } from 'axios'; +// ------------------------------ GET /menu/privacy ------------------------------ +interface MenuPrivacyRequest { + level: string; +} + +export interface MenuPrivacyResponse { + id: number; + parentId: number; + menuName: string; + menuLink: string; + menuFolder: string; + menuFile: string; + menuIcon: string; + displayOrder: 0; + depth: 0; + children: MenuPrivacyResponse[]; +} + +const menuPrivacy = (request: MenuPrivacyRequest): Promise> => { + return customAxios.get(`menu/privacy`, { params: request }).then((res) => res.data); +}; + +export const useMenuPrivacyQuery = ( + request: MenuPrivacyRequest +): UseQueryResult, AxiosError> => { + return useQuery, AxiosError>({ + queryKey: ['menuPrivacy', request], + queryFn: () => menuPrivacy(request), + staleTime: Infinity, + gcTime: 1000 * 60 * 60, + refetchOnWindowFocus: false, + refetchOnMount: false + }); +}; +// ------------------------------ GET /menu/privacy ------------------------------ + +// ------------------------------ GET /menu/top/list ------------------------------ +export interface MenuListResponse { + id: number; + menuName: string; + menuLink: string; + menuFolder: string; + menuFile: string; + displayOrder: number; + levels: string[]; +} + +const menuTopList = (): Promise> => { + return customAxios.get(`menu/top/list`).then((res) => res.data); +}; + +export const useMenuTopListQuery = (): UseQueryResult, AxiosError> => { + return useQuery, AxiosError>({ + queryKey: ['menuTopList'], + queryFn: () => menuTopList(), + refetchOnMount: false, + refetchOnWindowFocus: false + }); +}; +// ------------------------------ GET /menu/top/list ------------------------------ + +// ------------------------------ GET /menu/{topId}/list ------------------------------ +const menuSubList = (path: number): Promise> => { + return customAxios.get(`menu/${path.toString()}/list`).then((res) => res.data); +}; + +export const useMenuSubListQuery = ( + path: number +): UseQueryResult, AxiosError> => { + return useQuery, AxiosError>({ + queryKey: ['menuSubList', path], + queryFn: () => menuSubList(path), + refetchOnMount: false, + refetchOnWindowFocus: false, + enabled: path > 0, + staleTime: 1000 * 60 * 5 + }); +}; + +// ------------------------------ GET /menu/{topId}/list ------------------------------ + +// ------------------------------ GET /menu/{id} ------------------------------ +interface MenuDetailResponse extends MenuListResponse { + menuIcon: string; +} + +const menuDetail = (path: number): Promise => { + return customAxios.get(`menu/${path.toString()}`).then((res) => res.data); +}; + +export const useMenuDetailQuery = (path: number): UseQueryResult> => { + return useQuery>({ + queryKey: ['menuDetail', path], + queryFn: () => menuDetail(path), + refetchOnMount: true, + refetchOnWindowFocus: true + }); +}; +// ------------------------------ GET /menu/{id} ------------------------------ + +// ------------------------------ POST /menu ------------------------------ +export interface AddMenuRequest { + topId: number; + menuName: string; + menuLink: string; + menuFolder: string; + menuFile: string; + menuIcon: string; + levels: string[]; +} + +const addMenu = (request: AddMenuRequest): Promise => { + return customAxios.post('menu', request); +}; + +export const useAddMenuMutation = (): UseMutationResult, AddMenuRequest, unknown> => { + return useMutation, AddMenuRequest, unknown>({ + mutationFn: addMenu + }); +}; +// ------------------------------ POST /menu ------------------------------ + +// ------------------------------ PATCH /menu/{id} ------------------------------ +interface UpdateMenuData { + menuName: string; + menuLink: string; + menuFolder: string; + menuFile: string; + menuIcon: string; + levels: string[]; +} + +export interface UpdateMenuRequest { + data: UpdateMenuData; + path: number; +} + +const updateMenu = ({ data, path }: UpdateMenuRequest): Promise => { + return customAxios.patch(`menu/${path.toString()}`, data); +}; + +export const useUpdateMenuMutation = (): UseMutationResult, UpdateMenuRequest> => { + return useMutation, UpdateMenuRequest>({ + mutationFn: updateMenu + }); +}; +// ------------------------------ PATCH /menu/{id} ------------------------------ + +// ------------------------------ PATCH /menu/reorder ------------------------------ +export interface ReorderMenuRequest { + id: number; + displayOrder: number; +} + +const reorderMenu = (request: ReorderMenuRequest[]): Promise => { + return customAxios.patch('menu/reorder', request); +}; + +export const useReorderMenuMutation = (): UseMutationResult< + void, + AxiosError, + ReorderMenuRequest[], + unknown +> => { + return useMutation, ReorderMenuRequest[], unknown>({ + mutationFn: reorderMenu + }); +}; +// ------------------------------ PATCH /menu/reorder ------------------------------ + +// ------------------------------ DELETE /menu/{id} ------------------------------ +const deleteMenu = (request: number[]): Promise => { + return customAxios.delete('menu', { data: request }); +}; + +export const useDeleteMenuMutation = (): UseMutationResult, number[], unknown> => { + return useMutation, number[], unknown>({ + mutationFn: deleteMenu + }); +}; +// ------------------------------ DELETE /menu/{id} ------------------------------ diff --git a/src/services/commonResponse/PageResponse.ts b/src/services/commonResponse/PageResponse.ts new file mode 100644 index 0000000..3b7bf3c --- /dev/null +++ b/src/services/commonResponse/PageResponse.ts @@ -0,0 +1,27 @@ +interface Sort { + sorted: boolean; + unsorted: boolean; + empty: boolean; +} + +interface Pageable { + pageNumber: number; + pageSize: number; + sort: Sort; + unpaged: boolean; + paged: boolean; + offset: number; +} + +export interface Page { + totalPages: number; + totalElements: number; + pageable: Pageable; + first: boolean; + last: boolean; + number: number; + numberOfElements: number; + size: number; + content: T[]; + empty: boolean; +} diff --git a/src/setupTests.ts b/src/setupTests.ts new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/src/share/constants/constants.ts b/src/share/constants/constants.ts new file mode 100644 index 0000000..e6c01f0 --- /dev/null +++ b/src/share/constants/constants.ts @@ -0,0 +1,191 @@ +import { RadioOption } from '@components/ui/radio/Radio'; + +export interface SearchFilterOption { + label: string; + value: string; +} +// -------------------------------- EMOTICONS ------------------------------------- // + +export const DEFAULT_TYPE: RadioOption[] = [ + { id: 'D', label: 'Defaults' }, + { id: 'B', label: 'Sale' }, + { id: 'G', label: 'Gift' } +]; + +export const IMAGE_UPLOAD_GUIDELINES = ` + + +1. PNG format, 96X96 pixel format. +2. The file name must not be a Korean file name. + + + +Please select the number of emoticons and the image type of emoticon. + +1. The image size is 96X96 pixels. +2. The image file size must not be larger than 2 MB. +3. The file name must not be a Korean file name. +`; + +export const EXPIRE_DATE_OPTIONS_EMOTICONS: SearchFilterOption[] = [ + { label: 'Direct Input', value: '0' }, + { label: 'One Month', value: '1' }, + { label: 'Two Month', value: '2' }, + { label: 'Three Month', value: '3' }, + { label: 'Indefinitely', value: '9999-01-01' } +]; + +export const SEARCH_FILTER_OPTIONS_EMOTICONS: SearchFilterOption[] = [ + { label: 'All', value: '' }, + { label: 'Default', value: 'D' }, + { label: 'Sale', value: 'B' }, + { label: 'Gift', value: 'G' } +]; + +// -------------------------------- EMOTICONS ------------------------------------- // + +// -------------------------------- MANAGE USER ------------------------------------- // + +export const SEARCH_FILTER_OPTIONS_MANAGEUSER: SearchFilterOption[] = [ + { label: 'User ID', value: 'userId' }, + { label: 'Angkor ID', value: 'angkorId' }, + { label: 'Phone Number', value: 'phone' }, + { label: 'Name', value: 'name' } +]; + +export const SEARCH_FILTER_OPTIONS_MANAGEUSER_POST: SearchFilterOption[] = [ + { label: 'Post Id', value: 'postId' }, + { label: 'Content', value: 'content' } +]; + +export const SEARCH_FILTER_OPTIONS_MANAGEUSER_REPLY: SearchFilterOption[] = [ + { label: 'Post Id', value: 'postId' }, + { label: 'User ID', value: 'userId' }, + { label: 'Name', value: 'name' }, + { label: 'Content', value: 'content' } +]; + +export const SEARCH_FILTER_OPTIONS_MANAGE_REPORT: SearchFilterOption[] = [ + { label: 'User ID', value: 'userId' }, + { label: 'Report Type', value: 'reportType' } +]; + +export const SEARCH_FILTER_OPTIONS_MANAGE_BLOCK: SearchFilterOption[] = [ + { label: 'User ID', value: 'userId' }, + { label: 'Angkor ID', value: 'angkorId' }, + { label: 'Phone Number', value: 'phone' } +]; + +export const SEARCH_FILTER_OPTIONS_MANAGE_ABUSING: SearchFilterOption[] = [ + { label: 'Spam Code', value: 'spamCode' }, + { label: 'Spam Type', value: 'spamType' } +]; + +// -------------------------------- MANAGE USER ------------------------------------- // + +// -------------------------------- MANAGE CONTENTS ------------------------------------- // + +export const SEARCH_FILTER_OPTIONS_POST: SearchFilterOption[] = [ + { label: 'User Id', value: 'userId' }, + { label: 'Post Id', value: 'postId' }, + { label: 'Name', value: 'name' }, + { label: 'Content', value: 'content' } +]; + +export const SEARCH_FILTER_OPTIONS_GALLERY: SearchFilterOption[] = [ + { label: 'Post Id', value: 'postId' }, + { label: 'User ID', value: 'userId' }, + { label: 'Name', value: 'name' } +]; + +export const SEARCH_FILTER_OPTIONS_REPLY: SearchFilterOption[] = [ + { label: 'Post Id', value: 'postId' }, + { label: 'Content', value: 'content' } +]; + +// -------------------------------- MANAGE CONTENTS ------------------------------------- // + +// -------------------------------- MANAGE REPORT ------------------------------------- // + +export const SEARCH_FILTER_OPTIONS_REPORT: SearchFilterOption[] = [ + { label: 'Reported by User', value: '1' }, + { label: 'User Reported', value: '2' } +]; + +export const STATUS_FILTER_REPORT: SearchFilterOption[] = [ + { value: '0', label: 'Unread' }, + { value: '1', label: 'Processed' }, + { value: '2', label: 'Under Review' } +]; + +// -------------------------------- MANAGE REPORT ------------------------------------- // + +// -------------------------------- CUSTOMER SUPPORT ------------------------------------- // + +export const LANGUAGE_TYPE: RadioOption[] = [ + { id: 'D001', label: 'English' }, + { id: 'D002', label: 'Khmer' } +]; + +export const SET_TYPE: RadioOption[] = [ + { id: 'P', label: 'Post' }, + { id: 'C', label: 'Closed' }, + { id: 'S', label: 'Scheduled' } +]; + +export const NOTICHAT_SEND_TYPE: RadioOption[] = [ + { id: '0', label: 'Direct' }, + { id: '1', label: 'Scheduled' } +]; + +// -------------------------------- CUSTOMER SUPPORT ------------------------------------- // + +// -------------------------------- TERMS / PRIVACY ------------------------------------- // + +export const TERMS_TYPE: SearchFilterOption[] = [ + { label: 'AngkorLife', value: 'C' }, + { label: 'AngkorFeed', value: 'F' } +]; + +// -------------------------------- TERMS / PRIVACY ------------------------------------- // + +// -------------------------------- PUSH NOTIFICATIONS ------------------------------------- // + +export const SEND_TYPE: RadioOption[] = [ + { id: 'R', label: 'Real-Time' }, + { id: 'S', label: 'Scheduled' } +]; + +export const MEMBER_TYPE: RadioOption[] = [ + { id: 'V', label: 'VIP' }, + { id: 'N', label: 'Normal' }, + { id: 'A', label: 'All' } +]; + +export const PLATFORM_TYPE: RadioOption[] = [ + { id: '0', label: 'IOS' }, + { id: '1', label: 'Android' }, + { id: '2', label: 'All' } +]; + +// -------------------------------- PUSH NOTIFICATIONS------------------------------------- // + +// -------------------------------- MANAGE / BATCH ------------------------------------- // + +export const BATCH_RADIO_TYPE = [ + { id: 'H', label: 'Hours', type: 'yyyyMMddHH' }, + { id: 'D', label: 'Days', type: 'yyyyMMdd' }, + { id: 'M', label: 'Months', type: 'yyyyMM' } +]; + +// -------------------------------- MANAGE / BATCH ------------------------------------- // + +// -------------------------------- USER STATUS ------------------------------------- // + +export const USER_STATUS: RadioOption[] = [ + { id: '1', label: 'Normal' }, + { id: '2', label: 'Block' }, + { id: '3', label: 'Report' }, + { id: '4', label: 'Withdraw' } +]; +// -------------------------------- USER STATUS ------------------------------------- // diff --git a/src/share/lib/customAxios.ts b/src/share/lib/customAxios.ts new file mode 100644 index 0000000..f12c348 --- /dev/null +++ b/src/share/lib/customAxios.ts @@ -0,0 +1,125 @@ +import axios, { AxiosError } from 'axios'; +import { store } from '@redux/index'; +import { logoutSuccess, tokenRefresh } from '@redux/auth'; + +// paramsSerializer +const customParamsSerializer = (params: Record): string => { + const serachParams = new URLSearchParams(); + + Object.keys(params).forEach((key) => { + const value = params[key]; + + if (Array.isArray(value)) { + value.forEach((item) => serachParams.append(key, item)); + } else { + serachParams.append(key, value); + } + }); + + return serachParams.toString(); +}; + +export const customAxios = axios.create({ + baseURL: process.env.REACT_APP_API_URL, + timeout: 7000, + headers: { + Accept: '*/*', + 'Content-Type': 'application/json' + }, + paramsSerializer: customParamsSerializer +}); + +export interface ErrorResponse { + errorCode: number; + errorMessage: string; + data: object; + message: string; +} + +// 토큰 디코딩 +const decodeJwtPayload = (jwt: string): number => { + const base64UrlPayload: string = jwt.replace('Bearer ', '').split('.')[1]; + const base64: string = base64UrlPayload.replace(/-/g, '+').replace(/_/g, '/'); + const jsonPayload: string = decodeURIComponent( + atob(base64) + .split('') + .map((c) => { + return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); + }) + .join('') + ); + + return JSON.parse(jsonPayload).exp; +}; + +// 토큰 만료 여부 확인 +const tokenExpired = (): boolean => { + const token: string | undefined = store.getState().auth.userData?.accessToken; + + if (token === undefined) { + return false; + } + + const tokenExpirationDate: number = decodeJwtPayload(JSON.stringify(token)); + const curreuntTime: number = Math.floor(Date.now() / 1000); + + if (curreuntTime >= tokenExpirationDate) { + return true; + } else { + return false; + } +}; + +// 로그아웃 처리 +const logoutProcess = () => { + store.dispatch(logoutSuccess()); + + window.dispatchEvent(new CustomEvent('logout')); +}; + +// Axios 요청 전 인터셉터 설정 +customAxios.interceptors.request.use( + (config) => { + const token = store.getState().auth.userData?.accessToken; + + if (token) { + config.headers.Authorization = token; + } + + // 토큰 만료 및 유효성 검사 + if (!config.url?.includes('login')) { + if (tokenExpired()) { + // 토큰이 만료되었을 경우 로그아웃 로직 처리 + logoutProcess(); + + return Promise.reject(new Error('Token Expired')); + } + } + + return config; + }, + (error: AxiosError) => { + return Promise.reject(error); + } +); + +// Axios 요청 후 인터셉터 설정 +customAxios.interceptors.response.use((response) => { + if (response.request.responseURL.includes('login')) { + const token: string = response.data['accessToken']; + + if (token) { + store.dispatch(tokenRefresh(token)); + customAxios.defaults.headers.authorization = token; + } + } else { + const token: string = response.headers.authorization; + + if (token) { + store.dispatch(tokenRefresh(token)); + customAxios.defaults.headers.authorization = token; + } + } + + return response; +}); diff --git a/src/share/utils/cryption.ts b/src/share/utils/cryption.ts new file mode 100644 index 0000000..0a96ff8 --- /dev/null +++ b/src/share/utils/cryption.ts @@ -0,0 +1,34 @@ +import cryptoJs from 'crypto-js'; + +const secretKey = process.env.REACT_APP_AES_SECRETKEY; +const iv = process.env.REACT_APP_AES_IV; + +export const aesEncrypt = (text: string): string => { + const cipher: cryptoJs.lib.CipherParams = cryptoJs.AES.encrypt(text, cryptoJs.enc.Utf8.parse(secretKey as string), { + iv: cryptoJs.enc.Utf8.parse(iv as string), + padding: cryptoJs.pad.Pkcs7, + mode: cryptoJs.mode.CBC + }); + + return cipher.toString(); +}; + +export const aesDecrypt = (encryptedText: string): string => { + const decipher: cryptoJs.lib.WordArray = cryptoJs.AES.decrypt( + encryptedText, + cryptoJs.enc.Utf8.parse(secretKey as string), + { + iv: cryptoJs.enc.Utf8.parse(iv as string), + padding: cryptoJs.pad.Pkcs7, + mode: cryptoJs.mode.CBC + } + ); + + return decipher.toString(cryptoJs.enc.Utf8); +}; + +export const sha256Encrypt = (text: string): string => { + const hash: cryptoJs.lib.WordArray = cryptoJs.SHA256(text); + + return hash.toString(cryptoJs.enc.Hex); +}; diff --git a/src/share/utils/fileUtils.ts b/src/share/utils/fileUtils.ts new file mode 100644 index 0000000..61cc3c0 --- /dev/null +++ b/src/share/utils/fileUtils.ts @@ -0,0 +1,40 @@ +export interface ValidateImageResponse { + isValid: boolean; + message?: string; +} + +// 1. image 파일 유효한지 검사하는 함수 ( 용량, 너비와 높이 - 사이즈 ) +export const validateImageFileProperties = ( + file: File, + maxSize: number, + width: number, + height: number +): ValidateImageResponse | Promise => { + if (file.size > maxSize) { + return { + isValid: false, + message: `The file must be no more than ${maxSize / 1024}KB.` + }; + } + + return new Promise((resolve) => { + const image = new Image(); + image.src = URL.createObjectURL(file); + image.onload = () => { + if (image.width !== width || image.height !== height) { + resolve({ + isValid: false, + message: `The image dimensions must be ${width}x${height} pixels.` + }); + } else { + resolve({ isValid: true }); + } + }; + image.onerror = () => { + resolve({ + isValid: false, + message: 'Image failed to load.' + }); + }; + }); +}; diff --git a/src/share/utils/objectUtils.ts b/src/share/utils/objectUtils.ts new file mode 100644 index 0000000..03b83cc --- /dev/null +++ b/src/share/utils/objectUtils.ts @@ -0,0 +1,5 @@ +export const isEmpty = (object: object): boolean => { + return Object.values(object).every( + (item) => item === null || item === undefined || (Array.isArray(item) && item.length === 0) || item === '' + ); +}; diff --git a/src/share/utils/searchBoxUtils.ts b/src/share/utils/searchBoxUtils.ts new file mode 100644 index 0000000..8894b7b --- /dev/null +++ b/src/share/utils/searchBoxUtils.ts @@ -0,0 +1,29 @@ +import { Dispatch, SetStateAction } from 'react'; + +// 검색함수 > 검색어 추출 및 setState 함수를 통해 상태 업데이트 +export const handleSearchSubmit = ( + event: React.MouseEvent | React.KeyboardEvent, + searchRef: React.RefObject, + setState: Dispatch> // setState 함수는 어떤 상태를 받더라도 동작하도록 설정 +) => { + if ( + event.type === 'click' || + (event.type === 'keydown' && (event as React.KeyboardEvent).key === 'Enter') + ) { + event.preventDefault(); + const searchKeyword = searchRef.current?.value.trim() || ''; + setState((prevState: { searchKeyword: string; page: number }) => updateSearchRequest(prevState, searchKeyword)); + } +}; + +// 상태 업데이트 시 검색어와 페이지 값 갱신 +export const updateSearchRequest = ( + prevState: T, + searchKeyword: string +): T => { + return { + ...prevState, + searchKeyword, + page: 1 + }; +}; diff --git a/src/share/utils/sortUtils.ts b/src/share/utils/sortUtils.ts new file mode 100644 index 0000000..90f9321 --- /dev/null +++ b/src/share/utils/sortUtils.ts @@ -0,0 +1,14 @@ +export const setNewSortType = (column: string, sort: string[]): string[] => { + const [currentColumn = '', currentDirection = ''] = (sort[0] || '').split(','); + + const newSortDirection = + currentColumn === column + ? currentDirection === 'desc' + ? 'asc' + : currentDirection === 'asc' + ? null + : 'desc' + : 'desc'; + + return newSortDirection ? [`${column},${newSortDirection}`] : []; +}; diff --git a/src/styles/common.css b/src/styles/common.css new file mode 100644 index 0000000..c321105 --- /dev/null +++ b/src/styles/common.css @@ -0,0 +1,191 @@ +@import 'ui-treetable.css'; + +/* 공통 width 모음 */ + +.width-5 { + width: 5%; +} +.width-8 { + width: 8%; +} +.width-10 { + width: 10%; +} +.width-12 { + width: 12%; +} +.width-14 { + width: 14%; +} +.width-15 { + width: 15%; +} +.width-17 { + width: 17%; +} +.width-18 { + width: 18%; +} +.width-20 { + width: 20%; +} +.width-25 { + width: 25%; +} +.width-30 { + width: 30%; +} +.width-40 { + width: 40%; +} +.width-45 { + width: 45%; +} +.width-50 { + width: 50%; +} + +.border_left { + border-left: 1px solid #e6e9f4; +} + +.border_right { + border-right: 1px solid #e6e9f4; +} + +.border_top { + border-top: 1px solid #e6e9f4; +} + +.main-body .page-wrapper .page-header { + margin-bottom: 20px; + padding: 10px 30px 18px 30px; +} + +.input-group { + margin-bottom: 0.25em !important; +} +.form-group { + margin-bottom: 0.5em !important; +} + +.card-body { + padding: 0.8rem 1.25rem; +} + +.table-header-box { + padding: 10px 14px; + color: #fff !important; + background-color: #4a68ab; +} +.text-overflow { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.table.table-xs th { + padding: 6px 4px; + font-size: 12px; +} +.table.table-xs td { + padding: 6px 4px 4px 4px; + font-size: 12px; +} + +.table.table-ss th { + padding: 6px 4px; + font-size: 12px; +} +.table.table-ss td { + padding: 2px 4px 0 4px; + font-size: 12px; +} + +.table thead th { + background-color: #525a77; + color: #fff; + border: 1px solid #777; + font-size: 12px; +} +.table thead th a { + font-size: 12px; +} +.table-striped tbody tr:nth-of-type(odd) { + background-color: #f5f5ff; +} + +ul, +li { + padding-left: 0; + list-style-type: none; + margin-bottom: 0; +} + +.btn-sm { + padding: 6px 7px; + line-height: 16px; + font-size: 14px; +} + +.code-modal-center { + position: fixed !important; + top: 0 !important; + right: 0 !important; + bottom: 0 !important; + left: 0 !important; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: -webkit-inline-box; + + align-items: center; + justify-content: center; + -webkit-align-items: center; + -webkit-justify-content: center; + + -webkit-box-pack: center; + -webkit-box-align: center; + -moz-box-pack: center; + -moz-box-align: center; + -ms-box-pack: center; + -ms-box-align: center; +} + +.bs-datepicker { + z-index: 99999 !important; +} + +select-dropdown > div { + z-index: 1001 !important; +} + +.md-tabs3 .nav-link.active { + color: #0070c0; + font-weight: 600; +} + +.md-tabs3 .nav-link { + transition: all 0.4s ease-in-out; + color: #7f7f7f; + border: 1px solid rgba(211, 211, 211, 1); + border-top: 8px solid #00b0f0; + margin-right: 5px; + background: white; + text-align: center; + font-weight: bold; + height: 45px; +} + +.md-tabs3 .nav-link.active, +.md-tabs3 .nav-link.active:focus, +.md-tabs3 .nav-link.active:hover { + border: 1px solid rgba(211, 211, 211, 1); + border-top: 8px solid #0070c0; + color: #0070c0; +} + +.md-tabs3 .nav-item { + min-width: 110px; +} diff --git a/src/styles/custom/custom.scss b/src/styles/custom/custom.scss new file mode 100644 index 0000000..03a3e89 --- /dev/null +++ b/src/styles/custom/custom.scss @@ -0,0 +1,1609 @@ +@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css'); + +// Sign in +.secondcertification_content { + .second_certification { + display: flex; + + .form-control { + caret-color: transparent; + border: 0; + border-bottom: 2px solid #ffc11a; + border-radius: 0; + margin: 0 2px; + text-align: center; + + &:focus, + &:active { + outline: none; + } + } + } +} + +//////////////////////////////////////////////////////////// +// alert modal +//////////////////////////////////////////////////////////// +.chartjs-tooltip { + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); +} + +.alert_modal { + display: flex; + flex-direction: column; + width: 494px; + background: #fff; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 1001; + padding: 36px 40px 30px; + border-radius: 8px; + box-shadow: 0 1px 4px 0 rgba(21, 34, 50, 0.08); + border: solid 1px #eaeaea; + + .modal_txt { + font-family: Pretendard; + font-size: 14px; + font-weight: 400; + color: #505050; + white-space: pre-line; + } + .btn_alert { + display: flex; + justify-content: end; + gap: 0.5rem; + } +} + +//////////////////////////////////////////////////////////// +// modal +//////////////////////////////////////////////////////////// +.modal_wrapper { + position: fixed; + overflow-y: scroll; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: block; + z-index: 1000; + + .modal_content { + min-width: 758px; + position: fixed; + overflow-y: auto; + top: 50%; + left: 50%; + max-height: calc(100% - 20px); + min-height: 0; + margin: 0 auto; + border-radius: 0.5rem; + padding: 40px; + transform: translate(-50%, -50%); + background: #fff; + font-family: pretendard; + + &--wide { + width: 1280px; + } + + &::-webkit-scrollbar { + display: none; + } + + .title { + padding-bottom: 20px; + font-size: 20px; + font-family: pretendard; + border-bottom: 1px solid #e6e9f4; + margin: 0; + + .modal_title { + font-size: 20px; + font-weight: 700; + line-height: 1.5; + margin-bottom: 0; + margin-top: 0; + color: #111; + } + + &--extra-padding { + padding-top: 40px; + } + + &--with-add { + padding-top: 40px; + display: flex; + justify-content: space-between; + align-items: center; + + button { + border: 1px solid #d5d7e3; + border-radius: 4px; + min-width: 74px; + height: 36px; + background-color: #fff; + font-size: 14px; + color: #131523; + display: flex; + align-items: center; + gap: 4px; + } + } + } + + .sub_title { + display: flex; + justify-content: space-between; + padding-bottom: 20px; + font-size: 20px; + font-family: pretendard; + + .modal_title { + font-size: 20px; + font-weight: 700; + line-height: 1.5; + margin-bottom: 0; + margin-top: 0; + color: #111; + } + + .add_btn { + border: 1px solid #d5d7e3; + border-radius: 4px; + min-width: 74px; + height: 36px; + background-color: #fff; + font-size: 14px; + color: #131523; + display: flex; + align-items: center; + gap: 4px; + } + } + + .body { + .table { + width: 100%; + font-size: 14px; + margin-bottom: 40px; + + tr { + display: flex; + border-bottom: 1px solid #e6e9f4; + + th { + width: 160px; + align-self: center; + font-weight: 500; + line-height: 1.5; + padding: 1.0625rem 0.5rem; + border-bottom: none; + background-color: rgba(0, 0, 0, 0); + } + + td { + width: 100%; + line-height: 1.5; + border-left: 1px solid #e6e9f4; + padding: 15px 0.5rem; + border-bottom: none; + background-color: rgba(0, 0, 0, 0); + + &.disabled { + cursor: default; + opacity: 0.5; + pointer-events: none; + } + + &.post_textarea { + width: 100%; + } + + &.radio_date_wrap { + display: flex; + align-items: center; + } + + .status_reason { + display: block; + width: 100%; + min-height: calc(1.5em + 1rem); + padding: 0.5rem 0.75rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: #131523; + background-color: #f5f6fa; + background-clip: padding-box; + border: 0 solid #ced4da; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0; + &::placeholder { + color: rgba(0, 0, 0, 0.175); + } + } + + .info-pw { + display: flex; + align-items: center; + gap: 20px; + } + + .info-pw-wrap { + display: flex; + flex-direction: column; + gap: 10px; + + .password_flex { + display: flex; + align-items: center; + gap: 10px; + } + + .new_password_form_control { + background-clip: padding-box; + background-color: #f5f6fa; + border: 0 solid #ced4da; + color: #131523; + display: block; + flex-shrink: 0; + font-family: Pretendard; + font-size: 0.875rem; + font-weight: 300; + height: 28px; + line-height: 1.5; + padding: 0.5rem 0.75rem; + width: 60%; + } + } + } + } + + & &.my_info { + th { + width: 200px; + } + } + } + + .table--wide { + width: 100%; + tr { + align-items: center; + border-bottom: 1px solid #e6e9f4; + color: #131523; + display: flex; + font-family: pretendard; + font-size: 14px; + + th { + display: block; + font-weight: 600; + padding: 1.0625rem 0.25rem 1.0625rem 0.6rem; + width: 140px; + } + + th:nth-of-type(2) { + border-left: 1px solid #e6e9f4; + } + + td { + border-left: 1px solid #e6e9f4; + display: block; + padding: 15px 0.75rem; + width: 430px; + + .text-input { + appearance: none; + background-clip: padding-box; + background-color: #f5f6fa; + border: 0 solid #ced4da; + border-radius: 0; + color: #131523; + display: block; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + padding: 0.5rem 0.75rem; + width: 100%; + } + + .file-wrap { + display: flex; + flex-direction: column; + gap: 15px; + + &--extra-padding { + padding-bottom: 15px; + } + + .file-input-wrap { + display: flex; + align-items: center; + gap: 15px; + + &.delete { + margin-bottom: 15px; + + button { + width: 15%; + height: 35px; + border: 1px solid rgb(213, 215, 227); + border-radius: 4px; + background-color: #fff; + } + } + + .file-input { + width: 85%; + appearance: none; + background-clip: padding-box; + background-color: #f5f6fa; + border: 0 solid #ced4da; + border-radius: 0; + color: #131523; + display: block; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + padding: 0.5rem 0.75rem; + } + + .file-label { + width: 15%; + height: 35px; + border: 1px solid rgb(213, 215, 227); + border-radius: 4px; + margin-bottom: 0px; + + span { + display: block; + cursor: pointer; + line-height: 35px; + text-align: center; + } + + input { + display: none; + } + } + } + + .file-view { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + background-color: #f5f6fa; + padding-bottom: 15px; + + .btn_wrap { + display: flex; + justify-content: center; + gap: 5px; + padding-top: 10px; + } + + span { + font-size: 14px; + font-weight: 600; + padding: 10px 0; + text-align: center; + } + + img { + width: 250px; + height: 250px; + } + } + } + .delete_btn { + outline: none; + background-color: #fff; + border: solid 1px #c2cad4; + border-radius: 4px; + width: 32px; + height: 32px; + padding: 4px; + &.disabled { + pointer-events: none; + opacity: 0.5; + } + } + + .toggle_btn { + outline: none; + background-color: #fff; + border: solid 1px #c2cad4; + border-radius: 4px; + width: 32px; + height: 32px; + padding: 4px; + + .normal { + transform: rotate(0deg); + transition: transform 0.3s ease-in-out; + } + + .rotated { + transform: rotate(180deg); + transition: transform 0.3s ease-in-out; + } + } + } + } + } + } + .file_box { + display: flex; + justify-content: center; + align-items: center; + gap: 10px; + margin-bottom: 5px; + &:last-of-type { + margin-bottom: 0; + } + } + + .footer { + display: flex; + justify-content: center; + width: 100%; + font-family: pretendard; + gap: 10px; + margin-top: 30px; + + .left { + display: flex; + justify-content: left; + width: 100%; + gap: 10px; + } + + .right { + display: flex; + justify-content: right; + width: 100%; + gap: 10px; + } + } + } + + .black_bg { + display: block !important; + overflow-y: auto; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.5); + } + .file_upload { + label { + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + width: 74px; + height: 36px; + line-height: 36px; + background-color: #fff; + color: #7e84a3; + border-radius: 4px; + border: 1px solid #d5d7e3; + } + input[type='file'] { + position: absolute; + width: 0; + height: 0; + padding: 0; + overflow: hidden; + border: 0; + } + } +} + +.scheduled_datepicker { + display: flex; + align-items: center; + + &.disabled { + opacity: 0.5; + cursor: default; + } + .date_picker { + display: flex; + width: 140px; + align-items: center; + color: #131523; + background-color: #f5f6fa; + outline: 0; + box-shadow: none; + border: 1px solid #c2cad4; + border-radius: 4px; + font-family: 'Poppins'; + letter-spacing: -0.65px; + padding: 7px 34px 7px 9px; + font-weight: 500; + + .react-datepicker-popper { + transform: translate(210px, 50px) !important; + } + .react-datepicker__input-container { + background: transparent; + border: 0; + outline: none; + .sendDate { + background: transparent; + border: 0; + outline: none; + cursor: pointer; + &.disabled { + pointer-events: none; + input { + background: transparent; + box-shadow: none; + border: none; + } + } + } + } + } +} + +//////////////////////////////////////////////////////////// +// Time Picker +//////////////////////////////////////////////////////////// +.time_picker { + width: 100px; + margin-left: 10px; + + &.disabled { + opacity: 0.3; + pointer-events: none; + input { + background: transparent; + box-shadow: none; + border: none; + } + } + + .time_picker_content { + position: relative; + display: flex; + align-items: center; + color: #131523; + background-color: #f5f6fa; + outline: 0; + box-shadow: none; + border: 1px solid #c2cad4; + border-radius: 4px; + font-family: 'Poppins'; + letter-spacing: -0.65px; + padding: 1.5px 0; + font-weight: 500; + + .time_picker_input { + background: transparent; + border: 0; + outline: none; + width: 100%; + padding: 7px 14px 7px 14px; + display: block; + } + } + .time_cotainer { + display: none; + position: absolute; + width: 240px; + background: #000; + color: #e3e3e3; + align-items: center; + justify-content: space-around; + padding: 10px; + border: 1px solid #e6e9f4; + border-radius: 3px; + text-align: center; + z-index: 99; + transform: translate(-350px, -120px); + &.show { + display: flex; + } + + button { + background: transparent; + border: none; + outline: none; + box-shadow: none; + color: #e3e3e3; + } + .time_clock { + display: flex; + align-items: center; + } + .time_container_clock { + .hidden { + display: none; + } + } + } + &.batch { + margin-left: 0; + .time_picker_content { + background-color: #fff; + border: 1px solid #d7dbec; + height: 36px; + } + .time_cotainer { + transform: translate(-75px, 0px); + } + } +} + +//////////////////////////////////////////////////////////// +// Radio +//////////////////////////////////////////////////////////// +.radio_wrap { + display: flex; + flex-direction: column; + gap: 10px; + + .content { + display: flex; + align-items: center; + padding: 0; + font-size: 14px; + } + &.flex { + flex-direction: unset; + } +} + +.chartRadio_box { + border-radius: 5px; + border: 1px solid #d7dbec; + height: 36px; + margin-right: 10px; + &.batch { + margin-right: 0; + } +} + +//////////////////////////////////////////////////////////// +// pagination +//////////////////////////////////////////////////////////// +.pagination_jc { + display: flex; + justify-self: flex-end !important; + align-items: flex-end; + + button { + width: 36px; + height: 36px; + padding: 0; + display: flex; + align-items: center; + justify-content: center; + border: 0; + border-radius: 4px; + font-weight: 400; + font-size: 16px; + font-family: 'Pretendard'; + color: #7e84a3; + background: #fff; + cursor: pointer; + + &:hover { + background: rgba(0, 0, 0, 0.05); + color: #0f111c; + } + + &:active, + &:focus { + outline: none; + } + + &.disabled { + cursor: default; + opacity: 0.5; + pointer-events: none; + } + + &.active { + background: #fec702; + border-radius: 0.25rem; + color: #fff; + } + + &.prev { + width: 36px; + height: 36px; + line-height: 36px; + display: flex; + justify-content: center; + align-items: center; + + &:hover { + background: #e9ecef; + border-radius: 0.25rem; + } + } + + &.next { + width: 36px; + height: 36px; + } + } +} + +//////////////////////////////////////////////////////////// +// Common +//////////////////////////////////////////////////////////// +.square_button { + display: block; + border-radius: 4px; + border: solid 1px #a1a7c4; + background: #fff; + color: #7e84a3; + font-size: 14px; + padding: 6px 16px; + height: 38px; + line-height: 15px; + cursor: pointer; + + &:focus, + &:active { + outline: none; + } + + &.disabled { + pointer-events: none; + opacity: 0.5; + } +} + +.none_button { + border: none; + background: none; + + &:focus, + &:active { + outline: none; + } +} + +.page-title { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + margin: 0 0 41px 0; + letter-spacing: -0.48px; +} + +//////////////////////////////////////////////////////////// +// card +//////////////////////////////////////////////////////////// +.top-wrap { + animation: 0.4s ease-in-out topMenuEffect; +} +@keyframes topMenuEffect { + 0% { + opacity: 0; + transform: translateX(-100%); + } + + 100% { + opacity: 1; + transform: translateX(0%); + } +} + +.sub-wrap { + animation: 0.4s ease-in-out subMenuEffect; +} + +@keyframes subMenuEffect { + 0% { + opacity: 0; + transform: translateX(50%); + } + + 100% { + opacity: 1; + transform: translateX(0%); + } +} + +.card .card-header h5 { + font-size: 20px; + font-weight: 700; + letter-spacing: -0.4px; + font-family: Pretendard; +} + +//////////////////////////////////////////////////////////// +// list +//////////////////////////////////////////////////////////// +/// + +.list_header { + display: flex; + align-items: center; + justify-content: space-between; + + .header_box { + display: flex; + gap: 1rem; + + .modal_add_btn { + button { + border: 1px solid #d5d7e3; + border-radius: 4px; + min-width: 74px; + height: 36px; + background-color: #fff; + font-size: 14px; + color: #131523; + display: flex; + align-items: center; + gap: 4px; + + &:focus { + outline: none; + } + } + } + } + + .title-wrap { + display: flex; + align-items: center; + } +} + +.list_table { + width: 100%; + border-top: 1px solid #e6e9f4; + font-size: 12px; + color: #131523; + font-family: pretendard; + + table { + width: 100%; + display: flex; + flex-direction: column; + height: 100%; + + .form-check { + padding-left: 0; + margin-bottom: -0.2rem; + + input[type='checkbox'] { + display: none; + } + + input[type='checkbox'] + label { + height: 23px; + cursor: pointer; + padding-left: 23px; + background-repeat: no-repeat; + background-image: url('../images/icons/btn-check-box-default.svg'); + background-position: left; + } + + input[type='checkbox']:checked + label { + background-image: url('../images/icons/btn-check-box-active.svg'); + } + } + + thead { + display: block; + border-bottom: 1px solid #e6e9f4; + + tr { + width: 100%; + display: flex; + align-items: center; + height: 50px; + + th { + display: flex; + justify-content: center; + text-align: center; + font-weight: 500; + padding: 1.0625rem 0.5rem; + + button { + background: none; + border: none; + + &:focus { + outline: none; + } + } + + &.status { + position: relative; + + .status_img, + .open { + img { + transition: transform 0.2s ease-in-out; + width: 20px; + height: 20px; + } + } + .open img { + transform: rotate(180deg); + } + + ul { + &.status_dropdown_menu { + position: absolute; + top: 40px; + left: 50%; + transform: translateX(-50%); + margin: 0px; + box-shadow: 0 1px 4px 0 rgba(21, 34, 50, 0.1); + background: #fff; + border-radius: 0.25rem; + z-index: 10; + + li { + display: block; + width: 100%; + padding: 0.25rem 1rem; + clear: both; + font-weight: 400; + color: #131523; + text-align: initial; + white-space: nowrap; + background-color: transparent; + border: 0; + + button { + color: #131523; + + i { + width: 10px; + height: 10px; + border-radius: 50%; + display: inline-block; + vertical-align: middle; + margin-right: 10px; + transform: translateY(-1px); + background: #fec702; + + &.all { + background: linear-gradient(126deg, red, orange, yellow, green, blue, navy, purple); + opacity: 0.7; + } + + &.normal, + &.my_status_1 { + background: #21d59b; + } + + &.block, + &.my_status_0 { + background: #f0142f; + } + &.report, + &.my_status_2 { + background: #fec702; + } + + &.withdraw { + background: #c2cad4; + } + } + } + } + } + } + } + } + } + } + + tbody { + width: 100%; + + &::-webkit-scrollbar { + width: 6px; + height: 6px; + background-color: transparent; + } + + &::-webkit-scrollbar-track { + border-radius: 0; + background-color: transparent; + } + + &::-webkit-scrollbar-thumb { + border-radius: 9px; + background-color: #a5a7ab; + } + + tr { + width: 100%; + display: flex; + border-bottom: 1px solid #e6e9f4; + + .terms { + width: 100%; + } + + th, + td { + display: flex; + align-items: center; + vertical-align: middle; + justify-content: center; + padding: 15px 0.5rem; + text-align: center; + + .img_box { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 80px; + height: 80px; + border-radius: 5px; + overflow: hidden; + cursor: pointer; + img { + width: 80px; + height: 80px; + object-fit: cover; + } + .ico_play { + width: 35px; + height: 35px; + position: absolute; + transform: translate(-50%, -50%); + top: 50%; + left: 50%; + opacity: 0.8; + } + } + + i { + width: 10px; + height: 10px; + border-radius: 50%; + display: inline-block; + vertical-align: middle; + margin-right: 10px; + transform: translateY(-1px); + + &.my_status_1, + &.my_status_P, + &.normal { + background: #21d59b; + } + + &.my_status_2, + &.my_status_C { + background: #fec702; + } + + &.my_status_3, + &.my_status_S, + &.block { + background: #f0142f; + } + + &.my_status_4, + &.withdraw { + background: #c2cad4; + } + } + + .list_edit_button { + border-radius: 4px; + border: solid 1px #a1a7c4; + background: #fff; + color: #7e84a3; + font-size: 14px; + padding: 6px 16px; + height: 30px; + line-height: 15px; + cursor: pointer; + + &:hover { + background: #6c757d; + color: #fff; + } + + &:focus { + border: solid 1px #a1a7c4; + outline: none; + } + } + &.term { + width: 10vw; + font-size: 14px; + font-weight: 500; + } + } + } + .status_wrap { + .my_status_0 { + background: #f0142f; + } + .my_status_1 { + background: #21d59b; + } + + .my_status_2 { + background: #fec702; + } + } + } + } +} +.list_item { + position: relative; +} +.button_wrap { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.text_area { + width: 80%; + max-width: 80vw; + justify-content: center; + display: inline-block; + border: 1px solid #e6e9f4; + border-bottom: none; +} +.tooltip_cont { + width: 40vw; + position: relative; + display: inline-block; + cursor: default; + .tooltip_txt { + visibility: hidden; + width: 100%; + max-width: 1000px; + background-color: #ffffff; + border: 1px solid #aaa; + color: #111; + text-align: center; + padding: 5px; + position: absolute; + bottom: 70%; + z-index: 1; + opacity: 0; + font-size: 14px; + transition: opacity 0.3s; + box-sizing: border-box; + &.center { + transform: translateX(-50%); + width: 100%; + } + } + &.bottom .tooltip_txt { + bottom: auto; + } +} + +.tooltip_cont:hover .tooltip_txt { + visibility: visible; + opacity: 1; +} + +.content_wrap { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.list_footer { + display: flex; + justify-content: flex-end; + margin-top: 40px; + + .left { + display: flex; + justify-content: left; + width: 100%; + gap: 10px; + } + + .right { + display: flex; + justify-content: right; + width: 100%; + gap: 10px; + } + + .delete_btn { + outline: none; + background-color: #fff; + border: solid 1px #c2cad4; + border-radius: 4px; + width: 32px; + height: 32px; + padding: 4px; + } +} + +//////////////////////////////////////////////////////////// +// chart radio +//////////////////////////////////////////////////////////// + +.chart_radio_label { + font-family: 'Poppins'; + padding: 0 12px; + display: inline-block; + line-height: 36px; + color: #131523; + cursor: pointer; + font-size: 12px; + background: none; + margin: 0; + width: 70px; + text-align: center; +} +input[type='radio']:checked + label { + background: #fec702; + color: #fff; + border-radius: 5px; +} + +////////////////// +/// Datepicker +///////////////// + +.datepicker-group-right { + margin: 0 0 30px auto; + background-color: white; + font-size: 20px; +} + +.datepicker-group { + width: 270px; + padding: 0 1rem; + height: 36px; + border-radius: 18px; + display: flex; + justify-content: center; + align-items: center; + border: 1px solid #d7dbec; + text-align: center; + + &.batch { + width: fit-content; + } + + .startDate { + cursor: pointer; + &::placeholder { + font-size: 13px; + font-family: Pretendard; + } + } + .endDate { + cursor: pointer; + &::placeholder { + font-size: 13px; + font-family: Pretendard; + } + } + + &.Days.none { + display: none; + } + &.Months.none { + display: none; + } + &.Years.none { + display: none; + } + + .calendar_img { + img { + padding: 0 3px; + } + } + + span { + padding-right: 10px; + } + + input[type='text'] { + background: none; + padding-left: 14px; + padding-right: 14px; + width: 95px; + border: 0; + padding: 0; + text-align: center; + font-weight: 500; + border-radius: 4px; + font-family: 'Poppins'; + letter-spacing: -0.65px; + font-size: 0.875rem; + font-weight: 500; + &.selected_date { + width: 100%; + } + } +} + +///////////// +//react-datepicker +///////////// +.react-datepicker__year--container { + font-family: Pretendard; + padding: 25px; + border: none; + border-radius: 3px; + box-shadow: none; + background: #1b1b1b; + color: #e3e3e3; + .react-datepicker-year-header { + background: #1b1b1b; + color: #e3e3e3; + } + + .react-datepicker__year-wrapper { + justify-content: space-between; + .react-datepicker__year-text { + padding: 10px 10px; + &:hover { + background-color: #f0f0f02e; + } + &.react-datepicker__year-text--selected { + background-color: #4db2ff; + } + &.react-datepicker__year-text--disabled { + color: rgba(232, 230, 227, 0.38); + } + } + } +} + +.react-datepicker__month { + .react-datepicker__month-text { + padding: 10px 10px; + &:hover { + background-color: #f0f0f02e; + } + &.react-datepicker__month-text--keyboard-selected { + background-color: #4db2ff; + } + &.react-datepicker__month--disabled { + color: rgba(232, 230, 227, 0.38); + } + } +} +.react-datepicker__month-container { + font-family: Pretendard; + .react-datepicker__header { + padding: 0; + .react-datepicker__current-month { + font-size: 12px; + } + } + .react-datepicker__day-names { + font-size: 12px; + display: flex; + margin-bottom: -8px; + justify-content: space-between; + margin: 10px -6px; + .react-datepicker__day-name { + margin: 0; + } + } + .react-datepicker__month { + margin: 0; + } + .react-datepicker__week { + margin: 10px -11px; + &:last-child { + margin: 0px -11px; + } + .react-datepicker__day { + font-size: 12px; + &:hover { + background-color: #f0f0f02e; + } + &.react-datepicker__day--disabled { + color: rgba(232, 230, 227, 0.38); + } + } + } +} +.react-datepicker__navigation { + top: 20px; + &:focus, + &:active { + outline: none; + } + + &.react-datepicker__navigation--previous { + left: 25px; + right: 0; + } + &.react-datepicker__navigation--next { + right: 25px; + } + + .react-datepicker__navigation-icon { + top: 4px; + &.react-datepicker__navigation-icon--previous { + left: -12px; + &::before { + right: -10px; + width: 7px; + height: 7px; + position: absolute; + top: 6px; + border-color: #fff; + border-style: solid; + border-width: 2px 2px 0 0; + } + } + &.react-datepicker__navigation-icon--next { + left: 12px; + &::before { + left: -10px; + width: 7px; + height: 7px; + position: absolute; + top: 6px; + border-color: #fff; + border-style: solid; + border-width: 2px 2px 0 0; + } + } + } +} +.react-datepicker__month-container { + color: #e3e3e3; + background-color: #1b1b1b; + width: 340px !important; + padding: 25px; + border: none; + border-radius: 3px; + box-shadow: none; + .react-datepicker__header { + background-color: #1b1b1b; + border: none; + color: #e3e3e3; + .react-datepicker__current-month { + color: #e3e3e3; + } + .react-datepicker__day-name { + color: rgba(232, 230, 227, 0.5); + } + } + .react-datepicker__week { + display: grid; + grid-template-areas: 'a a a a a a a'; + grid-auto-rows: 40px; + grid-auto-columns: 14.2857142857%; + } + .react-datepicker__day { + color: #e3e3e3; + width: 80%; + height: 85%; + line-height: 1.5; + border-radius: 999px; + align-items: center; + justify-content: center; + box-sizing: border-box; + display: flex; + &.react-datepicker__day--today { + position: relative; + &::before { + content: ''; + display: inline-block; + border: solid transparent; + position: absolute; + bottom: 4px; + right: 0px; + transform: rotate(-225deg); + width: 0; + height: 0; + border-bottom: 5px solid #4db2ff; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + } + } + } + .react-datepicker__day--selected { + border-radius: 50px; + background-color: #4db2ff; + color: #fff; + text-shadow: 0 -1px 0 rgba(232, 230, 227, 0.25); + &.react-datepicker__day--today { + position: relative; + &::before { + border-bottom: 5px solid #000000; + } + } + } +} + +//////////////////////////////////////////////////////////// +// textarea, text input 스타일 +//////////////////////////////////////////////////////////// +.form_control { + display: block; + width: 100%; + padding: 0.5rem 0.75rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: #131523; + background-color: #f5f6fa; + background-clip: padding-box; + border: 0 solid #ced4da; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0; + &.readonly { + cursor: default; + } +} + +.content_textbox { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-weight: 400; + font-size: 14px; + line-height: 1.5; + color: #212529; + min-height: 80px; + appearance: none; + background-color: #f5f6fa; + background-clip: padding-box; + border: none; + &.readonly { + cursor: default; + } +} + +//////////////////////////////////////////////////////////// +// react-select : selectbox 최소 너비 설정 +//////////////////////////////////////////////////////////// +.css-13cymwt-control, +.css-t3ipsp-control { + min-width: 10vw; +} + +// Terms/Privacy Select custom +.term_type { + .css-13cymwt-control, + .css-t3ipsp-control { + min-width: 5vw; + } +} +.term_opt { + .css-13cymwt-control, + .css-t3ipsp-control { + width: 50vw; + } +} + +//////////////////////////////////////////////////////////// +// Gallery Modal Swiper 세팅 +//////////////////////////////////////////////////////////// +.swiper-wrapper { + width: calc(100vw - 120px); + gap: 10px; +} diff --git a/src/styles/images/btn-check-box-active.svg b/src/styles/images/btn-check-box-active.svg new file mode 100644 index 0000000..2d56777 --- /dev/null +++ b/src/styles/images/btn-check-box-active.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/styles/images/btn-check-box-default.svg b/src/styles/images/btn-check-box-default.svg new file mode 100644 index 0000000..c809459 --- /dev/null +++ b/src/styles/images/btn-check-box-default.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/styles/images/icons/btn-check-box-active.svg b/src/styles/images/icons/btn-check-box-active.svg new file mode 100644 index 0000000..2d56777 --- /dev/null +++ b/src/styles/images/icons/btn-check-box-active.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/styles/images/icons/btn-check-box-default.svg b/src/styles/images/icons/btn-check-box-default.svg new file mode 100644 index 0000000..c809459 --- /dev/null +++ b/src/styles/images/icons/btn-check-box-default.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/styles/images/icons/btn-radio-active.svg b/src/styles/images/icons/btn-radio-active.svg new file mode 100644 index 0000000..8a34035 --- /dev/null +++ b/src/styles/images/icons/btn-radio-active.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/styles/images/icons/btn-radio-default.svg b/src/styles/images/icons/btn-radio-default.svg new file mode 100644 index 0000000..287e129 --- /dev/null +++ b/src/styles/images/icons/btn-radio-default.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/styles/images/icons/chevron-left.svg b/src/styles/images/icons/chevron-left.svg new file mode 100644 index 0000000..8decb93 --- /dev/null +++ b/src/styles/images/icons/chevron-left.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/chevron-right.svg b/src/styles/images/icons/chevron-right.svg new file mode 100644 index 0000000..a9899dd --- /dev/null +++ b/src/styles/images/icons/chevron-right.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-admin-profile-default.svg b/src/styles/images/icons/ic-admin-profile-default.svg new file mode 100644 index 0000000..b4e79ce --- /dev/null +++ b/src/styles/images/icons/ic-admin-profile-default.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/styles/images/icons/ic-affiliate-dafault.svg b/src/styles/images/icons/ic-affiliate-dafault.svg new file mode 100644 index 0000000..1e17fdb --- /dev/null +++ b/src/styles/images/icons/ic-affiliate-dafault.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-arrow-down.svg b/src/styles/images/icons/ic-arrow-down.svg new file mode 100644 index 0000000..ee1482a --- /dev/null +++ b/src/styles/images/icons/ic-arrow-down.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-arrow-up.svg b/src/styles/images/icons/ic-arrow-up.svg new file mode 100644 index 0000000..97a5255 --- /dev/null +++ b/src/styles/images/icons/ic-arrow-up.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-bell.png b/src/styles/images/icons/ic-bell.png new file mode 100644 index 0000000..4238bd7 Binary files /dev/null and b/src/styles/images/icons/ic-bell.png differ diff --git a/src/styles/images/icons/ic-bell.svg b/src/styles/images/icons/ic-bell.svg new file mode 100644 index 0000000..29961da --- /dev/null +++ b/src/styles/images/icons/ic-bell.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/styles/images/icons/ic-bin.svg b/src/styles/images/icons/ic-bin.svg new file mode 100644 index 0000000..8c266a7 --- /dev/null +++ b/src/styles/images/icons/ic-bin.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/styles/images/icons/ic-calendar.svg b/src/styles/images/icons/ic-calendar.svg new file mode 100644 index 0000000..24a01b2 --- /dev/null +++ b/src/styles/images/icons/ic-calendar.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/styles/images/icons/ic-chevron-down.svg b/src/styles/images/icons/ic-chevron-down.svg new file mode 100644 index 0000000..78d40b2 --- /dev/null +++ b/src/styles/images/icons/ic-chevron-down.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-chevron-up.svg b/src/styles/images/icons/ic-chevron-up.svg new file mode 100644 index 0000000..7c61b91 --- /dev/null +++ b/src/styles/images/icons/ic-chevron-up.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-clock-active.svg b/src/styles/images/icons/ic-clock-active.svg new file mode 100644 index 0000000..e94d990 --- /dev/null +++ b/src/styles/images/icons/ic-clock-active.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/styles/images/icons/ic-dollar-default.svg b/src/styles/images/icons/ic-dollar-default.svg new file mode 100644 index 0000000..8148f33 --- /dev/null +++ b/src/styles/images/icons/ic-dollar-default.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-emiticon-default.svg b/src/styles/images/icons/ic-emiticon-default.svg new file mode 100644 index 0000000..1562f4a --- /dev/null +++ b/src/styles/images/icons/ic-emiticon-default.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/styles/images/icons/ic-help-y.svg b/src/styles/images/icons/ic-help-y.svg new file mode 100644 index 0000000..2b86b57 --- /dev/null +++ b/src/styles/images/icons/ic-help-y.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/styles/images/icons/ic-help.svg b/src/styles/images/icons/ic-help.svg new file mode 100644 index 0000000..ab3b584 --- /dev/null +++ b/src/styles/images/icons/ic-help.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/styles/images/icons/ic-home.svg b/src/styles/images/icons/ic-home.svg new file mode 100644 index 0000000..a3984d5 --- /dev/null +++ b/src/styles/images/icons/ic-home.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/styles/images/icons/ic-invoice.svg b/src/styles/images/icons/ic-invoice.svg new file mode 100644 index 0000000..93d0ba6 --- /dev/null +++ b/src/styles/images/icons/ic-invoice.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/styles/images/icons/ic-logout.svg b/src/styles/images/icons/ic-logout.svg new file mode 100644 index 0000000..db0ca92 --- /dev/null +++ b/src/styles/images/icons/ic-logout.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/styles/images/icons/ic-manage-payments-default.svg b/src/styles/images/icons/ic-manage-payments-default.svg new file mode 100644 index 0000000..93d0ba6 --- /dev/null +++ b/src/styles/images/icons/ic-manage-payments-default.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/styles/images/icons/ic-manage-points-default.svg b/src/styles/images/icons/ic-manage-points-default.svg new file mode 100644 index 0000000..d17ccd6 --- /dev/null +++ b/src/styles/images/icons/ic-manage-points-default.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-plus.svg b/src/styles/images/icons/ic-plus.svg new file mode 100644 index 0000000..f9c2330 --- /dev/null +++ b/src/styles/images/icons/ic-plus.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/styles/images/icons/ic-search.svg b/src/styles/images/icons/ic-search.svg new file mode 100644 index 0000000..e7250f7 --- /dev/null +++ b/src/styles/images/icons/ic-search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/icons/ic-setting.svg b/src/styles/images/icons/ic-setting.svg new file mode 100644 index 0000000..00fb138 --- /dev/null +++ b/src/styles/images/icons/ic-setting.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/styles/images/icons/ic-user.svg b/src/styles/images/icons/ic-user.svg new file mode 100644 index 0000000..cae2e5f --- /dev/null +++ b/src/styles/images/icons/ic-user.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/styles/images/icons/ic-users.svg b/src/styles/images/icons/ic-users.svg new file mode 100644 index 0000000..946d6c0 --- /dev/null +++ b/src/styles/images/icons/ic-users.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/styles/images/logo/login-logo.png b/src/styles/images/logo/login-logo.png new file mode 100644 index 0000000..d6e5b89 Binary files /dev/null and b/src/styles/images/logo/login-logo.png differ diff --git a/src/styles/images/logo/logo-main.png b/src/styles/images/logo/logo-main.png new file mode 100644 index 0000000..fbafa0e Binary files /dev/null and b/src/styles/images/logo/logo-main.png differ diff --git a/src/styles/partials/_general.scss b/src/styles/partials/_general.scss new file mode 100644 index 0000000..ad9a0a9 --- /dev/null +++ b/src/styles/partials/_general.scss @@ -0,0 +1,919 @@ +/** ===================== + Custom css start +========================== **/ +body { + font-family: $theme-font-family; + font-size: $theme-font-size; + color: $theme-font-color; + font-weight: 400; + background: $theme-background; + position: relative; +} + +* { + &:focus { + outline: none; + } +} + +a { + &:hover { + outline: none; + text-decoration: none; + } +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: $theme-heading-color; + font-weight: 400; +} + +h1 { + font-size: 48px; +} + +h2 { + font-size: 44px; +} + +h3 { + font-size: 26px; +} + +h4 { + font-size: 20px; +} + +h5 { + font-size: 18px; +} + +h6 { + font-size: 14px; +} + +p { + font-size: 14px; +} + +strong { + font-weight: 400; +} + +.img-radius { + border-radius: 50%; +} + +.page-header-title + .breadcrumb { + background: transparent; + padding: 0; + + > .breadcrumb-item { + a { + color: #888; + } + + &:last-child a { + color: #111; + font-weight: 600; + } + } +} + +.theme-bg { + background: $theme-color; +} + +.theme-bg2 { + background: $theme-color2; +} +/* ========== card css start =========== */ + +.anim-rotate { + animation: anim-rotate 1s linear infinite; +} +@keyframes anim-rotate { + 100% { + transform: rotate(360deg); + } +} + +.anim-close-card { + animation: anim-close-card 1.4s linear; +} +@keyframes anim-close-card { + 100% { + opacity: 0.3; + transform: scale3d(0.3, 0.3, 0.3); + } +} + +p.text-muted { + font-size: 13px; +} + +.card { + /* junny */ + border-radius: 10px; + /*border-radius: 0;*/ + box-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08); + border: none; + margin-bottom: 30px; + transition: all 0.5s ease-in-out; + padding: 40px 30px; + + .card-header { + background-color: transparent; + // border-bottom: 1px solid #f1f1f1; + border: none; + padding: 0px; + position: relative; + margin-bottom: 20px; + + + .card-block, + + .card-body { + } + + h5 { + margin-bottom: 0; + color: #000; + font-size: 17px; + font-weight: 400; + display: inline-block; + margin-right: 10px; + line-height: 1.1; + position: relative; + + /* junny */ + /*&:after { + content: ""; + background-color: $primary-color; + position: absolute; + left: -25px; + top: 0; + width: 4px; + height: 20px; + }*/ + } + + &.borderless { + border-bottom: none; + + h5:after { + display: none; + } + } + + .card-header-right { + right: 10px; + top: 10px; + display: inline-block; + float: right; + padding: 0; + position: absolute; + @media only screen and (max-width: 575px) { + display: none; + } + + .dropdown-menu { + margin-top: 0; + + li { + a { + font-size: 14px; + text-transform: capitalize; + } + } + } + + .btn.dropdown-toggle { + border: none; + background: transparent; + box-shadow: none; + color: #888; + + i { + margin-right: 0; + } + + &:after { + display: none; + } + + &:focus { + box-shadow: none; + outline: none; + } + } + } + } + + .card-footer { + border-top: 1px solid #f1f1f1; + background: transparent; + padding: 25px; + } + + .card-block, + .card-body { + padding: 0; + } + + &.card-load { + position: relative; + overflow: hidden; + + .card-loader { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + background-color: rgba(256, 256, 256, 0.7); + z-index: 999; + + i { + margin: 0 auto; + color: $primary-color; + font-size: 24px; + align-items: center; + display: flex; + } + } + } + + &.full-card { + z-index: 99999; + border-radius: 0; + } +} +/* ========== scrollbar End =========== */ + +.scroll-y { + z-index: 1027; +} +/* ========== scrollbar End =========== + ========== card css End =========== + ================================ Dropdown Start ===================== */ + +.dropdown-menu { + padding: 20px 0; + margin-top: 15px; + box-shadow: 0 1px 10px 0 rgba(69, 90, 100, 0.2); + border: none; + + &.show { + &:before { + content: '\63'; + font-family: 'pct'; + position: absolute; + left: 15px; + top: -5px; + z-index: 1001; + font-size: 40px; + line-height: 0; + color: #fff; + text-shadow: 0 -2px 2px rgba(69, 90, 100, 0.12); + } + + &.dropdown-menu-right { + &:before { + left: auto; + right: 5px; + } + } + } + + &[x-placement='top-start'] { + margin-bottom: 15px; + margin-top: 0; + + &.show { + &:before { + content: '\64'; + bottom: -5px; + top: auto; + text-shadow: 0 2px 2px rgba(69, 90, 100, 0.12); + } + } + } + + > li { + padding-left: 15px; + padding-right: 15px; + + > a { + padding: 5px; + color: $theme-font-color; + + i { + font-size: 15px; + display: inline-flex; + align-items: center; + justify-content: center; + margin-right: 10px; + } + } + + &.active, + &:active, + &:focus, + &:hover { + background: transparentize($primary-color, 0.9); + + > a { + background: transparent; + } + } + } +} +/* ================================ Dropdown End ===================== */ +@media (min-width: 1600px) { + .container { + max-width: 1540px; + } +} +@media (max-width: 992px) { + .container { + max-width: 100%; + } +} +/* ======================================================== + =============== document ====================== + ======================================================== + + Grid examples +*/ + +.bd-example-row { + background: $theme-background; + padding: 15px; + margin-bottom: 15px; + + .row { + > [class^='col-'], + > .col { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + background-color: rgba(86, 61, 124, 0.15); + border: 1px solid rgba(86, 61, 124, 0.2); + } + } + + .row + .row { + margin-top: 1rem; + } + + .flex-items-bottom, + .flex-items-middle, + .flex-items-top { + min-height: 6rem; + background-color: rgba(255, 0, 0, 0.1); + } +} + +.bd-example-row-flex-cols .row { + min-height: 10rem; + background-color: rgba(255, 0, 0, 0.1); +} + +/* Docs examples */ + +.bd-example { + position: relative; + padding: 1rem; + margin: 1rem; + border: solid #ddd; + border-width: 0.2rem 0 0; + @media only screen and (max-height: 575px) { + padding: 1.5rem; + margin-right: 0; + margin-left: 0; + border-width: 0.2rem; + } +} +/* Example modals */ + +.modal { + z-index: 1072; + + .popover, + .tooltip { + z-index: 1073; + } +} + +.modal-backdrop { + z-index: 1071; +} + +.bd-example-modal { + background-color: #fafafa; + + .modal { + position: relative; + top: auto; + right: auto; + bottom: auto; + left: auto; + z-index: 1; + display: block; + } + + .modal-dialog { + left: auto; + margin-right: auto; + margin-left: auto; + } +} +/* Example tabbable tabs */ + +.bd-example-tabs .nav-tabs { + margin-bottom: 1rem; +} + +/* Code snippets */ + +.highlight { + padding: 1rem; + margin-top: 1rem; + margin-bottom: 1rem; + background-color: #f3f2fb; + -ms-overflow-style: -ms-autohiding-scrollbar; + @media only screen and (max-height: 575px) { + padding: 1.5rem; + } +} + +.bd-content .highlight { + margin-right: 15px; + margin-left: 15px; + @media only screen and (max-height: 575px) { + margin-right: 0; + margin-left: 0; + } +} + +.highlight { + pre { + padding: 0; + margin-top: 0; + margin-bottom: 0; + background-color: transparent; + border: 0; + } + + pre code { + font-size: inherit; + color: #333; + } +} + +/* ======================================================================= + =============== Ui kit copy model style ====================== */ + +/* Code examples */ +.datta-example { + position: relative; + + .datta-example-btns { + position: absolute; + right: 30px; + top: -10px; + opacity: 0; + transform: rotateX(-90deg); + transition: all 0.3s ease-in-out; + + .datta-example-btn { + display: inline-block; + line-height: 1; + font-weight: 600; + background: $primary-color; + color: #fff; + padding: 0.1875rem 0.3125rem; + border-radius: 2px; + white-space: nowrap; + font-size: 11px; + margin: 0 4px; + + &.copy::before { + content: 'COPY'; + } + + &.copied { + background: $success-color !important; + color: #fff !important; + + &::before { + content: 'COPIED!'; + } + } + } + } + + &:hover .datta-example-btns { + top: -21px; + transform: rotateX(0deg); + opacity: 1; + } +} +/* Modal */ + +.datta-example-modal { + position: fixed; + z-index: 1099; + top: 0; + right: 0; + width: 100%; + height: 100%; + overflow: hidden; + background: #282c34; + transform-origin: 50% 0; + transform: scale(0); + transition: all 0.3s ease-in-out; +} + +.datta-example-modal-opened { + overflow: hidden !important; + + .datta-example-modal { + transform: scale(1); + } +} + +.datta-example-modal-content { + max-width: 100vw; + margin: auto; + padding: 50px; + height: 100vh; + overflow: auto; + > pre { + overflow: hidden; + width: fit-content; + + > code { + padding: 0; + background: none; + font-size: 16px; + } + } +} + +.md-datta-example-modal-copy { + display: block; + position: fixed; + top: 90px; + right: 30px; + margin-right: 8px; + font-size: 1.5rem; + border-radius: 50%; + padding: 10px 15px; + background: $primary-color; + color: #fff; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2); + z-index: 1; + white-space: nowrap; + + &:hover { + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2); + color: #fff; + } + + &.copied::before { + content: 'Copied to Clipboard Successfully ! . . .'; + position: absolute; + display: block; + right: 100%; + margin-right: 10px; + font-size: 14px; + background: $success-color; + line-height: 24px; + height: 24px; + border-radius: 3px; + padding: 0 6px; + top: 50%; + margin-top: -12px; + } +} + +.datta-example-modal-close { + display: block; + position: fixed; + top: 10px; + right: 52px; + color: #fff; + opacity: 0.2; + font-size: 3rem; + font-weight: 100; + transition: all 0.3s ease-in-out; + z-index: 1; + + &:hover { + color: #fff; + opacity: 0.9; + } +} +/* Code */ +.cui-bottom-spacer { + height: 12rem; +} +/* editor style for model */ +.hljs { + padding: 0.5em; + color: #abb2bf; + background: #282c34; +} + +.hljs-comment, +.hljs-quote { + color: #5c6370; + font-style: italic; +} + +.hljs-doctag, +.hljs-formula, +.hljs-keyword { + color: #c678dd; +} + +.hljs-deletion, +.hljs-name, +.hljs-section, +.hljs-selector-tag, +.hljs-subst { + color: #e06c75; +} + +.hljs-literal { + color: #56b6c2; +} + +.hljs-addition, +.hljs-attribute, +.hljs-meta-string, +.hljs-regexp, +.hljs-string { + color: #98c379; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #e6c07b; +} + +.hljs-attr, +.hljs-number, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-pseudo, +.hljs-template-variable, +.hljs-type, +.hljs-variable { + color: #d19a66; +} + +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-symbol, +.hljs-title { + color: #61aeee; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} +/* ================================ md animated mode start ===================== */ + +.md-show.md-effect-12 ~ .md-overlay { + background: $theme-color; +} +/* ================================ md animated mode End ===================== */ +/* ================================ range slider Start ===================== */ + +.tooltip { + &.in { + opacity: 0.9; + } + + .tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } + + &.top { + padding: 5px 0; + margin-top: -3px; + + .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; + } + } +} +/* ================================ range slider End ===================== */ +/* ================================ owl-carousel slider Start ===================== */ + +.owl-carousel { + .owl-nav { + button { + &.owl-next, + &.owl-prev { + padding: 3px 9px; + } + } + } + + button.owl-dot { + } +} +/* ================================ owl-carousel slider End ===================== */ +/* ================================ Bootstrap tags input Start ===================== */ + +.bootstrap-tagsinput { + padding: 10px 15px; + box-shadow: none; + border-radius: 2px; + background: $form-bg; + + .tag { + padding: 5px 12px; + border-radius: 2px; + line-height: 37px; + margin-top: 5px; + margin-right: 5px; + + [data-role='remove'] { + margin-right: -5px; + + &:after { + content: '\e8f6'; + padding: 0 2px; + font-family: 'feather' !important; + } + } + } +} +/* ================================ Bootstrap tags input End ===================== */ +/* ================================ Multi-Select Start ===================== */ + +.ms-container { + width: 100%; +} +/* ================================ Multi-Select End ===================== */ +/* ================================ Blockquote Start ===================== */ + +.blockquote { + border-left: 0.25rem solid $theme-border; + padding: 0.5rem 1rem; + + &.text-right { + border-left: none; + border-right: 0.25rem solid $theme-border; + } +} +/* ================================ Blockquote End ===================== */ +/* ================================ animation start ===================== */ + +.card .animated { + animation-duration: 1s; + border: 5px solid #fff; + margin-bottom: 30px; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2); +} +/* ================================ animation End ===================== */ +/* ================================ browser warning Start ===================== */ + +.ie-warning { + position: fixed; + top: 0; + left: 0; + z-index: 999999; + background: #000000; + width: 100%; + height: 100%; + text-align: center; + color: #fff; + font-family: 'Courier New', Courier, monospace; + padding: 50px 0; + + p { + font-size: 17px; + } + + h1 { + color: #fff; + } + + .iew-container { + min-width: 1024px; + width: 100%; + height: 200px; + background: #fff; + margin: 50px 0; + } + + .iew-download { + list-style: none; + padding: 30px 0; + margin: 0 auto; + width: 720px; + + > li { + float: left; + vertical-align: top; + + > a { + display: block; + color: #000; + width: 140px; + font-size: 15px; + padding: 15px 0; + + > div { + margin-top: 10px; + } + + &:hover { + background-color: #eee; + } + } + } + } +} +/* ================================ browser warning End ===================== */ +/* material icon for material datetime picker */ +/* fallback */ +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url('https://fonts.gstatic.com/s/materialicons/v41/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2') format('woff2'); +} + +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-feature-settings: 'liga'; + -webkit-font-smoothing: antialiased; +} +/* material icon for material datetime picker */ + +/* angkorchat */ +.mobile-angkor-logo { + width: 60%; + + .on { + width: 100%; + padding-left: 2px; + } +} + +.text-align-left { + text-align: left; +} + +.logo-login { + display: none; +} +.logo-login.on { + display: block; +} + +.logo-icon { + display: none; +} +.logo-icon.on { + display: block; +} diff --git a/src/styles/partials/_generic.scss b/src/styles/partials/_generic.scss new file mode 100644 index 0000000..d1795a9 --- /dev/null +++ b/src/styles/partials/_generic.scss @@ -0,0 +1,101 @@ +/** ===================== + Generic-class css start +========================== **/ +/*====== Padding , Margin css starts ======*/ +$i: 0; +@while $i<=50 { + .p { + &-#{$i} { + padding: #{$i}px; + } + + &-t-#{$i} { + padding-top: #{$i}px; + } + + &-b-#{$i} { + padding-bottom: #{$i}px; + } + + &-l-#{$i} { + padding-left: #{$i}px; + } + + &-r-#{$i} { + padding-right: #{$i}px; + } + } + .m { + &-#{$i} { + margin: #{$i}px; + } + + &-t-#{$i} { + margin-top: #{$i}px; + } + + &-b-#{$i} { + margin-bottom: #{$i}px; + } + + &-l-#{$i} { + margin-left: #{$i}px; + } + + &-r-#{$i} { + margin-right: #{$i}px; + } + } + $i: $i + 5; +} +/*====== Padding , Margin css ends ======*/ + +/*====== text-color, background color css starts ======*/ +@each $value in $color-name { + $i: index($color-name, $value); + .bg-#{$value} { + background: nth($color-color, $i); + } + .text-#{$value} { + color: nth($color-color, $i); + } +} +/*====== text-color css ends ======*/ +/*====== Card top border css starts ======*/ +@each $value in $color-name { + $i: index($color-name, $value); + .card-border-#{$value} { + border-top: 4px solid nth($color-color, $i); + } +} +/*====== Card top border ends ======*/ +/*====== Font-size css starts ======*/ +$i: 10; +@while $i<=80 { + .f-#{$i} { + font-size: #{$i}px; + } + $i: $i + 2; +} +/*====== Font-size css ends ======*/ +/*====== Font-weight css starts ======*/ +$i: 100; +@while $i<=900 { + .f-w-#{$i} { + font-weight: #{$i}; + } + $i: $i + 100; +} +/*====== Font-weight css ends ======*/ +/*====== width, Height css starts ======*/ +$i: 20; +@while $i<=150 { + .wid-#{$i} { + width: #{$i}px; + } + .hei-#{$i} { + height: #{$i}px; + } + $i: $i + 5; +} +/*====== width, Height css ends ======*/ diff --git a/src/styles/partials/_mixins.scss b/src/styles/partials/_mixins.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/partials/_variables.scss b/src/styles/partials/_variables.scss new file mode 100644 index 0000000..1072966 --- /dev/null +++ b/src/styles/partials/_variables.scss @@ -0,0 +1,124 @@ +// ======================================= +// List of variables for layout +// ======================================= +/* + description Of variables for build for theme layouts + 1) menu-caption-color + List of color for sidebar menu caption + + 2) brand-background + List of color for logo background + + 3) header-dark-background + List of color for Dark Header + + 4) header-light-background + List of color for light Header + + 5) menu-dark-background + List of color for Dark sidebar menu + + 6) menu-light-background + List of color for light sidebar menu + + 7) menu-active-color + List of color for Active item highliter + + 8) menu-icon-color + List of color for sidebar menu items icon colors +*/ +$header-height: 70px; +$Menu-width: 264px; +$Menu-collapsed-width: 80px; + +// color list for build layouts +// temp variables +$theme-color: linear-gradient(-135deg, #1de9b6 0%, #1dc4e9 100%); +$theme-color2: linear-gradient(-135deg, #899fd4 0%, #a389d4 100%); +$primary-color: #04a9f5; +$warning-color: #f4c22b; +$danger-color: #f44236; +$success-color: #1de9b6; +$purple-color: #a389d4; +$info-color: #3ebfea; +$secondary-color: #748892; +$default-color: #d6d6d6; +$light-color: #f2f2f2; +$dark-color: #37474f; +$inverse-color: $dark-color; +$theme-border: #eaeaea; + +// header +$brand-background: #3f4d67; +$header-dark-background: #3f4d67; +$header-dark-text-color: #fff; +$header-light-background: #fff; +$header-light-text-color: #3f4d67; + +// Menu +$menu-caption-color: #14171d; +$menu-dark-background: #3f4d67; +$menu-dark-text-color: #a9b7d0; +$menu-light-background: #fff; +// $menu-light-text-color: #3f4d67; +$menu-light-text-color: #7e84a3; + +$menu-active-color: #04a9f5; + +// dark layout colors +$dark-layout: #212224; +$dark-layout-font: #adb7be; + +// Menu icon +$menu-icon-color: $primary-color, #ff5252, #01a9ac, #9575cd, #23b7e5, $warning-color; +// Header background +$color-header-name: blue, red, purple, lightblue, dark; +$color-header-color: $primary-color, #ff5252, #9575cd, #23b7e5, lighten($dark-layout, 7%); +// Menu background +$color-menu-name: blue, red, purple, lightblue, dark; +$color-menu-color: $primary-color, #ff5252, #9575cd, #23b7e5, lighten($dark-layout, 7%); +// Active background color +$color-active-name: blue, red, purple, lightblue, dark; +$color-active-color: $primary-color, #ff5252, #9575cd, #23b7e5, lighten($dark-layout, 7%); +// Menu title color +$color-title-name: blue, red, purple, lightblue, dark; +$color-title-color: $primary-color, #ff5252, #9575cd, #23b7e5, lighten($dark-layout, 7%); + +// layout-6 background color +$layout-6-bg-color: #23b7e5; + +$theme-font-family: 'Open Sans', sans-serif; +$theme-font-size: 14px; +$theme-background: #f4f7fa; +$theme-font-color: #888; +$theme-heading-color: #111; + +$color-name: c-blue, c-red, c-green, c-yellow, c-purple; +$color-color: $primary-color, $danger-color, $success-color, $warning-color, $purple-color; +$color-bt-name: primary, danger, success, warning, info; +$color-bt-color: $primary-color, $danger-color, $success-color, $warning-color, $info-color; + +// form-control variables +$form-bg: #f0f3f6; + +$theme-colors: () !default; +$theme-colors: map-merge( + ( + 'primary': $primary-color, + 'secondary': $secondary-color, + 'success': $success-color, + 'info': $info-color, + 'warning': $warning-color, + 'danger': $danger-color, + 'light': $light-color, + 'dark': $dark-color + ), + $theme-colors +); // Color contrast +$yiq-contrasted-threshold: 200 !default; +$yiq-dark-color: #37474f; +$yiq-light-color: #fff; +$theme-color-interval: 8% !default; +$alert-bg-level: -10 !default; +$alert-border-level: -9 !default; +$alert-color-level: 6 !default; diff --git a/src/styles/partials/menu/_menu-lite.scss b/src/styles/partials/menu/_menu-lite.scss new file mode 100644 index 0000000..b7f1841 --- /dev/null +++ b/src/styles/partials/menu/_menu-lite.scss @@ -0,0 +1,4153 @@ +/* new logo start */ +@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css'); + +a { + white-space: pre-wrap; + text-decoration: none; + color: #a1a7c4; +} + +.b-brand { + display: flex; + align-items: center; + + .b-bg { + background: $theme-color; + border-radius: 10px; + width: 35px; + height: 35px; + display: inline-flex; + align-items: center; + justify-content: center; + + i { + color: #fff; + } + } + + .b-title { + margin-left: 10px; + font-weight: 100; + color: #fff; + font-size: 18px; + } +} + +.navbar-collapsed { + .b-brand .b-title { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: all 0.3s ease-in-out; + } + + .mobile-menu { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: all 0.3s ease-in-out; + } + + &:hover { + .b-brand .b-title { + transform: rotateY(0deg); + opacity: 1; + } + + .mobile-menu { + transition-delay: 0.3s; + transform: rotateY(0deg); + opacity: 1; + } + } +} +/* new logo End */ +/* Pre-loader css start */ +.loader-bg { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 3px; + z-index: 1035; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); + + .loader-track { + position: relative; + height: 3px; + display: block; + width: 100%; + overflow: hidden; + + .loader-fill { + &:after, + &:before { + content: ''; + background: $theme-color; + position: absolute; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + } + + &:before { + animation: mbar 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + } + + &:after { + animation: m_s 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation-delay: 1.15s; + } + } + } +} +@keyframes mbar { + 0% { + left: -35%; + right: 100%; + } + + 60% { + left: 100%; + right: -90%; + } + + 100% { + left: 100%; + right: -35%; + } +} +@keyframes m_s { + 0% { + left: -200%; + right: 100%; + } + + 60% { + left: 107%; + right: -8%; + } + + 100% { + left: 107%; + right: -8%; + } +} +/* Pre-loader css end */ +/* header css start */ +.pcoded-header { + z-index: 1000; + position: fixed; + display: flex; + justify-content: space-between; + min-height: $header-height; + padding: 0; + top: 0; + background: #ffffff; + color: $header-light-text-color; + width: 100%; + margin: 0; + transition: all 0.3s ease-in-out; + + .navbar-collapse { + width: calc(100% - 230px); + box-shadow: 6px 1px 4px 0 rgba(21, 34, 50, 0.08); + flex-grow: 1; + z-index: 97; + } + .header-logo { + padding-left: 40px; + background: #fff; + width: 235px; + margin: 0; + height: 70px; + align-items: center; + display: flex; + box-shadow: -7px 2px 8px 0 rgba(21, 34, 50, 0.08); + } + .m-header { + display: none; + + .logo-dark, + .logo-thumb { + display: none; + } + } + + .input-group { + background: transparent; + + .input-group-text { + margin-right: 0; + } + } + + .input-group { + background: transparent; + } + + .input-group .input-group-text, + a, + .btn, + &.dropdown-toggle { + color: $header-light-text-color; + + &:hover { + color: $primary-color; + } + } + + #mobile-header { + display: none; + } + + .navbar-nav { + padding-left: 0; + list-style: none; + margin-bottom: 0; + display: inline-block; + + > li { + line-height: $header-height; + display: inline-block; + padding: 0 0 0 37px; + + .nav-link { + padding: 0; + } + + &:first-child { + padding-left: 25px; + } + + &:last-child { + padding-right: 40px; + } + } + } + + .mr-auto { + .dropdown-menu { + margin-left: -20px; + } + } + + .ml-auto { + float: right; + + .dropdown-menu { + margin-right: -20px; + } + } + + .main-search { + .input-group { + border-radius: 20px; + padding: 0; + + .form-control, + .input-group-text { + background: transparent; + border: none; + border-radius: 0; + padding: 0; + } + + .search-close { + display: none; + } + + .search-btn { + border-radius: 50%; + padding: 0; + background: transparent; + border-color: transparent; + box-shadow: none; + } + + .form-control { + transition: all 0.3s ease-in-out; + width: 0; + font-size: 14px; + } + + .form-control, + .search-btn { + &:active, + &:focus, + &:hover { + outline: none; + box-shadow: none; + } + } + } + + &.open { + .input-group { + background: #fff; + border: 1px solid #f1f1f1; + box-shadow: 0 6px 12px -5px rgba(65, 76, 78, 0.08); + padding: 5px 5px 5px 20px; + + .search-close { + display: flex; + } + + .search-btn { + padding: 5px; + margin-left: 5px; + background: $primary-color; + border-color: $primary-color; + + .input-group-text { + color: #fff; + } + } + + .form-control { + transition: all 0.3s ease-in-out; + width: 0; + } + + .form-control, + .search-btn { + &:active, + &:focus, + &:hover { + outline: none; + box-shadow: none; + } + } + } + } + } + + .dropdown { + .dropdown-toggle { + line-height: $header-height; + display: flex; + align-items: center; + + &:after { + display: none; + } + } + .pcoded-micon { + position: relative; + display: block; + .alarm { + position: absolute; + left: 50%; + top: 30%; + width: 16px; + height: 16px; + border-radius: 50%; + vertical-align: middle; + margin-right: 10px; + transform: translateY(-1px); + background-color: #f0142f; + color: #fff; + font-family: 'Pretendard'; + font-size: 12px; + text-align: center; + line-height: 16px; + } + } + + .dropdown-menu { + position: absolute; + border: none; + margin-top: -6px; + + &.show { + &:before { + display: none; + } + } + + li { + line-height: 1.2; + + a { + padding: 10px; + font-size: 14px; + } + + &.active, + &:active, + &:focus, + &:hover { + a { + color: $theme-font-color; + } + } + } + } + + &.show { + &:before { + font-family: 'pct'; + position: absolute; + left: -5px; + top: $header-height - 10; + z-index: 1001; + font-size: 40px; + line-height: 0; + color: #fff; + text-shadow: 0 -2px 2px rgba(65, 76, 78, 0.12); + } + } + + .notification { + width: 185px; + padding: 10px 16px; + line-height: 1.4; + overflow: hidden; + border-radius: 8px; + font-family: Pretendard; + font-size: 12px; + letter-spacing: -0.24px; + color: #131523; + + .notification_box { + padding: 9px 0; + display: flex; + align-items: center; + &.new_inquiry .circle { + background: #21d59b; + cursor: pointer; + } + + .circle { + display: block; + width: 10px; + height: 10px; + border-radius: 10px; + background: #f0142f; + margin-right: 10px; + } + + a { + display: block; + } + } + + .noti-head { + border-bottom: 1px solid #f1f1f1; + padding: 15px 20px; + + a { + text-decoration: underline; + font-size: 13px; + } + } + + .noti-body { + padding: 0; + + img { + width: 40px; + margin-right: 20px; + } + + li { + padding: 15px 20px; + transition: all 0.3s ease-in-out; + + &.n-title { + padding-bottom: 0; + + p { + margin-bottom: 5px; + } + } + + &.notification:hover { + background: transparentize($primary-color, 0.9); + } + + p { + margin-bottom: 5px; + font-size: 13px; + + strong { + color: #222; + } + } + + .n-time { + font-size: 80%; + float: right; + } + } + } + + .noti-footer { + border-top: 1px solid #f1f1f1; + padding: 15px 20px; + text-align: center; + + a { + text-decoration: underline; + font-size: 13px; + } + } + + ul { + padding-left: 0; + margin-bottom: 0; + list-style: none; + + li { + padding: 20px 15px; + } + } + } + + .profile-notification { + width: 96px; + padding: 0; + line-height: 1.4; + overflow: hidden; + min-width: 96px !important; + border-radius: 8px; + + .pro-head { + color: #fff; + border-radius: 0.25rem 0.25rem 0 0; + padding: 15px; + position: relative; + background: $primary-color; + + img { + width: 40px; + margin-right: 10px; + } + + .dud-logout { + color: #fff; + padding-right: 0; + position: absolute; + right: 0; + top: 0; + height: 100%; + width: 40px; + display: flex; + align-items: center; + justify-content: center; + } + } + + .pro-body { + padding: 4px 4px 8px 4px; + margin-bottom: 0; + list-style: none; + + li { + a { + color: #131523; + font-size: 12px; + padding: 0; + font-family: pretendard; + display: flex; + align-items: center; + letter-spacing: -0.24px; + text-align: left; + cursor: pointer; + + img { + display: block; + } + + span { + display: block; + margin-left: 10px; + } + } + + &.active, + &:hover { + background: #e9ecef; + + > a { + background: transparent; + } + } + &:active, + &:focus { + background: #fec702; + + > a { + color: #fff; + } + } + } + } + } + } +} +/* header css end */ +/* menu[ vartical ] css start */ +.mobile-menu { + display: flex; + align-items: center; + justify-content: center; + width: 37px; + height: $header-height; + position: absolute; + right: 0; + top: 0; + padding: 0 10px; + + span { + position: relative; + display: block; + width: 100%; + height: 2.8px; + background-color: #fff; + transition: all 0.3s ease-in-out; + backface-visibility: hidden; + border-radius: 2px; + + &:after, + &:before { + content: ''; + position: absolute; + left: 0; + height: 2.8px; + background-color: #fff; + transition: all 0.3s; + backface-visibility: hidden; + border-radius: 2px; + } + + &:after { + top: 5px; + width: 70%; + } + + &:before { + top: -5px; + width: 40%; + } + } + + &.on { + span { + background-color: transparent; + + &:after, + &:before { + height: 2px; + width: 100%; + } + + &:before { + transform: rotate(45deg) translate(4px, 4px); + } + + &:after { + transform: rotate(-45deg) translate(3px, -3px); + } + } + } +} + +.navbar-brand { + background: $menu-dark-background; +} + +.pcoded-header, +.pcoded-main-container { + &:before { + content: ''; + transition: all 0.3s ease-in-out; + } +} + +.pcoded-navbar { + display: block; + z-index: 990; + position: fixed; + top: 70px !important; + transition: all 0.3s ease-in-out; + background: #fff !important; + width: 230px !important; + height: 100%; + + ul { + padding-left: 0; + list-style: none; + margin-bottom: 0; + + li a { + white-space: nowrap; + color: #7e84a3; + font-family: 'Pretendard'; + font-weight: 500; + font-size: 14px; + letter-spacing: -0.28px; + } + li a.active { + .pcoded-mtext { + font-weight: 700; + color: #131523; + font-family: Pretendard; + } + .pcoded-micon img { + filter: invert(81%) sepia(30%) saturate(5422%) hue-rotate(2deg) brightness(150%) contrast(106%); + } + } + } + + .datta-scroll.navbar-content { + height: calc(100vh - #{$header-height}); + } + + .header-logo { + position: relative; + align-items: center; + display: inline-flex; + float: left; + height: $header-height; + text-align: center; + width: $Menu-width; + margin-right: 0; + padding: 10px 40px; + transition: all 0.3s ease-in-out; + background: #fff !important; + + .logo-dark { + display: none; + } + + .logo-thumb { + transform: rotateY(-90deg); + opacity: 0; + position: absolute; + transition: unset; + } + + + .datta-scroll { + float: left; + } + } + + .mobile-menu { + display: flex; + align-items: center; + justify-content: center; + width: 37px; + height: $header-height; + position: absolute; + right: 10px; + top: 0; + padding: 0 10px; + transition: all 0.3s ease-in-out; + + span { + position: relative; + display: block; + width: 100%; + height: 2.8px; + background-color: $menu-dark-text-color; + transition: all 0.3s ease-in-out; + backface-visibility: hidden; + border-radius: 2px; + + &:after, + &:before { + content: ''; + position: absolute; + left: 0; + height: 2.8px; + background-color: $menu-dark-text-color; + transition: all 0.3s; + backface-visibility: hidden; + border-radius: 2px; + } + + &:after { + top: 5px; + width: 70%; + } + + &:before { + top: -5px; + width: 40%; + } + } + a &.on { + span { + background-color: transparent; + + &:after, + &:before { + height: 2px; + width: 100%; + } + + &:before { + transform: rotate(45deg) translate(4px, 4px); + } + + &:after { + transform: rotate(-45deg) translate(3px, -3px); + } + } + } + } + + .pcoded-badge { + font-size: 75%; + position: absolute; + right: 30px; + top: 12px; + padding: 2px 7px; + border-radius: 2px; + } + + .pcoded-inner-navbar { + flex-direction: column; + margin-top: 20px; + + li { + position: relative; + padding: 0; + + .pcoded-submenu { + display: none; + a { + margin-left: 60px; + font-weight: 400; + font-size: 12px; + font-family: 'Pretendard'; + height: 26px; + margin-bottom: 0.5rem; + white-space: normal; + width: 168px; + } + .active { + font-weight: 700; + } + } + + &.nav-link.active { + background: rgba(254, 199, 2, 0.05); + a { + background: rgba(254, 199, 2, 0); + img { + filter: invert(81%) sepia(30%) saturate(5422%) hue-rotate(2deg) brightness(150%) contrast(106%); + } + .pcoded-mtext { + font-weight: 700; + color: #131523; + font-family: Pretendard; + } + } + .pcoded-submenu { + display: block; + background: transparent; + } + } + + > a { + background: transparent; + text-align: left; + padding: 7px 0px; + display: block; + border-radius: 0; + position: relative; + display: flex; + justify-content: flex-start; + align-items: center; + white-space: nowrap; + height: 52px; + + .pcoded-mtext { + position: relative; + white-space: nowrap; + } + + > .pcoded-micon { + font-size: 1rem; + // padding: 4px 7px; + margin-right: 7px; + border-radius: 4px; + width: 30px; + display: inline-flex; + align-items: center; + height: 30px; + text-align: center; + margin: 0 10px 0 20px; + } + } + + &.pcoded-menu-caption { + font-size: 10px; + font-weight: 600; + padding: 25px 20px 5px; + text-transform: uppercase; + position: relative; + } + + &.disabled { + > a { + cursor: default; + opacity: 0.5; + } + } + } + } + width: $Menu-width; + // height: 100vh; + top: 0; + background: $menu-dark-background; + color: $menu-dark-text-color; + + .pcoded-submenu { + background: darken($header-dark-background, 3%); + // padding: 15px 0; + } + + a { + color: $menu-dark-text-color; + } + + .navbar-content, + .navbar-wrapper { + width: 100%; + height: 100%; + } + + &.navbar-collapsed { + width: $Menu-collapsed-width; + height: 100%; + transition: all 0.3s ease-in-out; + + .header-logo { + width: $Menu-collapsed-width; + + img { + /* junny */ + width: 100%; + /*transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: unset;*/ + } + + .logo-thumb { + transform: rotateY(0deg); + transform-origin: 0 0; + opacity: 1; + left: calc((#{$Menu-collapsed-width} / 2) - 20px); + } + + .mobile-menu { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + } + } + + .navbar-content { + &.ps { + overflow: visible; + } + } + + .pcoded-menu-caption { + position: relative; + width: 100%; + height: auto; + white-space: nowrap; + overflow: hidden; + + > label { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: all 0.3s ease-in-out; + } + + &:after { + content: ''; + position: absolute; + top: 25px; + left: 15px; + width: calc(100% - 30px); + height: 1px; + background: rgba(0, 0, 0, 0.1); + } + } + + .pcoded-inner-navbar { + > li { + > a { + z-index: 1026; + padding: 7px 25px; + + > .pcoded-mtext { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: all 0.3s ease-in-out; + } + } + + &.pcoded-hasmenu { + > a { + &:after { + right: 12px; + } + } + } + } + + > li { + &.pcoded-trigger { + .pcoded-submenu { + &:after { + content: ''; + position: absolute; + top: 49px; + left: calc(calc(#{$Menu-collapsed-width} / 2) - 3px); + width: 1px; + height: calc(100% - 49px); + background: transparentize($menu-dark-text-color, 0.8); + } + + li { + a { + color: transparent; + white-space: nowrap; + } + } + + .pcoded-submenu { + li { + a:before { + opacity: 0; + } + } + } + } + } + } + } + + ~ .pcoded-header { + width: calc(100% - #{$Menu-collapsed-width}); + } + + ~ .pcoded-header, + ~ .pcoded-main-container { + margin-left: $Menu-collapsed-width; + } + + .pcoded-badge { + transform: rotateX(-90deg); + transform-origin: 50% 50%; + opacity: 0; + transition: all 0.15s ease-in-out; + } + + &:hover { + width: $Menu-width !important; + + .pcoded-badge { + transition-delay: 0.3s; + transform: rotateX(0deg); + opacity: 1; + } + + .header-logo { + width: $Menu-width; + + img { + transform: rotateY(0deg); + opacity: 1; + } + + .logo-thumb { + transform: rotateY(-90deg); + opacity: 0; + } + + .mobile-menu { + display: flex; + right: 10px; + } + } + + .pcoded-menu-caption { + > label { + transform: rotateY(0deg); + opacity: 1; + } + + &:after { + background: transparent; + } + } + + .mobile-menu { + transform: rotateY(0deg); + opacity: 1; + } + + .pcoded-inner-navbar { + > li { + > a { + > .pcoded-mtext { + transform: rotateY(0deg); + opacity: 1; + + &:after { + opacity: 1; + visibility: visible; + } + } + } + + &.pcoded-hasmenu { + > a { + &:after { + transform: rotateX(0deg); + } + } + + &.pcoded-trigger { + > a { + &:after { + transform: rotateX(0deg) rotate(90deg); + } + } + } + } + } + + > li { + &.pcoded-trigger { + .pcoded-submenu { + &:after { + display: none; + } + + li { + a { + color: inherit; + } + } + + .pcoded-submenu { + li { + a:before { + opacity: 1; + } + } + } + } + } + } + } + } + } + + .pcoded-menu-caption { + color: #e8edf7; + } + + .pcoded-inner-navbar { + li > a { + &.active, + &:focus, + &:hover { + /* junny */ + /* color: #1dc4e9; */ + color: #fec702; + } + + .pcoded-submenu > li { + &.active, + &:focus, + &:hover { + > a { + &:before { + /* junny */ + /* background: #1dc4e9; */ + background: #fec702; + } + } + } + } + } + + > li { + &.active, + &.pcoded-trigger { + // &:after { + // content: ""; + // /* junny */ + // /*background-color: #1dc4e9;*/ + // background-color: #fec702; + // z-index: 1027; + // position: absolute; + // left: 0; + // top: 5px; + // width: 4px; + // height: calc(100% - 5px); + // } + + > a { + background: darken($menu-dark-background, 6%); + color: #fff; + &:after { + content: ''; + /* junny */ + /*background-color: #1dc4e9;*/ + background-color: #fec702; + z-index: 1027; + position: absolute; + left: 0; + top: 5px; + width: 4px; + height: calc(100% - 5px); + } + } + } + } + + > .pcoded-menu-caption { + &.active, + &.pcoded-trigger { + &:after { + display: none; + } + } + } + } +} + +.pcoded-navbar { + &.mob-open, + &.navbar-collapsed:hover { + ~ .pcoded-header, + ~ .pcoded-main-container { + margin-left: $Menu-collapsed-width; + + &:before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.2); + z-index: 1; + } + } + } +} +/* menu [ vartical ] css end */ +/* menu[ horizontal ] css start */ +.pcoded-navbar { + &.theme-horizontal { + display: block; + height: $header-height; + width: 100%; + z-index: 1023; + box-shadow: none; + position: fixed; + top: $header-height; + + .pcoded-inner-navbar > li > a > .pcoded-badge { + position: relative; + top: 0; + right: -2px; + } + + &.top-nav-collapse { + top: -#{$header-height}; + } + + &.default, + &.default.top-nav-collapse { + top: $header-height; + } + + .header-logo { + display: none; + } + + .sidenav-horizontal-wrapper { + display: flex; + align-items: center; + } + + .pcoded-inner-navbar { + display: block; + list-style: none; + margin: 0; + padding: 0; + position: relative; + white-space: nowrap; + transition: all 0.5s ease-in-out; + + .pcoded-menu-caption { + display: none; + } + + > li { + display: inline-block; + list-style: outside none none; + margin: 0; + padding: 0; + position: relative; + + > a { + margin: 0; + padding: 8px 15px; + + > .pcoded-mtext { + position: relative; + top: 0; + margin-right: 5px; + } + + &:after { + position: relative; + top: 0; + right: 0; + } + } + + &:last-child { + > a { + margin-right: 70px; + } + } + + &.active, + &.pcoded-trigger, + &:hover { + a { + box-shadow: none; + color: #fff; + background: transparent; + } + } + + &.pcoded-hasmenu { + a.active { + color: $primary-color; + background: transparent; + } + &.active, + &.pcoded-trigger { + &:before { + content: '\6d'; + position: absolute; + bottom: -34px; + left: 0; + font-family: 'pct'; + z-index: 1001; + font-size: 50px; + line-height: 1; + padding-left: calc(50% - 25px); + color: $menu-dark-background; + text-shadow: 0 3px 4px rgba(69, 90, 100, 0.05); + width: 100%; + height: 40px; + transform: scaleX(1.2); + } + + > .pcoded-submenu { + margin-top: 30px; + } + } + } + + &.active, + &.pcoded-trigger { + &:after { + content: ''; + background-color: #fec702; + z-index: 1027; + position: absolute; + left: 19px; + top: auto; + bottom: 5px; + width: 23px; + height: 2px; + } + } + + &.pcoded-hasmenu.edge { + > .pcoded-submenu { + left: auto; + right: 0; + } + } + } + + .pcoded-hasmenu { + position: relative; + + .pcoded-submenu { + opacity: 0; + visibility: hidden; + transform-origin: 50% 50%; + transition: + transform 0.3s, + opacity 0.3s; + transform-style: preserve-3d; + transform: rotateX(-90deg); + position: absolute; + min-width: 250px; + display: block; + z-index: 1; + top: 100%; + list-style: outside none none; + margin: 0; + border-radius: 4px; + padding: 15px; + box-shadow: 0 4px 24px 0 rgba(62, 57, 107, 0.18); + background: #fff; + + a { + color: $menu-dark-background; + padding: 10px 20px 10px 30px; + + &:before { + left: 5px; + top: 19px; + } + } + + li { + &.active, + &.pcoded-trigger, + &:hover { + > a { + color: $primary-color; + } + } + } + + .pcoded-submenu { + position: absolute; + min-width: 250px; + z-index: 1; + left: calc(100% + 10px); + top: -10px; + margin: 0 0 0 20px; + border-radius: 4px; + + &:before { + content: '\6a'; + position: absolute; + top: 8px; + left: -31px; + font-family: 'pct'; + z-index: 1001; + font-size: 50px; + line-height: 1; + color: #fff; + width: 40px; + height: 100%; + text-shadow: -8px 0 13px rgba(62, 57, 107, 0.08); + } + + a { + color: $menu-dark-background; + padding: 10px 20px 10px 30px; + + &:before { + left: 5px; + top: 19px; + } + } + } + + .pcoded-hasmenu { + &.edge { + .pcoded-submenu { + left: auto; + margin: 0 20px 0 0; + right: calc(100% + 10px); + + &:before { + content: '\6b'; + left: auto; + right: -21px; + text-shadow: 8px 0 13px rgba(62, 57, 107, 0.08); + } + } + } + } + } + + &.pcoded-trigger { + > .pcoded-submenu { + opacity: 1; + visibility: visible; + transform: rotateX(0deg); + } + } + } + } + + .navbar-content { + display: flex; + } + + ~ .pcoded-header { + position: fixed; + top: 0; + margin-left: 0; + width: 100%; + + .b-title { + color: $header-light-text-color; + } + + &[class*='header-']:not(.header-default) { + .b-title { + color: #fff; + } + } + + .m-header { + display: inline-flex; + padding: 0 15px; + + .logo-main, + .logo-thumb { + display: none; + } + + .logo-dark { + display: inline-block; + } + } + + .mobile-menu { + display: none; + } + + &[class*='header-']:not(.header-default) { + .m-header { + display: inline-flex; + padding: 0 15px; + + .logo-dark, + .logo-thumb { + display: none; + } + + .logo-main { + display: inline-block; + } + } + color: rgba(256, 256, 256, 0.8); + + .dropdown-menu { + color: $theme-font-color; + + a { + color: $theme-font-color; + } + + > li { + > a { + color: $theme-font-color; + } + + &.active, + &:active, + &:focus, + &:hover { + background: transparentize($primary-color, 0.9); + + > a { + background: transparent; + } + } + } + } + // .input-group .input-group-text, + a, + dropdown-toggle { + color: rgba(256, 256, 256, 0.8); + + &:hover { + color: #fff; + } + } + .dropdown { + .notification { + .noti-body { + li { + &.notification:hover { + background: transparentize($primary-color, 0.9); + } + } + } + } + + .profile-notification { + .pro-head { + color: #fff; + background: $primary-color; + + .dud-logout { + color: #fff; + } + } + } + + &.drp-user.show { + &:before { + color: $primary-color; + } + } + } + } + } + + ~ .pcoded-main-container { + margin-top: $header-height * 2; + margin-left: 0; + } + } +} +/* menu [ horizontal ] css end */ +/* main content start */ + +.pcoded-wrapper { + width: 100%; +} +.pcoded-content { + position: relative; + display: block; + padding: 0 80px; + margin-top: 120px; +} + +.pcoded-main-container { + position: relative; + margin: 0 auto; + display: flex; + clear: both; + float: unset; + right: 0; + min-height: 885px !important; + transition: all 0.3s ease-in-out; + gap: 230px; +} +/* main content end*/ +/* ========================== Rsponsive Menu start ====================== */ +@media only screen and (max-width: 991px) { + .pcoded-header { + // background: $header-dark-background; + color: $header-dark-text-color; + + .input-group-text, + a, + dropdown-toggle { + color: $header-light-text-color; + + &:hover { + color: $primary-color; + } + } + + #mobile-header { + display: none; + right: 20px; + } + + > .collapse:not(.show) { + display: flex; + background: #fff; + box-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08); + } + + .dropdown-menu, + .dropdown-menu a, + .search-close .input-group-text { + color: $header-dark-background; + } + + .m-header { + display: flex; + justify-content: flex-start; + align-items: center; + width: 100%; + height: $header-height; + + .b-brand { + margin-left: 20px; + } + + .mobile-menu { + right: 20px; + } + } + + .full-screen { + display: none; + } + + .navbar-nav { + > li { + &:last-child { + padding-right: 60px; + } + } + } + } +} +@media only screen and (max-width: 575px) { + .pcoded-header { + .navbar-nav { + > li:first-child { + padding-left: 0; + } + + > li:last-child { + padding-right: 20px; + } + } + + .navbar-nav.mr-auto { + li { + display: none; + + &.nav-item:not(.dropdown) { + display: block; + padding-right: 0; + + .search-close { + display: none; + } + } + } + } + + .dropdown { + &.show { + position: static; + + a:after { + display: none; + } + + &:before { + display: none; + } + } + + .notification { + width: 100%; + } + + .dropdown-menu { + width: 95%; + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + } + } + } + + .header-chat.open, + .header-user-list.open { + width: 280px; + } + + .pcoded-content { + padding: 30px 15px; + } + + .card { + margin-bottom: 15px; + } +} +@media only screen and (max-width: 1200px) and (min-width: 768px) { + .pcoded-navbar { + .header-logo { + transition: none; + } + + &.navbar-collapsed { + transition: none; + + .header-logo { + img { + transition: none; + } + } + + .pcoded-menu-caption { + > label { + transition: none; + } + } + + .pcoded-inner-navbar { + > li { + > a { + > .pcoded-mtext { + transition: none; + } + } + + &.pcoded-hasmenu { + > a { + &:after { + transition: none; + transition-delay: unset; + } + } + } + } + } + + .pcoded-badge { + transition: none; + } + + &:hover { + .pcoded-badge { + transition-delay: unset; + } + } + } + } +} +/* responsive horizontal menu */ +@media only screen and (max-width: 991px) { + .pcoded-navbar { + &.theme-horizontal { + margin-left: 0; + + ~ .pcoded-header { + > .collapse:not(.show) { + display: inline-flex; + background: #fff; + box-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08); + } + + .b-title { + color: #fff; + } + } + + .pcoded-inner-navbar { + .pcoded-hasmenu { + &.pcoded-trigger { + > .pcoded-submenu { + .pcoded-trigger, + .pcoded-trigger.edge { + > .pcoded-submenu { + position: relative; + left: 0; + min-width: 100%; + margin: 0; + box-shadow: none; + + &:before { + display: none; + } + } + } + } + } + } + } + } + } +} +/* ========================== Rsponsive Menu end ====================== */ +/* * Horizontal */ + +.theme-horizontal { + .sidenav-horizontal-wrapper { + flex: 0 1 100%; + width: 0; + + .sidenav:not(.sidenav-no-animation) & .sidenav-inner { + transition: margin 0.2s; + } + } + + .sidenav-horizontal-next, + .sidenav-horizontal-prev { + position: relative; + display: block; + flex: 0 0 auto; + width: 2.25rem; + background-color: $menu-dark-background; + z-index: 9; + + &::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + display: block; + width: 0.8rem; + height: 0.8rem; + border: 2px solid; + border-top: 0; + } + + &.disabled { + cursor: default !important; + opacity: 0; + } + } + + .sidenav-horizontal-prev::after { + border-right: 0; + transform: translate(-50%, -50%) rotate(45deg); + } + + .sidenav-horizontal-next::after { + border-left: 0; + transform: translate(-50%, -50%) rotate(-45deg); + } +} +@keyframes sidenavDropdownShow { + 0% { + opacity: 0; + transform: translateY(-0.5rem); + } + + 100% { + opacity: 1; + transform: translateY(0); + } +} +// ========================== Menu Styler Start ====================== +$style-block-width: 400px; + +.menu-styler { + z-index: 1029; + position: relative; + color: $theme-font-color; + + h5, + h6 { + color: $theme-heading-color; + font-weight: 400; + } + + hr { + border-top: 1px solid rgba(0, 0, 0, 0.1); + } + + .style-toggler { + > a { + position: fixed; + right: 0; + top: 30vh; + transition: 0.3s ease-in-out; + + &:before { + content: '\62'; + top: 0; + font-size: 120px; + position: absolute; + right: -45px; + font-family: 'pct'; + z-index: 1001; + line-height: 0; + color: $primary-color; + transition: 0.3s ease-in-out; + text-shadow: + 1px 0 2px transparentize($primary-color, 0.1), + 3px 0 5px rgba(0, 0, 0, 0.1); + letter-spacing: -44px; + transform: rotate(180deg); + } + + &:after { + content: '\e8c3'; + top: -7px; + font-size: 18px; + position: absolute; + right: 4px; + font-family: 'feather'; + z-index: 1029; + line-height: 1; + color: #fff; + transition: 0.3s ease-in-out; + animation: anim-rotate 1.5s linear infinite; + @media all and (-ms-high-contrast: none) { + line-height: 0.5; + } + } + } + } + + &.open { + .style-toggler { + > a { + right: $style-block-width; + + &:after { + content: '\e847'; + top: -7px; + font-size: 18px; + animation: anim-rotate 0s linear infinite; + } + } + } + + .style-block { + right: 0; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.2); + } + } + + .style-block { + position: fixed; + top: 0; + right: -#{$style-block-width}; + width: $style-block-width; + height: 100vh; + background: #fff; + z-index: 1030; + transition: 0.3s ease-in-out; + padding: 25px 20px 20px; + } + + .mst-scroll { + height: calc(100vh - 175px); + background-color: transparentize($primary-color, 0.97); + padding: 0 15px; + } + + label { + margin-bottom: 3px; + } + + .switch input[type='checkbox'] + .cr { + top: 8px; + } + + .radio { + input[type='radio'] { + + .cr { + margin-right: 10px; + + &:after, + &:before { + margin-right: 3px; + } + } + } + } + + h6 { + position: relative; + margin: 10px 0 15px; + + &:after { + content: ''; + background-color: $primary-color; + position: absolute; + left: 0; + bottom: -8px; + width: 40px; + height: 2px; + } + } + + .nav-pills { + padding: 0; + box-shadow: none; + + li { + width: calc(100% / 3); + } + } + + .tab-content { + padding: 15px; + box-shadow: none; + background-color: transparentize($primary-color, 0.97); + border-top: 2px solid $primary-color; + } + @media only screen and (max-width: 992px) { + display: none; + } + + .config-scroll { + height: calc(100vh - 430px); + } +} + +.lay-customizer .theme-color, +.theme-color { + display: block; + position: relative; + padding: 5px 5px 0; + margin-bottom: 10px; + + > a { + position: relative; + width: 45px; + height: 30px; + border-radius: 2px; + display: inline-block; + margin-right: 8px; + background: $theme-background; + overflow: hidden; + box-shadow: 0.4px 0.9px 3px 0 rgba(0, 0, 0, 0.33); + + span { + width: 100%; + position: absolute; + + &:after, + &:before { + content: ''; + height: 100%; + position: absolute; + } + + &:before { + width: 30%; + left: 0; + background: $menu-dark-background; + } + + &:after { + width: 70%; + right: 0; + background: $theme-background; + } + } + + > span:nth-child(1) { + height: 30%; + top: 0; + } + + > span:nth-child(2) { + height: 75%; + bottom: 0; + } + + &.active { + box-shadow: 0 0 0 3px $primary-color; + + &:before { + content: '\e8dc'; + top: -1px; + font-size: 20px; + position: absolute; + left: 12px; + font-family: 'feather'; + z-index: 1001; + color: $primary-color; + transition: 0.3s ease-in-out; + text-shadow: + 0 1px 3px transparentize($primary-color, 0.1), + 0 3px 8px rgba(0, 0, 0, 0.1); + } + + &:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.4); + } + } + + &[data-value='menu-light'] { + span { + &:before { + background: $menu-light-background; + } + } + } + + &[data-value='dark'] { + span { + &:after { + background: darken($dark-layout, 7%); + } + } + } + + &[data-value='reset'] { + background: $danger-color; + color: #fff; + display: inline-flex; + align-items: center; + justify-content: center; + top: -10px; + width: 135px; + } + } + + &.small { + > a { + width: 25px; + height: 25px; + border-radius: 50%; + + &:before { + font-size: 15px; + left: 5px; + top: 1px; + } + + > span { + display: none; + } + } + } + + &.navbar-images { + > a { + height: 90px; + background-size: cover; + background-position: center center; + + span { + display: none; + } + + &.active:before { + top: 35px; + content: '\e87c'; + } + } + } + + &.bg-images { + > a { + border-radius: 2px; + background-size: cover; + background-position: center center; + + span { + display: none; + } + + &.active:before { + top: 35px; + content: '\e87c'; + } + } + } + // prebuild layout + &.prelayout-color { + > a { + margin-bottom: 5px; + &[data-value='l1'] { + > span { + &:nth-child(1) { + z-index: 1; + + &:before { + background: linear-gradient( + to bottom, + $primary-color 0%, + $primary-color 80%, + $menu-dark-text-color 80%, + $menu-dark-text-color 90%, + $primary-color 91%, + $primary-color 100% + ); + } + } + + &:nth-child(2) { + &:before { + background: linear-gradient( + to right, + $menu-dark-background 0%, + $menu-dark-background 20%, + $menu-dark-text-color 25%, + $menu-dark-text-color 30%, + $menu-dark-background 20%, + $menu-dark-background 100% + ); + } + } + } + } + &[data-value='l2'] { + > span { + &:nth-child(1) { + &:before { + background: $menu-dark-background; + } + } + + &:nth-child(2) { + &:before { + background: $theme-color; + } + } + } + } + + &[data-value='l2-2'] { + > span { + &:nth-child(1) { + &:before { + background: $menu-dark-background; + } + } + + &:nth-child(2) { + &:before { + background: $theme-color2; + } + } + } + } + + &[data-value='l3'] { + > span { + &:nth-child(1) { + &:before { + background: $menu-dark-background; + } + } + + &:nth-child(2) { + &:before { + background: $primary-color; + } + } + } + } + + &[data-value='l4'] { + > span { + &:nth-child(1) { + &:before { + background: $theme-color; + } + } + + &:nth-child(2) { + &:before { + background: $dark-layout; + } + } + } + } + + &[data-value='l4-2'] { + > span { + &:nth-child(1) { + &:before { + background: $theme-color2; + } + } + + &:nth-child(2) { + &:before { + background: $dark-layout; + } + } + } + } + + &[data-value='l5-h'] { + > span { + &:nth-child(1) { + height: 40%; + + &:after, + &:before { + background: linear-gradient($primary-color 50%, #fff 0%); + box-shadow: 7px 0 15px 0 rgba(69, 90, 100, 0.09); + z-index: 1; + } + } + + &:nth-child(2) { + height: 60%; + + &:after, + &:before { + background: $theme-background; + } + } + } + } + + &[data-value='l-lite'] { + > span { + &:nth-child(1) { + &:after, + &:before { + background: nth($color-header-color, 4); + } + } + + &:nth-child(2) { + &:before { + background: #fff; + } + } + } + } + + &[data-value='l6'] { + > span { + &:nth-child(1) { + height: 50%; + + &:after { + background: nth($color-header-color, 4); + } + + &:before { + background: linear-gradient(nth($color-header-color, 4) 50%, #fff 0%); + z-index: 1; + } + } + + &:nth-child(2) { + height: 50%; + + &:after { + background: $theme-background; + } + + &:before { + background: #fff; + } + } + } + } + + &[data-value='l8'] { + > span { + &:nth-child(1) { + &:after { + background: nth($color-header-color, 4); + } + + &:before { + background: nth($color-header-color, 4); + } + } + + &:nth-child(2) { + &:after { + background: $theme-background; + } + + &:before { + background: linear-gradient( + #fff 0px, + #fff 5px, + transparentize(nth($color-header-color, 4), 0.5) 5px, + transparentize(nth($color-header-color, 4), 0.5) 5px, + transparentize(nth($color-header-color, 4), 0.5) 8px, + #fff 8px, + #fff + ); + } + } + } + } + } + } +} +// ========================== Menu Styler end ====================== +/* =================================================================================== + ========================== Diffrent Layout Styles Start ==================== + =================================================================================== + ====== [ light menu style start ] ======== */ +.pcoded-navbar.menu-light { + background-color: $menu-light-background; + color: $menu-light-text-color; + box-shadow: 7px 0 15px 0 rgba(69, 90, 100, 0.09); + + .header-logo { + background-color: $menu-dark-background; + + .logo-dark { + display: none; + } + + .logo-main { + display: block; + } + } + + .sidenav-horizontal-next, + .sidenav-horizontal-prev { + background: #fff; + } + + .mobile-menu { + span { + background-color: $menu-dark-text-color; + + &:after, + &:before { + background-color: $menu-dark-text-color; + } + } + + &.on { + span { + background-color: transparent; + } + } + } + + .pcoded-submenu { + background: rgba(254, 199, 2, 0.05); + } + + a { + color: $menu-light-text-color; + } + + &.navbar-collapsed { + .pcoded-menu-caption { + &:after { + background: rgba(0, 0, 0, 0.1); + } + } + + &:hover { + .pcoded-menu-caption { + &:after { + background: transparent; + } + } + } + } + + .pcoded-menu-caption { + color: $menu-light-text-color; + } + + .pcoded-inner-navbar { + > li { + &.active, + &.pcoded-trigger { + > a { + background: transparent; + font-weight: 700; + color: #131523; + font-family: Pretendard; + img { + filter: invert(81%) sepia(30%) saturate(5422%) hue-rotate(2deg) brightness(150%) contrast(106%); + } + } + } + } + } + + &.theme-horizontal { + .pcoded-inner-navbar { + > li { + &.active, + &.pcoded-trigger, + &:hover { + a { + color: $menu-light-text-color; + background: transparent; + } + } + + &.pcoded-hasmenu { + &.active, + &.pcoded-trigger { + &:before { + color: $menu-light-background; + } + } + } + } + } + } +} + +body { + &.layout-1 { + .pcoded-navbar.menu-light { + .sidemenu { + box-shadow: inset -1px 0 0 0 rgba(169, 183, 208, 0.4); + + li { + a:after { + border-bottom: 1px solid rgba(181, 189, 202, 0.4); + } + } + } + + .toggle-sidemenu { + background: #f1f1f1; + color: $menu-light-text-color; + } + + .side-content { + .sidelink { + .pcoded-inner-navbar { + li.pcoded-menu-caption:after { + border-bottom: 1px solid rgba(181, 189, 202, 0.5); + } + } + } + } + } + } +} +/* ====== [ light menu style end ] ======== */ +/* ====== [ Menu icon start ] ======== */ +.pcoded-navbar.icon-colored { + .pcoded-inner-navbar { + $flg: 1; + @for $k from 1 through 8 { + @each $value in $menu-icon-color { + > li:nth-child(#{$flg}) > a > .pcoded-micon { + color: $value; + } + $flg: $flg + 1; + } + } + + > li.pcoded-trigger > a > .pcoded-micon, + > li.active > a > .pcoded-micon { + color: #fff; + } + } + + &.menu-light { + .pcoded-inner-navbar { + > li.pcoded-trigger > a > .pcoded-micon, + > li.active > a > .pcoded-micon { + color: $menu-light-text-color; + } + } + } +} + +body { + &.layout-1 { + .pcoded-navbar.icon-colored { + .sidemenu { + $flg: 1; + @for $k from 1 through 8 { + @each $value in $menu-icon-color { + > li:nth-child(#{$flg}) > a { + color: $value; + } + $flg: $flg + 1; + } + } + } + } + } +} +/* ====== [ Menu icon end ] ======== */ +/* ====== [ Header color start ] ======== */ +.theme-horizontal ~ .pcoded-header { + background: #fff; + box-shadow: 0 1px 20px 0 rgba(63, 77, 103, 0.15); + @media only screen and (max-width: 991px) { + background: $menu-dark-background; + + .horizontal-dasktop { + display: none; + } + + .horizontal-mobile { + display: inline-block; + } + } +} + +.theme-horizontal-dis ~ .pcoded-header { + @media only screen and (max-width: 992px) { + .horizontal-dasktop { + display: none; + } + + .horizontal-mobile { + display: inline-block; + } + } +} + +.pcoded-header { + &[class*='header-']:not(.header-default) { + box-shadow: 0 3px 10px 0 rgba(65, 72, 78, 0.02); + } + @each $value in $color-header-name { + $i: index($color-header-name, $value); + + &.header-#{'' + $value} { + background: nth($color-header-color, $i); + color: rgba(256, 256, 256, 0.8); + + .profile-notification { + li { + > a { + color: $theme-font-color; + } + + &.active, + &:active, + &:focus, + &:hover { + background: transparentize(nth($color-header-color, $i), 0.9); + + > a { + background: transparent; + } + } + } + } + + .dropdown-menu { + color: $theme-font-color; + + a { + color: $theme-font-color; + } + + > li { + > a { + color: $theme-font-color; + } + + &.active, + &:active, + &:focus, + &:hover { + background: transparentize(nth($color-header-color, $i), 0.9); + color: $theme-font-color; + + > a { + background: transparent; + } + } + } + } + + .input-group .input-group-text, + a, + .btn, + .dropdown-toggle { + color: rgba(256, 256, 256, 0.8); + + &:hover { + color: #fff; + } + @media only screen and (max-width: 991px) { + color: $menu-light-text-color; + + &:hover { + color: darken($menu-light-text-color, 10%); + } + } + } + + .main-search { + .search-close > .input-group-text { + color: nth($color-header-color, $i); + } + + &.open { + .input-group { + .search-btn { + background: nth($color-header-color, $i); + border-color: nth($color-header-color, $i); + + .input-group-text { + color: #fff; + } + } + } + } + } + + .dropdown { + .notification { + .noti-body { + li { + &.notification:hover { + background: transparentize(nth($color-header-color, $i), 0.9); + } + } + } + } + + .profile-notification { + .pro-head { + color: #fff; + background: nth($color-header-color, $i); + + .dud-logout { + color: #fff; + } + } + } + + &.drp-user.show { + &:before { + color: nth($color-header-color, $i); + } + } + } + + .b-bg { + background: #fff; + + i { + color: nth($color-header-color, $i); + background-image: nth($color-header-color, $i); + -webkit-background-clip: text; + -webkit-text-fill-color: unset; + } + } + } + } +} +/* ====== [ Header color end ] ======== */ +/* ====== [ Brand color start ] ======== */ +.pcoded-navbar { + &[class*='brand-']:not(.brand-default) { + .mobile-menu { + span, + span:after, + span:before { + background: #fff; + } + + &.on span { + background: transparent; + } + } + + .b-bg { + background: #fff; + + i { + color: $success-color; + background-image: $theme-color; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + } + } + @each $value in $color-header-name { + $i: index($color-header-name, $value); + + &.brand-#{'' + $value} .header-logo, + &[class*='navbar-'].brand-#{'' + $value} .header-logo { + background: nth($color-header-color, $i); + @if ($value== 'dark') { + .b-bg { + background: $theme-color; + + i { + color: #fff; + -webkit-text-fill-color: unset; + } + } + } @else { + .b-bg { + background: #fff; + + i { + color: nth($color-header-color, $i); + -webkit-text-fill-color: unset; + } + } + } + } + } + + &.brand-default .header-logo, + &[class*='navbar-'].brand-default .header-logo { + /* junny */ + background: $menu-light-background; + /* background: $menu-dark-background; */ + } +} +/* ====== [ Brand color end ] ======== */ +/* ====== [ Menu color start ] ======== */ +.pcoded-navbar { + @each $value in $color-menu-name { + $i: index($color-menu-name, $value); + + &.navbar-#{'' + $value} { + background: nth($color-menu-color, $i); + + .mobile-menu { + span { + background-color: #fff; + + &:after, + &:before { + background-color: #fff; + } + } + + &.on { + span { + background-color: transparent; + } + } + } + + .header-logo { + .b-bg { + background: nth($color-menu-color, $i); + + i { + color: #fff; + -webkit-text-fill-color: unset; + } + } + } + + .navbar-brand, + .pcoded-submenu { + background: transparent; + } + + .pcoded-menu-caption { + color: #fff; + } + + .pcoded-inner-navbar { + li { + a { + color: #fff; + } + + &.active, + &:focus, + &:hover { + > a { + color: #fff; + } + } + + .pcoded-submenu > li { + &.active, + &:focus, + &:hover { + > a { + &:before { + background: #fff; + } + } + } + } + } + + > li { + &.active, + &.pcoded-trigger { + > a { + // background: rgba(0, 0, 0, 0.08); + background: rgba(254, 199, 2, 0.05); + color: #fff; + box-shadow: none; + } + } + } + } + + &.theme-horizontal { + .sidenav-horizontal-next, + .sidenav-horizontal-prev { + background: nth($color-menu-color, $i); + color: rgba(256, 256, 256, 0.8); + + &:hover { + color: #fff; + } + } + + .pcoded-inner-navbar { + > li { + &.pcoded-hasmenu { + &.active, + &.pcoded-trigger { + &:before { + color: nth($color-menu-color, $i); + } + } + } + } + } + } + } + } +} + +body { + &.layout-1 { + .pcoded-navbar { + @each $value in $color-menu-name { + $i: index($color-menu-name, $value); + + &.navbar-#{'' + $value} { + .sidemenu { + box-shadow: inset -1px 0 0 0 rgba(255, 255, 255, 0.3); + li.active:after { + background: #fff; + } + li a { + color: #fff; + + &:after { + border-bottom: 1px solid rgba(255, 255, 255, 0.3); + } + } + } + } + } + } + } +} +/* ====== [ Menu color end ] ======== */ +/* ====== [ Active Color start ] ======== */ +.pcoded-navbar { + &.menu-item-icon-style1 { + .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a:hover:before, + .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a.active:before { + background: #fec702; + display: none; + } + } + @each $value in $color-active-name { + $i: index($color-active-name, $value); + &[class*='menu-item-icon-style']:not(.menu-item-icon-style1) { + .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a.active:before { + color: #3ebfea; + } + } + + &.active-#{'' + $value} { + &.menu-item-icon-style1 { + .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a:hover:before, + .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a.active:before { + background: nth($color-active-color, $i); + } + } + &[class*='menu-item-icon-style']:not(.menu-item-icon-style1) { + .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a.active:before { + color: nth($color-active-color, $i); + } + } + + .pcoded-inner-navbar { + li > a { + &.active, + &:focus, + &:hover { + color: nth($color-active-color, $i); + } + + .pcoded-submenu > li { + &.active, + &:focus, + &:hover { + > a { + &:before { + background: nth($color-active-color, $i); + } + } + } + } + } + + > li { + &.active, + &.pcoded-trigger { + &:after { + background-color: nth($color-active-color, $i); + } + + > a { + background: darken($header-dark-background, 6%); + color: #fff; + } + } + } + } + + &.menu-light { + .pcoded-inner-navbar { + > li { + &.active, + &.pcoded-trigger { + > a { + background: #f1f1f1; + color: #111; + } + } + } + } + } + + &.theme-horizontal { + .pcoded-inner-navbar { + > li { + &, + &.pcoded-hasmenu { + &.active, + &.pcoded-trigger, + &:hover { + > a { + background: transparent; + } + } + + .pcoded-submenu > li { + a.active { + color: nth($color-active-color, $i); + background: transparent; + } + &.pcoded-trigger, + &:hover { + > a { + color: nth($color-active-color, $i); + } + } + + .pcoded-submenu > li.active { + > a { + color: nth($color-active-color, $i); + } + } + } + } + } + } + } + } + } +} + +body { + &.layout-1 { + .pcoded-navbar { + @each $value in $color-active-name { + $i: index($color-active-name, $value); + + &.active-#{'' + $value} { + .sidemenu { + li { + &.active { + color: nth($color-active-color, $i); + + &:after { + background-color: nth($color-active-color, $i); + } + } + } + } + } + } + } + } +} +/* ====== [ Active Color end ] ======== */ +/* ====== [ menu static start ] ======== */ +.pcoded-navbar.menupos-static { + position: absolute; + height: 100%; + min-height: 100%; + .datta-scroll.navbar-content { + height: calc(100% - #{$header-height}); + min-height: 100vh; + } +} +/* ====== [ menu static end ] ======== */ +/* ====== [Boxc start ] ======== */ +body.box-layout { + position: static; + + .pcoded-header { + position: relative; + + &.headerpos-fixed { + ~ .pcoded-main-container { + padding-top: 0; + } + } + } + + .pcoded-navbar { + &.theme-horizontal { + ~ .pcoded-header { + position: relative; + } + } + } + @media only screen and (max-width: 992px) { + position: relative; + + &.container { + padding: 0; + } + } +} +/* ====== [ Box end ] ======== */ +/* ====== [ Header Fixed start ] ======== */ +.pcoded-header.headerpos-fixed { + position: fixed; + top: 0; + + ~ .pcoded-main-container { + padding-top: $header-height; + @media only screen and (max-width: 991px) { + padding-top: $header-height * 2; + } + } +} +/* ====== [Header Fixed end ] ======== */ +/* ====== [ Dropdown icon start ] ======== */ +.pcoded-navbar { + &.drp-icon-style2 { + .pcoded-inner-navbar { + li.pcoded-hasmenu { + > a { + &:after { + content: '\e847'; + } + } + } + } + } + + &.drp-icon-style3 { + .pcoded-inner-navbar { + li.pcoded-hasmenu { + > a { + &:after { + content: '\e8b1'; + } + } + + &.pcoded-trigger { + > a { + &:after { + transform: rotate(45deg); + } + } + } + } + } + } +} +/* ====== [ Dropdown icon end ] =================== */ +/* ====== [ Menu Item icon start ] ================ */ +.pcoded-navbar { + &[class*='menu-item-icon-style']:not(.menu-item-icon-style1) { + .pcoded-navbar.navbar-collapsed .pcoded-inner-navbar > li.pcoded-trigger .pcoded-submenu:after { + background: rgba(169, 183, 208, 0.05); + } + + .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a:before { + font-family: 'feather'; + font-style: normal; + padding-right: 4px; + font-size: 13px; + position: absolute; + left: 35px; + top: 10px; + opacity: 1; + visibility: visible; + background: transparent; + } + + &.theme-horizontal { + .pcoded-inner-navbar { + > li.pcoded-hasmenu { + > .pcoded-submenu { + > li { + > a:before { + left: 5px; + } + + > .pcoded-submenu { + > li { + > a:before { + top: 12px; + } + } + } + } + } + } + } + } + } + + &.menu-item-icon-style2 .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a:before { + content: '\e897'; + } + + &.menu-item-icon-style3 .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a:before { + content: '\e83f'; + } + + &.menu-item-icon-style4 .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a:before { + content: '\e856'; + } + + &.menu-item-icon-style5 .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a:before { + content: '\e847'; + } + + &.menu-item-icon-style6 .pcoded-inner-navbar li.pcoded-hasmenu .pcoded-submenu li > a:before { + content: '\e844'; + } +} +/* ====== [ Menu Item icon end ] ================== */ +/* ====== [ Menu background images start ] ======== */ +.pcoded-navbar { + &[class*='navbar-image'] { + background-size: cover; + background-repeat: no-repeat; + background-position: center bottom; + + .navbar-brand, + .pcoded-submenu { + background: transparent; + } + + .pcoded-inner-navbar > li { + &.active > a, + &.pcoded-trigger > a { + // background: transparentize(darken($menu-dark-background, 6%), 0.6); + background: rgba(254, 199, 2, 0.05); + } + } + + &:before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0, 0, 0, 0.7); + } + } +} + +body { + &.layout-1 { + .pcoded-navbar { + &[class*='navbar-image'] { + .header-logo { + background: transparent; + } + } + } + } +} +/* ====== [ Menu background images end ] ========== */ +/* ====== [ Menu title color start ] ============== */ +.pcoded-navbar { + @each $value in $color-title-name { + $i: index($color-title-name, $value); + + &.title-#{'' + $value} { + .pcoded-inner-navbar .pcoded-menu-caption { + color: nth($color-active-color, $i); + } + } + } +} +/* ====== [ Menu title color end ] ================ */ +/* ====== [ Hide Caption start ] ============== */ +.pcoded-navbar { + &.caption-hide { + .pcoded-menu-caption { + display: none; + } + } +} +/* ====== [ Hide Caption end ] ================ */ +/* ========================== Diffrent Layout Styles end ====================== */ +/* temp SCSS for document */ +.doc-img { + > a { + position: relative; + width: 130px; + height: 80px; + display: inline-block; + border: 3px solid #fff; + margin-right: 5px; + background: $theme-background; + overflow: hidden; + + span { + width: 100%; + position: absolute; + + &:after, + &:before { + content: ''; + height: 100%; + position: absolute; + } + + &:before { + width: 30%; + left: 0; + background: $menu-dark-background; + } + + &:after { + width: 70%; + right: 0; + background: $theme-background; + } + } + + > span:nth-child(1) { + height: 20%; + top: 0; + } + + > span:nth-child(2) { + height: 80%; + bottom: 0; + } + + &.active { + border-color: $primary-color; + + &:before { + content: '\e83f'; + top: -4px; + font-size: 20px; + position: absolute; + left: 10px; + font-family: 'feather'; + z-index: 1001; + color: $primary-color; + transition: 0.3s ease-in-out; + text-shadow: + 0 3px 8px transparentize($primary-color, 0.1), + 0 3px 8px rgba(0, 0, 0, 0.1); + } + + &:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.65); + } + } + + &[data-value='menu-light'] { + span { + &:before { + background: $menu-light-background; + } + } + } + + &[data-value='dark'] { + span { + &:after { + background: darken($dark-layout, 7%); + } + } + } + } +} +@each $value in $color-menu-name { + $i: index($color-menu-name, $value); + + .nav-link { + &.active.h-#{'' + $value} { + background: rgba(254, 199, 2, 0.05); + } + } +} +@media all and (-ms-high-contrast: none) { + .pcoded-header .dropdown.show::before { + line-height: 0.1; + } + + .pcoded-header .navbar-nav > li { + display: inline-flex; + } + + .pcoded-header .navbar-nav > li.dropdown { + display: inline-block; + } + + .dropdown-menu.show::before { + top: -2px; + } + + .pcoded-navbar.navbar-collapsed .pcoded-inner-navbar > li.pcoded-trigger .pcoded-submenu::after { + left: 40px; + } +} +/* =================================================================================================== + ========================== Diffrent types of NAvbar Layout Styles end ====================== + =================================================================================================== */ +.pcoded-navbar { + &.layout-2, + &.layout-2-2, + &.layout-3, + &.layout-4, + &.layout-4-2 { + a { + color: rgba(255, 255, 255, 0.85); + } + + .pcoded-submenu { + background-color: rgba(0, 0, 0, 0.05); + + .pcoded-submenu { + background-color: transparent; + } + } + + &.navbar-collapsed { + .pcoded-inner-navbar > li.pcoded-trigger .pcoded-submenu:after { + display: none; + } + + &:hover .pcoded-inner-navbar > li.pcoded-trigger .pcoded-submenu li a { + color: rgba(255, 255, 255, 0.85); + } + } + + .pcoded-inner-navbar { + .pcoded-menu-caption { + display: none; + } + + > li { + > a { + padding: 20px 15px; + margin-top: 0; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + + .pcoded-badge { + top: 25px; + } + + > .pcoded-micon + .pcoded-mtext { + top: 25px; + } + } + + &.pcoded-hasmenu > a:after { + top: 25px; + } + + &.active, + &.pcoded-trigger { + &:after { + display: none; + } + + > a { + background-color: rgba(0, 0, 0, 0.08); + } + } + } + + li { + > a { + &.active, + &:focus, + &:hover { + color: #fff; + } + } + + .pcoded-submenu { + > li { + > a { + &.active, + &:focus, + &:hover { + &:before { + background: #fff; + } + } + } + } + } + } + } + } + + &.layout-2 { + background: linear-gradient(253deg, #1de9b6 0, #1dc4e9 70%); + } + + &.layout-2-2 { + background: $theme-color2; + + .navbar-brand { + .b-brand { + .b-bg { + background: $theme-color2; + } + } + } + } + + &.layout-3 { + background: $primary-color; + } + + &.layout-4, + &.layout-4-2 { + background: #212224; + + a { + color: rgba(255, 255, 255, 0.5); + } + + .pcoded-submenu { + background-color: rgba(255, 255, 255, 0.05); + + .pcoded-submenu { + background-color: transparent; + } + } + + .pcoded-inner-navbar { + > li { + > a { + border-bottom: 1px solid rgba(255, 255, 255, 0.05); + } + + &.active, + &.pcoded-trigger { + > a { + background: rgba(254, 199, 2, 0.05); + // background-color: rgba(255, 255, 255, 0.08); + } + } + } + } + + .navbar-brand { + background: $theme-color; + + .mobile-menu { + span, + span:after, + span:before { + background: #fff; + } + + &.on span { + background: transparent; + } + } + + .b-brand { + .b-bg { + background: #fff; + + i { + color: $success-color; + background-image: $theme-color; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + } + } + } + } + + &.layout-4-2 { + .navbar-brand { + background: $theme-color2; + + .b-brand { + .b-bg { + background: #fff; + + i { + color: $success-color; + background-image: $theme-color2; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + } + } + } + } +} + +body.layout-6 { + background: $layout-6-bg-color; + background-size: cover; + background-attachment: fixed; + background-position: top right; + position: relative; + + .page-header-title + .breadcrumb > .breadcrumb-item:last-child a, + .page-header-title h5, + .pcoded-header .input-group .input-group-text, + .pcoded-header .navbar-nav > li > .dropdown > .dropdown-toggle, + .pcoded-header .navbar-nav > li > .dropdown-toggle, + .pcoded-header .navbar-nav > li > a { + color: #fff; + } + + .mobile-menu span, + .mobile-menu span:after, + .mobile-menu span:before, + .pcoded-navbar.menu-light .mobile-menu span, + .pcoded-navbar.menu-light .mobile-menu span:after, + .pcoded-navbar.menu-light .mobile-menu span:before { + background: #fff; + } + + .breadcrumb-item + .breadcrumb-item::before, + .page-header-title + .breadcrumb > .breadcrumb-item a { + color: rgba(255, 255, 255, 0.8); + } + + .pcoded-content { + background: $theme-background; + } + + .navbar-brand, + .pcoded-header.header-blue, + .pcoded-navbar, + .pcoded-navbar.menu-light, + .pcoded-navbar.menu-light .header-logo { + background: transparent; + box-shadow: none; + } + + .pcoded-navbar .navbar-content { + background: #7e84a3; + border-radius: 0 10px 0 0; + box-shadow: 0 0 20px 0 #7e84a3; + } + + &.box-layout .pcoded-navbar .navbar-content { + border-radius: 10px 10px 0 0; + } + + .main-body { + min-height: calc(100vh - 200px); + } + + .pcoded-navbar.menu-light .navbar-content { + background: #fff; + box-shadow: 7px 0 15px 0 rgba(69, 90, 100, 0.09); + } + + .pcoded-navbar.mob-open ~ .pcoded-header:before, + .pcoded-navbar.mob-open ~ .pcoded-main-container:before, + .pcoded-navbar.navbar-collapsed:hover ~ .pcoded-header:before, + .pcoded-navbar.navbar-collapsed:hover ~ .pcoded-main-container:before { + background: transparent; + } + + .pcoded-navbar.navbar-collapsed:hover { + .navbar-brand { + .b-brand { + display: none; + } + + .mobile-menu { + right: auto; + left: 20px; + transition-delay: 0s; + + span { + background: transparent; + } + } + } + } + /* for able pro style */ + .pcoded-content { + margin-top: 200px; + } + + .pcoded-content .pcoded-inner-content { + margin-top: -200px; + min-height: calc(100vh + 150px); + } + + .card { + border-radius: 5px; + } + /* dark navbar */ + .pcoded-navbar { + .header-logo { + background: transparent; + } + + &.navbar-dark { + &.brand-lightblue .header-logo, + &[class*='navbar-'].brand-lightblue .header-logo, + .header-logo { + background: transparent; + } + + .navbar-content { + background: nth($color-menu-color, 5); + box-shadow: 2px 0 20px 0 rgba(0, 0, 0, 0.08); + } + } + } + @media only screen and (max-width: 991px) { + .pcoded-header { + .input-group .input-group-text, + .navbar-nav > li > .dropdown > .dropdown-toggle, + .navbar-nav > li > .dropdown-toggle, + .navbar-nav > li > a { + color: $header-light-text-color; + } + } + } +} + +body.layout-8 { + .pcoded-header { + box-shadow: inset 0 -1px 0 0 rgba(100, 121, 143, 0.122); + } + + .pcoded-navbar { + &.menu-light { + box-shadow: inset -1px 0 0 0 rgba(100, 121, 143, 0.122); + + .pcoded-submenu { + background: transparent; + } + + .pcoded-inner-navbar { + > li { + &.pcoded-menu-caption { + &:after { + content: ''; + position: absolute; + top: 10px; + left: 20px; + height: 1px; + width: calc(100% - 40px); + box-shadow: inset 0 -1px 0 0 rgba(100, 121, 143, 0.122); + } + + &:first-child { + &:after { + display: none; + } + } + } + + > a { + border-radius: 0 20px 20px 0; + margin-right: 15px; + padding: 4px 15px; + + &:after { + top: 8px; + right: 15px; + } + + > .pcoded-micon + .pcoded-mtext { + top: 9px; + } + } + + &.active, + &.pcoded-trigger { + > a { + background: rgba(254, 199, 2, 0.05); + color: #23b7e5; + } + } + } + } + } + + &.navbar-collapsed { + .pcoded-inner-navbar { + > li { + > a { + margin-right: 8px; + + &:after { + top: 8px; + right: 15px; + } + } + } + } + } + @each $value in $color-active-name { + $i: index($color-active-name, $value); + + &.active-#{'' + $value} { + .pcoded-inner-navbar { + > li { + &.active, + &.pcoded-trigger { + > a { + background: rgba(254, 199, 2, 0.05); + color: nth($color-active-color, $i); + } + } + } + } + } + } + } + + .card { + box-shadow: 0 0 0 1px rgba(100, 121, 143, 0.122); + transition: all 0.25s ease-in-out; + + &:hover { + box-shadow: + 0 0 0 1px rgba(100, 121, 143, 0.122), + 0 2px 1px rgba(0, 0, 0, 0.05); + } + } +} + +body { + &.layout-1 { + .pcoded-navbar { + .toggle-sidemenu { + position: fixed; + bottom: 0; + left: 0; + background: darken($menu-dark-background, 10%); + width: 40px; + height: 40px; + font-size: 20px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 0 5px 0 0; + } + &.navbar-collapsed { + .toggle-sidemenu { + display: none; + } + } + + .header-logo { + padding: 10px 20px; + } + + .sidemenu { + left: 0; + position: relative; + transition: all 0.3s ease-in-out; + + li { + position: relative; + + a { + font-size: 22px; + padding: 10px 29px; + position: relative; + cursor: pointer; + + &:after { + content: ''; + position: absolute; + height: 1px; + width: 60%; + left: 20%; + bottom: 0; + border-bottom: 1px solid rgba(181, 189, 202, 0.2); + } + } + + &:last-child { + a { + &:after { + display: none; + } + } + } + + &.active { + color: nth($color-active-color, 1); + + &:after { + content: ''; + background-color: nth($color-active-color, 1); + z-index: 1027; + position: absolute; + right: 0; + top: 7px; + width: 3px; + height: calc(100% - 14px); + border-radius: 3px 0 0 3px; + } + } + } + box-shadow: inset -1px 0 0 0 transparentize($menu-dark-text-color, 0.8); + } + + .layout1-nav { + display: flex; + align-items: stretch; + height: auto; + min-height: 100%; + } + + .side-content { + flex: 1 1 0; + + .sidelink { + display: none; + + &.active { + display: block; + } + + .pcoded-inner-navbar { + li { + &.pcoded-menu-caption { + font-size: 16px; + padding: 16px 15px 16px 18px; + font-weight: 400; + text-transform: capitalize; + + &:after { + content: ''; + position: absolute; + height: 1px; + width: 40px; + left: 18px; + bottom: 13px; + border-bottom: 1px solid rgba(181, 189, 202, 0.2); + } + } + + &.pcoded-hasmenu { + .pcoded-submenu li > { + a { + padding: 7px 7px 7px 40px; + + &:before { + left: 20px; + } + } + + .pcoded-submenu > li > a { + padding: 7px 7px 7px 60px; + + &:before { + left: 40px; + } + } + } + } + } + + > li { + > a { + padding: 12px 10px 12px 20px; + + .pcoded-micon { + display: none; + } + + .pcoded-mtext { + position: relative; + top: 0; + font-family: 'Pretendard'; + font-weight: 500; + } + } + + &.active, + &.pcoded-trigger { + &:after { + display: none; + } + } + } + } + } + } + + &.hide-sidemenu { + .sidemenu { + position: absolute; + left: -#{$Menu-collapsed-width}; + } + + .toggle-sidemenu i { + transform: rotate(180deg); + } + } + } + } +} +// === scroll bar ===== + +.navbar-content { + position: relative; +} + +.ps .ps__rail-x.ps--clicking, +.ps .ps__rail-x:focus, +.ps .ps__rail-x:hover, +.ps .ps__rail-y.ps--clicking, +.ps .ps__rail-y:focus, +.ps .ps__rail-y:hover { + background: transparent; +} + +.ps__thumb-y { + background: #2a3446; +} + +.ps__rail-y.ps--clicking .ps__thumb-y, +.ps__rail-y:focus > .ps__thumb-y, +.ps__rail-y:hover > .ps__thumb-y { + background: #222a38; +} + +/* nav-outside */ +.nav-outside { + position: absolute; + width: 100%; + height: 100%; +} diff --git a/src/styles/partials/mixins/_alert.scss b/src/styles/partials/mixins/_alert.scss new file mode 100644 index 0000000..adc3209 --- /dev/null +++ b/src/styles/partials/mixins/_alert.scss @@ -0,0 +1,14 @@ +@mixin alert-variant-pc($background, $border, $color) { + color: $color; + border-color: $border; + hr { + border-top-color: darken($border, 5%); + } + + .alert-link { + color: darken($color, 10%); + } +} +.swal-footer { + text-align: center; +} diff --git a/src/styles/partials/mixins/_buttons.scss b/src/styles/partials/mixins/_buttons.scss new file mode 100644 index 0000000..2b5c4af --- /dev/null +++ b/src/styles/partials/mixins/_buttons.scss @@ -0,0 +1,103 @@ +/* Button variants + Easily pump out default styles, as well as :hover, :focus, :active, + and disabled options for all buttons */ +@mixin button-variant-pc( + $background, + $border, + $hover-background: darken($background, 7.5%), + $hover-border: darken($border, 10%), + $active-background: darken($background, 10%), + $active-border: darken($border, 12.5%) +) { + color: color-yiq($background); + background-color: $border; + border-color: $border; + + &:hover { + color: color-yiq($hover-background); + background-color: $hover-background; + border-color: $hover-border; + } + + &.focus, + &:focus { + } + + &.disabled, + &:disabled { + color: color-yiq($background); + background-color: $background; + border-color: $border; + } + + &:not(:disabled):not(.disabled).active, + &:not(:disabled):not(.disabled):active, + .show > &.dropdown-toggle { + color: color-yiq($active-background); + background-color: $active-background; + border-color: $active-border; + + &:focus { + } + } +} +@mixin button-outline-variant-pc( + $color, + $color-hover: color-yiq($color), + $active-background: $color, + $active-border: $color +) { + color: $color; + background-color: transparent; + background-image: none; + border-color: $color; + + &:hover { + color: color-yiq($color); + background-color: $active-background; + border-color: $active-border; + } + + &.focus, + &:focus { + } + + &.disabled, + &:disabled { + color: $color; + background-color: transparent; + } + + &:not(:disabled):not(.disabled).active, + &:not(:disabled):not(.disabled):active, + .show > &.dropdown-toggle { + color: color-yiq($active-background); + background-color: $active-background; + border-color: $active-border; + + &:focus { + } + } +} +@mixin button-glow-variant-pc( + $color, + $color-hover: color-yiq($color), + $active-background: $color, + $active-border: $color +) { + box-shadow: + 0 1px 6px 2px transparentize($color, 0.44), + 0 6px 11px 2px transparentize($color, 0.8); + &:hover { + box-shadow: + 0 1px 4px 2px transparentize($color, 0.44), + 0 4px 9px 2px transparentize($color, 0.9); + } + &:not(:disabled):not(.disabled).active, + &:not(:disabled):not(.disabled):active:focus, + .show > &.dropdown-toggle, + &.active, + &:focus { + box-shadow: none; + } +} diff --git a/src/styles/partials/mixins/_function.scss b/src/styles/partials/mixins/_function.scss new file mode 100644 index 0000000..a559cca --- /dev/null +++ b/src/styles/partials/mixins/_function.scss @@ -0,0 +1,20 @@ +@function color-yiq($color) { + $r: red($color); + $g: green($color); + $b: blue($color); + $yiq: calc((($r * 299) + ($g * 587) + ($b * 114)) / 1000); + @if ($yiq >= $yiq-contrasted-threshold) { + @return $yiq-dark-color; + } @else { + @return $yiq-light-color; + } +} +@function theme-color($key: 'primary') { + @return map-get($theme-colors, $key); +} +@function theme-color-level($color-name: 'primary', $level: 0) { + $color: theme-color($color-name); + $color-base: if($level > 0, $yiq-dark-color, $yiq-light-color); + $level: abs($level); + @return mix($color-base, $color, $level * $theme-color-interval); +} diff --git a/src/styles/partials/mixins/_pagination.scss b/src/styles/partials/mixins/_pagination.scss new file mode 100644 index 0000000..3ad33fb --- /dev/null +++ b/src/styles/partials/mixins/_pagination.scss @@ -0,0 +1,22 @@ +/* Pagination */ + +@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { + .page-link { + padding: $padding-y $padding-x; + font-size: $font-size; + line-height: $line-height; + } + + .page-item { + &:first-child { + .page-link { + @include border-left-radius($border-radius); + } + } + &:last-child { + .page-link { + @include border-right-radius($border-radius); + } + } + } +} diff --git a/src/styles/partials/other/_chart.scss b/src/styles/partials/other/_chart.scss new file mode 100644 index 0000000..e72d25e --- /dev/null +++ b/src/styles/partials/other/_chart.scss @@ -0,0 +1,153 @@ +/** ===================== + Chart css start +========================== **/ +.nvtooltip { + position: fixed !important; +} +.peity-chart { + + .peity { + width: 100%; + height: 250px; + } +} +/* Radial Chart Start */ +$unhalf: 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450; +$dt: 0; +$flg: 1; + +.radial-bar { + position: relative; + display: inline-block; + border-radius: 50%; + background-color: transparent; + margin-bottom: 20px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + width: 80px; + height: 80px; + font-size: 18px; + background-clip: content-box; + + &:after { + display: inline-block; + position: absolute; + top: 0; + left: 0; + border-radius: 50%; + text-align: center; + font-weight: 500; + color: #455a64; + width: 56px; + height: 56px; + margin-left: 12px; + margin-top: 12px; + line-height: 56px; + content: attr(data-label); + background-color: #fff; + z-index: 55; + } + + > img { + display: inline-block; + position: absolute; + top: 0; + left: 0; + border-radius: 50%; + text-align: center; + font-weight: 500; + color: #455a64; + width: 56px; + height: 56px; + margin-left: 12px; + margin-top: 12px; + line-height: 56px; + } + + > img { + z-index: 102; + } + @while $dt<=100 { + &.radial-bar-#{$dt} { + @if ($dt < 50) { + background-image: linear-gradient(90deg, #d6d6d6 50%, transparent 50%, transparent), + linear-gradient(#{nth($unhalf, $flg)}deg, $success-color 50%, #d6d6d6 50%, #d6d6d6); + } @else { + background-image: linear-gradient(#{nth($unhalf, $flg)}deg, $success-color 50%, transparent 50%, transparent), + linear-gradient(270deg, $success-color 50%, #d6d6d6 50%, #d6d6d6); + } + } + $dt: $dt + 5; + $flg: $flg + 1; + } + @each $value in $color-bt-name { + $i: index($color-bt-name, $value); + + &.radial-bar-#{$value} { + @while $dt<=100 { + &.radial-bar-#{$dt} { + @if ($dt < 50) { + background-image: linear-gradient(90deg, #d6d6d6 50%, transparent 50%, transparent), + linear-gradient(#{nth($unhalf, $flg)}deg, nth($color-bt-color, $i) 50%, #d6d6d6 50%, #d6d6d6); + } @else { + background-image: linear-gradient( + #{nth($unhalf, $flg)}deg, + nth($color-bt-color, $i) 50%, + transparent 50%, + transparent + ), + linear-gradient(270deg, nth($color-bt-color, $i) 50%, #d6d6d6 50%, #d6d6d6); + } + } + $dt: $dt + 5; + $flg: $flg + 1; + } + } + } +} +.radial-bar-lg { + width: 100px; + height: 100px; + font-size: 20px; + + > img, + &:after { + width: 70px; + height: 70px; + margin-left: 15px; + margin-top: 15px; + line-height: 70px; + } +} + +.radial-bar-sm { + width: 60px; + height: 60px; + font-size: 12px; + + > img, + &:after { + width: 40px; + height: 40px; + margin-left: 10px; + margin-top: 10px; + line-height: 42px; + } +} + +.radial-bar-xs { + width: 35px; + height: 35px; + font-size: 10px; + + > img, + &:after { + width: 25px; + height: 25px; + margin-left: 5.5px; + margin-top: 4.5px; + line-height: 25px; + } +} +/* Radial Chart End */ +/**====== Chart css end ======**/ diff --git a/src/styles/partials/other/_chat.scss b/src/styles/partials/other/_chat.scss new file mode 100644 index 0000000..6f2a666 --- /dev/null +++ b/src/styles/partials/other/_chat.scss @@ -0,0 +1,428 @@ +/** ===================== + Chatting css start +========================== **/ + +.header-chat, +.header-user-list { + height: 100%; + width: 350px; + position: fixed; + top: 0; + right: -350px; + border-radius: 0; + z-index: 1030; + background-color: #fff; + transition: all 0.3s ease-in-out; + + .main-friend-cont { + height: calc(100vh - 166px); + .main-friend-list { + height: calc(100vh - 85px); + } + } + + .h-list-header { + padding: 15px; + border-bottom: 1px solid #f1f1f1; + } + + .h-list-body { + padding: 20px 0; + } + + &.open { + box-shadow: 0 1px 10px 0 rgba(69, 90, 100, 0.2); + right: 0; + } +} + +.header-user-list { + &.open { + .h-close-text { + position: absolute; + top: 111px; + left: -99px; + + i { + position: absolute; + top: 23px; + left: 73px; + font-size: 25px; + z-index: 1003; + color: $success-color; + } + + &:after { + content: '\61'; + font-family: 'pct'; + z-index: 1001; + font-size: 150px; + line-height: 0; + color: #fff; + position: absolute; + top: 35px; + left: 6px; + text-shadow: -4px 0 7px rgba(69, 90, 100, 0.12); + } + } + + &.msg-open { + &:after { + color: transparentize($primary-color, 0.9); + } + } + } +} + +.h-list-header { + .form-control { + &:active, + &:focus, + &:hover { + box-shadow: none; + outline: none; + } + } +} + +.h-list-body { + position: relative; + + .userlist-box { + cursor: pointer; + display: flex; + align-items: center; + padding: 15px 20px; + position: relative; + + &:after { + content: ''; + position: absolute; + bottom: 0; + left: 20px; + width: calc(100% - 40px); + height: 1px; + background: #f3f4f9; + } + + &.active { + background: lighten($primary-color, 45%); + } + + .media-left { + padding-right: 10px; + } + + .media-object { + width: 50px; + display: inline-block; + } + + .chat-header { + font-size: 14px; + font-weight: 600; + margin-bottom: 0; + + small { + margin-top: 5px; + font-size: 90%; + } + } + + .live-status { + height: 25px; + width: 25px; + position: absolute; + top: 35px; + right: 20px; + border-radius: 100%; + color: #fff; + padding: 2px 0; + text-align: center; + background: $theme-color; + } + } +} + +.header-chat { + .h-list-header { + text-align: center; + position: relative; + + h6 { + margin: 5px 0; + } + + .h-back-user-list { + position: absolute; + left: 0; + top: 0; + height: 100%; + display: flex; + align-items: center; + width: 40px; + justify-content: center; + font-size: 20px; + } + } + + .main-chat-cont { + height: calc(100vh - 166px); + } + + .h-list-body { + height: 100%; + background: lighten($primary-color, 45%); + } + + .h-list-footer { + position: absolute; + bottom: 0; + width: 100%; + right: 0; + padding: 20px 15px; + z-index: 10; + background: lighten($primary-color, 45%); + + .input-group { + background: #fff; + border: none; + display: inline-flex; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.1); + padding: 7px; + border-radius: 20px 0 10px 20px; + width: calc(100% - 40px); + + .form-control, + .input-group-text { + background: transparent; + border: none; + border-radius: 0; + padding: 0; + } + + .btn-send, + .form-control { + &:active, + &:focus, + &:hover { + outline: none; + box-shadow: none; + } + } + + .btn-attach { + border-radius: 50%; + padding: 5px; + margin-right: 5px; + + > i { + margin-right: 0; + } + } + + .btn-send { + border-radius: 50%; + padding: 10px; + margin-left: 5px; + position: absolute; + right: -45px; + top: 2px; + z-index: 99; + + i { + margin-right: 0; + } + + .input-group-text { + color: #fff; + } + } + + .form-control { + transition: all 0.3s ease-in-out; + width: 0; + } + + &:after { + content: '\67'; + font-family: 'pct'; + z-index: 1001; + font-size: 35px; + line-height: 0; + color: #fff; + position: absolute; + top: 18px; + right: -23px; + text-shadow: 4px 10px 20px rgba(0, 0, 0, 0.1); + } + } + } +} + +.h-list-body { + .chat-messages { + padding-bottom: 20px; + padding-left: 15px; + padding-right: 15px; + + .photo-table { + padding-right: 15px; + + img { + display: inline-block; + width: 50px; + margin-bottom: 5px; + } + } + + .chat-menu-content, + .chat-menu-reply { + > div { + position: relative; + overflow: visible; + display: inline-block; + + .chat-cont { + padding: 15px 20px; + } + } + + .chat-time { + margin: 9px 8px 0 10px; + } + } + + .chat-menu-reply { + text-align: right; + + > div { + p { + background: #fff; + border-radius: 4px; + margin-bottom: 4px; + margin-right: 25px; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.1); + + &:first-child { + border-top-left-radius: 8px; + border-top-right-radius: 8px; + } + + &:last-child { + border-bottom-left-radius: 8px; + border-bottom-right-radius: 0; + } + } + + &:before { + content: '\66'; + font-family: 'pct'; + z-index: 5; + font-size: 30px; + line-height: 0; + color: #fff; + position: absolute; + bottom: 19px; + right: 5px; + text-shadow: 7px 10px 20px rgba(0, 0, 0, 0.1); + } + } + } + + .chat-menu-content { + > div { + p { + background: $theme-color; + color: #fff; + border-radius: 4px; + margin-bottom: 4px; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.1); + + &:first-child { + border-top-left-radius: 0; + border-top-right-radius: 10px; + } + + &:last-child { + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + } + } + + &:before { + content: '\68'; + font-family: 'pct'; + z-index: 1001; + font-size: 30px; + line-height: 0; + color: #1ec9de; + position: absolute; + top: 15px; + left: -20px; + text-shadow: -4px 4px 10px rgba(0, 0, 0, 0.15); + } + } + } + } +} +/* massage page start */ + +.msg-card { + .msg-user-list { + height: calc(100vh - 300px); + } + + .msg-user-chat { + background: lighten($primary-color, 45%); + height: calc(100vh - 330px); + padding-top: 25px; + padding-bottom: 25px; + padding-left: 5px; + padding-right: 5px; + } + + .msg-block { + > .row { + > div { + &:before { + content: ''; + width: 1px; + height: 100%; + background: #f1f1f1; + position: absolute; + top: 0; + } + + &:first-child { + &:before { + right: 0; + } + } + + &:last-child { + &:before { + left: -1px; + } + } + } + } + } +} +.main-friend-chat { + padding-bottom: 15px; +} + +@media screen and (max-width: 991px) { + .msg-card .msg-block > .row > div:before { + background: none; + } +} +/* massage page end */ +/**====== Chat css end ======**/ + +@media only screen and (max-width: 991px) { + .pcoded-header { + color: $header-light-text-color; + } +} diff --git a/src/styles/partials/other/_icon-lauouts.scss b/src/styles/partials/other/_icon-lauouts.scss new file mode 100644 index 0000000..6aaf7be --- /dev/null +++ b/src/styles/partials/other/_icon-lauouts.scss @@ -0,0 +1,38 @@ +/** ===================== + Icon layouts css start +========================== **/ + +.i-main { + .i-block { + display: inline-flex; + align-items: center; + justify-content: center; + width: 70px; + height: 70px; + margin: 5px; + border: 1px solid #f1f1f1; + position: relative; + cursor: pointer; + + i { + font-size: 30px; + } + + label { + margin-bottom: 0; + display: none; + } + + span.ic-badge { + position: absolute; + bottom: 0; + right: 0; + } + + .flag-icon-background { + width: 40px; + height: 40px; + } + } +} +/**====== Icon layouts css end ======**/ diff --git a/src/styles/partials/other/_prism.scss b/src/styles/partials/other/_prism.scss new file mode 100644 index 0000000..c86e14c --- /dev/null +++ b/src/styles/partials/other/_prism.scss @@ -0,0 +1,108 @@ +/** ===================== + Prism css start +========================== **/ + +pre[class*='language-'] { + code { + font-size: 14px; + } + + [class*='language-'], + .language-markup { + background-color: transparent; + display: block; + padding: 10px 15px; + } +} + +pre.line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre.line-numbers > code { + position: relative; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; + /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.line-numbers-rows > span { + pointer-events: none; + display: block; + counter-increment: linenumber; +} + +.line-numbers-rows > span:before { + content: counter(linenumber); + display: block; + padding-right: 0.8em; + text-align: right; +} + +div.code-toolbar { + position: relative; +} + +div.code-toolbar > .toolbar { + position: absolute; + top: 0.3em; + right: 0.2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; +} + +div.code-toolbar:hover > .toolbar { + opacity: 1; +} + +div.code-toolbar > .toolbar .toolbar-item { + display: inline-block; +} + +div.code-toolbar > .toolbar a { + cursor: pointer; +} + +div.code-toolbar > .toolbar button { + border: 0; + font: inherit; + line-height: normal; + overflow: visible; +} + +div.code-toolbar > .toolbar a, +div.code-toolbar > .toolbar button, +div.code-toolbar > .toolbar span { + color: #bbb; + font-size: 0.8em; + padding: 0 0.5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); + border-radius: 0.5em; +} + +div.code-toolbar > .toolbar a:focus, +div.code-toolbar > .toolbar a:hover, +div.code-toolbar > .toolbar button:focus, +div.code-toolbar > .toolbar button:hover, +div.code-toolbar > .toolbar span:focus, +div.code-toolbar > .toolbar span:hover { + color: inherit; + text-decoration: none; +} +/**====== Prism css end ======**/ diff --git a/src/styles/partials/other/_switches.scss b/src/styles/partials/other/_switches.scss new file mode 100644 index 0000000..aa3b7ac --- /dev/null +++ b/src/styles/partials/other/_switches.scss @@ -0,0 +1,97 @@ +/** ===================== + Switches css start +========================== **/ + +.switch { + input[type='checkbox'] { + opacity: 0; + position: absolute; + + + .form-check-label, + + .cr { + position: relative; + display: inline-block; + transition: 0.4s ease; + height: 20px; + width: 35px; + border: 1px solid #e9eaec; + border-radius: 60px; + cursor: pointer; + z-index: 0; + top: 12px; + + &:after, + &:before { + content: ''; + position: absolute; + display: block; + top: 0; + left: 0; + } + + &:before { + transition: 0.2s cubic-bezier(0.24, 0, 0.5, 1); + height: 20px; + width: 35px; + border-radius: 30px; + } + + &:after { + box-shadow: + 0 0 0 1px rgba(0, 0, 0, 0.1), + 0 4px 0 0 rgba(0, 0, 0, 0.04), + 0 4px 9px rgba(0, 0, 0, 0.13), + 0 3px 3px rgba(0, 0, 0, 0.05); + transition: 0.35s cubic-bezier(0.54, 1.6, 0.5, 1); + background: #f7f7f7; + height: 19px; + width: 19px; + border-radius: 60px; + } + } + + &:checked + .form-check-label, + &:checked + .cr { + &:before { + background: $theme-color; + transition: width 0.2s cubic-bezier(0, 0, 0, 0.1); + } + + &:after { + left: 16px; + } + } + + &:disabled + label { + opacity: 0.5; + filter: grayscale(0.4); + cursor: not-allowed; + } + } + @each $value in $color-bt-name { + $i: index($color-bt-name, $value); + + &.switch-#{$value} input[type='checkbox']:checked + .form-check-label:before, + &.switch-#{$value} input[type='checkbox']:checked + .cr:before { + background: nth($color-bt-color, $i); + } + } + + &.switch-alternative input[type='checkbox']:checked + .form-check-label:before, + &.switch-alternative input[type='checkbox']:checked + .cr:before { + background: $theme-color2; + } +} +/**====== Switches css end ======**/ +.switch { + .invalid-feedback { + position: absolute; + width: max-content; + top: calc(100% + 15px); + } + .form-check { + input[type='checkbox'] + .form-check-label { + top: 4px; + } + } +} diff --git a/src/styles/partials/pages/gallery.scss b/src/styles/partials/pages/gallery.scss new file mode 100644 index 0000000..92cf744 --- /dev/null +++ b/src/styles/partials/pages/gallery.scss @@ -0,0 +1,1151 @@ +.grid { + position: relative; + clear: both; + margin: 0 auto; + padding: 1em 0 4em; + max-width: 1000px; + list-style: none; + text-align: center; + + figure { + position: relative; + float: left; + overflow: hidden; + margin: 10px 1%; + min-width: 320px; + max-width: 480px; + max-height: 360px; + width: 48%; + height: auto; + background: #3085a3; + text-align: center; + cursor: pointer; + + img { + position: relative; + display: block; + min-height: 100%; + max-width: 100%; + opacity: 0.8; + } + + figcaption { + padding: 2em; + color: #fff; + text-transform: uppercase; + font-size: 1.25em; + backface-visibility: hidden; + + &::after, + &::before { + pointer-events: none; + } + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + + > a { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000; + text-indent: 200%; + white-space: nowrap; + font-size: 0; + opacity: 0; + } + } + + h2 { + word-spacing: -0.15em; + font-weight: 300; + color: #fff; + + span { + font-weight: 800; + } + margin: 0; + } + + p { + margin: 0; + letter-spacing: 1px; + font-size: 68.5%; + } + } +} + +figure { + &.effect-julia { + background: #2f3238; + + img { + max-width: none; + height: 400px; + transition: + opacity 1s, + transform 1s; + backface-visibility: hidden; + } + + figcaption { + text-align: left; + } + + h2 { + position: relative; + padding: 0.5em 0; + } + + p { + display: inline-block; + margin: 0 0 0.25em; + padding: 0.4em 1em; + background: rgba(255, 255, 255, 0.9); + color: #2f3238; + text-transform: none; + font-weight: 500; + font-size: 75%; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(-360px, 0, 0); + + &:first-child { + transition-delay: 0.15s; + } + + &:nth-of-type(2) { + transition-delay: 0.1s; + } + + &:nth-of-type(3) { + transition-delay: 0.05s; + } + } + + &:hover { + p { + &:first-child { + transition-delay: 0s; + } + + &:nth-of-type(2) { + transition-delay: 0.05s; + } + + &:nth-of-type(3) { + transition-delay: 0.1s; + } + } + + img { + opacity: 0.4; + transform: scale3d(1.1, 1.1, 1); + } + + p { + opacity: 1; + transform: translate3d(0, 0, 0); + } + } + } + + &.effect-goliath { + background: #df4e4e; + + h2, + img { + transition: transform 0.35s; + } + + img { + backface-visibility: hidden; + } + + h2 { + position: absolute; + bottom: 0; + left: 0; + padding: 30px; + } + + p { + position: absolute; + bottom: 0; + left: 0; + padding: 30px; + text-transform: none; + font-size: 90%; + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(0, 50px, 0); + } + + &:hover { + img { + transform: translate3d(0, -80px, 0); + } + + h2 { + transform: translate3d(0, -100px, 0); + } + + p { + opacity: 1; + transform: translate3d(0, 0, 0); + } + } + } + + &.effect-hera { + background: #303fa9; + + h2 { + font-size: 158.75%; + position: absolute; + top: 50%; + left: 50%; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(-50%, -50%, 0); + transform-origin: 50%; + } + + p { + position: absolute; + top: 50%; + left: 50%; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(-50%, -50%, 0); + transform-origin: 50%; + } + + figcaption::before { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + height: 200px; + border: 2px solid #fff; + content: ''; + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(-50%, -50%, 0) rotate3d(0, 0, 1, -45deg) scale3d(0, 0, 1); + transform-origin: 50%; + } + + p { + width: 100px; + text-transform: none; + font-size: 121%; + line-height: 2; + + a { + color: #fff; + + &:focus, + &:hover { + opacity: 0.6; + } + + i { + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + } + + &:first-child i { + transform: translate3d(-60px, -60px, 0); + } + + &:nth-child(2) i { + transform: translate3d(60px, -60px, 0); + } + + &:nth-child(3) i { + transform: translate3d(-60px, 60px, 0); + } + + &:nth-child(4) i { + transform: translate3d(60px, 60px, 0); + } + } + } + + &:hover { + figcaption::before { + opacity: 1; + transform: translate3d(-50%, -50%, 0) rotate3d(0, 0, 1, -45deg) scale3d(1, 1, 1); + } + + h2 { + opacity: 0; + transform: translate3d(-50%, -50%, 0) scale3d(0.8, 0.8, 1); + } + + p i:empty { + transform: translate3d(0, 0, 0); + opacity: 1; + } + } + } + + &.effect-winston { + background: #162633; + text-align: left; + + img { + transition: opacity 0.45s; + backface-visibility: hidden; + } + + figcaption::before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url(../../../images/hover-effect/triangle.svg) no-repeat center center; + background-size: 100% 100%; + content: ''; + transition: + opacity 0.45s, + transform 0.45s; + transform: rotate3d(0, 0, 1, 45deg); + transform-origin: 0 100%; + } + + h2 { + transition: transform 0.35s; + transform: translate3d(0, 20px, 0); + } + + p { + position: absolute; + right: 0; + bottom: 0; + padding: 0 1.5em 7% 0; + } + + a { + margin: 0 10px; + color: #5d504f; + font-size: 170%; + + &:focus, + &:hover { + color: #cc6055; + } + } + + p a i { + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(0, 50px, 0); + } + + &:hover { + img { + opacity: 0.6; + } + + h2 { + transform: translate3d(0, 0, 0); + } + + figcaption::before { + opacity: 0.7; + transform: rotate3d(0, 0, 1, 20deg); + } + + p { + i { + opacity: 1; + transform: translate3d(0, 0, 0); + } + + a { + &:nth-child(3) i { + transition-delay: 0.05s; + } + + &:nth-child(2) i { + transition-delay: 0.1s; + } + + &:first-child i { + transition-delay: 0.15s; + } + } + } + } + } + + &.effect-selena { + background: #000; + + img { + opacity: 0.95; + transition: transform 0.35s; + transform-origin: 50% 50%; + } + + &:hover img { + transform: scale3d(0.95, 0.95, 1); + } + + h2 { + transition: transform 0.35s; + transform: translate3d(0, 20px, 0); + } + + p { + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: perspective(1000px) rotate3d(1, 0, 0, 90deg); + transform-origin: 50% 0; + } + + &:hover { + h2 { + transform: translate3d(0, 0, 0); + } + + p { + opacity: 1; + transform: perspective(1000px) rotate3d(1, 0, 0, 0); + } + } + } + + &.effect-terry { + background: #34495e; + + figcaption { + padding: 1em; + + &::after, + &::before { + position: absolute; + width: 200%; + height: 200%; + border-style: solid; + border-color: #101010; + content: ''; + transition: transform 0.35s; + } + + &::before { + right: 0; + bottom: 0; + border-width: 0 70px 60px 0; + transform: translate3d(70px, 60px, 0); + } + + &::after { + top: 0; + left: 0; + border-width: 15px 0 0 15px; + transform: translate3d(-15px, -15px, 0); + } + } + + img, + p a { + transition: + opacity 0.35s, + transform 0.35s; + } + + img { + opacity: 0.85; + } + + h2 { + position: absolute; + bottom: 0; + left: 0; + padding: 0.4em 10px; + width: 50%; + transition: transform 0.35s; + transform: translate3d(100%, 0, 0); + } + + p { + float: right; + clear: both; + text-align: left; + text-transform: none; + font-size: 111%; + + a { + display: block; + margin-bottom: 1em; + color: #fff; + opacity: 0; + transform: translate3d(90px, 0, 0); + + &:focus, + &:hover { + color: #f3cf3f; + } + } + } + + &:hover { + figcaption { + &::after, + &::before { + transform: translate3d(0, 0, 0); + } + } + + img { + opacity: 0.6; + } + + h2 { + transform: translate3d(0, 0, 0); + } + + p a { + transform: translate3d(0, 0, 0); + opacity: 1; + + &:first-child { + transition-delay: 0.025s; + } + + &:nth-child(2) { + transition-delay: 0.05s; + } + + &:nth-child(3) { + transition-delay: 0.075s; + } + + &:nth-child(4) { + transition-delay: 0.1s; + } + } + } + } + + &.effect-phoebe { + background: #675983; + + img { + opacity: 0.85; + transition: opacity 0.35s; + } + + &:hover img { + opacity: 0.6; + } + + figcaption::before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('../../../images/hover-effect/triangle2.svg') no-repeat center center; + background-size: 100% 112%; + content: ''; + transition: + opacity 0.35s, + transform 0.35s; + transform: scale3d(5, 2.5, 1); + transform-origin: 50% 50%; + } + + &:hover figcaption::before { + opacity: 0.6; + transform: scale3d(1, 1, 1); + } + + h2 { + margin-top: 1em; + transition: transform 0.35s; + transform: translate3d(0, 40px, 0); + } + + &:hover h2 { + transform: translate3d(0, 0, 0); + } + + p a { + color: #fff; + font-size: 140%; + opacity: 0; + position: relative; + display: inline-block; + transition: + opacity 0.35s, + transform 0.35s; + + &:first-child { + transform: translate3d(-60px, -60px, 0); + } + + &:nth-child(2) { + transform: translate3d(0, 60px, 0); + } + + &:nth-child(3) { + transform: translate3d(60px, -60px, 0); + } + } + + &:hover p a { + opacity: 1; + transform: translate3d(0, 0, 0); + } + } + + &.effect-apollo { + background: #3498db; + + img { + opacity: 0.95; + transition: + opacity 0.35s, + transform 0.35s; + transform: scale3d(1.05, 1.05, 1); + } + + figcaption::before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(255, 255, 255, 0.5); + content: ''; + transition: transform 0.6s; + transform: scale3d(1.9, 1.4, 1) rotate3d(0, 0, 1, 45deg) translate3d(0, -100%, 0); + } + + p { + position: absolute; + right: 0; + bottom: 0; + margin: 3em; + padding: 0 1em; + max-width: 150px; + border-right: 4px solid #fff; + text-align: right; + opacity: 0; + transition: opacity 0.35s; + } + + h2 { + text-align: left; + } + + &:hover { + img { + opacity: 0.6; + transform: scale3d(1, 1, 1); + } + + figcaption::before { + transform: scale3d(1.9, 1.4, 1) rotate3d(0, 0, 1, 45deg) translate3d(0, 100%, 0); + } + + p { + opacity: 1; + -webkit-transition-delay: 0.1s; + transition-delay: 0.1s; + } + } + } + + &.effect-kira { + background: #fff; + text-align: left; + + img { + transition: opacity 0.35s; + } + + figcaption { + z-index: 1; + } + + p { + padding: 2.25em 0.5em; + font-weight: 600; + font-size: 100%; + line-height: 1.5; + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(0, -10px, 0); + + a { + margin: 0 0.5em; + color: #101010; + + &:focus, + &:hover { + opacity: 0.6; + } + } + } + + figcaption::before { + position: absolute; + top: 14px; + right: 2em; + left: 2em; + z-index: -1; + height: 4.1em; + background: #fff; + content: ''; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(0, 4em, 0) scale3d(1, 0.023, 1); + transform-origin: 50% 0; + } + + &:hover { + img { + opacity: 0.5; + } + + p { + opacity: 1; + transform: translate3d(0, 0, 0); + } + + figcaption::before { + opacity: 0.7; + transform: translate3d(0, 5em, 0) scale3d(1, 1, 1); + } + } + } + + &.effect-steve { + z-index: auto; + overflow: visible; + background: #000; + + &:before, + h2:before { + position: absolute; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + background: #000; + content: ''; + transition: opacity 0.35s; + } + + &:before { + box-shadow: 0 3px 30px rgba(0, 0, 0, 0.8); + opacity: 0; + } + + figcaption { + z-index: 1; + } + + img { + opacity: 1; + transition: transform 0.35s; + transform: perspective(1000px) translate3d(0, 0, 0); + } + + h2, + p { + background: #fff; + color: #2d434e; + } + + h2 { + position: relative; + margin-top: 2em; + padding: 0.25em; + + &:before { + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.5); + } + } + + p { + margin-top: 1em; + padding: 0.5em; + font-weight: 800; + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: scale3d(0.9, 0.9, 1); + } + + &:hover { + &:before { + opacity: 1; + } + + img { + transform: perspective(1000px) translate3d(0, 0, 21px); + } + + h2:before { + opacity: 0; + } + + p { + opacity: 1; + transform: scale3d(1, 1, 1); + } + } + } + + &.effect-moses { + background: linear-gradient(-45deg, #ec65b7 0%, #05e0d8 100%); + + img { + opacity: 0.85; + transition: opacity 0.35s; + } + + h2, + p { + padding: 20px; + width: 50%; + height: 50%; + border: 2px solid #fff; + } + + h2 { + padding: 20px; + width: 50%; + height: 50%; + text-align: left; + transition: transform 0.35s; + transform: translate3d(10px, 10px, 0); + } + + p { + float: right; + padding: 20px; + text-align: right; + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(-50%, -50%, 0); + } + + &:hover { + h2 { + transform: translate3d(0, 0, 0); + } + + p { + opacity: 1; + transform: translate3d(0, 0, 0); + } + + img { + opacity: 0.6; + } + } + } + + &.effect-jazz { + background: linear-gradient(-45deg, #f3cf3f 0%, #f33f58 100%); + + img { + opacity: 0.9; + } + + figcaption::after, + img, + p { + transition: + opacity 0.35s, + transform 0.35s; + } + + figcaption::after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-top: 1px solid #fff; + border-bottom: 1px solid #fff; + content: ''; + opacity: 0; + transform: rotate3d(0, 0, 1, 45deg) scale3d(1, 0, 1); + transform-origin: 50% 50%; + } + + h2, + p { + opacity: 1; + transform: scale3d(0.8, 0.8, 1); + } + + h2 { + padding-top: 26%; + transition: transform 0.35s; + } + + p { + padding: 0.5em 2em; + text-transform: none; + font-size: 0.85em; + opacity: 0; + } + + &:hover { + img { + opacity: 0.7; + transform: scale3d(1.05, 1.05, 1); + } + + figcaption::after { + opacity: 1; + transform: rotate3d(0, 0, 1, 45deg) scale3d(1, 1, 1); + } + + h2, + p { + opacity: 1; + transform: scale3d(1, 1, 1); + } + } + } + + &.effect-ming { + background: #030c17; + + img { + opacity: 0.9; + transition: opacity 0.35s; + } + + figcaption::before { + position: absolute; + top: 30px; + right: 30px; + bottom: 30px; + left: 30px; + border: 2px solid #fff; + box-shadow: 0 0 0 30px rgba(255, 255, 255, 0.2); + content: ''; + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: scale3d(1.4, 1.4, 1); + } + + h2 { + margin: 20% 0 10px; + transition: transform 0.35s; + } + + p { + padding: 1em; + opacity: 0; + transition: + opacity 0.35s, + transform 0.35s; + transform: scale(1.5); + } + + &:hover { + h2 { + transform: scale(0.9); + } + + figcaption::before, + p { + opacity: 1; + transform: scale3d(1, 1, 1); + } + + figcaption { + background-color: rgba(58, 52, 42, 0); + } + + img { + opacity: 0.4; + } + } + } + + &.effect-lexi { + background: linear-gradient(-45deg, #000 0%, #fff 100%); + + img { + margin: -10px 0 0 -10px; + max-width: none; + width: calc(100% + 10px); + opacity: 0.9; + transition: + opacity 0.35s, + transform 0.35s; + transform: translate3d(10px, 10px, 0); + backface-visibility: hidden; + } + + figcaption::before, + p { + transition: + opacity 0.35s, + transform 0.35s; + } + + figcaption::before { + position: absolute; + right: -100px; + bottom: -100px; + width: 300px; + height: 300px; + border: 2px solid #fff; + border-radius: 50%; + box-shadow: 0 0 0 900px rgba(255, 255, 255, 0.2); + content: ''; + opacity: 0; + transform: scale3d(0.5, 0.5, 1); + transform-origin: 50% 50%; + } + + &:hover img { + opacity: 0.6; + transform: translate3d(0, 0, 0); + } + + h2 { + text-align: left; + transition: transform 0.35s; + transform: translate3d(5px, 5px, 0); + } + + p { + position: absolute; + right: 0; + bottom: 0; + padding: 0 1.5em 1.5em 0; + width: 140px; + text-align: right; + opacity: 0; + transform: translate3d(20px, 20px, 0); + } + + &:hover { + figcaption::before { + opacity: 1; + transform: scale3d(1, 1, 1); + } + + h2, + p { + opacity: 1; + transform: translate3d(0, 0, 0); + } + } + } + + &.effect-duke { + background: linear-gradient(-45deg, #34495e 0%, #cc6055 100%); + + img, + p { + transition: + opacity 0.35s, + transform 0.35s; + } + + &:hover img { + opacity: 0.1; + transform: scale3d(2, 2, 1); + } + + h2 { + transition: transform 0.35s; + transform: scale3d(0.8, 0.8, 1); + transform-origin: 50% 100%; + } + + p { + position: absolute; + bottom: 0; + left: 0; + margin: 20px; + padding: 30px; + border: 2px solid #fff; + text-transform: none; + font-size: 90%; + opacity: 0; + transform: scale3d(0.8, 0.8, 1); + transform-origin: 50% -100%; + } + + &:hover { + h2, + p { + opacity: 1; + transform: scale3d(1, 1, 1); + } + } + } +} +/* Media queries */ +@media screen and (max-width: 920px) { + figure.effect-terry h2 { + padding: 0.75em 10px; + font-size: 120%; + } +} +@media screen and (max-width: 50em) { + .content { + padding: 0 10px; + text-align: center; + } + + .grid figure { + display: inline-block; + float: none; + margin: 10px auto; + width: 100%; + } +} +@media screen and (max-width: 480px) { + .grid { + figure { + min-width: auto; + h2 { + font-size: 30px; + } + } + } +} diff --git a/src/styles/partials/popup.scss b/src/styles/partials/popup.scss new file mode 100644 index 0000000..01ebed0 --- /dev/null +++ b/src/styles/partials/popup.scss @@ -0,0 +1,69 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;500&display=swap'); + +//공통 +.black_bg { + display: none; + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + background: #0000007d; + z-index: 99; + font-family: 'Poppins'; + .Popup_box { + display: none; + width: 500px; + background: #fff; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + border-radius: 10px; + } + .content { + padding: 50px; + font-size: 17px; + line-height: 1.76; + color: #505050; + box-sizing: border-box; + clear: both; + } + .close_btn { + height: 33px; + font-size: 13px; + min-width: 101px; + background: #fec702; + color: #fff; + border: none; + border-radius: 20px; + float: right; + } + + .close_btn:focus { + outline: none; + } + + .close_btn:hover { + background: #dfaf02; + color: #ececec; + } + .clear { + clear: both; + } +} +//Signin + +//PopupInfouser + +// 반응형_공통 +@media (max-width: 579px) { + .black_bg { + .Popup_box { + width: 90%; + } + } +} +//반응형_ Signin + +//반응형_ PopupInfouser diff --git a/src/styles/partials/theme-elements/_alert.scss b/src/styles/partials/theme-elements/_alert.scss new file mode 100644 index 0000000..fa58133 --- /dev/null +++ b/src/styles/partials/theme-elements/_alert.scss @@ -0,0 +1,40 @@ +@import '../mixins/alert'; /** ===================== + Alert css start +========================== **/ + +/* Base styles */ + +.alert { + position: relative; + padding: 15px 20px; + border-radius: 0; +} +/* Provide class for links that match alerts */ + +.alert-link { + font-weight: 600; + transition: all 0.3s ease-in-out; + &:hover { + text-decoration: underline; + } +} + +.alert-dismissible { + padding-right: 40px; + .close { + padding: 14px 10px; + } +} +/* Alternate styles + Generate contextual modifier classes for colorizing the alert. */ + +@each $color, $value in $theme-colors { + .alert-#{$color} { + @include alert-variant-pc( + theme-color-level($color, $alert-bg-level), + theme-color-level($color, $alert-border-level), + theme-color-level($color, $alert-color-level) + ); + } +} +/**====== Alert css end ======**/ diff --git a/src/styles/partials/theme-elements/_authentication.scss b/src/styles/partials/theme-elements/_authentication.scss new file mode 100644 index 0000000..f660985 --- /dev/null +++ b/src/styles/partials/theme-elements/_authentication.scss @@ -0,0 +1,282 @@ +/** ===================== + Authentication css start +========================== **/ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;500&display=swap'); + +.auth-wrapper { + position: relative; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + min-width: 100%; + min-height: 100vh; + background: #fff; + a, + p > a { + color: $theme-heading-color; + font-weight: 600; + } + .btn-auth-gen { + .btn-icon { + width: 140px; + height: 140px; + display: flex; + align-items: center; + justify-content: center; + font-size: 45px; + + small { + font-size: 15px; + } + } + } + .input-group { + background: transparent; + } + .card { + margin-bottom: 0; + } + + > div { + z-index: 5; + } + + .auth-content { + position: relative; + width: 390px; + padding: 15px; + z-index: 5; + font-family: 'Poppins'; + &.multyform, + &.subscribe { + width: 750px; + } + .card { + box-shadow: none; + } + .login_form { + margin-top: 61px; + } + .input-group { + display: flex; + align-items: center; + padding: 2px 20px 2px 55px; + border-radius: 24px; + border: 0; + background-color: #f8f8f8; + } + .input-group i svg { + width: 24px; + height: 24px; + position: absolute; + z-index: 2; + top: 50%; + left: 15px; + transform: translateY(-50%); + color: #6c757d52; + } + .input-group input { + height: 48px; + border: none; + font-family: 'Poppins'; + background-color: #f8f8f8; + } + + .input-group input::placeholder { + color: #6c757d52; + } + .input-group input:focus { + outline: none !important; + outline-width: 0 !important; + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + } + .form-group { + display: flex; + justify-content: center; + } + + .checkbox label { + font-size: 14px; + color: #333; + } + + .checkbox.checkbox-fill input[type='checkbox'] + .cr:before { + display: none; + } + + .checkbox.checkbox-fill input[type='checkbox'] + .cr:after { + display: none; + } + + .checkbox.checkbox-fill input[type='checkbox']:checked + .cr:before { + background: #ffc11a; + border: none; + top: 0; + left: 0; + content: ''; + font-size: 13px; + } + + .form-check-label + label { + background-image: url(../../images/btn-check-box-default.svg); + background-position: left; + background-size: contain; + padding-left: 23px !important; + background-repeat: no-repeat; + display: inline-block; + } + + .form-check-label:checked + label { + background-image: url(../../images/btn-check-box-active.svg); + background-position: left; + background-size: contain; + padding-left: 23px !important; + background-repeat: no-repeat; + display: inline-block; + } + + button { + width: 100%; + background: #ffc11a !important; + border: 1px solid #ffc11a !important; + -webkit-background-clip: text; + box-shadow: none; + border-radius: 50rem; + margin-top: 30px; + font-size: 16px; + font-weight: 500; + letter-spacing: -0.8px; + } + } + @media only screen and (max-width: 768px) { + max-width: 360px; + } + @media only screen and (max-width: 575px) { + .card { + .card-body { + padding: 30px 15px; + } + } + } + + .auth-icon { + font-size: 30px; + &:before { + background: $theme-color; + background-clip: inherit; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + } + + &.offline { + background-image: none; + + &:before { + display: none; + } + } + + .auth-bg { + .r { + position: absolute; + width: 300px; + height: 300px; + border-radius: 50%; + + &:first-child { + top: -100px; + right: -100px; + background: $theme-color; + } + + &:last-child { + left: -100px; + bottom: -100px; + background: $theme-color2; + } + + &.s { + width: 20px; + height: 20px; + &:nth-child(2) { + top: 150px; + right: -150px; + background: $primary-color; + } + + &:nth-child(3) { + left: -150px; + bottom: 150px; + background: $success-color; + } + } + + &:nth-child(odd) { + animation: floating 7s infinite; + } + + &:nth-child(even) { + animation: floating 9s infinite; + } + } + } +} +/* image variant start */ +.aut-bg-img { + background-size: cover; + /*background-image: url('../../../images/bg-images/bg4.jpg');*/ // amit images + background-repeat: no-repeat; + background-position: center; +} +.aut-bg-img-side { + p { + line-height: 2; + } +} +.aut-bg-img, +.aut-bg-img-side { + .custom-select, + .form-control { + background: transparent; + } +} +.auth-tabs { + .card { + // border-right: 10px; + } + .nav-pills { + // margin-top: -80px; + } + .tab-content { + overflow: hidden; + position: relative; + .tab-pane > * { + position: relative; + z-index: 5; + } + .auth-icon { + position: absolute; + bottom: 0; + right: 0; + font-size: 180px; + transform: rotate(-30deg); + z-index: 1; + opacity: 0.2; + } + } +} +/* image varient start */ +@keyframes floating { + from { + transform: rotate(0deg) translate(-10px) rotate(0deg); + } + + to { + transform: rotate(360deg) translate(-10px) rotate(-360deg); + } +} +/**====== Authentication css end ======**/ diff --git a/src/styles/partials/theme-elements/_breadcrumb-pagination.scss b/src/styles/partials/theme-elements/_breadcrumb-pagination.scss new file mode 100644 index 0000000..89db2f3 --- /dev/null +++ b/src/styles/partials/theme-elements/_breadcrumb-pagination.scss @@ -0,0 +1,33 @@ +/** ===================== + Breadcrumbs & Pagination css start +========================== **/ +/* Breadcrumbs */ + +.breadcrumb { + background-color: $theme-background; + border-radius: 0; +} + +.breadcrumb-item { + + .breadcrumb-item { + color: $primary-color; + &::before { + /* content: $breadcrumb-divider; */ + } + } + + &.active { + color: $theme-heading-color; + } +} + +/* pagination */ + +.page-item { + &.active .page-link { + color: #fff; + background-color: $primary-color; + border-color: $primary-color; + } +} +/**====== Breadcrumbs & Pagination css end ======**/ diff --git a/src/styles/partials/theme-elements/_button.scss b/src/styles/partials/theme-elements/_button.scss new file mode 100644 index 0000000..0791975 --- /dev/null +++ b/src/styles/partials/theme-elements/_button.scss @@ -0,0 +1,236 @@ +@import '../mixins/buttons'; +/** ===================== + Button css start +========================== **/ +.btn-theme, +a.btn-theme { + background: $theme-color; + color: #fff; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2); + border-color: #1de1c2; + border-radius: 0.25rem; + padding: 11px 25px; + + &:active, + &:focus, + &:not(:disabled):not(.disabled):active { + background-image: $theme-color; + color: #fff; + box-shadow: none; + } + + &.active { + background-image: #fff !important; + color: $default-color; + border: 1px solid $theme-border; + box-shadow: none; + } +} + +.btn-outline-theme { + background-image: #fff !important; + color: $default-color; + border: 1px solid $theme-border; + box-shadow: none; + + &:active, + &:focus, + &:not(:disabled):not(.disabled):active { + background-image: #fff; + color: $default-color; + border: 1px solid $theme-border; + } + + &.active { + background: $theme-color !important; + color: #fff; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2); + border: 1px solid transparent; + } +} + +.btn-theme2 { + background: $theme-color2; + color: #fff; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2); + border: 1px solid transparent; + border-radius: 10px; + padding: 14px 25px; + + &:active, + &:focus, + &:not(:disabled):not(.disabled):active { + background-image: $theme-color2; + color: #fff; + box-shadow: none; + } + + &.active { + background-image: #fff !important; + color: $default-color; + border: 1px solid $theme-border; + box-shadow: none; + } +} + +.btn-outline-theme2 { + background-image: #fff !important; + color: $default-color; + border: 1px solid $theme-border; + box-shadow: none; + + &:active, + &:focus, + &:not(:disabled):not(.disabled):active { + background-image: #fff; + color: $default-color; + border: 1px solid $theme-border; + } + + &.active { + background: $theme-color2 !important; + color: #fff; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2); + border: 1px solid transparent; + } +} + +.btn { + padding: 10px 20px; + border-radius: 0.25rem; + font-size: 14px; + margin-bottom: 5px; + margin-right: 10px; + transition: all 0.3s ease-in-out; + + > i { + margin-right: 12px; + } + + &.btn-icon, + &.drp-icon { + width: 45px; + height: 45px; + padding: 10px 12px; + + > i { + margin-right: 0; + } + } + + &.drp-icon { + &.dropdown-toggle:after { + display: none; + } + + + .dropdown-menu { + margin-left: -10px; + } + } + + &:active, + &:focus { + box-shadow: none; + } + + &-square { + border-radius: 0; + } + + &.disabled { + cursor: not-allowed; + opacity: 0.55; + } + + &-rounded { + border-radius: 30px; + } +} + +.btn-group { + .btn { + margin-bottom: 0; + margin-right: 0; + } +} + +.btn-group-sm > .btn, +.btn-sm { + padding: 6px 14px; + font-size: 13px; +} + +.btn-group-lg > .btn, +.btn-lg { + padding: 13px 23px; + font-size: 16px; +} + +.shadow-1 { + box-shadow: 0 7px 12px 0 rgba(62, 57, 107, 0.16); +} + +.shadow-2 { + box-shadow: 0 10px 18px 0 rgba(62, 57, 107, 0.2); +} + +.shadow-3 { + box-shadow: 0 14px 24px 0 rgba(62, 57, 107, 0.26); +} + +.shadow-4 { + box-shadow: 0 16px 28px 0 rgba(62, 57, 107, 0.3); +} + +.shadow-5 { + box-shadow: 0 20px 24px 0 rgba(62, 57, 107, 0.36); +} +/* Alternate buttons */ +@each $color, $value in $theme-colors { + .btn-#{$color} { + @include button-variant-pc($value, $value); + } +} +/* outline buttons */ +@each $color, $value in $theme-colors { + .btn-outline-#{$color} { + @include button-outline-variant-pc($value); + } +} +/* glow buttons */ +@each $color, $value in $theme-colors { + .btn-glow-#{$color} { + @include button-glow-variant-pc($value); + } +} +/**====== Button css end ======**/ + +.drp-icon { + .btn { + width: 45px; + height: 45px; + padding: 10px 12px; + + > i { + margin-right: 0; + } + &.dropdown-toggle:after { + display: none; + } + } + + + .dropdown-menu { + margin-left: -10px; + } + &.btn-rounded { + .btn { + &.dropdown-toggle { + border-radius: 30px; + } + } + } +} + +.btn:not(:disabled):not(.disabled) { + cursor: pointer; +} diff --git a/src/styles/partials/theme-elements/_data-tables.scss b/src/styles/partials/theme-elements/_data-tables.scss new file mode 100644 index 0000000..3292811 --- /dev/null +++ b/src/styles/partials/theme-elements/_data-tables.scss @@ -0,0 +1,162 @@ +/** ===================== + Data Tables css start +========================== **/ +.table { + color: #888; + td, + th { + border-top: 1px solid $theme-border; + white-space: nowrap; + padding: 1.05rem 0.75rem; + } + + thead th { + border-bottom: 1px solid $theme-border; + } + + tbody + tbody { + border-top: 2px solid $theme-border; + } + + &.table-sm { + th, + td { + padding: 0.35rem; + } + } +} +/* Border versions */ + +.table-bordered { + border: 1px solid $theme-border; + + td, + th { + border: 1px solid $theme-border; + } +} +/* Zebra-striping */ + +.table-striped { + tbody tr:nth-of-type(2n + 1) { + background-color: transparentize($primary-color, 0.95); + } +} +/* Hover effect */ + +.table-hover { + tbody tr { + &:hover { + background-color: transparentize($primary-color, 0.95); + } + } +} +/* Table backgrounds */ + +.table { + .thead-dark { + th { + color: #fff; + background-color: $dark-color; + border-color: darken($dark-color, 10%); + } + } +} + +.table-dark { + color: #fff; + background-color: $dark-color; + + td, + th, + thead th { + border-color: darken($dark-color, 10%); + } + + &.table-striped { + tbody tr:nth-of-type(odd) { + background-color: darken($dark-color, 2%); + } + } + + &.table-hover { + tbody tr { + &:hover { + background-color: darken($dark-color, 5%); + } + } + } +} +/* fixed header position */ + +table.dataTable.fixedHeader-floating { + top: 0 !important; + @media screen and (max-width: 992px) { + display: none !important; + } +} + +@media screen and (max-width: 992px) { + .fixedHeader-locked { + display: none !important; + } +} + +/** ===================== + Foo-table css start +========================== **/ + +.footable .pagination > { + .active > { + a, + span { + background-color: $primary-color; + border-color: $primary-color; + + &:focus, + &:hover { + background-color: $primary-color; + border-color: $primary-color; + } + } + } + + li > { + a, + span { + color: #222; + } + } +} + +.footable-details.table, +.footable.table { + margin-bottom: 0; +} + +table { + &.footable > tfoot > tr.footable-paging > td > span.label { + margin-bottom: 0; + } + + &.footable-paging-center > tfoot > tr.footable-paging > td { + padding-bottom: 0; + } +} + +.table-columned > { + tbody > { + tr > { + td { + border: 0; + border-left: 1px solid $theme-border; + } + + th { + border: 0; + } + } + } +} +/**====== Foo-table css end ======**/ +/**====== Data Tables css end ======**/ diff --git a/src/styles/partials/theme-elements/_form.scss b/src/styles/partials/theme-elements/_form.scss new file mode 100644 index 0000000..afce61a --- /dev/null +++ b/src/styles/partials/theme-elements/_form.scss @@ -0,0 +1,143 @@ +/** ===================== + Form Componant css start +========================== **/ + +// .custom-select, +// .form-control { +// background: $theme-background; +// padding: 10px 20px; +// font-size: 14px; +// height: auto; + +// &.form-control-lg { +// font-size: 1.25rem; +// } + +// &.form-control-sm { +// height: calc(1.8125rem + 2px); +// font-size: .875rem; +// } + +// &.form-control-range { +// box-shadow: none; +// } + +// &:focus { +// background: $theme-background; +// } + +// &::-moz-placeholder { +// color: #aaaeb3; +// opacity: 1; +// } + +// &:-ms-input-placeholder { +// color: #aaaeb3; +// } + +// &::-webkit-input-placeholder { +// color: #aaaeb3; +// } +// } +// /* input group start */ + +// // .input-group { +// // background: $theme-background; + +// // .input-group-text { +// // padding-left: 15px; +// // padding-right: 15px; +// // background: transparent; +// // i { +// // font-size: 20px; +// // } +// // } + +// // .custom-file-label { +// // margin-bottom: 0; +// // } + +// // .btn { +// // margin-bottom: 0; +// // margin-right: 0; +// // } +// // } + +// .cust-file-button { +// .custom-file-label { +// height: calc(2.25rem + 8px); +// line-height: 2.5; + +// &::after { +// padding: 0.775rem 0.75rem; +// height: 2.65rem; +// } +// } +// } + +// .custom-select{ +// height: calc(2.25rem + 9px); +// } +// /* input group End */ +// /**====== Form Componant css end ======**/ +// select.form-control:not([size]):not([multiple]) { +// height: calc(2.55rem + 2px); +// } +// .input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]), +// .input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]), +// .input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]), +// .input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), +// .input-group-lg > select.form-control:not([size]):not([multiple]), +// select.form-control-lg:not([size]):not([multiple]) { +// height: calc(3.375rem + 2px); +// } + +// .minicolors { +// .form-control { +// padding: 6px 12px 5px 44px; +// } +// } +// /* form-select */ + +// .select2-container { +// width: 100% !important; +// } +// .tt-menu { +// position: absolute; +// top: 100%; +// left: 0; +// z-index: 1000; +// display: none; +// float: left; +// min-width: 160px; +// padding: 5px 0; +// margin: 2px 0 0; +// list-style: none; +// font-size: 14px; +// background-color: #ffffff; +// border: 1px solid #cccccc; +// border-radius: 4px; +// box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +// background-clip: padding-box; +// cursor: pointer; +// } +// .bootstrap-tagsinput { +// width: 100%; +// } +// .custom-file-label{ +// height: auto; +// &:after{ +// height: auto; +// padding: 0.550rem 0.75rem; +// } +// } +// .form-control.is-invalid, .was-validated .form-control:invalid, +// .was-validated .form-control:valid, .form-control.is-valid { +// background-position: calc(100% - 10px) calc(.375em + 0.4875rem); +// } + +// .was-validated .form-control:invalid~.invalid-feedback { +// background: #fff; +// margin-top: 0; +// padding-top: 0.25em; +// } diff --git a/src/styles/partials/theme-elements/_labels-badges.scss b/src/styles/partials/theme-elements/_labels-badges.scss new file mode 100644 index 0000000..8a9372a --- /dev/null +++ b/src/styles/partials/theme-elements/_labels-badges.scss @@ -0,0 +1,20 @@ +/** ===================== + Label & Badges css start +========================== **/ + +.label { + padding: 4px 10px; + min-height: auto; + position: relative; + margin-right: 5px; + margin-bottom: 5px; + @each $value in $color-bt-name { + $i: index($color-bt-name, $value); + + &.label-#{$value} { + background: nth($color-bt-color, $i); + color: #ffffff; + } + } +} +/**====== Label & Badges css end ======**/ diff --git a/src/styles/partials/theme-elements/_modal.scss b/src/styles/partials/theme-elements/_modal.scss new file mode 100644 index 0000000..916ab9a --- /dev/null +++ b/src/styles/partials/theme-elements/_modal.scss @@ -0,0 +1,9 @@ +@media screen and (max-width: 480px) { + .modal-footer { + justify-content: center; + } +} + +.tooltip { + z-index: 1073; +} diff --git a/src/styles/partials/theme-elements/_nav.scss b/src/styles/partials/theme-elements/_nav.scss new file mode 100644 index 0000000..2fc0a09 --- /dev/null +++ b/src/styles/partials/theme-elements/_nav.scss @@ -0,0 +1,95 @@ +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 10px 24px; + + &:hover { + text-decoration: none; + } + + &.disabled { + opacity: 0.7; + } +} + +/* ======================== Tabs =============================== */ + +.nav-tabs { + border-bottom: none; + .nav-link { + border: none; + color: $theme-font-color; + &:hover { + color: $primary-color; + } + + &.disabled { + opacity: 0.7; + } + } + + .nav-item.show .nav-link, + .nav-link.active { + border: none; + color: $theme-heading-color; + box-shadow: 0 -5px 10px 0 rgba(0, 0, 0, 0.05); + } +} +/* ======================= Pills ================== */ + +.nav-pills { + padding: 15px; + background-color: #fff; + box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.05); + .nav-link { + border-radius: 5px; + } + + .nav-link.active, + .show > .nav-link { + color: #fff; + background: $primary-color; + box-shadow: 0 5px 15px 0 rgba(0, 0, 0, 0.2); + } +} + +/* ==================== Justified variants ===================*/ + +.nav-fill { + .nav-item { + flex: 1 1 auto; + text-align: center; + } +} + +.nav-justified { + .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; + } +} +/* Tabbable tabs */ + +/* Hide tabbable panes to start, show them when `.active` */ + +.tab-content { + padding: 35px 30px; + background: #fff; + box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.05); + + > .tab-pane { + display: none; + } + + > .active { + display: block; + } +} diff --git a/src/styles/partials/theme-elements/_popover.scss b/src/styles/partials/theme-elements/_popover.scss new file mode 100644 index 0000000..4fffe48 --- /dev/null +++ b/src/styles/partials/theme-elements/_popover.scss @@ -0,0 +1,96 @@ +/** ===================== + tooltip css start +========================== **/ +.popover { + top: 0; + left: 0; + border: none; + box-shadow: 0 0 15px #dcdcdc; + border-radius: 15px; + + .arrow { + &::after { + display: none; + } + + &::before { + content: '\6d'; + top: -1px; + left: 0; + font-family: 'pct'; + font-size: 20px; + line-height: 0.3; + color: #fff; + border: none; + text-shadow: 0 2px 3px rgba(220, 220, 220, 0.7); + } + } + + .popover-header { + border-top-left-radius: inherit; + border-top-right-radius: inherit; + background: transparent; + border-bottom-color: $theme-background; + } +} + +.bs-popover-top { + .arrow { + &::before { + content: '\6d'; + text-shadow: 0 2px 3px rgba(220, 220, 220, 0.7); + } + } +} + +.bs-popover-right { + .arrow::before { + content: '\6a'; + left: -4px; + top: 2.6px; + border: none; + text-shadow: -2px 0 3px rgba(220, 220, 220, 0.46); + } +} + +.bs-popover-bottom { + .arrow:before { + content: '\6c'; + top: 3px; + border: none; + text-shadow: 0 -2px 3px rgba(220, 220, 220, 0.46); + } + + .popover-header::before { + } +} + +.bs-popover-left { + .arrow::before { + content: '\6b'; + left: -8px; + top: 3.6px; + border: none; + text-shadow: 2px 0 3px rgba(220, 220, 220, 0.46); + } +} + +.bs-popover-auto { + &[x-placement^='top'] { + @extend .bs-popover-top; + } + + &[x-placement^='right'] { + @extend .bs-popover-right; + } + + &[x-placement^='bottom'] { + @extend .bs-popover-bottom; + } + + &[x-placement^='left'] { + @extend .bs-popover-left; + } +} + +/**====== tooltip css end ======**/ diff --git a/src/styles/partials/theme-elements/_progress.scss b/src/styles/partials/theme-elements/_progress.scss new file mode 100644 index 0000000..e18fd27 --- /dev/null +++ b/src/styles/partials/theme-elements/_progress.scss @@ -0,0 +1,39 @@ +/** ===================== + Progress css start +========================== **/ +@keyframes progress-bar-stripes { + from { + background-position: 16px 0; + } + + to { + background-position: 0 0; + } +} + +.progress { + height: 12px; + font-size: 10px; + background-color: $theme-background; + border-radius: 0; + overflow: visible; +} + +.progress-bar { + background-color: $primary-color; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.3); + @each $value in $color-name { + $i: index($color-name, $value); + + &.progress-#{$value} { + background: nth($color-color, $i); + } + } + &.progress-c-theme { + background: $theme-color; + } + &.progress-c-theme2 { + background: $theme-color2; + } +} +/**====== Progress css end ======**/ diff --git a/src/styles/partials/theme-elements/_radiobox-checkbox.scss b/src/styles/partials/theme-elements/_radiobox-checkbox.scss new file mode 100644 index 0000000..0a896e9 --- /dev/null +++ b/src/styles/partials/theme-elements/_radiobox-checkbox.scss @@ -0,0 +1,269 @@ +/** ===================== + Radio & Checked css start +========================== **/ +.checkbox { + padding: 10px 0; + min-height: auto; + position: relative; + margin-right: 5px; + + input[type='checkbox'] { + margin: 0; + display: none; + width: 22px; + + + .form-check-label, + + .cr { + padding-left: 0; + + &:before { + content: '\e83f'; + width: 22px; + height: 22px; + display: inline-block; + margin-right: 10px; + border: 2px solid #e9eaec; + border-radius: 3px; + font: { + size: 15px; + family: 'feather'; + weight: 400; + } + line-height: 19px; + vertical-align: bottom; + text-align: center; + background: #ffffff; + color: transparent; + cursor: pointer; + transition: all 0.2s ease-in-out; + } + } + + &:checked + .form-check-label:before, + &:checked + .cr:before { + background: #1dd5d2; + border-color: #1dd5d2; + color: #ffffff; + } + + &.disabled + .form-check-label, + &:disabled + .form-check-label, + &.disabled + .cr, + &:disabled + .cr { + opacity: 0.5; + } + + &.disabled + .form-check-label:before, + &:disabled + .form-check-label:before, + &.disabled + .cr:before, + &:disabled + .cr:before { + cursor: not-allowed; + } + } + + &.checkbox-fill { + input[type='checkbox'] { + + .form-check-label, + + .cr { + &:after { + content: ''; + width: 22.5px; + height: 22.5px; + display: inline-block; + margin-right: 10px; + border: 2px solid #e9eaec; + border-radius: 2px; + vertical-align: bottom; + text-align: center; + background: transparent; + cursor: pointer; + transition: all 0.2s ease-in-out; + position: absolute; + top: 8.5px; + left: 3px; + } + + &:before { + opacity: 0; + content: '\e840'; + font-size: 27px; + background: transparent; + } + } + + &:checked { + + .form-check-label, + + .cr { + &:after { + opacity: 0; + } + + &:before { + opacity: 1; + background: transparent; + color: #1dd5d2; + border-color: transparent; + } + } + } + } + } + @each $value in $color-bt-name { + $i: index($color-bt-name, $value); + + &.checkbox-#{$value} input[type='checkbox']:checked + .form-check-label:before, + &.checkbox-#{$value} input[type='checkbox']:checked + .cr:before { + background: nth($color-bt-color, $i); + border-color: nth($color-bt-color, $i); + color: #ffffff; + } + + &.checkbox-fill.checkbox-#{$value} input[type='checkbox']:checked + .form-check-label:before, + &.checkbox-fill.checkbox-#{$value} input[type='checkbox']:checked + .cr:before { + background: transparent; + color: nth($color-bt-color, $i); + border-color: transparent; + } + } + + .form-check-label, + .cr { + cursor: pointer; + } +} + +.radio { + padding: 10px 0; + min-height: auto; + position: relative; + margin-right: 5px; + + input[type='radio'] { + margin: 0; + display: none; + width: 22px; + + + .form-check-label, + + .cr { + padding-left: 0; + + &:after, + &:before { + content: ''; + display: inline-block; + margin-right: 10px; + border-radius: 50%; + vertical-align: bottom; + background: #fff; + color: transparent; + cursor: pointer; + transition: all 0.2s ease-in-out; + } + + &:before { + width: 22px; + height: 22px; + border: 2px solid #e9eaec; + } + + &:after { + width: 12px; + height: 12px; + position: absolute; + top: 13px; + left: 5px; + } + } + + &:checked { + + .form-check-label, + + .cr { + &:before { + border-color: #1dd5d2; + } + + &:after { + background: $theme-color; + } + } + } + + &:disabled { + + .form-check-label, + + .cr { + opacity: 0.5; + cursor: not-allowed; + + &:after, + &:before { + cursor: not-allowed; + } + } + } + } + + &.radio-fill { + input[type='radio'] { + + .form-check-label, + + .cr { + &:after { + width: 18px; + height: 18px; + top: 10px; + left: 2px; + } + } + } + } + @each $value in $color-bt-name { + $i: index($color-bt-name, $value); + + &.radio-#{$value} input[type='radio']:checked + .form-check-label, + &.radio-#{$value} input[type='radio']:checked + .cr { + &:before { + border-color: nth($color-bt-color, $i); + } + + &:after { + background: nth($color-bt-color, $i); + } + } + } + + .form-check-label, + .cr { + cursor: pointer; + } +} +@-moz-document url-prefix() { + .radio input[type='radio'] + .form-check-label::after, + .radio input[type='radio'] + .cr::after { + top: 14px; + } +} + +.custom-controls-stacked { + .radio { + input[type='radio'] { + + .form-check-label, + + .cr { + &:after { + top: 15px; + } + } + } + } +} +/**====== Radio & Checked css end ======**/ + +.radio, +.checkbox { + .form-check { + padding-left: 0; + margin-bottom: 6px; + + input[type='radio'] + .form-check-label:after { + top: 5px; + } + } +} diff --git a/src/styles/partials/theme-elements/_tooltip.scss b/src/styles/partials/theme-elements/_tooltip.scss new file mode 100644 index 0000000..4aaa111 --- /dev/null +++ b/src/styles/partials/theme-elements/_tooltip.scss @@ -0,0 +1,71 @@ +/** ===================== + tooltip css start +========================== **/ +.tooltip { + &.show { + opacity: 1; + } + + .arrow { + position: absolute; + display: block; + + &::before { + content: '\6d'; + left: 0; + font-family: 'pct'; + font-size: 20px; + line-height: 0.3; + color: #000; + border: none; + text-shadow: 0 2px 3px rgba(220, 220, 220, 0.46); + } + } +} +.bs-tooltip-right { + .arrow { + &::before { + content: '\6a'; + left: -7px; + top: 2.6px; + border: none; + text-shadow: -2px 0 3px rgba(220, 220, 220, 0.46); + } + } + + .tooltip-inner { + border-radius: 15px 20px 20px 15px; + } +} + +.bs-tooltip-bottom { + .arrow { + &::before { + content: '\6c'; + border: none; + text-shadow: 0 -2px 3px rgba(220, 220, 220, 0.46); + } + } +} + +.bs-tooltip-left { + .arrow { + &::before { + content: '\6b'; + left: -8px; + top: 3.6px; + border: none; + text-shadow: 2px 0 3px rgba(220, 220, 220, 0.46); + } + } + .tooltip-inner { + border-radius: 20px 15px 15px 20px; + } +} + +.tooltip-inner { + border-radius: 20px; + padding: 6px 15px; + box-shadow: 0 0 15px #dcdcdc; +} +/**====== tooltip css end ======**/ diff --git a/src/styles/partials/third-party/_css-animator.scss b/src/styles/partials/third-party/_css-animator.scss new file mode 100644 index 0000000..d9566cc --- /dev/null +++ b/src/styles/partials/third-party/_css-animator.scss @@ -0,0 +1,1626 @@ +@charset "UTF-8"; + +/*! + * animate.css -http://daneden.me/animate + * Version - 3.5.2 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2017 Daniel Eden + */ + +.animated { + animation-duration: 1s; + animation-fill-mode: both; + &.infinite { + animation-iteration-count: infinite; + } + &.hinge { + animation-duration: 2s; + } + &.flipOutX, + &.flipOutY, + &.bounceIn, + &.bounceOut { + animation-duration: 0.75s; + } +} + +@keyframes bounce { + from, + 20%, + 53%, + 80%, + to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + transform: translate3d(0, 0, 0); + } + + 40%, + 43% { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + transform: translate3d(0, -30px, 0); + } + + 70% { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + transform: translate3d(0, -15px, 0); + } + + 90% { + transform: translate3d(0, -4px, 0); + } +} + +.bounce { + animation-name: bounce; + transform-origin: center bottom; +} + +@keyframes flash { + from, + 50%, + to { + opacity: 1; + } + + 25%, + 75% { + opacity: 0; + } +} + +.flash { + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes pulse { + from { + transform: scale3d(1, 1, 1); + } + + 50% { + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + transform: scale3d(1, 1, 1); + } +} + +.pulse { + animation-name: pulse; +} + +@keyframes rubberBand { + from { + transform: scale3d(1, 1, 1); + } + + 30% { + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + transform: scale3d(0.95, 1.05, 1); + } + + 75% { + transform: scale3d(1.05, 0.95, 1); + } + + to { + transform: scale3d(1, 1, 1); + } +} + +.rubberBand { + animation-name: rubberBand; +} + +@keyframes shake { + from, + to { + transform: translate3d(0, 0, 0); + } + + 10%, + 30%, + 50%, + 70%, + 90% { + transform: translate3d(-10px, 0, 0); + } + + 20%, + 40%, + 60%, + 80% { + transform: translate3d(10px, 0, 0); + } +} + +.shake { + animation-name: shake; +} + +@keyframes headShake { + 0% { + transform: translateX(0); + } + + 6.5% { + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + transform: translateX(2px) rotateY(3deg); + } + + 50% { + transform: translateX(0); + } +} + +.headShake { + animation-timing-function: ease-in-out; + animation-name: headShake; +} + +@keyframes swing { + 20% { + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + transform: rotate3d(0, 0, 1, 0deg); + } +} + +.swing { + transform-origin: top center; + animation-name: swing; +} + +@keyframes tada { + from { + transform: scale3d(1, 1, 1); + } + + 10%, + 20% { + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + } + + 30%, + 50%, + 70%, + 90% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, + 60%, + 80% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + transform: scale3d(1, 1, 1); + } +} + +.tada { + animation-name: tada; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes wobble { + from { + transform: none; + } + + 15% { + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + transform: none; + } +} + +.wobble { + animation-name: wobble; +} + +@keyframes jello { + from, + 11.1%, + to { + transform: none; + } + + 22.2% { + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + transform: skewX(0.39063deg) skewY(0.39063deg); + } + + 88.8% { + transform: skewX(-0.19531deg) skewY(-0.19531deg); + } +} + +.jello { + animation-name: jello; + transform-origin: center; +} + +@keyframes bounceIn { + from, + 20%, + 40%, + 60%, + 80%, + to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); + } + + 20% { + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + transform: scale3d(0.9, 0.9, 0.9); + } + + 60% { + opacity: 1; + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + transform: scale3d(0.97, 0.97, 0.97); + } + + to { + opacity: 1; + transform: scale3d(1, 1, 1); + } +} + +.bounceIn { + animation-name: bounceIn; +} + +@keyframes bounceInDown { + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + transform: translate3d(0, 25px, 0); + } + + 75% { + transform: translate3d(0, -10px, 0); + } + + 90% { + transform: translate3d(0, 5px, 0); + } + + to { + transform: none; + } +} + +.bounceInDown { + animation-name: bounceInDown; +} + +@keyframes bounceInLeft { + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + transform: translate3d(25px, 0, 0); + } + + 75% { + transform: translate3d(-10px, 0, 0); + } + + 90% { + transform: translate3d(5px, 0, 0); + } + + to { + transform: none; + } +} + +.bounceInLeft { + animation-name: bounceInLeft; +} + +@keyframes bounceInRight { + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + transform: translate3d(-25px, 0, 0); + } + + 75% { + transform: translate3d(10px, 0, 0); + } + + 90% { + transform: translate3d(-5px, 0, 0); + } + + to { + transform: none; + } +} + +.bounceInRight { + animation-name: bounceInRight; +} + +@keyframes bounceInUp { + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + + 75% { + transform: translate3d(0, 10px, 0); + } + + 90% { + transform: translate3d(0, -5px, 0); + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.bounceInUp { + animation-name: bounceInUp; +} + +@keyframes bounceOut { + 20% { + transform: scale3d(0.9, 0.9, 0.9); + } + + 50%, + 55% { + opacity: 1; + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); + } +} + +.bounceOut { + animation-name: bounceOut; +} + +@keyframes bounceOutDown { + 20% { + transform: translate3d(0, 10px, 0); + } + + 40%, + 45% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } +} + +.bounceOutDown { + animation-name: bounceOutDown; +} + +@keyframes bounceOutLeft { + 20% { + opacity: 1; + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } +} + +.bounceOutLeft { + animation-name: bounceOutLeft; +} + +@keyframes bounceOutRight { + 20% { + opacity: 1; + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } +} + +.bounceOutRight { + animation-name: bounceOutRight; +} + +@keyframes bounceOutUp { + 20% { + transform: translate3d(0, -10px, 0); + } + + 40%, + 45% { + opacity: 1; + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } +} + +.bounceOutUp { + animation-name: bounceOutUp; +} + +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +.fadeIn { + animation-name: fadeIn; +} + +@keyframes fadeInDown { + from { + opacity: 0; + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInDown { + animation-name: fadeInDown; +} + +@keyframes fadeInDownBig { + from { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInDownBig { + animation-name: fadeInDownBig; +} + +@keyframes fadeInLeft { + from { + opacity: 0; + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInLeft { + animation-name: fadeInLeft; +} + +@keyframes fadeInLeftBig { + from { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInLeftBig { + animation-name: fadeInLeftBig; +} + +@keyframes fadeInRight { + from { + opacity: 0; + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInRight { + animation-name: fadeInRight; +} + +@keyframes fadeInRightBig { + from { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInRightBig { + animation-name: fadeInRightBig; +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInUp { + animation-name: fadeInUp; +} + +@keyframes fadeInUpBig { + from { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInUpBig { + animation-name: fadeInUpBig; +} + +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +.fadeOut { + animation-name: fadeOut; +} + +@keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, 100%, 0); + } +} + +.fadeOutDown { + animation-name: fadeOutDown; +} + +@keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } +} + +.fadeOutDownBig { + animation-name: fadeOutDownBig; +} + +@keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(-100%, 0, 0); + } +} + +.fadeOutLeft { + animation-name: fadeOutLeft; +} + +@keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } +} + +.fadeOutLeftBig { + animation-name: fadeOutLeftBig; +} + +@keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(100%, 0, 0); + } +} + +.fadeOutRight { + animation-name: fadeOutRight; +} + +@keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } +} + +.fadeOutRightBig { + animation-name: fadeOutRightBig; +} + +@keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, -100%, 0); + } +} + +.fadeOutUp { + animation-name: fadeOutUp; +} + +@keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } +} + +.fadeOutUpBig { + animation-name: fadeOutUpBig; +} + +@keyframes flip { + from { + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + animation-timing-function: ease-out; + } + + 40% { + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + animation-timing-function: ease-out; + } + + 50% { + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + animation-timing-function: ease-in; + } + + 80% { + transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + animation-timing-function: ease-in; + } + + to { + transform: perspective(400px); + animation-timing-function: ease-in; + } +} + +.animated.flip { + -webkit-backface-visibility: visible; + backface-visibility: visible; + animation-name: flip; +} + +@keyframes flipInX { + from { + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + animation-timing-function: ease-in; + } + + 60% { + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + transform: perspective(400px); + } +} + +.flipInX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + animation-name: flipInX; +} + +@keyframes flipInY { + from { + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + animation-timing-function: ease-in; + } + + 60% { + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + transform: perspective(400px); + } +} + +.flipInY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + animation-name: flipInY; +} + +@keyframes flipOutX { + from { + transform: perspective(400px); + } + + 30% { + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +.flipOutX { + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; +} + +@keyframes flipOutY { + from { + transform: perspective(400px); + } + + 30% { + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +.flipOutY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + animation-name: flipOutY; +} + +@keyframes lightSpeedIn { + from { + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + transform: skewX(20deg); + opacity: 1; + } + + 80% { + transform: skewX(-5deg); + opacity: 1; + } + + to { + transform: none; + opacity: 1; + } +} + +.lightSpeedIn { + animation-name: lightSpeedIn; + animation-timing-function: ease-out; +} + +@keyframes lightSpeedOut { + from { + opacity: 1; + } + + to { + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +.lightSpeedOut { + animation-name: lightSpeedOut; + animation-timing-function: ease-in; +} + +@keyframes rotateIn { + from { + transform-origin: center; + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + transform-origin: center; + transform: none; + opacity: 1; + } +} + +.rotateIn { + animation-name: rotateIn; +} + +@keyframes rotateInDownLeft { + from { + transform-origin: left bottom; + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + transform-origin: left bottom; + transform: none; + opacity: 1; + } +} + +.rotateInDownLeft { + animation-name: rotateInDownLeft; +} + +@keyframes rotateInDownRight { + from { + transform-origin: right bottom; + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + transform-origin: right bottom; + transform: none; + opacity: 1; + } +} + +.rotateInDownRight { + animation-name: rotateInDownRight; +} + +@keyframes rotateInUpLeft { + from { + transform-origin: left bottom; + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + transform-origin: left bottom; + transform: none; + opacity: 1; + } +} + +.rotateInUpLeft { + animation-name: rotateInUpLeft; +} + +@keyframes rotateInUpRight { + from { + transform-origin: right bottom; + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + transform-origin: right bottom; + transform: none; + opacity: 1; + } +} + +.rotateInUpRight { + animation-name: rotateInUpRight; +} + +@keyframes rotateOut { + from { + transform-origin: center; + opacity: 1; + } + + to { + transform-origin: center; + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +.rotateOut { + animation-name: rotateOut; +} + +@keyframes rotateOutDownLeft { + from { + transform-origin: left bottom; + opacity: 1; + } + + to { + transform-origin: left bottom; + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +.rotateOutDownLeft { + animation-name: rotateOutDownLeft; +} + +@keyframes rotateOutDownRight { + from { + transform-origin: right bottom; + opacity: 1; + } + + to { + transform-origin: right bottom; + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutDownRight { + animation-name: rotateOutDownRight; +} + +@keyframes rotateOutUpLeft { + from { + transform-origin: left bottom; + opacity: 1; + } + + to { + transform-origin: left bottom; + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutUpLeft { + animation-name: rotateOutUpLeft; +} + +@keyframes rotateOutUpRight { + from { + transform-origin: right bottom; + opacity: 1; + } + + to { + transform-origin: right bottom; + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +.rotateOutUpRight { + animation-name: rotateOutUpRight; +} + +@keyframes hinge { + 0% { + transform-origin: top left; + animation-timing-function: ease-in-out; + } + + 20%, + 60% { + transform: rotate3d(0, 0, 1, 80deg); + transform-origin: top left; + animation-timing-function: ease-in-out; + } + + 40%, + 80% { + transform: rotate3d(0, 0, 1, 60deg); + transform-origin: top left; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +.hinge { + animation-name: hinge; +} + +@keyframes jackInTheBox { + from { + opacity: 0; + transform: scale(0.1) rotate(30deg); + transform-origin: center bottom; + } + + 50% { + transform: rotate(-10deg); + } + + 70% { + transform: rotate(3deg); + } + + to { + opacity: 1; + transform: scale(1); + } +} + +.jackInTheBox { + animation-name: jackInTheBox; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes rollIn { + from { + opacity: 0; + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + transform: none; + } +} + +.rollIn { + animation-name: rollIn; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +.rollOut { + animation-name: rollOut; +} + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); + } + + 50% { + opacity: 1; + } +} + +.zoomIn { + animation-name: zoomIn; +} + +@keyframes zoomInDown { + from { + opacity: 0; + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomInDown { + animation-name: zoomInDown; +} + +@keyframes zoomInLeft { + from { + opacity: 0; + transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomInLeft { + animation-name: zoomInLeft; +} + +@keyframes zoomInRight { + from { + opacity: 0; + transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomInRight { + animation-name: zoomInRight; +} + +@keyframes zoomInUp { + from { + opacity: 0; + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomInUp { + animation-name: zoomInUp; +} + +@keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); + } + + to { + opacity: 0; + } +} + +.zoomOut { + animation-name: zoomOut; +} + +@keyframes zoomOutDown { + 40% { + opacity: 1; + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + transform-origin: center bottom; + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomOutDown { + animation-name: zoomOutDown; +} + +@keyframes zoomOutLeft { + 40% { + opacity: 1; + transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + transform: scale(0.1) translate3d(-2000px, 0, 0); + transform-origin: left center; + } +} + +.zoomOutLeft { + animation-name: zoomOutLeft; +} + +@keyframes zoomOutRight { + 40% { + opacity: 1; + transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + transform: scale(0.1) translate3d(2000px, 0, 0); + transform-origin: right center; + } +} + +.zoomOutRight { + animation-name: zoomOutRight; +} + +@keyframes zoomOutUp { + 40% { + opacity: 1; + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + transform-origin: center bottom; + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomOutUp { + animation-name: zoomOutUp; +} + +@keyframes slideInDown { + from { + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.slideInDown { + animation-name: slideInDown; +} + +@keyframes slideInLeft { + from { + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.slideInLeft { + animation-name: slideInLeft; +} + +@keyframes slideInRight { + from { + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.slideInRight { + animation-name: slideInRight; +} + +@keyframes slideInUp { + from { + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.slideInUp { + animation-name: slideInUp; +} + +@keyframes slideOutDown { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(0, 100%, 0); + } +} + +.slideOutDown { + animation-name: slideOutDown; +} + +@keyframes slideOutLeft { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(-100%, 0, 0); + } +} + +.slideOutLeft { + animation-name: slideOutLeft; +} + +@keyframes slideOutRight { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(100%, 0, 0); + } +} + +.slideOutRight { + animation-name: slideOutRight; +} + +@keyframes slideOutUp { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(0, -100%, 0); + } +} + +.slideOutUp { + animation-name: slideOutUp; +} diff --git a/src/styles/partials/third-party/_ngx-perfect-scrollbar.scss b/src/styles/partials/third-party/_ngx-perfect-scrollbar.scss new file mode 100644 index 0000000..9a2d97e --- /dev/null +++ b/src/styles/partials/third-party/_ngx-perfect-scrollbar.scss @@ -0,0 +1,45 @@ +.datta-scroll, +.scroll-widget, +.main-chat-cont, +.config-scroll, +.main-friend-list { + .ps__rail-y { + &:hover > .ps__thumb-y, + &:focus > .ps__thumb-y, + &.ps--clicking .ps__thumb-y { + background-color: #a7a7a7; + width: 5px; + } + } + .ps__thumb-y { + background-color: #aaa; + border-radius: 6px; + width: 5px; + right: 0; + } +} + +perfect-scrollbar.datta-scroll > .ps, +perfect-scrollbar.scroll-widget > .ps, +perfect-scrollbar.main-chat-cont > .ps, +perfect-scrollbar.config-scroll > .ps, +perfect-scrollbar.main-friend-list > .ps { + &.ps--active-y > .ps__rail-y { + width: 5px; + &:hover, + &.ps--clicking { + width: 5px; + } + } + &.ps--scrolling-y > .ps__rail-y, + &.ps--scrolling-x > .ps__rail-x { + opacity: 0.4; + background-color: transparent; + } + &.ps--active-y > .ps__rail-y { + &:hover, + &.ps--clicking { + width: 5px; + } + } +} diff --git a/src/styles/partials/third-party/_react-full-screen.scss b/src/styles/partials/third-party/_react-full-screen.scss new file mode 100644 index 0000000..0974946 --- /dev/null +++ b/src/styles/partials/third-party/_react-full-screen.scss @@ -0,0 +1,3 @@ +:not(:root):-webkit-full-screen::backdrop { + background: transparent !important; +} diff --git a/src/styles/partials/third-party/_third-party.scss b/src/styles/partials/third-party/_third-party.scss new file mode 100644 index 0000000..b5747ed --- /dev/null +++ b/src/styles/partials/third-party/_third-party.scss @@ -0,0 +1,8 @@ +@import 'react-perfect-scrollbar/dist/css/styles.css'; +@import 'nvd3/build/nv.d3.css'; + +@import 'ngx-perfect-scrollbar'; +@import 'react-full-screen'; +@import 'css-animator'; + +@import 'react-bootstrap/react-bootstrap'; diff --git a/src/styles/partials/third-party/react-bootstrap/_header.scss b/src/styles/partials/third-party/react-bootstrap/_header.scss new file mode 100644 index 0000000..da57680 --- /dev/null +++ b/src/styles/partials/third-party/react-bootstrap/_header.scss @@ -0,0 +1,41 @@ +@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css'); +.pcoded-header { + .dropdown { + height: 70px; + .dropdown-toggle { + margin: -2px 0 0 4px; + .userinfoname { + font-size: 14px; + color: #131523; + font-weight: 400; + font-family: pretendard; + display: block; + margin-right: 4px; + } + } + } + .btn { + padding: 0; + margin-bottom: 0; + margin-right: 0; + border: none; + &:after { + right: -12px !important; + } + &:focus, + &:active, + &:hover { + text-decoration: none; + } + } + .main-search { + margin-left: 5px; + .input-group-text { + line-height: 1; + } + } + + .btn > i { + margin-right: -12px; + } +} diff --git a/src/styles/partials/third-party/react-bootstrap/react-bootstrap.scss b/src/styles/partials/third-party/react-bootstrap/react-bootstrap.scss new file mode 100644 index 0000000..6053ec3 --- /dev/null +++ b/src/styles/partials/third-party/react-bootstrap/react-bootstrap.scss @@ -0,0 +1 @@ +@import 'header'; diff --git a/src/styles/partials/widget/_widget.scss b/src/styles/partials/widget/_widget.scss new file mode 100644 index 0000000..15ca40b --- /dev/null +++ b/src/styles/partials/widget/_widget.scss @@ -0,0 +1,1586 @@ +.gradientcolor { + .btn-round { + border-radius: 30px; + } +} + +.ChartShadow { + filter: drop-shadow(0px 20px 8px rgba(0, 0, 0, 0.2)); +} + +.chart-activity, +.chart-sale, +.chart-statistics, +.device-chart { + margin: 0 auto; +} + +#Statistics-sale { + .amcharts-cursor-fill { + filter: url(#shadow); + fill: rgba(256, 256, 256, 0.3); + stroke-width: 0; + } +} + +.amcharts-zoom-out-bg, +.amcharts-zoom-out-image { + display: none; +} +/* statistics section */ + +.card-command { + .card-icon { + opacity: 0.5; + } +} + +.mat-drp { + .btn.dropdown-toggle { + border: none; + background: transparent; + box-shadow: none; + color: #d8d8d8; + + &:after { + display: none; + } + + &:focus { + box-shadow: none; + outline: none; + } + } +} + +.table-card { + .row-table { + display: flex; + align-items: center; + table-layout: fixed; + height: 100%; + width: 100%; + margin: 0; + + i { + padding: 50px 20px; + } + + > [class*='col-'] { + display: table-cell; + float: none; + table-layout: fixed; + vertical-align: middle; + + .row { + display: flex; + align-items: center; + } + } + } +} + +.rides-bar { + i.rides-icon { + background: linear-gradient(-135deg, #1de9b6 0%, #1dc4e9 100%); + border-radius: 50px; + padding: 15px; + } +} + +.visitor { + .img-female { + position: absolute; + left: 10px; + bottom: 0; + } + + .img-men { + position: absolute; + right: 10px; + bottom: 0; + } +} + +.profit-bar { + i { + background: linear-gradient(-135deg, #1de9b6 0%, #1dc4e9 100%); + border-radius: 50px; + padding: 13px; + } +} + +.assets-value { + .bg-img { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-position: center 103%; + background-repeat: no-repeat; + background-size: contain; + z-index: 1; + } + + .card-block, + .card-body { + position: relative; + z-index: 5; + } + @media screen and (max-width: 1199px) { + .bg-img { + background: none; + } + } +} + +.chat-sanders { + .card-header { + background: linear-gradient(-135deg, #3f4d67 0%, #3f4d67 100%); + } + + .msg { + margin-bottom: 5px; + display: inline-block; + padding: 15px; + position: relative; + } + + .scroll-wrapper { + height: 305px; + } + + .received-chat { + h5 { + border-radius: 50%; + width: 40px; + height: 40px; + text-align: center; + } + + .msg { + background: #fff; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.1); + + &:after { + content: ''; + position: absolute; + left: -12px; + bottom: 18px; + transform: rotate(270deg); + border: 6px solid transparent; + border-bottom-color: #fff; + } + } + } + + .send-chat { + h5 { + border-radius: 50%; + width: 40px; + height: 40px; + text-align: center; + } + + .msg { + background: linear-gradient(-135deg, #1de9b6 0%, #1dc4e9 100%); + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.1); + + &:after { + content: ''; + position: absolute; + right: -11px; + bottom: 18px; + transform: rotate(450deg); + border: 6px solid transparent; + border-bottom-color: #1de9b6; + } + } + } + + .btn { + background: none; + opacity: 0.4; + } + + .form-control { + background: #f4f7fa; + } + + .input-group { + background: transparent; + } +} + +.widget-menu { + background: linear-gradient(-135deg, #88d3ce 0%, #6e45e2 100%); + + .widget-title { + border-top: 1px solid #676fb9; + } + + i { + opacity: 0.5; + } +} + +.to-do { + .to-do-button { + position: absolute; + bottom: 30px; + right: 20px; + + .btn { + width: 40px; + height: 40px; + float: right; + border-radius: 50px; + border: none; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + padding: 0; + margin: 0; + } + } +} + +.lazy-dog { + i { + opacity: 0.5; + } +} + +.widget-content { + .widget-lorem { + .media { + h5 { + border-radius: 50%; + width: 50px; + height: 50px; + text-align: center; + } + } + } +} + +.note-bar { + .friendlist-box { + padding: 25px 35px; + border-top: 1px solid #e3e3e3; + + &:first-child { + border: 0; + } + + h6 { + display: inline-block; + } + + i { + opacity: 0.2; + color: $theme-font-color; + } + } +} + +.to-do-list { + h6 { + display: inline-block; + } + + .done-task { + opacity: 0.7; + + > div { + filter: grayscale(0.8); + } + + h6, + p, + span { + text-decoration: line-through; + } + } + + .checkbox-fade { + .check-task { + display: block; + } + + .to-content { + display: inline-block; + } + + .cr { + border-radius: 6px; + border: 1px solid #e3e3e3; + cursor: pointer; + display: inline-block; + float: right; + height: 24px; + margin-right: 0.5em; + position: relative; + width: 24px; + margin: 0; + top: 5px; + + .cr-icon { + color: #fff; + font-size: 0.8em; + left: 0; + line-height: 0; + position: absolute; + right: 0; + text-align: center; + top: 50%; + } + } + + label input[type='checkbox'] { + display: none; + } + + label input[type='checkbox'] + .cr > .cr-icon { + transform: scale(3) rotateZ(-20deg); + opacity: 0; + transition: all 0.3s ease-in; + } + + label input[type='checkbox']:checked + .cr > .cr-icon { + transform: scale(1) rotateZ(0deg); + opacity: 1; + } + + label input[type='checkbox']:checked + .cr { + background: linear-gradient(-135deg, #1de9b6 0%, #1dc4e9 100%); + border: 0; + } + } +} + +.User-Activity, +.user-list { + .table { + td { + vertical-align: middle; + } + + thead { + th { + border: 0; + } + } + } +} + +.Application-list, +.code-table { + .table { + td { + vertical-align: middle; + } + + .label { + border-radius: 15px; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } + } + + thead { + th { + border: 0; + } + } +} + +.Recent-Users, +.User-Lists { + .table { + tr { + &:first-child { + td { + border-top: 0; + } + } + } + + td { + vertical-align: middle; + } + + .label { + border-radius: 15px; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } + } +} + +.social-media { + .progress { + background: transparent; + border-radius: 0; + justify-content: center; + + h5 { + position: relative; + top: -2px; + } + } +} + +.post-emoticon { + ul { + padding: 0; + margin: 25px 0 0; + list-style: none; + } + + li { + display: inline-block; + } + + i { + position: relative; + top: 4px; + } +} + +.visa-top { + .visa { + img { + position: absolute; + left: 0; + right: 0; + bottom: 0; + } + } +} + +.loction-user { + .row { + padding: 35px 30px; + } + + i { + opacity: 0.5; + } + + .loction-progress { + padding: 35px 30px; + + .progress { + justify-content: center; + height: 10px; + border-radius: 0; + } + } +} + +.Design-sprint, +.dashboard-kit { + .design-image { + padding: 0; + margin: 30px 0 0; + list-style: none; + } + + li { + display: inline-block; + text-align: center; + margin-right: 3px; + } + + .btn { + border-radius: 50px; + border: 0; + width: 40px; + height: 40px; + padding: 0; + margin: 0; + } + + i { + opacity: 0.3; + } +} + +.ux-designer { + position: relative; + padding: 35px 30px; + + .btn { + border-radius: 50px; + border: 0; + width: 50px; + height: 50px; + position: absolute; + right: 20px; + top: -20px; + padding: 0; + margin: 0; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } +} + +.task-list { + list-style: none; + position: relative; + margin: 0; + padding: 30px 0 0; + + &:after { + content: ''; + position: absolute; + background: #ecedef; + height: 100%; + width: 2px; + top: 0; + left: 30px; + z-index: 1; + } + + li { + margin-bottom: 30px; + padding-left: 55px; + position: relative; + + &:last-child { + margin-bottom: 0; + } + + .task-icon { + position: absolute; + left: 22px; + top: 13px; + border-radius: 50%; + padding: 2px; + width: 17px; + height: 17px; + z-index: 2; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } + } +} + +.project-main { + padding: 30px 25px; + + i { + opacity: 0.4; + } +} + +.user-chart { + i { + opacity: 0.3; + } +} + +.leads-progress, +.progress-gender { + .progress { + justify-content: center; + height: 10px; + border-radius: 0; + } +} + +.user-card { + .label { + border-radius: 15px; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } +} + +.Active-visitor { + .progress { + height: 7px; + } + + .card-active > div + div { + border-left: 1px solid $theme-border; + } + @media screen and (max-width: 767px) { + .card-active [class*='col-']:last-child { + border-left: 0; + margin-top: 20px; + } + } +} + +.Invoice-bar { + .invoice-lable { + label { + background: #fff; + border-radius: 15px; + padding: 4px 20px; + } + } + + i { + background: rgba(255, 255, 255, 0.2); + width: 70px; + height: 70px; + border-radius: 50%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + transition: all 0.3s ease-in-out; + } + + .progress { + background: rgba(255, 255, 255, 0.22); + border-radius: 0; + height: 7px; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.1); + } +} + +.location-sale { + .card-icon { + width: 70px; + height: 70px; + background: #fff; + border-radius: 50%; + position: absolute; + top: -20px; + text-align: center; + right: 0; + left: 0; + margin: 0 auto; + display: flex; + justify-content: center; + align-items: center; + @media screen and (max-width: 768px) { + display: none; + } + } +} + +.card-Impression { + i { + background: linear-gradient(-135deg, #1de9b6 0%, #1dc4e9 100%); + width: 52px; + height: 52px; + border-radius: 5px; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } +} + +.card-Revenue { + i { + background: rgba(255, 255, 255, 0.2); + width: 70px; + height: 70px; + border-radius: 50%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + transition: all 0.3s ease-in-out; + } +} + +.card-customer { + i { + width: 70px; + height: 70px; + justify-content: center; + align-items: center; + display: flex; + border-radius: 5px; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } + @media screen and (max-width: 375px) { + i { + width: 80px; + height: 80px; + font-size: 50px; + } + } +} + +.ticket-customer { + i { + position: absolute; + opacity: 0.2; + right: 32px; + bottom: 30px; + } +} + +.ticket-visitor { + .progress { + border-radius: 0; + height: 13px; + } +} + +.customer-visitor { + i { + opacity: 0.2; + font-size: 118px; + position: absolute; + bottom: 0; + left: 0; + } +} + +.card-social { + &:hover { + i { + font-size: 40px; + transition: all 0.3s ease-in-out; + } + } + + .progress { + height: 6px; + } + + .card-active > div + div { + border-left: 1px solid $theme-border; + } +} + +.Online-Order, +.statistial-visit { + .progress { + height: 6px; + } +} + +.team-leader { + .slide { + margin-bottom: 32px; + + li { + width: 10px; + height: 10px; + background: #e3e3e3; + margin: 0 6px; + border-radius: 50px; + } + + .carousel-indicators { + bottom: -44px; + + .active { + background: #869791; + } + } + } +} + +.affilate-offers { + .card-icon { + opacity: 0.5; + } + + .label { + border-radius: 15px; + margin: 0; + padding: 8px 18px; + } +} + +.earning-date { + .bd-example { + padding: 0; + margin: 0; + border: 0; + + .nav-pills { + background: transparent; + padding: 0; + box-shadow: none; + + .nav-link { + min-width: auto; + padding: 6px 20px; + color: #fff; + } + + .nav-link.active { + background: #fff; + box-shadow: none; + color: #000; + position: relative; + + &:after { + content: ''; + position: absolute; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #fff; + top: -5px; + left: 0; + right: 0; + margin: 0 auto; + width: 11px; + } + } + } + + .tab-content { + background: transparent; + padding: 0; + box-shadow: none; + } + } +} + +.sale-view { + i { + width: 60px; + height: 60px; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } +} + +.project-task { + i { + opacity: 0.5; + } + + .label { + border-radius: 15px; + margin: 0; + padding: 6px 16px; + } + + .progress { + height: 6px; + } +} + +.card-event { + .label { + border-radius: 15px; + margin: 0; + padding: 5px 16px; + } + + i { + position: absolute; + bottom: 36px; + right: 27px; + } +} + +.bitcoin-wallet { + i { + position: absolute; + right: 50px; + top: 50%; + transform: translateY(-50%); + opacity: 0.5; + } +} + +.summary-box { + .card-icon { + opacity: 0.4; + } +} + +.feature-card-box { + .feature-icon { + width: 70px; + height: 70px; + border-radius: 10px; + color: #fff; + margin: 0 auto; + padding: 10px; + font-size: 35px; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + + &:hover { + .feature-icon { + transform: scale(1.2); + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + border-radius: 0; + } + } +} + +.card { + .card-block, + .card-body { + code { + background-color: #eee; + margin: 5px; + display: inline-block; + border-radius: 3px; + padding: 0 3px; + } + } +} +@media screen and (max-width: 767px) { + .user-designer [class*='col-']:last-child { + margin-top: 15px; + } + div.dataTables_wrapper div.dataTables_filter label { + float: none !important; + text-align: center; + } +} + +.offline-box { + iframe { + width: 100%; + border: 1px solid #ddd; + } +} +/* ===================== to do page ============================= */ + +#task-container { + ul { + overflow: hidden; + padding: 0; + } + + li { + float: left; + width: 49%; + overflow: auto; + height: auto; + min-height: 10px; + background: #fff; + display: inline-block; + padding: 20px; + border: 1px solid #ccc; + color: #666; + border-top: 5px solid $primary-color; + cursor: pointer; + margin-bottom: 20px; + margin-right: 2%; + transition: all 0.3s; + position: relative; + + &:nth-child(2n) { + margin-right: 0; + } + } + + li.complete { + opacity: 1; + border-top: 9px solid $danger-color; + transition: all ease-in 0.3s; + + &:before { + /*background: url("../../../images/complete.png") no-repeat;*/ // amit images + position: absolute; + top: 5px; + right: 5px; + content: ''; + width: 55px; + height: 55px; + background-size: 100%; + } + + p { + text-decoration: line-through; + } + } + @media screen and (max-width: 580px) { + li { + width: 100%; + } + } +} + +.new-task { + .to-do-list { + .cr { + float: left; + top: 0; + margin-right: 16px; + } + } + + label input[type='checkbox'] { + display: none; + } +} + +.checkbox-fade { + .cr { + border-radius: 6px; + border: 1px solid #e3e3e3; + cursor: pointer; + display: inline-block; + float: left; + height: 24px; + margin-right: 0.5em; + position: relative; + width: 24px; + top: 0; + } +} + +.task-panel { + .to-do-label { + margin-bottom: 15px; + + &:last-child { + border-bottom: none; + margin-bottom: 0; + padding: 0; + } + } +} + +.done-task .captions, +.done-task span { + color: #919aa3; + text-decoration: line-through; +} + +.to-do-list { + i { + color: #ccc; + font-size: 17px; + opacity: 0; + } + + &:hover { + i { + opacity: 1; + transition: opacity ease-in 0.3s; + } + } +} + +.note-card { + .note-box-aside { + border-right: 1px solid #ddd; + } + + .Note-header { + padding: 20px 0; + } + + #Note-pad { + border: none; + resize: none; + background: 0 0; + padding: 0 20px 0 50px; + line-height: 35px; + } + + .note-write { + position: relative; + background: -webkit-linear-gradient(top, #98dcfa 0%, #e1f5fe 5%) 0 0; + background-size: 100% 35px; + + &:before { + content: ''; + position: absolute; + width: 0; + top: 0; + left: 32px; + bottom: 0; + border-left: 1px solid #4fc3f7; + } + + &:after { + content: ''; + position: absolute; + width: 0; + top: 0; + left: 34px; + bottom: 0; + border-left: 1px solid #4fc3f7; + } + } + + .Note-delete { + margin-bottom: 0; + opacity: 0; + background: rgba(0, 0, 0, 0.6); + border: none; + position: absolute; + right: 20px; + color: #fff; + transition: all ease-in 0.3s; + border-radius: 2px; + cursor: pointer; + transform: translateX(10px); + } + + #Note-list { + li:hover { + .Note-delete { + opacity: 1; + transform: translateX(0px); + } + } + } +} +/* ===================== Gallery page ============================= */ + +.gallery-masonry { + .card-columns { + column-count: 4; + } +} +@media screen and (max-width: 1400px) { + .gallery-masonry { + .card-columns { + column-count: 3; + } + } +} +@media screen and (max-width: 992px) { + .gallery-masonry { + .card-columns { + column-count: 2; + } + } +} +@media screen and (max-width: 575px) { + .gallery-masonry { + .card-columns { + column-count: 1; + } + } +} + +.job-meta-data { + i { + margin-right: 5px; + color: $primary-color; + } +} +/* ===================== Task-list page ============================= */ + +.task-data { + img { + width: 40px; + box-shadow: none; + } + + i { + color: $theme-heading-color; + } + + .dropdown-toggle { + &:after { + color: $theme-heading-color; + } + } +} + +.task-board-left { + .task-right-header-revision, + .task-right-header-status, + .task-right-header-users { + padding-bottom: 10px; + padding-top: 10px; + border-bottom: 1px solid #f1f1f1; + cursor: pointer; + } + + .taskboard-right-progress, + .taskboard-right-revision, + .taskboard-right-users { + padding-top: 10px; + } + + .taskboard-right-progress { + .progress { + height: 9px; + margin-bottom: 25px; + } + } + + .user-box { + .media-object { + height: 50px; + width: 50px; + cursor: pointer; + } + + .media-left { + position: relative; + } + + .btn.btn-icon { + width: 40px; + height: 40px; + border-radius: 50%; + font-size: 15px; + display: flex; + justify-content: center; + align-items: center; + } + } + + .live-status { + height: 8px; + width: 8px; + position: absolute; + bottom: 0; + right: 0; + border-radius: 100%; + top: 5px; + } +} + +.filter-bar { + .navbar { + background-color: #fff; + border-radius: 4px; + box-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08); + padding: 0.5rem 1rem; + @media screen and (max-width: 557px) { + .f-text { + display: block; + width: 100%; + } + + .f-view { + padding-left: 24px; + + span { + display: block; + width: 100%; + margin-bottom: 10px; + } + } + } + } + + .label { + border-radius: 4px; + font-size: 13px; + padding: 3px 7px; + } + + .task-detail { + margin-bottom: 5px; + } + + .card-task { + .task-list-table { + display: inline-block; + + img { + width: 40px; + box-shadow: none; + } + + i { + color: $theme-heading-color; + } + } + + .task-board { + float: right; + margin-top: 5px; + + .dropdown { + display: inline-block; + } + + .btn { + padding: 4px 10px; + font-size: 10px; + margin: 0; + } + } + } +} + +.assign-user, +.task-comment { + img { + width: 45px; + box-shadow: none; + } +} +/* ===================== Invoice page ============================= */ + +.invoice-contact { + display: flex; + margin-bottom: 30px; + padding-top: 30px; + align-items: center; +} + +.invoice-table.table { + padding-left: 20px; + + td { + border: 0; + padding: 4px 0; + } +} + +.invoive-info { + display: flex; + margin-bottom: 30px; + + h6 { + margin-bottom: 20px; + text-transform: uppercase; + } + + .invoice-order.table { + padding-left: 0; + + th { + border: 0; + padding: 4px 0; + + &:first-child { + padding-left: 0; + width: 80px; + } + } + } +} + +.invoice-total.table { + background: #f3f3f3; + padding: 30px 0; + + th { + border: 0; + padding: 4px 0; + text-align: right; + } + + td { + text-align: right; + } + + tbody { + padding-right: 20px; + float: right; + } +} + +.invoice-summary { + .label { + border-radius: 5px; + padding: 3px 10px; + font-size: 12px; + } +} + +.invoice-list { + .btn { + padding: 5px 10px; + font-size: 12px; + } + + .task-list-table { + display: inline-block; + } +} +/* ================ new css =================== */ + +.datepicker-dropdown { + padding: 20px; + color: #fff; + background: #3f4d67; + font-size: 14px; + + &:after { + border-bottom: 6px solid #3f4d67; + } +} + +.datepicker-dropdown.datepicker-orient-top:after { + border-top: 6px solid #3f4d67; +} + +.datepicker table tr td.active.active, +.datepicker table tr td.active.highlighted.active, +.datepicker table tr td.active.highlighted:active, +.datepicker table tr td.active:active, +.datepicker table tr td.highlighted, +.datepicker table tr td.today, +.datepicker table tr td.day:hover, +.datepicker table tr td.focused, +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover { + background-color: #333f54; + color: #fff; +} + +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover, +.datepicker table tr td.new, +.datepicker table tr td.old { + color: #ffffff94; +} + +.syntax-output { + border-radius: 0.25rem; + border: 1px solid $theme-border; +} + +.owl-carousel { + .owl-nav { + button { + &.owl-next, + &.owl-prev { + padding: 3px 9px !important; + background-color: $primary-color; + color: #fff; + } + } + } + button:focus { + outline: none; + color: #fff; + } +} +.owl-theme .owl-nav [class*='owl-']:hover { + background-color: $primary-color; + color: #fff; +} + +.counter b { + font-size: 24px; +} + +.tour-mobile .error-block { + display: none; +} + +.message-mobile { + span { + font-size: 16px; + } + + .task-right-header-status { + margin-bottom: 10px; + padding: 10px 0; + border-bottom: 1px solid #f1f1f1; + cursor: pointer; + @media screen and (min-width: 992px) { + display: none; + } + } +} + +.fullcalendar-card { + .fc-button { + background-color: $primary-color; + border-color: #fff; + color: #fff; + background-image: none; + box-shadow: none; + text-shadow: none; + height: 37px; + padding: 0 15px; + } + + h2 { + font-size: 28px; + } + @media screen and (max-width: 768px) { + .fc .fc-toolbar > * > * { + float: none; + } + .fc-toolbar .fc-left, + .fc-toolbar .fc-right, + .fc-toolbar .fc-center { + float: none; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + text-align: center; + margin: 0 auto; + margin-bottom: 10px; + } + } +} + +.ck-content strong { + font-weight: 600; +} + +div.code-toolbar { + > .toolbar a, + > .toolbar button, + > .toolbar span { + padding: 3px 0.9em !important; + background: #04a9f5 !important; + color: #fff !important; + box-shadow: none !important; + } +} + +pre[class*='language-']:after, +pre[class*='language-']:before { + display: none; +} +#chat-scroll { + height: 280px; + position: relative; +} +.msg-user-list.datta-scroll { + height: calc(100vh - 300px); + position: relative; +} +.msg-user-chat.datta-scroll { + height: calc(100vh - 330px); + position: relative; +} + +@media screen and (max-width: 1199px) { + .note-card .note-box-aside { + border: none !important; + } +} + +@media screen and (max-width: 991px) { + .ch-block { + display: none; + } + + .msg-block { + &.dis-chat { + .taskboard-right-progress { + display: none; + } + + .ch-block { + display: block; + } + } + } +} +@media screen and (max-width: 992px) { + .tour-mobile .error-block { + display: block; + } + + .tour-mobile .page-wrapper { + display: none; + } +} +@media screen and (min-width: 768px) { + .horizontal-mobile { + display: none; + } +} diff --git a/src/styles/style.scss b/src/styles/style.scss new file mode 100644 index 0000000..e63d748 --- /dev/null +++ b/src/styles/style.scss @@ -0,0 +1,31 @@ +@import 'bootstrap/dist/css/bootstrap'; + +// General theme contents +@import 'partials/variables'; +@import 'partials/general'; +@import 'partials/mixins/function'; + +// important Element +@import 'partials/menu/menu-lite'; + +// Theme Element +@import 'partials/theme-elements/alert'; +@import 'partials/theme-elements/authentication'; +@import 'partials/theme-elements/breadcrumb-pagination'; +@import 'partials/theme-elements/button'; +@import 'partials/theme-elements/form'; +@import 'partials/theme-elements/labels-badges'; +@import 'partials/theme-elements/nav'; +@import 'partials/theme-elements/popover'; +@import 'partials/theme-elements/progress'; +@import 'partials/theme-elements/radiobox-checkbox'; +@import 'partials/theme-elements/tooltip'; + +// Other +@import 'partials/other/chat'; +@import 'partials/other/prism'; +@import 'partials/other/Switches'; +@import 'partials/other/chart'; +@import 'partials/other/icon-lauouts'; + +@import 'partials/third-party/third-party'; diff --git a/src/styles/styles.css b/src/styles/styles.css new file mode 100644 index 0000000..0fceadf --- /dev/null +++ b/src/styles/styles.css @@ -0,0 +1,231 @@ +.form-control + .input-group-addon:not(:first-child) { + border-left: 0; +} +.input-group-addon:not(:first-child), +.input-group-btn:not(:first-child) > .btn, +.input-group-btn:not(:first-child) > .btn-group > .btn, +.input-group-btn:not(:first-child) > .dropdown-toggle, +.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn, +.input-group-btn:not(:last-child) > .btn:not(:first-child), +.input-group .form-control:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.25; + color: #495057; + text-align: center; + background-color: #e9ecef; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} +.input-group-addon, +.input-group-btn { + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: -ms-flexbox; + display: -webkit-box; + display: flex; + -ms-flex-align: center; + -webkit-box-align: center; + align-items: center; +} +.input-group-addon { + background-color: #4680ff; + color: #fff; +} + +/*===== Border Inputs start =====*/ +.form-control-primary { + border-color: #4680ff; + color: #4680ff; +} + +.form-control-primary:focus { + border-color: #4680ff; +} + +.input-group-primary .input-group-addon { + background-color: #4680ff; +} + +.input-group-primary .form-control { + border-color: #4680ff; +} + +.form-control-warning { + border-color: #ffb64d; + color: #ffb64d; +} + +.form-control-warning:focus { + border-color: #ffb64d; +} + +.input-group-warning .input-group-addon { + background-color: #ffb64d; +} + +.input-group-warning .form-control { + border-color: #ffb64d; +} + +.form-control-default { + border-color: #e0e0e0; + color: #e0e0e0; +} + +.form-control-default:focus { + border-color: #e0e0e0; +} + +.input-group-default .input-group-addon { + background-color: #e0e0e0; +} + +.input-group-default .form-control { + border-color: #e0e0e0; +} + +.form-control-danger { + border-color: #fc6180; + color: #fc6180; +} + +.form-control-danger:focus { + border-color: #fc6180; +} + +.input-group-danger .input-group-addon { + background-color: #fc6180; +} + +.input-group-danger .form-control { + border-color: #fc6180; +} + +.form-control-success { + border-color: #93be52; + color: #93be52; +} + +.form-control-success:focus { + border-color: #93be52; +} + +.input-group-success .input-group-addon { + background-color: #93be52; +} + +.input-group-success .form-control { + border-color: #93be52; +} + +.form-control-inverse { + border-color: #303548; + color: #303548; +} + +.form-control-inverse:focus { + border-color: #303548; +} + +.input-group-inverse .input-group-addon { + background-color: #303548; +} + +.input-group-inverse .form-control { + border-color: #303548; +} + +.form-control-info { + border-color: #62d1f3; + color: #62d1f3; +} + +.form-control-info:focus { + border-color: #62d1f3; +} + +.input-group-info .input-group-addon { + background-color: #62d1f3; +} + +.input-group-info .form-control { + border-color: #62d1f3; +} + +.input-group { + margin-bottom: 1.25em; +} + +.input-group-addon { + background-color: #4680ff; + color: #fff; +} + +.input-group-button [class*='btn-'] { + padding: 0; + margin-bottom: 0; +} + +.input-group-button .input-group-addon { + transition: all ease-in 0.3s; +} + +.input-group-button .input-group-addon:hover { + background-color: #79a3ff; + border-color: #79a3ff; +} + +.input-group-button .input-group-addon:hover .btn { + background-color: #79a3ff; + border-color: #79a3ff; +} + +.input-group-dropdown [class*='btn-'] { + margin-bottom: 0; +} + +.btn { + /* margin-right: 0px !important; */ + margin-bottom: 0px !important; +} + +.btn-success { + background-color: #93be52 !important; + border-color: #93be52 !important; + color: #fff; + cursor: pointer; + transition: all ease-in 0.3s; +} + +.btn-success:hover { + background-color: #aacc77 !important; + border-color: #aacc77 !important; +} + +.btn-success:active { + background-color: #73993a !important; + border-color: #73993a !important; + box-shadow: none; + color: #fff; +} + +.btn-success:focus { + box-shadow: none; + color: #fff; +} + +.btn-success.disabled { + background-color: rgba(147, 190, 82, 0.5); + border-color: rgba(147, 190, 82, 0.5); +} diff --git a/src/styles/ui-treetable.css b/src/styles/ui-treetable.css new file mode 100644 index 0000000..1e7bd9b --- /dev/null +++ b/src/styles/ui-treetable.css @@ -0,0 +1,208 @@ +.ui-treetable { + position: relative; +} + +.ui-treetable table { + border-collapse: collapse; + width: 100%; + table-layout: fixed; +} + +.ui-treetable .ui-treetable-thead > tr > th, +.ui-treetable .ui-treetable-tbody > tr > td, +.ui-treetable .ui-treetable-tfoot > tr > td { + padding: 0.25em 0.5em; +} + +.ui-treetable .ui-treetable-toggler { + cursor: pointer; + display: inline-block; + height: 1em; + position: relative; + top: 50%; + margin-top: -0.5em; +} + +.ui-treetable .ui-sortable-column { + cursor: pointer; +} + +.ui-treetable p-treetablesorticon { + vertical-align: middle; +} + +.ui-treetable-auto-layout > .ui-treetable-wrapper { + overflow-x: auto; +} + +.ui-treetable-auto-layout > .ui-treetable-wrapper > table { + table-layout: auto; +} + +.ui-treetable .ui-treetable-chkbox { + margin: 0 0.25em; + vertical-align: middle; +} + +/* Sections */ +.ui-treetable-caption, +.ui-treetable-summary { + padding: 0.25em 0.5em; + text-align: center; + font-weight: bold; +} + +.ui-treetable-caption { + border-bottom: 0 none; +} + +.ui-treetable-summary { + border-top: 0 none; +} + +/* Paginator */ +.ui-treetable .ui-paginator-top { + border-bottom: 0 none; +} + +.ui-treetable .ui-paginator-bottom { + border-top: 0 none; +} + +/* Scrollable */ +.ui-treetable-scrollable-wrapper { + position: relative; +} +.ui-treetable-scrollable-header, +.ui-treetable-scrollable-footer { + overflow: hidden; + border: 0 none; +} + +.ui-treetable-scrollable-body { + overflow: auto; + position: relative; +} + +.ui-treetable-scrollable-body > table > .ui-treetable-tbody > tr:first-child > td { + border-top: 0 none; +} + +.ui-treetable-virtual-table { + position: absolute; +} + +/* Frozen Columns */ +.ui-treetable-frozen-view .ui-treetable-scrollable-body { + overflow: hidden; +} + +.ui-treetable-frozen-view > .ui-treetable-scrollable-body > table > .ui-treetable-tbody > tr > td:last-child { + border-right: 0 none; +} + +.ui-treetable-unfrozen-view { + position: absolute; + top: 0px; +} + +/* Resizable */ +.ui-treetable-resizable > .ui-treetable-wrapper { + overflow-x: auto; +} + +.ui-treetable-resizable .ui-treetable-thead > tr > th, +.ui-treetable-resizable .ui-treetable-tfoot > tr > td, +.ui-treetable-resizable .ui-treetable-tbody > tr > td { + overflow: hidden; +} + +.ui-treetable-resizable .ui-resizable-column { + background-clip: padding-box; + position: relative; +} + +.ui-treetable-resizable-fit .ui-resizable-column:last-child .ui-column-resizer { + display: none; +} + +.ui-treetable .ui-column-resizer { + display: block; + position: absolute !important; + top: 0; + right: 0; + margin: 0; + width: 0.5em; + height: 100%; + padding: 0px; + cursor: col-resize; + border: 1px solid transparent; +} + +.ui-treetable .ui-column-resizer-helper { + width: 1px; + position: absolute; + z-index: 10; + display: none; +} + +/* Reorder */ +.ui-treetable-reorder-indicator-up, +.ui-treetable-reorder-indicator-down { + position: absolute; + display: none; +} + +/* Responsive */ +.ui-treetable-responsive .ui-treetable-tbody > tr > td .ui-column-title { + display: none; +} + +@media screen and (max-width: 40em) { + .ui-treetable-responsive .ui-treetable-thead > tr > th, + .ui-treetable-responsive .ui-treetable-tfoot > tr > td { + display: none !important; + } + + .ui-treetable-responsive .ui-treetable-tbody > tr > td { + text-align: left; + display: block; + border: 0 none; + width: 100% !important; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + clear: left; + } + + .ui-treetable-responsive .ui-treetable-tbody > tr > td .ui-column-title { + padding: 0.4em; + min-width: 30%; + display: inline-block; + margin: -0.4em 1em -0.4em -0.4em; + font-weight: bold; + } +} + +/* Loader */ +.ui-treetable-loading { + position: absolute; + width: 100%; + height: 100%; + opacity: 0.1; + z-index: 1; +} + +.ui-treetable-loading-content { + position: absolute; + left: 50%; + top: 50%; + z-index: 2; + margin-top: -1em; + margin-left: -1em; +} + +.ui-treetable .ui-treetable-loading-icon { + font-size: 2em; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6f2da33 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.paths.json", + "compilerOptions": { + "target": "ES5", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "module": "CommonJS", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "sourceMap": true + }, + "include": ["src/**/*", "test/**/*", "craco.config.ts"] +} diff --git a/tsconfig.paths.json b/tsconfig.paths.json new file mode 100644 index 0000000..202f344 --- /dev/null +++ b/tsconfig.paths.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@components/*": ["src/components/*"], + "@hooks/*": ["src/hooks/*"], + "@layout/*": ["src/layout/*"], + "@pages/*": ["src/pages/*"], + "@api/*": ["src/services/api/*"], + "@redux/*": ["src/redux/*"], + "@styles/*": ["src/styles/*"], + "@images/*": ["src/styles/images/*"], + "@icons/*": ["src/styles/images/icons/*"], + "@utils/*": ["src/share/utils/*"], + "@lib/*": ["src/share/lib/*"], + "@constants/*": ["src/share/constants/*"], + "@context/*": ["src/share/context/*"], + "@config/*": ["src/config/*"] + } + } +}