├── .eslintrc.json ├── .gitignore ├── .npmignore ├── .prettierrc ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── examples ├── .gitignore ├── index.html ├── package-lock.json ├── package.json ├── src │ ├── App.css │ ├── App.tsx │ ├── ExampleComponents │ │ ├── AnimatedCounter │ │ │ ├── AnimatedCounter.css │ │ │ └── AnimatedCounter.tsx │ │ ├── AnimatingElements │ │ │ ├── AnimatingElements.module.css │ │ │ ├── AnimatingElements.tsx │ │ │ └── mind-blown-explosion.gif │ │ └── AnimatingList │ │ │ ├── AnimatingList.css │ │ │ └── AnimatingList.tsx │ ├── favicon.svg │ ├── index.css │ ├── logo.svg │ ├── main.tsx │ └── vite-env.d.ts ├── tsconfig.json └── vite.config.ts ├── package-lock.json ├── package.json ├── rollup.config.js ├── src ├── helpers │ └── utils.ts ├── hooks │ ├── useMotionAnimate │ │ └── index.ts │ └── useMotionTimeline │ │ ├── index.ts │ │ └── useMotionTimelineTypes.ts └── index.ts └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "eslint:recommended", 4 | "plugin:@typescript-eslint/recommended", 5 | "plugin:react/recommended", 6 | 7 | "plugin:prettier/recommended", 8 | "prettier/@typescript-eslint" 9 | ], 10 | "plugins": [ 11 | "react", 12 | "@typescript-eslint", 13 | "prettier", 14 | "react-hooks", 15 | "simple-import-sort" 16 | ], 17 | "parser": "@typescript-eslint/parser", 18 | "env": { "browser": true, "node": true, "es6": true, "jest": true }, 19 | "parserOptions": { 20 | "sourceType": "module" 21 | }, 22 | "settings": { 23 | "react": { 24 | "pragma": "React", 25 | "version": "detect" 26 | } 27 | }, 28 | "rules": { 29 | "react-hooks/rules-of-hooks": "error", 30 | "simple-import-sort/sort": "error", 31 | "prettier/prettier": ["error"], 32 | "linebreak-style": 0, 33 | "camelcase": "off", 34 | "endOfLine": 0, 35 | "@typescript-eslint/camelcase": [ 36 | "error", 37 | { 38 | "ignoreDestructuring": true 39 | } 40 | ], 41 | "@typescript-eslint/explicit-function-return-type": 0 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Directory for instrumented libs generated by jscoverage/JSCover 10 | lib-cov 11 | 12 | # Coverage directory used by tools like istanbul 13 | coverage 14 | *.lcov 15 | 16 | # nyc test coverage 17 | .nyc_output 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (https://nodejs.org/api/addons.html) 23 | build/Release 24 | 25 | # Dependency directories 26 | node_modules/ 27 | jspm_packages/ 28 | 29 | # TypeScript v1 declaration files 30 | typings/ 31 | 32 | # TypeScript cache 33 | *.tsbuildinfo 34 | 35 | # Optional npm cache directory 36 | .npm 37 | 38 | # Optional eslint cache 39 | .eslintcache 40 | 41 | # Output of 'npm pack' 42 | *.tgz 43 | 44 | # Yarn Integrity file 45 | .yarn-integrity 46 | 47 | # generate output 48 | dist 49 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | dist 2 | .babelrc 3 | .storybook 4 | .gitignore 5 | .prettierrc 6 | rollup.config.js 7 | tsconfig.json 8 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "trailingComma": "all", 4 | "singleQuote": true, 5 | "printWidth": 85, 6 | "tabWidth": 4, 7 | "endOfLine": "auto" 8 | } 9 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to motion-hooks 2 | 3 | ## Local Setup 4 | 5 | - Fork [motion-hooks](https://github.com/tanvesh01/motion-hooks) 6 | 7 | ```sh 8 | git clone https://github.com/:github-username/motion-hooks.git 9 | cd motion-hooks 10 | npm install # Installs dependencies for motion-hooks 11 | cd examples # React app to test out changes 12 | npm install # Installs dependencies for example app 13 | npm run dev # To run example on localhost:3000 14 | ``` 15 | 16 | ## Creating Pull Request 17 | 18 | - Create a branch with name of feature you are working on. (e.g. `feat-config`, `fix-fails`, etc) 19 | - Make changes in your locally cloned fork 20 | - Send Pull Request from your branch to `main` branch. 21 | 22 | Thank you and if you need any additional help, you can reach out to me on [Twitter @Sarve\_\_\_tanvesh](https://twitter.com/Sarve___tanvesh). 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Tanvesh Sarve 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # motion-hooks 2 | 3 | A React Hooks wrapper over [Motion One](https://motion.dev/), An animation library, built on the Web Animations API for the smallest filesize and the fastest performance. 4 | 5 | [![npm version](https://badge.fury.io/js/motion-hooks.svg)](https://www.npmjs.com/package/motion-hooks) ![npm](https://img.shields.io/npm/dt/motion-hooks) [![Twitter Follow](https://img.shields.io/twitter/follow/Sarve___tanvesh?label=Chat)](https://twitter.com/Sarve___tanvesh) 6 | 7 | ## Installation 8 | 9 | ``` 10 | npm install motion-hooks motion 11 | ``` 12 | 13 | > Your project needs to have react@16.8.0 react-dom@16.8.0 or greater 14 | 15 | ## Hooks 16 | 17 | As of now, motion-hooks has 2 hooks that wrap around `animate` and `timeline` of motion one respectively 18 | 19 | - [`useMotionAnimate`](https://github.com/tanvesh01/motion-hooks#usemotionanimate) 20 | - [`useMotionTimeline`](https://github.com/tanvesh01/motion-hooks#usemotiontimeline) 21 | 22 | ## Example usage 23 | 24 | **Things You could do with [`useMotionAnimate`](https://github.com/tanvesh01/motion-hooks#usemotionanimate)** 25 | 26 | Animating List - [Link to codesandbox](https://codesandbox.io/s/divine-mountain-qelct?file=/src/App.js) 27 | 28 | ![useMotionAnimate List Example](https://media1.giphy.com/media/JNMxjkEipIurs5RaQb/giphy.gif) 29 | 30 | Animating Counter - [Link to codesandbox](https://codesandbox.io/s/nice-browser-d4ds3?file=/src/App.js) 31 | 32 | ![useMotionAnimate Counter Example](https://media3.giphy.com/media/80wDwOyRlnS1woHcF0/giphy.gif) 33 | 34 | **Things You could do with [`useMotionTimeline`](https://github.com/tanvesh01/motion-hooks#usemotiontimeline)** 35 | 36 | Animating elements independently - [Link to codesandbox](https://codesandbox.io/s/dazzling-dawn-f48sm?file=/src/App.js) 37 | 38 | ![useMotionTimeline Example Usage](https://media1.giphy.com/media/RxCRUxJgi4nuM7b7yv/giphy.gif) 39 | 40 | ### `useMotionAnimate` 41 | 42 | Returns all the properties returned by [`animate`](https://motion.dev/dom/animate) and some helper functions and state 43 | 44 | > Props returned my [`animate`](https://motion.dev/dom/animate) are `null` initially 45 | 46 | You may view this example [here on codesandbox](https://codesandbox.io/s/divine-mountain-qelct?file=/src/App.js). 47 | 48 | ```jsx 49 | function App() { 50 | const { play, isFinished, replay } = useMotionAnimate( 51 | '.listItem', 52 | { y: -20, opacity: 1 }, 53 | { 54 | delay: stagger(0.3), 55 | duration: 0.5, 56 | easing: [0.22, 0.03, 0.26, 1], 57 | }, 58 | ); 59 | 60 | // Play the animation on mount of the component 61 | useEffect(() => { 62 | play(); 63 | }, []); 64 | 65 | return ( 66 | // Replay the animation anytime by calling a function, anywhere 67 |
68 | 71 | 72 | 77 |
78 | ); 79 | } 80 | ``` 81 | 82 | Instead of passing strings to select elements, you can also pass a `ref` :point_down: 83 | 84 | ```jsx 85 | const boxRef = useRef(null); 86 | const { play, isFinished, replay } = useMotionAnimate( 87 | boxRef, 88 | { y: -20, scale: 1.2 }, 89 | { duration: 1 }, 90 | ); 91 | 92 | return
BOX
; 93 | ``` 94 | 95 | **API** 96 | 97 | ```js 98 | const { play, replay, reset, isFinished, animateInstance } = useMotionAnimate( 99 | selector, 100 | keyframes, 101 | options, 102 | events, 103 | ); 104 | ``` 105 | 106 | `useMotionAnimate` returns: 107 | 108 | - `play`: plays the animation 109 | - `replay`: Resets and plays the animation 110 | - `reset`: resets the element to its original styling 111 | - `isFinished`: is `true` when animation has finished playing 112 | - `animateInstance`: Animation Controls. Refer to [motion one docs](https://motion.dev/dom/controls) for more. 113 | 114 | `useMotionAnimate` accepts: 115 | 116 | - `selector` - The target element, can be string or a ref 117 | - `keyframes` - Element will animate from its current style to those defined in the keyframe. Refer to [motion's docs](https://motion.dev/dom/animate#keyframes) for more. 118 | - `options` - Optional parameter. Refer to [motion doc's](https://motion.dev/dom/animate#options) for the values you could pass to this. 119 | - `events` - Pass functions of whatever you want to happen when a event like `onFinish` happens. 120 | 121 | **`events` usage example** 122 | 123 | ```jsx 124 | const { play, isFinished, replay } = useMotionAnimate( 125 | '.listItem', 126 | { y: -20, opacity: 1 }, 127 | { 128 | delay: stagger(0.3), 129 | duration: 0.5, 130 | }, 131 | { 132 | onFinish: () => { 133 | // Whatever you want to do when animation finishes 134 | }, 135 | }, 136 | ); 137 | ``` 138 | 139 | ### `useMotionTimeline` 140 | 141 | Create complex sequences of animations across multiple elements. 142 | 143 | returns `timelineInstance` (Animation Controls) that are returned by [`timeline`](https://motion.dev/dom/timeline) and some helper functions and state 144 | 145 | > Props returned my [`timeline`](https://motion.dev/dom/timeline) are `null` initially 146 | 147 | You may view this example [here on codesandbox](https://codesandbox.io/s/dazzling-dawn-f48sm?file=/src/App.js). 148 | 149 | ```jsx 150 | function App() { 151 | const gifRef = useRef(null); 152 | const { play, isFinished, replay } = useMotionTimeline( 153 | [ 154 | // You can use Refs too! 155 | [gifRef, { scale: [0, 1.2], opacity: 1 }], 156 | ['.heading', { y: [50, 0], opacity: [0, 1] }], 157 | ['.container p', { opacity: 1 }], 158 | ], 159 | { duration: 2 }, 160 | ); 161 | 162 | useEffect(() => { 163 | play(); 164 | }, []); 165 | 166 | return ( 167 |
168 | 171 | 172 |
173 | mind explosion gif 179 |
180 |

Tanvesh

181 |

@sarve__tanvesh

182 |
183 |
184 |
185 | ); 186 | } 187 | ``` 188 | 189 | **API** 190 | 191 | ```js 192 | const { play, replay, reset, isFinished, timelineInstance } = useMotionTimeline( 193 | sequence, 194 | options, 195 | events, 196 | ); 197 | ``` 198 | 199 | `useMotionTimeline` returns: 200 | 201 | - `play`: plays the animation 202 | - `replay`: Resets and plays the animation 203 | - `reset`: resets the element to its original styling 204 | - `isFinished`: is `true` when animation has finished playing 205 | - `timelineInstance`: Animation Controls. Refer to [motion one docs](https://motion.dev/dom/controls) for more. 206 | 207 | `useMotionTimeline` accepts: 208 | 209 | - `sequence` - `sequence` is an array, defines animations with the same settings as the animate function. In the arrays, Element can be either a string or a ref. You can refer to [sequence docs](https://motion.dev/dom/timeline#sequence) for more on this. 210 | - `options` - Optional parameter. Refer to [motion doc's](https://motion.dev/dom/animate#options) for the values you could pass to this. 211 | - `events` - Pass functions of whatever you want to happen when a event like `onFinish` happens. Exactly same as useMotionAnimate's `onFinish`. 212 | 213 | --- 214 | 215 | ## Local Installation & Contributing 216 | 217 | - Fork [motion-hooks](https://github.com/tanvesh01/motion-hooks) 218 | 219 | ```sh 220 | git clone https://github.com/:github-username/motion-hooks.git 221 | cd motion-hooks 222 | npm install # Installs dependencies for motion-hooks 223 | cd examples # React app to test out changes 224 | npm install # Installs dependencies for example app 225 | npm run dev # To run example on localhost:3000 226 | ``` 227 | 228 | The contributing guidelines along with local setup guide is mentioned in [CONTRIBUTING.md](https://github.com/tanvesh01/motion-hooks/blob/main/CONTRIBUTING.md) 229 | 230 | Any Type of feedback is more than welcome! This project is in very early stage and would love to have contributors of any skill/exp level. 231 | 232 | You can contact me on my [Twitter handle @Sarve\_\_\_tanvesh](https://twitter.com/Sarve___tanvesh) 233 | -------------------------------------------------------------------------------- /examples/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | -------------------------------------------------------------------------------- /examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "examples", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "examples", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "@heroicons/react": "^1.0.4", 12 | "motion": "10.11.0", 13 | "react": "^17.0.0", 14 | "react-dom": "^17.0.0" 15 | }, 16 | "devDependencies": { 17 | "@types/react": "^17.0.0", 18 | "@types/react-dom": "^17.0.0", 19 | "@vitejs/plugin-react": "^1.0.0", 20 | "typescript": "^4.3.2", 21 | "vite": "^2.6.0" 22 | } 23 | }, 24 | "node_modules/@ampproject/remapping": { 25 | "version": "2.2.0", 26 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 27 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 28 | "dev": true, 29 | "dependencies": { 30 | "@jridgewell/gen-mapping": "^0.1.0", 31 | "@jridgewell/trace-mapping": "^0.3.9" 32 | }, 33 | "engines": { 34 | "node": ">=6.0.0" 35 | } 36 | }, 37 | "node_modules/@babel/code-frame": { 38 | "version": "7.18.6", 39 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 40 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 41 | "dev": true, 42 | "dependencies": { 43 | "@babel/highlight": "^7.18.6" 44 | }, 45 | "engines": { 46 | "node": ">=6.9.0" 47 | } 48 | }, 49 | "node_modules/@babel/compat-data": { 50 | "version": "7.18.6", 51 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", 52 | "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", 53 | "dev": true, 54 | "engines": { 55 | "node": ">=6.9.0" 56 | } 57 | }, 58 | "node_modules/@babel/core": { 59 | "version": "7.18.6", 60 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", 61 | "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", 62 | "dev": true, 63 | "dependencies": { 64 | "@ampproject/remapping": "^2.1.0", 65 | "@babel/code-frame": "^7.18.6", 66 | "@babel/generator": "^7.18.6", 67 | "@babel/helper-compilation-targets": "^7.18.6", 68 | "@babel/helper-module-transforms": "^7.18.6", 69 | "@babel/helpers": "^7.18.6", 70 | "@babel/parser": "^7.18.6", 71 | "@babel/template": "^7.18.6", 72 | "@babel/traverse": "^7.18.6", 73 | "@babel/types": "^7.18.6", 74 | "convert-source-map": "^1.7.0", 75 | "debug": "^4.1.0", 76 | "gensync": "^1.0.0-beta.2", 77 | "json5": "^2.2.1", 78 | "semver": "^6.3.0" 79 | }, 80 | "engines": { 81 | "node": ">=6.9.0" 82 | }, 83 | "funding": { 84 | "type": "opencollective", 85 | "url": "https://opencollective.com/babel" 86 | } 87 | }, 88 | "node_modules/@babel/generator": { 89 | "version": "7.18.7", 90 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", 91 | "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", 92 | "dev": true, 93 | "dependencies": { 94 | "@babel/types": "^7.18.7", 95 | "@jridgewell/gen-mapping": "^0.3.2", 96 | "jsesc": "^2.5.1" 97 | }, 98 | "engines": { 99 | "node": ">=6.9.0" 100 | } 101 | }, 102 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { 103 | "version": "0.3.2", 104 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 105 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 106 | "dev": true, 107 | "dependencies": { 108 | "@jridgewell/set-array": "^1.0.1", 109 | "@jridgewell/sourcemap-codec": "^1.4.10", 110 | "@jridgewell/trace-mapping": "^0.3.9" 111 | }, 112 | "engines": { 113 | "node": ">=6.0.0" 114 | } 115 | }, 116 | "node_modules/@babel/helper-annotate-as-pure": { 117 | "version": "7.18.6", 118 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 119 | "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 120 | "dev": true, 121 | "dependencies": { 122 | "@babel/types": "^7.18.6" 123 | }, 124 | "engines": { 125 | "node": ">=6.9.0" 126 | } 127 | }, 128 | "node_modules/@babel/helper-compilation-targets": { 129 | "version": "7.18.6", 130 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", 131 | "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", 132 | "dev": true, 133 | "dependencies": { 134 | "@babel/compat-data": "^7.18.6", 135 | "@babel/helper-validator-option": "^7.18.6", 136 | "browserslist": "^4.20.2", 137 | "semver": "^6.3.0" 138 | }, 139 | "engines": { 140 | "node": ">=6.9.0" 141 | }, 142 | "peerDependencies": { 143 | "@babel/core": "^7.0.0" 144 | } 145 | }, 146 | "node_modules/@babel/helper-environment-visitor": { 147 | "version": "7.18.6", 148 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", 149 | "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", 150 | "dev": true, 151 | "engines": { 152 | "node": ">=6.9.0" 153 | } 154 | }, 155 | "node_modules/@babel/helper-function-name": { 156 | "version": "7.18.6", 157 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", 158 | "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", 159 | "dev": true, 160 | "dependencies": { 161 | "@babel/template": "^7.18.6", 162 | "@babel/types": "^7.18.6" 163 | }, 164 | "engines": { 165 | "node": ">=6.9.0" 166 | } 167 | }, 168 | "node_modules/@babel/helper-hoist-variables": { 169 | "version": "7.18.6", 170 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 171 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 172 | "dev": true, 173 | "dependencies": { 174 | "@babel/types": "^7.18.6" 175 | }, 176 | "engines": { 177 | "node": ">=6.9.0" 178 | } 179 | }, 180 | "node_modules/@babel/helper-module-imports": { 181 | "version": "7.18.6", 182 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 183 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 184 | "dev": true, 185 | "dependencies": { 186 | "@babel/types": "^7.18.6" 187 | }, 188 | "engines": { 189 | "node": ">=6.9.0" 190 | } 191 | }, 192 | "node_modules/@babel/helper-module-transforms": { 193 | "version": "7.18.6", 194 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", 195 | "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", 196 | "dev": true, 197 | "dependencies": { 198 | "@babel/helper-environment-visitor": "^7.18.6", 199 | "@babel/helper-module-imports": "^7.18.6", 200 | "@babel/helper-simple-access": "^7.18.6", 201 | "@babel/helper-split-export-declaration": "^7.18.6", 202 | "@babel/helper-validator-identifier": "^7.18.6", 203 | "@babel/template": "^7.18.6", 204 | "@babel/traverse": "^7.18.6", 205 | "@babel/types": "^7.18.6" 206 | }, 207 | "engines": { 208 | "node": ">=6.9.0" 209 | } 210 | }, 211 | "node_modules/@babel/helper-plugin-utils": { 212 | "version": "7.18.6", 213 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", 214 | "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", 215 | "dev": true, 216 | "engines": { 217 | "node": ">=6.9.0" 218 | } 219 | }, 220 | "node_modules/@babel/helper-simple-access": { 221 | "version": "7.18.6", 222 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", 223 | "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", 224 | "dev": true, 225 | "dependencies": { 226 | "@babel/types": "^7.18.6" 227 | }, 228 | "engines": { 229 | "node": ">=6.9.0" 230 | } 231 | }, 232 | "node_modules/@babel/helper-split-export-declaration": { 233 | "version": "7.18.6", 234 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 235 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 236 | "dev": true, 237 | "dependencies": { 238 | "@babel/types": "^7.18.6" 239 | }, 240 | "engines": { 241 | "node": ">=6.9.0" 242 | } 243 | }, 244 | "node_modules/@babel/helper-validator-identifier": { 245 | "version": "7.18.6", 246 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 247 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 248 | "dev": true, 249 | "engines": { 250 | "node": ">=6.9.0" 251 | } 252 | }, 253 | "node_modules/@babel/helper-validator-option": { 254 | "version": "7.18.6", 255 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 256 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 257 | "dev": true, 258 | "engines": { 259 | "node": ">=6.9.0" 260 | } 261 | }, 262 | "node_modules/@babel/helpers": { 263 | "version": "7.18.6", 264 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", 265 | "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", 266 | "dev": true, 267 | "dependencies": { 268 | "@babel/template": "^7.18.6", 269 | "@babel/traverse": "^7.18.6", 270 | "@babel/types": "^7.18.6" 271 | }, 272 | "engines": { 273 | "node": ">=6.9.0" 274 | } 275 | }, 276 | "node_modules/@babel/highlight": { 277 | "version": "7.18.6", 278 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 279 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 280 | "dev": true, 281 | "dependencies": { 282 | "@babel/helper-validator-identifier": "^7.18.6", 283 | "chalk": "^2.0.0", 284 | "js-tokens": "^4.0.0" 285 | }, 286 | "engines": { 287 | "node": ">=6.9.0" 288 | } 289 | }, 290 | "node_modules/@babel/parser": { 291 | "version": "7.18.6", 292 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", 293 | "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", 294 | "dev": true, 295 | "bin": { 296 | "parser": "bin/babel-parser.js" 297 | }, 298 | "engines": { 299 | "node": ">=6.0.0" 300 | } 301 | }, 302 | "node_modules/@babel/plugin-syntax-jsx": { 303 | "version": "7.18.6", 304 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 305 | "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 306 | "dev": true, 307 | "dependencies": { 308 | "@babel/helper-plugin-utils": "^7.18.6" 309 | }, 310 | "engines": { 311 | "node": ">=6.9.0" 312 | }, 313 | "peerDependencies": { 314 | "@babel/core": "^7.0.0-0" 315 | } 316 | }, 317 | "node_modules/@babel/plugin-transform-react-jsx": { 318 | "version": "7.18.6", 319 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz", 320 | "integrity": "sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==", 321 | "dev": true, 322 | "dependencies": { 323 | "@babel/helper-annotate-as-pure": "^7.18.6", 324 | "@babel/helper-module-imports": "^7.18.6", 325 | "@babel/helper-plugin-utils": "^7.18.6", 326 | "@babel/plugin-syntax-jsx": "^7.18.6", 327 | "@babel/types": "^7.18.6" 328 | }, 329 | "engines": { 330 | "node": ">=6.9.0" 331 | }, 332 | "peerDependencies": { 333 | "@babel/core": "^7.0.0-0" 334 | } 335 | }, 336 | "node_modules/@babel/plugin-transform-react-jsx-development": { 337 | "version": "7.18.6", 338 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 339 | "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 340 | "dev": true, 341 | "dependencies": { 342 | "@babel/plugin-transform-react-jsx": "^7.18.6" 343 | }, 344 | "engines": { 345 | "node": ">=6.9.0" 346 | }, 347 | "peerDependencies": { 348 | "@babel/core": "^7.0.0-0" 349 | } 350 | }, 351 | "node_modules/@babel/plugin-transform-react-jsx-self": { 352 | "version": "7.18.6", 353 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", 354 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", 355 | "dev": true, 356 | "dependencies": { 357 | "@babel/helper-plugin-utils": "^7.18.6" 358 | }, 359 | "engines": { 360 | "node": ">=6.9.0" 361 | }, 362 | "peerDependencies": { 363 | "@babel/core": "^7.0.0-0" 364 | } 365 | }, 366 | "node_modules/@babel/plugin-transform-react-jsx-source": { 367 | "version": "7.18.6", 368 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz", 369 | "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==", 370 | "dev": true, 371 | "dependencies": { 372 | "@babel/helper-plugin-utils": "^7.18.6" 373 | }, 374 | "engines": { 375 | "node": ">=6.9.0" 376 | }, 377 | "peerDependencies": { 378 | "@babel/core": "^7.0.0-0" 379 | } 380 | }, 381 | "node_modules/@babel/template": { 382 | "version": "7.18.6", 383 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", 384 | "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", 385 | "dev": true, 386 | "dependencies": { 387 | "@babel/code-frame": "^7.18.6", 388 | "@babel/parser": "^7.18.6", 389 | "@babel/types": "^7.18.6" 390 | }, 391 | "engines": { 392 | "node": ">=6.9.0" 393 | } 394 | }, 395 | "node_modules/@babel/traverse": { 396 | "version": "7.18.6", 397 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", 398 | "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", 399 | "dev": true, 400 | "dependencies": { 401 | "@babel/code-frame": "^7.18.6", 402 | "@babel/generator": "^7.18.6", 403 | "@babel/helper-environment-visitor": "^7.18.6", 404 | "@babel/helper-function-name": "^7.18.6", 405 | "@babel/helper-hoist-variables": "^7.18.6", 406 | "@babel/helper-split-export-declaration": "^7.18.6", 407 | "@babel/parser": "^7.18.6", 408 | "@babel/types": "^7.18.6", 409 | "debug": "^4.1.0", 410 | "globals": "^11.1.0" 411 | }, 412 | "engines": { 413 | "node": ">=6.9.0" 414 | } 415 | }, 416 | "node_modules/@babel/types": { 417 | "version": "7.18.7", 418 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", 419 | "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", 420 | "dev": true, 421 | "dependencies": { 422 | "@babel/helper-validator-identifier": "^7.18.6", 423 | "to-fast-properties": "^2.0.0" 424 | }, 425 | "engines": { 426 | "node": ">=6.9.0" 427 | } 428 | }, 429 | "node_modules/@heroicons/react": { 430 | "version": "1.0.6", 431 | "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz", 432 | "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==", 433 | "peerDependencies": { 434 | "react": ">= 16" 435 | } 436 | }, 437 | "node_modules/@jridgewell/gen-mapping": { 438 | "version": "0.1.1", 439 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 440 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 441 | "dev": true, 442 | "dependencies": { 443 | "@jridgewell/set-array": "^1.0.0", 444 | "@jridgewell/sourcemap-codec": "^1.4.10" 445 | }, 446 | "engines": { 447 | "node": ">=6.0.0" 448 | } 449 | }, 450 | "node_modules/@jridgewell/resolve-uri": { 451 | "version": "3.1.0", 452 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 453 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 454 | "dev": true, 455 | "engines": { 456 | "node": ">=6.0.0" 457 | } 458 | }, 459 | "node_modules/@jridgewell/set-array": { 460 | "version": "1.1.2", 461 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 462 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 463 | "dev": true, 464 | "engines": { 465 | "node": ">=6.0.0" 466 | } 467 | }, 468 | "node_modules/@jridgewell/sourcemap-codec": { 469 | "version": "1.4.14", 470 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 471 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 472 | "dev": true 473 | }, 474 | "node_modules/@jridgewell/trace-mapping": { 475 | "version": "0.3.14", 476 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", 477 | "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", 478 | "dev": true, 479 | "dependencies": { 480 | "@jridgewell/resolve-uri": "^3.0.3", 481 | "@jridgewell/sourcemap-codec": "^1.4.10" 482 | } 483 | }, 484 | "node_modules/@motionone/animation": { 485 | "version": "10.10.1", 486 | "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.10.1.tgz", 487 | "integrity": "sha512-iX839/Ir5wT7hVX0yCZYjcDhHAOkVR5hIhVBTf37qEUD693uVwrxC2i1BI9vMVPc1rIoFtftYjOtwoO9Oq/aog==", 488 | "dependencies": { 489 | "@motionone/easing": "^10.9.0", 490 | "@motionone/types": "^10.9.0", 491 | "@motionone/utils": "^10.9.0", 492 | "tslib": "^2.3.1" 493 | } 494 | }, 495 | "node_modules/@motionone/dom": { 496 | "version": "10.11.2", 497 | "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.11.2.tgz", 498 | "integrity": "sha512-0SX4acPV1srcnzi0ZKzeq/aqDq86Wwd2G2RiLbLhIGFB3zZB/rJ46yNW3AUhSPKEQLCL20J3e8V4hyfPdEZ5TA==", 499 | "dependencies": { 500 | "@motionone/animation": "^10.10.1", 501 | "@motionone/generators": "^10.9.0", 502 | "@motionone/types": "^10.9.0", 503 | "@motionone/utils": "^10.9.0", 504 | "hey-listen": "^1.0.8", 505 | "tslib": "^2.3.1" 506 | } 507 | }, 508 | "node_modules/@motionone/easing": { 509 | "version": "10.9.0", 510 | "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.9.0.tgz", 511 | "integrity": "sha512-FYIr3HlQEb7aE5LOpY6BPQUaPyKeJt6VfGA+npy73+JIGqoVOjbrdZ1ZQxzTXqO76mG3UZvv1+twrDamRQsxFw==", 512 | "dependencies": { 513 | "@motionone/utils": "^10.9.0", 514 | "tslib": "^2.3.1" 515 | } 516 | }, 517 | "node_modules/@motionone/generators": { 518 | "version": "10.9.0", 519 | "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.9.0.tgz", 520 | "integrity": "sha512-BOkHx4qQswJV+z/6k05qdvRENE4hG606NI5cIPTsLtSuksnRn83utuj/15VTNoFeYHuTdhwzxvIPvlPVayIGTg==", 521 | "dependencies": { 522 | "@motionone/types": "^10.9.0", 523 | "@motionone/utils": "^10.9.0", 524 | "tslib": "^2.3.1" 525 | } 526 | }, 527 | "node_modules/@motionone/react": { 528 | "version": "10.11.2", 529 | "resolved": "https://registry.npmjs.org/@motionone/react/-/react-10.11.2.tgz", 530 | "integrity": "sha512-8ksyST9iup2tuzBCtjHL9/vP6dBeTI27OpwQI15JZYfKUhUgBxO80KgHhXlaXx6yBCysQhikuffEFBUK4aAxig==", 531 | "dependencies": { 532 | "@motionone/dom": "^10.11.2", 533 | "hey-listen": "^1.0.8", 534 | "tslib": "^2.3.1" 535 | }, 536 | "peerDependencies": { 537 | "react": "^17.0.2", 538 | "react-dom": "^17.0.2" 539 | }, 540 | "peerDependenciesMeta": { 541 | "react": { 542 | "optional": true 543 | }, 544 | "react-dom": { 545 | "optional": true 546 | } 547 | } 548 | }, 549 | "node_modules/@motionone/svelte": { 550 | "version": "10.11.2", 551 | "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.11.2.tgz", 552 | "integrity": "sha512-SJXIJHBouG6JIJ4LuYJ/aMBLun1T6oYrRnYV4TYskCmh1jTbM3qmrptCdUxyTP7jcUvBTh1BlUpTr27LAPLgUw==", 553 | "dependencies": { 554 | "@motionone/dom": "^10.11.2", 555 | "tslib": "^2.3.1" 556 | } 557 | }, 558 | "node_modules/@motionone/types": { 559 | "version": "10.9.0", 560 | "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.9.0.tgz", 561 | "integrity": "sha512-ZcEDfsrS2ym9+vExV7+59avkzEO/PLkNj16uaDvbWhi0Q/vOZ72j2LQTrtDLWVyZRIeUaB/i8DJP017Gj6UYQw==" 562 | }, 563 | "node_modules/@motionone/utils": { 564 | "version": "10.9.0", 565 | "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.9.0.tgz", 566 | "integrity": "sha512-5IgmwQ8TdH1HsQ9d2QZeBCu9+HkqjoYRYItRpmusoyiedPMZaKdU3pr3qFP5nbAj68Ww2sTUxgEZEOF20qJA6w==", 567 | "dependencies": { 568 | "@motionone/types": "^10.9.0", 569 | "hey-listen": "^1.0.8", 570 | "tslib": "^2.3.1" 571 | } 572 | }, 573 | "node_modules/@motionone/vue": { 574 | "version": "10.11.2", 575 | "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.11.2.tgz", 576 | "integrity": "sha512-xpec0qFQhbkgQ3mFap9aaiBLGSdhNAnomh7+Y4xIhVGK0KzwEAqJm6T+fN1pJwiX/gHdwN4VnslP8uLfS6Lz2A==", 577 | "dependencies": { 578 | "@motionone/dom": "^10.11.2", 579 | "tslib": "^2.3.1" 580 | } 581 | }, 582 | "node_modules/@rollup/pluginutils": { 583 | "version": "4.2.1", 584 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", 585 | "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", 586 | "dev": true, 587 | "dependencies": { 588 | "estree-walker": "^2.0.1", 589 | "picomatch": "^2.2.2" 590 | }, 591 | "engines": { 592 | "node": ">= 8.0.0" 593 | } 594 | }, 595 | "node_modules/@types/prop-types": { 596 | "version": "15.7.5", 597 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 598 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 599 | "dev": true 600 | }, 601 | "node_modules/@types/react": { 602 | "version": "17.0.47", 603 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", 604 | "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", 605 | "dev": true, 606 | "dependencies": { 607 | "@types/prop-types": "*", 608 | "@types/scheduler": "*", 609 | "csstype": "^3.0.2" 610 | } 611 | }, 612 | "node_modules/@types/react-dom": { 613 | "version": "17.0.17", 614 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", 615 | "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", 616 | "dev": true, 617 | "dependencies": { 618 | "@types/react": "^17" 619 | } 620 | }, 621 | "node_modules/@types/scheduler": { 622 | "version": "0.16.2", 623 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 624 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 625 | "dev": true 626 | }, 627 | "node_modules/@vitejs/plugin-react": { 628 | "version": "1.3.2", 629 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.3.2.tgz", 630 | "integrity": "sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==", 631 | "dev": true, 632 | "dependencies": { 633 | "@babel/core": "^7.17.10", 634 | "@babel/plugin-transform-react-jsx": "^7.17.3", 635 | "@babel/plugin-transform-react-jsx-development": "^7.16.7", 636 | "@babel/plugin-transform-react-jsx-self": "^7.16.7", 637 | "@babel/plugin-transform-react-jsx-source": "^7.16.7", 638 | "@rollup/pluginutils": "^4.2.1", 639 | "react-refresh": "^0.13.0", 640 | "resolve": "^1.22.0" 641 | }, 642 | "engines": { 643 | "node": ">=12.0.0" 644 | } 645 | }, 646 | "node_modules/ansi-styles": { 647 | "version": "3.2.1", 648 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 649 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 650 | "dev": true, 651 | "dependencies": { 652 | "color-convert": "^1.9.0" 653 | }, 654 | "engines": { 655 | "node": ">=4" 656 | } 657 | }, 658 | "node_modules/browserslist": { 659 | "version": "4.21.1", 660 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", 661 | "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", 662 | "dev": true, 663 | "funding": [ 664 | { 665 | "type": "opencollective", 666 | "url": "https://opencollective.com/browserslist" 667 | }, 668 | { 669 | "type": "tidelift", 670 | "url": "https://tidelift.com/funding/github/npm/browserslist" 671 | } 672 | ], 673 | "dependencies": { 674 | "caniuse-lite": "^1.0.30001359", 675 | "electron-to-chromium": "^1.4.172", 676 | "node-releases": "^2.0.5", 677 | "update-browserslist-db": "^1.0.4" 678 | }, 679 | "bin": { 680 | "browserslist": "cli.js" 681 | }, 682 | "engines": { 683 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 684 | } 685 | }, 686 | "node_modules/caniuse-lite": { 687 | "version": "1.0.30001363", 688 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", 689 | "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", 690 | "dev": true, 691 | "funding": [ 692 | { 693 | "type": "opencollective", 694 | "url": "https://opencollective.com/browserslist" 695 | }, 696 | { 697 | "type": "tidelift", 698 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 699 | } 700 | ] 701 | }, 702 | "node_modules/chalk": { 703 | "version": "2.4.2", 704 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 705 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 706 | "dev": true, 707 | "dependencies": { 708 | "ansi-styles": "^3.2.1", 709 | "escape-string-regexp": "^1.0.5", 710 | "supports-color": "^5.3.0" 711 | }, 712 | "engines": { 713 | "node": ">=4" 714 | } 715 | }, 716 | "node_modules/color-convert": { 717 | "version": "1.9.3", 718 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 719 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 720 | "dev": true, 721 | "dependencies": { 722 | "color-name": "1.1.3" 723 | } 724 | }, 725 | "node_modules/color-name": { 726 | "version": "1.1.3", 727 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 728 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 729 | "dev": true 730 | }, 731 | "node_modules/convert-source-map": { 732 | "version": "1.8.0", 733 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 734 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 735 | "dev": true, 736 | "dependencies": { 737 | "safe-buffer": "~5.1.1" 738 | } 739 | }, 740 | "node_modules/csstype": { 741 | "version": "3.1.0", 742 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", 743 | "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", 744 | "dev": true 745 | }, 746 | "node_modules/debug": { 747 | "version": "4.3.4", 748 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 749 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 750 | "dev": true, 751 | "dependencies": { 752 | "ms": "2.1.2" 753 | }, 754 | "engines": { 755 | "node": ">=6.0" 756 | }, 757 | "peerDependenciesMeta": { 758 | "supports-color": { 759 | "optional": true 760 | } 761 | } 762 | }, 763 | "node_modules/electron-to-chromium": { 764 | "version": "1.4.180", 765 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.180.tgz", 766 | "integrity": "sha512-7at5ash3FD9U5gPa3/wPr6OdiZd/zBjvDZaaHBpcqFOFUhZiWnb7stkqk8xUFL9H9nk7Yok5vCCNK8wyC/+f8A==", 767 | "dev": true 768 | }, 769 | "node_modules/esbuild": { 770 | "version": "0.14.48", 771 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz", 772 | "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==", 773 | "dev": true, 774 | "hasInstallScript": true, 775 | "bin": { 776 | "esbuild": "bin/esbuild" 777 | }, 778 | "engines": { 779 | "node": ">=12" 780 | }, 781 | "optionalDependencies": { 782 | "esbuild-android-64": "0.14.48", 783 | "esbuild-android-arm64": "0.14.48", 784 | "esbuild-darwin-64": "0.14.48", 785 | "esbuild-darwin-arm64": "0.14.48", 786 | "esbuild-freebsd-64": "0.14.48", 787 | "esbuild-freebsd-arm64": "0.14.48", 788 | "esbuild-linux-32": "0.14.48", 789 | "esbuild-linux-64": "0.14.48", 790 | "esbuild-linux-arm": "0.14.48", 791 | "esbuild-linux-arm64": "0.14.48", 792 | "esbuild-linux-mips64le": "0.14.48", 793 | "esbuild-linux-ppc64le": "0.14.48", 794 | "esbuild-linux-riscv64": "0.14.48", 795 | "esbuild-linux-s390x": "0.14.48", 796 | "esbuild-netbsd-64": "0.14.48", 797 | "esbuild-openbsd-64": "0.14.48", 798 | "esbuild-sunos-64": "0.14.48", 799 | "esbuild-windows-32": "0.14.48", 800 | "esbuild-windows-64": "0.14.48", 801 | "esbuild-windows-arm64": "0.14.48" 802 | } 803 | }, 804 | "node_modules/esbuild-android-64": { 805 | "version": "0.14.48", 806 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz", 807 | "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==", 808 | "cpu": [ 809 | "x64" 810 | ], 811 | "dev": true, 812 | "optional": true, 813 | "os": [ 814 | "android" 815 | ], 816 | "engines": { 817 | "node": ">=12" 818 | } 819 | }, 820 | "node_modules/esbuild-android-arm64": { 821 | "version": "0.14.48", 822 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz", 823 | "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==", 824 | "cpu": [ 825 | "arm64" 826 | ], 827 | "dev": true, 828 | "optional": true, 829 | "os": [ 830 | "android" 831 | ], 832 | "engines": { 833 | "node": ">=12" 834 | } 835 | }, 836 | "node_modules/esbuild-darwin-64": { 837 | "version": "0.14.48", 838 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz", 839 | "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==", 840 | "cpu": [ 841 | "x64" 842 | ], 843 | "dev": true, 844 | "optional": true, 845 | "os": [ 846 | "darwin" 847 | ], 848 | "engines": { 849 | "node": ">=12" 850 | } 851 | }, 852 | "node_modules/esbuild-darwin-arm64": { 853 | "version": "0.14.48", 854 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz", 855 | "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==", 856 | "cpu": [ 857 | "arm64" 858 | ], 859 | "dev": true, 860 | "optional": true, 861 | "os": [ 862 | "darwin" 863 | ], 864 | "engines": { 865 | "node": ">=12" 866 | } 867 | }, 868 | "node_modules/esbuild-freebsd-64": { 869 | "version": "0.14.48", 870 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz", 871 | "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==", 872 | "cpu": [ 873 | "x64" 874 | ], 875 | "dev": true, 876 | "optional": true, 877 | "os": [ 878 | "freebsd" 879 | ], 880 | "engines": { 881 | "node": ">=12" 882 | } 883 | }, 884 | "node_modules/esbuild-freebsd-arm64": { 885 | "version": "0.14.48", 886 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz", 887 | "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==", 888 | "cpu": [ 889 | "arm64" 890 | ], 891 | "dev": true, 892 | "optional": true, 893 | "os": [ 894 | "freebsd" 895 | ], 896 | "engines": { 897 | "node": ">=12" 898 | } 899 | }, 900 | "node_modules/esbuild-linux-32": { 901 | "version": "0.14.48", 902 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz", 903 | "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==", 904 | "cpu": [ 905 | "ia32" 906 | ], 907 | "dev": true, 908 | "optional": true, 909 | "os": [ 910 | "linux" 911 | ], 912 | "engines": { 913 | "node": ">=12" 914 | } 915 | }, 916 | "node_modules/esbuild-linux-64": { 917 | "version": "0.14.48", 918 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz", 919 | "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==", 920 | "cpu": [ 921 | "x64" 922 | ], 923 | "dev": true, 924 | "optional": true, 925 | "os": [ 926 | "linux" 927 | ], 928 | "engines": { 929 | "node": ">=12" 930 | } 931 | }, 932 | "node_modules/esbuild-linux-arm": { 933 | "version": "0.14.48", 934 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz", 935 | "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==", 936 | "cpu": [ 937 | "arm" 938 | ], 939 | "dev": true, 940 | "optional": true, 941 | "os": [ 942 | "linux" 943 | ], 944 | "engines": { 945 | "node": ">=12" 946 | } 947 | }, 948 | "node_modules/esbuild-linux-arm64": { 949 | "version": "0.14.48", 950 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz", 951 | "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==", 952 | "cpu": [ 953 | "arm64" 954 | ], 955 | "dev": true, 956 | "optional": true, 957 | "os": [ 958 | "linux" 959 | ], 960 | "engines": { 961 | "node": ">=12" 962 | } 963 | }, 964 | "node_modules/esbuild-linux-mips64le": { 965 | "version": "0.14.48", 966 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz", 967 | "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==", 968 | "cpu": [ 969 | "mips64el" 970 | ], 971 | "dev": true, 972 | "optional": true, 973 | "os": [ 974 | "linux" 975 | ], 976 | "engines": { 977 | "node": ">=12" 978 | } 979 | }, 980 | "node_modules/esbuild-linux-ppc64le": { 981 | "version": "0.14.48", 982 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz", 983 | "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==", 984 | "cpu": [ 985 | "ppc64" 986 | ], 987 | "dev": true, 988 | "optional": true, 989 | "os": [ 990 | "linux" 991 | ], 992 | "engines": { 993 | "node": ">=12" 994 | } 995 | }, 996 | "node_modules/esbuild-linux-riscv64": { 997 | "version": "0.14.48", 998 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz", 999 | "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==", 1000 | "cpu": [ 1001 | "riscv64" 1002 | ], 1003 | "dev": true, 1004 | "optional": true, 1005 | "os": [ 1006 | "linux" 1007 | ], 1008 | "engines": { 1009 | "node": ">=12" 1010 | } 1011 | }, 1012 | "node_modules/esbuild-linux-s390x": { 1013 | "version": "0.14.48", 1014 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz", 1015 | "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==", 1016 | "cpu": [ 1017 | "s390x" 1018 | ], 1019 | "dev": true, 1020 | "optional": true, 1021 | "os": [ 1022 | "linux" 1023 | ], 1024 | "engines": { 1025 | "node": ">=12" 1026 | } 1027 | }, 1028 | "node_modules/esbuild-netbsd-64": { 1029 | "version": "0.14.48", 1030 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz", 1031 | "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==", 1032 | "cpu": [ 1033 | "x64" 1034 | ], 1035 | "dev": true, 1036 | "optional": true, 1037 | "os": [ 1038 | "netbsd" 1039 | ], 1040 | "engines": { 1041 | "node": ">=12" 1042 | } 1043 | }, 1044 | "node_modules/esbuild-openbsd-64": { 1045 | "version": "0.14.48", 1046 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz", 1047 | "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==", 1048 | "cpu": [ 1049 | "x64" 1050 | ], 1051 | "dev": true, 1052 | "optional": true, 1053 | "os": [ 1054 | "openbsd" 1055 | ], 1056 | "engines": { 1057 | "node": ">=12" 1058 | } 1059 | }, 1060 | "node_modules/esbuild-sunos-64": { 1061 | "version": "0.14.48", 1062 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz", 1063 | "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==", 1064 | "cpu": [ 1065 | "x64" 1066 | ], 1067 | "dev": true, 1068 | "optional": true, 1069 | "os": [ 1070 | "sunos" 1071 | ], 1072 | "engines": { 1073 | "node": ">=12" 1074 | } 1075 | }, 1076 | "node_modules/esbuild-windows-32": { 1077 | "version": "0.14.48", 1078 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz", 1079 | "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==", 1080 | "cpu": [ 1081 | "ia32" 1082 | ], 1083 | "dev": true, 1084 | "optional": true, 1085 | "os": [ 1086 | "win32" 1087 | ], 1088 | "engines": { 1089 | "node": ">=12" 1090 | } 1091 | }, 1092 | "node_modules/esbuild-windows-64": { 1093 | "version": "0.14.48", 1094 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz", 1095 | "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==", 1096 | "cpu": [ 1097 | "x64" 1098 | ], 1099 | "dev": true, 1100 | "optional": true, 1101 | "os": [ 1102 | "win32" 1103 | ], 1104 | "engines": { 1105 | "node": ">=12" 1106 | } 1107 | }, 1108 | "node_modules/esbuild-windows-arm64": { 1109 | "version": "0.14.48", 1110 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz", 1111 | "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==", 1112 | "cpu": [ 1113 | "arm64" 1114 | ], 1115 | "dev": true, 1116 | "optional": true, 1117 | "os": [ 1118 | "win32" 1119 | ], 1120 | "engines": { 1121 | "node": ">=12" 1122 | } 1123 | }, 1124 | "node_modules/escalade": { 1125 | "version": "3.1.1", 1126 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1127 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1128 | "dev": true, 1129 | "engines": { 1130 | "node": ">=6" 1131 | } 1132 | }, 1133 | "node_modules/escape-string-regexp": { 1134 | "version": "1.0.5", 1135 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1136 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1137 | "dev": true, 1138 | "engines": { 1139 | "node": ">=0.8.0" 1140 | } 1141 | }, 1142 | "node_modules/estree-walker": { 1143 | "version": "2.0.2", 1144 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1145 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1146 | "dev": true 1147 | }, 1148 | "node_modules/fsevents": { 1149 | "version": "2.3.2", 1150 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1151 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1152 | "dev": true, 1153 | "hasInstallScript": true, 1154 | "optional": true, 1155 | "os": [ 1156 | "darwin" 1157 | ], 1158 | "engines": { 1159 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1160 | } 1161 | }, 1162 | "node_modules/function-bind": { 1163 | "version": "1.1.1", 1164 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1165 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1166 | "dev": true 1167 | }, 1168 | "node_modules/gensync": { 1169 | "version": "1.0.0-beta.2", 1170 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1171 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1172 | "dev": true, 1173 | "engines": { 1174 | "node": ">=6.9.0" 1175 | } 1176 | }, 1177 | "node_modules/globals": { 1178 | "version": "11.12.0", 1179 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1180 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1181 | "dev": true, 1182 | "engines": { 1183 | "node": ">=4" 1184 | } 1185 | }, 1186 | "node_modules/has": { 1187 | "version": "1.0.3", 1188 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1189 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1190 | "dev": true, 1191 | "dependencies": { 1192 | "function-bind": "^1.1.1" 1193 | }, 1194 | "engines": { 1195 | "node": ">= 0.4.0" 1196 | } 1197 | }, 1198 | "node_modules/has-flag": { 1199 | "version": "3.0.0", 1200 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1201 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1202 | "dev": true, 1203 | "engines": { 1204 | "node": ">=4" 1205 | } 1206 | }, 1207 | "node_modules/hey-listen": { 1208 | "version": "1.0.8", 1209 | "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", 1210 | "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" 1211 | }, 1212 | "node_modules/is-core-module": { 1213 | "version": "2.9.0", 1214 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", 1215 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", 1216 | "dev": true, 1217 | "dependencies": { 1218 | "has": "^1.0.3" 1219 | }, 1220 | "funding": { 1221 | "url": "https://github.com/sponsors/ljharb" 1222 | } 1223 | }, 1224 | "node_modules/js-tokens": { 1225 | "version": "4.0.0", 1226 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1227 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1228 | }, 1229 | "node_modules/jsesc": { 1230 | "version": "2.5.2", 1231 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1232 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1233 | "dev": true, 1234 | "bin": { 1235 | "jsesc": "bin/jsesc" 1236 | }, 1237 | "engines": { 1238 | "node": ">=4" 1239 | } 1240 | }, 1241 | "node_modules/json5": { 1242 | "version": "2.2.1", 1243 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 1244 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 1245 | "dev": true, 1246 | "bin": { 1247 | "json5": "lib/cli.js" 1248 | }, 1249 | "engines": { 1250 | "node": ">=6" 1251 | } 1252 | }, 1253 | "node_modules/loose-envify": { 1254 | "version": "1.4.0", 1255 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1256 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1257 | "dependencies": { 1258 | "js-tokens": "^3.0.0 || ^4.0.0" 1259 | }, 1260 | "bin": { 1261 | "loose-envify": "cli.js" 1262 | } 1263 | }, 1264 | "node_modules/motion": { 1265 | "version": "10.11.0", 1266 | "resolved": "https://registry.npmjs.org/motion/-/motion-10.11.0.tgz", 1267 | "integrity": "sha512-4F5p+9FOx0UjcCp1T9G3AP9F7EM3WKrD5E0mKfDzoXr6Kgo1CZ5+s4UHzXsYLNtceYVMTqGA20nWsjI9BvZbcg==", 1268 | "dependencies": { 1269 | "@motionone/animation": "^10.10.1", 1270 | "@motionone/dom": "^10.11.0", 1271 | "@motionone/react": "^10.11.0", 1272 | "@motionone/svelte": "^10.11.0", 1273 | "@motionone/types": "^10.9.0", 1274 | "@motionone/vue": "^10.11.0" 1275 | } 1276 | }, 1277 | "node_modules/ms": { 1278 | "version": "2.1.2", 1279 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1280 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1281 | "dev": true 1282 | }, 1283 | "node_modules/nanoid": { 1284 | "version": "3.3.4", 1285 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1286 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 1287 | "dev": true, 1288 | "bin": { 1289 | "nanoid": "bin/nanoid.cjs" 1290 | }, 1291 | "engines": { 1292 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1293 | } 1294 | }, 1295 | "node_modules/node-releases": { 1296 | "version": "2.0.5", 1297 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", 1298 | "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", 1299 | "dev": true 1300 | }, 1301 | "node_modules/object-assign": { 1302 | "version": "4.1.1", 1303 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1304 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1305 | "engines": { 1306 | "node": ">=0.10.0" 1307 | } 1308 | }, 1309 | "node_modules/path-parse": { 1310 | "version": "1.0.7", 1311 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1312 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1313 | "dev": true 1314 | }, 1315 | "node_modules/picocolors": { 1316 | "version": "1.0.0", 1317 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1318 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1319 | "dev": true 1320 | }, 1321 | "node_modules/picomatch": { 1322 | "version": "2.3.1", 1323 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1324 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1325 | "dev": true, 1326 | "engines": { 1327 | "node": ">=8.6" 1328 | }, 1329 | "funding": { 1330 | "url": "https://github.com/sponsors/jonschlinkert" 1331 | } 1332 | }, 1333 | "node_modules/postcss": { 1334 | "version": "8.4.14", 1335 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 1336 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 1337 | "dev": true, 1338 | "funding": [ 1339 | { 1340 | "type": "opencollective", 1341 | "url": "https://opencollective.com/postcss/" 1342 | }, 1343 | { 1344 | "type": "tidelift", 1345 | "url": "https://tidelift.com/funding/github/npm/postcss" 1346 | } 1347 | ], 1348 | "dependencies": { 1349 | "nanoid": "^3.3.4", 1350 | "picocolors": "^1.0.0", 1351 | "source-map-js": "^1.0.2" 1352 | }, 1353 | "engines": { 1354 | "node": "^10 || ^12 || >=14" 1355 | } 1356 | }, 1357 | "node_modules/react": { 1358 | "version": "17.0.2", 1359 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 1360 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 1361 | "dependencies": { 1362 | "loose-envify": "^1.1.0", 1363 | "object-assign": "^4.1.1" 1364 | }, 1365 | "engines": { 1366 | "node": ">=0.10.0" 1367 | } 1368 | }, 1369 | "node_modules/react-dom": { 1370 | "version": "17.0.2", 1371 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 1372 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 1373 | "dependencies": { 1374 | "loose-envify": "^1.1.0", 1375 | "object-assign": "^4.1.1", 1376 | "scheduler": "^0.20.2" 1377 | }, 1378 | "peerDependencies": { 1379 | "react": "17.0.2" 1380 | } 1381 | }, 1382 | "node_modules/react-refresh": { 1383 | "version": "0.13.0", 1384 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.13.0.tgz", 1385 | "integrity": "sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==", 1386 | "dev": true, 1387 | "engines": { 1388 | "node": ">=0.10.0" 1389 | } 1390 | }, 1391 | "node_modules/resolve": { 1392 | "version": "1.22.1", 1393 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1394 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1395 | "dev": true, 1396 | "dependencies": { 1397 | "is-core-module": "^2.9.0", 1398 | "path-parse": "^1.0.7", 1399 | "supports-preserve-symlinks-flag": "^1.0.0" 1400 | }, 1401 | "bin": { 1402 | "resolve": "bin/resolve" 1403 | }, 1404 | "funding": { 1405 | "url": "https://github.com/sponsors/ljharb" 1406 | } 1407 | }, 1408 | "node_modules/rollup": { 1409 | "version": "2.75.7", 1410 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz", 1411 | "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==", 1412 | "dev": true, 1413 | "bin": { 1414 | "rollup": "dist/bin/rollup" 1415 | }, 1416 | "engines": { 1417 | "node": ">=10.0.0" 1418 | }, 1419 | "optionalDependencies": { 1420 | "fsevents": "~2.3.2" 1421 | } 1422 | }, 1423 | "node_modules/safe-buffer": { 1424 | "version": "5.1.2", 1425 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1426 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1427 | "dev": true 1428 | }, 1429 | "node_modules/scheduler": { 1430 | "version": "0.20.2", 1431 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 1432 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 1433 | "dependencies": { 1434 | "loose-envify": "^1.1.0", 1435 | "object-assign": "^4.1.1" 1436 | } 1437 | }, 1438 | "node_modules/semver": { 1439 | "version": "6.3.0", 1440 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1441 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1442 | "dev": true, 1443 | "bin": { 1444 | "semver": "bin/semver.js" 1445 | } 1446 | }, 1447 | "node_modules/source-map-js": { 1448 | "version": "1.0.2", 1449 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1450 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1451 | "dev": true, 1452 | "engines": { 1453 | "node": ">=0.10.0" 1454 | } 1455 | }, 1456 | "node_modules/supports-color": { 1457 | "version": "5.5.0", 1458 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1459 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1460 | "dev": true, 1461 | "dependencies": { 1462 | "has-flag": "^3.0.0" 1463 | }, 1464 | "engines": { 1465 | "node": ">=4" 1466 | } 1467 | }, 1468 | "node_modules/supports-preserve-symlinks-flag": { 1469 | "version": "1.0.0", 1470 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1471 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1472 | "dev": true, 1473 | "engines": { 1474 | "node": ">= 0.4" 1475 | }, 1476 | "funding": { 1477 | "url": "https://github.com/sponsors/ljharb" 1478 | } 1479 | }, 1480 | "node_modules/to-fast-properties": { 1481 | "version": "2.0.0", 1482 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1483 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 1484 | "dev": true, 1485 | "engines": { 1486 | "node": ">=4" 1487 | } 1488 | }, 1489 | "node_modules/tslib": { 1490 | "version": "2.4.0", 1491 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 1492 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 1493 | }, 1494 | "node_modules/typescript": { 1495 | "version": "4.7.4", 1496 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 1497 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 1498 | "dev": true, 1499 | "bin": { 1500 | "tsc": "bin/tsc", 1501 | "tsserver": "bin/tsserver" 1502 | }, 1503 | "engines": { 1504 | "node": ">=4.2.0" 1505 | } 1506 | }, 1507 | "node_modules/update-browserslist-db": { 1508 | "version": "1.0.4", 1509 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", 1510 | "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", 1511 | "dev": true, 1512 | "funding": [ 1513 | { 1514 | "type": "opencollective", 1515 | "url": "https://opencollective.com/browserslist" 1516 | }, 1517 | { 1518 | "type": "tidelift", 1519 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1520 | } 1521 | ], 1522 | "dependencies": { 1523 | "escalade": "^3.1.1", 1524 | "picocolors": "^1.0.0" 1525 | }, 1526 | "bin": { 1527 | "browserslist-lint": "cli.js" 1528 | }, 1529 | "peerDependencies": { 1530 | "browserslist": ">= 4.21.0" 1531 | } 1532 | }, 1533 | "node_modules/vite": { 1534 | "version": "2.9.13", 1535 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz", 1536 | "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==", 1537 | "dev": true, 1538 | "dependencies": { 1539 | "esbuild": "^0.14.27", 1540 | "postcss": "^8.4.13", 1541 | "resolve": "^1.22.0", 1542 | "rollup": "^2.59.0" 1543 | }, 1544 | "bin": { 1545 | "vite": "bin/vite.js" 1546 | }, 1547 | "engines": { 1548 | "node": ">=12.2.0" 1549 | }, 1550 | "optionalDependencies": { 1551 | "fsevents": "~2.3.2" 1552 | }, 1553 | "peerDependencies": { 1554 | "less": "*", 1555 | "sass": "*", 1556 | "stylus": "*" 1557 | }, 1558 | "peerDependenciesMeta": { 1559 | "less": { 1560 | "optional": true 1561 | }, 1562 | "sass": { 1563 | "optional": true 1564 | }, 1565 | "stylus": { 1566 | "optional": true 1567 | } 1568 | } 1569 | } 1570 | }, 1571 | "dependencies": { 1572 | "@ampproject/remapping": { 1573 | "version": "2.2.0", 1574 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 1575 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 1576 | "dev": true, 1577 | "requires": { 1578 | "@jridgewell/gen-mapping": "^0.1.0", 1579 | "@jridgewell/trace-mapping": "^0.3.9" 1580 | } 1581 | }, 1582 | "@babel/code-frame": { 1583 | "version": "7.18.6", 1584 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 1585 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 1586 | "dev": true, 1587 | "requires": { 1588 | "@babel/highlight": "^7.18.6" 1589 | } 1590 | }, 1591 | "@babel/compat-data": { 1592 | "version": "7.18.6", 1593 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", 1594 | "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", 1595 | "dev": true 1596 | }, 1597 | "@babel/core": { 1598 | "version": "7.18.6", 1599 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", 1600 | "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", 1601 | "dev": true, 1602 | "requires": { 1603 | "@ampproject/remapping": "^2.1.0", 1604 | "@babel/code-frame": "^7.18.6", 1605 | "@babel/generator": "^7.18.6", 1606 | "@babel/helper-compilation-targets": "^7.18.6", 1607 | "@babel/helper-module-transforms": "^7.18.6", 1608 | "@babel/helpers": "^7.18.6", 1609 | "@babel/parser": "^7.18.6", 1610 | "@babel/template": "^7.18.6", 1611 | "@babel/traverse": "^7.18.6", 1612 | "@babel/types": "^7.18.6", 1613 | "convert-source-map": "^1.7.0", 1614 | "debug": "^4.1.0", 1615 | "gensync": "^1.0.0-beta.2", 1616 | "json5": "^2.2.1", 1617 | "semver": "^6.3.0" 1618 | } 1619 | }, 1620 | "@babel/generator": { 1621 | "version": "7.18.7", 1622 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", 1623 | "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", 1624 | "dev": true, 1625 | "requires": { 1626 | "@babel/types": "^7.18.7", 1627 | "@jridgewell/gen-mapping": "^0.3.2", 1628 | "jsesc": "^2.5.1" 1629 | }, 1630 | "dependencies": { 1631 | "@jridgewell/gen-mapping": { 1632 | "version": "0.3.2", 1633 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 1634 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 1635 | "dev": true, 1636 | "requires": { 1637 | "@jridgewell/set-array": "^1.0.1", 1638 | "@jridgewell/sourcemap-codec": "^1.4.10", 1639 | "@jridgewell/trace-mapping": "^0.3.9" 1640 | } 1641 | } 1642 | } 1643 | }, 1644 | "@babel/helper-annotate-as-pure": { 1645 | "version": "7.18.6", 1646 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 1647 | "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 1648 | "dev": true, 1649 | "requires": { 1650 | "@babel/types": "^7.18.6" 1651 | } 1652 | }, 1653 | "@babel/helper-compilation-targets": { 1654 | "version": "7.18.6", 1655 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", 1656 | "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", 1657 | "dev": true, 1658 | "requires": { 1659 | "@babel/compat-data": "^7.18.6", 1660 | "@babel/helper-validator-option": "^7.18.6", 1661 | "browserslist": "^4.20.2", 1662 | "semver": "^6.3.0" 1663 | } 1664 | }, 1665 | "@babel/helper-environment-visitor": { 1666 | "version": "7.18.6", 1667 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", 1668 | "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", 1669 | "dev": true 1670 | }, 1671 | "@babel/helper-function-name": { 1672 | "version": "7.18.6", 1673 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", 1674 | "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", 1675 | "dev": true, 1676 | "requires": { 1677 | "@babel/template": "^7.18.6", 1678 | "@babel/types": "^7.18.6" 1679 | } 1680 | }, 1681 | "@babel/helper-hoist-variables": { 1682 | "version": "7.18.6", 1683 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 1684 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 1685 | "dev": true, 1686 | "requires": { 1687 | "@babel/types": "^7.18.6" 1688 | } 1689 | }, 1690 | "@babel/helper-module-imports": { 1691 | "version": "7.18.6", 1692 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 1693 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 1694 | "dev": true, 1695 | "requires": { 1696 | "@babel/types": "^7.18.6" 1697 | } 1698 | }, 1699 | "@babel/helper-module-transforms": { 1700 | "version": "7.18.6", 1701 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", 1702 | "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", 1703 | "dev": true, 1704 | "requires": { 1705 | "@babel/helper-environment-visitor": "^7.18.6", 1706 | "@babel/helper-module-imports": "^7.18.6", 1707 | "@babel/helper-simple-access": "^7.18.6", 1708 | "@babel/helper-split-export-declaration": "^7.18.6", 1709 | "@babel/helper-validator-identifier": "^7.18.6", 1710 | "@babel/template": "^7.18.6", 1711 | "@babel/traverse": "^7.18.6", 1712 | "@babel/types": "^7.18.6" 1713 | } 1714 | }, 1715 | "@babel/helper-plugin-utils": { 1716 | "version": "7.18.6", 1717 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", 1718 | "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", 1719 | "dev": true 1720 | }, 1721 | "@babel/helper-simple-access": { 1722 | "version": "7.18.6", 1723 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", 1724 | "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", 1725 | "dev": true, 1726 | "requires": { 1727 | "@babel/types": "^7.18.6" 1728 | } 1729 | }, 1730 | "@babel/helper-split-export-declaration": { 1731 | "version": "7.18.6", 1732 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 1733 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 1734 | "dev": true, 1735 | "requires": { 1736 | "@babel/types": "^7.18.6" 1737 | } 1738 | }, 1739 | "@babel/helper-validator-identifier": { 1740 | "version": "7.18.6", 1741 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 1742 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 1743 | "dev": true 1744 | }, 1745 | "@babel/helper-validator-option": { 1746 | "version": "7.18.6", 1747 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 1748 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 1749 | "dev": true 1750 | }, 1751 | "@babel/helpers": { 1752 | "version": "7.18.6", 1753 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", 1754 | "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", 1755 | "dev": true, 1756 | "requires": { 1757 | "@babel/template": "^7.18.6", 1758 | "@babel/traverse": "^7.18.6", 1759 | "@babel/types": "^7.18.6" 1760 | } 1761 | }, 1762 | "@babel/highlight": { 1763 | "version": "7.18.6", 1764 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 1765 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 1766 | "dev": true, 1767 | "requires": { 1768 | "@babel/helper-validator-identifier": "^7.18.6", 1769 | "chalk": "^2.0.0", 1770 | "js-tokens": "^4.0.0" 1771 | } 1772 | }, 1773 | "@babel/parser": { 1774 | "version": "7.18.6", 1775 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", 1776 | "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", 1777 | "dev": true 1778 | }, 1779 | "@babel/plugin-syntax-jsx": { 1780 | "version": "7.18.6", 1781 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 1782 | "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 1783 | "dev": true, 1784 | "requires": { 1785 | "@babel/helper-plugin-utils": "^7.18.6" 1786 | } 1787 | }, 1788 | "@babel/plugin-transform-react-jsx": { 1789 | "version": "7.18.6", 1790 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz", 1791 | "integrity": "sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==", 1792 | "dev": true, 1793 | "requires": { 1794 | "@babel/helper-annotate-as-pure": "^7.18.6", 1795 | "@babel/helper-module-imports": "^7.18.6", 1796 | "@babel/helper-plugin-utils": "^7.18.6", 1797 | "@babel/plugin-syntax-jsx": "^7.18.6", 1798 | "@babel/types": "^7.18.6" 1799 | } 1800 | }, 1801 | "@babel/plugin-transform-react-jsx-development": { 1802 | "version": "7.18.6", 1803 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 1804 | "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 1805 | "dev": true, 1806 | "requires": { 1807 | "@babel/plugin-transform-react-jsx": "^7.18.6" 1808 | } 1809 | }, 1810 | "@babel/plugin-transform-react-jsx-self": { 1811 | "version": "7.18.6", 1812 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", 1813 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", 1814 | "dev": true, 1815 | "requires": { 1816 | "@babel/helper-plugin-utils": "^7.18.6" 1817 | } 1818 | }, 1819 | "@babel/plugin-transform-react-jsx-source": { 1820 | "version": "7.18.6", 1821 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz", 1822 | "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==", 1823 | "dev": true, 1824 | "requires": { 1825 | "@babel/helper-plugin-utils": "^7.18.6" 1826 | } 1827 | }, 1828 | "@babel/template": { 1829 | "version": "7.18.6", 1830 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", 1831 | "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", 1832 | "dev": true, 1833 | "requires": { 1834 | "@babel/code-frame": "^7.18.6", 1835 | "@babel/parser": "^7.18.6", 1836 | "@babel/types": "^7.18.6" 1837 | } 1838 | }, 1839 | "@babel/traverse": { 1840 | "version": "7.18.6", 1841 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", 1842 | "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", 1843 | "dev": true, 1844 | "requires": { 1845 | "@babel/code-frame": "^7.18.6", 1846 | "@babel/generator": "^7.18.6", 1847 | "@babel/helper-environment-visitor": "^7.18.6", 1848 | "@babel/helper-function-name": "^7.18.6", 1849 | "@babel/helper-hoist-variables": "^7.18.6", 1850 | "@babel/helper-split-export-declaration": "^7.18.6", 1851 | "@babel/parser": "^7.18.6", 1852 | "@babel/types": "^7.18.6", 1853 | "debug": "^4.1.0", 1854 | "globals": "^11.1.0" 1855 | } 1856 | }, 1857 | "@babel/types": { 1858 | "version": "7.18.7", 1859 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", 1860 | "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", 1861 | "dev": true, 1862 | "requires": { 1863 | "@babel/helper-validator-identifier": "^7.18.6", 1864 | "to-fast-properties": "^2.0.0" 1865 | } 1866 | }, 1867 | "@heroicons/react": { 1868 | "version": "1.0.6", 1869 | "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz", 1870 | "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==", 1871 | "requires": {} 1872 | }, 1873 | "@jridgewell/gen-mapping": { 1874 | "version": "0.1.1", 1875 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 1876 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 1877 | "dev": true, 1878 | "requires": { 1879 | "@jridgewell/set-array": "^1.0.0", 1880 | "@jridgewell/sourcemap-codec": "^1.4.10" 1881 | } 1882 | }, 1883 | "@jridgewell/resolve-uri": { 1884 | "version": "3.1.0", 1885 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 1886 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 1887 | "dev": true 1888 | }, 1889 | "@jridgewell/set-array": { 1890 | "version": "1.1.2", 1891 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 1892 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 1893 | "dev": true 1894 | }, 1895 | "@jridgewell/sourcemap-codec": { 1896 | "version": "1.4.14", 1897 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 1898 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 1899 | "dev": true 1900 | }, 1901 | "@jridgewell/trace-mapping": { 1902 | "version": "0.3.14", 1903 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", 1904 | "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", 1905 | "dev": true, 1906 | "requires": { 1907 | "@jridgewell/resolve-uri": "^3.0.3", 1908 | "@jridgewell/sourcemap-codec": "^1.4.10" 1909 | } 1910 | }, 1911 | "@motionone/animation": { 1912 | "version": "10.10.1", 1913 | "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.10.1.tgz", 1914 | "integrity": "sha512-iX839/Ir5wT7hVX0yCZYjcDhHAOkVR5hIhVBTf37qEUD693uVwrxC2i1BI9vMVPc1rIoFtftYjOtwoO9Oq/aog==", 1915 | "requires": { 1916 | "@motionone/easing": "^10.9.0", 1917 | "@motionone/types": "^10.9.0", 1918 | "@motionone/utils": "^10.9.0", 1919 | "tslib": "^2.3.1" 1920 | } 1921 | }, 1922 | "@motionone/dom": { 1923 | "version": "10.11.2", 1924 | "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.11.2.tgz", 1925 | "integrity": "sha512-0SX4acPV1srcnzi0ZKzeq/aqDq86Wwd2G2RiLbLhIGFB3zZB/rJ46yNW3AUhSPKEQLCL20J3e8V4hyfPdEZ5TA==", 1926 | "requires": { 1927 | "@motionone/animation": "^10.10.1", 1928 | "@motionone/generators": "^10.9.0", 1929 | "@motionone/types": "^10.9.0", 1930 | "@motionone/utils": "^10.9.0", 1931 | "hey-listen": "^1.0.8", 1932 | "tslib": "^2.3.1" 1933 | } 1934 | }, 1935 | "@motionone/easing": { 1936 | "version": "10.9.0", 1937 | "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.9.0.tgz", 1938 | "integrity": "sha512-FYIr3HlQEb7aE5LOpY6BPQUaPyKeJt6VfGA+npy73+JIGqoVOjbrdZ1ZQxzTXqO76mG3UZvv1+twrDamRQsxFw==", 1939 | "requires": { 1940 | "@motionone/utils": "^10.9.0", 1941 | "tslib": "^2.3.1" 1942 | } 1943 | }, 1944 | "@motionone/generators": { 1945 | "version": "10.9.0", 1946 | "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.9.0.tgz", 1947 | "integrity": "sha512-BOkHx4qQswJV+z/6k05qdvRENE4hG606NI5cIPTsLtSuksnRn83utuj/15VTNoFeYHuTdhwzxvIPvlPVayIGTg==", 1948 | "requires": { 1949 | "@motionone/types": "^10.9.0", 1950 | "@motionone/utils": "^10.9.0", 1951 | "tslib": "^2.3.1" 1952 | } 1953 | }, 1954 | "@motionone/react": { 1955 | "version": "10.11.2", 1956 | "resolved": "https://registry.npmjs.org/@motionone/react/-/react-10.11.2.tgz", 1957 | "integrity": "sha512-8ksyST9iup2tuzBCtjHL9/vP6dBeTI27OpwQI15JZYfKUhUgBxO80KgHhXlaXx6yBCysQhikuffEFBUK4aAxig==", 1958 | "requires": { 1959 | "@motionone/dom": "^10.11.2", 1960 | "hey-listen": "^1.0.8", 1961 | "tslib": "^2.3.1" 1962 | } 1963 | }, 1964 | "@motionone/svelte": { 1965 | "version": "10.11.2", 1966 | "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.11.2.tgz", 1967 | "integrity": "sha512-SJXIJHBouG6JIJ4LuYJ/aMBLun1T6oYrRnYV4TYskCmh1jTbM3qmrptCdUxyTP7jcUvBTh1BlUpTr27LAPLgUw==", 1968 | "requires": { 1969 | "@motionone/dom": "^10.11.2", 1970 | "tslib": "^2.3.1" 1971 | } 1972 | }, 1973 | "@motionone/types": { 1974 | "version": "10.9.0", 1975 | "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.9.0.tgz", 1976 | "integrity": "sha512-ZcEDfsrS2ym9+vExV7+59avkzEO/PLkNj16uaDvbWhi0Q/vOZ72j2LQTrtDLWVyZRIeUaB/i8DJP017Gj6UYQw==" 1977 | }, 1978 | "@motionone/utils": { 1979 | "version": "10.9.0", 1980 | "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.9.0.tgz", 1981 | "integrity": "sha512-5IgmwQ8TdH1HsQ9d2QZeBCu9+HkqjoYRYItRpmusoyiedPMZaKdU3pr3qFP5nbAj68Ww2sTUxgEZEOF20qJA6w==", 1982 | "requires": { 1983 | "@motionone/types": "^10.9.0", 1984 | "hey-listen": "^1.0.8", 1985 | "tslib": "^2.3.1" 1986 | } 1987 | }, 1988 | "@motionone/vue": { 1989 | "version": "10.11.2", 1990 | "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.11.2.tgz", 1991 | "integrity": "sha512-xpec0qFQhbkgQ3mFap9aaiBLGSdhNAnomh7+Y4xIhVGK0KzwEAqJm6T+fN1pJwiX/gHdwN4VnslP8uLfS6Lz2A==", 1992 | "requires": { 1993 | "@motionone/dom": "^10.11.2", 1994 | "tslib": "^2.3.1" 1995 | } 1996 | }, 1997 | "@rollup/pluginutils": { 1998 | "version": "4.2.1", 1999 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", 2000 | "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", 2001 | "dev": true, 2002 | "requires": { 2003 | "estree-walker": "^2.0.1", 2004 | "picomatch": "^2.2.2" 2005 | } 2006 | }, 2007 | "@types/prop-types": { 2008 | "version": "15.7.5", 2009 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 2010 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 2011 | "dev": true 2012 | }, 2013 | "@types/react": { 2014 | "version": "17.0.47", 2015 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", 2016 | "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", 2017 | "dev": true, 2018 | "requires": { 2019 | "@types/prop-types": "*", 2020 | "@types/scheduler": "*", 2021 | "csstype": "^3.0.2" 2022 | } 2023 | }, 2024 | "@types/react-dom": { 2025 | "version": "17.0.17", 2026 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", 2027 | "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", 2028 | "dev": true, 2029 | "requires": { 2030 | "@types/react": "^17" 2031 | } 2032 | }, 2033 | "@types/scheduler": { 2034 | "version": "0.16.2", 2035 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 2036 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 2037 | "dev": true 2038 | }, 2039 | "@vitejs/plugin-react": { 2040 | "version": "1.3.2", 2041 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.3.2.tgz", 2042 | "integrity": "sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==", 2043 | "dev": true, 2044 | "requires": { 2045 | "@babel/core": "^7.17.10", 2046 | "@babel/plugin-transform-react-jsx": "^7.17.3", 2047 | "@babel/plugin-transform-react-jsx-development": "^7.16.7", 2048 | "@babel/plugin-transform-react-jsx-self": "^7.16.7", 2049 | "@babel/plugin-transform-react-jsx-source": "^7.16.7", 2050 | "@rollup/pluginutils": "^4.2.1", 2051 | "react-refresh": "^0.13.0", 2052 | "resolve": "^1.22.0" 2053 | } 2054 | }, 2055 | "ansi-styles": { 2056 | "version": "3.2.1", 2057 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2058 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2059 | "dev": true, 2060 | "requires": { 2061 | "color-convert": "^1.9.0" 2062 | } 2063 | }, 2064 | "browserslist": { 2065 | "version": "4.21.1", 2066 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", 2067 | "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", 2068 | "dev": true, 2069 | "requires": { 2070 | "caniuse-lite": "^1.0.30001359", 2071 | "electron-to-chromium": "^1.4.172", 2072 | "node-releases": "^2.0.5", 2073 | "update-browserslist-db": "^1.0.4" 2074 | } 2075 | }, 2076 | "caniuse-lite": { 2077 | "version": "1.0.30001363", 2078 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", 2079 | "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", 2080 | "dev": true 2081 | }, 2082 | "chalk": { 2083 | "version": "2.4.2", 2084 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2085 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2086 | "dev": true, 2087 | "requires": { 2088 | "ansi-styles": "^3.2.1", 2089 | "escape-string-regexp": "^1.0.5", 2090 | "supports-color": "^5.3.0" 2091 | } 2092 | }, 2093 | "color-convert": { 2094 | "version": "1.9.3", 2095 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2096 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2097 | "dev": true, 2098 | "requires": { 2099 | "color-name": "1.1.3" 2100 | } 2101 | }, 2102 | "color-name": { 2103 | "version": "1.1.3", 2104 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2105 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2106 | "dev": true 2107 | }, 2108 | "convert-source-map": { 2109 | "version": "1.8.0", 2110 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 2111 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 2112 | "dev": true, 2113 | "requires": { 2114 | "safe-buffer": "~5.1.1" 2115 | } 2116 | }, 2117 | "csstype": { 2118 | "version": "3.1.0", 2119 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", 2120 | "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", 2121 | "dev": true 2122 | }, 2123 | "debug": { 2124 | "version": "4.3.4", 2125 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2126 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2127 | "dev": true, 2128 | "requires": { 2129 | "ms": "2.1.2" 2130 | } 2131 | }, 2132 | "electron-to-chromium": { 2133 | "version": "1.4.180", 2134 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.180.tgz", 2135 | "integrity": "sha512-7at5ash3FD9U5gPa3/wPr6OdiZd/zBjvDZaaHBpcqFOFUhZiWnb7stkqk8xUFL9H9nk7Yok5vCCNK8wyC/+f8A==", 2136 | "dev": true 2137 | }, 2138 | "esbuild": { 2139 | "version": "0.14.48", 2140 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz", 2141 | "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==", 2142 | "dev": true, 2143 | "requires": { 2144 | "esbuild-android-64": "0.14.48", 2145 | "esbuild-android-arm64": "0.14.48", 2146 | "esbuild-darwin-64": "0.14.48", 2147 | "esbuild-darwin-arm64": "0.14.48", 2148 | "esbuild-freebsd-64": "0.14.48", 2149 | "esbuild-freebsd-arm64": "0.14.48", 2150 | "esbuild-linux-32": "0.14.48", 2151 | "esbuild-linux-64": "0.14.48", 2152 | "esbuild-linux-arm": "0.14.48", 2153 | "esbuild-linux-arm64": "0.14.48", 2154 | "esbuild-linux-mips64le": "0.14.48", 2155 | "esbuild-linux-ppc64le": "0.14.48", 2156 | "esbuild-linux-riscv64": "0.14.48", 2157 | "esbuild-linux-s390x": "0.14.48", 2158 | "esbuild-netbsd-64": "0.14.48", 2159 | "esbuild-openbsd-64": "0.14.48", 2160 | "esbuild-sunos-64": "0.14.48", 2161 | "esbuild-windows-32": "0.14.48", 2162 | "esbuild-windows-64": "0.14.48", 2163 | "esbuild-windows-arm64": "0.14.48" 2164 | } 2165 | }, 2166 | "esbuild-android-64": { 2167 | "version": "0.14.48", 2168 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz", 2169 | "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==", 2170 | "dev": true, 2171 | "optional": true 2172 | }, 2173 | "esbuild-android-arm64": { 2174 | "version": "0.14.48", 2175 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz", 2176 | "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==", 2177 | "dev": true, 2178 | "optional": true 2179 | }, 2180 | "esbuild-darwin-64": { 2181 | "version": "0.14.48", 2182 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz", 2183 | "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==", 2184 | "dev": true, 2185 | "optional": true 2186 | }, 2187 | "esbuild-darwin-arm64": { 2188 | "version": "0.14.48", 2189 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz", 2190 | "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==", 2191 | "dev": true, 2192 | "optional": true 2193 | }, 2194 | "esbuild-freebsd-64": { 2195 | "version": "0.14.48", 2196 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz", 2197 | "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==", 2198 | "dev": true, 2199 | "optional": true 2200 | }, 2201 | "esbuild-freebsd-arm64": { 2202 | "version": "0.14.48", 2203 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz", 2204 | "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==", 2205 | "dev": true, 2206 | "optional": true 2207 | }, 2208 | "esbuild-linux-32": { 2209 | "version": "0.14.48", 2210 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz", 2211 | "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==", 2212 | "dev": true, 2213 | "optional": true 2214 | }, 2215 | "esbuild-linux-64": { 2216 | "version": "0.14.48", 2217 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz", 2218 | "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==", 2219 | "dev": true, 2220 | "optional": true 2221 | }, 2222 | "esbuild-linux-arm": { 2223 | "version": "0.14.48", 2224 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz", 2225 | "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==", 2226 | "dev": true, 2227 | "optional": true 2228 | }, 2229 | "esbuild-linux-arm64": { 2230 | "version": "0.14.48", 2231 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz", 2232 | "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==", 2233 | "dev": true, 2234 | "optional": true 2235 | }, 2236 | "esbuild-linux-mips64le": { 2237 | "version": "0.14.48", 2238 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz", 2239 | "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==", 2240 | "dev": true, 2241 | "optional": true 2242 | }, 2243 | "esbuild-linux-ppc64le": { 2244 | "version": "0.14.48", 2245 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz", 2246 | "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==", 2247 | "dev": true, 2248 | "optional": true 2249 | }, 2250 | "esbuild-linux-riscv64": { 2251 | "version": "0.14.48", 2252 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz", 2253 | "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==", 2254 | "dev": true, 2255 | "optional": true 2256 | }, 2257 | "esbuild-linux-s390x": { 2258 | "version": "0.14.48", 2259 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz", 2260 | "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==", 2261 | "dev": true, 2262 | "optional": true 2263 | }, 2264 | "esbuild-netbsd-64": { 2265 | "version": "0.14.48", 2266 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz", 2267 | "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==", 2268 | "dev": true, 2269 | "optional": true 2270 | }, 2271 | "esbuild-openbsd-64": { 2272 | "version": "0.14.48", 2273 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz", 2274 | "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==", 2275 | "dev": true, 2276 | "optional": true 2277 | }, 2278 | "esbuild-sunos-64": { 2279 | "version": "0.14.48", 2280 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz", 2281 | "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==", 2282 | "dev": true, 2283 | "optional": true 2284 | }, 2285 | "esbuild-windows-32": { 2286 | "version": "0.14.48", 2287 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz", 2288 | "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==", 2289 | "dev": true, 2290 | "optional": true 2291 | }, 2292 | "esbuild-windows-64": { 2293 | "version": "0.14.48", 2294 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz", 2295 | "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==", 2296 | "dev": true, 2297 | "optional": true 2298 | }, 2299 | "esbuild-windows-arm64": { 2300 | "version": "0.14.48", 2301 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz", 2302 | "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==", 2303 | "dev": true, 2304 | "optional": true 2305 | }, 2306 | "escalade": { 2307 | "version": "3.1.1", 2308 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2309 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2310 | "dev": true 2311 | }, 2312 | "escape-string-regexp": { 2313 | "version": "1.0.5", 2314 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2315 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2316 | "dev": true 2317 | }, 2318 | "estree-walker": { 2319 | "version": "2.0.2", 2320 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 2321 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 2322 | "dev": true 2323 | }, 2324 | "fsevents": { 2325 | "version": "2.3.2", 2326 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2327 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2328 | "dev": true, 2329 | "optional": true 2330 | }, 2331 | "function-bind": { 2332 | "version": "1.1.1", 2333 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2334 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2335 | "dev": true 2336 | }, 2337 | "gensync": { 2338 | "version": "1.0.0-beta.2", 2339 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2340 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2341 | "dev": true 2342 | }, 2343 | "globals": { 2344 | "version": "11.12.0", 2345 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2346 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2347 | "dev": true 2348 | }, 2349 | "has": { 2350 | "version": "1.0.3", 2351 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2352 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2353 | "dev": true, 2354 | "requires": { 2355 | "function-bind": "^1.1.1" 2356 | } 2357 | }, 2358 | "has-flag": { 2359 | "version": "3.0.0", 2360 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2361 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2362 | "dev": true 2363 | }, 2364 | "hey-listen": { 2365 | "version": "1.0.8", 2366 | "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", 2367 | "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" 2368 | }, 2369 | "is-core-module": { 2370 | "version": "2.9.0", 2371 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", 2372 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", 2373 | "dev": true, 2374 | "requires": { 2375 | "has": "^1.0.3" 2376 | } 2377 | }, 2378 | "js-tokens": { 2379 | "version": "4.0.0", 2380 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2381 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2382 | }, 2383 | "jsesc": { 2384 | "version": "2.5.2", 2385 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2386 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2387 | "dev": true 2388 | }, 2389 | "json5": { 2390 | "version": "2.2.1", 2391 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 2392 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 2393 | "dev": true 2394 | }, 2395 | "loose-envify": { 2396 | "version": "1.4.0", 2397 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2398 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2399 | "requires": { 2400 | "js-tokens": "^3.0.0 || ^4.0.0" 2401 | } 2402 | }, 2403 | "motion": { 2404 | "version": "10.11.0", 2405 | "resolved": "https://registry.npmjs.org/motion/-/motion-10.11.0.tgz", 2406 | "integrity": "sha512-4F5p+9FOx0UjcCp1T9G3AP9F7EM3WKrD5E0mKfDzoXr6Kgo1CZ5+s4UHzXsYLNtceYVMTqGA20nWsjI9BvZbcg==", 2407 | "requires": { 2408 | "@motionone/animation": "^10.10.1", 2409 | "@motionone/dom": "^10.11.0", 2410 | "@motionone/react": "^10.11.0", 2411 | "@motionone/svelte": "^10.11.0", 2412 | "@motionone/types": "^10.9.0", 2413 | "@motionone/vue": "^10.11.0" 2414 | } 2415 | }, 2416 | "ms": { 2417 | "version": "2.1.2", 2418 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2419 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2420 | "dev": true 2421 | }, 2422 | "nanoid": { 2423 | "version": "3.3.4", 2424 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 2425 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 2426 | "dev": true 2427 | }, 2428 | "node-releases": { 2429 | "version": "2.0.5", 2430 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", 2431 | "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", 2432 | "dev": true 2433 | }, 2434 | "object-assign": { 2435 | "version": "4.1.1", 2436 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2437 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 2438 | }, 2439 | "path-parse": { 2440 | "version": "1.0.7", 2441 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2442 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2443 | "dev": true 2444 | }, 2445 | "picocolors": { 2446 | "version": "1.0.0", 2447 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2448 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2449 | "dev": true 2450 | }, 2451 | "picomatch": { 2452 | "version": "2.3.1", 2453 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2454 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2455 | "dev": true 2456 | }, 2457 | "postcss": { 2458 | "version": "8.4.14", 2459 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 2460 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 2461 | "dev": true, 2462 | "requires": { 2463 | "nanoid": "^3.3.4", 2464 | "picocolors": "^1.0.0", 2465 | "source-map-js": "^1.0.2" 2466 | } 2467 | }, 2468 | "react": { 2469 | "version": "17.0.2", 2470 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 2471 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 2472 | "requires": { 2473 | "loose-envify": "^1.1.0", 2474 | "object-assign": "^4.1.1" 2475 | } 2476 | }, 2477 | "react-dom": { 2478 | "version": "17.0.2", 2479 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 2480 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 2481 | "requires": { 2482 | "loose-envify": "^1.1.0", 2483 | "object-assign": "^4.1.1", 2484 | "scheduler": "^0.20.2" 2485 | } 2486 | }, 2487 | "react-refresh": { 2488 | "version": "0.13.0", 2489 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.13.0.tgz", 2490 | "integrity": "sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==", 2491 | "dev": true 2492 | }, 2493 | "resolve": { 2494 | "version": "1.22.1", 2495 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2496 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2497 | "dev": true, 2498 | "requires": { 2499 | "is-core-module": "^2.9.0", 2500 | "path-parse": "^1.0.7", 2501 | "supports-preserve-symlinks-flag": "^1.0.0" 2502 | } 2503 | }, 2504 | "rollup": { 2505 | "version": "2.75.7", 2506 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz", 2507 | "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==", 2508 | "dev": true, 2509 | "requires": { 2510 | "fsevents": "~2.3.2" 2511 | } 2512 | }, 2513 | "safe-buffer": { 2514 | "version": "5.1.2", 2515 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2516 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2517 | "dev": true 2518 | }, 2519 | "scheduler": { 2520 | "version": "0.20.2", 2521 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 2522 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 2523 | "requires": { 2524 | "loose-envify": "^1.1.0", 2525 | "object-assign": "^4.1.1" 2526 | } 2527 | }, 2528 | "semver": { 2529 | "version": "6.3.0", 2530 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2531 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2532 | "dev": true 2533 | }, 2534 | "source-map-js": { 2535 | "version": "1.0.2", 2536 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2537 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2538 | "dev": true 2539 | }, 2540 | "supports-color": { 2541 | "version": "5.5.0", 2542 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2543 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2544 | "dev": true, 2545 | "requires": { 2546 | "has-flag": "^3.0.0" 2547 | } 2548 | }, 2549 | "supports-preserve-symlinks-flag": { 2550 | "version": "1.0.0", 2551 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2552 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2553 | "dev": true 2554 | }, 2555 | "to-fast-properties": { 2556 | "version": "2.0.0", 2557 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2558 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 2559 | "dev": true 2560 | }, 2561 | "tslib": { 2562 | "version": "2.4.0", 2563 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 2564 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 2565 | }, 2566 | "typescript": { 2567 | "version": "4.7.4", 2568 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 2569 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 2570 | "dev": true 2571 | }, 2572 | "update-browserslist-db": { 2573 | "version": "1.0.4", 2574 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", 2575 | "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", 2576 | "dev": true, 2577 | "requires": { 2578 | "escalade": "^3.1.1", 2579 | "picocolors": "^1.0.0" 2580 | } 2581 | }, 2582 | "vite": { 2583 | "version": "2.9.13", 2584 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz", 2585 | "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==", 2586 | "dev": true, 2587 | "requires": { 2588 | "esbuild": "^0.14.27", 2589 | "fsevents": "~2.3.2", 2590 | "postcss": "^8.4.13", 2591 | "resolve": "^1.22.0", 2592 | "rollup": "^2.59.0" 2593 | } 2594 | } 2595 | } 2596 | } 2597 | -------------------------------------------------------------------------------- /examples/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "examples", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "tsc && vite build", 7 | "serve": "vite preview" 8 | }, 9 | "dependencies": { 10 | "@heroicons/react": "^1.0.4", 11 | "motion": "10.11.0", 12 | "react": "^17.0.0", 13 | "react-dom": "^17.0.0" 14 | }, 15 | "devDependencies": { 16 | "@types/react": "^17.0.0", 17 | "@types/react-dom": "^17.0.0", 18 | "@vitejs/plugin-react": "^1.0.0", 19 | "typescript": "^4.3.2", 20 | "vite": "^2.6.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /examples/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | height: 40vmin; 7 | pointer-events: none; 8 | } 9 | 10 | @media (prefers-reduced-motion: no-preference) { 11 | .App-logo { 12 | animation: App-logo-spin infinite 20s linear; 13 | } 14 | } 15 | 16 | .App-header { 17 | background-color: #282c34; 18 | min-height: 100vh; 19 | display: flex; 20 | flex-direction: column; 21 | align-items: center; 22 | justify-content: center; 23 | font-size: calc(10px + 2vmin); 24 | color: white; 25 | } 26 | 27 | .App-link { 28 | color: #61dafb; 29 | } 30 | 31 | @keyframes App-logo-spin { 32 | from { 33 | transform: rotate(0deg); 34 | } 35 | to { 36 | transform: rotate(360deg); 37 | } 38 | } 39 | 40 | -------------------------------------------------------------------------------- /examples/src/App.tsx: -------------------------------------------------------------------------------- 1 | import './App.css'; 2 | import AnimatingList from './ExampleComponents/AnimatingList/AnimatingList'; 3 | 4 | import AnimatedCounter from './ExampleComponents/AnimatedCounter/AnimatedCounter'; 5 | import AnimatingElements from './ExampleComponents/AnimatingElements/AnimatingElements'; 6 | 7 | function App() { 8 | return ( 9 | <> 10 | 11 | 12 | 13 | 14 | ); 15 | } 16 | 17 | export default App; 18 | -------------------------------------------------------------------------------- /examples/src/ExampleComponents/AnimatedCounter/AnimatedCounter.css: -------------------------------------------------------------------------------- 1 | .CounterContainer { 2 | width: 100%; 3 | display: flex; 4 | flex-direction: column; 5 | justify-content: center; 6 | align-items: center; 7 | background-color: #252525; 8 | height: 100vh; 9 | } 10 | 11 | .CounterContainer p { 12 | margin: 0; 13 | padding: 0; 14 | color: #18faae; 15 | } 16 | 17 | .CounterContainer button { 18 | border: 0; 19 | background-color: #252525; 20 | cursor: pointer; 21 | padding: 0; 22 | } 23 | 24 | .CounterContainer .container { 25 | padding: 0.5rem; 26 | border-radius: 2.2rem; 27 | border: 2px solid white; 28 | text-align: center; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /examples/src/ExampleComponents/AnimatedCounter/AnimatedCounter.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './AnimatedCounter.css'; 3 | import { ChevronUpIcon, ChevronDownIcon } from '@heroicons/react/solid'; 4 | import { useMotionAnimate } from '../../../../src/index'; 5 | 6 | const ICON_STYLES = { color: 'white', width: '1.4rem', height: 'auto' }; 7 | 8 | function AnimatedCounter() { 9 | const currentCounter = React.useRef(null); 10 | const { play } = useMotionAnimate( 11 | currentCounter, 12 | { y: [5, 20, -10, 0], opacity: [1, 0, 0, 1] }, 13 | { duration: 0.5 }, 14 | ); 15 | const { play: playDecrease } = useMotionAnimate( 16 | currentCounter, 17 | { y: [0, -10, 20, 0], opacity: [1, 0, 0, 1] }, 18 | { duration: 0.5 }, 19 | ); 20 | 21 | const [counter, setCounter] = React.useState(0); 22 | 23 | const increase = () => { 24 | play(); 25 | setTimeout(() => { 26 | setCounter(counter + 1); 27 | }, 100); 28 | }; 29 | const descrease = () => { 30 | playDecrease(); 31 | setTimeout(() => { 32 | setCounter(counter - 1); 33 | }, 100); 34 | }; 35 | 36 | return ( 37 |
38 |
39 | 42 | 43 |

{counter}

44 | 45 | 48 |
49 |
50 | ); 51 | } 52 | 53 | export default AnimatedCounter; 54 | -------------------------------------------------------------------------------- /examples/src/ExampleComponents/AnimatingElements/AnimatingElements.module.css: -------------------------------------------------------------------------------- 1 | .App { 2 | width: 100%; 3 | display: flex; 4 | flex-direction: column; 5 | justify-content: center; 6 | align-items: center; 7 | background-color: #f0f0f0; 8 | height: 100vh; 9 | } 10 | 11 | .gif { 12 | width: auto; 13 | border-radius: 1rem; 14 | } 15 | .container { 16 | display: grid; 17 | grid-template-columns: 1fr 1fr; 18 | gap: 2rem; 19 | align-items: center; 20 | } 21 | 22 | .heading { 23 | color: rgb(31, 31, 31); 24 | opacity: 0; 25 | font-weight: 700; 26 | margin: 0; 27 | } 28 | 29 | .App p { 30 | margin: 0; 31 | padding: 0; 32 | opacity: 0; 33 | color: grey; 34 | } 35 | 36 | .App button { 37 | border: 1px solid #e4e4e4; 38 | padding: 5px 15px; 39 | border-radius: 6px; 40 | background: white; 41 | cursor: pointer; 42 | transition: 0.3s all; 43 | } 44 | 45 | .App button:disabled { 46 | cursor: not-allowed; 47 | } 48 | 49 | .App button { 50 | margin-bottom: 3rem; 51 | } 52 | 53 | -------------------------------------------------------------------------------- /examples/src/ExampleComponents/AnimatingElements/AnimatingElements.tsx: -------------------------------------------------------------------------------- 1 | import { useMotionTimeline } from '../../../../src/index'; 2 | import { useEffect, useRef } from 'react'; 3 | import Image from './mind-blown-explosion.gif'; 4 | import classes from './AnimatingElements.module.css'; 5 | 6 | export default function AnimatingElements() { 7 | const gifRef = useRef(null); 8 | const { play, isFinished, replay } = useMotionTimeline( 9 | [ 10 | // You can use Refs too! 11 | [gifRef, { scale: [0, 1.2], opacity: 1 }], 12 | [`.${classes.heading}`, { y: [50, 0], opacity: [0, 1] }], 13 | [`.${classes.container} p`, { opacity: 1 }], 14 | ], 15 | { duration: 2 }, 16 | ); 17 | 18 | useEffect(() => { 19 | play(); 20 | }, []); 21 | 22 | return ( 23 |
24 | 27 | 28 |
29 | mind explosion gif 35 |
36 |

Tanvesh

37 |

@sarve__tanvesh

38 |
39 |
40 |
41 | ); 42 | } 43 | -------------------------------------------------------------------------------- /examples/src/ExampleComponents/AnimatingElements/mind-blown-explosion.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanvesh01/motion-hooks/208813a07eb5962e136f87545af9533ba29826a1/examples/src/ExampleComponents/AnimatingElements/mind-blown-explosion.gif -------------------------------------------------------------------------------- /examples/src/ExampleComponents/AnimatingList/AnimatingList.css: -------------------------------------------------------------------------------- 1 | .listContainer { 2 | width: 100%; 3 | display: flex; 4 | flex-direction: column; 5 | justify-content: center; 6 | align-items: center; 7 | background-color: #f2f2f2; 8 | height: 100vh; 9 | } 10 | 11 | .listContainer button { 12 | border: 1px solid #e4e4e4; 13 | padding: 5px 15px; 14 | border-radius: 6px; 15 | background: white; 16 | cursor: pointer; 17 | transition: 0.3s all; 18 | } 19 | 20 | .listContainer button:disabled { 21 | cursor: not-allowed; 22 | } 23 | 24 | .list { 25 | list-style: none; 26 | } 27 | 28 | .listItem { 29 | opacity: 0; 30 | border: 1px solid #e5e5e5; 31 | margin: 1rem 0; 32 | padding: 14px 15px; 33 | border-radius: 0.3rem; 34 | font-weight: 500; 35 | background-color: white; 36 | box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); 37 | } 38 | 39 | .listItem p { 40 | font-size: 14px; 41 | font-weight: 400; 42 | margin: 4px 0 0 0; 43 | } 44 | -------------------------------------------------------------------------------- /examples/src/ExampleComponents/AnimatingList/AnimatingList.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | import { useMotionAnimate } from '../../../../src'; 3 | import { stagger } from 'motion'; 4 | import './AnimatingList.css'; 5 | 6 | function AnimatingList() { 7 | const { play, isFinished, replay } = useMotionAnimate( 8 | '.listItem', 9 | { y: -20, opacity: 1 }, 10 | { 11 | delay: stagger(0.3), 12 | duration: 0.5, 13 | easing: [0.22, 0.03, 0.26, 1], 14 | }, 15 | ); 16 | 17 | // Play the animation on mount of the component 18 | useEffect(() => { 19 | play(); 20 | }, []); 21 | 22 | return ( 23 | // Replay the animation anytime by calling a function, anywhere 24 |
25 | 28 | 29 |
    30 |
  • Buy a Turtle
  • 31 |
  • 32 | Name him 33 |

    "The Speed of Light"

    34 |
  • 35 |
  • 36 | Claim that you can Run faster 37 |

    Than the "The Speed of Light"

    38 |
  • 39 |
40 |
41 | ); 42 | } 43 | 44 | export default AnimatingList; 45 | -------------------------------------------------------------------------------- /examples/src/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /examples/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /examples/src/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom' 3 | import './index.css' 4 | import App from './App' 5 | 6 | ReactDOM.render( 7 | 8 | 9 | , 10 | document.getElementById('root') 11 | ) 12 | -------------------------------------------------------------------------------- /examples/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["./src"], 20 | "exclude": ["node_modules"] 21 | } 22 | -------------------------------------------------------------------------------- /examples/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "motion-hooks", 3 | "version": "0.1.1", 4 | "description": "A simple Hooks wrapper over Motion One, An animation library, built on the Web Animations API for the smallest filesize and the fastest performance.", 5 | "author": "tanvesh01", 6 | "license": "MIT", 7 | "repository": "tanvesh01/motion-hooks", 8 | "homepage": "https://github.com/tanvesh01/motion-hooks", 9 | "bugs": { 10 | "url": "https://github.com/tanvesh01/motion-hooks/issues", 11 | "email": "sarvetanvesh01@gmail.com" 12 | }, 13 | "main": "dist/index.js", 14 | "module": "dist/index.esm.min.js", 15 | "types": "dist/index.d.ts", 16 | "scripts": { 17 | "build": "rollup -c", 18 | "start": "rollup -c -w", 19 | "test": "jest" 20 | }, 21 | "jest": { 22 | "transform": { 23 | ".(ts|tsx)": "ts-jest" 24 | }, 25 | "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$", 26 | "moduleFileExtensions": [ 27 | "ts", 28 | "tsx", 29 | "js" 30 | ], 31 | "modulePathIgnorePatterns": [ 32 | "/dist/" 33 | ] 34 | }, 35 | "peerDependencies": { 36 | "motion": "^10.11.1", 37 | "react": ">= 17.0.2", 38 | "react-dom": ">= 17.0.2" 39 | }, 40 | "devDependencies": { 41 | "@motionone/types": "^10.9.0", 42 | "@testing-library/react-hooks": "^8.0.1", 43 | "@types/jest": "^26.0.7", 44 | "@types/react": "^16.3.13", 45 | "@types/react-dom": "^16.0.5", 46 | "babel-core": "^6.26.3", 47 | "babel-runtime": "^6.26.0", 48 | "eslint-plugin-react-hooks": "^4.0.8", 49 | "jest": "^26.1.0", 50 | "react": "^17.0.2", 51 | "react-dom": "^17.0.2", 52 | "rollup": "^2.57.0", 53 | "rollup-plugin-sass": "^1.2.12", 54 | "rollup-plugin-terser": "^7.0.2", 55 | "rollup-plugin-typescript2": "^0.30.0", 56 | "ts-jest": "^26.1.3", 57 | "typescript": "^3.8.3" 58 | }, 59 | "files": [ 60 | "dist" 61 | ], 62 | "keywords": [ 63 | "react", 64 | "react hooks", 65 | "typescript", 66 | "npm" 67 | ] 68 | } 69 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from 'rollup-plugin-typescript2'; 2 | import { terser } from 'rollup-plugin-terser'; 3 | 4 | import pkg from './package.json'; 5 | 6 | export default { 7 | input: 'src/index.ts', 8 | output: [ 9 | { 10 | file: pkg.module, 11 | format: 'esm', 12 | exports: 'named', 13 | sourcemap: true, 14 | strict: false, 15 | plugins: [terser()], 16 | }, 17 | { 18 | file: pkg.main, 19 | format: 'cjs', 20 | exports: 'named', 21 | sourcemap: true, 22 | strict: false, 23 | }, 24 | ], 25 | plugins: [typescript()], 26 | external: ['react', 'react-dom', 'motion'], 27 | }; 28 | -------------------------------------------------------------------------------- /src/helpers/utils.ts: -------------------------------------------------------------------------------- 1 | import { TimelineDefinition } from '@motionone/dom/types/timeline/types'; 2 | import { SequenceDefination } from '../hooks/useMotionTimeline/useMotionTimelineTypes'; 3 | 4 | export const isOfType = ( 5 | varToBeChecked: any, 6 | propertyToCheckFor: keyof T, 7 | ): varToBeChecked is T => (varToBeChecked as T)[propertyToCheckFor] !== undefined; 8 | 9 | export const convertRefsToElement = ( 10 | sequence: SequenceDefination, 11 | ): TimelineDefinition => { 12 | const newArray = [...sequence]; 13 | newArray.forEach((array) => { 14 | if (isOfType(array[0], 'current')) { 15 | array[0] = array[0].current; 16 | } 17 | }); 18 | return newArray as TimelineDefinition; 19 | }; 20 | -------------------------------------------------------------------------------- /src/hooks/useMotionAnimate/index.ts: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | 3 | import { animate, AnimationControls } from 'motion'; 4 | 5 | import { 6 | AcceptedElements, 7 | AnimationListOptions, 8 | MotionKeyframesDefinition, 9 | } from '@motionone/dom/types/animate/types'; 10 | 11 | interface UseAnimationTypes { 12 | onFinish: (res: (value?: unknown) => void) => void; 13 | } 14 | 15 | /** 16 | * `useMotionAnimate` returns `animateInstance`(Animation Controls) returned by `animate` and some helper functions and state 17 | * for Example: `play`, `reset`, `replay` and `isFinished` 18 | * @param selector - The target element, can be string or a ref 19 | * @param keyframes - Element will animate from its current style to those defined in the keyframe. Refer to [motion's docs](https://motion.dev/dom/animate#keyframes) for more. 20 | * @param options - Optional parameter. Refer to [motion doc's](https://motion.dev/dom/animate#options) for the values you could pass to this. 21 | * @param events - Pass functions of whatever you want to happen when a event like `onFinish` happens. 22 | */ 23 | export const useMotionAnimate = ( 24 | selector: React.RefObject | string, 25 | keyframes: MotionKeyframesDefinition, 26 | options?: AnimationListOptions | undefined, 27 | events?: UseAnimationTypes, 28 | ) => { 29 | const [animateInstance, setAnimateInstance] = useState( 30 | null, 31 | ); 32 | const [isFinished, setIsFinished] = useState(false); 33 | const play = async () => { 34 | if (selector) { 35 | let selectedType: AcceptedElements; 36 | 37 | if (typeof selector === 'string') { 38 | selectedType = selector; 39 | } else { 40 | selectedType = selector.current; 41 | } 42 | 43 | if (selectedType) { 44 | const currentAnimateInstance = animate( 45 | selectedType, 46 | keyframes, 47 | options, 48 | ); 49 | setIsFinished(false); 50 | setAnimateInstance(currentAnimateInstance); 51 | await currentAnimateInstance.finished.then((res) => { 52 | events && events.onFinish(res); 53 | setIsFinished(true); 54 | }); 55 | } 56 | } 57 | }; 58 | 59 | const reset = () => { 60 | animateInstance && animateInstance.stop(); 61 | if (typeof selector !== 'string' && selector.current) { 62 | selector.current.style = null; 63 | } else if (typeof selector === 'string') { 64 | let selectedElements: NodeListOf = 65 | document.querySelectorAll(selector); 66 | 67 | selectedElements.forEach((el) => { 68 | el.style && el.removeAttribute('style'); 69 | }); 70 | } 71 | }; 72 | 73 | const replay = () => { 74 | reset(); 75 | isFinished && play(); 76 | }; 77 | 78 | return { 79 | animateInstance, 80 | play, 81 | reset, 82 | replay, 83 | isFinished, 84 | }; 85 | }; 86 | -------------------------------------------------------------------------------- /src/hooks/useMotionTimeline/index.ts: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | 3 | import { timeline, AnimationControls } from 'motion'; 4 | import { convertRefsToElement, isOfType } from '../../helpers/utils'; 5 | import { TimelineOptions } from '@motionone/dom/types/timeline'; 6 | import { 7 | SequenceDefination, 8 | UseAnimationTypes, 9 | UseMotionTimelineReturn, 10 | } from './useMotionTimelineTypes'; 11 | 12 | /** 13 | * `useMotionTimeline` returns `timelineInstance` (Animation Controls) that are returned by `timeline` and some helper functions and state 14 | * for Example: `play`, `reset`, `replay` and `isFinished` 15 | * @param sequence - `sequence` is an array, defines animations with the same settings as the animate function. In the arrays, Element can be either a string or a ref. 16 | * @param options - Optional parameter. Refer to [motion doc's](https://motion.dev/dom/timeline#options) for the values you could pass into this. 17 | * @param events - Pass functions of whatever you want to happen when a event like `onFinish` happens. 18 | */ 19 | export const useMotionTimeline = ( 20 | sequence: SequenceDefination, 21 | options?: TimelineOptions, 22 | events?: UseAnimationTypes, 23 | ): UseMotionTimelineReturn => { 24 | const [timelineInstance, setTimelineInstance] = 25 | useState(null); 26 | const [isFinished, setIsFinished] = useState(false); 27 | 28 | const play = async () => { 29 | const currentTimelineInstance = timeline( 30 | convertRefsToElement(sequence), 31 | options, 32 | ); 33 | setIsFinished(false); 34 | setTimelineInstance(currentTimelineInstance); 35 | await currentTimelineInstance.finished.then((res) => { 36 | events && events.onFinish(res); 37 | setIsFinished(true); 38 | }); 39 | }; 40 | 41 | const reset = () => { 42 | timelineInstance && timelineInstance.stop(); 43 | sequence.forEach((el) => { 44 | let selector = el[0]; 45 | if (isOfType(selector, 'current')) { 46 | selector.current.style = null; 47 | } else if (typeof selector === 'string') { 48 | let selectedElements: NodeListOf = 49 | document.querySelectorAll(selector); 50 | 51 | selectedElements.forEach((el) => { 52 | el.style && el.removeAttribute('style'); 53 | }); 54 | } 55 | }); 56 | }; 57 | 58 | const replay = () => { 59 | reset(); 60 | isFinished && play(); 61 | }; 62 | 63 | return { 64 | timelineInstance, 65 | play, 66 | reset, 67 | replay, 68 | isFinished, 69 | }; 70 | }; 71 | -------------------------------------------------------------------------------- /src/hooks/useMotionTimeline/useMotionTimelineTypes.ts: -------------------------------------------------------------------------------- 1 | import { AnimationControls } from 'motion'; 2 | 3 | import { 4 | AcceptedElements, 5 | AnimationListOptions, 6 | MotionKeyframesDefinition, 7 | } from '@motionone/dom/types/animate/types'; 8 | 9 | export interface UseAnimationTypes { 10 | onFinish: (res: (value?: unknown) => void) => void; 11 | } 12 | 13 | type ModifiedAcceptedElements = AcceptedElements | React.RefObject; 14 | 15 | type segment = 16 | | [ModifiedAcceptedElements, MotionKeyframesDefinition] 17 | | [ModifiedAcceptedElements, MotionKeyframesDefinition, AnimationListOptions]; 18 | 19 | type SequenceDefination = segment[]; 20 | 21 | export interface UseMotionTimelineReturn { 22 | play: () => void; 23 | reset: () => void; 24 | replay: () => void; 25 | isFinished: boolean; 26 | timelineInstance: AnimationControls | null; 27 | } 28 | 29 | export type { SequenceDefination }; 30 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { useMotionAnimate } from './hooks/useMotionAnimate'; 2 | export { useMotionTimeline } from './hooks/useMotionTimeline'; 3 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "dist", 4 | "module": "esnext", 5 | "target": "es5", 6 | "lib": ["es6", "dom", "es2016", "es2017"], 7 | "sourceMap": true, 8 | "allowJs": false, 9 | "jsx": "react", 10 | "declaration": true, 11 | "moduleResolution": "node", 12 | "forceConsistentCasingInFileNames": true, 13 | "noImplicitReturns": true, 14 | "noImplicitThis": true, 15 | "noImplicitAny": true, 16 | "strictNullChecks": true, 17 | "suppressImplicitAnyIndexErrors": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "esModuleInterop": true, 21 | "strict": true 22 | }, 23 | "include": ["src"], 24 | "exclude": ["node_modules", "dist", "example", "rollup.config.js"] 25 | } 26 | --------------------------------------------------------------------------------