From d047482668e1442d6c66d80133682850ec3bdc66 Mon Sep 17 00:00:00 2001 From: saarock Date: Tue, 23 Jul 2024 14:31:27 +0545 Subject: [PATCH 1/3] Added comeFrom and leaveFrom features to control toast appearance --- playground/package-lock.json | 5090 +++++++++++++++++ playground/src/components/App.tsx | 29 +- .../components/ComeAndLeaveFromOptions.tsx | 42 + playground/src/components/ContainerCode.tsx | 3 +- playground/src/components/ToastCode.tsx | 16 +- playground/src/components/constants.ts | 8 + playground/src/index.css | 7 + playground/yarn.lock | 2514 ++++---- 8 files changed, 6400 insertions(+), 1309 deletions(-) create mode 100644 playground/package-lock.json create mode 100644 playground/src/components/ComeAndLeaveFromOptions.tsx diff --git a/playground/package-lock.json b/playground/package-lock.json new file mode 100644 index 00000000..50681291 --- /dev/null +++ b/playground/package-lock.json @@ -0,0 +1,5090 @@ +{ + "name": "playground", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "playground", + "version": "0.0.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11", + "@typescript-eslint/eslint-plugin": "^5.57.1", + "@typescript-eslint/parser": "^5.57.1", + "@vitejs/plugin-react": "^4.0.0", + "eslint": "^8.38.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.3.4", + "sass": "^1.62.1", + "typescript": "^5.0.2", + "vite": "^4.3.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz", + "integrity": "sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", + "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-compilation-targets": "^7.21.5", + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helpers": "^7.21.5", + "@babel/parser": "^7.21.8", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz", + "integrity": "sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", + "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.21.5", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", + "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", + "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", + "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz", + "integrity": "sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", + "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", + "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.5", + "@babel/types": "^7.21.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", + "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "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.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", + "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.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==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.7.tgz", + "integrity": "sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", + "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz", + "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/type-utils": "5.59.7", + "@typescript-eslint/utils": "5.59.7", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "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/parser": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz", + "integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.7", + "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.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", + "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/visitor-keys": "5.59.7" + }, + "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.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", + "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/utils": "5.59.7", + "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.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", + "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", + "dev": true, + "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.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", + "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/visitor-keys": "5.59.7", + "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.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz", + "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.7", + "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/visitor-keys": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", + "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.7", + "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/@vitejs/plugin-react": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz", + "integrity": "sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.4", + "@babel/plugin-transform-react-jsx-self": "^7.21.0", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "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==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.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==", + "dev": true, + "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/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001489", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz", + "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==", + "dev": true, + "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" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.408", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.408.tgz", + "integrity": "sha512-vjeaj0u/UYnzA/CIdGXzzcxRLCqRwREYc9YfaWInjIEr7/XPttZ6ShpyqapchEy0S2r6LpLjDBTnNj7ZxnxJKg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.41.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "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", + "import-fresh": "^3.0.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.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "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-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "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-refresh": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz", + "integrity": "sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "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==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "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/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.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/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "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.4" + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "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", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "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.", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.12.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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "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==" + }, + "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==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "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==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.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==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true + }, + "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==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "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==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "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.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "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", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.23.0.tgz", + "integrity": "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sass": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", + "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "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/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "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" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "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==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", + "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "dev": true, + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz", + "integrity": "sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==", + "dev": true + }, + "@babel/core": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", + "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-compilation-targets": "^7.21.5", + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helpers": "^7.21.5", + "@babel/parser": "^7.21.8", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz", + "integrity": "sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==", + "dev": true, + "requires": { + "@babel/types": "^7.21.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", + "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.21.5", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", + "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.21.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", + "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "dev": true, + "requires": { + "@babel/types": "^7.21.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", + "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz", + "integrity": "sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==", + "dev": true + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", + "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/template": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" + } + }, + "@babel/traverse": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", + "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.5", + "@babel/types": "^7.21.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", + "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "dev": true, + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "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" + }, + "dependencies": { + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@eslint/js": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", + "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + } + } + }, + "@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==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.7.tgz", + "integrity": "sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", + "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz", + "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/type-utils": "5.59.7", + "@typescript-eslint/utils": "5.59.7", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz", + "integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.7", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", + "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/visitor-keys": "5.59.7" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", + "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/utils": "5.59.7", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", + "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", + "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/visitor-keys": "5.59.7", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz", + "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.7", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", + "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.7", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vitejs/plugin-react": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz", + "integrity": "sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==", + "dev": true, + "requires": { + "@babel/core": "^7.21.4", + "@babel/plugin-transform-react-jsx-self": "^7.21.0", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "react-refresh": "^0.14.0" + } + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "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==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001489", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz", + "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "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==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "electron-to-chromium": { + "version": "1.4.408", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.408.tgz", + "integrity": "sha512-vjeaj0u/UYnzA/CIdGXzzcxRLCqRwREYc9YfaWInjIEr7/XPttZ6ShpyqapchEy0S2r6LpLjDBTnNj7ZxnxJKg==", + "dev": true + }, + "esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.41.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "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", + "import-fresh": "^3.0.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.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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==", + "dev": true + }, + "eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "requires": {} + }, + "eslint-plugin-react-refresh": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz", + "integrity": "sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==", + "dev": true, + "requires": {} + }, + "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==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true + }, + "espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "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==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "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==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "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==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "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" + } + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "immutable": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "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==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "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==", + "dev": true + }, + "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==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "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==", + "dev": true + }, + "node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "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==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.23.0.tgz", + "integrity": "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "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==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "sass": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", + "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "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==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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==", + "dev": true + }, + "typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "vite": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", + "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "dev": true, + "requires": { + "esbuild": "^0.17.5", + "fsevents": "~2.3.2", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "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==", + "dev": true + } + } +} diff --git a/playground/src/components/App.tsx b/playground/src/components/App.tsx index d6f2cdfc..f9f6cef9 100644 --- a/playground/src/components/App.tsx +++ b/playground/src/components/App.tsx @@ -16,6 +16,7 @@ import React from 'react'; import '../../../scss/main.scss'; import { Id, ToastContainer, toast } from '../../../src/index'; import { defaultProps } from '../../../src/components/ToastContainer'; +import { ComeAndLeaveFromOptions } from './ComeAndLeaveFromOptions.tsx'; // Attach to window. Can be useful to debug // @ts-ignore @@ -39,7 +40,9 @@ class App extends React.Component { progress: '', disableAutoClose: false, limit: 0, - theme: 'light' + theme: 'light', + comeFrom : '', + leaveFrom : '' }; } @@ -125,6 +128,20 @@ class App extends React.Component { )); } + onSelectComeOrLeaveOptions = e => { + if (e.target.value === "select comeFrom" || e.target.value === "select leaveFrom") { + this.setState({ + [e.target.name] : "" + }); + return; + } + + this.setState({ + [e.target.name] : e.target.value + }); + + } + render() { return (
@@ -179,6 +196,7 @@ class App extends React.Component { + + { + Object.values(comeAndLeaveFrom).map(option => ) + } + + +) + } + + + ) +} \ No newline at end of file diff --git a/playground/src/components/ContainerCode.tsx b/playground/src/components/ContainerCode.tsx index e5fd01d7..07c8ba95 100644 --- a/playground/src/components/ContainerCode.tsx +++ b/playground/src/components/ContainerCode.tsx @@ -31,7 +31,7 @@ export const ContainerCode: React.FC = ({ pauseOnFocusLoss, isDefaultProps, draggable, - theme + theme, }) => (

Toast Container

@@ -48,6 +48,7 @@ export const ContainerCode: React.FC = ({ theme {`="${theme}"`}
+
autoClose {`={${disableAutoClose ? false : autoClose}}`} diff --git a/playground/src/components/ToastCode.tsx b/playground/src/components/ToastCode.tsx index 2d0f8ce0..1ca6028a 100644 --- a/playground/src/components/ToastCode.tsx +++ b/playground/src/components/ToastCode.tsx @@ -29,6 +29,8 @@ export interface ToastCodeProps { draggable: boolean; progress: number; theme: typeof themes[number]; + comeFrom: string; + leaveFrom: string; } export const ToastCode: React.FC = ({ @@ -41,7 +43,9 @@ export const ToastCode: React.FC = ({ type, draggable, progress, - theme + theme, + comeFrom, + leaveFrom }) => (

Toast Emitter

@@ -74,6 +78,16 @@ export const ToastCode: React.FC = ({ pauseOnHover {`: ${pauseOnHover ? 'true' : 'false'}`},
+
+ comeFrom + {`: ${comeFrom}`}, +
+ +
+ leaveFrom + {`: ${leaveFrom}`}, +
+
draggable {`: ${draggable ? 'true' : 'false'}`}, diff --git a/playground/src/components/constants.ts b/playground/src/components/constants.ts index c5279417..c52a50bc 100644 --- a/playground/src/components/constants.ts +++ b/playground/src/components/constants.ts @@ -53,6 +53,14 @@ export const positions = { BOTTOM_CENTER: 'bottom-center' }; + +export const comeAndLeaveFrom = { + LEFT : 'left', + RIGHT : 'right', + TOP: 'top', + BOTTOM: 'bottom', +} + export const typs = { INFO: 'info', SUCCESS: 'success', diff --git a/playground/src/index.css b/playground/src/index.css index d4af8f90..22946f00 100644 --- a/playground/src/index.css +++ b/playground/src/index.css @@ -52,6 +52,9 @@ input[type='number'] { input[type='radio'] { margin-right: 8px; } +option { + color: black; +} select { padding: 8px; @@ -200,3 +203,7 @@ select { animation: octocat-wave 560ms ease-in-out; } } + +.comeAndLeaveFromContainer { + display: flex; +} \ No newline at end of file diff --git a/playground/yarn.lock b/playground/yarn.lock index 7a086566..aaacc2e9 100644 --- a/playground/yarn.lock +++ b/playground/yarn.lock @@ -3,29 +3,29 @@ "@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + "integrity" "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + "version" "2.2.1" dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + "integrity" "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz" + "version" "7.21.4" dependencies: "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.21.5": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.9.tgz#10a2e7fda4e51742c907938ac3b7229426515514" - integrity sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ== + "integrity" "sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz" + "version" "7.21.9" -"@babel/core@^7.21.4": - version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" - integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.21.4": + "integrity" "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz" + "version" "7.21.8" dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.21.4" @@ -37,64 +37,64 @@ "@babel/template" "^7.20.7" "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.2" + "semver" "^6.3.0" "@babel/generator@^7.21.5": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" - integrity sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg== + "integrity" "sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz" + "version" "7.21.9" dependencies: "@babel/types" "^7.21.5" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" + "jsesc" "^2.5.1" "@babel/helper-compilation-targets@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" - integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== + "integrity" "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz" + "version" "7.21.5" dependencies: "@babel/compat-data" "^7.21.5" "@babel/helper-validator-option" "^7.21.0" - browserslist "^4.21.3" - lru-cache "^5.1.1" - semver "^6.3.0" + "browserslist" "^4.21.3" + "lru-cache" "^5.1.1" + "semver" "^6.3.0" "@babel/helper-environment-visitor@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" - integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== + "integrity" "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz" + "version" "7.21.5" "@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + "integrity" "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz" + "version" "7.21.0" dependencies: "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" "@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/types" "^7.18.6" "@babel/helper-module-imports@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" - integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== + "integrity" "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz" + "version" "7.21.4" dependencies: "@babel/types" "^7.21.4" "@babel/helper-module-transforms@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" - integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== + "integrity" "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz" + "version" "7.21.5" dependencies: "@babel/helper-environment-visitor" "^7.21.5" "@babel/helper-module-imports" "^7.21.4" @@ -106,89 +106,89 @@ "@babel/types" "^7.21.5" "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" - integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== + "integrity" "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz" + "version" "7.21.5" "@babel/helper-simple-access@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" - integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== + "integrity" "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz" + "version" "7.21.5" dependencies: "@babel/types" "^7.21.5" "@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/types" "^7.18.6" "@babel/helper-string-parser@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" - integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== + "integrity" "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==" + "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz" + "version" "7.21.5" "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + "version" "7.19.1" "@babel/helper-validator-option@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" - integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + "integrity" "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz" + "version" "7.21.0" "@babel/helpers@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" - integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA== + "integrity" "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz" + "version" "7.21.5" dependencies: "@babel/template" "^7.20.7" "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" "@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.21.9": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" - integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== + "integrity" "sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz" + "version" "7.21.9" "@babel/plugin-transform-react-jsx-self@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54" - integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA== + "integrity" "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz" + "version" "7.21.0" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-react-jsx-source@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" - integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== + "integrity" "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" + "version" "7.19.6" dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/template@^7.20.7": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" - integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== + "integrity" "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz" + "version" "7.21.9" dependencies: "@babel/code-frame" "^7.21.4" "@babel/parser" "^7.21.9" "@babel/types" "^7.21.5" "@babel/traverse@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" - integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== + "integrity" "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz" + "version" "7.21.5" dependencies: "@babel/code-frame" "^7.21.4" "@babel/generator" "^7.21.5" @@ -198,339 +198,234 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/parser" "^7.21.5" "@babel/types" "^7.21.5" - debug "^4.1.0" - globals "^11.1.0" + "debug" "^4.1.0" + "globals" "^11.1.0" "@babel/types@^7.18.6", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" - integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== + "integrity" "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz" + "version" "7.21.5" dependencies: "@babel/helper-string-parser" "^7.21.5" "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== + "to-fast-properties" "^2.0.0" "@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== + "integrity" "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==" + "resolved" "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz" + "version" "0.17.19" "@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" + "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + "version" "4.4.0" dependencies: - eslint-visitor-keys "^3.3.0" + "eslint-visitor-keys" "^3.3.0" "@eslint-community/regexpp@^4.4.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== + "integrity" "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==" + "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz" + "version" "4.5.1" "@eslint/eslintrc@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.5.2" - 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" + "integrity" "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.3.2" + "espree" "^9.5.2" + "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" "@eslint/js@8.41.0": - version "8.41.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" - integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== + "integrity" "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==" + "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz" + "version" "8.41.0" "@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + "integrity" "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz" + "version" "0.11.8" dependencies: "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" + "debug" "^4.1.1" + "minimatch" "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + "version" "1.0.1" "@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + "version" "1.2.1" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + "integrity" "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + "version" "0.3.3" dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + "version" "3.1.0" "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + "version" "1.1.2" "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "integrity" "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + "version" "1.4.15" + +"@jridgewell/sourcemap-codec@1.4.14": + "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + "version" "1.4.14" "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + "integrity" "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" + "version" "0.3.18" dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" "@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" dependencies: "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "run-parallel" "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" dependencies: "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "fastq" "^1.6.0" "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + "integrity" "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz" + "version" "7.0.12" "@types/prop-types@*": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + "version" "15.7.5" "@types/react-dom@^18.0.11": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.4.tgz#13f25bfbf4e404d26f62ac6e406591451acba9e0" - integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw== + "integrity" "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==" + "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz" + "version" "18.2.4" dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.28": - version "18.2.7" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.7.tgz#dfb4518042a3117a045b8c222316f83414a783b3" - integrity sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw== + "integrity" "sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-18.2.7.tgz" + "version" "18.2.7" dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - csstype "^3.0.2" + "csstype" "^3.0.2" "@types/scheduler@*": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + "integrity" "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" + "version" "0.16.3" "@types/semver@^7.3.12": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + "integrity" "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" + "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz" + "version" "7.5.0" "@typescript-eslint/eslint-plugin@^5.57.1": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz#e470af414f05ecfdc05a23e9ce6ec8f91db56fe2" - integrity sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA== + "integrity" "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz" + "version" "5.59.7" dependencies: "@eslint-community/regexpp" "^4.4.0" "@typescript-eslint/scope-manager" "5.59.7" "@typescript-eslint/type-utils" "5.59.7" "@typescript-eslint/utils" "5.59.7" - debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.57.1": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.7.tgz#02682554d7c1028b89aa44a48bf598db33048caa" - integrity sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ== + "debug" "^4.3.4" + "grapheme-splitter" "^1.0.4" + "ignore" "^5.2.0" + "natural-compare-lite" "^1.4.0" + "semver" "^7.3.7" + "tsutils" "^3.21.0" + +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.57.1": + "integrity" "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz" + "version" "5.59.7" dependencies: "@typescript-eslint/scope-manager" "5.59.7" "@typescript-eslint/types" "5.59.7" "@typescript-eslint/typescript-estree" "5.59.7" - debug "^4.3.4" + "debug" "^4.3.4" "@typescript-eslint/scope-manager@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz#0243f41f9066f3339d2f06d7f72d6c16a16769e2" - integrity sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ== + "integrity" "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz" + "version" "5.59.7" dependencies: "@typescript-eslint/types" "5.59.7" "@typescript-eslint/visitor-keys" "5.59.7" "@typescript-eslint/type-utils@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz#89c97291371b59eb18a68039857c829776f1426d" - integrity sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ== + "integrity" "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz" + "version" "5.59.7" dependencies: "@typescript-eslint/typescript-estree" "5.59.7" "@typescript-eslint/utils" "5.59.7" - debug "^4.3.4" - tsutils "^3.21.0" + "debug" "^4.3.4" + "tsutils" "^3.21.0" "@typescript-eslint/types@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.7.tgz#6f4857203fceee91d0034ccc30512d2939000742" - integrity sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A== + "integrity" "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz" + "version" "5.59.7" "@typescript-eslint/typescript-estree@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz#b887acbd4b58e654829c94860dbff4ac55c5cff8" - integrity sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ== + "integrity" "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz" + "version" "5.59.7" dependencies: "@typescript-eslint/types" "5.59.7" "@typescript-eslint/visitor-keys" "5.59.7" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "semver" "^7.3.7" + "tsutils" "^3.21.0" "@typescript-eslint/utils@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.7.tgz#7adf068b136deae54abd9a66ba5a8780d2d0f898" - integrity sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ== + "integrity" "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz" + "version" "5.59.7" dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" @@ -538,244 +433,244 @@ "@typescript-eslint/scope-manager" "5.59.7" "@typescript-eslint/types" "5.59.7" "@typescript-eslint/typescript-estree" "5.59.7" - eslint-scope "^5.1.1" - semver "^7.3.7" + "eslint-scope" "^5.1.1" + "semver" "^7.3.7" "@typescript-eslint/visitor-keys@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz#09c36eaf268086b4fbb5eb9dc5199391b6485fc5" - integrity sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ== + "integrity" "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz" + "version" "5.59.7" dependencies: "@typescript-eslint/types" "5.59.7" - eslint-visitor-keys "^3.3.0" + "eslint-visitor-keys" "^3.3.0" "@vitejs/plugin-react@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz#46d1c37c507447d10467be1c111595174555ef28" - integrity sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ== + "integrity" "sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==" + "resolved" "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz" + "version" "4.0.0" dependencies: "@babel/core" "^7.21.4" "@babel/plugin-transform-react-jsx-self" "^7.21.0" "@babel/plugin-transform-react-jsx-source" "^7.19.6" - react-refresh "^0.14.0" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.21.3: - version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== - dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -caniuse-lite@^1.0.30001449: - version "1.0.30001489" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz#ca82ee2d4e4dbf2bd2589c9360d3fcc2c7ba3bd8" - integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" + "react-refresh" "^0.14.0" + +"acorn-jsx@^5.3.2": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8.8.0": + "integrity" "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" + "version" "8.8.2" + +"ajv@^6.10.0", "ajv@^6.12.4": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + 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" + +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" + +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"anymatch@~3.1.2": + "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"binary-extensions@^2.0.0": + "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + "version" "2.2.0" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"braces@^3.0.2", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"browserslist@^4.21.3", "browserslist@>= 4.21.0": + "integrity" "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz" + "version" "4.21.5" + dependencies: + "caniuse-lite" "^1.0.30001449" + "electron-to-chromium" "^1.4.284" + "node-releases" "^2.0.8" + "update-browserslist-db" "^1.0.10" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"caniuse-lite@^1.0.30001449": + "integrity" "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz" + "version" "1.0.30001489" + +"chalk@^2.0.0": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^4.0.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" "chokidar@>=3.0.0 <4.0.0": - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - 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" + "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + "version" "3.5.3" + 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" optionalDependencies: - fsevents "~2.3.2" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -csstype@^3.0.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -electron-to-chromium@^1.4.284: - version "1.4.408" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.408.tgz#73e657a24bd0b7481d68c943dded0d097b0d0a52" - integrity sha512-vjeaj0u/UYnzA/CIdGXzzcxRLCqRwREYc9YfaWInjIEr7/XPttZ6ShpyqapchEy0S2r6LpLjDBTnNj7ZxnxJKg== - -esbuild@^0.17.5: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== + "fsevents" "~2.3.2" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"convert-source-map@^1.7.0": + "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + "version" "1.9.0" + +"cross-spawn@^7.0.2": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"csstype@^3.0.2": + "integrity" "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + "version" "3.1.2" + +"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"deep-is@^0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "esutils" "^2.0.2" + +"electron-to-chromium@^1.4.284": + "integrity" "sha512-vjeaj0u/UYnzA/CIdGXzzcxRLCqRwREYc9YfaWInjIEr7/XPttZ6ShpyqapchEy0S2r6LpLjDBTnNj7ZxnxJKg==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.408.tgz" + "version" "1.4.408" + +"esbuild@^0.17.5": + "integrity" "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==" + "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz" + "version" "0.17.19" optionalDependencies: "@esbuild/android-arm" "0.17.19" "@esbuild/android-arm64" "0.17.19" @@ -800,56 +695,56 @@ esbuild@^0.17.5: "@esbuild/win32-ia32" "0.17.19" "@esbuild/win32-x64" "0.17.19" -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react-refresh@^0.3.4: - version "0.3.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz#0121e3f05f940250d3544bfaeff52e1c6adf4117" - integrity sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA== - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== - -eslint@^8.38.0: - version "8.41.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c" - integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q== +"escalade@^3.1.1": + "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + "version" "3.1.1" + +"escape-string-regexp@^1.0.5": + "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"eslint-plugin-react-hooks@^4.6.0": + "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + "version" "4.6.0" + +"eslint-plugin-react-refresh@^0.3.4": + "integrity" "sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz" + "version" "0.3.5" + +"eslint-scope@^5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-scope@^7.2.0": + "integrity" "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" + +"eslint-visitor-keys@^3.3.0", "eslint-visitor-keys@^3.4.1": + "integrity" "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz" + "version" "3.4.1" + +"eslint@*", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.38.0", "eslint@>=7": + "integrity" "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz" + "version" "8.41.0" dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" @@ -858,751 +753,758 @@ eslint@^8.38.0: "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - 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.0" - eslint-visitor-keys "^3.4.1" - espree "^9.5.2" - 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" - import-fresh "^3.0.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.1" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + "ajv" "^6.10.0" + "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.0" + "eslint-visitor-keys" "^3.4.1" + "espree" "^9.5.2" + "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" + "import-fresh" "^3.0.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.1" + "strip-ansi" "^6.0.1" + "strip-json-comments" "^3.1.0" + "text-table" "^0.2.0" + +"espree@^9.5.2": + "integrity" "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==" + "resolved" "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz" + "version" "9.5.2" + dependencies: + "acorn" "^8.8.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.4.1" + +"esquery@^1.4.2": + "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.1.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"estraverse@^5.2.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-glob@^3.2.9": + "integrity" "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + "version" "3.2.12" 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.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - 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" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - 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" - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -immutable@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" - integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -loose-envify@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-releases@^2.0.8: - version "2.0.12" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" - integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - 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.3" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -postcss@^8.4.23: - version "8.4.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" - integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-refresh@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup@^3.21.0: - version "3.23.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.23.0.tgz#b8d6146dac4bf058ee817f92820988e9b358b564" - integrity sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ== + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" + +"fast-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-levenshtein@^2.0.6": + "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" + +"fastq@^1.6.0": + "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "reusify" "^1.0.4" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"flat-cache@^3.0.4": + "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "flatted" "^3.1.0" + "rimraf" "^3.0.2" + +"flatted@^3.1.0": + "integrity" "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + "version" "3.2.7" + +"fs.realpath@^1.0.0": + "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"glob-parent@^5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.2": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob@^7.1.3": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + 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" + +"globals@^11.1.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globals@^13.19.0": + "integrity" "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz" + "version" "13.20.0" + dependencies: + "type-fest" "^0.20.2" + +"globby@^11.1.0": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + 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" + +"grapheme-splitter@^1.0.4": + "integrity" "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + "resolved" "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + "version" "1.0.4" + +"graphemer@^1.4.0": + "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + "version" "1.4.0" + +"has-flag@^3.0.0": + "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"ignore@^5.2.0": + "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + "version" "5.2.4" + +"immutable@^4.0.0": + "integrity" "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" + "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz" + "version" "4.3.0" + +"import-fresh@^3.0.0", "import-fresh@^3.2.1": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"imurmurhash@^0.1.4": + "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"inflight@^1.0.4": + "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@2": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-extglob@^2.1.1": + "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-path-inside@^3.0.3": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"json5@^2.2.2": + "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + "version" "2.2.3" + +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"loose-envify@^1.1.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lru-cache@^5.1.1": + "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "yallist" "^3.0.2" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"merge2@^1.3.0", "merge2@^1.4.1": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"micromatch@^4.0.4": + "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "braces" "^3.0.2" + "picomatch" "^2.3.1" + +"minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"nanoid@^3.3.6": + "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + "version" "3.3.6" + +"natural-compare-lite@^1.4.0": + "integrity" "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + "resolved" "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + "version" "1.4.0" + +"natural-compare@^1.4.0": + "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"node-releases@^2.0.8": + "integrity" "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz" + "version" "2.0.12" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"once@^1.3.0": + "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"optionator@^0.9.1": + "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + "version" "0.9.1" + 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.3" + +"p-limit@^3.0.2": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"picocolors@^1.0.0": + "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + "version" "1.0.0" + +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"postcss@^8.4.23": + "integrity" "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz" + "version" "8.4.23" + dependencies: + "nanoid" "^3.3.6" + "picocolors" "^1.0.0" + "source-map-js" "^1.0.2" + +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" + +"punycode@^2.1.0": + "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + "version" "2.3.0" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"react-dom@^18.2.0": + "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + "scheduler" "^0.23.0" + +"react-refresh@^0.14.0": + "integrity" "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==" + "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + "version" "0.14.0" + +"react@^18.2.0": + "integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==" + "resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"rollup@^3.21.0": + "integrity" "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==" + "resolved" "https://registry.npmjs.org/rollup/-/rollup-3.23.0.tgz" + "version" "3.23.0" optionalDependencies: - fsevents "~2.3.2" + "fsevents" "~2.3.2" -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" dependencies: - queue-microtask "^1.2.2" + "queue-microtask" "^1.2.2" -sass@^1.62.1: - version "1.62.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.62.1.tgz#caa8d6bf098935bc92fc73fa169fb3790cacd029" - integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A== +"sass@*", "sass@^1.62.1": + "integrity" "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==" + "resolved" "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz" + "version" "1.62.1" dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" + "chokidar" ">=3.0.0 <4.0.0" + "immutable" "^4.0.0" + "source-map-js" ">=0.6.2 <2.0.0" -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== +"scheduler@^0.23.0": + "integrity" "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + "version" "0.23.0" dependencies: - loose-envify "^1.1.0" + "loose-envify" "^1.1.0" -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +"semver@^6.3.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" -semver@^7.3.7: - version "7.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" - integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== +"semver@^7.3.7": + "integrity" "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz" + "version" "7.5.1" dependencies: - lru-cache "^6.0.0" + "lru-cache" "^6.0.0" -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" dependencies: - shebang-regex "^3.0.0" + "shebang-regex" "^3.0.0" -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +"source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": + "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + "version" "1.0.2" -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +"strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" dependencies: - ansi-regex "^5.0.1" + "ansi-regex" "^5.0.1" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" dependencies: - has-flag "^3.0.0" + "has-flag" "^3.0.0" -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== +"supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" dependencies: - has-flag "^4.0.0" + "has-flag" "^4.0.0" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +"text-table@^0.2.0": + "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== +"to-fast-properties@^2.0.0": + "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + "version" "2.0.0" -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" dependencies: - is-number "^7.0.0" + "is-number" "^7.0.0" -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +"tslib@^1.8.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== +"tsutils@^3.21.0": + "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + "version" "3.21.0" dependencies: - tslib "^1.8.1" + "tslib" "^1.8.1" -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" +"type-check@^0.4.0", "type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typescript@^5.0.2: - version "5.0.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" - integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== - -update-browserslist-db@^1.0.10: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + +"typescript@^5.0.2", "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": + "integrity" "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz" + "version" "5.0.4" + +"update-browserslist-db@^1.0.10": + "integrity" "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==" + "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" + "version" "1.0.11" dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + "escalade" "^3.1.1" + "picocolors" "^1.0.0" + +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" dependencies: - punycode "^2.1.0" - -vite@^4.3.2: - version "4.3.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d" - integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg== - dependencies: - esbuild "^0.17.5" - postcss "^8.4.23" - rollup "^3.21.0" + "punycode" "^2.1.0" + +"vite@^4.2.0", "vite@^4.3.2": + "integrity" "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==" + "resolved" "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz" + "version" "4.3.9" + dependencies: + "esbuild" "^0.17.5" + "postcss" "^8.4.23" + "rollup" "^3.21.0" optionalDependencies: - fsevents "~2.3.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + "fsevents" "~2.3.2" + +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"word-wrap@^1.2.3": + "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + "version" "1.2.3" + +"wrappy@1": + "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"yallist@^3.0.2": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" From beaa303b1d79b12e1c7ebc370bfdab9f45a72190 Mon Sep 17 00:00:00 2001 From: saarock Date: Tue, 23 Jul 2024 14:32:11 +0545 Subject: [PATCH 2/3] Added comeFrom and leaveFrom features to control toast appearance --- bun.lockb | Bin 0 -> 506854 bytes cypress/support/commands.d.ts | 9 + cypress/support/commands.js | 8 + cypress/support/commands.js.map | 1 + cypress/support/component.d.ts | 12 + cypress/support/component.js | 27 ++ cypress/support/component.js.map | 1 + scss/_toast.scss | 12 +- scss/animations/_bounce.scss | 191 ++++++++ scss/animations/_comeAndGoFrom.scss | 0 scss/animations/_slide.scss | 253 +++++----- .../NotificationCenter.cy.d.ts | 1 + .../NotificationCenter.cy.js | 117 +++++ .../NotificationCenter.cy.js.map | 1 + src/addons/use-notification-center/index.d.ts | 1 + src/addons/use-notification-center/index.js | 2 + .../use-notification-center/index.js.map | 1 + .../useNotificationCenter.d.ts | 159 +++++++ .../useNotificationCenter.js | 134 ++++++ .../useNotificationCenter.js.map | 1 + .../useNotificationCenter.ts | 1 + src/components/CloseButton.cy.d.ts | 1 + src/components/CloseButton.cy.js | 20 + src/components/CloseButton.cy.js.map | 1 + src/components/CloseButton.d.ts | 9 + src/components/CloseButton.js | 11 + src/components/CloseButton.js.map | 1 + src/components/Icons.cy.d.ts | 1 + src/components/Icons.cy.js | 34 ++ src/components/Icons.cy.js.map | 1 + src/components/Icons.d.ts | 26 + src/components/Icons.js | 58 +++ src/components/Icons.js.map | 1 + src/components/ProgressBar.cy.d.ts | 1 + src/components/ProgressBar.cy.js | 63 +++ src/components/ProgressBar.cy.js.map | 1 + src/components/ProgressBar.d.ts | 53 +++ src/components/ProgressBar.js | 41 ++ src/components/ProgressBar.js.map | 1 + src/components/Toast.cy.d.ts | 1 + src/components/Toast.cy.js | 219 +++++++++ src/components/Toast.cy.js.map | 1 + src/components/Toast.cy.tsx | 2 +- src/components/Toast.d.ts | 3 + src/components/Toast.js | 57 +++ src/components/Toast.js.map | 1 + src/components/Toast.tsx | 23 +- src/components/ToastContainer.d.ts | 4 + src/components/ToastContainer.js | 87 ++++ src/components/ToastContainer.js.map | 1 + src/components/ToastContainer.tsx | 5 +- src/components/Transitions.d.ts | 5 + src/components/Transitions.js | 15 + src/components/Transitions.js.map | 1 + src/components/index.d.ts | 6 + src/components/index.js | 7 + src/components/index.js.map | 1 + src/core/containerObserver.d.ts | 18 + src/core/containerObserver.js | 144 ++++++ src/core/containerObserver.js.map | 1 + src/core/containerObserver.ts | 1 - src/core/genToastId.d.ts | 1 + src/core/genToastId.js | 3 + src/core/genToastId.js.map | 1 + src/core/index.d.ts | 1 + src/core/index.js | 2 + src/core/index.js.map | 1 + src/core/store.d.ts | 31 ++ src/core/store.js | 108 +++++ src/core/store.js.map | 1 + src/core/toast.cy.d.ts | 1 + src/core/toast.cy.js | 445 ++++++++++++++++++ src/core/toast.cy.js.map | 1 + src/core/toast.d.ts | 35 ++ src/core/toast.js | 306 ++++++++++++ src/core/toast.js.map | 1 + src/hooks/index.d.ts | 2 + src/hooks/index.js | 3 + src/hooks/index.js.map | 1 + src/hooks/useIsomorphicLayoutEffect.d.ts | 2 + src/hooks/useIsomorphicLayoutEffect.js | 3 + src/hooks/useIsomorphicLayoutEffect.js.map | 1 + src/hooks/useToast.d.ts | 10 + src/hooks/useToast.js | 155 ++++++ src/hooks/useToast.js.map | 1 + src/hooks/useToastContainer.d.ts | 7 + src/hooks/useToastContainer.js | 24 + src/hooks/useToastContainer.js.map | 1 + src/index.d.ts | 7 + src/index.js | 5 + src/index.js.map | 1 + src/types.d.ts | 284 +++++++++++ src/types.js | 2 + src/types.js.map | 1 + src/types.ts | 15 + src/utils/collapseToast.d.ts | 5 + src/utils/collapseToast.js | 19 + src/utils/collapseToast.js.map | 1 + src/utils/collapseToast.ts | 11 +- src/utils/constant.d.ts | 18 + src/utils/constant.js | 2 + src/utils/constant.js.map | 1 + src/utils/cssTransition.d.ts | 43 ++ src/utils/cssTransition.js | 63 +++ src/utils/cssTransition.js.map | 1 + src/utils/cssTransition.tsx | 12 +- src/utils/index.d.ts | 5 + src/utils/index.js | 6 + src/utils/index.js.map | 1 + src/utils/mapper.d.ts | 2 + src/utils/mapper.js | 17 + src/utils/mapper.js.map | 1 + src/utils/propValidator.d.ts | 8 + src/utils/propValidator.js | 17 + src/utils/propValidator.js.map | 1 + 115 files changed, 3415 insertions(+), 141 deletions(-) create mode 100755 bun.lockb create mode 100644 cypress/support/commands.d.ts create mode 100644 cypress/support/commands.js create mode 100644 cypress/support/commands.js.map create mode 100644 cypress/support/component.d.ts create mode 100644 cypress/support/component.js create mode 100644 cypress/support/component.js.map create mode 100644 scss/animations/_comeAndGoFrom.scss create mode 100644 src/addons/use-notification-center/NotificationCenter.cy.d.ts create mode 100644 src/addons/use-notification-center/NotificationCenter.cy.js create mode 100644 src/addons/use-notification-center/NotificationCenter.cy.js.map create mode 100644 src/addons/use-notification-center/index.d.ts create mode 100644 src/addons/use-notification-center/index.js create mode 100644 src/addons/use-notification-center/index.js.map create mode 100644 src/addons/use-notification-center/useNotificationCenter.d.ts create mode 100644 src/addons/use-notification-center/useNotificationCenter.js create mode 100644 src/addons/use-notification-center/useNotificationCenter.js.map create mode 100644 src/components/CloseButton.cy.d.ts create mode 100644 src/components/CloseButton.cy.js create mode 100644 src/components/CloseButton.cy.js.map create mode 100644 src/components/CloseButton.d.ts create mode 100644 src/components/CloseButton.js create mode 100644 src/components/CloseButton.js.map create mode 100644 src/components/Icons.cy.d.ts create mode 100644 src/components/Icons.cy.js create mode 100644 src/components/Icons.cy.js.map create mode 100644 src/components/Icons.d.ts create mode 100644 src/components/Icons.js create mode 100644 src/components/Icons.js.map create mode 100644 src/components/ProgressBar.cy.d.ts create mode 100644 src/components/ProgressBar.cy.js create mode 100644 src/components/ProgressBar.cy.js.map create mode 100644 src/components/ProgressBar.d.ts create mode 100644 src/components/ProgressBar.js create mode 100644 src/components/ProgressBar.js.map create mode 100644 src/components/Toast.cy.d.ts create mode 100644 src/components/Toast.cy.js create mode 100644 src/components/Toast.cy.js.map create mode 100644 src/components/Toast.d.ts create mode 100644 src/components/Toast.js create mode 100644 src/components/Toast.js.map create mode 100644 src/components/ToastContainer.d.ts create mode 100644 src/components/ToastContainer.js create mode 100644 src/components/ToastContainer.js.map create mode 100644 src/components/Transitions.d.ts create mode 100644 src/components/Transitions.js create mode 100644 src/components/Transitions.js.map create mode 100644 src/components/index.d.ts create mode 100644 src/components/index.js create mode 100644 src/components/index.js.map create mode 100644 src/core/containerObserver.d.ts create mode 100644 src/core/containerObserver.js create mode 100644 src/core/containerObserver.js.map create mode 100644 src/core/genToastId.d.ts create mode 100644 src/core/genToastId.js create mode 100644 src/core/genToastId.js.map create mode 100644 src/core/index.d.ts create mode 100644 src/core/index.js create mode 100644 src/core/index.js.map create mode 100644 src/core/store.d.ts create mode 100644 src/core/store.js create mode 100644 src/core/store.js.map create mode 100644 src/core/toast.cy.d.ts create mode 100644 src/core/toast.cy.js create mode 100644 src/core/toast.cy.js.map create mode 100644 src/core/toast.d.ts create mode 100644 src/core/toast.js create mode 100644 src/core/toast.js.map create mode 100644 src/hooks/index.d.ts create mode 100644 src/hooks/index.js create mode 100644 src/hooks/index.js.map create mode 100644 src/hooks/useIsomorphicLayoutEffect.d.ts create mode 100644 src/hooks/useIsomorphicLayoutEffect.js create mode 100644 src/hooks/useIsomorphicLayoutEffect.js.map create mode 100644 src/hooks/useToast.d.ts create mode 100644 src/hooks/useToast.js create mode 100644 src/hooks/useToast.js.map create mode 100644 src/hooks/useToastContainer.d.ts create mode 100644 src/hooks/useToastContainer.js create mode 100644 src/hooks/useToastContainer.js.map create mode 100644 src/index.d.ts create mode 100644 src/index.js create mode 100644 src/index.js.map create mode 100644 src/types.d.ts create mode 100644 src/types.js create mode 100644 src/types.js.map create mode 100644 src/utils/collapseToast.d.ts create mode 100644 src/utils/collapseToast.js create mode 100644 src/utils/collapseToast.js.map create mode 100644 src/utils/constant.d.ts create mode 100644 src/utils/constant.js create mode 100644 src/utils/constant.js.map create mode 100644 src/utils/cssTransition.d.ts create mode 100644 src/utils/cssTransition.js create mode 100644 src/utils/cssTransition.js.map create mode 100644 src/utils/index.d.ts create mode 100644 src/utils/index.js create mode 100644 src/utils/index.js.map create mode 100644 src/utils/mapper.d.ts create mode 100644 src/utils/mapper.js create mode 100644 src/utils/mapper.js.map create mode 100644 src/utils/propValidator.d.ts create mode 100644 src/utils/propValidator.js create mode 100644 src/utils/propValidator.js.map diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..8e43e5d131cbd97ebb1504a82c7990757a3991d0 GIT binary patch literal 506854 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 hW&i{A(*AvKx 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∨;Qeb7iH8vR0bDmN(50b5hI6BG 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 +/// +import '@4tw/cypress-drag-drop'; +import '@testing-library/cypress/add-commands'; +Cypress.Commands.add('resolveEntranceAnimation', function () { + cy.wait(800); +}); +//# sourceMappingURL=commands.js.map \ No newline at end of file diff --git a/cypress/support/commands.js.map b/cypress/support/commands.js.map new file mode 100644 index 00000000..a2876611 --- /dev/null +++ b/cypress/support/commands.js.map @@ -0,0 +1 @@ +{"version":3,"file":"commands.js","sourceRoot":"","sources":["commands.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,kDAAkD;AAmClD,OAAO,wBAAwB,CAAC;AAChC,OAAO,uCAAuC,CAAC;AAE/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,0BAA0B,EAAE;IAC/C,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/cypress/support/component.d.ts b/cypress/support/component.d.ts new file mode 100644 index 00000000..4a1cc907 --- /dev/null +++ b/cypress/support/component.d.ts @@ -0,0 +1,12 @@ +import '@cypress/code-coverage/support'; +import './commands'; +import '../../scss/main.scss'; +import './style.css'; +import { mount } from 'cypress/react18'; +declare global { + namespace Cypress { + interface Chainable { + mount: typeof mount; + } + } +} diff --git a/cypress/support/component.js b/cypress/support/component.js new file mode 100644 index 00000000..86d81381 --- /dev/null +++ b/cypress/support/component.js @@ -0,0 +1,27 @@ +// *********************************************************** +// This example support/component.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** +// Import commands.js using ES2015 syntax: +// cypress/support/e2e.js +import '@cypress/code-coverage/support'; +import './commands'; +import '../../scss/main.scss'; +import './style.css'; +// Alternatively you can use CommonJS syntax: +// require('./commands') +import { mount } from 'cypress/react18'; +Cypress.Commands.add('mount', mount); +// Example use: +// cy.mount() +//# sourceMappingURL=component.js.map \ No newline at end of file diff --git a/cypress/support/component.js.map b/cypress/support/component.js.map new file mode 100644 index 00000000..bf88078d --- /dev/null +++ b/cypress/support/component.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component.js","sourceRoot":"","sources":["component.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,qDAAqD;AACrD,+CAA+C;AAC/C,EAAE;AACF,wDAAwD;AACxD,kCAAkC;AAClC,EAAE;AACF,uDAAuD;AACvD,+CAA+C;AAC/C,sCAAsC;AACtC,EAAE;AACF,0BAA0B;AAC1B,sCAAsC;AACtC,8DAA8D;AAE9D,0CAA0C;AAC1C,yBAAyB;AACzB,OAAO,gCAAgC,CAAC;AACxC,OAAO,YAAY,CAAC;AACpB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,aAAa,CAAC;AAErB,6CAA6C;AAC7C,wBAAwB;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAcxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAErC,eAAe;AACf,4BAA4B"} \ No newline at end of file diff --git a/scss/_toast.scss b/scss/_toast.scss index 378e55c2..b4f4401b 100644 --- a/scss/_toast.scss +++ b/scss/_toast.scss @@ -1,3 +1,7 @@ + +@import './animations/comeAndGoFrom'; + + .#{$rt-namespace}__toast { --y: 0; position: relative; @@ -17,7 +21,12 @@ /* webkit only issue #791 */ z-index: 0; overflow: hidden; - + + + + + + &--stacked { position: absolute; width: 100%; @@ -114,3 +123,4 @@ border-radius: 0; } } + diff --git a/scss/animations/_bounce.scss b/scss/animations/_bounce.scss index 653ec077..218b8f94 100644 --- a/scss/animations/_bounce.scss +++ b/scss/animations/_bounce.scss @@ -1,7 +1,13 @@ + + @mixin timing-function { animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + + + + @keyframes #{$rt-namespace}__bounceInRight { from, 60%, @@ -195,3 +201,188 @@ animation-name: #{$rt-namespace}__bounceOutDown; } } + + +/** + Toast comefrom css start + */ +.#{$rt-namespace}__bounce-enterleft { + &--top-left, + &--bottom-left { + animation-name: #{$rt-namespace}__bounceInLeft; + } + &--top-right, + &--bottom-right { + animation-name: #{$rt-namespace}__bounceInLeft; + } + &--top-center { + animation-name: #{$rt-namespace}__bounceInLeft; + } + &--bottom-center { + animation-name: #{$rt-namespace}__bounceInLeft; + } +} + + +.#{$rt-namespace}__bounce-enterright { + &--top-left, + &--bottom-left { + animation-name: #{$rt-namespace}__bounceInRight; + } + &--top-right, + &--bottom-right { + animation-name: #{$rt-namespace}__bounceInRight; + } + &--top-center { + animation-name: #{$rt-namespace}__bounceInRight; + } + &--bottom-center { + animation-name: #{$rt-namespace}__bounceInRight; + } +} + +.#{$rt-namespace}__bounce-enterbottom { + &--top-left, + &--bottom-left { + animation-name: #{$rt-namespace}__bounceInUp; + } + &--top-right, + &--bottom-right { + animation-name: #{$rt-namespace}__bounceInUp; + } + &--top-center { + animation-name: #{$rt-namespace}__bounceInUp; + } + &--bottom-center { + animation-name: #{$rt-namespace}__bounceInUp; + } +} + +.#{$rt-namespace}__bounce-entertop { + &--top-left, + &--bottom-left { + animation-name: #{$rt-namespace}__bounceInDown; + } + &--top-right, + &--bottom-right { + animation-name: #{$rt-namespace}__bounceInDown; + } + &--top-center { + animation-name: #{$rt-namespace}__bounceInDown; + } + &--bottom-center { + animation-name: #{$rt-namespace}__bounceInDown; + } +} + +/** +Css come from css end + */ + + + + + + + + + + + +/** +Css leaveFrom css start + */ + + +.#{$rt-namespace}__bounce-exitleft { + &--top-left, + &--bottom-left { + animation-name: #{$rt-namespace}__bounceOutLeft; + } + &--top-right, + &--bottom-right { + animation-name: #{$rt-namespace}__bounceOutLeft; + } + &--top-center { + animation-name: #{$rt-namespace}__bounceOutLeft; + } + &--bottom-center { + animation-name: #{$rt-namespace}__bounceOutLeft; + } +} + + + +.#{$rt-namespace}__bounce-exitright { + &--top-left, + &--bottom-left { + animation-name: #{$rt-namespace}__bounceOutRight; + } + &--top-right, + &--bottom-right { + animation-name: #{$rt-namespace}__bounceOutRight; + } + &--top-center { + animation-name: #{$rt-namespace}__bounceOutRight; + } + &--bottom-center { + animation-name: #{$rt-namespace}__bounceOutRight; + } +} + + +.#{$rt-namespace}__bounce-exittop { + &--top-left, + &--bottom-left { + animation-name: #{$rt-namespace}__bounceOutUp; + } + &--top-right, + &--bottom-right { + animation-name: #{$rt-namespace}__bounceOutUp; + + + } + &--top-center { + animation-name: #{$rt-namespace}__bounceOutUp; + + + } + &--bottom-center { + animation-name: #{$rt-namespace}__bounceOutUp; + + + } +} + + +.#{$rt-namespace}__bounce-exitbottom { + &--top-left, + &--bottom-left { + animation-name: #{$rt-namespace}__bounceOutDown; + } + &--top-right, + &--bottom-right { + animation-name: #{$rt-namespace}__bounceOutDown; + + + + } + &--top-center { + animation-name: #{$rt-namespace}__bounceOutDown; + + + + } + &--bottom-center { + animation-name: #{$rt-namespace}__bounceOutDown; + + + + } +} + + + +/** +Css LeavedFrom css end + */ \ No newline at end of file diff --git a/scss/animations/_comeAndGoFrom.scss b/scss/animations/_comeAndGoFrom.scss new file mode 100644 index 00000000..e69de29b diff --git a/scss/animations/_slide.scss b/scss/animations/_slide.scss index 656708b2..5444d464 100644 --- a/scss/animations/_slide.scss +++ b/scss/animations/_slide.scss @@ -1,126 +1,127 @@ -@mixin transform { - transform: translate3d(0, var(--y), 0); -} - -@keyframes #{$rt-namespace}__slideInRight { - from { - transform: translate3d(110%, 0, 0); - visibility: visible; - } - to { - @include transform; - } -} - -@keyframes #{$rt-namespace}__slideInLeft { - from { - transform: translate3d(-110%, 0, 0); - visibility: visible; - } - to { - @include transform; - } -} - -@keyframes #{$rt-namespace}__slideInUp { - from { - transform: translate3d(0, 110%, 0); - visibility: visible; - } - to { - @include transform; - } -} - -@keyframes #{$rt-namespace}__slideInDown { - from { - transform: translate3d(0, -110%, 0); - visibility: visible; - } - to { - @include transform; - } -} - -@keyframes #{$rt-namespace}__slideOutRight { - from { - @include transform; - } - to { - visibility: hidden; - transform: translate3d(110%, var(--y), 0); - } -} - -@keyframes #{$rt-namespace}__slideOutLeft { - from { - @include transform; - } - to { - visibility: hidden; - transform: translate3d(-110%, var(--y), 0); - } -} - -@keyframes #{$rt-namespace}__slideOutDown { - from { - @include transform; - } - to { - visibility: hidden; - transform: translate3d(0, 500px, 0); - } -} - -@keyframes #{$rt-namespace}__slideOutUp { - from { - @include transform; - } - to { - visibility: hidden; - transform: translate3d(0, -500px, 0); - } -} - -@mixin timing { - animation-timing-function: ease-in; - animation-duration: 0.3s; -} - -.#{$rt-namespace}__slide-enter { - &--top-left, - &--bottom-left { - animation-name: #{$rt-namespace}__slideInLeft; - } - &--top-right, - &--bottom-right { - animation-name: #{$rt-namespace}__slideInRight; - } - &--top-center { - animation-name: #{$rt-namespace}__slideInDown; - } - &--bottom-center { - animation-name: #{$rt-namespace}__slideInUp; - } -} - -.#{$rt-namespace}__slide-exit { - &--top-left, - &--bottom-left { - animation-name: #{$rt-namespace}__slideOutLeft; - @include timing; - } - &--top-right, - &--bottom-right { - animation-name: #{$rt-namespace}__slideOutRight; - @include timing; - } - &--top-center { - animation-name: #{$rt-namespace}__slideOutUp; - @include timing; - } - &--bottom-center { - animation-name: #{$rt-namespace}__slideOutDown; - @include timing; - } -} +//@mixin transform { +// transform: translate3d(0, var(--y), 0); +//} +// +//@keyframes #{$rt-namespace}__slideInRight { +// from { +// transform: translate3d(110%, 0, 0); +// visibility: visible; +// } +// to { +// @include transform; +// } +//} +// +//@keyframes #{$rt-namespace}__slideInLeft { +// from { +// transform: translate3d(-110%, 0, 0); +// visibility: visible; +// } +// to { +// @include transform; +// } +//} +// +//@keyframes #{$rt-namespace}__slideInUp { +// from { +// transform: translate3d(0, 110%, 0); +// visibility: visible; +// } +// to { +// @include transform; +// } +//} +// +//@keyframes #{$rt-namespace}__slideInDown { +// from { +// transform: translate3d(0, -110%, 0); +// visibility: visible; +// } +// to { +// @include transform; +// } +//} +// +//@keyframes #{$rt-namespace}__slideOutRight { +// from { +// @include transform; +// } +// to { +// visibility: hidden; +// transform: translate3d(110%, var(--y), 0); +// } +//} +// +//@keyframes #{$rt-namespace}__slideOutLeft { +// from { +// @include transform; +// } +// to { +// visibility: hidden; +// transform: translate3d(-110%, var(--y), 0); +// } +//} +// +//@keyframes #{$rt-namespace}__slideOutDown { +// from { +// @include transform; +// } +// to { +// visibility: hidden; +// transform: translate3d(0, 500px, 0); +// } +//} +// +//@keyframes #{$rt-namespace}__slideOutUp { +// from { +// @include transform; +// } +// to { +// visibility: hidden; +// transform: translate3d(0, -500px, 0); +// } +//} +// +//@mixin timing { +// animation-timing-function: ease-in; +// animation-duration: 0.3s; +//} +// +//.#{$rt-namespace}__slide-enter { +// &--top-left, +// &--bottom-left { +// animation-name: #{$rt-namespace}__slideInLeft; +// background-color: red; +// } +// &--top-right, +// &--bottom-right { +// animation-name: #{$rt-namespace}__slideInRight; +// } +// &--top-center { +// animation-name: #{$rt-namespace}__slideInDown; +// } +// &--bottom-center { +// animation-name: #{$rt-namespace}__slideInUp; +// } +//} +// +//.#{$rt-namespace}__slide-exit { +// &--top-left, +// &--bottom-left { +// animation-name: #{$rt-namespace}__slideOutLeft; +// @include timing; +// } +// &--top-right, +// &--bottom-right { +// animation-name: #{$rt-namespace}__slideOutRight; +// @include timing; +// } +// &--top-center { +// animation-name: #{$rt-namespace}__slideOutUp; +// @include timing; +// } +// &--bottom-center { +// animation-name: #{$rt-namespace}__slideOutDown; +// @include timing; +// } +//} diff --git a/src/addons/use-notification-center/NotificationCenter.cy.d.ts b/src/addons/use-notification-center/NotificationCenter.cy.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/src/addons/use-notification-center/NotificationCenter.cy.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/src/addons/use-notification-center/NotificationCenter.cy.js b/src/addons/use-notification-center/NotificationCenter.cy.js new file mode 100644 index 00000000..ae66b758 --- /dev/null +++ b/src/addons/use-notification-center/NotificationCenter.cy.js @@ -0,0 +1,117 @@ +import React from 'react'; +import { ToastContainer, toast } from 'react-toastify'; +import { useNotificationCenter } from './useNotificationCenter'; +function TestComponent(props) { + var _a = React.useState(''), content = _a[0], setContent = _a[1]; + var _b = React.useState(''), updateId = _b[0], setUpdateId = _b[1]; + var _c = useNotificationCenter(props || {}), unreadCount = _c.unreadCount, markAllAsRead = _c.markAllAsRead, markAsRead = _c.markAsRead, notifications = _c.notifications, remove = _c.remove, add = _c.add, clear = _c.clear, update = _c.update; + var flex = { + display: 'flex', + gap: '1rem', + alignItems: 'center' + }; + return (React.createElement("div", null, + React.createElement("div", { style: flex }, + React.createElement("button", { onClick: markAllAsRead }, "markAllAsRead"), + React.createElement("button", { onClick: clear }, "clear"), + React.createElement("button", { onClick: function () { return add({ content: content }); } }, "addNotification"), + React.createElement("button", { onClick: function () { return update(updateId, { content: content }); } }, "updateNotification")), + React.createElement("ul", null, + React.createElement("li", null, + React.createElement("span", null, "count"), + React.createElement("span", { "data-testid": "count" }, notifications.length)), + React.createElement("li", null, + React.createElement("span", null, "unread count"), + React.createElement("span", { "data-testid": "unreadCount" }, unreadCount))), + React.createElement("input", { "data-testid": "content", type: "text", onChange: function (e) { return setContent(e.target.value); }, value: content }), + React.createElement("input", { "data-testid": "updateId", type: "text", onChange: function (e) { return setUpdateId(e.target.value); }, value: updateId }), + React.createElement("ul", { "data-testid": "notifications" }, notifications.map(function (el) { return (React.createElement("li", { key: el.id, style: flex }, + React.createElement("span", { "data-testid": "content-".concat(el.id) }, el.content), + React.createElement("span", { "data-testid": "read-".concat(el.id) }, el.read.toString()), + React.createElement("button", { "data-testid": "markAsRead-".concat(el.id), onClick: function () { return markAsRead(el.id); } }, "markAsRead"), + React.createElement("button", { "data-testid": "remove-".concat(el.id), onClick: function () { return remove(el.id); } }, "remove"))); })), + React.createElement(ToastContainer, null))); +} +describe('NotificationCenter', function () { + beforeEach(function () { + cy.mount(React.createElement(TestComponent, null)); + }); + it('listen for new notifications', function () { + cy.findByTestId('count').should('contain.text', 0); + cy.findByTestId('unreadCount').should('contain.text', 0); + // hacky asf??? + cy.wait(1000).then(function () { + toast('msg'); + cy.findByTestId('count').should('contain.text', 1, { timeout: 10000 }); + cy.findByTestId('unreadCount').should('contain.text', 1); + }); + }); + it('add notification', function () { + cy.findByTestId('count').should('contain.text', 0); + cy.findByTestId('unreadCount').should('contain.text', 0); + cy.findByTestId('content').type('something'); + cy.findByText('addNotification').click(); + cy.findByText('something').should('exist'); + cy.findByTestId('count').should('contain.text', 1); + cy.findByTestId('unreadCount').should('contain.text', 1); + }); + it('update', function () { + var id = toast('msg'); + cy.resolveEntranceAnimation(); + toast.update(id, { + render: 'msg updated' + }); + cy.findAllByText('msg updated').should('exist'); + }); + it('mark as read a single notification', function () { + cy.findByTestId('unreadCount').should('contain.text', 0); + cy.findByTestId('count').should('contain.text', 0); + var id = toast('msg'); + cy.resolveEntranceAnimation(); + cy.findByTestId('count').should('contain.text', 1); + cy.findByTestId('unreadCount').should('contain.text', 1); + cy.findByTestId("read-".concat(id)).should('contain.text', false); + cy.findByTestId("markAsRead-".concat(id)).click(); + cy.findByTestId('unreadCount').should('contain.text', 0); + cy.findByTestId("read-".concat(id)).should('contain.text', true); + }); + describe('with initial state', function () { + var initialState = [ + { + id: 1, + createdAt: Date.now(), + read: false, + content: 'noti1' + }, + { + id: 2, + createdAt: Date.now(), + read: true, + content: 'noti2' + } + ]; + beforeEach(function () { + cy.mount(React.createElement(TestComponent, { data: initialState })); + }); + it('handle initial state', function () { + cy.findByTestId('count').should('contain.text', initialState.length); + cy.findByTestId('unreadCount').should('contain.text', 1); + initialState.forEach(function (v) { + cy.findByText(v.content).should('exist'); + }); + }); + it('clear all', function () { + cy.findByTestId('count').should('contain.text', initialState.length); + cy.findByTestId('unreadCount').should('contain.text', 1); + cy.findByText('clear').click(); + cy.findByTestId('count').should('contain.text', 0); + cy.findByTestId('unreadCount').should('contain.text', 0); + }); + it('mark all as read', function () { + cy.findByTestId('unreadCount').should('contain.text', 1); + cy.findByText('markAllAsRead').click(); + cy.findByTestId('unreadCount').should('contain.text', 0); + }); + }); +}); +//# sourceMappingURL=NotificationCenter.cy.js.map \ No newline at end of file diff --git a/src/addons/use-notification-center/NotificationCenter.cy.js.map b/src/addons/use-notification-center/NotificationCenter.cy.js.map new file mode 100644 index 00000000..1a60f026 --- /dev/null +++ b/src/addons/use-notification-center/NotificationCenter.cy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NotificationCenter.cy.js","sourceRoot":"","sources":["NotificationCenter.cy.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/addons/use-notification-center/index.d.ts b/src/addons/use-notification-center/index.d.ts new file mode 100644 index 00000000..b5b0a94a --- /dev/null +++ b/src/addons/use-notification-center/index.d.ts @@ -0,0 +1 @@ +export * from './useNotificationCenter'; diff --git a/src/addons/use-notification-center/index.js b/src/addons/use-notification-center/index.js new file mode 100644 index 00000000..af7a018a --- /dev/null +++ b/src/addons/use-notification-center/index.js @@ -0,0 +1,2 @@ +export * from './useNotificationCenter'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/addons/use-notification-center/index.js.map b/src/addons/use-notification-center/index.js.map new file mode 100644 index 00000000..49269460 --- /dev/null +++ b/src/addons/use-notification-center/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"} \ No newline at end of file diff --git a/src/addons/use-notification-center/useNotificationCenter.d.ts b/src/addons/use-notification-center/useNotificationCenter.d.ts new file mode 100644 index 00000000..35d3ff38 --- /dev/null +++ b/src/addons/use-notification-center/useNotificationCenter.d.ts @@ -0,0 +1,159 @@ +import { ToastItem, Id } from 'react-toastify'; +type Optional = Pick, K> & Omit; +export interface NotificationCenterItem extends Optional, 'content' | 'data' | 'status'> { + read: boolean; + createdAt: number; +} +export type SortFn = (l: NotificationCenterItem, r: NotificationCenterItem) => number; +export type FilterFn = (item: NotificationCenterItem) => boolean; +export interface UseNotificationCenterParams { + /** + * initial data to rehydrate the notification center + */ + data?: NotificationCenterItem[]; + /** + * By default, the notifications are sorted from the newest to the oldest using + * the `createdAt` field. Use this to provide your own sort function + * + * Usage: + * ``` + * // old notifications first + * useNotificationCenter({ + * sort: ((l, r) => l.createdAt - r.createdAt) + * }) + * ``` + */ + sort?: SortFn; + /** + * Keep the toast that meets the condition specified in the callback function. + * + * Usage: + * ``` + * // keep only the toasts when hidden is set to false + * useNotificationCenter({ + * filter: item => item.data.hidden === false + * }) + * ``` + */ + filter?: FilterFn; +} +export interface UseNotificationCenter { + /** + * Contains all the notifications + */ + notifications: NotificationCenterItem[]; + /** + * Clear all notifications + */ + clear(): void; + /** + * Mark all notification as read + */ + markAllAsRead(): void; + /** + * Mark all notification as read or not. + * + * Usage: + * ``` + * markAllAsRead(false) // mark all notification as not read + * + * markAllAsRead(true) // same as calling markAllAsRead() + * ``` + */ + markAllAsRead(read?: boolean): void; + /** + * Mark one or more notifications as read. + * + * Usage: + * ``` + * markAsRead("anId") + * markAsRead(["a","list", "of", "id"]) + * ``` + */ + markAsRead(id: Id | Id[]): void; + /** + * Mark one or more notifications as read.The second parameter let you mark the notification as read or not. + * + * Usage: + * ``` + * markAsRead("anId", false) + * markAsRead(["a","list", "of", "id"], false) + * + * markAsRead("anId", true) // same as markAsRead("anId") + * ``` + */ + markAsRead(id: Id | Id[], read?: boolean): void; + /** + * Remove one or more notifications + * + * Usage: + * ``` + * remove("anId") + * remove(["a","list", "of", "id"]) + * ``` + */ + remove(id: Id | Id[]): void; + /** + * Push a notification to the notification center. + * Returns null when an item with the given id already exists + * + * Usage: + * ``` + * const id = add({id: "id", content: "test", data: { foo: "hello" } }) + * + * // Return the id of the notification, generate one if none provided + * const id = add({ data: {title: "a title", text: "some text"} }) + * ``` + */ + add(item: Partial>): Id | null; + /** + * Update the notification that match the id + * Returns null when no matching notification found + * + * Usage: + * ``` + * const id = update("anId", {content: "test", data: { foo: "hello" } }) + * + * // It's also possible to update the id + * const id = update("anId"m { id:"anotherOne", data: {title: "a title", text: "some text"} }) + * ``` + */ + update(id: Id, item: Partial>): Id | null; + /** + * Retrieve one or more notifications + * + * Usage: + * ``` + * find("anId") + * find(["a","list", "of", "id"]) + * ``` + */ + find(id: Id): NotificationCenterItem | undefined; + /** + * Retrieve one or more notifications + * + * Usage: + * ``` + * find("anId") + * find(["a","list", "of", "id"]) + * ``` + */ + find(id: Id[]): NotificationCenterItem[] | undefined; + /** + * Retrieve the count for unread notifications + */ + unreadCount: number; + /** + * Sort notifications using the newly provided function + * + * Usage: + * ``` + * // old notifications first + * sort((l, r) => l.createdAt - r.createdAt) + * ``` + */ + sort(sort: SortFn): void; +} +export declare function useNotificationCenter(params?: UseNotificationCenterParams): UseNotificationCenter; +export declare function decorate(item: NotificationCenterItem | Partial>): NotificationCenterItem; +export {}; diff --git a/src/addons/use-notification-center/useNotificationCenter.js b/src/addons/use-notification-center/useNotificationCenter.js new file mode 100644 index 00000000..d93f6f7b --- /dev/null +++ b/src/addons/use-notification-center/useNotificationCenter.js @@ -0,0 +1,134 @@ +import { __spreadArray } from "tslib"; +import { useState, useEffect, useRef } from 'react'; +import { toast } from 'react-toastify'; +export function useNotificationCenter(params) { + if (params === void 0) { params = {}; } + var sortFn = useRef(params.sort || defaultSort); + var filterFn = useRef(params.filter || null); + var _a = useState(function () { + if (params.data) { + return filterFn.current + ? params.data.filter(filterFn.current).sort(sortFn.current) + : __spreadArray([], params.data, true).sort(sortFn.current); + } + return []; + }), notifications = _a[0], setNotifications = _a[1]; + useEffect(function () { + return toast.onChange(function (item) { + if (item.status === 'added' || item.status === 'updated') { + var newItem_1 = decorate(item); + if (filterFn.current && !filterFn.current(newItem_1)) + return; + setNotifications(function (prev) { + var nextState = []; + var updateIdx = prev.findIndex(function (v) { return v.id === newItem_1.id; }); + if (updateIdx !== -1) { + nextState = prev.slice(); + Object.assign(nextState[updateIdx], newItem_1, { + createdAt: Date.now() + }); + } + else if (prev.length === 0) { + nextState = [newItem_1]; + } + else { + nextState = __spreadArray([newItem_1], prev, true); + } + return nextState.sort(sortFn.current); + }); + } + }); + }, []); + var remove = function (id) { + setNotifications(function (prev) { + return prev.filter(Array.isArray(id) ? function (v) { return !id.includes(v.id); } : function (v) { return v.id !== id; }); + }); + }; + var clear = function () { + setNotifications([]); + }; + var markAllAsRead = function (read) { + if (read === void 0) { read = true; } + setNotifications(function (prev) { + return prev.map(function (v) { + v.read = read; + return v; + }); + }); + }; + var markAsRead = function (id, read) { + if (read === void 0) { read = true; } + var map = function (v) { + if (v.id === id) + v.read = read; + return v; + }; + if (Array.isArray(id)) { + map = function (v) { + if (id.includes(v.id)) + v.read = read; + return v; + }; + } + setNotifications(function (prev) { return prev.map(map); }); + }; + var find = function (id) { + return Array.isArray(id) + ? notifications.filter(function (v) { return id.includes(v.id); }) + : notifications.find(function (v) { return v.id === id; }); + }; + var add = function (item) { + if (notifications.find(function (v) { return v.id === item.id; })) + return null; + var newItem = decorate(item); + setNotifications(function (prev) { return __spreadArray(__spreadArray([], prev, true), [newItem], false).sort(sortFn.current); }); + return newItem.id; + }; + var update = function (id, item) { + var index = notifications.findIndex(function (v) { return v.id === id; }); + if (index !== -1) { + setNotifications(function (prev) { + var nextState = __spreadArray([], prev, true); + Object.assign(nextState[index], item, { + createdAt: item.createdAt || Date.now() + }); + return nextState.sort(sortFn.current); + }); + return item.id; + } + return null; + }; + var sort = function (compareFn) { + sortFn.current = compareFn; + setNotifications(function (prev) { return prev.slice().sort(compareFn); }); + }; + return { + notifications: notifications, + clear: clear, + markAllAsRead: markAllAsRead, + markAsRead: markAsRead, + add: add, + update: update, + remove: remove, + // @ts-ignore fixme: overloading issue + find: find, + sort: sort, + get unreadCount() { + return notifications.reduce(function (prev, cur) { return (!cur.read ? prev + 1 : prev); }, 0); + } + }; +} +export function decorate(item) { + if (item.id == null) + item.id = Date.now().toString(36).substring(2, 9); + if (!item.createdAt) + item.createdAt = Date.now(); + if (item.read == null) + item.read = false; + return item; +} +// newest to oldest +function defaultSort(l, r) { + return r.createdAt - l.createdAt; +} +//# sourceMappingURL=useNotificationCenter.js.map \ No newline at end of file diff --git a/src/addons/use-notification-center/useNotificationCenter.js.map b/src/addons/use-notification-center/useNotificationCenter.js.map new file mode 100644 index 00000000..f287cab5 --- /dev/null +++ b/src/addons/use-notification-center/useNotificationCenter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"useNotificationCenter.js","sourceRoot":"","sources":["useNotificationCenter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/addons/use-notification-center/useNotificationCenter.ts b/src/addons/use-notification-center/useNotificationCenter.ts index b537fbd2..59ca1be2 100644 --- a/src/addons/use-notification-center/useNotificationCenter.ts +++ b/src/addons/use-notification-center/useNotificationCenter.ts @@ -11,6 +11,7 @@ export interface NotificationCenterItem export type SortFn = ( l: NotificationCenterItem, + r: NotificationCenterItem ) => number; diff --git a/src/components/CloseButton.cy.d.ts b/src/components/CloseButton.cy.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/src/components/CloseButton.cy.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/src/components/CloseButton.cy.js b/src/components/CloseButton.cy.js new file mode 100644 index 00000000..d3dc2ef1 --- /dev/null +++ b/src/components/CloseButton.cy.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { CloseButton } from './CloseButton'; +describe('CloseButton', function () { + it('call close toast when clicking', function () { + var closeToast = cy.stub().as('closeToast'); + cy.mount(React.createElement(CloseButton, { closeToast: closeToast, type: "default", theme: "light" })); + cy.get('@closeToast').should('not.have.been.called'); + cy.findByRole('button').click(); + cy.get('@closeToast').should('have.been.called'); + }); + it('have a default aria-label', function () { + cy.mount(React.createElement(CloseButton, { closeToast: cy.stub, type: "default", theme: "light" })); + cy.findByLabelText('close').should('exist'); + }); + it('set aria-label', function () { + cy.mount(React.createElement(CloseButton, { closeToast: cy.stub, type: "default", theme: "light", ariaLabel: "foobar" })); + cy.findByLabelText('foobar').should('exist'); + }); +}); +//# sourceMappingURL=CloseButton.cy.js.map \ No newline at end of file diff --git a/src/components/CloseButton.cy.js.map b/src/components/CloseButton.cy.js.map new file mode 100644 index 00000000..f5fdac5a --- /dev/null +++ b/src/components/CloseButton.cy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CloseButton.cy.js","sourceRoot":"","sources":["CloseButton.cy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,gCAAgC,EAAE;QACnC,IAAM,UAAU,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAC9C,EAAE,CAAC,KAAK,CACN,oBAAC,WAAW,IAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,GAAG,CACrE,CAAC;QAEF,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACrD,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QAChC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE;QAC9B,EAAE,CAAC,KAAK,CAAC,oBAAC,WAAW,IAAC,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,GAAG,CAAC,CAAC;QAE5E,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE;QACnB,EAAE,CAAC,KAAK,CACN,oBAAC,WAAW,IACV,UAAU,EAAE,EAAE,CAAC,IAAI,EACnB,IAAI,EAAC,SAAS,EACd,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,QAAQ,GAClB,CACH,CAAC;QAEF,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/src/components/CloseButton.d.ts b/src/components/CloseButton.d.ts new file mode 100644 index 00000000..20336a1d --- /dev/null +++ b/src/components/CloseButton.d.ts @@ -0,0 +1,9 @@ +import React from 'react'; +import { Theme, TypeOptions } from '../types'; +export interface CloseButtonProps { + closeToast: (e: React.MouseEvent) => void; + type: TypeOptions; + ariaLabel?: string; + theme: Theme; +} +export declare function CloseButton({ closeToast, theme, ariaLabel }: CloseButtonProps): React.JSX.Element; diff --git a/src/components/CloseButton.js b/src/components/CloseButton.js new file mode 100644 index 00000000..63231a3a --- /dev/null +++ b/src/components/CloseButton.js @@ -0,0 +1,11 @@ +import React from 'react'; +export function CloseButton(_a) { + var closeToast = _a.closeToast, theme = _a.theme, _b = _a.ariaLabel, ariaLabel = _b === void 0 ? 'close' : _b; + return (React.createElement("button", { className: "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__close-button ").concat("Toastify" /* Default.CSS_NAMESPACE */, "__close-button--").concat(theme), type: "button", onClick: function (e) { + e.stopPropagation(); + closeToast(e); + }, "aria-label": ariaLabel }, + React.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 14 16" }, + React.createElement("path", { fillRule: "evenodd", d: "M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z" })))); +} +//# sourceMappingURL=CloseButton.js.map \ No newline at end of file diff --git a/src/components/CloseButton.js.map b/src/components/CloseButton.js.map new file mode 100644 index 00000000..f8529310 --- /dev/null +++ b/src/components/CloseButton.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CloseButton.js","sourceRoot":"","sources":["CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,MAAM,UAAU,WAAW,CAAC,EAIT;QAHjB,UAAU,gBAAA,EACV,KAAK,WAAA,EACL,iBAAmB,EAAnB,SAAS,mBAAG,OAAO,KAAA;IAEnB,OAAO,CACL,gCACE,SAAS,EAAE,+IAAkF,KAAK,CAAE,EACpG,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAA,CAAC;YACR,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,UAAU,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,gBACW,SAAS;QAErB,4CAAiB,MAAM,EAAC,OAAO,EAAC,WAAW;YACzC,8BACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,0HAA0H,GAC5H,CACE,CACC,CACV,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/src/components/Icons.cy.d.ts b/src/components/Icons.cy.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/src/components/Icons.cy.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/src/components/Icons.cy.js b/src/components/Icons.cy.js new file mode 100644 index 00000000..33023068 --- /dev/null +++ b/src/components/Icons.cy.js @@ -0,0 +1,34 @@ +import { __assign } from "tslib"; +import React from 'react'; +import { getIcon } from './Icons'; +var props = { + theme: 'light', + type: 'default', + isLoading: false +}; +describe('Icons', function () { + it('handle function', function () { + var C = getIcon(__assign(__assign({}, props), { icon: function () { return React.createElement("div", null, "icon"); } })); + cy.mount(C); + cy.findByText('icon').should('exist'); + }); + it('handle react element', function () { + var C = getIcon(__assign(__assign({}, props), { icon: React.createElement("div", null, "icon") })); + cy.mount(C); + cy.findByText('icon').should('exist'); + }); + it('handle loader', function () { + var C = getIcon(__assign(__assign({}, props), { isLoading: true })); + cy.mount(C); + cy.get('[data-cy-root]').should('have.length', 1); + }); + it('handle built-in icons', function () { + for (var _i = 0, _a = ['info', 'warning', 'success', 'error', 'spinner']; _i < _a.length; _i++) { + var t = _a[_i]; + var C = getIcon(__assign(__assign({}, props), { type: t })); + cy.mount(C); + cy.get('[data-cy-root]').should('have.length', 1); + } + }); +}); +//# sourceMappingURL=Icons.cy.js.map \ No newline at end of file diff --git a/src/components/Icons.cy.js.map b/src/components/Icons.cy.js.map new file mode 100644 index 00000000..666f65c0 --- /dev/null +++ b/src/components/Icons.cy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Icons.cy.js","sourceRoot":"","sources":["Icons.cy.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,OAAO,EAAE,MAAM,SAAS,CAAC;AAG9C,IAAM,KAAK,GAAe;IACxB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF,QAAQ,CAAC,OAAO,EAAE;IAChB,EAAE,CAAC,iBAAiB,EAAE;QACpB,IAAM,CAAC,GAAG,OAAO,uBACZ,KAAK,KACR,IAAI,EAAE,cAAM,OAAA,wCAAe,EAAf,CAAe,IAC3B,CAAC;QAEH,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;QACzB,IAAM,CAAC,GAAG,OAAO,uBACZ,KAAK,KACR,IAAI,EAAE,wCAAe,IACrB,CAAC;QAEH,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE;QAClB,IAAM,CAAC,GAAG,OAAO,uBACZ,KAAK,KACR,SAAS,EAAE,IAAI,IACf,CAAC;QAEH,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE;QAC1B,KAAgB,UAAkD,EAAlD,MAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAlD,cAAkD,EAAlD,IAAkD,EAAE;YAA/D,IAAM,CAAC,SAAA;YACV,IAAM,CAAC,GAAG,OAAO,uBACZ,KAAK,KACR,IAAI,EAAE,CAAgB,IACtB,CAAC;YAEH,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACZ,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;SACnD;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/src/components/Icons.d.ts b/src/components/Icons.d.ts new file mode 100644 index 00000000..d30543d1 --- /dev/null +++ b/src/components/Icons.d.ts @@ -0,0 +1,26 @@ +import React from 'react'; +import { Theme, ToastProps, TypeOptions } from '../types'; +/** + * Used when providing custom icon + */ +export interface IconProps { + theme: Theme; + type: TypeOptions; + isLoading?: boolean; +} +export type BuiltInIconProps = React.SVGProps & IconProps; +declare function Warning(props: BuiltInIconProps): React.JSX.Element; +declare function Info(props: BuiltInIconProps): React.JSX.Element; +declare function Success(props: BuiltInIconProps): React.JSX.Element; +declare function Error(props: BuiltInIconProps): React.JSX.Element; +declare function Spinner(): React.JSX.Element; +export declare const Icons: { + info: typeof Info; + warning: typeof Warning; + success: typeof Success; + error: typeof Error; + spinner: typeof Spinner; +}; +export type IconParams = Pick; +export declare function getIcon({ theme, type, isLoading, icon }: IconParams): React.ReactNode; +export {}; diff --git a/src/components/Icons.js b/src/components/Icons.js new file mode 100644 index 00000000..ec02ae92 --- /dev/null +++ b/src/components/Icons.js @@ -0,0 +1,58 @@ +import { __assign, __rest } from "tslib"; +import React, { cloneElement, isValidElement } from 'react'; +import { isFn } from '../utils'; +var Svg = function (_a) { + var theme = _a.theme, type = _a.type, isLoading = _a.isLoading, rest = __rest(_a, ["theme", "type", "isLoading"]); + return (React.createElement("svg", __assign({ viewBox: "0 0 24 24", width: "100%", height: "100%", fill: theme === 'colored' + ? 'currentColor' + : "var(--toastify-icon-color-".concat(type, ")") }, rest))); +}; +function Warning(props) { + return (React.createElement(Svg, __assign({}, props), + React.createElement("path", { d: "M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z" }))); +} +function Info(props) { + return (React.createElement(Svg, __assign({}, props), + React.createElement("path", { d: "M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z" }))); +} +function Success(props) { + return (React.createElement(Svg, __assign({}, props), + React.createElement("path", { d: "M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z" }))); +} +function Error(props) { + return (React.createElement(Svg, __assign({}, props), + React.createElement("path", { d: "M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z" }))); +} +function Spinner() { + return React.createElement("div", { className: "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__spinner") }); +} +export var Icons = { + info: Info, + warning: Warning, + success: Success, + error: Error, + spinner: Spinner +}; +var maybeIcon = function (type) { return type in Icons; }; +export function getIcon(_a) { + var theme = _a.theme, type = _a.type, isLoading = _a.isLoading, icon = _a.icon; + var Icon = null; + var iconProps = { theme: theme, type: type }; + if (icon === false) { + // hide + } + else if (isFn(icon)) { + Icon = icon(__assign(__assign({}, iconProps), { isLoading: isLoading })); + } + else if (isValidElement(icon)) { + Icon = cloneElement(icon, iconProps); + } + else if (isLoading) { + Icon = Icons.spinner(); + } + else if (maybeIcon(type)) { + Icon = Icons[type](iconProps); + } + return Icon; +} +//# sourceMappingURL=Icons.js.map \ No newline at end of file diff --git a/src/components/Icons.js.map b/src/components/Icons.js.map new file mode 100644 index 00000000..52f1d478 --- /dev/null +++ b/src/components/Icons.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Icons.js","sourceRoot":"","sources":["Icons.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAW,IAAI,EAAE,MAAM,UAAU,CAAC;AAazC,IAAM,GAAG,GAA+B,UAAC,EAKxC;IAJC,IAAA,KAAK,WAAA,EACL,IAAI,UAAA,EACJ,SAAS,eAAA,EACN,IAAI,cAJgC,8BAKxC,CADQ;IACH,OAAA,CACJ,sCACE,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,IAAI,EACF,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,oCAA6B,IAAI,MAAG,IAEtC,IAAI,EACR,CACH,CAAA;CAAA,CAAC;AAEF,SAAS,OAAO,CAAC,KAAuB;IACtC,OAAO,CACL,oBAAC,GAAG,eAAK,KAAK;QACZ,8BAAM,CAAC,EAAC,4eAA4e,GAAG,CACnf,CACP,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,KAAuB;IACnC,OAAO,CACL,oBAAC,GAAG,eAAK,KAAK;QACZ,8BAAM,CAAC,EAAC,+OAA+O,GAAG,CACtP,CACP,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,KAAuB;IACtC,OAAO,CACL,oBAAC,GAAG,eAAK,KAAK;QACZ,8BAAM,CAAC,EAAC,4KAA4K,GAAG,CACnL,CACP,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,KAAuB;IACpC,OAAO,CACL,oBAAC,GAAG,eAAK,KAAK;QACZ,8BAAM,CAAC,EAAC,oUAAoU,GAAG,CAC3U,CACP,CAAC;AACJ,CAAC;AAED,SAAS,OAAO;IACd,OAAO,6BAAK,SAAS,EAAE,8DAAmC,GAAI,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,IAAM,KAAK,GAAG;IACnB,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,IAAM,SAAS,GAAG,UAAC,IAAY,IAAiC,OAAA,IAAI,IAAI,KAAK,EAAb,CAAa,CAAC;AAO9E,MAAM,UAAU,OAAO,CAAC,EAA4C;QAA1C,KAAK,WAAA,EAAE,IAAI,UAAA,EAAE,SAAS,eAAA,EAAE,IAAI,UAAA;IACpD,IAAI,IAAI,GAAoB,IAAI,CAAC;IACjC,IAAM,SAAS,GAAG,EAAE,KAAK,OAAA,EAAE,IAAI,MAAA,EAAE,CAAC;IAElC,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,OAAO;KACR;SAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;QACrB,IAAI,GAAG,IAAI,uBAAM,SAAS,KAAE,SAAS,WAAA,IAAG,CAAC;KAC1C;SAAM,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;QAC/B,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACtC;SAAM,IAAI,SAAS,EAAE;QACpB,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;KACxB;SAAM,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;QAC1B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;KAC/B;IAED,OAAO,IAAI,CAAC;AACd,CAAC"} \ No newline at end of file diff --git a/src/components/ProgressBar.cy.d.ts b/src/components/ProgressBar.cy.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/src/components/ProgressBar.cy.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/src/components/ProgressBar.cy.js b/src/components/ProgressBar.cy.js new file mode 100644 index 00000000..26dd4ebd --- /dev/null +++ b/src/components/ProgressBar.cy.js @@ -0,0 +1,63 @@ +import { __assign } from "tslib"; +import React from 'react'; +import { ProgressBar } from './ProgressBar'; +var getProps = function () { return ({ + delay: 5000, + isRunning: true, + rtl: false, + closeToast: cy.stub, + isIn: true, + theme: ['colored', 'light', 'dark'][Math.floor(Math.random() * 3)] +}); }; +var Wrapper = function (_a) { + var children = _a.children; + return (React.createElement("div", { style: { + padding: '1rem', + position: 'fixed', + top: 0, + left: 0, + right: 0, + outline: '1px solid' + } }, children)); +}; +describe('ProgressBar', function () { + it('merge className', function () { + cy.mount(React.createElement(Wrapper, null, + React.createElement(ProgressBar, __assign({}, getProps(), { className: "test" })))); + cy.get('.test').should('exist'); + }); + it('merge className in function form', function () { + cy.mount(React.createElement(Wrapper, null, + React.createElement(ProgressBar, __assign({}, getProps(), { className: function () { return 'test'; } })))); + cy.get('.test').should('exist'); + }); + it('trigger closeToast when animation end', function () { + var closeToast = cy.stub().as('closeToast'); + var delay = 1000; + cy.mount(React.createElement(Wrapper, null, + React.createElement(ProgressBar, __assign({}, getProps(), { closeToast: closeToast, delay: delay })))); + cy.get('@closeToast').should('not.have.been.called'); + cy.wait(delay); + cy.get('@closeToast').should('have.been.called'); + }); + it('hide the progress bar', function () { + cy.mount(React.createElement(Wrapper, null, + React.createElement(ProgressBar, __assign({}, getProps(), { hide: true })))); + cy.get('[role=progressbar]').should('exist').should('not.be.visible'); + }); + it('pause the progress bar', function () { + cy.mount(React.createElement(Wrapper, null, + React.createElement(ProgressBar, __assign({}, getProps(), { isRunning: false })))); + cy.findByRole('progressbar') + .should('have.attr', 'style') + .and('include', 'animation-play-state: paused'); + }); + it('control progress bar', function () { + cy.mount(React.createElement(Wrapper, null, + React.createElement(ProgressBar, __assign({}, getProps(), { controlledProgress: true, progress: 0.7 })))); + cy.findByRole('progressbar') + .should('have.attr', 'style') + .and('include', 'scaleX(0.7)'); + }); +}); +//# sourceMappingURL=ProgressBar.cy.js.map \ No newline at end of file diff --git a/src/components/ProgressBar.cy.js.map b/src/components/ProgressBar.cy.js.map new file mode 100644 index 00000000..35a45b43 --- /dev/null +++ b/src/components/ProgressBar.cy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProgressBar.cy.js","sourceRoot":"","sources":["ProgressBar.cy.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/components/ProgressBar.d.ts b/src/components/ProgressBar.d.ts new file mode 100644 index 00000000..196666af --- /dev/null +++ b/src/components/ProgressBar.d.ts @@ -0,0 +1,53 @@ +import React from 'react'; +import { TypeOptions, ToastClassName, Theme } from '../types'; +export interface ProgressBarProps { + /** + * The animation delay which determine when to close the toast + */ + delay: number; + /** + * Whether or not the animation is running or paused + */ + isRunning: boolean; + /** + * Func to close the current toast + */ + closeToast: () => void; + /** + * Optional type : info, success ... + */ + type?: TypeOptions; + /** + * The theme that is currently used + */ + theme: Theme; + /** + * Hide or not the progress bar + */ + hide?: boolean; + /** + * Optional className + */ + className?: ToastClassName; + /** + * Optional inline style + */ + style?: React.CSSProperties; + /** + * Tell wether or not controlled progress bar is used + */ + controlledProgress?: boolean; + /** + * Controlled progress value + */ + progress?: number | string; + /** + * Support rtl content + */ + rtl?: boolean; + /** + * Tell if the component is visible on screen or not + */ + isIn?: boolean; +} +export declare function ProgressBar({ delay, isRunning, closeToast, type, hide, className, style: userStyle, controlledProgress, progress, rtl, isIn, theme }: ProgressBarProps): React.JSX.Element; diff --git a/src/components/ProgressBar.js b/src/components/ProgressBar.js new file mode 100644 index 00000000..334ee203 --- /dev/null +++ b/src/components/ProgressBar.js @@ -0,0 +1,41 @@ +import { __assign } from "tslib"; +import React from 'react'; +import cx from 'clsx'; +import { isFn } from './../utils'; +export function ProgressBar(_a) { + var _b, _c; + var delay = _a.delay, isRunning = _a.isRunning, closeToast = _a.closeToast, _d = _a.type, type = _d === void 0 ? "default" /* Type.DEFAULT */ : _d, hide = _a.hide, className = _a.className, userStyle = _a.style, controlledProgress = _a.controlledProgress, progress = _a.progress, rtl = _a.rtl, isIn = _a.isIn, theme = _a.theme; + var isHidden = hide || (controlledProgress && progress === 0); + var style = __assign(__assign({}, userStyle), { animationDuration: "".concat(delay, "ms"), animationPlayState: isRunning ? 'running' : 'paused' }); + if (controlledProgress) + style.transform = "scaleX(".concat(progress, ")"); + var defaultClassName = cx("".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar"), controlledProgress + ? "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar--controlled") + : "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar--animated"), "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar-theme--").concat(theme), "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar--").concat(type), (_b = {}, + _b["".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar--rtl")] = rtl, + _b)); + var classNames = isFn(className) + ? className({ + rtl: rtl, + type: type, + defaultClassName: defaultClassName + }) + : cx(defaultClassName, className); + // 🧐 controlledProgress is derived from progress + // so if controlledProgress is set + // it means that this is also the case for progress + var animationEvent = (_c = {}, + _c[controlledProgress && progress >= 1 + ? 'onTransitionEnd' + : 'onAnimationEnd'] = controlledProgress && progress < 1 + ? null + : function () { + isIn && closeToast(); + }, + _c); + // TODO: add aria-valuenow, aria-valuemax, aria-valuemin + return (React.createElement("div", { className: "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar--wrp"), "data-hidden": isHidden }, + React.createElement("div", { className: "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar--bg ").concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar-theme--").concat(theme, " ").concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar--").concat(type) }), + React.createElement("div", __assign({ role: "progressbar", "aria-hidden": isHidden ? 'true' : 'false', "aria-label": "notification timer", className: classNames, style: style }, animationEvent)))); +} +//# sourceMappingURL=ProgressBar.js.map \ No newline at end of file diff --git a/src/components/ProgressBar.js.map b/src/components/ProgressBar.js.map new file mode 100644 index 00000000..45ecb999 --- /dev/null +++ b/src/components/ProgressBar.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["ProgressBar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,MAAM,CAAC;AAEtB,OAAO,EAAW,IAAI,EAAQ,MAAM,YAAY,CAAC;AAiEjD,MAAM,UAAU,WAAW,CAAC,EAaT;;QAZjB,KAAK,WAAA,EACL,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,YAAmB,EAAnB,IAAI,oDAAe,EACnB,IAAI,UAAA,EACJ,SAAS,eAAA,EACF,SAAS,WAAA,EAChB,kBAAkB,wBAAA,EAClB,QAAQ,cAAA,EACR,GAAG,SAAA,EACH,IAAI,UAAA,EACJ,KAAK,WAAA;IAEL,IAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,kBAAkB,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC;IAChE,IAAM,KAAK,yBACN,SAAS,KACZ,iBAAiB,EAAE,UAAG,KAAK,OAAI,EAC/B,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GACrD,CAAC;IAEF,IAAI,kBAAkB;QAAE,KAAK,CAAC,SAAS,GAAG,iBAAU,QAAQ,MAAG,CAAC;IAChE,IAAM,gBAAgB,GAAG,EAAE,CACzB,mEAAwC,EACxC,kBAAkB;QAChB,CAAC,CAAC,+EAAoD;QACtD,CAAC,CAAC,6EAAkD,EACtD,mFAAiD,KAAK,CAAE,EACxD,6EAA2C,IAAI,CAAE;QAE/C,GAAC,wEAA6C,IAAG,GAAG;YAEvD,CAAC;IACF,IAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,CAAC,CAAC,SAAS,CAAC;YACR,GAAG,KAAA;YACH,IAAI,MAAA;YACJ,gBAAgB,kBAAA;SACjB,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAEpC,iDAAiD;IACjD,kCAAkC;IAClC,mDAAmD;IACnD,IAAM,cAAc;QAClB,GAAC,kBAAkB,IAAK,QAAoB,IAAI,CAAC;YAC/C,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,gBAAgB,IAClB,kBAAkB,IAAK,QAAoB,GAAG,CAAC;YAC7C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,IAAI,IAAI,UAAU,EAAE,CAAC;YACvB,CAAC;WACR,CAAC;IAEF,wDAAwD;IAExD,OAAO,CACL,6BACE,SAAS,EAAE,wEAA6C,iBAC3C,QAAQ;QAErB,6BACE,SAAS,EAAE,yJAA4F,KAAK,iFAA4C,IAAI,CAAE,GAC9J;QACF,sCACE,IAAI,EAAC,aAAa,iBACL,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,gBAC7B,oBAAoB,EAC/B,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,KAAK,IACR,cAAc,EAClB,CACE,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/src/components/Toast.cy.d.ts b/src/components/Toast.cy.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/src/components/Toast.cy.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/src/components/Toast.cy.js b/src/components/Toast.cy.js new file mode 100644 index 00000000..f0f8c618 --- /dev/null +++ b/src/components/Toast.cy.js @@ -0,0 +1,219 @@ +import { __assign } from "tslib"; +import React from 'react'; +import { Toast } from './Toast'; +import { defaultProps } from './ToastContainer'; +var REQUIRED_PROPS = __assign(__assign({}, defaultProps), { isIn: true, autoClose: false, closeToast: function () { }, type: 'default', toastId: 'id', key: 'key', collapseAll: function () { } }); +var cssClasses = { + rtl: ".".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast--rtl"), + closeOnClick: ".".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast--close-on-click"), + progressBar: ".".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar"), + progressBarController: ".".concat("Toastify" /* Default.CSS_NAMESPACE */, "__progress-bar--controlled"), + closeButton: ".".concat("Toastify" /* Default.CSS_NAMESPACE */, "__close-button"), + container: ".".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast-container") +}; +var progressBar = { + isRunning: function () { + cy.wait(100); + cy.findByRole('progressbar') + .should('have.attr', 'style') + .and('include', 'animation-play-state: running'); + }, + isPaused: function () { + cy.wait(100); + cy.findByRole('progressbar') + .should('have.attr', 'style') + .and('include', 'animation-play-state: paused') + .as('pause progress bar'); + }, + isControlled: function (progress) { + cy.wait(100); + cy.get(cssClasses.progressBarController).should('exist'); + cy.findByRole('progressbar') + .should('have.attr', 'style') + .and('include', "scaleX(".concat(progress, ")")); + } +}; +describe('Toast', function () { + var _loop_1 = function (name_1, className, bodyClassName) { + it("merge container and body className when using ".concat(name_1), function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { className: className, bodyClassName: bodyClassName }), "FooBar")); + cy.get('.container-class').should('exist'); + cy.get('.body-class').should('exist'); + }); + }; + for (var _i = 0, _a = [ + { + name: 'string', + className: 'container-class', + bodyClassName: 'body-class' + }, + { + name: 'function', + className: function () { return 'container-class'; }, + bodyClassName: function () { return 'body-class'; } + } + ]; _i < _a.length; _i++) { + var _b = _a[_i], name_1 = _b.name, className = _b.className, bodyClassName = _b.bodyClassName; + _loop_1(name_1, className, bodyClassName); + } + it('support rtl', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { rtl: true }), "FooBar")); + cy.get(cssClasses.rtl).should('have.css', 'direction', 'rtl'); + }); + describe('closeOnClick', function () { + it('call closeToast when enabled', function () { + var closeToast = cy.stub().as('closeToast'); + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { closeOnClick: true, closeToast: closeToast }), "FooBar")); + cy.findByRole('alert').click(); + cy.get('@closeToast').should('have.been.called'); + }); + it('does not call closeToast when disabled', function () { + var closeToast = cy.stub().as('closeToast'); + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { closeOnClick: false, closeToast: closeToast }), "FooBar")); + cy.findByRole('alert').click(); + cy.get('@closeToast').should('not.have.been.called'); + }); + }); + describe('autoClose', function () { + it('does not render progress bar when false', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { autoClose: false }), "FooBar")); + cy.findByRole('progressbar').should('not.exist'); + }); + it('resume and pause progress bar', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { autoClose: 5000 }), "hello")); + cy.resolveEntranceAnimation(); + cy.findByRole('alert').should('be.visible').trigger('mouseover'); + progressBar.isPaused(); + cy.findByRole('alert').trigger('mouseout'); + progressBar.isRunning(); + cy.findByRole('alert').trigger('mouseover'); + progressBar.isPaused(); + }); + }); + it('does not render close button when closeButton is false', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { closeButton: false }), "FooBar")); + cy.findByLabelText('close').should('not.exist'); + }); + it('resume and pause progress bar when pauseOnFocusLoss is enabled', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { autoClose: 5000, pauseOnFocusLoss: true }), "hello")); + cy.resolveEntranceAnimation(); + progressBar.isRunning(); + cy.window().blur(); + progressBar.isPaused(); + cy.window().focus(); + progressBar.isRunning(); + }); + it('does not pause progress bar when pauseOnHover is disabled', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { autoClose: 5000, pauseOnHover: false }), "hello")); + cy.resolveEntranceAnimation(); + cy.findByRole('alert').trigger('mouseover'); + progressBar.isRunning(); + }); + describe('controller progress bar', function () { + it('set the correct progress value bar disregarding autoClose value', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { progress: 0.3, autoClose: false }), "hello")); + cy.resolveEntranceAnimation(); + progressBar.isControlled(0.3); + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { progress: 0.3, autoClose: 5000 }), "hello")); + cy.resolveEntranceAnimation(); + progressBar.isControlled(0.3); + }); + it('call closeToast when progress value is >= 1', function () { + var closeToast = cy.stub().as('closeToast'); + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { progress: 1.1, closeToast: closeToast }), "hello")); + cy.findByRole('progressbar').trigger('transitionend'); + cy.get('@closeToast').should('have.been.called'); + }); + }); + it('call closeToast when autoClose duration exceeded', function () { + var closeToast = cy.stub().as('closeToast'); + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { autoClose: 200, closeToast: closeToast }), "hello")); + cy.get('@closeToast').should('have.been.called'); + }); + it('attach specified attributes: role, id, etc...', function () { + var style = { + background: 'purple' + }; + var bodyStyle = { + fontWeight: 'bold' + }; + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { role: "status", toastId: "foo", style: style, bodyStyle: bodyStyle }), "hello")); + cy.resolveEntranceAnimation(); + cy.findByRole('status').should('exist'); + cy.get('#foo').should('exist'); + cy.findByRole('status') + .parent() + .should('have.attr', 'style') + .and('include', 'background: purple'); + cy.findByRole('status') + .should('have.attr', 'style') + .and('include', 'font-weight: bold'); + }); + var _loop_2 = function (type, value) { + it("render ".concat(type), function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS), value)); + cy.findByText('hello').should('exist'); + }); + }; + for (var _c = 0, _d = [ + { + type: 'string', + value: 'hello' + }, + { + type: 'react element', + value: React.createElement("div", null, "hello") + } + ]; _c < _d.length; _c++) { + var _e = _d[_c], type = _e.type, value = _e.value; + _loop_2(type, value); + } + it('override default closeButton', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { closeButton: React.createElement("span", null, "\uD83D\uDCA9") }), "hello")); + cy.resolveEntranceAnimation(); + cy.findByText('💩').should('exist'); + }); + it('fallback to default closeButton', function () { + cy.mount(React.createElement(Toast, __assign({}, REQUIRED_PROPS, { closeButton: true }), "hello")); + cy.resolveEntranceAnimation(); + cy.findByLabelText('close').should('exist'); + }); + describe('Drag event', function () { + beforeEach(function () { + cy.viewport('macbook-16'); + }); + var _loop_3 = function (axis, delta) { + it("close toast when dragging on ".concat(axis, "-axis"), function () { + cy.mount(React.createElement("div", { style: { width: '300px', position: 'fixed', right: 0 } }, + React.createElement(Toast, __assign({}, REQUIRED_PROPS, { autoClose: 5000, draggable: true, draggableDirection: axis, closeToast: cy.stub().as('closeToast') }), "hello"))); + cy.resolveEntranceAnimation(); + cy.findByRole('alert').move(delta); + cy.get('@closeToast').should('have.been.called'); + }); + }; + for (var _i = 0, _a = [ + { axis: 'x', delta: { deltaX: -300 } }, + { axis: 'y', delta: { deltaY: 300 } } + ]; _i < _a.length; _i++) { + var _b = _a[_i], axis = _b.axis, delta = _b.delta; + _loop_3(axis, delta); + } + var _loop_4 = function (axis, delta) { + it("does not close toast when dragging on ".concat(axis, "-axis"), function () { + cy.mount(React.createElement("div", { style: { width: '300px', position: 'fixed', right: 0 } }, + React.createElement(Toast, __assign({}, REQUIRED_PROPS, { autoClose: 5000, draggable: true, draggableDirection: axis, closeToast: cy.stub().as('closeToast') }), "hello"))); + cy.resolveEntranceAnimation(); + cy.findByRole('alert').move(delta); + cy.get('@closeToast').should('not.have.been.called'); + }); + }; + for (var _c = 0, _d = [ + { axis: 'x', delta: { deltaX: -100 } }, + { axis: 'y', delta: { deltaY: 40 } } + ]; _c < _d.length; _c++) { + var _e = _d[_c], axis = _e.axis, delta = _e.delta; + _loop_4(axis, delta); + } + }); +}); +//# sourceMappingURL=Toast.cy.js.map \ No newline at end of file diff --git a/src/components/Toast.cy.js.map b/src/components/Toast.cy.js.map new file mode 100644 index 00000000..af257835 --- /dev/null +++ b/src/components/Toast.cy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Toast.cy.js","sourceRoot":"","sources":["Toast.cy.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/components/Toast.cy.tsx b/src/components/Toast.cy.tsx index be7cfd34..f6e1feca 100644 --- a/src/components/Toast.cy.tsx +++ b/src/components/Toast.cy.tsx @@ -12,7 +12,7 @@ const REQUIRED_PROPS = { type: 'default', toastId: 'id', key: 'key', - collapseAll: () => {} + collapseAll: () => {}, } as ToastProps; const cssClasses = { diff --git a/src/components/Toast.d.ts b/src/components/Toast.d.ts new file mode 100644 index 00000000..e05f5caa --- /dev/null +++ b/src/components/Toast.d.ts @@ -0,0 +1,3 @@ +import React from 'react'; +import { ToastProps } from '../types'; +export declare const Toast: React.FC; diff --git a/src/components/Toast.js b/src/components/Toast.js new file mode 100644 index 00000000..8395051b --- /dev/null +++ b/src/components/Toast.js @@ -0,0 +1,57 @@ +import { __assign } from "tslib"; +import cx from 'clsx'; +import React, { cloneElement, isValidElement } from 'react'; +import { useToast } from '../hooks/useToast'; +import { isFn } from '../utils'; +import { CloseButton } from './CloseButton'; +import { ProgressBar } from './ProgressBar'; +import { getIcon } from './Icons'; +export var Toast = function (props) { + var _a, _b, _c; + var _d = useToast(props), isRunning = _d.isRunning, preventExitTransition = _d.preventExitTransition, toastRef = _d.toastRef, eventHandlers = _d.eventHandlers, playToast = _d.playToast; + var closeButton = props.closeButton, children = props.children, autoClose = props.autoClose, onClick = props.onClick, type = props.type, hideProgressBar = props.hideProgressBar, closeToast = props.closeToast, Transition = props.transition, position = props.position, className = props.className, style = props.style, bodyClassName = props.bodyClassName, bodyStyle = props.bodyStyle, progressClassName = props.progressClassName, progressStyle = props.progressStyle, updateId = props.updateId, role = props.role, progress = props.progress, rtl = props.rtl, toastId = props.toastId, deleteToast = props.deleteToast, isIn = props.isIn, isLoading = props.isLoading, closeOnClick = props.closeOnClick, theme = props.theme, comeFrom = props.comeFrom, leaveFrom = props.leaveFrom; + var defaultClassName = cx("".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast"), "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast-theme--").concat(theme), "".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast--").concat(type), (_a = {}, + _a["".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast--rtl")] = rtl, + _a), (_b = {}, + _b["".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast--close-on-click")] = closeOnClick, + _b)); + var cssClasses = isFn(className) + ? className({ + rtl: rtl, + position: position, + type: type, + defaultClassName: defaultClassName, + className: className, + }) + : cx(defaultClassName, className); + var icon = getIcon(props); + var isProgressControlled = !!progress || !autoClose; + var closeButtonProps = { closeToast: closeToast, type: type, theme: theme }; + var Close = null; + if (closeButton === false) { + // hide + } + else if (isFn(closeButton)) { + Close = closeButton(closeButtonProps); + } + else if (isValidElement(closeButton)) { + Close = cloneElement(closeButton, closeButtonProps); + } + else { + Close = CloseButton(closeButtonProps); + } + return (React.createElement(Transition, { isIn: isIn, done: deleteToast, position: position, preventExitTransition: preventExitTransition, nodeRef: toastRef, playToast: playToast, comeFrom: comeFrom, leaveFrom: leaveFrom }, + React.createElement("div", __assign({ id: toastId, onClick: onClick, "data-in": isIn, className: cssClasses }, eventHandlers, { style: style, ref: toastRef }), + React.createElement("div", __assign({}, (isIn && { role: role }), { className: isFn(bodyClassName) + ? bodyClassName({ type: type }) + : cx("".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast-body"), bodyClassName), style: bodyStyle }), + icon != null && (React.createElement("div", { className: cx("".concat("Toastify" /* Default.CSS_NAMESPACE */, "__toast-icon"), (_c = {}, + _c["".concat("Toastify" /* Default.CSS_NAMESPACE */, "--animate-icon ").concat("Toastify" /* Default.CSS_NAMESPACE */, "__zoom-enter")] = !isLoading, + _c)) }, icon)), + React.createElement("div", null, children)), + Close, + React.createElement(ProgressBar, __assign({}, (updateId && !isProgressControlled + ? { key: "pb-".concat(updateId) } + : {}), { rtl: rtl, theme: theme, delay: autoClose, isRunning: isRunning, isIn: isIn, closeToast: closeToast, hide: hideProgressBar, type: type, style: progressStyle, className: progressClassName, controlledProgress: isProgressControlled, progress: progress || 0 }))))); +}; +//# sourceMappingURL=Toast.js.map \ No newline at end of file diff --git a/src/components/Toast.js.map b/src/components/Toast.js.map new file mode 100644 index 00000000..f960f4a9 --- /dev/null +++ b/src/components/Toast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Toast.js","sourceRoot":"","sources":["Toast.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/components/Toast.tsx b/src/components/Toast.tsx index 3cfa6f4d..93273729 100644 --- a/src/components/Toast.tsx +++ b/src/components/Toast.tsx @@ -2,11 +2,13 @@ import cx from 'clsx'; import React, { cloneElement, isValidElement, ReactNode } from 'react'; import { useToast } from '../hooks/useToast'; -import { ToastProps } from '../types'; +import { ToastComeAndGoTo, ToastProps } from '../types'; import { Default, isFn } from '../utils'; import { CloseButton } from './CloseButton'; import { ProgressBar } from './ProgressBar'; import { getIcon } from './Icons'; +import { toast } from '../core'; + export const Toast: React.FC = props => { const { @@ -14,7 +16,7 @@ export const Toast: React.FC = props => { preventExitTransition, toastRef, eventHandlers, - playToast + playToast, } = useToast(props); const { closeButton, @@ -41,8 +43,11 @@ export const Toast: React.FC = props => { isIn, isLoading, closeOnClick, - theme + theme, + comeFrom, + leaveFrom } = props; + const defaultClassName = cx( `${Default.CSS_NAMESPACE}__toast`, `${Default.CSS_NAMESPACE}__toast-theme--${theme}`, @@ -59,7 +64,8 @@ export const Toast: React.FC = props => { rtl, position, type, - defaultClassName + defaultClassName, + className, }) : cx(defaultClassName, className); const icon = getIcon(props); @@ -78,6 +84,9 @@ export const Toast: React.FC = props => { Close = CloseButton(closeButtonProps); } + + + return ( = props => { preventExitTransition={preventExitTransition} nodeRef={toastRef} playToast={playToast} + comeFrom={comeFrom} + leaveFrom={leaveFrom} + + + >

= props => { {...eventHandlers} style={style} ref={toastRef} + >
0) + node.dataset.collapsed = "".concat(collapsed); + if (!node.dataset.pos) + node.dataset.pos = isTop_1 ? 'top' : 'bot'; + var y = usedHeight_1 * (collapsed ? 0.2 : 1) + (collapsed ? 0 : gap_1 * i); + node.style.setProperty('--y', "".concat(isTop_1 ? y : y * -1, "px")); + node.style.setProperty('--g', "".concat(gap_1)); + node.style.setProperty('--s', "".concat(1 - (collapsed ? prevS_1 : 0))); + usedHeight_1 += node.offsetHeight; + prevS_1 += 0.025; + }); + } + }, [collapsed, count, stacked]); + return (React.createElement("div", { ref: containerRef, className: "Toastify" /* Default.CSS_NAMESPACE */, id: containerId, onMouseEnter: function () { + if (stacked) { + setIsCollapsed(false); + toast.pause(); + } + }, onMouseLeave: collapseAll }, getToastToRender(function (position, toastList) { + var containerStyle = !toastList.length + ? __assign(__assign({}, style), { pointerEvents: 'none' }) : __assign({}, style); + return (React.createElement("div", { className: getClassName(position), style: containerStyle, key: "container-".concat(position) }, toastList.map(function (_a) { + var content = _a.content, toastProps = _a.props; + return (React.createElement(Toast, __assign({}, toastProps, { stacked: stacked, collapseAll: collapseAll, isIn: isToastActive(toastProps.toastId, toastProps.containerId), style: toastProps.style, key: "toast-".concat(toastProps.key) }), content)); + }))); + }))); +} +//# sourceMappingURL=ToastContainer.js.map \ No newline at end of file diff --git a/src/components/ToastContainer.js.map b/src/components/ToastContainer.js.map new file mode 100644 index 00000000..56c5549e --- /dev/null +++ b/src/components/ToastContainer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ToastContainer.js","sourceRoot":"","sources":["ToastContainer.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/components/ToastContainer.tsx b/src/components/ToastContainer.tsx index 049a889f..d04854b1 100644 --- a/src/components/ToastContainer.tsx +++ b/src/components/ToastContainer.tsx @@ -20,7 +20,7 @@ export const defaultProps: ToastContainerProps = { draggablePercent: Default.DRAGGABLE_PERCENT as number, draggableDirection: Direction.X, role: 'alert', - theme: 'light' + theme: 'light', }; export function ToastContainer(props: ToastContainerProps) { @@ -28,6 +28,7 @@ export function ToastContainer(props: ToastContainerProps) { ...defaultProps, ...props }; + const stacked = props.stacked; const [collapsed, setIsCollapsed] = useState(true); const containerRef = useRef(null); @@ -35,6 +36,7 @@ export function ToastContainer(props: ToastContainerProps) { useToastContainer(containerProps); const { className, style, rtl, containerId } = containerProps; + function getClassName(position: ToastPosition) { const defaultClassName = cx( `${Default.CSS_NAMESPACE}__toast-container`, @@ -81,7 +83,6 @@ export function ToastContainer(props: ToastContainerProps) { node.style.setProperty('--y', `${isTop ? y : y * -1}px`); node.style.setProperty('--g', `${gap}`); node.style.setProperty('--s', `${1 - (collapsed ? prevS : 0)}`); - usedHeight += node.offsetHeight; prevS += 0.025; }); diff --git a/src/components/Transitions.d.ts b/src/components/Transitions.d.ts new file mode 100644 index 00000000..7bfceac6 --- /dev/null +++ b/src/components/Transitions.d.ts @@ -0,0 +1,5 @@ +declare const Bounce: ({ children, position, preventExitTransition, done, nodeRef, isIn, playToast, comeFrom, leaveFrom }: import("..").ToastTransitionProps) => import("react").JSX.Element; +declare const Slide: ({ children, position, preventExitTransition, done, nodeRef, isIn, playToast, comeFrom, leaveFrom }: import("..").ToastTransitionProps) => import("react").JSX.Element; +declare const Zoom: ({ children, position, preventExitTransition, done, nodeRef, isIn, playToast, comeFrom, leaveFrom }: import("..").ToastTransitionProps) => import("react").JSX.Element; +declare const Flip: ({ children, position, preventExitTransition, done, nodeRef, isIn, playToast, comeFrom, leaveFrom }: import("..").ToastTransitionProps) => import("react").JSX.Element; +export { Bounce, Slide, Zoom, Flip }; diff --git a/src/components/Transitions.js b/src/components/Transitions.js new file mode 100644 index 00000000..a7710908 --- /dev/null +++ b/src/components/Transitions.js @@ -0,0 +1,15 @@ +import { cssTransition } from '../utils'; +var getConfig = function (animationName, appendPosition) { + if (appendPosition === void 0) { appendPosition = false; } + return ({ + enter: "".concat("Toastify" /* Default.CSS_NAMESPACE */, "--animate ").concat("Toastify" /* Default.CSS_NAMESPACE */, "__").concat(animationName, "-enter"), + exit: "".concat("Toastify" /* Default.CSS_NAMESPACE */, "--animate ").concat("Toastify" /* Default.CSS_NAMESPACE */, "__").concat(animationName, "-exit"), + appendPosition: appendPosition + }); +}; +var Bounce = cssTransition(getConfig('bounce', true)); +var Slide = cssTransition(getConfig('slide', true)); +var Zoom = cssTransition(getConfig('zoom')); +var Flip = cssTransition(getConfig('flip')); +export { Bounce, Slide, Zoom, Flip }; +//# sourceMappingURL=Transitions.js.map \ No newline at end of file diff --git a/src/components/Transitions.js.map b/src/components/Transitions.js.map new file mode 100644 index 00000000..7c598ac5 --- /dev/null +++ b/src/components/Transitions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Transitions.js","sourceRoot":"","sources":["Transitions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,UAAU,CAAC;AAElD,IAAM,SAAS,GAAG,UAAC,aAAqB,EAAE,cAAsB;IAAtB,+BAAA,EAAA,sBAAsB;IAAK,OAAA,CAAC;QACpE,KAAK,EAAE,4HAA+D,aAAa,WAAQ;QAC3F,IAAI,EAAE,4HAA+D,aAAa,UAAO;QACzF,cAAc,gBAAA;KACf,CAAC;AAJmE,CAInE,CAAC;AAEH,IAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAExD,IAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAEtD,IAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9C,IAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC"} \ No newline at end of file diff --git a/src/components/index.d.ts b/src/components/index.d.ts new file mode 100644 index 00000000..5d8e7d0e --- /dev/null +++ b/src/components/index.d.ts @@ -0,0 +1,6 @@ +export * from './CloseButton'; +export * from './ProgressBar'; +export { ToastContainer } from './ToastContainer'; +export * from './Transitions'; +export * from './Toast'; +export * from './Icons'; diff --git a/src/components/index.js b/src/components/index.js new file mode 100644 index 00000000..54e0754b --- /dev/null +++ b/src/components/index.js @@ -0,0 +1,7 @@ +export * from './CloseButton'; +export * from './ProgressBar'; +export { ToastContainer } from './ToastContainer'; +export * from './Transitions'; +export * from './Toast'; +export * from './Icons'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/components/index.js.map b/src/components/index.js.map new file mode 100644 index 00000000..a8b37c3e --- /dev/null +++ b/src/components/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/src/core/containerObserver.d.ts b/src/core/containerObserver.d.ts new file mode 100644 index 00000000..d142c2ec --- /dev/null +++ b/src/core/containerObserver.d.ts @@ -0,0 +1,18 @@ +import { Id, NotValidatedToastProps, OnChangeCallback, Toast, ToastContainerProps, ToastContent } from '../types'; +type Notify = () => void; +export type ContainerObserver = ReturnType; +export declare function createContainerObserver(id: Id, containerProps: ToastContainerProps, dispatchChanges: OnChangeCallback): { + id: Id; + props: ToastContainerProps; + observe: (notify: Notify) => () => boolean; + toggle: (v: boolean, id?: Id) => void; + removeToast: (id?: Id) => void; + toasts: Map; + clearQueue: () => void; + buildToast: (content: ToastContent, options: NotValidatedToastProps) => void; + setProps(p: ToastContainerProps): void; + setToggle: (id: Id, fn: (v: boolean) => void) => void; + isToastActive: (id: Id) => boolean; + getSnapshot: () => Toast[]; +}; +export {}; diff --git a/src/core/containerObserver.js b/src/core/containerObserver.js new file mode 100644 index 00000000..cf26e58d --- /dev/null +++ b/src/core/containerObserver.js @@ -0,0 +1,144 @@ +import { __assign, __spreadArray } from "tslib"; +import { cloneElement, isValidElement } from 'react'; +import { canBeRendered, getAutoCloseDelay, isFn, isNum, isStr, parseClassName, toToastItem } from '../utils'; +export function createContainerObserver(id, containerProps, dispatchChanges) { + var toastKey = 1; + var toastCount = 0; + var queue = []; + var activeToasts = []; + var snapshot = []; + var props = containerProps; + var toasts = new Map(); + var listeners = new Set(); + var observe = function (notify) { + listeners.add(notify); + return function () { return listeners.delete(notify); }; + }; + var notify = function () { + snapshot = Array.from(toasts.values()); + listeners.forEach(function (cb) { return cb(); }); + }; + var shouldIgnoreToast = function (_a) { + var containerId = _a.containerId, toastId = _a.toastId, updateId = _a.updateId; + var containerMismatch = containerId ? containerId !== id : id !== 1; + var isDuplicate = toasts.has(toastId) && updateId == null; + return containerMismatch || isDuplicate; + }; + var toggle = function (v, id) { + toasts.forEach(function (t) { + if (id == null || id === t.props.toastId) + isFn(t.toggle) && t.toggle(v); + }); + }; + var removeToast = function (id) { + activeToasts = id == null ? [] : activeToasts.filter(function (v) { return v !== id; }); + notify(); + }; + var clearQueue = function () { + toastCount -= queue.length; + queue = []; + }; + var addActiveToast = function (toast) { + var _a = toast.props, toastId = _a.toastId, onOpen = _a.onOpen, updateId = _a.updateId, children = _a.children; + var isNew = updateId == null; + if (toast.staleId) + toasts.delete(toast.staleId); + toasts.set(toastId, toast); + activeToasts = __spreadArray(__spreadArray([], activeToasts, true), [toast.props.toastId], false).filter(function (v) { return v !== toast.staleId; }); + notify(); + dispatchChanges(toToastItem(toast, isNew ? 'added' : 'updated')); + if (isNew && isFn(onOpen)) + onOpen(isValidElement(children) && children.props); + }; + var buildToast = function (content, options) { + if (shouldIgnoreToast(options)) + return; + var toastId = options.toastId, updateId = options.updateId, data = options.data, staleId = options.staleId, delay = options.delay; + var closeToast = function () { + removeToast(toastId); + }; + var isNotAnUpdate = updateId == null; + if (isNotAnUpdate) + toastCount++; + var toastProps = __assign(__assign(__assign(__assign({}, props), { style: props.toastStyle, key: toastKey++ }), Object.fromEntries(Object.entries(options).filter(function (_a) { + var _ = _a[0], v = _a[1]; + return v != null; + }))), { toastId: toastId, updateId: updateId, data: data, closeToast: closeToast, isIn: false, className: parseClassName(options.className || props.toastClassName), bodyClassName: parseClassName(options.bodyClassName || props.bodyClassName), progressClassName: parseClassName(options.progressClassName || props.progressClassName), autoClose: options.isLoading + ? false + : getAutoCloseDelay(options.autoClose, props.autoClose), deleteToast: function () { + var toastToRemove = toasts.get(toastId); + var _a = toastToRemove.props, onClose = _a.onClose, children = _a.children; + if (isFn(onClose)) + onClose(isValidElement(children) && children.props); + dispatchChanges(toToastItem(toastToRemove, 'removed')); + toasts.delete(toastId); + toastCount--; + if (toastCount < 0) + toastCount = 0; + if (queue.length > 0) { + addActiveToast(queue.shift()); + return; + } + notify(); + } }); + toastProps.closeButton = props.closeButton; + if (options.closeButton === false || canBeRendered(options.closeButton)) { + toastProps.closeButton = options.closeButton; + } + else if (options.closeButton === true) { + toastProps.closeButton = canBeRendered(props.closeButton) + ? props.closeButton + : true; + } + var toastContent = content; + if (isValidElement(content) && !isStr(content.type)) { + toastContent = cloneElement(content, { + closeToast: closeToast, + toastProps: toastProps, + data: data + }); + } + else if (isFn(content)) { + toastContent = content({ closeToast: closeToast, toastProps: toastProps, data: data }); + } + var activeToast = { + content: toastContent, + props: toastProps, + staleId: staleId + }; + // not handling limit + delay by design. Waiting for user feedback first + if (props.limit && + props.limit > 0 && + toastCount > props.limit && + isNotAnUpdate) { + queue.push(activeToast); + } + else if (isNum(delay)) { + setTimeout(function () { + addActiveToast(activeToast); + }, delay); + } + else { + addActiveToast(activeToast); + } + }; + return { + id: id, + props: props, + observe: observe, + toggle: toggle, + removeToast: removeToast, + toasts: toasts, + clearQueue: clearQueue, + buildToast: buildToast, + setProps: function (p) { + props = p; + }, + setToggle: function (id, fn) { + toasts.get(id).toggle = fn; + }, + isToastActive: function (id) { return activeToasts.some(function (v) { return v === id; }); }, + getSnapshot: function () { return (props.newestOnTop ? snapshot.reverse() : snapshot); } + }; +} +//# sourceMappingURL=containerObserver.js.map \ No newline at end of file diff --git a/src/core/containerObserver.js.map b/src/core/containerObserver.js.map new file mode 100644 index 00000000..060cabf9 --- /dev/null +++ b/src/core/containerObserver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"containerObserver.js","sourceRoot":"","sources":["containerObserver.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/core/containerObserver.ts b/src/core/containerObserver.ts index f6e69dbe..86f00f2a 100644 --- a/src/core/containerObserver.ts +++ b/src/core/containerObserver.ts @@ -65,7 +65,6 @@ export function createContainerObserver( }: NotValidatedToastProps) => { const containerMismatch = containerId ? containerId !== id : id !== 1; const isDuplicate = toasts.has(toastId) && updateId == null; - return containerMismatch || isDuplicate; }; diff --git a/src/core/genToastId.d.ts b/src/core/genToastId.d.ts new file mode 100644 index 00000000..c17e9035 --- /dev/null +++ b/src/core/genToastId.d.ts @@ -0,0 +1 @@ +export declare const genToastId: () => string; diff --git a/src/core/genToastId.js b/src/core/genToastId.js new file mode 100644 index 00000000..4579721f --- /dev/null +++ b/src/core/genToastId.js @@ -0,0 +1,3 @@ +var TOAST_ID = 1; +export var genToastId = function () { return "".concat(TOAST_ID++); }; +//# sourceMappingURL=genToastId.js.map \ No newline at end of file diff --git a/src/core/genToastId.js.map b/src/core/genToastId.js.map new file mode 100644 index 00000000..dcc1d084 --- /dev/null +++ b/src/core/genToastId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"genToastId.js","sourceRoot":"","sources":["genToastId.ts"],"names":[],"mappings":"AAAA,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,MAAM,CAAC,IAAM,UAAU,GAAG,cAAM,OAAA,UAAG,QAAQ,EAAE,CAAE,EAAf,CAAe,CAAC"} \ No newline at end of file diff --git a/src/core/index.d.ts b/src/core/index.d.ts new file mode 100644 index 00000000..7ff6d415 --- /dev/null +++ b/src/core/index.d.ts @@ -0,0 +1 @@ +export * from './toast'; diff --git a/src/core/index.js b/src/core/index.js new file mode 100644 index 00000000..f57cb58e --- /dev/null +++ b/src/core/index.js @@ -0,0 +1,2 @@ +export * from './toast'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/core/index.js.map b/src/core/index.js.map new file mode 100644 index 00000000..ed240185 --- /dev/null +++ b/src/core/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/src/core/store.d.ts b/src/core/store.d.ts new file mode 100644 index 00000000..a754094a --- /dev/null +++ b/src/core/store.d.ts @@ -0,0 +1,31 @@ +import { Id, NotValidatedToastProps, OnChangeCallback, ToastContainerProps, ToastContent, ToastOptions } from '../types'; +interface ClearWaitingQueueParams { + containerId?: Id; +} +interface RemoveParams { + id?: Id; + containerId: Id; +} +export declare const getToast: (id: Id, { containerId }: ToastOptions) => import("../types").Toast | undefined; +export declare function isToastActive(id: Id, containerId?: Id): boolean; +export declare function removeToast(params?: Id | RemoveParams): void; +export declare function clearWaitingQueue(p?: ClearWaitingQueueParams): void; +export declare function pushToast(content: ToastContent, options: NotValidatedToastProps): void; +interface ToggleToastParams { + id?: Id; + containerId?: Id; +} +type RegisterToggleOpts = { + id: Id; + containerId?: Id; + fn: (v: boolean) => void; +}; +export declare function registerToggle(opts: RegisterToggleOpts): void; +export declare function toggleToast(v: boolean, opt?: ToggleToastParams): void; +export declare function registerContainer(props: ToastContainerProps): { + subscribe(notify: () => void): () => void; + setProps(p: ToastContainerProps): void; + getSnapshot(): import("../types").Toast[] | undefined; +}; +export declare function onChange(cb: OnChangeCallback): () => void; +export {}; diff --git a/src/core/store.js b/src/core/store.js new file mode 100644 index 00000000..61a6b7a7 --- /dev/null +++ b/src/core/store.js @@ -0,0 +1,108 @@ +import { canBeRendered, isId } from '../utils'; +import { createContainerObserver } from './containerObserver'; +var containers = new Map(); +var renderQueue = []; +var listeners = new Set(); +var dispatchChanges = function (data) { return listeners.forEach(function (cb) { return cb(data); }); }; +var hasContainers = function () { return containers.size > 0; }; +function flushRenderQueue() { + renderQueue.forEach(function (v) { return pushToast(v.content, v.options); }); + renderQueue = []; +} +export var getToast = function (id, _a) { + var _b; + var containerId = _a.containerId; + return (_b = containers.get(containerId || 1 /* Default.CONTAINER_ID */)) === null || _b === void 0 ? void 0 : _b.toasts.get(id); +}; +export function isToastActive(id, containerId) { + var _a; + if (containerId) + return !!((_a = containers.get(containerId)) === null || _a === void 0 ? void 0 : _a.isToastActive(id)); + var isActive = false; + containers.forEach(function (c) { + if (c.isToastActive(id)) + isActive = true; + }); + return isActive; +} +export function removeToast(params) { + if (!hasContainers()) { + renderQueue = renderQueue.filter(function (v) { return params != null && v.options.toastId !== params; }); + return; + } + if (params == null || isId(params)) { + containers.forEach(function (c) { + c.removeToast(params); + }); + } + else if (params && ('containerId' in params || 'id' in params)) { + var container = containers.get(params.containerId); + container + ? container.removeToast(params.id) + : containers.forEach(function (c) { + c.removeToast(params.id); + }); + } +} +export function clearWaitingQueue(p) { + if (p === void 0) { p = {}; } + containers.forEach(function (c) { + if (c.props.limit && (!p.containerId || c.id === p.containerId)) { + c.clearQueue(); + } + }); +} +export function pushToast(content, options) { + if (!canBeRendered(content)) + return; + if (!hasContainers()) + renderQueue.push({ content: content, options: options }); + containers.forEach(function (c) { + c.buildToast(content, options); + }); +} +export function registerToggle(opts) { + var _a; + (_a = containers + .get(opts.containerId || 1 /* Default.CONTAINER_ID */)) === null || _a === void 0 ? void 0 : _a.setToggle(opts.id, opts.fn); +} +export function toggleToast(v, opt) { + containers.forEach(function (c) { + if (opt == null || !(opt === null || opt === void 0 ? void 0 : opt.containerId)) { + c.toggle(v, opt === null || opt === void 0 ? void 0 : opt.id); + } + else if ((opt === null || opt === void 0 ? void 0 : opt.containerId) === c.id) { + c.toggle(v, opt === null || opt === void 0 ? void 0 : opt.id); + } + }); +} +export function registerContainer(props) { + var id = props.containerId || 1 /* Default.CONTAINER_ID */; + return { + subscribe: function (notify) { + var container = createContainerObserver(id, props, dispatchChanges); + containers.set(id, container); + var unobserve = container.observe(notify); + flushRenderQueue(); + return function () { + unobserve(); + containers.delete(id); + }; + }, + setProps: function (p) { + var _a; + (_a = containers.get(id)) === null || _a === void 0 ? void 0 : _a.setProps(p); + }, + getSnapshot: function () { + var _a; + return (_a = containers.get(id)) === null || _a === void 0 ? void 0 : _a.getSnapshot(); + } + }; +} +export function onChange(cb) { + listeners.add(cb); + return function () { + listeners.delete(cb); + }; +} +//# sourceMappingURL=store.js.map \ No newline at end of file diff --git a/src/core/store.js.map b/src/core/store.js.map new file mode 100644 index 00000000..f81c213a --- /dev/null +++ b/src/core/store.js.map @@ -0,0 +1 @@ +{"version":3,"file":"store.js","sourceRoot":"","sources":["store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/core/toast.cy.d.ts b/src/core/toast.cy.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/src/core/toast.cy.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/src/core/toast.cy.js b/src/core/toast.cy.js new file mode 100644 index 00000000..c78d7bf6 --- /dev/null +++ b/src/core/toast.cy.js @@ -0,0 +1,445 @@ +import React from 'react'; +import { ToastContainer } from '../components'; +import { toast } from './toast'; +beforeEach(function () { + cy.viewport('macbook-15'); +}); +describe('without container', function () { + it('enqueue toasts till container is mounted', function () { + toast('msg1'); + toast('msg2'); + cy.findByText('msg1').should('not.exist'); + cy.findByText('msg2').should('not.exist'); + cy.mount(React.createElement(ToastContainer, { autoClose: false })); + cy.resolveEntranceAnimation(); + cy.findByText('msg1').should('exist'); + cy.findByText('msg2').should('exist'); + }); + it('remove toast from render queue', function () { + toast('msg1'); + var id = toast('msg2'); + toast.dismiss(id); + cy.mount(React.createElement(ToastContainer, { autoClose: false })); + cy.resolveEntranceAnimation(); + cy.findByText('msg1').should('exist'); + cy.findByText('msg2').should('not.exist'); + }); +}); +describe('with container', function () { + beforeEach(function () { + cy.mount(React.createElement(ToastContainer, { autoClose: false, closeOnClick: true })); + }); + it('render toast', function () { + toast('msg'); + cy.resolveEntranceAnimation(); + cy.findByText('msg').should('exist').click().should('not.exist'); + }); + it('return a new id each time a notification is pushed', function () { + var firstId = toast('Hello'); + var secondId = toast('Hello'); + expect(firstId).not.to.be.eq(secondId); + }); + it('use the provided toastId from options', function () { + var toastId = 11; + var id = toast('Hello', { toastId: toastId }); + expect(id).to.be.eq(toastId); + }); + it('handle change event', function () { + toast.onChange(cy.stub().as('onChange')); + var id = toast('msg', { data: 'xxxx' }); + cy.get('@onChange').should('have.been.calledWithMatch', { + status: 'added', + content: 'msg', + data: 'xxxx' + }); + toast.update(id, { + render: 'world' + }); + cy.get('@onChange').should('have.been.calledWithMatch', { + status: 'updated', + content: 'world' + }); + toast.dismiss(id); + cy.get('@onChange').should('have.been.calledWithMatch', { + status: 'removed' + }); + }); + it('unsubscribe from change event', function () { + var unsub = toast.onChange(cy.stub().as('onChange')); + unsub(); + toast('msg'); + cy.get('@onChange').should('not.have.been.called'); + }); + it('be able remove toast programmatically', function () { + var id = toast('msg'); + cy.findByText('msg').should('exist'); + toast.dismiss(id); + cy.findByText('msg').should('not.exist'); + }); + it('pause and resume notification', function () { + var id = toast('msg', { + autoClose: 10000 + }); + cy.findByRole('progressbar').as('progressBar'); + cy.get('@progressBar') + .should('have.attr', 'style') + .and('include', 'animation-play-state: running') + .then(function () { + toast.pause({ id: id }); + cy.get('@progressBar') + .should('have.attr', 'style') + .and('include', 'animation-play-state: paused') + .then(function () { + toast.play({ id: id }); + cy.get('@progressBar') + .should('have.attr', 'style') + .and('include', 'animation-play-state: running'); + }); + }); + }); + describe('update function', function () { + it('update an existing toast', function () { + var id = toast('msg'); + cy.resolveEntranceAnimation(); + cy.findByText('msg') + .should('exist') + .then(function () { + toast.update(id, { + render: 'foobar' + }); + cy.findByText('msg').should('not.exist'); + cy.findByText('foobar').should('exist'); + }) + .then(function () { + toast.update(id, { + render: 'bazbar' + }); + cy.findByText('foobar').should('not.exist'); + cy.findByText('bazbar').should('exist'); + }); + }); + it('keep the same content', function () { + var id = toast('msg'); + cy.resolveEntranceAnimation(); + cy.findByText('msg').should('exist'); + cy.get('.myClass') + .should('not.exist') + .then(function () { + toast.update(id, { + className: 'myClass' + }); + cy.get('.myClass').should('exist'); + cy.findByText('msg').should('exist'); + }); + }); + it('update a toast only when it exists', function () { + toast.update(0, { + render: 'msg' + }); + cy.resolveEntranceAnimation(); + cy.findByText('msg').should('not.exist'); + }); + it('update the toastId', function () { + var id = toast('msg'); + var nextId = 123; + cy.resolveEntranceAnimation(); + cy.findByText('msg') + .should('exist') + .then(function () { + expect(toast.isActive(id)).to.be.true; + toast.update(id, { + render: 'foobar', + toastId: nextId + }); + }); + cy.findByText('foobar') + .should('exist') + .then(function () { + expect(toast.isActive(id)).to.be.false; + expect(toast.isActive(nextId)).to.be.true; + }); + }); + }); + it('can append classNames', function () { + toast('msg', { + className: 'class1', + bodyClassName: 'class2', + progressClassName: 'class3' + }); + cy.get('.class1').should('exist'); + cy.get('.class2').should('exist'); + cy.get('.class3').should('exist'); + }); + it('uses syntactic sugar for different notification type', function () { + toast('default'); + toast.success('success'); + toast.error('error'); + toast.warning('warning'); + toast.info('info'); + toast.warn('warn'); + toast.dark('dark'); + cy.resolveEntranceAnimation(); + cy.findByText('default').should('exist'); + cy.findByText('success').should('exist'); + cy.findByText('error').should('exist'); + cy.findByText('warning').should('exist'); + cy.findByText('info').should('exist'); + cy.findByText('warn').should('exist'); + cy.findByText('dark').should('exist'); + }); + it('handle controlled progress bar', function () { + var id = toast('msg', { + progress: 0.3 + }); + cy.resolveEntranceAnimation(); + cy.findByRole('progressbar') + .should('have.attr', 'style') + .and('include', 'scaleX(0.3)') + .then(function () { + toast.done(id); + cy.findByRole('progressbar') + .should('have.attr', 'style') + .and('include', 'scaleX(1)'); + }); + }); + it('handle rejected promise', function () { + function rejectPromise() { + return new Promise(function (_, reject) { + setTimeout(function () { + reject(new Error('oops')); + }, 2000); + }); + } + toast.promise(rejectPromise, { + pending: 'loading', + error: { + render: function (props) { + var _a; + return React.createElement(React.Fragment, null, (_a = props.data) === null || _a === void 0 ? void 0 : _a.message); + } + } + }); + cy.resolveEntranceAnimation(); + cy.findByText('loading').should('exist'); + cy.wait(2000); + cy.findByText('loading').should('not.exist'); + cy.findByText('oops').should('exist'); + }); + it('handle resolved promise', function () { + function resolvePromise() { + return new Promise(function (resolve, _) { + setTimeout(function () { + resolve('it worked'); + }, 2000); + }); + } + toast.promise(resolvePromise, { + pending: 'loading', + success: { + render: function (props) { + return React.createElement(React.Fragment, null, props.data); + } + } + }); + cy.resolveEntranceAnimation(); + cy.findByText('loading').should('exist'); + cy.wait(2000); + cy.findByText('loading').should('not.exist'); + cy.findByText('it worked').should('exist'); + }); + it('support onOpen and onClose callback', function () { + var id = toast('msg', { + onOpen: cy.stub().as('onOpen'), + onClose: cy.stub().as('onClose') + }); + cy.resolveEntranceAnimation(); + cy.get('@onOpen').should('have.been.calledOnce'); + toast.dismiss(id); + cy.get('@onClose').should('have.been.calledOnce'); + }); + it('remove all toasts', function () { + toast('msg1'); + toast('msg2'); + cy.resolveEntranceAnimation(); + cy.findByText('msg1').should('exist'); + cy.findByText('msg2') + .should('exist') + .then(function () { + toast.dismiss(); + cy.findByText('msg1').should('not.exist'); + cy.findByText('msg2').should('not.exist'); + }); + }); +}); +describe('with multi containers', function () { + var Containers = { + First: 'first', + Second: 'second', + Third: 'third' + }; + beforeEach(function () { + cy.mount(React.createElement(React.Fragment, null, + React.createElement(ToastContainer, { autoClose: false, position: "top-left", limit: 1, containerId: Containers.First, closeOnClick: true }), + React.createElement(ToastContainer, { autoClose: false, position: "top-right", limit: 1, containerId: Containers.Second, closeOnClick: true }), + React.createElement(ToastContainer, { autoClose: false, position: "bottom-right", limit: 10, containerId: Containers.Third, closeOnClick: true }))); + }); + it('update a toast even when using multi containers', function () { + toast('first container', { + containerId: Containers.First + }); + var id = toast('second container', { + containerId: Containers.Second + }); + cy.resolveEntranceAnimation(); + cy.findByText('first container').should('exist'); + cy.findByText('second container') + .should('exist') + .then(function () { + toast.update(id, { + render: 'second container updated', + containerId: Containers.Second + }); + cy.findByText('second container updated').should('exist'); + }); + }); + it('remove toast for a given container', function () { + var toastId = '123'; + toast('first container', { + toastId: toastId, + containerId: Containers.First + }); + toast('second container', { + toastId: toastId, + containerId: Containers.Second + }); + cy.resolveEntranceAnimation(); + cy.findByText('first container').should('exist'); + cy.findByText('second container') + .should('exist') + .then(function () { + toast.dismiss({ + containerId: Containers.Second, + id: toastId + }); + cy.findByText('first container').should('exist'); + cy.findByText('second container').should('not.exist'); + }); + }); + it('remove all toasts for a given container', function () { + var toastId = '123'; + toast('first container', { + toastId: toastId, + containerId: Containers.First + }); + toast('third container', { + toastId: toastId, + containerId: Containers.Third + }); + toast('third container second toast', { + containerId: Containers.Third + }); + cy.resolveEntranceAnimation(); + cy.findByText('first container').should('exist'); + cy.findByText('third container second toast').should('exist'); + cy.findByText('third container') + .should('exist') + .then(function () { + toast.dismiss({ + containerId: Containers.Third + }); + cy.resolveEntranceAnimation(); + cy.findByText('first container').should('exist'); + cy.findByText('third container').should('not.exist'); + cy.findByText('third container second toast').should('not.exist'); + cy.findByText('first container') + .should('exist') + .then(function () { + toast.dismiss({ containerId: 'Non-Existing Container Id' }); + cy.findByText('first container').should('not.exist'); + cy.findByText('third container').should('not.exist'); + }); + }); + }); + it('clear waiting queue for a given container', function () { + toast('msg1-c1', { + containerId: Containers.First + }); + toast('msg2-c1', { + containerId: Containers.First + }); + toast('msg1-c2', { + containerId: Containers.Second + }); + toast('msg2-c2', { + containerId: Containers.Second + }); + cy.resolveEntranceAnimation(); + cy.findByText('msg2-c1').should('not.exist'); + cy.findByText('msg2-c2').should('not.exist'); + cy.findByText('msg1-c1').should('exist'); + cy.findByText('msg1-c2').should('exist'); + cy.findByText('msg1-c1').then(function () { + toast.clearWaitingQueue({ containerId: Containers.First }); + cy.findByText('msg1-c1') + .click() + .then(function () { + cy.resolveEntranceAnimation(); + cy.findByText('msg1-c1').should('not.exist'); + cy.findByText('msg2-c1').should('not.exist'); + }); + }); + }); + describe('with limit', function () { + beforeEach(function () { + cy.mount(React.createElement(ToastContainer, { autoClose: false, limit: 2, closeOnClick: true })); + }); + it('limit the number of toast displayed', function () { + toast('msg1'); + toast('msg2'); + toast('msg3'); + cy.resolveEntranceAnimation(); + cy.findByText('msg3').should('not.exist'); + cy.findByText('msg1').should('exist'); + cy.findByText('msg2') + .should('exist') + .click() + .then(function () { + cy.resolveEntranceAnimation(); + cy.findByText('msg3').should('exist'); + }); + }); + it('clear waiting queue', function () { + toast('msg1'); + toast('msg2'); + toast('msg3'); + cy.resolveEntranceAnimation(); + cy.findByText('msg3').should('not.exist'); + cy.findByText('msg1').should('exist'); + cy.findByText('msg2') + .should('exist') + .then(function () { + toast.clearWaitingQueue(); + cy.findByText('msg2') + .click() + .then(function () { + cy.resolveEntranceAnimation(); + cy.findByText('msg3').should('not.exist'); + }); + }); + }); + }); +}); +describe('with stacked container', function () { + beforeEach(function () { + cy.mount(React.createElement(ToastContainer, { autoClose: false, stacked: true })); + }); + it('render toasts', function () { + toast('hello 1'); + toast('hello 2'); + toast('hello 3'); + cy.findByText('hello 1').should('exist').and('not.be.visible'); + cy.findByText('hello 2').should('exist').and('not.be.visible'); + cy.findByText('hello 3').should('exist').and('be.visible'); + }); +}); +//# sourceMappingURL=toast.cy.js.map \ No newline at end of file diff --git a/src/core/toast.cy.js.map b/src/core/toast.cy.js.map new file mode 100644 index 00000000..4b74f4b3 --- /dev/null +++ b/src/core/toast.cy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"toast.cy.js","sourceRoot":"","sources":["toast.cy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,UAAU,CAAC;IACT,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE;IAC5B,EAAE,CAAC,0CAA0C,EAAE;QAC7C,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE1C,EAAE,CAAC,KAAK,CAAC,oBAAC,cAAc,IAAC,SAAS,EAAE,KAAK,GAAI,CAAC,CAAC;QAE/C,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE;QACnC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAElB,EAAE,CAAC,KAAK,CAAC,oBAAC,cAAc,IAAC,SAAS,EAAE,KAAK,GAAI,CAAC,CAAC;QAC/C,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAE9B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE;IACzB,UAAU,CAAC;QACT,EAAE,CAAC,KAAK,CAAC,oBAAC,cAAc,IAAC,SAAS,EAAE,KAAK,EAAE,YAAY,SAAG,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE;QACjB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE;QACvD,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE;QAC1C,IAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAM,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;QAEvC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE;QACxB,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAEzC,IAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,2BAA2B,EAAE;YACtD,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;YACf,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,2BAA2B,EAAE;YACtD,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClB,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,2BAA2B,EAAE;YACtD,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE;QAClC,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,KAAK,EAAE,CAAC;QACR,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE;QAC1C,IAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAExB,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAErC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAElB,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE;QAClC,IAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE;YACtB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;QAE/C,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;aACnB,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;aAC5B,GAAG,CAAC,SAAS,EAAE,+BAA+B,CAAC;aAC/C,IAAI,CAAC;YACJ,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,IAAA,EAAE,CAAC,CAAC;YACpB,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;iBACnB,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;iBAC5B,GAAG,CAAC,SAAS,EAAE,8BAA8B,CAAC;iBAC9C,IAAI,CAAC;gBACJ,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAA,EAAE,CAAC,CAAC;gBAEnB,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;qBACnB,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;qBAC5B,GAAG,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,EAAE,CAAC,0BAA0B,EAAE;YAC7B,IAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAExB,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAC9B,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;iBACjB,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC;gBACJ,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;oBACf,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;gBAEH,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACzC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC,CAAC;iBACD,IAAI,CAAC;gBACJ,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;oBACf,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC5C,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE;YAC1B,IAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAExB,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAC9B,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;iBACf,MAAM,CAAC,WAAW,CAAC;iBACnB,IAAI,CAAC;gBACJ,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;oBACf,SAAS,EAAE,SAAS;iBACrB,CAAC,CAAC;gBAEH,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE;YACvC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;gBACd,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAC9B,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE;YACvB,IAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACxB,IAAM,MAAM,GAAG,GAAG,CAAC;YAEnB,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAE9B,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;iBACjB,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC;gBACJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;gBACtC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;oBACf,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,MAAM;iBAChB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEL,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC;gBACJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC5C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE;QAC1B,KAAK,CAAC,KAAK,EAAE;YACX,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,QAAQ;YACvB,iBAAiB,EAAE,QAAQ;SAC5B,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE;QACzD,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnB,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAE9B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE;QACnC,IAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE;YACtB,QAAQ,EAAE,GAAG;SACd,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;aACzB,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;aAC5B,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC;aAC7B,IAAI,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;iBACzB,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;iBAC5B,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE;QAC5B,SAAS,aAAa;YACpB,OAAO,IAAI,OAAO,CAAC,UAAC,CAAC,EAAE,MAAM;gBAC3B,UAAU,CAAC;oBACT,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5B,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO,CAAiB,aAAa,EAAE;YAC3C,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE;gBACL,MAAM,YAAC,KAAK;;oBACV,OAAO,0CAAG,MAAA,KAAK,CAAC,IAAI,0CAAE,OAAO,CAAI,CAAC;gBACpC,CAAC;aACF;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE;QAC5B,SAAS,cAAc;YACrB,OAAO,IAAI,OAAO,CAAS,UAAC,OAAO,EAAE,CAAC;gBACpC,UAAU,CAAC;oBACT,OAAO,CAAC,WAAW,CAAC,CAAC;gBACvB,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO,CAAS,cAAc,EAAE;YACpC,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE;gBACP,MAAM,YAAC,KAAK;oBACV,OAAO,0CAAG,KAAK,CAAC,IAAI,CAAI,CAAC;gBAC3B,CAAC;aACF;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE;QACxC,IAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE;YACtB,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;YAC9B,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;SACjC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAE9B,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACjD,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClB,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE;QACtB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aAClB,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC;YACJ,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1C,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE;IAChC,IAAM,UAAU,GAAG;QACjB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;KACf,CAAC;IAEF,UAAU,CAAC;QACT,EAAE,CAAC,KAAK,CACN;YACE,oBAAC,cAAc,IACb,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAE,CAAC,EACR,WAAW,EAAE,UAAU,CAAC,KAAK,EAC7B,YAAY,SACZ;YACF,oBAAC,cAAc,IACb,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAC,WAAW,EACpB,KAAK,EAAE,CAAC,EACR,WAAW,EAAE,UAAU,CAAC,MAAM,EAC9B,YAAY,SACZ;YACF,oBAAC,cAAc,IACb,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,EAAE,EACT,WAAW,EAAE,UAAU,CAAC,KAAK,EAC7B,YAAY,SACZ,CACD,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE;QACpD,KAAK,CAAC,iBAAiB,EAAE;YACvB,WAAW,EAAE,UAAU,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,IAAM,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE;YACnC,WAAW,EAAE,UAAU,CAAC,MAAM;SAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAE9B,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;aAC9B,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC;YACJ,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;gBACf,MAAM,EAAE,0BAA0B;gBAClC,WAAW,EAAE,UAAU,CAAC,MAAM;aAC/B,CAAC,CAAC;YAEH,EAAE,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE;QACvC,IAAM,OAAO,GAAG,KAAK,CAAC;QAEtB,KAAK,CAAC,iBAAiB,EAAE;YACvB,OAAO,SAAA;YACP,WAAW,EAAE,UAAU,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,kBAAkB,EAAE;YACxB,OAAO,SAAA;YACP,WAAW,EAAE,UAAU,CAAC,MAAM;SAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAE9B,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;aAC9B,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC;YACJ,KAAK,CAAC,OAAO,CAAC;gBACZ,WAAW,EAAE,UAAU,CAAC,MAAM;gBAC9B,EAAE,EAAE,OAAO;aACZ,CAAC,CAAC;YAEH,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjD,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE;QAC5C,IAAM,OAAO,GAAG,KAAK,CAAC;QAEtB,KAAK,CAAC,iBAAiB,EAAE;YACvB,OAAO,SAAA;YACP,WAAW,EAAE,UAAU,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,iBAAiB,EAAE;YACvB,OAAO,SAAA;YACP,WAAW,EAAE,UAAU,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,8BAA8B,EAAE;YACpC,WAAW,EAAE,UAAU,CAAC,KAAK;SAC9B,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAE9B,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,EAAE,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9D,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;aAC7B,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC;YACJ,KAAK,CAAC,OAAO,CAAC;gBACZ,WAAW,EAAE,UAAU,CAAC,KAAK;aAC9B,CAAC,CAAC;YAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAE9B,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjD,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrD,EAAE,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;iBAC7B,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC;gBACJ,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAE5D,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACrD,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE;QAC9C,KAAK,CAAC,SAAS,EAAE;YACf,WAAW,EAAE,UAAU,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,SAAS,EAAE;YACf,WAAW,EAAE,UAAU,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,SAAS,EAAE;YACf,WAAW,EAAE,UAAU,CAAC,MAAM;SAC/B,CAAC,CAAC;QACH,KAAK,CAAC,SAAS,EAAE;YACf,WAAW,EAAE,UAAU,CAAC,MAAM;SAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAE9B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE7C,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3D,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;iBACrB,KAAK,EAAE;iBACP,IAAI,CAAC;gBACJ,EAAE,CAAC,wBAAwB,EAAE,CAAC;gBAC9B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC7C,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE;QACrB,UAAU,CAAC;YACT,EAAE,CAAC,KAAK,CAAC,oBAAC,cAAc,IAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,SAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qCAAqC,EAAE;YACxC,KAAK,CAAC,MAAM,CAAC,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,CAAC;YACd,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAE9B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1C,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;iBAClB,MAAM,CAAC,OAAO,CAAC;iBACf,KAAK,EAAE;iBACP,IAAI,CAAC;gBACJ,EAAE,CAAC,wBAAwB,EAAE,CAAC;gBAC9B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE;YACxB,KAAK,CAAC,MAAM,CAAC,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,CAAC;YACd,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAE9B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1C,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;iBAClB,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC;gBACJ,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC1B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;qBAClB,KAAK,EAAE;qBACP,IAAI,CAAC;oBACJ,EAAE,CAAC,wBAAwB,EAAE,CAAC;oBAC9B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE;IACjC,UAAU,CAAC;QACT,EAAE,CAAC,KAAK,CAAC,oBAAC,cAAc,IAAC,SAAS,EAAE,KAAK,EAAE,OAAO,SAAG,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE;QAClB,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/D,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/D,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/src/core/toast.d.ts b/src/core/toast.d.ts new file mode 100644 index 00000000..ea995b76 --- /dev/null +++ b/src/core/toast.d.ts @@ -0,0 +1,35 @@ +import { Id, IdOpts, ToastContent, ToastOptions, UpdateOptions } from '../types'; +import { isToastActive } from './store'; +declare function toast(content: ToastContent, options?: ToastOptions): Id; +declare namespace toast { + var loading: (content: ToastContent, options?: ToastOptions | undefined) => Id; + var promise: typeof handlePromise; + var success: (content: ToastContent, options?: ToastOptions | undefined) => Id; + var info: (content: ToastContent, options?: ToastOptions | undefined) => Id; + var error: (content: ToastContent, options?: ToastOptions | undefined) => Id; + var warning: (content: ToastContent, options?: ToastOptions | undefined) => Id; + var warn: (content: ToastContent, options?: ToastOptions | undefined) => Id; + var dark: (content: ToastContent, options?: ToastOptions | undefined) => Id; + var dismiss: { + (params: RemoveParams): void; + (params?: Id | undefined): void; + }; + var clearWaitingQueue: typeof import("./store").clearWaitingQueue; + var isActive: typeof isToastActive; + var update: (toastId: Id, options?: UpdateOptions) => void; + var done: (id: Id) => void; + var onChange: typeof import("./store").onChange; + var play: (opts?: IdOpts | undefined) => void; + var pause: (opts?: IdOpts | undefined) => void; +} +export interface ToastPromiseParams { + pending?: string | UpdateOptions; + success?: string | UpdateOptions; + error?: string | UpdateOptions; +} +declare function handlePromise(promise: Promise | (() => Promise), { pending, error, success }: ToastPromiseParams, options?: ToastOptions): Promise; +interface RemoveParams { + id?: Id; + containerId: Id; +} +export { toast }; diff --git a/src/core/toast.js b/src/core/toast.js new file mode 100644 index 00000000..cae8b8d3 --- /dev/null +++ b/src/core/toast.js @@ -0,0 +1,306 @@ +import { __assign } from "tslib"; +import { isFn, isNum, isStr } from '../utils'; +import { genToastId } from './genToastId'; +import { clearWaitingQueue, getToast, isToastActive, onChange, pushToast, removeToast, toggleToast } from './store'; +/** + * Generate a toastId or use the one provided + */ +function getToastId(options) { + return options && (isStr(options.toastId) || isNum(options.toastId)) + ? options.toastId + : genToastId(); +} +/** + * If the container is not mounted, the toast is enqueued + */ +function dispatchToast(content, options) { + pushToast(content, options); + return options.toastId; +} +/** + * Merge provided options with the defaults settings and generate the toastId + */ +function mergeOptions(type, options) { + return __assign(__assign({}, options), { type: (options && options.type) || type, toastId: getToastId(options) }); +} +function createToastByType(type) { + return function (content, options) { return dispatchToast(content, mergeOptions(type, options)); }; +} +function toast(content, options) { + return dispatchToast(content, mergeOptions("default" /* Type.DEFAULT */, options)); +} +toast.loading = function (content, options) { + return dispatchToast(content, mergeOptions("default" /* Type.DEFAULT */, __assign({ isLoading: true, autoClose: false, closeOnClick: false, closeButton: false, draggable: false }, options))); +}; +function handlePromise(promise, _a, options) { + var pending = _a.pending, error = _a.error, success = _a.success; + var id; + if (pending) { + id = isStr(pending) + ? toast.loading(pending, options) + : toast.loading(pending.render, __assign(__assign({}, options), pending)); + } + var resetParams = { + isLoading: null, + autoClose: null, + closeOnClick: null, + closeButton: null, + draggable: null + }; + var resolver = function (type, input, result) { + // Remove the toast if the input has not been provided. This prevents the toast from hanging + // in the pending state if a success/error toast has not been provided. + if (input == null) { + toast.dismiss(id); + return; + } + var baseParams = __assign(__assign(__assign({ type: type }, resetParams), options), { data: result }); + var params = isStr(input) ? { render: input } : input; + // if the id is set we know that it's an update + if (id) { + toast.update(id, __assign(__assign({}, baseParams), params)); + } + else { + // using toast.promise without loading + toast(params.render, __assign(__assign({}, baseParams), params)); + } + return result; + }; + var p = isFn(promise) ? promise() : promise; + //call the resolvers only when needed + p.then(function (result) { return resolver('success', success, result); }).catch(function (err) { + return resolver('error', error, err); + }); + return p; +} +/** + * Supply a promise or a function that return a promise and the notification will be updated if it resolves or fails. + * When the promise is pending a spinner is displayed by default. + * `toast.promise` returns the provided promise so you can chain it. + * + * Simple example: + * + * ``` + * toast.promise(MyPromise, + * { + * pending: 'Promise is pending', + * success: 'Promise resolved 👌', + * error: 'Promise rejected 🤯' + * } + * ) + * + * ``` + * + * Advanced usage: + * ``` + * toast.promise<{name: string}, {message: string}, undefined>( + * resolveWithSomeData, + * { + * pending: { + * render: () => "I'm loading", + * icon: false, + * }, + * success: { + * render: ({data}) => `Hello ${data.name}`, + * icon: "🟢", + * }, + * error: { + * render({data}){ + * // When the promise reject, data will contains the error + * return + * } + * } + * } + * ) + * ``` + */ +toast.promise = handlePromise; +toast.success = createToastByType("success" /* Type.SUCCESS */); +toast.info = createToastByType("info" /* Type.INFO */); +toast.error = createToastByType("error" /* Type.ERROR */); +toast.warning = createToastByType("warning" /* Type.WARNING */); +toast.warn = toast.warning; +toast.dark = function (content, options) { + return dispatchToast(content, mergeOptions("default" /* Type.DEFAULT */, __assign({ theme: 'dark' }, options))); +}; +function dismiss(params) { + removeToast(params); +} +/** + * Remove toast programmatically + * + * - Remove all toasts: + * ``` + * toast.dismiss() + * ``` + * + * - Remove all toasts that belongs to a given container + * ``` + * toast.dismiss({ container: "123" }) + * ``` + * + * - Remove toast that has a given id regardless the container + * ``` + * toast.dismiss({ id: "123" }) + * ``` + * + * - Remove toast that has a given id for a specific container + * ``` + * toast.dismiss({ id: "123", containerId: "12" }) + * ``` + */ +toast.dismiss = dismiss; +/** + * Clear waiting queue when limit is used + */ +toast.clearWaitingQueue = clearWaitingQueue; +/** + * Check if a toast is active + * + * - Check regardless the container + * ``` + * toast.isActive("123") + * ``` + * + * - Check in a specific container + * ``` + * toast.isActive("123", "containerId") + * ``` + */ +toast.isActive = isToastActive; +/** + * Update a toast, see https://fkhadra.github.io/react-toastify/update-toast/ for more + * + * Example: + * ``` + * // With a string + * toast.update(toastId, { + * render: "New content", + * type: "info", + * }); + * + * // Or with a component + * toast.update(toastId, { + * render: MyComponent + * }); + * + * // Or a function + * toast.update(toastId, { + * render: () =>
New content
+ * }); + * + * // Apply a transition + * toast.update(toastId, { + * render: "New Content", + * type: toast.TYPE.INFO, + * transition: Rotate + * }) + * ``` + */ +toast.update = function (toastId, options) { + if (options === void 0) { options = {}; } + var toast = getToast(toastId, options); + if (toast) { + var oldOptions = toast.props, oldContent = toast.content; + var nextOptions = __assign(__assign(__assign({ delay: 100 }, oldOptions), options), { toastId: options.toastId || toastId, updateId: genToastId() }); + if (nextOptions.toastId !== toastId) + nextOptions.staleId = toastId; + var content = nextOptions.render || oldContent; + delete nextOptions.render; + dispatchToast(content, nextOptions); + } +}; +/** + * Used for controlled progress bar. It will automatically close the notification. + * + * If you don't want your notification to be clsoed when the timer is done you should use `toast.update` instead as follow instead: + * + * ``` + * toast.update(id, { + * progress: null, // remove controlled progress bar + * render: "ok", + * type: "success", + * autoClose: 5000 // set autoClose to the desired value + * }); + * ``` + */ +toast.done = function (id) { + toast.update(id, { + progress: 1 + }); +}; +/** + * Subscribe to change when a toast is added, removed and updated + * + * Usage: + * ``` + * const unsubscribe = toast.onChange((payload) => { + * switch (payload.status) { + * case "added": + * // new toast added + * break; + * case "updated": + * // toast updated + * break; + * case "removed": + * // toast has been removed + * break; + * } + * }) + * ``` + */ +toast.onChange = onChange; +/** + * Play a toast(s) timer progammatically + * + * Usage: + * + * - Play all toasts + * ``` + * toast.play() + * ``` + * + * - Play all toasts for a given container + * ``` + * toast.play({ containerId: "123" }) + * ``` + * + * - Play toast that has a given id regardless the container + * ``` + * toast.play({ id: "123" }) + * ``` + * + * - Play toast that has a given id for a specific container + * ``` + * toast.play({ id: "123", containerId: "12" }) + * ``` + */ +toast.play = function (opts) { return toggleToast(true, opts); }; +/** + * Pause a toast(s) timer progammatically + * + * Usage: + * + * - Pause all toasts + * ``` + * toast.pause() + * ``` + * + * - Pause all toasts for a given container + * ``` + * toast.pause({ containerId: "123" }) + * ``` + * + * - Pause toast that has a given id regardless the container + * ``` + * toast.pause({ id: "123" }) + * ``` + * + * - Pause toast that has a given id for a specific container + * ``` + * toast.pause({ id: "123", containerId: "12" }) + * ``` + */ +toast.pause = function (opts) { return toggleToast(false, opts); }; +export { toast }; +//# sourceMappingURL=toast.js.map \ No newline at end of file diff --git a/src/core/toast.js.map b/src/core/toast.js.map new file mode 100644 index 00000000..af02606d --- /dev/null +++ b/src/core/toast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"toast.js","sourceRoot":"","sources":["toast.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/hooks/index.d.ts b/src/hooks/index.d.ts new file mode 100644 index 00000000..33a8fe9a --- /dev/null +++ b/src/hooks/index.d.ts @@ -0,0 +1,2 @@ +export * from './useToastContainer'; +export * from './useToast'; diff --git a/src/hooks/index.js b/src/hooks/index.js new file mode 100644 index 00000000..5e050300 --- /dev/null +++ b/src/hooks/index.js @@ -0,0 +1,3 @@ +export * from './useToastContainer'; +export * from './useToast'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/hooks/index.js.map b/src/hooks/index.js.map new file mode 100644 index 00000000..147f9215 --- /dev/null +++ b/src/hooks/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/src/hooks/useIsomorphicLayoutEffect.d.ts b/src/hooks/useIsomorphicLayoutEffect.d.ts new file mode 100644 index 00000000..cd4df063 --- /dev/null +++ b/src/hooks/useIsomorphicLayoutEffect.d.ts @@ -0,0 +1,2 @@ +import { useEffect } from 'react'; +export declare const useIsomorphicLayoutEffect: typeof useEffect; diff --git a/src/hooks/useIsomorphicLayoutEffect.js b/src/hooks/useIsomorphicLayoutEffect.js new file mode 100644 index 00000000..fa0ca188 --- /dev/null +++ b/src/hooks/useIsomorphicLayoutEffect.js @@ -0,0 +1,3 @@ +import { useEffect, useLayoutEffect } from 'react'; +export var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; +//# sourceMappingURL=useIsomorphicLayoutEffect.js.map \ No newline at end of file diff --git a/src/hooks/useIsomorphicLayoutEffect.js.map b/src/hooks/useIsomorphicLayoutEffect.js.map new file mode 100644 index 00000000..21988266 --- /dev/null +++ b/src/hooks/useIsomorphicLayoutEffect.js.map @@ -0,0 +1 @@ +{"version":3,"file":"useIsomorphicLayoutEffect.js","sourceRoot":"","sources":["useIsomorphicLayoutEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAEnD,MAAM,CAAC,IAAM,yBAAyB,GACpC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC"} \ No newline at end of file diff --git a/src/hooks/useToast.d.ts b/src/hooks/useToast.d.ts new file mode 100644 index 00000000..5676314a --- /dev/null +++ b/src/hooks/useToast.d.ts @@ -0,0 +1,10 @@ +import { DOMAttributes } from 'react'; +import { ToastProps } from '../types'; +export declare function useToast(props: ToastProps): { + playToast: () => void; + pauseToast: () => void; + isRunning: boolean; + preventExitTransition: boolean; + toastRef: import("react").RefObject; + eventHandlers: DOMAttributes; +}; diff --git a/src/hooks/useToast.js b/src/hooks/useToast.js new file mode 100644 index 00000000..6ee0ab6b --- /dev/null +++ b/src/hooks/useToast.js @@ -0,0 +1,155 @@ +import { useEffect, useRef, useState } from 'react'; +import { registerToggle } from '../core/store'; +export function useToast(props) { + var _a = useState(false), isRunning = _a[0], setIsRunning = _a[1]; + var _b = useState(false), preventExitTransition = _b[0], setPreventExitTransition = _b[1]; + var toastRef = useRef(null); + var drag = useRef({ + start: 0, + delta: 0, + removalDistance: 0, + canCloseOnClick: true, + canDrag: false, + didMove: false + }).current; + var autoClose = props.autoClose, pauseOnHover = props.pauseOnHover, closeToast = props.closeToast, onClick = props.onClick, closeOnClick = props.closeOnClick; + registerToggle({ + id: props.toastId, + containerId: props.containerId, + fn: setIsRunning + }); + useEffect(function () { + if (props.pauseOnFocusLoss) { + bindFocusEvents(); + return function () { + unbindFocusEvents(); + }; + } + }, [props.pauseOnFocusLoss]); + function bindFocusEvents() { + if (!document.hasFocus()) + pauseToast(); + window.addEventListener('focus', playToast); + window.addEventListener('blur', pauseToast); + } + function unbindFocusEvents() { + window.removeEventListener('focus', playToast); + window.removeEventListener('blur', pauseToast); + } + function onDragStart(e) { + if (props.draggable === true || props.draggable === e.pointerType) { + bindDragEvents(); + var toast = toastRef.current; + drag.canCloseOnClick = true; + drag.canDrag = true; + toast.style.transition = 'none'; + if (props.draggableDirection === "x" /* Direction.X */) { + drag.start = e.clientX; + drag.removalDistance = + toast.offsetWidth * (props.draggablePercent / 100); + } + else { + drag.start = e.clientY; + drag.removalDistance = + (toast.offsetHeight * + (props.draggablePercent === 80 /* Default.DRAGGABLE_PERCENT */ + ? props.draggablePercent * 1.5 + : props.draggablePercent)) / + 100; + } + } + } + function onDragTransitionEnd(e) { + var _a = toastRef.current.getBoundingClientRect(), top = _a.top, bottom = _a.bottom, left = _a.left, right = _a.right; + if (e.nativeEvent.type !== 'touchend' && + props.pauseOnHover && + e.clientX >= left && + e.clientX <= right && + e.clientY >= top && + e.clientY <= bottom) { + pauseToast(); + } + else { + playToast(); + } + } + function playToast() { + setIsRunning(true); + } + function pauseToast() { + setIsRunning(false); + } + function bindDragEvents() { + drag.didMove = false; + document.addEventListener('pointermove', onDragMove); + document.addEventListener('pointerup', onDragEnd); + } + function unbindDragEvents() { + document.removeEventListener('pointermove', onDragMove); + document.removeEventListener('pointerup', onDragEnd); + } + function onDragMove(e) { + var toast = toastRef.current; + if (drag.canDrag && toast) { + drag.didMove = true; + if (isRunning) + pauseToast(); + if (props.draggableDirection === "x" /* Direction.X */) { + drag.delta = e.clientX - drag.start; + } + else { + drag.delta = e.clientY - drag.start; + } + // prevent false positive during a toast click + if (drag.start !== e.clientX) + drag.canCloseOnClick = false; + var translate = props.draggableDirection === 'x' + ? "".concat(drag.delta, "px, var(--y)") + : "0, calc(".concat(drag.delta, "px + var(--y))"); + toast.style.transform = "translate3d(".concat(translate, ",0)"); + toast.style.opacity = "".concat(1 - Math.abs(drag.delta / drag.removalDistance)); + } + } + function onDragEnd() { + unbindDragEvents(); + var toast = toastRef.current; + if (drag.canDrag && drag.didMove && toast) { + drag.canDrag = false; + if (Math.abs(drag.delta) > drag.removalDistance) { + setPreventExitTransition(true); + props.closeToast(); + props.collapseAll(); + return; + } + toast.style.transition = 'transform 0.2s, opacity 0.2s'; + toast.style.removeProperty('transform'); + toast.style.removeProperty('opacity'); + } + } + var eventHandlers = { + onPointerDown: onDragStart, + onPointerUp: onDragTransitionEnd + }; + if (autoClose && pauseOnHover) { + eventHandlers.onMouseEnter = pauseToast; + // progress control is delegated to the container + if (!props.stacked) + eventHandlers.onMouseLeave = playToast; + } + // prevent toast from closing when user drags the toast + if (closeOnClick) { + eventHandlers.onClick = function (e) { + onClick && onClick(e); + drag.canCloseOnClick && closeToast(); + }; + } + return { + playToast: playToast, + pauseToast: pauseToast, + isRunning: isRunning, + preventExitTransition: preventExitTransition, + toastRef: toastRef, + eventHandlers: eventHandlers + }; +} +//# sourceMappingURL=useToast.js.map \ No newline at end of file diff --git a/src/hooks/useToast.js.map b/src/hooks/useToast.js.map new file mode 100644 index 00000000..b7a1ccff --- /dev/null +++ b/src/hooks/useToast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"useToast.js","sourceRoot":"","sources":["useToast.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/hooks/useToastContainer.d.ts b/src/hooks/useToastContainer.d.ts new file mode 100644 index 00000000..ec054d87 --- /dev/null +++ b/src/hooks/useToastContainer.d.ts @@ -0,0 +1,7 @@ +import { isToastActive } from '../core/store'; +import { Toast, ToastContainerProps, ToastPosition } from '../types'; +export declare function useToastContainer(props: ToastContainerProps): { + getToastToRender: (cb: (position: ToastPosition, toastList: Toast[]) => T) => T[]; + isToastActive: typeof isToastActive; + count: number | undefined; +}; diff --git a/src/hooks/useToastContainer.js b/src/hooks/useToastContainer.js new file mode 100644 index 00000000..b5246823 --- /dev/null +++ b/src/hooks/useToastContainer.js @@ -0,0 +1,24 @@ +import { useRef, useSyncExternalStore } from 'react'; +import { isToastActive, registerContainer } from '../core/store'; +export function useToastContainer(props) { + var _a = useRef(registerContainer(props)).current, subscribe = _a.subscribe, getSnapshot = _a.getSnapshot, setProps = _a.setProps; + setProps(props); + var snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot); + function getToastToRender(cb) { + if (!snapshot) + return []; + var toRender = new Map(); + snapshot.forEach(function (toast) { + var position = toast.props.position; + toRender.has(position) || toRender.set(position, []); + toRender.get(position).push(toast); + }); + return Array.from(toRender, function (p) { return cb(p[0], p[1]); }); + } + return { + getToastToRender: getToastToRender, + isToastActive: isToastActive, + count: snapshot === null || snapshot === void 0 ? void 0 : snapshot.length + }; +} +//# sourceMappingURL=useToastContainer.js.map \ No newline at end of file diff --git a/src/hooks/useToastContainer.js.map b/src/hooks/useToastContainer.js.map new file mode 100644 index 00000000..238c60b8 --- /dev/null +++ b/src/hooks/useToastContainer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"useToastContainer.js","sourceRoot":"","sources":["useToastContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGjE,MAAM,UAAU,iBAAiB,CAAC,KAA0B;IACpD,IAAA,KAAuC,MAAM,CACjD,iBAAiB,CAAC,KAAK,CAAC,CACzB,CAAC,OAAO,EAFD,SAAS,eAAA,EAAE,WAAW,iBAAA,EAAE,QAAQ,cAE/B,CAAC;IACV,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChB,IAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE3E,SAAS,gBAAgB,CACvB,EAAsD;QAEtD,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,IAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEnD,QAAQ,CAAC,OAAO,CAAC,UAAA,KAAK;YACZ,IAAA,QAAQ,GAAK,KAAK,CAAC,KAAK,SAAhB,CAAiB;YACjC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACrD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAA,CAAC,IAAI,OAAA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAd,CAAc,CAAC,CAAC;IACnD,CAAC;IAED,OAAO;QACL,gBAAgB,kBAAA;QAChB,aAAa,eAAA;QACb,KAAK,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM;KACxB,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 00000000..9e18b19a --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,7 @@ +export { useToastContainer, useToast } from './hooks'; +export { cssTransition, collapseToast } from './utils'; +export { ToastContainer, Bounce, Flip, Slide, Zoom, Icons } from './components'; +export type { IconProps, CloseButton } from './components'; +export type { ToastPromiseParams } from './core'; +export { toast } from './core'; +export type { TypeOptions, Theme, ToastPosition, ToastContentProps, ToastContent, ToastTransition, ToastClassName, ClearWaitingQueueParams, DraggableDirection, ToastOptions, UpdateOptions, ToastContainerProps, ToastTransitionProps, Id, ToastItem } from './types'; diff --git a/src/index.js b/src/index.js new file mode 100644 index 00000000..7fd52895 --- /dev/null +++ b/src/index.js @@ -0,0 +1,5 @@ +export { useToastContainer, useToast } from './hooks'; +export { cssTransition, collapseToast } from './utils'; +export { ToastContainer, Bounce, Flip, Slide, Zoom, Icons } from './components'; +export { toast } from './core'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/index.js.map b/src/index.js.map new file mode 100644 index 00000000..1c4b85d2 --- /dev/null +++ b/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGhF,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC"} \ No newline at end of file diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 00000000..c244c2c9 --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1,284 @@ +import React from 'react'; +import { CloseButtonProps, IconProps } from './components'; +type Nullable = { + [P in keyof T]: T[P] | null; +}; +export type TypeOptions = 'info' | 'success' | 'warning' | 'error' | 'default'; +export type Theme = 'light' | 'dark' | 'colored' | (string & {}); +export type ToastPosition = 'top-right' | 'top-center' | 'top-left' | 'bottom-right' | 'bottom-center' | 'bottom-left'; +export interface ToastContentProps { + closeToast: () => void; + toastProps: ToastProps; + data: Data; +} +export type ToastContent = React.ReactNode | ((props: ToastContentProps) => React.ReactNode); +export type ToastIcon = false | ((props: IconProps) => React.ReactNode) | React.ReactElement; +export type Id = number | string; +export type ToastTransition = React.FC | React.ComponentClass; +/** + * ClassName for the elements - can take a function to build a classname or a raw string that is cx'ed to defaults + */ +export type ToastClassName = ((context?: { + type?: TypeOptions; + defaultClassName?: string; + position?: ToastPosition; + rtl?: boolean; +}) => string) | string; +export interface ClearWaitingQueueParams { + containerId?: Id; +} +export type ToastComeAndLeaveFrom = 'left' | 'right' | 'bottom' | 'top'; +export type DraggableDirection = 'x' | 'y'; +interface CommonOptions { + /** + * Pause the timer when the mouse hover the toast. + * `Default: true` + */ + pauseOnHover?: boolean; + /** + * Pause the toast when the window loses focus. + * `Default: true` + */ + pauseOnFocusLoss?: boolean; + /** + * Remove the toast when clicked. + * `Default: false` + */ + closeOnClick?: boolean; + /** + * Set the delay in ms to close the toast automatically. + * Use `false` to prevent the toast from closing. + * `Default: 5000` + */ + autoClose?: number | false; + /** + * Set the default position to use. + * `One of: 'top-right', 'top-center', 'top-left', 'bottom-right', 'bottom-center', 'bottom-left'` + * `Default: 'top-right'` + */ + position?: ToastPosition; + /** + * Pass a custom close button. + * To remove the close button pass `false` + */ + closeButton?: boolean | ((props: CloseButtonProps) => React.ReactNode) | React.ReactElement; + /** + * An optional css class to set for the progress bar. + */ + progressClassName?: ToastClassName; + /** + * An optional style to set for the progress bar. + */ + progressStyle?: React.CSSProperties; + /** + * An optional css class to set for the toast content. + */ + bodyClassName?: ToastClassName; + /** + * An optional inline style to apply for the toast content. + */ + bodyStyle?: React.CSSProperties; + /** + * Hide or show the progress bar. + * `Default: false` + */ + hideProgressBar?: boolean; + /** + * Pass a custom transition see https://fkhadra.github.io/react-toastify/custom-animation/ + */ + transition?: ToastTransition; + /** + * Allow toast to be draggable + * `Default: 'touch'` + */ + draggable?: boolean | 'mouse' | 'touch'; + /** + * The percentage of the toast's width it takes for a drag to dismiss a toast + * `Default: 80` + */ + draggablePercent?: number; + /** + * Specify in which direction should you swipe to dismiss the toast + * `Default: "x"` + */ + draggableDirection?: DraggableDirection; + /** + * Define the ARIA role for the toast + * `Default: alert` + * https://www.w3.org/WAI/PF/aria/roles + */ + role?: string; + /** + * Set id to handle multiple container + */ + containerId?: Id; + /** + * Fired when clicking inside toaster + */ + onClick?: (event: React.MouseEvent) => void; + /** + * Support right to left display. + * `Default: false` + */ + rtl?: boolean; + /** + * Used to display a custom icon. Set it to `false` to prevent + * the icons from being displayed + */ + icon?: ToastIcon; + /** + * Theme to use. + * `One of: 'light', 'dark', 'colored'` + * `Default: 'light'` + */ + theme?: Theme; +} +export interface ToastOptions extends CommonOptions { + /** + * An optional css class to set. + */ + className?: ToastClassName; + /** + * Called when toast is mounted. + */ + onOpen?: (props: T) => void; + /** + * Called when toast is unmounted. + */ + onClose?: (props: T) => void; + /** + * An optional inline style to apply. + */ + style?: React.CSSProperties; + /** + * Set the toast type. + * `One of: 'info', 'success', 'warning', 'error', 'default'` + */ + type?: TypeOptions; + /** + * Set a custom `toastId` + */ + toastId?: Id; + /** + * Used during update + */ + updateId?: Id; + /** + * Set the percentage for the controlled progress bar. `Value must be between 0 and 1.` + */ + progress?: number | string; + /** + * Add a delay in ms before the toast appear. + */ + delay?: number; + isLoading?: boolean; + data?: Data; + comeFrom?: ToastComeAndLeaveFrom; + leaveFrom?: ToastComeAndLeaveFrom; +} +export interface UpdateOptions extends Nullable> { + /** + * Used to update a toast. + * Pass any valid ReactNode(string, number, component) + */ + render?: ToastContent; +} +export interface ToastContainerProps extends CommonOptions { + /** + * An optional css class to set. + */ + className?: ToastClassName; + /** + * Will stack the toast with the newest on the top. + */ + stacked?: boolean; + /** + * Whether or not to display the newest toast on top. + * `Default: false` + */ + newestOnTop?: boolean; + /** + * An optional inline style to apply. + */ + style?: React.CSSProperties; + /** + * An optional inline style to apply for the toast. + */ + toastStyle?: React.CSSProperties; + /** + * An optional css class for the toast. + */ + toastClassName?: ToastClassName; + /** + * Limit the number of toast displayed at the same time + */ + limit?: number; +} +export interface ToastTransitionProps { + isIn: boolean; + done: () => void; + position: ToastPosition | string; + preventExitTransition: boolean; + nodeRef: React.RefObject; + children?: React.ReactNode; + playToast(): void; + comeFrom?: ToastComeAndLeaveFrom; + leaveFrom?: ToastComeAndLeaveFrom; +} +/** + * @INTERNAL + */ +export interface ToastProps extends ToastOptions { + isIn: boolean; + staleId?: Id; + toastId: Id; + key: Id; + transition: ToastTransition; + closeToast: () => void; + position: ToastPosition; + children?: ToastContent; + draggablePercent: number; + draggableDirection?: DraggableDirection; + progressClassName?: ToastClassName; + className?: ToastClassName; + bodyClassName?: ToastClassName; + deleteToast: () => void; + theme: Theme; + type: TypeOptions; + collapseAll: () => void; + stacked?: boolean; + comeFrom?: ToastComeAndLeaveFrom; + leaveFrom?: ToastComeAndLeaveFrom; +} +/** + * @INTERNAL + */ +export interface NotValidatedToastProps extends Partial { + toastId: Id; +} +/** + * @INTERNAL + */ +export interface Toast { + content: ToastContent; + props: ToastProps; + toggle?: (v: boolean) => void; +} +export type ToastItemStatus = 'added' | 'removed' | 'updated'; +export interface ToastItem { + content: ToastContent; + id: Id; + theme?: Theme; + type?: TypeOptions; + isLoading?: boolean; + containerId?: Id; + data: Data; + icon?: ToastIcon; + status: ToastItemStatus; +} +export type OnChangeCallback = (toast: ToastItem) => void; +export type IdOpts = { + id?: Id; + containerId?: Id; +}; +export {}; diff --git a/src/types.js b/src/types.js new file mode 100644 index 00000000..718fd38a --- /dev/null +++ b/src/types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/src/types.js.map b/src/types.js.map new file mode 100644 index 00000000..8da0887a --- /dev/null +++ b/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/src/types.ts b/src/types.ts index a7f2e5f1..2e30a42e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -17,6 +17,9 @@ export type ToastPosition = | 'bottom-center' | 'bottom-left'; + + + export interface ToastContentProps { closeToast: () => void; toastProps: ToastProps; @@ -54,6 +57,8 @@ export interface ClearWaitingQueueParams { containerId?: Id; } +export type ToastComeAndLeaveFrom = 'left' | 'right' | 'bottom' | 'top'; + export type DraggableDirection = 'x' | 'y'; interface CommonOptions { @@ -235,6 +240,10 @@ export interface ToastOptions extends CommonOptions { isLoading?: boolean; data?: Data; + + comeFrom?: ToastComeAndLeaveFrom; + + leaveFrom?:ToastComeAndLeaveFrom; } export interface UpdateOptions extends Nullable> { @@ -281,6 +290,8 @@ export interface ToastContainerProps extends CommonOptions { * Limit the number of toast displayed at the same time */ limit?: number; + + } export interface ToastTransitionProps { @@ -291,6 +302,8 @@ export interface ToastTransitionProps { nodeRef: React.RefObject; children?: React.ReactNode; playToast(): void; + comeFrom?: ToastComeAndLeaveFrom + leaveFrom?: ToastComeAndLeaveFrom; } /** @@ -315,6 +328,8 @@ export interface ToastProps extends ToastOptions { type: TypeOptions; collapseAll: () => void; stacked?: boolean; + comeFrom?: ToastComeAndLeaveFrom; + leaveFrom?:ToastComeAndLeaveFrom; } /** diff --git a/src/utils/collapseToast.d.ts b/src/utils/collapseToast.d.ts new file mode 100644 index 00000000..456f2b15 --- /dev/null +++ b/src/utils/collapseToast.d.ts @@ -0,0 +1,5 @@ +import { Default } from './constant'; +/** + * Used to collapse toast after exit animation + */ +export declare function collapseToast(node: HTMLElement, done: () => void, duration?: Default): void; diff --git a/src/utils/collapseToast.js b/src/utils/collapseToast.js new file mode 100644 index 00000000..a995e06e --- /dev/null +++ b/src/utils/collapseToast.js @@ -0,0 +1,19 @@ +/** + * Used to collapse toast after exit animation + */ +export function collapseToast(node, done, duration) { + if (duration === void 0) { duration = 300 /* Default.COLLAPSE_DURATION */; } + var scrollHeight = node.scrollHeight, style = node.style; + requestAnimationFrame(function () { + style.minHeight = 'initial'; + style.height = scrollHeight + 'px'; + style.transition = "all ".concat(duration, "ms"); + requestAnimationFrame(function () { + style.height = '0'; + style.padding = '0'; + style.margin = '0'; + setTimeout(done, duration); + }); + }); +} +//# sourceMappingURL=collapseToast.js.map \ No newline at end of file diff --git a/src/utils/collapseToast.js.map b/src/utils/collapseToast.js.map new file mode 100644 index 00000000..8fbea9ac --- /dev/null +++ b/src/utils/collapseToast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"collapseToast.js","sourceRoot":"","sources":["collapseToast.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAiB,EACjB,IAAgB,EAChB,QAAoC;IAApC,yBAAA,EAAA,8CAAoC;IAE5B,IAAA,YAAY,GAAW,IAAI,aAAf,EAAE,KAAK,GAAI,IAAI,MAAR,CAAS;IAKpC,qBAAqB,CAAC;QACpB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;QACnC,KAAK,CAAC,UAAU,GAAG,cAAO,QAAQ,OAAI,CAAC;QACvC,qBAAqB,CAAC;YACpB,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YACnB,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YACpB,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YACnB,UAAU,CAAC,IAAI,EAAE,QAAkB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AAGL,CAAC"} \ No newline at end of file diff --git a/src/utils/collapseToast.ts b/src/utils/collapseToast.ts index 71ce014d..a5c616d7 100644 --- a/src/utils/collapseToast.ts +++ b/src/utils/collapseToast.ts @@ -1,4 +1,5 @@ import { Default } from './constant'; +import { ToastComeAndGoTo } from '../types'; /** * Used to collapse toast after exit animation @@ -6,15 +7,17 @@ import { Default } from './constant'; export function collapseToast( node: HTMLElement, done: () => void, - duration = Default.COLLAPSE_DURATION + duration = Default.COLLAPSE_DURATION, ) { - const { scrollHeight, style } = node; + const { scrollHeight, style} = node; + + + requestAnimationFrame(() => { style.minHeight = 'initial'; style.height = scrollHeight + 'px'; style.transition = `all ${duration}ms`; - requestAnimationFrame(() => { style.height = '0'; style.padding = '0'; @@ -22,4 +25,6 @@ export function collapseToast( setTimeout(done, duration as number); }); }); + + } diff --git a/src/utils/constant.d.ts b/src/utils/constant.d.ts new file mode 100644 index 00000000..39409fe4 --- /dev/null +++ b/src/utils/constant.d.ts @@ -0,0 +1,18 @@ +export declare const enum Type { + INFO = "info", + SUCCESS = "success", + WARNING = "warning", + ERROR = "error", + DEFAULT = "default" +} +export declare const enum Default { + COLLAPSE_DURATION = 300, + DEBOUNCE_DURATION = 50, + CSS_NAMESPACE = "Toastify", + DRAGGABLE_PERCENT = 80, + CONTAINER_ID = 1 +} +export declare const enum Direction { + X = "x", + Y = "y" +} diff --git a/src/utils/constant.js b/src/utils/constant.js new file mode 100644 index 00000000..1c38dfdf --- /dev/null +++ b/src/utils/constant.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=constant.js.map \ No newline at end of file diff --git a/src/utils/constant.js.map b/src/utils/constant.js.map new file mode 100644 index 00000000..87b02f68 --- /dev/null +++ b/src/utils/constant.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constant.js","sourceRoot":"","sources":["constant.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/src/utils/cssTransition.d.ts b/src/utils/cssTransition.d.ts new file mode 100644 index 00000000..dadd7db0 --- /dev/null +++ b/src/utils/cssTransition.d.ts @@ -0,0 +1,43 @@ +import React from 'react'; +import { ToastTransitionProps } from '../types'; +export interface CSSTransitionProps { + /** + * Css class to apply when toast enter + */ + enter: string; + /** + * Css class to apply when toast leave + */ + exit: string; + /** + * Append current toast position to the classname. + * If multiple classes are provided, only the last one will get the position + * For instance `myclass--top-center`... + * `Default: false` + */ + appendPosition?: boolean; + /** + * Collapse toast smoothly when exit animation end + * `Default: true` + */ + collapse?: boolean; + /** + * Collapse transition duration + * `Default: 300` + */ + collapseDuration?: number; +} +/** + * Css animation that just work. + * You could use animate.css for instance + * + * + * ``` + * cssTransition({ + * enter: "animate__animated animate__bounceIn", + * exit: "animate__animated animate__bounceOut" + * }) + * ``` + * + */ +export declare function cssTransition({ enter, exit, appendPosition, collapse, collapseDuration }: CSSTransitionProps): ({ children, position, preventExitTransition, done, nodeRef, isIn, playToast, comeFrom, leaveFrom }: ToastTransitionProps) => React.JSX.Element; diff --git a/src/utils/cssTransition.js b/src/utils/cssTransition.js new file mode 100644 index 00000000..e9236ece --- /dev/null +++ b/src/utils/cssTransition.js @@ -0,0 +1,63 @@ +import React, { useEffect, useLayoutEffect, useRef } from 'react'; +import { collapseToast } from './collapseToast'; +/** + * Css animation that just work. + * You could use animate.css for instance + * + * + * ``` + * cssTransition({ + * enter: "animate__animated animate__bounceIn", + * exit: "animate__animated animate__bounceOut" + * }) + * ``` + * + */ +export function cssTransition(_a) { + var enter = _a.enter, exit = _a.exit, _b = _a.appendPosition, appendPosition = _b === void 0 ? false : _b, _c = _a.collapse, collapse = _c === void 0 ? true : _c, _d = _a.collapseDuration, collapseDuration = _d === void 0 ? 300 /* Default.COLLAPSE_DURATION */ : _d; + return function ToastTransition(_a) { + var children = _a.children, position = _a.position, preventExitTransition = _a.preventExitTransition, done = _a.done, nodeRef = _a.nodeRef, isIn = _a.isIn, playToast = _a.playToast, comeFrom = _a.comeFrom, leaveFrom = _a.leaveFrom; + var enterClassName = appendPosition ? "".concat(enter).concat(comeFrom ? comeFrom : "", "--").concat(position) : enter; + var exitClassName = appendPosition ? "".concat(exit).concat(leaveFrom ? leaveFrom : "", "--").concat(position) : exit; + var animationStep = useRef(0 /* AnimationStep.Enter */); + useLayoutEffect(function () { + var node = nodeRef.current; + var classToToken = enterClassName.split(' '); + var onEntered = function (e) { + var _a; + if (e.target !== nodeRef.current) + return; + playToast(); + node.removeEventListener('animationend', onEntered); + node.removeEventListener('animationcancel', onEntered); + if (animationStep.current === 0 /* AnimationStep.Enter */ && + e.type !== 'animationcancel') { + (_a = node.classList).remove.apply(_a, classToToken); + } + }; + var onEnter = function () { + var _a; + (_a = node.classList).add.apply(_a, classToToken); + node.addEventListener('animationend', onEntered); + node.addEventListener('animationcancel', onEntered); + }; + onEnter(); + }, []); + useEffect(function () { + var node = nodeRef.current; + var onExited = function () { + node.removeEventListener('animationend', onExited); + collapse ? collapseToast(node, done, collapseDuration) : done(); + }; + var onExit = function () { + animationStep.current = 1 /* AnimationStep.Exit */; + node.className += " ".concat(exitClassName); + node.addEventListener('animationend', onExited); + }; + if (!isIn) + preventExitTransition ? onExited() : onExit(); + }, [isIn]); + return React.createElement(React.Fragment, null, children); + }; +} +//# sourceMappingURL=cssTransition.js.map \ No newline at end of file diff --git a/src/utils/cssTransition.js.map b/src/utils/cssTransition.js.map new file mode 100644 index 00000000..eb7e19e8 --- /dev/null +++ b/src/utils/cssTransition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cssTransition.js","sourceRoot":"","sources":["cssTransition.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/utils/cssTransition.tsx b/src/utils/cssTransition.tsx index 31af1c84..d1bc58a6 100644 --- a/src/utils/cssTransition.tsx +++ b/src/utils/cssTransition.tsx @@ -68,10 +68,16 @@ export function cssTransition({ done, nodeRef, isIn, - playToast + playToast, + comeFrom, + leaveFrom }: ToastTransitionProps) { - const enterClassName = appendPosition ? `${enter}--${position}` : enter; - const exitClassName = appendPosition ? `${exit}--${position}` : exit; + + + + + const enterClassName = appendPosition ? `${enter}${comeFrom ? comeFrom : ""}--${position}` : enter; + const exitClassName = appendPosition ? `${exit}${leaveFrom ? leaveFrom: ""}--${position}` : exit; const animationStep = useRef(AnimationStep.Enter); useLayoutEffect(() => { diff --git a/src/utils/index.d.ts b/src/utils/index.d.ts new file mode 100644 index 00000000..5aaf837e --- /dev/null +++ b/src/utils/index.d.ts @@ -0,0 +1,5 @@ +export * from './propValidator'; +export * from './constant'; +export * from './cssTransition'; +export * from './collapseToast'; +export * from './mapper'; diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 00000000..be6449a3 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,6 @@ +export * from './propValidator'; +export * from './constant'; +export * from './cssTransition'; +export * from './collapseToast'; +export * from './mapper'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/utils/index.js.map b/src/utils/index.js.map new file mode 100644 index 00000000..59d91ec8 --- /dev/null +++ b/src/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/src/utils/mapper.d.ts b/src/utils/mapper.d.ts new file mode 100644 index 00000000..9db2c590 --- /dev/null +++ b/src/utils/mapper.d.ts @@ -0,0 +1,2 @@ +import { Toast, ToastItem, ToastItemStatus } from '../types'; +export declare function toToastItem(toast: Toast, status: ToastItemStatus): ToastItem; diff --git a/src/utils/mapper.js b/src/utils/mapper.js new file mode 100644 index 00000000..6d6af295 --- /dev/null +++ b/src/utils/mapper.js @@ -0,0 +1,17 @@ +export function toToastItem(toast, status) { + return toast != null + ? { + content: toast.content, + containerId: toast.props.containerId, + id: toast.props.toastId, + theme: toast.props.theme, + type: toast.props.type, + data: toast.props.data || {}, + isLoading: toast.props.isLoading, + icon: toast.props.icon, + status: status + } + : // monkey patch for now + {}; +} +//# sourceMappingURL=mapper.js.map \ No newline at end of file diff --git a/src/utils/mapper.js.map b/src/utils/mapper.js.map new file mode 100644 index 00000000..4bfa1420 --- /dev/null +++ b/src/utils/mapper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mapper.js","sourceRoot":"","sources":["mapper.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,MAAuB;IAC/D,OAAO,KAAK,IAAI,IAAI;QAClB,CAAC,CAAC;YACE,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;YACpC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;YACvB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;YACxB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;YACtB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YAC5B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;YAChC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;YACtB,MAAM,QAAA;SACP;QACH,CAAC,CAAC,uBAAuB;YACtB,EAAgB,CAAC;AACxB,CAAC"} \ No newline at end of file diff --git a/src/utils/propValidator.d.ts b/src/utils/propValidator.d.ts new file mode 100644 index 00000000..7c54982c --- /dev/null +++ b/src/utils/propValidator.d.ts @@ -0,0 +1,8 @@ +import { Id } from '../types'; +export declare const isNum: (v: any) => v is Number; +export declare const isStr: (v: any) => v is String; +export declare const isFn: (v: any) => v is Function; +export declare const isId: (v: unknown) => v is Id; +export declare const parseClassName: (v: any) => any; +export declare const getAutoCloseDelay: (toastAutoClose?: false | number, containerAutoClose?: false | number) => number | false | undefined; +export declare const canBeRendered: (content: T) => boolean; diff --git a/src/utils/propValidator.js b/src/utils/propValidator.js new file mode 100644 index 00000000..19a3f9c3 --- /dev/null +++ b/src/utils/propValidator.js @@ -0,0 +1,17 @@ +import { isValidElement } from 'react'; +export var isNum = function (v) { + return typeof v === 'number' && !isNaN(v); +}; +export var isStr = function (v) { return typeof v === 'string'; }; +export var isFn = function (v) { return typeof v === 'function'; }; +export var isId = function (v) { return isStr(v) || isNum(v); }; +export var parseClassName = function (v) { return (isStr(v) || isFn(v) ? v : null); }; +export var getAutoCloseDelay = function (toastAutoClose, containerAutoClose) { + return toastAutoClose === false || (isNum(toastAutoClose) && toastAutoClose > 0) + ? toastAutoClose + : containerAutoClose; +}; +export var canBeRendered = function (content) { + return isValidElement(content) || isStr(content) || isFn(content) || isNum(content); +}; +//# sourceMappingURL=propValidator.js.map \ No newline at end of file diff --git a/src/utils/propValidator.js.map b/src/utils/propValidator.js.map new file mode 100644 index 00000000..e7a3ac9f --- /dev/null +++ b/src/utils/propValidator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propValidator.js","sourceRoot":"","sources":["propValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,CAAC,IAAM,KAAK,GAAG,UAAC,CAAM;IAC1B,OAAA,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAAlC,CAAkC,CAAC;AAErC,MAAM,CAAC,IAAM,KAAK,GAAG,UAAC,CAAM,IAAkB,OAAA,OAAO,CAAC,KAAK,QAAQ,EAArB,CAAqB,CAAC;AAEpE,MAAM,CAAC,IAAM,IAAI,GAAG,UAAC,CAAM,IAAoB,OAAA,OAAO,CAAC,KAAK,UAAU,EAAvB,CAAuB,CAAC;AAEvE,MAAM,CAAC,IAAM,IAAI,GAAG,UAAC,CAAU,IAAc,OAAA,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAApB,CAAoB,CAAC;AAElE,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,CAAM,IAAK,OAAA,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAhC,CAAgC,CAAC;AAE3E,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAC/B,cAA+B,EAC/B,kBAAmC;IAEnC,OAAA,cAAc,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,kBAAkB;AAFtB,CAEsB,CAAC;AAEzB,MAAM,CAAC,IAAM,aAAa,GAAG,UAAI,OAAU;IACzC,OAAA,cAAc,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;AAA5E,CAA4E,CAAC"} \ No newline at end of file From cda20d23b7df6c94e310a5f64bc65b731432ea1a Mon Sep 17 00:00:00 2001 From: saarock Date: Tue, 23 Jul 2024 16:12:31 +0545 Subject: [PATCH 3/3] Add 'comeFrom' and 'leaveFrom' feature to toast notifications --- README.md | 1 + cypress.config.ts | 18 +- cypress/e2e/1-getting-started/todo.cy.js | 143 + cypress/e2e/2-advanced-examples/actions.cy.js | 321 + .../e2e/2-advanced-examples/aliasing.cy.js | 39 + .../e2e/2-advanced-examples/assertions.cy.js | 176 + .../e2e/2-advanced-examples/connectors.cy.js | 98 + cypress/e2e/2-advanced-examples/cookies.cy.js | 118 + .../e2e/2-advanced-examples/cypress_api.cy.js | 185 + cypress/e2e/2-advanced-examples/files.cy.js | 85 + .../e2e/2-advanced-examples/location.cy.js | 32 + cypress/e2e/2-advanced-examples/misc.cy.js | 90 + .../e2e/2-advanced-examples/navigation.cy.js | 55 + .../network_requests.cy.js | 163 + .../e2e/2-advanced-examples/querying.cy.js | 114 + .../spies_stubs_clocks.cy.js | 204 + cypress/e2e/2-advanced-examples/storage.cy.js | 117 + .../e2e/2-advanced-examples/traversal.cy.js | 121 + .../e2e/2-advanced-examples/utilities.cy.js | 107 + .../e2e/2-advanced-examples/viewport.cy.js | 58 + cypress/e2e/2-advanced-examples/waiting.cy.js | 30 + cypress/e2e/2-advanced-examples/window.cy.js | 22 + cypress/fixtures/example.json | 5 + cypress/support/e2e.d.ts | 1 + cypress/support/e2e.js | 19 + cypress/support/e2e.js.map | 1 + cypress/support/e2e.ts | 20 + package-lock.json | 22887 ++++++++++++++++ scss/_toast.scss | 4 - scss/animations/_comeAndGoFrom.scss | 0 .../NotificationCenter.cy.js | 312 +- src/addons/use-notification-center/index.js | 2 +- .../useNotificationCenter.d.ts | 312 +- .../useNotificationCenter.js | 275 +- .../useNotificationCenter.js.map | 2 +- .../useNotificationCenter.ts | 4 +- src/components/CloseButton.cy.js | 51 +- src/components/CloseButton.d.ts | 14 +- src/components/CloseButton.js | 36 +- src/components/Icons.cy.js | 68 +- src/components/Icons.d.ts | 28 +- src/components/Icons.js | 116 +- src/components/ProgressBar.cy.js | 162 +- src/components/ProgressBar.d.ts | 111 +- src/components/ProgressBar.js | 137 +- src/components/Toast.cy.js | 595 +- src/components/Toast.cy.tsx | 2 +- src/components/Toast.js | 213 +- src/components/Toast.js.map | 2 +- src/components/Toast.tsx | 12 +- src/components/ToastContainer.d.ts | 4 +- src/components/ToastContainer.js | 212 +- src/components/ToastContainer.js.map | 2 +- src/components/ToastContainer.tsx | 3 +- src/components/Transitions.d.ts | 48 +- src/components/Transitions.js | 22 +- src/components/index.js | 2 +- src/core/containerObserver.d.ts | 42 +- src/core/containerObserver.js | 337 +- src/core/genToastId.js | 6 +- src/core/index.js | 2 +- src/core/store.d.ts | 41 +- src/core/store.js | 188 +- src/core/toast.cy.js | 28 + src/core/toast.cy.js.map | 2 +- src/core/toast.cy.tsx | 34 + src/core/toast.d.ts | 101 +- src/core/toast.js | 196 +- src/hooks/index.js | 2 +- src/hooks/useIsomorphicLayoutEffect.js | 5 +- src/hooks/useToast.d.ts | 12 +- src/hooks/useToast.js | 305 +- src/hooks/useToastContainer.d.ts | 8 +- src/hooks/useToastContainer.js | 44 +- src/index.d.ts | 18 +- src/index.js | 2 +- src/types.d.ts | 490 +- src/types.js | 2 +- src/types.ts | 13 +- src/utils/collapseToast.d.ts | 6 +- src/utils/collapseToast.js | 27 +- src/utils/collapseToast.js.map | 2 +- src/utils/collapseToast.ts | 9 +- src/utils/constant.d.ts | 24 +- src/utils/constant.js | 2 +- src/utils/cssTransition.d.ts | 68 +- src/utils/cssTransition.js | 120 +- src/utils/cssTransition.js.map | 2 +- src/utils/cssTransition.tsx | 12 +- src/utils/index.js | 2 +- src/utils/mapper.d.ts | 5 +- src/utils/mapper.js | 30 +- src/utils/propValidator.d.ts | 5 +- src/utils/propValidator.js | 31 +- vite.config.js | 15 + yarn.lock | 9628 ++++--- 96 files changed, 33697 insertions(+), 6150 deletions(-) create mode 100644 cypress/e2e/1-getting-started/todo.cy.js create mode 100644 cypress/e2e/2-advanced-examples/actions.cy.js create mode 100644 cypress/e2e/2-advanced-examples/aliasing.cy.js create mode 100644 cypress/e2e/2-advanced-examples/assertions.cy.js create mode 100644 cypress/e2e/2-advanced-examples/connectors.cy.js create mode 100644 cypress/e2e/2-advanced-examples/cookies.cy.js create mode 100644 cypress/e2e/2-advanced-examples/cypress_api.cy.js create mode 100644 cypress/e2e/2-advanced-examples/files.cy.js create mode 100644 cypress/e2e/2-advanced-examples/location.cy.js create mode 100644 cypress/e2e/2-advanced-examples/misc.cy.js create mode 100644 cypress/e2e/2-advanced-examples/navigation.cy.js create mode 100644 cypress/e2e/2-advanced-examples/network_requests.cy.js create mode 100644 cypress/e2e/2-advanced-examples/querying.cy.js create mode 100644 cypress/e2e/2-advanced-examples/spies_stubs_clocks.cy.js create mode 100644 cypress/e2e/2-advanced-examples/storage.cy.js create mode 100644 cypress/e2e/2-advanced-examples/traversal.cy.js create mode 100644 cypress/e2e/2-advanced-examples/utilities.cy.js create mode 100644 cypress/e2e/2-advanced-examples/viewport.cy.js create mode 100644 cypress/e2e/2-advanced-examples/waiting.cy.js create mode 100644 cypress/e2e/2-advanced-examples/window.cy.js create mode 100644 cypress/fixtures/example.json create mode 100644 cypress/support/e2e.d.ts create mode 100644 cypress/support/e2e.js create mode 100644 cypress/support/e2e.js.map create mode 100644 cypress/support/e2e.ts create mode 100644 package-lock.json delete mode 100644 scss/animations/_comeAndGoFrom.scss create mode 100644 vite.config.js diff --git a/README.md b/README.md index 1ec108a6..37879dd0 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ $ yarn add react-toastify - Dark mode 🌒 - Pause timer programmaticaly - Stacked notifications! +- Can show toast and hide from any side ( LEFT , RIGHT, BOTTOM, TOP ) - And much more ! ## The gist diff --git a/cypress.config.ts b/cypress.config.ts index c1172bb0..137e7c83 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,14 +1,20 @@ -import { defineConfig } from 'cypress'; +import { defineConfig } from "cypress"; export default defineConfig({ component: { setupNodeEvents(on, config) { - require('@cypress/code-coverage/task')(on, config); + require("@cypress/code-coverage/task")(on, config); return config; }, devServer: { - framework: 'react', - bundler: 'vite' - } - } + framework: "react", + bundler: "vite", + }, + }, + + e2e: { + setupNodeEvents(on, config) { + // implement node event listeners here + }, + }, }); diff --git a/cypress/e2e/1-getting-started/todo.cy.js b/cypress/e2e/1-getting-started/todo.cy.js new file mode 100644 index 00000000..4768ff92 --- /dev/null +++ b/cypress/e2e/1-getting-started/todo.cy.js @@ -0,0 +1,143 @@ +/// + +// Welcome to Cypress! +// +// This spec file contains a variety of sample tests +// for a todo list app that are designed to demonstrate +// the power of writing tests in Cypress. +// +// To learn more about how Cypress works and +// what makes it such an awesome testing tool, +// please read our getting started guide: +// https://on.cypress.io/introduction-to-cypress + +describe('example to-do app', () => { + beforeEach(() => { + // Cypress starts out with a blank slate for each test + // so we must tell it to visit our website with the `cy.visit()` command. + // Since we want to visit the same URL at the start of all our tests, + // we include it in our beforeEach function so that it runs before each test + cy.visit('https://example.cypress.io/todo') + }) + + it('displays two todo items by default', () => { + // We use the `cy.get()` command to get all elements that match the selector. + // Then, we use `should` to assert that there are two matched items, + // which are the two default items. + cy.get('.todo-list li').should('have.length', 2) + + // We can go even further and check that the default todos each contain + // the correct text. We use the `first` and `last` functions + // to get just the first and last matched elements individually, + // and then perform an assertion with `should`. + cy.get('.todo-list li').first().should('have.text', 'Pay electric bill') + cy.get('.todo-list li').last().should('have.text', 'Walk the dog') + }) + + it('can add new todo items', () => { + // We'll store our item text in a variable so we can reuse it + const newItem = 'Feed the cat' + + // Let's get the input element and use the `type` command to + // input our new list item. After typing the content of our item, + // we need to type the enter key as well in order to submit the input. + // This input has a data-test attribute so we'll use that to select the + // element in accordance with best practices: + // https://on.cypress.io/selecting-elements + cy.get('[data-test=new-todo]').type(`${newItem}{enter}`) + + // Now that we've typed our new item, let's check that it actually was added to the list. + // Since it's the newest item, it should exist as the last element in the list. + // In addition, with the two default items, we should have a total of 3 elements in the list. + // Since assertions yield the element that was asserted on, + // we can chain both of these assertions together into a single statement. + cy.get('.todo-list li') + .should('have.length', 3) + .last() + .should('have.text', newItem) + }) + + it('can check off an item as completed', () => { + // In addition to using the `get` command to get an element by selector, + // we can also use the `contains` command to get an element by its contents. + // However, this will yield the