├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── _readme ├── custom-animation.webp ├── docs.md ├── example-mobile.gif ├── example-pc.gif └── update.md ├── examples ├── next-app-router │ ├── .gitignore │ ├── README.md │ ├── eslint.config.mjs │ ├── next.config.ts │ ├── package.json │ ├── public │ │ ├── file.svg │ │ ├── globe.svg │ │ ├── next.svg │ │ ├── vercel.svg │ │ └── window.svg │ ├── src │ │ └── app │ │ │ ├── favicon.ico │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ ├── tsconfig.json │ └── yarn.lock ├── next-page-router │ ├── .eslintrc.json │ ├── .gitignore │ ├── README.md │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages │ │ ├── _app.tsx │ │ └── index.tsx │ ├── public │ │ ├── favicon.ico │ │ └── vercel.svg │ ├── styles │ │ ├── Home.module.css │ │ └── globals.css │ ├── tsconfig.json │ └── yarn.lock └── react-19 │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── robots.txt │ ├── src │ ├── App.tsx │ └── index.tsx │ ├── tsconfig.json │ └── yarn.lock ├── package.json ├── src ├── Animator.tsx ├── ScrollContainer.tsx ├── ScrollPage.tsx ├── animations │ ├── AnimationTool.ts │ ├── FadeAnimation.ts │ ├── MoveAnimation.ts │ ├── StickyAnimation.ts │ ├── ZoomAnimation.ts │ └── index.ts ├── constants │ ├── index.ts │ ├── initialScrollData.ts │ └── initialScrollPage.ts ├── index.ts ├── stores │ ├── ScrollDataContext.ts │ ├── ScrollPageContext.ts │ └── index.ts ├── types │ ├── Animation.ts │ ├── ScrollData.ts │ ├── ScrollPage.ts │ ├── Style.ts │ └── index.ts └── utils │ ├── computeStyle.ts │ ├── environment.ts │ ├── index.ts │ └── interpolation.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | /.pnp 4 | .pnp.js 5 | 6 | # testing 7 | /coverage 8 | 9 | # build 10 | /dist 11 | /build 12 | /examples/react-scroll-motion.tgz 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | .eslintcache 26 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | /.pnp 4 | .pnp.js 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | 12 | # misc 13 | .DS_Store 14 | .env.local 15 | .env.development.local 16 | .env.test.local 17 | .env.production.local 18 | 19 | npm-debug.log* 20 | yarn-debug.log* 21 | yarn-error.log* 22 | 23 | .eslintcache 24 | 25 | # example files 26 | /examples/**/* 27 | /src/**/* 28 | yarn.lock 29 | /_readme/**/* 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Dante Chun (GitHub: 1000ship) 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 |

🎞 react-scroll-motion ✨

2 |

3 | 4 | Version 5 | 6 | 7 | Documentation 8 | 9 | 10 | Maintenance 11 | 12 | 13 | License: MIT 14 | 15 |

16 | 17 | 18 | > Easy to make scroll animation with ReactJS 19 | 20 | ## Install 21 | 22 | ```sh 23 | # Use npm 24 | npm install react-scroll-motion 25 | 26 | # Use yarn 27 | yarn add react-scroll-motion 28 | ``` 29 | 30 | ## Preview 31 | 32 | | PC | Mobile | 33 | | ------------------------------------------------------------ | ------------------------------------------------------------ | 34 | | Preview PC | Preview Mobile | 35 | 36 | - [View on deployed example](https://1000ship.github.io/react-scroll-motion/) 37 | 38 | 39 | ## Import components/functions 40 | 41 | ### ReactJS 42 | 43 | ```jsx 44 | import { Animator, ScrollContainer, ScrollPage, batch, Fade, FadeIn, FadeOut, Move, MoveIn, MoveOut, Sticky, StickyIn, StickyOut, Zoom, ZoomIn, ZoomOut } from "react-scroll-motion"; 45 | ``` 46 | 47 | - React 18 and 19 are fully supported 48 | - [View React 19 example code](https://github.com/1000ship/react-scroll-motion/tree/master/examples/react-19) 49 | 50 | 51 | ### NextJS Page router (v12 or lower) 52 | ```jsx 53 | import dynamic from "next/dynamic"; 54 | const Animator = dynamic( 55 | import("react-scroll-motion").then((it) => it.Animator), 56 | { ssr: false } 57 | ); 58 | 59 | import { ScrollContainer, ScrollPage, batch, Fade, FadeIn, FadeOut, Move, MoveIn, MoveOut, Sticky, StickyIn, StickyOut, Zoom, ZoomIn, ZoomOut } from "react-scroll-motion"; 60 | ``` 61 | - **Check this out especially if you use *NextJS*** 62 | - Please import `Animator` component with `next/dynamic` like upper code, when using NextJS 63 | - [View NextJS Page router example code](https://github.com/1000ship/react-scroll-motion/tree/master/examples/next-page-router) 64 | 65 | ### NextJS App router (v13 or higher) 66 | ```jsx 67 | "use client"; 68 | 69 | import { Animator, ScrollContainer, ScrollPage, batch, Fade, FadeIn, FadeOut, Move, MoveIn, MoveOut, Sticky, StickyIn, StickyOut, Zoom, ZoomIn, ZoomOut } from "react-scroll-motion"; 70 | ``` 71 | - Please add `"use client";` at the top of your file, when using NextJS v13 or higher. 72 | - You don't need to use `next/dynamic` anymore 73 | - [View NextJS App router example code](https://github.com/1000ship/react-scroll-motion/tree/master/examples/next-app-router) 74 | 75 | ## Example Code 76 | ```jsx 77 | const ZoomInScrollOut = batch(StickyIn(), FadeIn(), ZoomIn()); 78 | const FadeUp = batch(Fade(), Move(), Sticky()); 79 | 80 | 81 | 82 | 83 | Let me show you scroll animation 😀 84 | 85 | 86 | 87 | 88 | I'm FadeUpScrollOut ✨ 89 | 90 | 91 | 92 | 93 | I'm FadeUp ⛅️ 94 | 95 | 96 | 97 |
98 | 99 | Hello Guys 👋🏻 100 | Nice to meet you 🙋🏻‍♀️ 101 | - I'm Dante Chun - 102 | Good bye ✋🏻 103 | See you 💛 104 | 105 |
106 |
107 | 108 | 109 | Done 110 |
111 | 112 | There's FadeAnimation, MoveAnimation, StickyAnimation, ZoomAnimation 113 | 114 |
115 |
116 |
117 | ``` 118 | 119 | ## Make custom animation 120 | 121 | Let's make spin animation 😉 122 | 123 | Custom spinning animation 124 | 125 | 126 | ### Javascript 127 | ```jsx 128 | const Spin = (cycle) => 129 | ({ 130 | in: { 131 | style: { 132 | // `p` is number (0~1) 133 | // When just before this page appear, `p` will be 0 134 | // When this page filled your screen, `p` will be 1 135 | transform: (p) => `rotate(${p * 360 * cycle}deg)`, 136 | }, 137 | }, 138 | out: { 139 | style: { 140 | // `p` is number (0~1) 141 | // When this page filled your screen, `p` will be 0 142 | // When just after this page disappear, `p` will be 1 143 | transform: (p) => `rotate(${p * 360 * cycle}deg)`, 144 | }, 145 | }, 146 | }); 147 | ``` 148 | 149 | 150 | ### Typescript 151 | ```tsx 152 | import { Animation } from "react-scroll-motion"; 153 | 154 | const Spin = (cycle: number) => 155 | ({ 156 | in: { 157 | style: { 158 | // `p` is number (0~1) 159 | // When just before this page appear, `p` will be 0 160 | // When this page filled your screen, `p` will be 1 161 | transform: (p) => `rotate(${p * 360 * cycle}deg)`, 162 | }, 163 | }, 164 | out: { 165 | style: { 166 | // `p` is number (0~1) 167 | // When this page filled your screen, `p` will be 0 168 | // When just after this page disappear, `p` will be 1 169 | transform: (p) => `rotate(${p * 360 * cycle}deg)`, 170 | }, 171 | }, 172 | } as Animation); 173 | ``` 174 | 175 | ```jsx 176 | 177 | 178 | // Your custom animation also can be batched! 179 | 180 |

Hello!!!

181 |
182 |
183 | 184 | ... 185 | 186 |
187 | ``` 188 | 189 | ## Notes & References 190 | 191 | - [Simple Docs](_readme/docs.md) 192 | - [Update Notes](_readme/update.md) 193 | 194 | ## Author 195 | 196 | 👤 **Dante Chun** 197 | 198 | * Website: https://dante.company 199 | * Github: [@1000ship](https://github.com/1000ship) 200 | 201 | ## 🤝 Contributing 202 | 203 | Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/1000ship/react-scroll-motion/issues). 204 | 205 | ## Show your support 206 | 207 | Give a ⭐️ if this project helped you! 208 | 209 | ## 📝 License 210 | 211 | Copyright © 2021 [Dante Chun](https://github.com/1000ship).
212 | This project is [MIT](https://github.com/1000ship/react-scroll-motion/blob/master/LICENSE) licensed. 213 | -------------------------------------------------------------------------------- /_readme/custom-animation.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ship/react-scroll-motion/96e058f2966e9f916db466e93f5b530078f1da05/_readme/custom-animation.webp -------------------------------------------------------------------------------- /_readme/docs.md: -------------------------------------------------------------------------------- 1 | # 🎞 react-scroll-motion ✨ 2 | 3 | 4 | 5 | ## Docs 6 | 7 | ### Markup Example 8 | 9 | ```jsx 10 | 11 | 12 | 13 | Let me show you scroll animation 😀 14 | 15 | 16 | 17 | ``` 18 | 19 | - `ScrollContainer` must be root 20 | 21 | - `ScrollContainer`'s children snap option is optional (`'none' | 'mandatory' | 'proximity'`) 22 | 23 | - `ScrollContainer`'s children must be `ScrollPage` 24 | 25 | - `ScrollPage` is `position: relative;` thus, if you want use flexbox, make `div` in `ScrollPage` 26 | 27 | - `Animator` must be in `ScrollPage` 28 | 29 | - `Animator` has `animation` props 30 | 31 | 32 | 33 | ### Animation Object Example 34 | 35 | ```javascript 36 | const ZoomInScrollOut = batch(StickyIn(), FadeIn(), ZoomIn()); 37 | const FadeUp = batch(Fade(), Move(), Sticky()); 38 | ``` 39 | 40 | - You can use just single animation likes `Fade()`, `Move()`, ... 41 | - If you want to combinate serveral animations, use `batch(...animations`) 42 | - There's Fade, Move, Sticky, Zoom 43 | 44 | 45 | 46 | ### Animation Types and Usages 47 | 48 | - `Fade( from:number, to:number )` 49 | - `from` : initial opacity number (0~1), default `0` 50 | - `to` : final opacity number (0~1), default `1` 51 | - `FadeIn( ... )`, `FadeOut( ... )` 52 | - `FadeIn` is for only in-animation 53 | - `FadeOut` is for only out-animation 54 | - Also, `MoveIn`, `MoveOut`, `StickyIn`, `StickyOut`, `ZoomIn`, `ZoomOut` is there, and I'll skip writing descriptions about these In/Out 55 | 56 | - `Move( dx:number, dy:number, outDx:number, outDy:number )` 57 | - `dx` : initial x value (unit: px), default `0` 58 | - `dy` : initial y value (unit: px), default `100` 59 | - `outDx` : final x value, default `null` 60 | - `outDy` : final y value, default `-100` 61 | - If outDx is null, then use dx value rather than outDx, outDy too. 62 | - `Sticky( left:number, top:number )` 63 | - `left` : value of style.left (unit: %), default `50`(%) 64 | - `top` : value of style.top (unit: %), default `50(%)` 65 | - `Zoom( from:number, to:number )` 66 | - `from` : initial scale value, default `10` 67 | - `to` : final scale value, default `1` 68 | - `batch( ...animations )` 69 | 70 | 71 | 72 | ### Animation Object looks like this 73 | 74 | ```javascript 75 | { 76 | in: { 77 | style: { ... } 78 | }, 79 | out: { 80 | style: { ... } 81 | } 82 | } 83 | ``` 84 | 85 | - Each `style` object will be used as react props `style` 86 | 87 | - But, there's one thing different 88 | 89 | ```javascript 90 | { 91 | in: { 92 | style: { 93 | opacity: (value) => value 94 | } 95 | }, 96 | out: { 97 | style: { 98 | opacity: (value) => (1 - value) 99 | } 100 | } 101 | } 102 | ``` 103 | 104 | Like this, style's value can be `function` type with 1 parameter (name is value) 105 | 106 | `value` is number between 0~1, that means percentage of scroll completion 107 | 108 | Upper animation object's opacity value will acts like 0 -> 1 -> 0, during scroll-up 109 | 110 | -------------------------------------------------------------------------------- /_readme/example-mobile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ship/react-scroll-motion/96e058f2966e9f916db466e93f5b530078f1da05/_readme/example-mobile.gif -------------------------------------------------------------------------------- /_readme/example-pc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ship/react-scroll-motion/96e058f2966e9f916db466e93f5b530078f1da05/_readme/example-pc.gif -------------------------------------------------------------------------------- /_readme/update.md: -------------------------------------------------------------------------------- 1 | # Update Notes 2 | 3 | > The notes is written since version 0.2.0 4 | 5 | ## version 0.2.0 6 | 7 | - Fix rendering error with StickyAnimation on mobile iOS device 8 | - In Safari on iOS, `window.innerHeight` value is weired when scroll up and down 9 | - Use `window.screen.height` rather than `innerHeight` when if iOS Safari 10 | - Recognize environment data likes OS, browser from `navigator.userAgent` 11 | - Correct some mistype 12 | - Create update notes 13 | 14 | ## version 0.2.3 15 | 16 | - Fix typescript error on `Batch` 17 | - Fix mis-typo in README 18 | - Fix CSS styles on `scroll-snap` 19 | 20 | 21 | ## version 0.2.4 22 | 23 | - Fix lots of typescript error 24 | 25 | ## version 0.2.5 26 | 27 | - Fix NextJS error 28 | - `ReferenceError: navigator is not defined` 29 | 30 | ## version 0.2.6 31 | 32 | - Remove unnecessary files on npm.js publishing 33 | 34 | ## version 0.3.0 35 | 36 | - Support ReactJS 18 37 | - Update README and fix tons of things for supporting NextJS 38 | - Change types/interface names 39 | - `IAnimation` to `Animation` 40 | - `IStyle` to `Style` 41 | - `page` props is deprecated. This value will be auto-assign, so you don't have to set it. 42 | 43 | ## version 0.3.3 44 | 45 | - Added 'use client' on top of `ScrollContainer` for supporting NextJS v13+ 46 | 47 | ## version 0.3.4 48 | 49 | - Fix scroll parent is not working 50 | - Update example codes 51 | 52 | ## version 0.3.5 53 | 54 | - Support React 19 55 | - Fix minor type errors when in the React 19 56 | -------------------------------------------------------------------------------- /examples/next-app-router/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.* 7 | .yarn/* 8 | !.yarn/patches 9 | !.yarn/plugins 10 | !.yarn/releases 11 | !.yarn/versions 12 | 13 | # testing 14 | /coverage 15 | 16 | # next.js 17 | /.next/ 18 | /out/ 19 | 20 | # production 21 | /build 22 | 23 | # misc 24 | .DS_Store 25 | *.pem 26 | 27 | # debug 28 | npm-debug.log* 29 | yarn-debug.log* 30 | yarn-error.log* 31 | .pnpm-debug.log* 32 | 33 | # env files (can opt-in for committing if needed) 34 | .env* 35 | 36 | # vercel 37 | .vercel 38 | 39 | # typescript 40 | *.tsbuildinfo 41 | next-env.d.ts 42 | -------------------------------------------------------------------------------- /examples/next-app-router/README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | # or 12 | pnpm dev 13 | # or 14 | bun dev 15 | ``` 16 | 17 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 18 | 19 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. 20 | 21 | This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. 22 | 23 | ## Learn More 24 | 25 | To learn more about Next.js, take a look at the following resources: 26 | 27 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 28 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 29 | 30 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! 31 | 32 | ## Deploy on Vercel 33 | 34 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 35 | 36 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. 37 | -------------------------------------------------------------------------------- /examples/next-app-router/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { dirname } from "path"; 2 | import { fileURLToPath } from "url"; 3 | import { FlatCompat } from "@eslint/eslintrc"; 4 | 5 | const __filename = fileURLToPath(import.meta.url); 6 | const __dirname = dirname(__filename); 7 | 8 | const compat = new FlatCompat({ 9 | baseDirectory: __dirname, 10 | }); 11 | 12 | const eslintConfig = [ 13 | ...compat.extends("next/core-web-vitals", "next/typescript"), 14 | ]; 15 | 16 | export default eslintConfig; 17 | -------------------------------------------------------------------------------- /examples/next-app-router/next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from "next"; 2 | 3 | const nextConfig: NextConfig = { 4 | /* config options here */ 5 | }; 6 | 7 | export default nextConfig; 8 | -------------------------------------------------------------------------------- /examples/next-app-router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-app-router", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "reinstall:local": "yarn remove react-scroll-motion && yarn add ../react-scroll-motion.tgz --no-cache", 7 | "reinstall:remote": "yarn remove react-scroll-motion && yarn add react-scroll-motion --no-cache", 8 | "dev": "next dev --turbopack", 9 | "build": "next build", 10 | "start": "next start", 11 | "lint": "next lint" 12 | }, 13 | "dependencies": { 14 | "next": "15.1.6", 15 | "react": "^19.0.0", 16 | "react-dom": "^19.0.0", 17 | "react-scroll-motion": "../react-scroll-motion.tgz" 18 | }, 19 | "devDependencies": { 20 | "@eslint/eslintrc": "^3", 21 | "@types/node": "^20", 22 | "@types/react": "^19", 23 | "@types/react-dom": "^19", 24 | "eslint": "^9", 25 | "eslint-config-next": "15.1.6", 26 | "typescript": "^5" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /examples/next-app-router/public/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/next-app-router/public/globe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/next-app-router/public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/next-app-router/public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/next-app-router/public/window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/next-app-router/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ship/react-scroll-motion/96e058f2966e9f916db466e93f5b530078f1da05/examples/next-app-router/src/app/favicon.ico -------------------------------------------------------------------------------- /examples/next-app-router/src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Geist, Geist_Mono } from "next/font/google"; 3 | 4 | const geistSans = Geist({ 5 | variable: "--font-geist-sans", 6 | subsets: ["latin"], 7 | }); 8 | 9 | const geistMono = Geist_Mono({ 10 | variable: "--font-geist-mono", 11 | subsets: ["latin"], 12 | }); 13 | 14 | export const metadata: Metadata = { 15 | title: "React Scroll Motion", 16 | description: "Example of React Scroll Motion", 17 | }; 18 | 19 | export default function RootLayout({ 20 | children, 21 | }: Readonly<{ 22 | children: React.ReactNode; 23 | }>) { 24 | return ( 25 | 26 | 30 | {children} 31 | 32 | 33 | ); 34 | } 35 | -------------------------------------------------------------------------------- /examples/next-app-router/src/app/page.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { 4 | Animation, 5 | Animator, 6 | batch, 7 | Fade, 8 | FadeIn, 9 | Move, 10 | MoveIn, 11 | MoveOut, 12 | ScrollContainer, 13 | ScrollPage, 14 | Sticky, 15 | StickyIn, 16 | ZoomIn, 17 | } from "react-scroll-motion"; 18 | 19 | export default function Home() { 20 | // Batch animations 21 | const ZoomInScrollOut = batch(StickyIn(), FadeIn(), ZoomIn()); 22 | const FadeUp = batch(Fade(), Move(), Sticky()); 23 | 24 | // Make custom animation 25 | const Spin = (cycle: number, direction: "in" | "out" | "both" = "both") => 26 | ({ 27 | in: 28 | direction === "in" || direction === "both" 29 | ? { style: { transform: (p) => `rotate(${p * 360 * cycle}deg)` } } 30 | : {}, 31 | out: 32 | direction === "out" || direction === "both" 33 | ? { style: { transform: (p) => `rotate(${p * 360 * cycle}deg)` } } 34 | : {}, 35 | } as Animation); 36 | 37 | return ( 38 |
39 | 40 | 41 | 42 |

Hello!!!

43 |
44 |
45 | 46 | 47 | 48 | Let me show you scroll animation 😀 49 | 50 | 51 | 52 | 53 | 54 | I'm FadeUpScrollOut ✨ 55 | 56 | 57 | 58 | 59 | I'm FadeUp ⛅️ 60 | 61 | 62 | 63 |
71 | 72 | Hello Guys 👋🏻 73 | 74 | Nice to meet you 🙋🏻‍♀️ 75 | 76 | - I'm Dante Chun - 77 | Good bye ✋🏻 78 | See you 💛 79 | 80 |
81 |
82 | 83 | 84 | Done 85 |
86 | 87 | There's FadeAnimation, MoveAnimation, StickyAnimation, 88 | ZoomAnimation 89 | 90 |
91 |
92 |
93 |
94 | ); 95 | } 96 | -------------------------------------------------------------------------------- /examples/next-app-router/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./src/*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /examples/next-page-router/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals", 3 | "rules": { 4 | "react/no-unescaped-entities": "off" 5 | } 6 | } -------------------------------------------------------------------------------- /examples/next-page-router/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | -------------------------------------------------------------------------------- /examples/next-page-router/README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | ``` 12 | 13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 14 | 15 | You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. 16 | 17 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. 18 | 19 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. 20 | 21 | ## Learn More 22 | 23 | To learn more about Next.js, take a look at the following resources: 24 | 25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 27 | 28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 29 | 30 | ## Deploy on Vercel 31 | 32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 33 | 34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 35 | -------------------------------------------------------------------------------- /examples/next-page-router/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /examples/next-page-router/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | } 5 | 6 | module.exports = nextConfig 7 | -------------------------------------------------------------------------------- /examples/next-page-router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "examples", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "reinstall:local": "yarn remove react-scroll-motion && yarn add ../react-scroll-motion.tgz --no-cache", 7 | "reinstall:remote": "yarn remove react-scroll-motion && yarn add react-scroll-motion --no-cache", 8 | "dev": "next dev", 9 | "build": "next build", 10 | "start": "next start", 11 | "lint": "next lint" 12 | }, 13 | "dependencies": { 14 | "next": "12.1.6", 15 | "react": "18.1.0", 16 | "react-dom": "18.1.0", 17 | "react-scroll-motion": "file:../../" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^17.0.39", 21 | "eslint": "8.17.0", 22 | "eslint-config-next": "12.1.6" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /examples/next-page-router/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import '../styles/globals.css' 2 | 3 | function MyApp({ Component, pageProps }) { 4 | return 5 | } 6 | 7 | export default MyApp 8 | -------------------------------------------------------------------------------- /examples/next-page-router/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import dynamic from "next/dynamic"; 2 | import { useRef } from "react"; 3 | 4 | const Animator = dynamic( 5 | import("react-scroll-motion").then((it) => it.Animator), 6 | { ssr: false } 7 | ); 8 | 9 | import { 10 | Animation, 11 | batch, 12 | Fade, 13 | FadeIn, 14 | Move, 15 | MoveIn, 16 | MoveOut, 17 | ScrollContainer, 18 | ScrollPage, 19 | Sticky, 20 | StickyIn, 21 | ZoomIn, 22 | } from "react-scroll-motion"; 23 | 24 | export default function Home() { 25 | // Batch animations 26 | const ZoomInScrollOut = batch(StickyIn(), FadeIn(), ZoomIn()); 27 | const FadeUp = batch(Fade(), Move(), Sticky()); 28 | 29 | // Make custom animation 30 | const Spin = (cycle: number, direction: "in" | "out" | "both" = "both") => 31 | ({ 32 | in: 33 | direction === "in" || direction === "both" 34 | ? { style: { transform: (p) => `rotate(${p * 360 * cycle}deg)` } } 35 | : {}, 36 | out: 37 | direction === "out" || direction === "both" 38 | ? { style: { transform: (p) => `rotate(${p * 360 * cycle}deg)` } } 39 | : {}, 40 | } as Animation); 41 | 42 | const parent = useRef(null); 43 | return ( 44 |
45 |
48 | 49 |
50 | 51 | 52 | 53 |

Hello!!!

54 |
55 |
56 | 57 | 58 | 59 | Let me show you scroll animation 😀 60 | 61 | 62 | 63 | 64 | 65 | I'm FadeUpScrollOut ✨ 66 | 67 | 68 | 69 | 70 | I'm FadeUp ⛅️ 71 | 72 | 73 | 74 |
82 | 83 | Hello Guys 👋🏻 84 | 85 | Nice to meet you 🙋🏻‍♀️ 86 | 87 | - I'm Dante Chun - 88 | Good bye ✋🏻 89 | See you 💛 90 | 91 |
92 |
93 | 94 | 95 | Done 96 |
97 | 98 | There's FadeAnimation, MoveAnimation, StickyAnimation, 99 | ZoomAnimation 100 | 101 |
102 |
103 |
104 |
105 | 106 |
107 |
108 |
109 | ); 110 | } 111 | -------------------------------------------------------------------------------- /examples/next-page-router/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ship/react-scroll-motion/96e058f2966e9f916db466e93f5b530078f1da05/examples/next-page-router/public/favicon.ico -------------------------------------------------------------------------------- /examples/next-page-router/public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /examples/next-page-router/styles/Home.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | padding: 0 2rem; 3 | } 4 | 5 | .main { 6 | min-height: 100vh; 7 | padding: 4rem 0; 8 | flex: 1; 9 | display: flex; 10 | flex-direction: column; 11 | justify-content: center; 12 | align-items: center; 13 | } 14 | 15 | .footer { 16 | display: flex; 17 | flex: 1; 18 | padding: 2rem 0; 19 | border-top: 1px solid #eaeaea; 20 | justify-content: center; 21 | align-items: center; 22 | } 23 | 24 | .footer a { 25 | display: flex; 26 | justify-content: center; 27 | align-items: center; 28 | flex-grow: 1; 29 | } 30 | 31 | .title a { 32 | color: #0070f3; 33 | text-decoration: none; 34 | } 35 | 36 | .title a:hover, 37 | .title a:focus, 38 | .title a:active { 39 | text-decoration: underline; 40 | } 41 | 42 | .title { 43 | margin: 0; 44 | line-height: 1.15; 45 | font-size: 4rem; 46 | } 47 | 48 | .title, 49 | .description { 50 | text-align: center; 51 | } 52 | 53 | .description { 54 | margin: 4rem 0; 55 | line-height: 1.5; 56 | font-size: 1.5rem; 57 | } 58 | 59 | .code { 60 | background: #fafafa; 61 | border-radius: 5px; 62 | padding: 0.75rem; 63 | font-size: 1.1rem; 64 | font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, 65 | Bitstream Vera Sans Mono, Courier New, monospace; 66 | } 67 | 68 | .grid { 69 | display: flex; 70 | align-items: center; 71 | justify-content: center; 72 | flex-wrap: wrap; 73 | max-width: 800px; 74 | } 75 | 76 | .card { 77 | margin: 1rem; 78 | padding: 1.5rem; 79 | text-align: left; 80 | color: inherit; 81 | text-decoration: none; 82 | border: 1px solid #eaeaea; 83 | border-radius: 10px; 84 | transition: color 0.15s ease, border-color 0.15s ease; 85 | max-width: 300px; 86 | } 87 | 88 | .card:hover, 89 | .card:focus, 90 | .card:active { 91 | color: #0070f3; 92 | border-color: #0070f3; 93 | } 94 | 95 | .card h2 { 96 | margin: 0 0 1rem 0; 97 | font-size: 1.5rem; 98 | } 99 | 100 | .card p { 101 | margin: 0; 102 | font-size: 1.25rem; 103 | line-height: 1.5; 104 | } 105 | 106 | .logo { 107 | height: 1em; 108 | margin-left: 0.5rem; 109 | } 110 | 111 | @media (max-width: 600px) { 112 | .grid { 113 | width: 100%; 114 | flex-direction: column; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /examples/next-page-router/styles/globals.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | padding: 0; 4 | margin: 0; 5 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, 6 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 7 | } 8 | 9 | a { 10 | color: inherit; 11 | text-decoration: none; 12 | } 13 | 14 | * { 15 | box-sizing: border-box; 16 | } 17 | -------------------------------------------------------------------------------- /examples/next-page-router/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "strict": false, 12 | "forceConsistentCasingInFileNames": true, 13 | "noEmit": true, 14 | "esModuleInterop": true, 15 | "module": "esnext", 16 | "resolveJsonModule": true, 17 | "isolatedModules": true, 18 | "jsx": "preserve", 19 | "moduleResolution": "Node", 20 | "incremental": true 21 | }, 22 | "include": [ 23 | "next-env.d.ts", 24 | "**/*.ts", 25 | "**/*.tsx" 26 | ], 27 | "exclude": [ 28 | "node_modules" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /examples/next-page-router/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@eslint/eslintrc@^1.3.0": 6 | version "1.4.1" 7 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" 8 | integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== 9 | dependencies: 10 | ajv "^6.12.4" 11 | debug "^4.3.2" 12 | espree "^9.4.0" 13 | globals "^13.19.0" 14 | ignore "^5.2.0" 15 | import-fresh "^3.2.1" 16 | js-yaml "^4.1.0" 17 | minimatch "^3.1.2" 18 | strip-json-comments "^3.1.1" 19 | 20 | "@humanwhocodes/config-array@^0.9.2": 21 | version "0.9.5" 22 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" 23 | integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== 24 | dependencies: 25 | "@humanwhocodes/object-schema" "^1.2.1" 26 | debug "^4.1.1" 27 | minimatch "^3.0.4" 28 | 29 | "@humanwhocodes/object-schema@^1.2.1": 30 | version "1.2.1" 31 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 32 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 33 | 34 | "@next/env@12.1.6": 35 | version "12.1.6" 36 | resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" 37 | integrity sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA== 38 | 39 | "@next/eslint-plugin-next@12.1.6": 40 | version "12.1.6" 41 | resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.6.tgz#dde3f98831f15923b25244588d924c716956292e" 42 | integrity sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw== 43 | dependencies: 44 | glob "7.1.7" 45 | 46 | "@next/swc-android-arm-eabi@12.1.6": 47 | version "12.1.6" 48 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz#79a35349b98f2f8c038ab6261aa9cd0d121c03f9" 49 | integrity sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ== 50 | 51 | "@next/swc-android-arm64@12.1.6": 52 | version "12.1.6" 53 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz#ec08ea61794f8752c8ebcacbed0aafc5b9407456" 54 | integrity sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew== 55 | 56 | "@next/swc-darwin-arm64@12.1.6": 57 | version "12.1.6" 58 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz#d1053805615fd0706e9b1667893a72271cd87119" 59 | integrity sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw== 60 | 61 | "@next/swc-darwin-x64@12.1.6": 62 | version "12.1.6" 63 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz#2d1b926a22f4c5230d5b311f9c56cfdcc406afec" 64 | integrity sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg== 65 | 66 | "@next/swc-linux-arm-gnueabihf@12.1.6": 67 | version "12.1.6" 68 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz#c021918d2a94a17f823106a5e069335b8a19724f" 69 | integrity sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw== 70 | 71 | "@next/swc-linux-arm64-gnu@12.1.6": 72 | version "12.1.6" 73 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz#ac55c07bfabde378dfa0ce2b8fc1c3b2897e81ae" 74 | integrity sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ== 75 | 76 | "@next/swc-linux-arm64-musl@12.1.6": 77 | version "12.1.6" 78 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz#e429f826279894be9096be6bec13e75e3d6bd671" 79 | integrity sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ== 80 | 81 | "@next/swc-linux-x64-gnu@12.1.6": 82 | version "12.1.6" 83 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz#1f276c0784a5ca599bfa34b2fcc0b38f3a738e08" 84 | integrity sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ== 85 | 86 | "@next/swc-linux-x64-musl@12.1.6": 87 | version "12.1.6" 88 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz#1d9933dd6ba303dcfd8a2acd6ac7c27ed41e2eea" 89 | integrity sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag== 90 | 91 | "@next/swc-win32-arm64-msvc@12.1.6": 92 | version "12.1.6" 93 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz#2ef9837f12ca652b1783d72ecb86208906042f02" 94 | integrity sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g== 95 | 96 | "@next/swc-win32-ia32-msvc@12.1.6": 97 | version "12.1.6" 98 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz#74003d0aa1c59dfa56cb15481a5c607cbc0027b9" 99 | integrity sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA== 100 | 101 | "@next/swc-win32-x64-msvc@12.1.6": 102 | version "12.1.6" 103 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" 104 | integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== 105 | 106 | "@nodelib/fs.scandir@2.1.5": 107 | version "2.1.5" 108 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 109 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 110 | dependencies: 111 | "@nodelib/fs.stat" "2.0.5" 112 | run-parallel "^1.1.9" 113 | 114 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 115 | version "2.0.5" 116 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 117 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 118 | 119 | "@nodelib/fs.walk@^1.2.3": 120 | version "1.2.8" 121 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 122 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 123 | dependencies: 124 | "@nodelib/fs.scandir" "2.1.5" 125 | fastq "^1.6.0" 126 | 127 | "@rtsao/scc@^1.1.0": 128 | version "1.1.0" 129 | resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" 130 | integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== 131 | 132 | "@rushstack/eslint-patch@^1.1.3": 133 | version "1.10.4" 134 | resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1" 135 | integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA== 136 | 137 | "@types/json5@^0.0.29": 138 | version "0.0.29" 139 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 140 | integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== 141 | 142 | "@types/node@^17.0.39": 143 | version "17.0.45" 144 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" 145 | integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== 146 | 147 | "@typescript-eslint/parser@^5.21.0": 148 | version "5.62.0" 149 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" 150 | integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== 151 | dependencies: 152 | "@typescript-eslint/scope-manager" "5.62.0" 153 | "@typescript-eslint/types" "5.62.0" 154 | "@typescript-eslint/typescript-estree" "5.62.0" 155 | debug "^4.3.4" 156 | 157 | "@typescript-eslint/scope-manager@5.62.0": 158 | version "5.62.0" 159 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" 160 | integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== 161 | dependencies: 162 | "@typescript-eslint/types" "5.62.0" 163 | "@typescript-eslint/visitor-keys" "5.62.0" 164 | 165 | "@typescript-eslint/types@5.62.0": 166 | version "5.62.0" 167 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" 168 | integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== 169 | 170 | "@typescript-eslint/typescript-estree@5.62.0": 171 | version "5.62.0" 172 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" 173 | integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== 174 | dependencies: 175 | "@typescript-eslint/types" "5.62.0" 176 | "@typescript-eslint/visitor-keys" "5.62.0" 177 | debug "^4.3.4" 178 | globby "^11.1.0" 179 | is-glob "^4.0.3" 180 | semver "^7.3.7" 181 | tsutils "^3.21.0" 182 | 183 | "@typescript-eslint/visitor-keys@5.62.0": 184 | version "5.62.0" 185 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" 186 | integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== 187 | dependencies: 188 | "@typescript-eslint/types" "5.62.0" 189 | eslint-visitor-keys "^3.3.0" 190 | 191 | acorn-jsx@^5.3.2: 192 | version "5.3.2" 193 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 194 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 195 | 196 | acorn@^8.9.0: 197 | version "8.14.0" 198 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" 199 | integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== 200 | 201 | ajv@^6.10.0, ajv@^6.12.4: 202 | version "6.12.6" 203 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 204 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 205 | dependencies: 206 | fast-deep-equal "^3.1.1" 207 | fast-json-stable-stringify "^2.0.0" 208 | json-schema-traverse "^0.4.1" 209 | uri-js "^4.2.2" 210 | 211 | ansi-regex@^5.0.1: 212 | version "5.0.1" 213 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 214 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 215 | 216 | ansi-styles@^4.1.0: 217 | version "4.3.0" 218 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 219 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 220 | dependencies: 221 | color-convert "^2.0.1" 222 | 223 | argparse@^2.0.1: 224 | version "2.0.1" 225 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 226 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 227 | 228 | aria-query@^5.3.2: 229 | version "5.3.2" 230 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" 231 | integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== 232 | 233 | array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: 234 | version "1.0.2" 235 | resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" 236 | integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== 237 | dependencies: 238 | call-bound "^1.0.3" 239 | is-array-buffer "^3.0.5" 240 | 241 | array-includes@^3.1.6, array-includes@^3.1.8: 242 | version "3.1.8" 243 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" 244 | integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== 245 | dependencies: 246 | call-bind "^1.0.7" 247 | define-properties "^1.2.1" 248 | es-abstract "^1.23.2" 249 | es-object-atoms "^1.0.0" 250 | get-intrinsic "^1.2.4" 251 | is-string "^1.0.7" 252 | 253 | array-union@^2.1.0: 254 | version "2.1.0" 255 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 256 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 257 | 258 | array.prototype.findlast@^1.2.5: 259 | version "1.2.5" 260 | resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" 261 | integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== 262 | dependencies: 263 | call-bind "^1.0.7" 264 | define-properties "^1.2.1" 265 | es-abstract "^1.23.2" 266 | es-errors "^1.3.0" 267 | es-object-atoms "^1.0.0" 268 | es-shim-unscopables "^1.0.2" 269 | 270 | array.prototype.findlastindex@^1.2.5: 271 | version "1.2.5" 272 | resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" 273 | integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== 274 | dependencies: 275 | call-bind "^1.0.7" 276 | define-properties "^1.2.1" 277 | es-abstract "^1.23.2" 278 | es-errors "^1.3.0" 279 | es-object-atoms "^1.0.0" 280 | es-shim-unscopables "^1.0.2" 281 | 282 | array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: 283 | version "1.3.3" 284 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" 285 | integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== 286 | dependencies: 287 | call-bind "^1.0.8" 288 | define-properties "^1.2.1" 289 | es-abstract "^1.23.5" 290 | es-shim-unscopables "^1.0.2" 291 | 292 | array.prototype.flatmap@^1.3.2, array.prototype.flatmap@^1.3.3: 293 | version "1.3.3" 294 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" 295 | integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== 296 | dependencies: 297 | call-bind "^1.0.8" 298 | define-properties "^1.2.1" 299 | es-abstract "^1.23.5" 300 | es-shim-unscopables "^1.0.2" 301 | 302 | array.prototype.tosorted@^1.1.4: 303 | version "1.1.4" 304 | resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" 305 | integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== 306 | dependencies: 307 | call-bind "^1.0.7" 308 | define-properties "^1.2.1" 309 | es-abstract "^1.23.3" 310 | es-errors "^1.3.0" 311 | es-shim-unscopables "^1.0.2" 312 | 313 | arraybuffer.prototype.slice@^1.0.4: 314 | version "1.0.4" 315 | resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" 316 | integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== 317 | dependencies: 318 | array-buffer-byte-length "^1.0.1" 319 | call-bind "^1.0.8" 320 | define-properties "^1.2.1" 321 | es-abstract "^1.23.5" 322 | es-errors "^1.3.0" 323 | get-intrinsic "^1.2.6" 324 | is-array-buffer "^3.0.4" 325 | 326 | ast-types-flow@^0.0.8: 327 | version "0.0.8" 328 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" 329 | integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== 330 | 331 | available-typed-arrays@^1.0.7: 332 | version "1.0.7" 333 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" 334 | integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== 335 | dependencies: 336 | possible-typed-array-names "^1.0.0" 337 | 338 | axe-core@^4.10.0: 339 | version "4.10.2" 340 | resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.2.tgz#85228e3e1d8b8532a27659b332e39b7fa0e022df" 341 | integrity sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w== 342 | 343 | axobject-query@^4.1.0: 344 | version "4.1.0" 345 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" 346 | integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== 347 | 348 | balanced-match@^1.0.0: 349 | version "1.0.2" 350 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 351 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 352 | 353 | brace-expansion@^1.1.7: 354 | version "1.1.11" 355 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 356 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 357 | dependencies: 358 | balanced-match "^1.0.0" 359 | concat-map "0.0.1" 360 | 361 | braces@^3.0.3: 362 | version "3.0.3" 363 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 364 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 365 | dependencies: 366 | fill-range "^7.1.1" 367 | 368 | call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1: 369 | version "1.0.1" 370 | resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" 371 | integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== 372 | dependencies: 373 | es-errors "^1.3.0" 374 | function-bind "^1.1.2" 375 | 376 | call-bind@^1.0.7, call-bind@^1.0.8: 377 | version "1.0.8" 378 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" 379 | integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== 380 | dependencies: 381 | call-bind-apply-helpers "^1.0.0" 382 | es-define-property "^1.0.0" 383 | get-intrinsic "^1.2.4" 384 | set-function-length "^1.2.2" 385 | 386 | call-bound@^1.0.2, call-bound@^1.0.3: 387 | version "1.0.3" 388 | resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" 389 | integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== 390 | dependencies: 391 | call-bind-apply-helpers "^1.0.1" 392 | get-intrinsic "^1.2.6" 393 | 394 | callsites@^3.0.0: 395 | version "3.1.0" 396 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 397 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 398 | 399 | caniuse-lite@^1.0.30001332: 400 | version "1.0.30001690" 401 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" 402 | integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== 403 | 404 | chalk@^4.0.0: 405 | version "4.1.2" 406 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 407 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 408 | dependencies: 409 | ansi-styles "^4.1.0" 410 | supports-color "^7.1.0" 411 | 412 | color-convert@^2.0.1: 413 | version "2.0.1" 414 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 415 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 416 | dependencies: 417 | color-name "~1.1.4" 418 | 419 | color-name@~1.1.4: 420 | version "1.1.4" 421 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 422 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 423 | 424 | concat-map@0.0.1: 425 | version "0.0.1" 426 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 427 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 428 | 429 | cross-spawn@^7.0.2: 430 | version "7.0.6" 431 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" 432 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 433 | dependencies: 434 | path-key "^3.1.0" 435 | shebang-command "^2.0.0" 436 | which "^2.0.1" 437 | 438 | damerau-levenshtein@^1.0.8: 439 | version "1.0.8" 440 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" 441 | integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== 442 | 443 | data-view-buffer@^1.0.2: 444 | version "1.0.2" 445 | resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" 446 | integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== 447 | dependencies: 448 | call-bound "^1.0.3" 449 | es-errors "^1.3.0" 450 | is-data-view "^1.0.2" 451 | 452 | data-view-byte-length@^1.0.2: 453 | version "1.0.2" 454 | resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" 455 | integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== 456 | dependencies: 457 | call-bound "^1.0.3" 458 | es-errors "^1.3.0" 459 | is-data-view "^1.0.2" 460 | 461 | data-view-byte-offset@^1.0.1: 462 | version "1.0.1" 463 | resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" 464 | integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== 465 | dependencies: 466 | call-bound "^1.0.2" 467 | es-errors "^1.3.0" 468 | is-data-view "^1.0.1" 469 | 470 | debug@^3.2.7: 471 | version "3.2.7" 472 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 473 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 474 | dependencies: 475 | ms "^2.1.1" 476 | 477 | debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: 478 | version "4.4.0" 479 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" 480 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== 481 | dependencies: 482 | ms "^2.1.3" 483 | 484 | deep-is@^0.1.3: 485 | version "0.1.4" 486 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 487 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 488 | 489 | define-data-property@^1.0.1, define-data-property@^1.1.4: 490 | version "1.1.4" 491 | resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" 492 | integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== 493 | dependencies: 494 | es-define-property "^1.0.0" 495 | es-errors "^1.3.0" 496 | gopd "^1.0.1" 497 | 498 | define-properties@^1.1.3, define-properties@^1.2.1: 499 | version "1.2.1" 500 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" 501 | integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== 502 | dependencies: 503 | define-data-property "^1.0.1" 504 | has-property-descriptors "^1.0.0" 505 | object-keys "^1.1.1" 506 | 507 | dir-glob@^3.0.1: 508 | version "3.0.1" 509 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 510 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 511 | dependencies: 512 | path-type "^4.0.0" 513 | 514 | doctrine@^2.1.0: 515 | version "2.1.0" 516 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 517 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 518 | dependencies: 519 | esutils "^2.0.2" 520 | 521 | doctrine@^3.0.0: 522 | version "3.0.0" 523 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 524 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 525 | dependencies: 526 | esutils "^2.0.2" 527 | 528 | dunder-proto@^1.0.0, dunder-proto@^1.0.1: 529 | version "1.0.1" 530 | resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" 531 | integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 532 | dependencies: 533 | call-bind-apply-helpers "^1.0.1" 534 | es-errors "^1.3.0" 535 | gopd "^1.2.0" 536 | 537 | emoji-regex@^9.2.2: 538 | version "9.2.2" 539 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 540 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 541 | 542 | es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9: 543 | version "1.23.9" 544 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606" 545 | integrity sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA== 546 | dependencies: 547 | array-buffer-byte-length "^1.0.2" 548 | arraybuffer.prototype.slice "^1.0.4" 549 | available-typed-arrays "^1.0.7" 550 | call-bind "^1.0.8" 551 | call-bound "^1.0.3" 552 | data-view-buffer "^1.0.2" 553 | data-view-byte-length "^1.0.2" 554 | data-view-byte-offset "^1.0.1" 555 | es-define-property "^1.0.1" 556 | es-errors "^1.3.0" 557 | es-object-atoms "^1.0.0" 558 | es-set-tostringtag "^2.1.0" 559 | es-to-primitive "^1.3.0" 560 | function.prototype.name "^1.1.8" 561 | get-intrinsic "^1.2.7" 562 | get-proto "^1.0.0" 563 | get-symbol-description "^1.1.0" 564 | globalthis "^1.0.4" 565 | gopd "^1.2.0" 566 | has-property-descriptors "^1.0.2" 567 | has-proto "^1.2.0" 568 | has-symbols "^1.1.0" 569 | hasown "^2.0.2" 570 | internal-slot "^1.1.0" 571 | is-array-buffer "^3.0.5" 572 | is-callable "^1.2.7" 573 | is-data-view "^1.0.2" 574 | is-regex "^1.2.1" 575 | is-shared-array-buffer "^1.0.4" 576 | is-string "^1.1.1" 577 | is-typed-array "^1.1.15" 578 | is-weakref "^1.1.0" 579 | math-intrinsics "^1.1.0" 580 | object-inspect "^1.13.3" 581 | object-keys "^1.1.1" 582 | object.assign "^4.1.7" 583 | own-keys "^1.0.1" 584 | regexp.prototype.flags "^1.5.3" 585 | safe-array-concat "^1.1.3" 586 | safe-push-apply "^1.0.0" 587 | safe-regex-test "^1.1.0" 588 | set-proto "^1.0.0" 589 | string.prototype.trim "^1.2.10" 590 | string.prototype.trimend "^1.0.9" 591 | string.prototype.trimstart "^1.0.8" 592 | typed-array-buffer "^1.0.3" 593 | typed-array-byte-length "^1.0.3" 594 | typed-array-byte-offset "^1.0.4" 595 | typed-array-length "^1.0.7" 596 | unbox-primitive "^1.1.0" 597 | which-typed-array "^1.1.18" 598 | 599 | es-define-property@^1.0.0, es-define-property@^1.0.1: 600 | version "1.0.1" 601 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" 602 | integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 603 | 604 | es-errors@^1.3.0: 605 | version "1.3.0" 606 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 607 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 608 | 609 | es-iterator-helpers@^1.2.1: 610 | version "1.2.1" 611 | resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75" 612 | integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w== 613 | dependencies: 614 | call-bind "^1.0.8" 615 | call-bound "^1.0.3" 616 | define-properties "^1.2.1" 617 | es-abstract "^1.23.6" 618 | es-errors "^1.3.0" 619 | es-set-tostringtag "^2.0.3" 620 | function-bind "^1.1.2" 621 | get-intrinsic "^1.2.6" 622 | globalthis "^1.0.4" 623 | gopd "^1.2.0" 624 | has-property-descriptors "^1.0.2" 625 | has-proto "^1.2.0" 626 | has-symbols "^1.1.0" 627 | internal-slot "^1.1.0" 628 | iterator.prototype "^1.1.4" 629 | safe-array-concat "^1.1.3" 630 | 631 | es-object-atoms@^1.0.0: 632 | version "1.0.0" 633 | resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" 634 | integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== 635 | dependencies: 636 | es-errors "^1.3.0" 637 | 638 | es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0: 639 | version "2.1.0" 640 | resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" 641 | integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== 642 | dependencies: 643 | es-errors "^1.3.0" 644 | get-intrinsic "^1.2.6" 645 | has-tostringtag "^1.0.2" 646 | hasown "^2.0.2" 647 | 648 | es-shim-unscopables@^1.0.2: 649 | version "1.0.2" 650 | resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" 651 | integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== 652 | dependencies: 653 | hasown "^2.0.0" 654 | 655 | es-to-primitive@^1.3.0: 656 | version "1.3.0" 657 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" 658 | integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== 659 | dependencies: 660 | is-callable "^1.2.7" 661 | is-date-object "^1.0.5" 662 | is-symbol "^1.0.4" 663 | 664 | escape-string-regexp@^4.0.0: 665 | version "4.0.0" 666 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 667 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 668 | 669 | eslint-config-next@12.1.6: 670 | version "12.1.6" 671 | resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.6.tgz#55097028982dce49159d8753000be3916ac55254" 672 | integrity sha512-qoiS3g/EPzfCTkGkaPBSX9W0NGE/B1wNO3oWrd76QszVGrdpLggNqcO8+LR6MB0CNqtp9Q8NoeVrxNVbzM9hqA== 673 | dependencies: 674 | "@next/eslint-plugin-next" "12.1.6" 675 | "@rushstack/eslint-patch" "^1.1.3" 676 | "@typescript-eslint/parser" "^5.21.0" 677 | eslint-import-resolver-node "^0.3.6" 678 | eslint-import-resolver-typescript "^2.7.1" 679 | eslint-plugin-import "^2.26.0" 680 | eslint-plugin-jsx-a11y "^6.5.1" 681 | eslint-plugin-react "^7.29.4" 682 | eslint-plugin-react-hooks "^4.5.0" 683 | 684 | eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: 685 | version "0.3.9" 686 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" 687 | integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== 688 | dependencies: 689 | debug "^3.2.7" 690 | is-core-module "^2.13.0" 691 | resolve "^1.22.4" 692 | 693 | eslint-import-resolver-typescript@^2.7.1: 694 | version "2.7.1" 695 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" 696 | integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== 697 | dependencies: 698 | debug "^4.3.4" 699 | glob "^7.2.0" 700 | is-glob "^4.0.3" 701 | resolve "^1.22.0" 702 | tsconfig-paths "^3.14.1" 703 | 704 | eslint-module-utils@^2.12.0: 705 | version "2.12.0" 706 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" 707 | integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== 708 | dependencies: 709 | debug "^3.2.7" 710 | 711 | eslint-plugin-import@^2.26.0: 712 | version "2.31.0" 713 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" 714 | integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== 715 | dependencies: 716 | "@rtsao/scc" "^1.1.0" 717 | array-includes "^3.1.8" 718 | array.prototype.findlastindex "^1.2.5" 719 | array.prototype.flat "^1.3.2" 720 | array.prototype.flatmap "^1.3.2" 721 | debug "^3.2.7" 722 | doctrine "^2.1.0" 723 | eslint-import-resolver-node "^0.3.9" 724 | eslint-module-utils "^2.12.0" 725 | hasown "^2.0.2" 726 | is-core-module "^2.15.1" 727 | is-glob "^4.0.3" 728 | minimatch "^3.1.2" 729 | object.fromentries "^2.0.8" 730 | object.groupby "^1.0.3" 731 | object.values "^1.2.0" 732 | semver "^6.3.1" 733 | string.prototype.trimend "^1.0.8" 734 | tsconfig-paths "^3.15.0" 735 | 736 | eslint-plugin-jsx-a11y@^6.5.1: 737 | version "6.10.2" 738 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" 739 | integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== 740 | dependencies: 741 | aria-query "^5.3.2" 742 | array-includes "^3.1.8" 743 | array.prototype.flatmap "^1.3.2" 744 | ast-types-flow "^0.0.8" 745 | axe-core "^4.10.0" 746 | axobject-query "^4.1.0" 747 | damerau-levenshtein "^1.0.8" 748 | emoji-regex "^9.2.2" 749 | hasown "^2.0.2" 750 | jsx-ast-utils "^3.3.5" 751 | language-tags "^1.0.9" 752 | minimatch "^3.1.2" 753 | object.fromentries "^2.0.8" 754 | safe-regex-test "^1.0.3" 755 | string.prototype.includes "^2.0.1" 756 | 757 | eslint-plugin-react-hooks@^4.5.0: 758 | version "4.6.2" 759 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" 760 | integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== 761 | 762 | eslint-plugin-react@^7.29.4: 763 | version "7.37.3" 764 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz#567549e9251533975c4ea9706f986c3a64832031" 765 | integrity sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA== 766 | dependencies: 767 | array-includes "^3.1.8" 768 | array.prototype.findlast "^1.2.5" 769 | array.prototype.flatmap "^1.3.3" 770 | array.prototype.tosorted "^1.1.4" 771 | doctrine "^2.1.0" 772 | es-iterator-helpers "^1.2.1" 773 | estraverse "^5.3.0" 774 | hasown "^2.0.2" 775 | jsx-ast-utils "^2.4.1 || ^3.0.0" 776 | minimatch "^3.1.2" 777 | object.entries "^1.1.8" 778 | object.fromentries "^2.0.8" 779 | object.values "^1.2.1" 780 | prop-types "^15.8.1" 781 | resolve "^2.0.0-next.5" 782 | semver "^6.3.1" 783 | string.prototype.matchall "^4.0.12" 784 | string.prototype.repeat "^1.0.0" 785 | 786 | eslint-scope@^7.1.1: 787 | version "7.2.2" 788 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" 789 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== 790 | dependencies: 791 | esrecurse "^4.3.0" 792 | estraverse "^5.2.0" 793 | 794 | eslint-utils@^3.0.0: 795 | version "3.0.0" 796 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 797 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 798 | dependencies: 799 | eslint-visitor-keys "^2.0.0" 800 | 801 | eslint-visitor-keys@^2.0.0: 802 | version "2.1.0" 803 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 804 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 805 | 806 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: 807 | version "3.4.3" 808 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 809 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 810 | 811 | eslint@8.17.0: 812 | version "8.17.0" 813 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.17.0.tgz#1cfc4b6b6912f77d24b874ca1506b0fe09328c21" 814 | integrity sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw== 815 | dependencies: 816 | "@eslint/eslintrc" "^1.3.0" 817 | "@humanwhocodes/config-array" "^0.9.2" 818 | ajv "^6.10.0" 819 | chalk "^4.0.0" 820 | cross-spawn "^7.0.2" 821 | debug "^4.3.2" 822 | doctrine "^3.0.0" 823 | escape-string-regexp "^4.0.0" 824 | eslint-scope "^7.1.1" 825 | eslint-utils "^3.0.0" 826 | eslint-visitor-keys "^3.3.0" 827 | espree "^9.3.2" 828 | esquery "^1.4.0" 829 | esutils "^2.0.2" 830 | fast-deep-equal "^3.1.3" 831 | file-entry-cache "^6.0.1" 832 | functional-red-black-tree "^1.0.1" 833 | glob-parent "^6.0.1" 834 | globals "^13.15.0" 835 | ignore "^5.2.0" 836 | import-fresh "^3.0.0" 837 | imurmurhash "^0.1.4" 838 | is-glob "^4.0.0" 839 | js-yaml "^4.1.0" 840 | json-stable-stringify-without-jsonify "^1.0.1" 841 | levn "^0.4.1" 842 | lodash.merge "^4.6.2" 843 | minimatch "^3.1.2" 844 | natural-compare "^1.4.0" 845 | optionator "^0.9.1" 846 | regexpp "^3.2.0" 847 | strip-ansi "^6.0.1" 848 | strip-json-comments "^3.1.0" 849 | text-table "^0.2.0" 850 | v8-compile-cache "^2.0.3" 851 | 852 | espree@^9.3.2, espree@^9.4.0: 853 | version "9.6.1" 854 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" 855 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== 856 | dependencies: 857 | acorn "^8.9.0" 858 | acorn-jsx "^5.3.2" 859 | eslint-visitor-keys "^3.4.1" 860 | 861 | esquery@^1.4.0: 862 | version "1.6.0" 863 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" 864 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== 865 | dependencies: 866 | estraverse "^5.1.0" 867 | 868 | esrecurse@^4.3.0: 869 | version "4.3.0" 870 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 871 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 872 | dependencies: 873 | estraverse "^5.2.0" 874 | 875 | estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: 876 | version "5.3.0" 877 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 878 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 879 | 880 | esutils@^2.0.2: 881 | version "2.0.3" 882 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 883 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 884 | 885 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 886 | version "3.1.3" 887 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 888 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 889 | 890 | fast-glob@^3.2.9: 891 | version "3.3.3" 892 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" 893 | integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== 894 | dependencies: 895 | "@nodelib/fs.stat" "^2.0.2" 896 | "@nodelib/fs.walk" "^1.2.3" 897 | glob-parent "^5.1.2" 898 | merge2 "^1.3.0" 899 | micromatch "^4.0.8" 900 | 901 | fast-json-stable-stringify@^2.0.0: 902 | version "2.1.0" 903 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 904 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 905 | 906 | fast-levenshtein@^2.0.6: 907 | version "2.0.6" 908 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 909 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 910 | 911 | fastq@^1.6.0: 912 | version "1.18.0" 913 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" 914 | integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw== 915 | dependencies: 916 | reusify "^1.0.4" 917 | 918 | file-entry-cache@^6.0.1: 919 | version "6.0.1" 920 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 921 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 922 | dependencies: 923 | flat-cache "^3.0.4" 924 | 925 | fill-range@^7.1.1: 926 | version "7.1.1" 927 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 928 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 929 | dependencies: 930 | to-regex-range "^5.0.1" 931 | 932 | flat-cache@^3.0.4: 933 | version "3.2.0" 934 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" 935 | integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== 936 | dependencies: 937 | flatted "^3.2.9" 938 | keyv "^4.5.3" 939 | rimraf "^3.0.2" 940 | 941 | flatted@^3.2.9: 942 | version "3.3.2" 943 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" 944 | integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== 945 | 946 | for-each@^0.3.3: 947 | version "0.3.3" 948 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 949 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 950 | dependencies: 951 | is-callable "^1.1.3" 952 | 953 | fs.realpath@^1.0.0: 954 | version "1.0.0" 955 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 956 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 957 | 958 | function-bind@^1.1.2: 959 | version "1.1.2" 960 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 961 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 962 | 963 | function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: 964 | version "1.1.8" 965 | resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" 966 | integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== 967 | dependencies: 968 | call-bind "^1.0.8" 969 | call-bound "^1.0.3" 970 | define-properties "^1.2.1" 971 | functions-have-names "^1.2.3" 972 | hasown "^2.0.2" 973 | is-callable "^1.2.7" 974 | 975 | functional-red-black-tree@^1.0.1: 976 | version "1.0.1" 977 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 978 | integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== 979 | 980 | functions-have-names@^1.2.3: 981 | version "1.2.3" 982 | resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" 983 | integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== 984 | 985 | get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7: 986 | version "1.2.7" 987 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.7.tgz#dcfcb33d3272e15f445d15124bc0a216189b9044" 988 | integrity sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA== 989 | dependencies: 990 | call-bind-apply-helpers "^1.0.1" 991 | es-define-property "^1.0.1" 992 | es-errors "^1.3.0" 993 | es-object-atoms "^1.0.0" 994 | function-bind "^1.1.2" 995 | get-proto "^1.0.0" 996 | gopd "^1.2.0" 997 | has-symbols "^1.1.0" 998 | hasown "^2.0.2" 999 | math-intrinsics "^1.1.0" 1000 | 1001 | get-proto@^1.0.0, get-proto@^1.0.1: 1002 | version "1.0.1" 1003 | resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" 1004 | integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 1005 | dependencies: 1006 | dunder-proto "^1.0.1" 1007 | es-object-atoms "^1.0.0" 1008 | 1009 | get-symbol-description@^1.1.0: 1010 | version "1.1.0" 1011 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" 1012 | integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== 1013 | dependencies: 1014 | call-bound "^1.0.3" 1015 | es-errors "^1.3.0" 1016 | get-intrinsic "^1.2.6" 1017 | 1018 | glob-parent@^5.1.2: 1019 | version "5.1.2" 1020 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1021 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1022 | dependencies: 1023 | is-glob "^4.0.1" 1024 | 1025 | glob-parent@^6.0.1: 1026 | version "6.0.2" 1027 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1028 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1029 | dependencies: 1030 | is-glob "^4.0.3" 1031 | 1032 | glob@7.1.7: 1033 | version "7.1.7" 1034 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 1035 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 1036 | dependencies: 1037 | fs.realpath "^1.0.0" 1038 | inflight "^1.0.4" 1039 | inherits "2" 1040 | minimatch "^3.0.4" 1041 | once "^1.3.0" 1042 | path-is-absolute "^1.0.0" 1043 | 1044 | glob@^7.1.3, glob@^7.2.0: 1045 | version "7.2.3" 1046 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1047 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1048 | dependencies: 1049 | fs.realpath "^1.0.0" 1050 | inflight "^1.0.4" 1051 | inherits "2" 1052 | minimatch "^3.1.1" 1053 | once "^1.3.0" 1054 | path-is-absolute "^1.0.0" 1055 | 1056 | globals@^13.15.0, globals@^13.19.0: 1057 | version "13.24.0" 1058 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" 1059 | integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== 1060 | dependencies: 1061 | type-fest "^0.20.2" 1062 | 1063 | globalthis@^1.0.4: 1064 | version "1.0.4" 1065 | resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" 1066 | integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== 1067 | dependencies: 1068 | define-properties "^1.2.1" 1069 | gopd "^1.0.1" 1070 | 1071 | globby@^11.1.0: 1072 | version "11.1.0" 1073 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 1074 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 1075 | dependencies: 1076 | array-union "^2.1.0" 1077 | dir-glob "^3.0.1" 1078 | fast-glob "^3.2.9" 1079 | ignore "^5.2.0" 1080 | merge2 "^1.4.1" 1081 | slash "^3.0.0" 1082 | 1083 | gopd@^1.0.1, gopd@^1.2.0: 1084 | version "1.2.0" 1085 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" 1086 | integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 1087 | 1088 | has-bigints@^1.0.2: 1089 | version "1.1.0" 1090 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" 1091 | integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg== 1092 | 1093 | has-flag@^4.0.0: 1094 | version "4.0.0" 1095 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1096 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1097 | 1098 | has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: 1099 | version "1.0.2" 1100 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" 1101 | integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== 1102 | dependencies: 1103 | es-define-property "^1.0.0" 1104 | 1105 | has-proto@^1.2.0: 1106 | version "1.2.0" 1107 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" 1108 | integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== 1109 | dependencies: 1110 | dunder-proto "^1.0.0" 1111 | 1112 | has-symbols@^1.0.3, has-symbols@^1.1.0: 1113 | version "1.1.0" 1114 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" 1115 | integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 1116 | 1117 | has-tostringtag@^1.0.2: 1118 | version "1.0.2" 1119 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" 1120 | integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== 1121 | dependencies: 1122 | has-symbols "^1.0.3" 1123 | 1124 | hasown@^2.0.0, hasown@^2.0.2: 1125 | version "2.0.2" 1126 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 1127 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 1128 | dependencies: 1129 | function-bind "^1.1.2" 1130 | 1131 | ignore@^5.2.0: 1132 | version "5.3.2" 1133 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" 1134 | integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== 1135 | 1136 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1137 | version "3.3.0" 1138 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1139 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1140 | dependencies: 1141 | parent-module "^1.0.0" 1142 | resolve-from "^4.0.0" 1143 | 1144 | imurmurhash@^0.1.4: 1145 | version "0.1.4" 1146 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1147 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1148 | 1149 | inflight@^1.0.4: 1150 | version "1.0.6" 1151 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1152 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1153 | dependencies: 1154 | once "^1.3.0" 1155 | wrappy "1" 1156 | 1157 | inherits@2: 1158 | version "2.0.4" 1159 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1160 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1161 | 1162 | internal-slot@^1.1.0: 1163 | version "1.1.0" 1164 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" 1165 | integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== 1166 | dependencies: 1167 | es-errors "^1.3.0" 1168 | hasown "^2.0.2" 1169 | side-channel "^1.1.0" 1170 | 1171 | is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: 1172 | version "3.0.5" 1173 | resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" 1174 | integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== 1175 | dependencies: 1176 | call-bind "^1.0.8" 1177 | call-bound "^1.0.3" 1178 | get-intrinsic "^1.2.6" 1179 | 1180 | is-async-function@^2.0.0: 1181 | version "2.1.0" 1182 | resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.0.tgz#1d1080612c493608e93168fc4458c245074c06a6" 1183 | integrity sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ== 1184 | dependencies: 1185 | call-bound "^1.0.3" 1186 | get-proto "^1.0.1" 1187 | has-tostringtag "^1.0.2" 1188 | safe-regex-test "^1.1.0" 1189 | 1190 | is-bigint@^1.1.0: 1191 | version "1.1.0" 1192 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" 1193 | integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== 1194 | dependencies: 1195 | has-bigints "^1.0.2" 1196 | 1197 | is-boolean-object@^1.2.1: 1198 | version "1.2.1" 1199 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.1.tgz#c20d0c654be05da4fbc23c562635c019e93daf89" 1200 | integrity sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng== 1201 | dependencies: 1202 | call-bound "^1.0.2" 1203 | has-tostringtag "^1.0.2" 1204 | 1205 | is-callable@^1.1.3, is-callable@^1.2.7: 1206 | version "1.2.7" 1207 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" 1208 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== 1209 | 1210 | is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0: 1211 | version "2.16.1" 1212 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" 1213 | integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== 1214 | dependencies: 1215 | hasown "^2.0.2" 1216 | 1217 | is-data-view@^1.0.1, is-data-view@^1.0.2: 1218 | version "1.0.2" 1219 | resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" 1220 | integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== 1221 | dependencies: 1222 | call-bound "^1.0.2" 1223 | get-intrinsic "^1.2.6" 1224 | is-typed-array "^1.1.13" 1225 | 1226 | is-date-object@^1.0.5, is-date-object@^1.1.0: 1227 | version "1.1.0" 1228 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" 1229 | integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== 1230 | dependencies: 1231 | call-bound "^1.0.2" 1232 | has-tostringtag "^1.0.2" 1233 | 1234 | is-extglob@^2.1.1: 1235 | version "2.1.1" 1236 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1237 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1238 | 1239 | is-finalizationregistry@^1.1.0: 1240 | version "1.1.1" 1241 | resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" 1242 | integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== 1243 | dependencies: 1244 | call-bound "^1.0.3" 1245 | 1246 | is-generator-function@^1.0.10: 1247 | version "1.1.0" 1248 | resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" 1249 | integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== 1250 | dependencies: 1251 | call-bound "^1.0.3" 1252 | get-proto "^1.0.0" 1253 | has-tostringtag "^1.0.2" 1254 | safe-regex-test "^1.1.0" 1255 | 1256 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1257 | version "4.0.3" 1258 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1259 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1260 | dependencies: 1261 | is-extglob "^2.1.1" 1262 | 1263 | is-map@^2.0.3: 1264 | version "2.0.3" 1265 | resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" 1266 | integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== 1267 | 1268 | is-number-object@^1.1.1: 1269 | version "1.1.1" 1270 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" 1271 | integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== 1272 | dependencies: 1273 | call-bound "^1.0.3" 1274 | has-tostringtag "^1.0.2" 1275 | 1276 | is-number@^7.0.0: 1277 | version "7.0.0" 1278 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1279 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1280 | 1281 | is-regex@^1.2.1: 1282 | version "1.2.1" 1283 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" 1284 | integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== 1285 | dependencies: 1286 | call-bound "^1.0.2" 1287 | gopd "^1.2.0" 1288 | has-tostringtag "^1.0.2" 1289 | hasown "^2.0.2" 1290 | 1291 | is-set@^2.0.3: 1292 | version "2.0.3" 1293 | resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" 1294 | integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== 1295 | 1296 | is-shared-array-buffer@^1.0.4: 1297 | version "1.0.4" 1298 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" 1299 | integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== 1300 | dependencies: 1301 | call-bound "^1.0.3" 1302 | 1303 | is-string@^1.0.7, is-string@^1.1.1: 1304 | version "1.1.1" 1305 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" 1306 | integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== 1307 | dependencies: 1308 | call-bound "^1.0.3" 1309 | has-tostringtag "^1.0.2" 1310 | 1311 | is-symbol@^1.0.4, is-symbol@^1.1.1: 1312 | version "1.1.1" 1313 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" 1314 | integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== 1315 | dependencies: 1316 | call-bound "^1.0.2" 1317 | has-symbols "^1.1.0" 1318 | safe-regex-test "^1.1.0" 1319 | 1320 | is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: 1321 | version "1.1.15" 1322 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" 1323 | integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== 1324 | dependencies: 1325 | which-typed-array "^1.1.16" 1326 | 1327 | is-weakmap@^2.0.2: 1328 | version "2.0.2" 1329 | resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" 1330 | integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== 1331 | 1332 | is-weakref@^1.0.2, is-weakref@^1.1.0: 1333 | version "1.1.0" 1334 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.0.tgz#47e3472ae95a63fa9cf25660bcf0c181c39770ef" 1335 | integrity sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q== 1336 | dependencies: 1337 | call-bound "^1.0.2" 1338 | 1339 | is-weakset@^2.0.3: 1340 | version "2.0.4" 1341 | resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" 1342 | integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== 1343 | dependencies: 1344 | call-bound "^1.0.3" 1345 | get-intrinsic "^1.2.6" 1346 | 1347 | isarray@^2.0.5: 1348 | version "2.0.5" 1349 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" 1350 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== 1351 | 1352 | isexe@^2.0.0: 1353 | version "2.0.0" 1354 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1355 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1356 | 1357 | iterator.prototype@^1.1.4: 1358 | version "1.1.5" 1359 | resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" 1360 | integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== 1361 | dependencies: 1362 | define-data-property "^1.1.4" 1363 | es-object-atoms "^1.0.0" 1364 | get-intrinsic "^1.2.6" 1365 | get-proto "^1.0.0" 1366 | has-symbols "^1.1.0" 1367 | set-function-name "^2.0.2" 1368 | 1369 | "js-tokens@^3.0.0 || ^4.0.0": 1370 | version "4.0.0" 1371 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1372 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1373 | 1374 | js-yaml@^4.1.0: 1375 | version "4.1.0" 1376 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1377 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1378 | dependencies: 1379 | argparse "^2.0.1" 1380 | 1381 | json-buffer@3.0.1: 1382 | version "3.0.1" 1383 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 1384 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 1385 | 1386 | json-schema-traverse@^0.4.1: 1387 | version "0.4.1" 1388 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1389 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1390 | 1391 | json-stable-stringify-without-jsonify@^1.0.1: 1392 | version "1.0.1" 1393 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1394 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1395 | 1396 | json5@^1.0.2: 1397 | version "1.0.2" 1398 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" 1399 | integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== 1400 | dependencies: 1401 | minimist "^1.2.0" 1402 | 1403 | "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: 1404 | version "3.3.5" 1405 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" 1406 | integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== 1407 | dependencies: 1408 | array-includes "^3.1.6" 1409 | array.prototype.flat "^1.3.1" 1410 | object.assign "^4.1.4" 1411 | object.values "^1.1.6" 1412 | 1413 | keyv@^4.5.3: 1414 | version "4.5.4" 1415 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" 1416 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 1417 | dependencies: 1418 | json-buffer "3.0.1" 1419 | 1420 | language-subtag-registry@^0.3.20: 1421 | version "0.3.23" 1422 | resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" 1423 | integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== 1424 | 1425 | language-tags@^1.0.9: 1426 | version "1.0.9" 1427 | resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" 1428 | integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== 1429 | dependencies: 1430 | language-subtag-registry "^0.3.20" 1431 | 1432 | levn@^0.4.1: 1433 | version "0.4.1" 1434 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1435 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1436 | dependencies: 1437 | prelude-ls "^1.2.1" 1438 | type-check "~0.4.0" 1439 | 1440 | lodash.merge@^4.6.2: 1441 | version "4.6.2" 1442 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1443 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1444 | 1445 | loose-envify@^1.1.0, loose-envify@^1.4.0: 1446 | version "1.4.0" 1447 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1448 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1449 | dependencies: 1450 | js-tokens "^3.0.0 || ^4.0.0" 1451 | 1452 | math-intrinsics@^1.1.0: 1453 | version "1.1.0" 1454 | resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" 1455 | integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 1456 | 1457 | merge2@^1.3.0, merge2@^1.4.1: 1458 | version "1.4.1" 1459 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1460 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1461 | 1462 | micromatch@^4.0.8: 1463 | version "4.0.8" 1464 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 1465 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 1466 | dependencies: 1467 | braces "^3.0.3" 1468 | picomatch "^2.3.1" 1469 | 1470 | minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: 1471 | version "3.1.2" 1472 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1473 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1474 | dependencies: 1475 | brace-expansion "^1.1.7" 1476 | 1477 | minimist@^1.2.0, minimist@^1.2.6: 1478 | version "1.2.8" 1479 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 1480 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1481 | 1482 | ms@^2.1.1, ms@^2.1.3: 1483 | version "2.1.3" 1484 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1485 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1486 | 1487 | nanoid@^3.1.30: 1488 | version "3.3.8" 1489 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" 1490 | integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== 1491 | 1492 | natural-compare@^1.4.0: 1493 | version "1.4.0" 1494 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1495 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1496 | 1497 | next@12.1.6: 1498 | version "12.1.6" 1499 | resolved "https://registry.yarnpkg.com/next/-/next-12.1.6.tgz#eb205e64af1998651f96f9df44556d47d8bbc533" 1500 | integrity sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A== 1501 | dependencies: 1502 | "@next/env" "12.1.6" 1503 | caniuse-lite "^1.0.30001332" 1504 | postcss "8.4.5" 1505 | styled-jsx "5.0.2" 1506 | optionalDependencies: 1507 | "@next/swc-android-arm-eabi" "12.1.6" 1508 | "@next/swc-android-arm64" "12.1.6" 1509 | "@next/swc-darwin-arm64" "12.1.6" 1510 | "@next/swc-darwin-x64" "12.1.6" 1511 | "@next/swc-linux-arm-gnueabihf" "12.1.6" 1512 | "@next/swc-linux-arm64-gnu" "12.1.6" 1513 | "@next/swc-linux-arm64-musl" "12.1.6" 1514 | "@next/swc-linux-x64-gnu" "12.1.6" 1515 | "@next/swc-linux-x64-musl" "12.1.6" 1516 | "@next/swc-win32-arm64-msvc" "12.1.6" 1517 | "@next/swc-win32-ia32-msvc" "12.1.6" 1518 | "@next/swc-win32-x64-msvc" "12.1.6" 1519 | 1520 | object-assign@^4.1.1: 1521 | version "4.1.1" 1522 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1523 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1524 | 1525 | object-inspect@^1.13.3: 1526 | version "1.13.3" 1527 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" 1528 | integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== 1529 | 1530 | object-keys@^1.1.1: 1531 | version "1.1.1" 1532 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1533 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1534 | 1535 | object.assign@^4.1.4, object.assign@^4.1.7: 1536 | version "4.1.7" 1537 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" 1538 | integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== 1539 | dependencies: 1540 | call-bind "^1.0.8" 1541 | call-bound "^1.0.3" 1542 | define-properties "^1.2.1" 1543 | es-object-atoms "^1.0.0" 1544 | has-symbols "^1.1.0" 1545 | object-keys "^1.1.1" 1546 | 1547 | object.entries@^1.1.8: 1548 | version "1.1.8" 1549 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" 1550 | integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== 1551 | dependencies: 1552 | call-bind "^1.0.7" 1553 | define-properties "^1.2.1" 1554 | es-object-atoms "^1.0.0" 1555 | 1556 | object.fromentries@^2.0.8: 1557 | version "2.0.8" 1558 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" 1559 | integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== 1560 | dependencies: 1561 | call-bind "^1.0.7" 1562 | define-properties "^1.2.1" 1563 | es-abstract "^1.23.2" 1564 | es-object-atoms "^1.0.0" 1565 | 1566 | object.groupby@^1.0.3: 1567 | version "1.0.3" 1568 | resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" 1569 | integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== 1570 | dependencies: 1571 | call-bind "^1.0.7" 1572 | define-properties "^1.2.1" 1573 | es-abstract "^1.23.2" 1574 | 1575 | object.values@^1.1.6, object.values@^1.2.0, object.values@^1.2.1: 1576 | version "1.2.1" 1577 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" 1578 | integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== 1579 | dependencies: 1580 | call-bind "^1.0.8" 1581 | call-bound "^1.0.3" 1582 | define-properties "^1.2.1" 1583 | es-object-atoms "^1.0.0" 1584 | 1585 | once@^1.3.0: 1586 | version "1.4.0" 1587 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1588 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1589 | dependencies: 1590 | wrappy "1" 1591 | 1592 | optionator@^0.9.1: 1593 | version "0.9.4" 1594 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" 1595 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== 1596 | dependencies: 1597 | deep-is "^0.1.3" 1598 | fast-levenshtein "^2.0.6" 1599 | levn "^0.4.1" 1600 | prelude-ls "^1.2.1" 1601 | type-check "^0.4.0" 1602 | word-wrap "^1.2.5" 1603 | 1604 | own-keys@^1.0.1: 1605 | version "1.0.1" 1606 | resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" 1607 | integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== 1608 | dependencies: 1609 | get-intrinsic "^1.2.6" 1610 | object-keys "^1.1.1" 1611 | safe-push-apply "^1.0.0" 1612 | 1613 | parent-module@^1.0.0: 1614 | version "1.0.1" 1615 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1616 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1617 | dependencies: 1618 | callsites "^3.0.0" 1619 | 1620 | path-is-absolute@^1.0.0: 1621 | version "1.0.1" 1622 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1623 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1624 | 1625 | path-key@^3.1.0: 1626 | version "3.1.1" 1627 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1628 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1629 | 1630 | path-parse@^1.0.7: 1631 | version "1.0.7" 1632 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1633 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1634 | 1635 | path-type@^4.0.0: 1636 | version "4.0.0" 1637 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1638 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1639 | 1640 | picocolors@^1.0.0: 1641 | version "1.1.1" 1642 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" 1643 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 1644 | 1645 | picomatch@^2.3.1: 1646 | version "2.3.1" 1647 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1648 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1649 | 1650 | possible-typed-array-names@^1.0.0: 1651 | version "1.0.0" 1652 | resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" 1653 | integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== 1654 | 1655 | postcss@8.4.5: 1656 | version "8.4.5" 1657 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" 1658 | integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== 1659 | dependencies: 1660 | nanoid "^3.1.30" 1661 | picocolors "^1.0.0" 1662 | source-map-js "^1.0.1" 1663 | 1664 | prelude-ls@^1.2.1: 1665 | version "1.2.1" 1666 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1667 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1668 | 1669 | prop-types@^15.8.1: 1670 | version "15.8.1" 1671 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" 1672 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== 1673 | dependencies: 1674 | loose-envify "^1.4.0" 1675 | object-assign "^4.1.1" 1676 | react-is "^16.13.1" 1677 | 1678 | punycode@^2.1.0: 1679 | version "2.3.1" 1680 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" 1681 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 1682 | 1683 | queue-microtask@^1.2.2: 1684 | version "1.2.3" 1685 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1686 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1687 | 1688 | react-dom@18.1.0: 1689 | version "18.1.0" 1690 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.1.0.tgz#7f6dd84b706408adde05e1df575b3a024d7e8a2f" 1691 | integrity sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w== 1692 | dependencies: 1693 | loose-envify "^1.1.0" 1694 | scheduler "^0.22.0" 1695 | 1696 | react-is@^16.13.1: 1697 | version "16.13.1" 1698 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1699 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1700 | 1701 | "react-scroll-motion@file:../../": 1702 | version "0.3.4" 1703 | 1704 | react@18.1.0: 1705 | version "18.1.0" 1706 | resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" 1707 | integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== 1708 | dependencies: 1709 | loose-envify "^1.1.0" 1710 | 1711 | reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: 1712 | version "1.0.10" 1713 | resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" 1714 | integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== 1715 | dependencies: 1716 | call-bind "^1.0.8" 1717 | define-properties "^1.2.1" 1718 | es-abstract "^1.23.9" 1719 | es-errors "^1.3.0" 1720 | es-object-atoms "^1.0.0" 1721 | get-intrinsic "^1.2.7" 1722 | get-proto "^1.0.1" 1723 | which-builtin-type "^1.2.1" 1724 | 1725 | regexp.prototype.flags@^1.5.3: 1726 | version "1.5.4" 1727 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" 1728 | integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== 1729 | dependencies: 1730 | call-bind "^1.0.8" 1731 | define-properties "^1.2.1" 1732 | es-errors "^1.3.0" 1733 | get-proto "^1.0.1" 1734 | gopd "^1.2.0" 1735 | set-function-name "^2.0.2" 1736 | 1737 | regexpp@^3.2.0: 1738 | version "3.2.0" 1739 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1740 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1741 | 1742 | resolve-from@^4.0.0: 1743 | version "4.0.0" 1744 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1745 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1746 | 1747 | resolve@^1.22.0, resolve@^1.22.4: 1748 | version "1.22.10" 1749 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" 1750 | integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== 1751 | dependencies: 1752 | is-core-module "^2.16.0" 1753 | path-parse "^1.0.7" 1754 | supports-preserve-symlinks-flag "^1.0.0" 1755 | 1756 | resolve@^2.0.0-next.5: 1757 | version "2.0.0-next.5" 1758 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" 1759 | integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== 1760 | dependencies: 1761 | is-core-module "^2.13.0" 1762 | path-parse "^1.0.7" 1763 | supports-preserve-symlinks-flag "^1.0.0" 1764 | 1765 | reusify@^1.0.4: 1766 | version "1.0.4" 1767 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1768 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1769 | 1770 | rimraf@^3.0.2: 1771 | version "3.0.2" 1772 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1773 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1774 | dependencies: 1775 | glob "^7.1.3" 1776 | 1777 | run-parallel@^1.1.9: 1778 | version "1.2.0" 1779 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1780 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1781 | dependencies: 1782 | queue-microtask "^1.2.2" 1783 | 1784 | safe-array-concat@^1.1.3: 1785 | version "1.1.3" 1786 | resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" 1787 | integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== 1788 | dependencies: 1789 | call-bind "^1.0.8" 1790 | call-bound "^1.0.2" 1791 | get-intrinsic "^1.2.6" 1792 | has-symbols "^1.1.0" 1793 | isarray "^2.0.5" 1794 | 1795 | safe-push-apply@^1.0.0: 1796 | version "1.0.0" 1797 | resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" 1798 | integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== 1799 | dependencies: 1800 | es-errors "^1.3.0" 1801 | isarray "^2.0.5" 1802 | 1803 | safe-regex-test@^1.0.3, safe-regex-test@^1.1.0: 1804 | version "1.1.0" 1805 | resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" 1806 | integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== 1807 | dependencies: 1808 | call-bound "^1.0.2" 1809 | es-errors "^1.3.0" 1810 | is-regex "^1.2.1" 1811 | 1812 | scheduler@^0.22.0: 1813 | version "0.22.0" 1814 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8" 1815 | integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== 1816 | dependencies: 1817 | loose-envify "^1.1.0" 1818 | 1819 | semver@^6.3.1: 1820 | version "6.3.1" 1821 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 1822 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 1823 | 1824 | semver@^7.3.7: 1825 | version "7.6.3" 1826 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" 1827 | integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== 1828 | 1829 | set-function-length@^1.2.2: 1830 | version "1.2.2" 1831 | resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" 1832 | integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== 1833 | dependencies: 1834 | define-data-property "^1.1.4" 1835 | es-errors "^1.3.0" 1836 | function-bind "^1.1.2" 1837 | get-intrinsic "^1.2.4" 1838 | gopd "^1.0.1" 1839 | has-property-descriptors "^1.0.2" 1840 | 1841 | set-function-name@^2.0.2: 1842 | version "2.0.2" 1843 | resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" 1844 | integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== 1845 | dependencies: 1846 | define-data-property "^1.1.4" 1847 | es-errors "^1.3.0" 1848 | functions-have-names "^1.2.3" 1849 | has-property-descriptors "^1.0.2" 1850 | 1851 | set-proto@^1.0.0: 1852 | version "1.0.0" 1853 | resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" 1854 | integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== 1855 | dependencies: 1856 | dunder-proto "^1.0.1" 1857 | es-errors "^1.3.0" 1858 | es-object-atoms "^1.0.0" 1859 | 1860 | shebang-command@^2.0.0: 1861 | version "2.0.0" 1862 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1863 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1864 | dependencies: 1865 | shebang-regex "^3.0.0" 1866 | 1867 | shebang-regex@^3.0.0: 1868 | version "3.0.0" 1869 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1870 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1871 | 1872 | side-channel-list@^1.0.0: 1873 | version "1.0.0" 1874 | resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" 1875 | integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== 1876 | dependencies: 1877 | es-errors "^1.3.0" 1878 | object-inspect "^1.13.3" 1879 | 1880 | side-channel-map@^1.0.1: 1881 | version "1.0.1" 1882 | resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" 1883 | integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== 1884 | dependencies: 1885 | call-bound "^1.0.2" 1886 | es-errors "^1.3.0" 1887 | get-intrinsic "^1.2.5" 1888 | object-inspect "^1.13.3" 1889 | 1890 | side-channel-weakmap@^1.0.2: 1891 | version "1.0.2" 1892 | resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" 1893 | integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== 1894 | dependencies: 1895 | call-bound "^1.0.2" 1896 | es-errors "^1.3.0" 1897 | get-intrinsic "^1.2.5" 1898 | object-inspect "^1.13.3" 1899 | side-channel-map "^1.0.1" 1900 | 1901 | side-channel@^1.1.0: 1902 | version "1.1.0" 1903 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" 1904 | integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== 1905 | dependencies: 1906 | es-errors "^1.3.0" 1907 | object-inspect "^1.13.3" 1908 | side-channel-list "^1.0.0" 1909 | side-channel-map "^1.0.1" 1910 | side-channel-weakmap "^1.0.2" 1911 | 1912 | slash@^3.0.0: 1913 | version "3.0.0" 1914 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1915 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1916 | 1917 | source-map-js@^1.0.1: 1918 | version "1.2.1" 1919 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" 1920 | integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== 1921 | 1922 | string.prototype.includes@^2.0.1: 1923 | version "2.0.1" 1924 | resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" 1925 | integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== 1926 | dependencies: 1927 | call-bind "^1.0.7" 1928 | define-properties "^1.2.1" 1929 | es-abstract "^1.23.3" 1930 | 1931 | string.prototype.matchall@^4.0.12: 1932 | version "4.0.12" 1933 | resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0" 1934 | integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA== 1935 | dependencies: 1936 | call-bind "^1.0.8" 1937 | call-bound "^1.0.3" 1938 | define-properties "^1.2.1" 1939 | es-abstract "^1.23.6" 1940 | es-errors "^1.3.0" 1941 | es-object-atoms "^1.0.0" 1942 | get-intrinsic "^1.2.6" 1943 | gopd "^1.2.0" 1944 | has-symbols "^1.1.0" 1945 | internal-slot "^1.1.0" 1946 | regexp.prototype.flags "^1.5.3" 1947 | set-function-name "^2.0.2" 1948 | side-channel "^1.1.0" 1949 | 1950 | string.prototype.repeat@^1.0.0: 1951 | version "1.0.0" 1952 | resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" 1953 | integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== 1954 | dependencies: 1955 | define-properties "^1.1.3" 1956 | es-abstract "^1.17.5" 1957 | 1958 | string.prototype.trim@^1.2.10: 1959 | version "1.2.10" 1960 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" 1961 | integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== 1962 | dependencies: 1963 | call-bind "^1.0.8" 1964 | call-bound "^1.0.2" 1965 | define-data-property "^1.1.4" 1966 | define-properties "^1.2.1" 1967 | es-abstract "^1.23.5" 1968 | es-object-atoms "^1.0.0" 1969 | has-property-descriptors "^1.0.2" 1970 | 1971 | string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: 1972 | version "1.0.9" 1973 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" 1974 | integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== 1975 | dependencies: 1976 | call-bind "^1.0.8" 1977 | call-bound "^1.0.2" 1978 | define-properties "^1.2.1" 1979 | es-object-atoms "^1.0.0" 1980 | 1981 | string.prototype.trimstart@^1.0.8: 1982 | version "1.0.8" 1983 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" 1984 | integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== 1985 | dependencies: 1986 | call-bind "^1.0.7" 1987 | define-properties "^1.2.1" 1988 | es-object-atoms "^1.0.0" 1989 | 1990 | strip-ansi@^6.0.1: 1991 | version "6.0.1" 1992 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1993 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1994 | dependencies: 1995 | ansi-regex "^5.0.1" 1996 | 1997 | strip-bom@^3.0.0: 1998 | version "3.0.0" 1999 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2000 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== 2001 | 2002 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 2003 | version "3.1.1" 2004 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2005 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2006 | 2007 | styled-jsx@5.0.2: 2008 | version "5.0.2" 2009 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" 2010 | integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== 2011 | 2012 | supports-color@^7.1.0: 2013 | version "7.2.0" 2014 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2015 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2016 | dependencies: 2017 | has-flag "^4.0.0" 2018 | 2019 | supports-preserve-symlinks-flag@^1.0.0: 2020 | version "1.0.0" 2021 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2022 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 2023 | 2024 | text-table@^0.2.0: 2025 | version "0.2.0" 2026 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2027 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 2028 | 2029 | to-regex-range@^5.0.1: 2030 | version "5.0.1" 2031 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2032 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2033 | dependencies: 2034 | is-number "^7.0.0" 2035 | 2036 | tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0: 2037 | version "3.15.0" 2038 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" 2039 | integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== 2040 | dependencies: 2041 | "@types/json5" "^0.0.29" 2042 | json5 "^1.0.2" 2043 | minimist "^1.2.6" 2044 | strip-bom "^3.0.0" 2045 | 2046 | tslib@^1.8.1: 2047 | version "1.14.1" 2048 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 2049 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 2050 | 2051 | tsutils@^3.21.0: 2052 | version "3.21.0" 2053 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 2054 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 2055 | dependencies: 2056 | tslib "^1.8.1" 2057 | 2058 | type-check@^0.4.0, type-check@~0.4.0: 2059 | version "0.4.0" 2060 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2061 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2062 | dependencies: 2063 | prelude-ls "^1.2.1" 2064 | 2065 | type-fest@^0.20.2: 2066 | version "0.20.2" 2067 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 2068 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 2069 | 2070 | typed-array-buffer@^1.0.3: 2071 | version "1.0.3" 2072 | resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" 2073 | integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== 2074 | dependencies: 2075 | call-bound "^1.0.3" 2076 | es-errors "^1.3.0" 2077 | is-typed-array "^1.1.14" 2078 | 2079 | typed-array-byte-length@^1.0.3: 2080 | version "1.0.3" 2081 | resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" 2082 | integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== 2083 | dependencies: 2084 | call-bind "^1.0.8" 2085 | for-each "^0.3.3" 2086 | gopd "^1.2.0" 2087 | has-proto "^1.2.0" 2088 | is-typed-array "^1.1.14" 2089 | 2090 | typed-array-byte-offset@^1.0.4: 2091 | version "1.0.4" 2092 | resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" 2093 | integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== 2094 | dependencies: 2095 | available-typed-arrays "^1.0.7" 2096 | call-bind "^1.0.8" 2097 | for-each "^0.3.3" 2098 | gopd "^1.2.0" 2099 | has-proto "^1.2.0" 2100 | is-typed-array "^1.1.15" 2101 | reflect.getprototypeof "^1.0.9" 2102 | 2103 | typed-array-length@^1.0.7: 2104 | version "1.0.7" 2105 | resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" 2106 | integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== 2107 | dependencies: 2108 | call-bind "^1.0.7" 2109 | for-each "^0.3.3" 2110 | gopd "^1.0.1" 2111 | is-typed-array "^1.1.13" 2112 | possible-typed-array-names "^1.0.0" 2113 | reflect.getprototypeof "^1.0.6" 2114 | 2115 | unbox-primitive@^1.1.0: 2116 | version "1.1.0" 2117 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" 2118 | integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== 2119 | dependencies: 2120 | call-bound "^1.0.3" 2121 | has-bigints "^1.0.2" 2122 | has-symbols "^1.1.0" 2123 | which-boxed-primitive "^1.1.1" 2124 | 2125 | uri-js@^4.2.2: 2126 | version "4.4.1" 2127 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2128 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2129 | dependencies: 2130 | punycode "^2.1.0" 2131 | 2132 | v8-compile-cache@^2.0.3: 2133 | version "2.4.0" 2134 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" 2135 | integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== 2136 | 2137 | which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: 2138 | version "1.1.1" 2139 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" 2140 | integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== 2141 | dependencies: 2142 | is-bigint "^1.1.0" 2143 | is-boolean-object "^1.2.1" 2144 | is-number-object "^1.1.1" 2145 | is-string "^1.1.1" 2146 | is-symbol "^1.1.1" 2147 | 2148 | which-builtin-type@^1.2.1: 2149 | version "1.2.1" 2150 | resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" 2151 | integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== 2152 | dependencies: 2153 | call-bound "^1.0.2" 2154 | function.prototype.name "^1.1.6" 2155 | has-tostringtag "^1.0.2" 2156 | is-async-function "^2.0.0" 2157 | is-date-object "^1.1.0" 2158 | is-finalizationregistry "^1.1.0" 2159 | is-generator-function "^1.0.10" 2160 | is-regex "^1.2.1" 2161 | is-weakref "^1.0.2" 2162 | isarray "^2.0.5" 2163 | which-boxed-primitive "^1.1.0" 2164 | which-collection "^1.0.2" 2165 | which-typed-array "^1.1.16" 2166 | 2167 | which-collection@^1.0.2: 2168 | version "1.0.2" 2169 | resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" 2170 | integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== 2171 | dependencies: 2172 | is-map "^2.0.3" 2173 | is-set "^2.0.3" 2174 | is-weakmap "^2.0.2" 2175 | is-weakset "^2.0.3" 2176 | 2177 | which-typed-array@^1.1.16, which-typed-array@^1.1.18: 2178 | version "1.1.18" 2179 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.18.tgz#df2389ebf3fbb246a71390e90730a9edb6ce17ad" 2180 | integrity sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA== 2181 | dependencies: 2182 | available-typed-arrays "^1.0.7" 2183 | call-bind "^1.0.8" 2184 | call-bound "^1.0.3" 2185 | for-each "^0.3.3" 2186 | gopd "^1.2.0" 2187 | has-tostringtag "^1.0.2" 2188 | 2189 | which@^2.0.1: 2190 | version "2.0.2" 2191 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2192 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2193 | dependencies: 2194 | isexe "^2.0.0" 2195 | 2196 | word-wrap@^1.2.5: 2197 | version "1.2.5" 2198 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" 2199 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== 2200 | 2201 | wrappy@1: 2202 | version "1.0.2" 2203 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2204 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 2205 | -------------------------------------------------------------------------------- /examples/react-19/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/react-19/README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Create React App 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ## Available Scripts 6 | 7 | In the project directory, you can run: 8 | 9 | ### `yarn start` 10 | 11 | Runs the app in the development mode.\ 12 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 13 | 14 | The page will reload if you make edits.\ 15 | You will also see any lint errors in the console. 16 | 17 | ### `yarn test` 18 | 19 | Launches the test runner in the interactive watch mode.\ 20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 21 | 22 | ### `yarn build` 23 | 24 | Builds the app for production to the `build` folder.\ 25 | It correctly bundles React in production mode and optimizes the build for the best performance. 26 | 27 | The build is minified and the filenames include the hashes.\ 28 | Your app is ready to be deployed! 29 | 30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 31 | 32 | ### `yarn eject` 33 | 34 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!** 35 | 36 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 37 | 38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. 39 | 40 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. 41 | 42 | ## Learn More 43 | 44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 45 | 46 | To learn React, check out the [React documentation](https://reactjs.org/). 47 | -------------------------------------------------------------------------------- /examples/react-19/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-19", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@testing-library/jest-dom": "^5.14.1", 7 | "@testing-library/react": "^13.0.0", 8 | "@testing-library/user-event": "^13.2.1", 9 | "@types/jest": "^27.0.1", 10 | "@types/node": "^16.7.13", 11 | "@types/react": "^18.0.0", 12 | "@types/react-dom": "^18.0.0", 13 | "react": "^19.0.0", 14 | "react-dom": "^19.0.0", 15 | "react-scripts": "5.0.1", 16 | "react-scroll-motion": "../react-scroll-motion.tgz", 17 | "typescript": "^4.4.2", 18 | "web-vitals": "^2.1.0" 19 | }, 20 | "scripts": { 21 | "reinstall:local": "yarn remove react-scroll-motion && yarn add ../react-scroll-motion.tgz --no-cache", 22 | "reinstall:remote": "yarn remove react-scroll-motion && yarn add react-scroll-motion --no-cache", 23 | "start": "react-scripts start", 24 | "build": "react-scripts build", 25 | "test": "react-scripts test", 26 | "eject": "react-scripts eject" 27 | }, 28 | "eslintConfig": { 29 | "extends": [ 30 | "react-app", 31 | "react-app/jest" 32 | ] 33 | }, 34 | "browserslist": { 35 | "production": [ 36 | ">0.2%", 37 | "not dead", 38 | "not op_mini all" 39 | ], 40 | "development": [ 41 | "last 1 chrome version", 42 | "last 1 firefox version", 43 | "last 1 safari version" 44 | ] 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /examples/react-19/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ship/react-scroll-motion/96e058f2966e9f916db466e93f5b530078f1da05/examples/react-19/public/favicon.ico -------------------------------------------------------------------------------- /examples/react-19/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | React App 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /examples/react-19/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ship/react-scroll-motion/96e058f2966e9f916db466e93f5b530078f1da05/examples/react-19/public/logo192.png -------------------------------------------------------------------------------- /examples/react-19/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ship/react-scroll-motion/96e058f2966e9f916db466e93f5b530078f1da05/examples/react-19/public/logo512.png -------------------------------------------------------------------------------- /examples/react-19/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /examples/react-19/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/react-19/src/App.tsx: -------------------------------------------------------------------------------- 1 | import { useRef } from "react"; 2 | import { 3 | Animation, 4 | Animator, 5 | batch, 6 | Fade, 7 | FadeIn, 8 | Move, 9 | MoveIn, 10 | MoveOut, 11 | ScrollContainer, 12 | ScrollPage, 13 | Sticky, 14 | StickyIn, 15 | ZoomIn, 16 | } from "react-scroll-motion"; 17 | 18 | export default function App() { 19 | // Batch animations 20 | const ZoomInScrollOut = batch(StickyIn(), FadeIn(), ZoomIn()); 21 | const FadeUp = batch(Fade(), Move(), Sticky()); 22 | 23 | // Make custom animation 24 | const Spin = (cycle: number, direction: "in" | "out" | "both" = "both") => 25 | ({ 26 | in: 27 | direction === "in" || direction === "both" 28 | ? { style: { transform: (p) => `rotate(${p * 360 * cycle}deg)` } } 29 | : {}, 30 | out: 31 | direction === "out" || direction === "both" 32 | ? { style: { transform: (p) => `rotate(${p * 360 * cycle}deg)` } } 33 | : {}, 34 | } as Animation); 35 | 36 | const parent = useRef(null); 37 | return ( 38 |
39 |
42 | 43 |
44 | 45 | 46 | 47 |

Hello!!!

48 |
49 |
50 | 51 | 52 | 53 | Let me show you scroll animation 😀 54 | 55 | 56 | 57 | 58 | 59 | I'm FadeUpScrollOut ✨ 60 | 61 | 62 | 63 | 64 | I'm FadeUp ⛅️ 65 | 66 | 67 | 68 |
76 | 77 | Hello Guys 👋🏻 78 | 79 | Nice to meet you 🙋🏻‍♀️ 80 | 81 | - I'm Dante Chun - 82 | Good bye ✋🏻 83 | See you 💛 84 | 85 |
86 |
87 | 88 | 89 | Done 90 |
91 | 92 | There's FadeAnimation, MoveAnimation, StickyAnimation, 93 | ZoomAnimation 94 | 95 |
96 |
97 |
98 |
99 | 100 |
101 |
102 |
103 | ); 104 | } 105 | -------------------------------------------------------------------------------- /examples/react-19/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import App from "./App"; 4 | 5 | const root = ReactDOM.createRoot( 6 | document.getElementById("root") as HTMLElement 7 | ); 8 | root.render( 9 | 10 | 11 | 12 | ); 13 | -------------------------------------------------------------------------------- /examples/react-19/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-scroll-motion", 3 | "version": "0.3.5", 4 | "homepage": "https://github.com/1000ship/react-scroll-motion", 5 | "bugs": { 6 | "email": "dev.1000ship@gmail.com", 7 | "url": "https://github.com/1000ship/react-scroll-motion/issues" 8 | }, 9 | "description": "Easy to make scroll animation with ReactJS", 10 | "keywords": [ 11 | "scroll", 12 | "animation", 13 | "react", 14 | "animator", 15 | "motion" 16 | ], 17 | "license": "MIT", 18 | "author": { 19 | "email": "dev.1000ship@gmail.com", 20 | "name": "Dante Chun", 21 | "url": "https://dante.company" 22 | }, 23 | "main": "dist/index.js", 24 | "types": "dist/index.d.ts", 25 | "repository": { 26 | "type": "git", 27 | "url": "https://github.com/1000ship/react-scroll-motion" 28 | }, 29 | "files": [ 30 | "dist" 31 | ], 32 | "private": false, 33 | "scripts": { 34 | "build": "rimraf ./dist && npx tsc && yarn pack -f ./examples/react-scroll-motion.tgz" 35 | }, 36 | "peerDependencies": { 37 | "react": ">=18.0.0", 38 | "react-dom": ">=18.0.0" 39 | }, 40 | "devDependencies": { 41 | "@types/react": ">=18.0.11", 42 | "rimraf": "^3.0.2", 43 | "typescript": "^4.7.3" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Animator.tsx: -------------------------------------------------------------------------------- 1 | import React, { 2 | CSSProperties, 3 | FC, 4 | ReactNode, 5 | useContext, 6 | useEffect, 7 | useMemo, 8 | useState, 9 | } from "react"; 10 | import { ScrollDataContext, ScrollPageContext } from "./stores"; 11 | import { Animation } from "./types"; 12 | import { computeStyle } from "./utils"; 13 | 14 | interface AnimatorProps { 15 | children: ReactNode | ReactNode[]; 16 | animation: Animation; 17 | style?: CSSProperties; 18 | className?: string; 19 | } 20 | 21 | const Animator: FC = (props) => { 22 | const { children, animation, style, className } = props; 23 | const { currentPage, currentProgress } = useContext(ScrollDataContext); 24 | const { page } = useContext(ScrollPageContext); 25 | const [isSSR, setIsSSR] = useState(true); 26 | 27 | useEffect( 28 | () => (typeof window !== "undefined" ? setIsSSR(false) : undefined), 29 | [] 30 | ); 31 | 32 | const calculatedStyle: CSSProperties | undefined = useMemo( 33 | () => 34 | isSSR 35 | ? style 36 | : currentPage === page // for current (out) 37 | ? ({ 38 | ...computeStyle(animation?.out?.style, currentProgress), 39 | ...style, 40 | } as CSSProperties) 41 | : currentPage === page - 1 // for next (in) 42 | ? ({ 43 | ...computeStyle(animation?.in?.style, currentProgress), 44 | ...style, 45 | } as CSSProperties) 46 | : { display: "none" }, 47 | [ 48 | isSSR, 49 | currentPage, 50 | page, 51 | animation?.out?.style, 52 | animation?.in?.style, 53 | currentProgress, 54 | style, 55 | ] 56 | ); 57 | 58 | return ( 59 |
60 | {children} 61 |
62 | ); 63 | }; 64 | 65 | export default Animator; 66 | -------------------------------------------------------------------------------- /src/ScrollContainer.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React, { 4 | CSSProperties, 5 | FC, 6 | ReactNode, 7 | useCallback, 8 | useEffect, 9 | useRef, 10 | useState, 11 | } from "react"; 12 | import { initialScrollData } from "./constants"; 13 | import { ScrollDataContext, ScrollPageContext } from "./stores"; 14 | import { ScrollData } from "./types"; 15 | import { environment } from "./utils"; 16 | 17 | interface ScrollContainerProps { 18 | snap?: "none" | "proximity" | "mandatory"; 19 | children: ReactNode | ReactNode[]; 20 | scrollParent?: Window | HTMLElement | null; 21 | style?: CSSProperties; 22 | className?: string; 23 | } 24 | 25 | const _window: (Window & typeof globalThis) | undefined = 26 | typeof window !== "undefined" ? window : undefined; 27 | 28 | const ScrollContainer: FC = (props) => { 29 | const { 30 | snap = "none", 31 | children, 32 | scrollParent: _scrollParent, 33 | style, 34 | className, 35 | } = props; 36 | const scrollParent = _scrollParent || _window; 37 | 38 | const [scrollData, setScrollData] = useState(initialScrollData); 39 | const containerRef = useRef(null); 40 | const scrollTimer = useRef | null>(null); 41 | 42 | const scrollEvent = useCallback(() => { 43 | if (snap !== "none" && scrollTimer.current) 44 | clearTimeout(scrollTimer.current); 45 | 46 | const container = containerRef.current; 47 | if (!container) return; 48 | 49 | const currentScrollTop = 50 | scrollParent === window 51 | ? window.pageYOffset 52 | : (scrollParent as HTMLElement).scrollTop; 53 | const offsetTop = container.getBoundingClientRect().top + currentScrollTop; 54 | const currentY: number = currentScrollTop - offsetTop; 55 | const viewportHeight: number = 56 | scrollParent === window 57 | ? environment.height 58 | : (scrollParent as HTMLElement).clientHeight; 59 | const totalPage: number = Array.isArray(children) ? children?.length : 1; 60 | const totalHeight: number = totalPage * (viewportHeight - 1); 61 | const totalProgress: number = currentY / totalHeight; // total page progress 0 ~ 1 62 | const realPage: number = currentY / viewportHeight; // decimal page number 63 | const currentPage: number = Math.floor(realPage); // integer page number 64 | const currentProgress: number = realPage - currentPage; // current page progress 65 | 66 | setScrollData( 67 | (scrollData) => 68 | ({ 69 | ...scrollData, 70 | currentY, 71 | viewportHeight, 72 | totalPage, 73 | totalHeight, 74 | totalProgress, 75 | realPage, 76 | currentPage, 77 | currentProgress, 78 | } as ScrollData) 79 | ); 80 | 81 | if (snap !== "none") { 82 | scrollTimer.current = setTimeout(() => { 83 | const newCurrentPage = Math.round(realPage); 84 | let newCurrentY = currentY; 85 | 86 | if (snap === "mandatory" || Math.abs(newCurrentPage - realPage) < 0.3) 87 | newCurrentY = newCurrentPage * viewportHeight; 88 | 89 | if (newCurrentY !== currentY) 90 | window.scrollTo({ 91 | top: newCurrentY + offsetTop, 92 | behavior: "smooth", 93 | }); 94 | }, 50); 95 | } 96 | }, [children, scrollParent, snap, setScrollData]); 97 | 98 | useEffect(() => { 99 | if (scrollParent) { 100 | scrollEvent(); 101 | scrollParent.addEventListener("scroll", scrollEvent); 102 | scrollParent.addEventListener("resize", scrollEvent); 103 | return () => { 104 | scrollParent.removeEventListener("scroll", scrollEvent); 105 | scrollParent.removeEventListener("resize", scrollEvent); 106 | }; 107 | } 108 | }, [scrollEvent, scrollParent]); 109 | 110 | return ( 111 |
116 | 117 | {(Array.isArray(children) && 118 | children.map((child, index) => ( 119 | 123 | {child} 124 | 125 | ))) || ( 126 | 127 | {children} 128 | 129 | )} 130 | 131 |
132 | ); 133 | }; 134 | 135 | export default ScrollContainer; 136 | -------------------------------------------------------------------------------- /src/ScrollPage.tsx: -------------------------------------------------------------------------------- 1 | import React, { CSSProperties, FC, ReactNode, useContext } from "react"; 2 | import { ScrollDataContext } from "./stores"; 3 | 4 | interface ScrollPageProps { 5 | children: ReactNode | ReactNode[]; 6 | debugBorder?: boolean; 7 | style?: CSSProperties; 8 | className?: string; 9 | } 10 | 11 | const ScrollPage: FC = (props) => { 12 | const { children, debugBorder = false, className, style } = props; 13 | const { viewportHeight } = useContext(ScrollDataContext); 14 | 15 | const pageStyle: CSSProperties = { 16 | margin: 0, 17 | padding: 0, 18 | height: viewportHeight, 19 | position: "relative", 20 | boxSizing: "border-box", 21 | scrollSnapAlign: "center", 22 | overflow: "hidden", 23 | ...(debugBorder ? { border: "1px solid red" } : {}), 24 | ...style, 25 | }; 26 | 27 | return ( 28 |
29 | {children} 30 |
31 | ); 32 | }; 33 | 34 | export default ScrollPage; 35 | -------------------------------------------------------------------------------- /src/animations/AnimationTool.ts: -------------------------------------------------------------------------------- 1 | import { Animation } from "../types"; 2 | 3 | type StyleValue = string | number | Function; 4 | 5 | const callIfFunc = (value: StyleValue, ...params: any) => 6 | typeof value === "function" ? value(...params) : value; 7 | 8 | export const batch = (...animations: Animation[]): Animation => { 9 | const batched: Animation = { in: { style: {} }, out: { style: {} } }; 10 | const batchedTransform: { 11 | in: StyleValue[]; 12 | out: StyleValue[]; 13 | } = { 14 | in: [], 15 | out: [], 16 | }; 17 | 18 | for (const animation of animations) { 19 | if (batched?.in?.style) 20 | batched.in.style = { 21 | ...batched?.in?.style, 22 | ...animation?.in?.style, 23 | }; 24 | if (batched?.out?.style) 25 | batched.out.style = { 26 | ...batched?.out?.style, 27 | ...animation?.out?.style, 28 | }; 29 | if (animation?.in?.style?.transform) 30 | batchedTransform.in.push(animation.in.style.transform); 31 | if (animation?.out?.style?.transform) 32 | batchedTransform.out.push(animation.out.style.transform); 33 | } 34 | 35 | if (batchedTransform.in.length > 0 && batched?.in?.style) 36 | batched.in.style.transform = (value: number) => 37 | batchedTransform.in 38 | .map((t: StyleValue) => callIfFunc(t, value)) 39 | .join(" "); 40 | if (batchedTransform.out.length > 0 && batched?.out?.style) 41 | batched.out.style.transform = (value: number) => 42 | batchedTransform.out 43 | .map((t: StyleValue) => callIfFunc(t, value)) 44 | .join(" "); 45 | 46 | return batched; 47 | }; 48 | -------------------------------------------------------------------------------- /src/animations/FadeAnimation.ts: -------------------------------------------------------------------------------- 1 | import { Animation } from "../types"; 2 | import { SimpleInterpolation } from "../utils"; 3 | 4 | export const Fade = (from: number = 0, to: number = 1): Animation => ({ 5 | in: { 6 | style: { 7 | opacity: (value: number) => SimpleInterpolation(from, to, value), 8 | }, 9 | }, 10 | out: { 11 | style: { 12 | opacity: (value: number) => SimpleInterpolation(to, from, value), 13 | }, 14 | }, 15 | }); 16 | 17 | export const FadeIn = (from: number = 0, to: number = 1): Animation => ({ 18 | in: { 19 | style: { 20 | opacity: (value: number) => SimpleInterpolation(from, to, value), 21 | }, 22 | }, 23 | }); 24 | 25 | export const FadeOut = (from: number = 0, to: number = 1): Animation => ({ 26 | out: { 27 | style: { 28 | opacity: (value: number) => SimpleInterpolation(from, to, value), 29 | }, 30 | }, 31 | }); 32 | -------------------------------------------------------------------------------- /src/animations/MoveAnimation.ts: -------------------------------------------------------------------------------- 1 | import { Animation } from "../types"; 2 | import { SimpleInterpolation } from "../utils"; 3 | 4 | export const Move = ( 5 | dx: number = 0, 6 | dy: number = 100, 7 | outDx: number | null = null, 8 | outDy: number | null = -100 9 | ): Animation => ({ 10 | in: { 11 | style: { 12 | transform: (value: number) => 13 | `translate(${SimpleInterpolation( 14 | dx, 15 | 0, 16 | value 17 | )}px, ${SimpleInterpolation(dy, 0, value)}px)`, 18 | }, 19 | }, 20 | out: { 21 | style: { 22 | transform: (value: number) => 23 | `translate(${SimpleInterpolation( 24 | 0, 25 | outDx || dx, 26 | value 27 | )}px, ${SimpleInterpolation(0, outDy || dy, value)}px)`, 28 | }, 29 | }, 30 | }); 31 | 32 | export const MoveIn = (dx: number = 0, dy: number = 100): Animation => ({ 33 | in: { 34 | style: { 35 | transform: (value: number) => 36 | `translate(${SimpleInterpolation( 37 | dx, 38 | 0, 39 | value 40 | )}px, ${SimpleInterpolation(dy, 0, value)}px)`, 41 | }, 42 | }, 43 | }); 44 | 45 | export const MoveOut = (dx: number = 0, dy: number = -100): Animation => ({ 46 | out: { 47 | style: { 48 | transform: (value: number) => 49 | `translate(${SimpleInterpolation( 50 | 0, 51 | dx, 52 | value 53 | )}px, ${SimpleInterpolation(0, dy, value)}px)`, 54 | }, 55 | }, 56 | }); 57 | -------------------------------------------------------------------------------- /src/animations/StickyAnimation.ts: -------------------------------------------------------------------------------- 1 | import { environment } from "../utils"; 2 | import { Animation } from "../types"; 3 | 4 | export const Sticky = (left: number = 50, top: number = 50): Animation => ({ 5 | in: { 6 | style: { 7 | left: () => `${(left * environment.width) / 100}px`, 8 | top: () => `${(top * environment.height) / 100}px`, 9 | transform: "translate(-50%, -50%)", 10 | position: "fixed", 11 | }, 12 | }, 13 | out: { 14 | style: { 15 | left: () => `${(left * environment.width) / 100}px`, 16 | top: () => `${(top * environment.height) / 100}px`, 17 | transform: "translate(-50%, -50%)", 18 | position: "fixed", 19 | }, 20 | }, 21 | }); 22 | 23 | export const StickyIn = (left: number = 50, top: number = 50): Animation => ({ 24 | in: { 25 | style: { 26 | left: () => `${(left * environment.width) / 100}px`, 27 | top: () => `${(top * environment.height) / 100}px`, 28 | transform: "translate(-50%, -50%)", 29 | position: "fixed", 30 | }, 31 | }, 32 | out: { 33 | style: { 34 | left: () => `${(left * environment.width) / 100}px`, 35 | top: () => `${(top * environment.height) / 100}px`, 36 | transform: "translate(-50%, -50%)", 37 | position: "absolute", 38 | }, 39 | }, 40 | }); 41 | 42 | export const StickyOut = (left: number = 50, top: number = 50): Animation => ({ 43 | in: { 44 | style: { 45 | left: `${(left * environment.width) / 100}px`, 46 | top: `${(top * environment.height) / 100}px`, 47 | transform: "translate(-50%, -50%)", 48 | position: "absolute", 49 | }, 50 | }, 51 | out: { 52 | style: { 53 | left: `${(left * environment.width) / 100}px`, 54 | top: `${(top * environment.height) / 100}px`, 55 | transform: "translate(-50%, -50%)", 56 | position: "fixed", 57 | }, 58 | }, 59 | }); 60 | -------------------------------------------------------------------------------- /src/animations/ZoomAnimation.ts: -------------------------------------------------------------------------------- 1 | import { Animation } from "../types"; 2 | import { SimpleInterpolation } from "../utils"; 3 | 4 | export const Zoom = (from: number = 10, to: number = 1): Animation => ({ 5 | in: { 6 | style: { 7 | transform: (value: number) => 8 | `scale(${SimpleInterpolation(from, to, value)})`, 9 | }, 10 | }, 11 | out: { 12 | style: { 13 | transform: (value: number) => 14 | `scale(${SimpleInterpolation(to, from, value)})`, 15 | }, 16 | }, 17 | }); 18 | 19 | export const ZoomIn = (from: number = 10, to: number = 1): Animation => ({ 20 | in: { 21 | style: { 22 | transform: (value: number) => 23 | `scale(${SimpleInterpolation(from, to, value)})`, 24 | }, 25 | }, 26 | }); 27 | 28 | export const ZoomOut = (from: number = 1, to: number = 10): Animation => ({ 29 | out: { 30 | style: { 31 | transform: (value: number) => 32 | `scale(${SimpleInterpolation(from, to, value)})`, 33 | }, 34 | }, 35 | }); 36 | -------------------------------------------------------------------------------- /src/animations/index.ts: -------------------------------------------------------------------------------- 1 | import { batch } from "./AnimationTool"; 2 | import { Fade, FadeIn, FadeOut } from "./FadeAnimation"; 3 | import { Move, MoveIn, MoveOut } from "./MoveAnimation"; 4 | import { Sticky, StickyIn, StickyOut } from "./StickyAnimation"; 5 | import { Zoom, ZoomIn, ZoomOut } from "./ZoomAnimation"; 6 | 7 | export { 8 | batch, 9 | Fade, 10 | FadeIn, 11 | FadeOut, 12 | Move, 13 | MoveIn, 14 | MoveOut, 15 | Sticky, 16 | StickyIn, 17 | StickyOut, 18 | Zoom, 19 | ZoomIn, 20 | ZoomOut, 21 | }; 22 | -------------------------------------------------------------------------------- /src/constants/index.ts: -------------------------------------------------------------------------------- 1 | import initialScrollData from "./initialScrollData"; 2 | import initialScrollPage from "./initialScrollPage"; 3 | 4 | export { initialScrollData, initialScrollPage }; 5 | -------------------------------------------------------------------------------- /src/constants/initialScrollData.ts: -------------------------------------------------------------------------------- 1 | import { ScrollData } from "../types"; 2 | 3 | const initialScrollData: ScrollData = { 4 | currentY: 0, 5 | viewportHeight: 0, 6 | totalPage: 0, 7 | totalHeight: 0, 8 | totalProgress: 0, 9 | realPage: 0, 10 | currentPage: 0, 11 | currentProgress: 0, 12 | }; 13 | 14 | export default initialScrollData; 15 | -------------------------------------------------------------------------------- /src/constants/initialScrollPage.ts: -------------------------------------------------------------------------------- 1 | import { ScrollPage } from "../types"; 2 | 3 | const initialScrollPage: ScrollPage = { 4 | page: 0, 5 | }; 6 | 7 | export default initialScrollPage; 8 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | batch, 3 | Fade, 4 | FadeIn, 5 | FadeOut, 6 | Move, 7 | MoveIn, 8 | MoveOut, 9 | Sticky, 10 | StickyIn, 11 | StickyOut, 12 | Zoom, 13 | ZoomIn, 14 | ZoomOut, 15 | } from "./animations"; 16 | import Animator from "./Animator"; 17 | import ScrollContainer from "./ScrollContainer"; 18 | import ScrollPage from "./ScrollPage"; 19 | import type { Animation, Style } from "./types"; 20 | 21 | export { 22 | Animator, 23 | ScrollContainer, 24 | ScrollPage, 25 | batch, 26 | Fade, 27 | FadeIn, 28 | FadeOut, 29 | Move, 30 | MoveIn, 31 | MoveOut, 32 | Sticky, 33 | StickyIn, 34 | StickyOut, 35 | Zoom, 36 | ZoomIn, 37 | ZoomOut, 38 | }; 39 | 40 | export type { Animation, Style }; 41 | -------------------------------------------------------------------------------- /src/stores/ScrollDataContext.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from "react"; 2 | import { initialScrollData } from "../constants"; 3 | import { ScrollData } from "../types"; 4 | 5 | export const ScrollDataContext = createContext(initialScrollData); 6 | -------------------------------------------------------------------------------- /src/stores/ScrollPageContext.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from "react"; 2 | import { initialScrollPage } from "../constants"; 3 | import { ScrollPage } from "../types"; 4 | 5 | export const ScrollPageContext = createContext(initialScrollPage); 6 | -------------------------------------------------------------------------------- /src/stores/index.ts: -------------------------------------------------------------------------------- 1 | import { ScrollDataContext } from "./ScrollDataContext"; 2 | import { ScrollPageContext } from "./ScrollPageContext"; 3 | 4 | export { ScrollDataContext, ScrollPageContext }; 5 | -------------------------------------------------------------------------------- /src/types/Animation.ts: -------------------------------------------------------------------------------- 1 | import { Style } from "./Style"; 2 | 3 | export interface Animation { 4 | in?: { 5 | style?: Style; 6 | }; 7 | out?: { 8 | style?: Style; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /src/types/ScrollData.ts: -------------------------------------------------------------------------------- 1 | export interface ScrollData { 2 | currentY: number; // current scroll position (px) 3 | viewportHeight: number; // viewport height (px) 4 | totalPage: number; // total number of pages 5 | totalHeight: number; // total height of all pages (px) 6 | totalProgress: number; // total scroll progress (%) 7 | realPage: number; // decimal page number 8 | currentPage: number; // integer page number 9 | currentProgress: number; // current page progress (%) 10 | } 11 | -------------------------------------------------------------------------------- /src/types/ScrollPage.ts: -------------------------------------------------------------------------------- 1 | export interface ScrollPage { 2 | page: number; 3 | } 4 | -------------------------------------------------------------------------------- /src/types/Style.ts: -------------------------------------------------------------------------------- 1 | import { CSSProperties } from "react"; 2 | 3 | export type Style = Partial< 4 | Record< 5 | keyof CSSProperties, 6 | | CSSProperties[keyof CSSProperties] 7 | | ((value: number) => CSSProperties[keyof CSSProperties]) 8 | > 9 | >; 10 | -------------------------------------------------------------------------------- /src/types/index.ts: -------------------------------------------------------------------------------- 1 | import type { Animation } from "./Animation"; 2 | import type { Style } from "./Style"; 3 | import type { ScrollData } from "./ScrollData"; 4 | import type { ScrollPage } from "./ScrollPage"; 5 | 6 | export type { Animation, Style, ScrollData, ScrollPage }; 7 | -------------------------------------------------------------------------------- /src/utils/computeStyle.ts: -------------------------------------------------------------------------------- 1 | import { Style } from "../types"; 2 | 3 | const computeStyle = (style: Style = {}, ...params: any[]): Style => { 4 | const computedStyle: Style = { ...style }; 5 | for (const key in computedStyle) 6 | if (typeof (computedStyle as any)[key] === "function") 7 | (computedStyle as any)[key] = ((computedStyle as any)[key] as Function)( 8 | ...params 9 | ); 10 | return computedStyle; 11 | }; 12 | 13 | export default computeStyle; 14 | -------------------------------------------------------------------------------- /src/utils/environment.ts: -------------------------------------------------------------------------------- 1 | const isIphone = 2 | typeof window !== "undefined" 3 | ? /iPhone/.test(window.navigator?.userAgent ?? "") 4 | : false; 5 | const isSafari = 6 | typeof window !== "undefined" 7 | ? /Safari/.test(window.navigator?.userAgent ?? "") 8 | : false; 9 | 10 | type ProxyHandler = { 11 | get: (target: Object, key: Symbol | number | string) => any; 12 | }; 13 | 14 | interface ProxyConstructor { 15 | new (target: T, handler: ProxyHandler): T; 16 | } 17 | declare var Proxy: ProxyConstructor; 18 | 19 | const environment = new Proxy( 20 | { width: 0, height: 0 }, 21 | { 22 | get: (target: Object, key: Symbol | number | string) => { 23 | if (typeof window === "undefined") return undefined; 24 | if (key === "height") { 25 | if (isIphone && isSafari) return window.screen.height - 80; 26 | return window.innerHeight; 27 | } 28 | if (key === "width") { 29 | if (isIphone && isSafari) return window.screen.width; 30 | return window.innerWidth; 31 | } 32 | return undefined; 33 | }, 34 | } 35 | ); 36 | 37 | export default environment; 38 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | import computeStyle from "./computeStyle"; 2 | import environment from "./environment"; 3 | import { SimpleInterpolation } from "./interpolation"; 4 | 5 | export { environment, SimpleInterpolation, computeStyle }; 6 | -------------------------------------------------------------------------------- /src/utils/interpolation.ts: -------------------------------------------------------------------------------- 1 | export const SimpleInterpolation = ( 2 | from: number, 3 | to: number, 4 | value: number 5 | ): number => { 6 | return from * (1 - value) + to * value; 7 | }; 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Basic Options */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | "target": "es5", 8 | /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ 9 | "module": "commonjs", 10 | /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ 11 | // "lib": [], /* Specify library files to be included in the compilation. */ 12 | // "allowJs": true, /* Allow javascript files to be compiled. */ 13 | // "checkJs": true, /* Report errors in .js files. */ 14 | "jsx": "react", 15 | /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 16 | "declaration": true, 17 | /* Generates corresponding '.d.ts' file. */ 18 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 19 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 20 | // "outFile": "./", /* Concatenate and emit output to single file. */ 21 | "outDir": "./dist", 22 | /* Redirect output structure to the directory. */ 23 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 24 | // "composite": true, /* Enable project compilation */ 25 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 26 | // "removeComments": true, /* Do not emit comments to output. */ 27 | // "noEmit": true, /* Do not emit outputs. */ 28 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 29 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 30 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 31 | 32 | /* Strict Type-Checking Options */ 33 | "strict": true, 34 | /* Enable all strict type-checking options. */ 35 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 36 | // "strictNullChecks": true, /* Enable strict null checks. */ 37 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 38 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 39 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 40 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 41 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 42 | 43 | /* Additional Checks */ 44 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 45 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 46 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 47 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 48 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 49 | 50 | /* Module Resolution Options */ 51 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 52 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 53 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 54 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 55 | // "typeRoots": [], /* List of folders to include type definitions from. */ 56 | // "types": [], /* Type declaration files to be included in compilation. */ 57 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 58 | "esModuleInterop": true, 59 | /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 60 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 61 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 62 | 63 | /* Source Map Options */ 64 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 66 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 67 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 68 | 69 | /* Experimental Options */ 70 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 71 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 72 | 73 | /* Advanced Options */ 74 | "skipLibCheck": true, 75 | /* Skip type checking of declaration files. */ 76 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ 77 | }, 78 | "exclude": [ 79 | "./node_modules/**/*", 80 | "./examples", 81 | "./dist" 82 | ] 83 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/react@>=18.0.11": 6 | version "19.0.8" 7 | resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.8.tgz#7098e6159f2a61e4f4cef2c1223c044a9bec590e" 8 | integrity sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw== 9 | dependencies: 10 | csstype "^3.0.2" 11 | 12 | balanced-match@^1.0.0: 13 | version "1.0.0" 14 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 15 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 16 | 17 | brace-expansion@^1.1.7: 18 | version "1.1.11" 19 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 20 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 21 | dependencies: 22 | balanced-match "^1.0.0" 23 | concat-map "0.0.1" 24 | 25 | concat-map@0.0.1: 26 | version "0.0.1" 27 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 28 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 29 | 30 | csstype@^3.0.2: 31 | version "3.0.6" 32 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" 33 | integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== 34 | 35 | fs.realpath@^1.0.0: 36 | version "1.0.0" 37 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 38 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 39 | 40 | glob@^7.1.3: 41 | version "7.1.6" 42 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 43 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 44 | dependencies: 45 | fs.realpath "^1.0.0" 46 | inflight "^1.0.4" 47 | inherits "2" 48 | minimatch "^3.0.4" 49 | once "^1.3.0" 50 | path-is-absolute "^1.0.0" 51 | 52 | inflight@^1.0.4: 53 | version "1.0.6" 54 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 55 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 56 | dependencies: 57 | once "^1.3.0" 58 | wrappy "1" 59 | 60 | inherits@2: 61 | version "2.0.4" 62 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 63 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 64 | 65 | minimatch@^3.0.4: 66 | version "3.0.4" 67 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 68 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 69 | dependencies: 70 | brace-expansion "^1.1.7" 71 | 72 | once@^1.3.0: 73 | version "1.4.0" 74 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 75 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 76 | dependencies: 77 | wrappy "1" 78 | 79 | path-is-absolute@^1.0.0: 80 | version "1.0.1" 81 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 82 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 83 | 84 | rimraf@^3.0.2: 85 | version "3.0.2" 86 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 87 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 88 | dependencies: 89 | glob "^7.1.3" 90 | 91 | typescript@^4.7.3: 92 | version "4.7.3" 93 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d" 94 | integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA== 95 | 96 | wrappy@1: 97 | version "1.0.2" 98 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 99 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 100 | --------------------------------------------------------------------------------