├── .eslintrc.json ├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── example ├── favicon.svg ├── index.html ├── package.json ├── public │ ├── Parrot.glb │ ├── Stork.glb │ └── mesh.glb ├── src │ ├── App.tsx │ ├── Lights.tsx │ ├── Model.tsx │ ├── index.css │ ├── index.tsx │ └── useMesh.tsx ├── tsconfig.json ├── vite.config.ts └── yarn.lock ├── package.json ├── rollup.config.js ├── src ├── Scissor.tsx ├── ScissorTunnel.tsx ├── ScissorWindow.tsx ├── index.ts └── useScissorEvents.tsx ├── tsconfig.json └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "extends": [ 8 | "prettier", 9 | "prettier/react", 10 | "prettier/@typescript-eslint", 11 | "plugin:prettier/recommended", 12 | "plugin:react-hooks/recommended", 13 | "plugin:import/errors", 14 | "plugin:import/warnings", 15 | "prettier", 16 | "prettier/react", 17 | "prettier/@typescript-eslint" 18 | ], 19 | "plugins": [ 20 | "@typescript-eslint", 21 | "react", 22 | "react-hooks", 23 | "import", 24 | "jest", 25 | "prettier" 26 | ], 27 | "parser": "@typescript-eslint/parser", 28 | "parserOptions": { 29 | "ecmaFeatures": { 30 | "jsx": true 31 | }, 32 | "ecmaVersion": 2018, 33 | "sourceType": "module", 34 | "rules": { 35 | "curly": ["warn", "multi-line", "consistent"], 36 | "no-console": "off", 37 | "no-empty-pattern": "warn", 38 | "no-duplicate-imports": "error", 39 | "import/no-unresolved": "off", 40 | "import/export": "error", 41 | // https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md#eslint-plugin-import 42 | // We recommend you do not use the following import/* rules, as TypeScript provides the same checks as part of standard type checking: 43 | "import/named": "off", 44 | "import/namespace": "off", 45 | "import/default": "off", 46 | "no-unused-vars": [ 47 | "warn", 48 | { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" } 49 | ], 50 | "@typescript-eslint/no-unused-vars": [ 51 | "warn", 52 | { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" } 53 | ], 54 | "@typescript-eslint/no-use-before-define": "off", 55 | "@typescript-eslint/no-empty-function": "off", 56 | "@typescript-eslint/no-empty-interface": "off", 57 | "@typescript-eslint/no-explicit-any": "off", 58 | "jest/consistent-test-it": [ 59 | "error", 60 | { "fn": "it", "withinDescribe": "it" } 61 | ] 62 | } 63 | }, 64 | "settings": { 65 | "react": { 66 | "version": "detect" 67 | }, 68 | "import/extensions": [".js", ".jsx", ".ts", ".tsx"], 69 | "import/parsers": { 70 | "@typescript-eslint/parser": [".js", ".jsx", ".ts", ".tsx"] 71 | }, 72 | "import/resolver": { 73 | "node": { 74 | "extensions": [".js", ".jsx", ".ts", ".tsx", ".json"], 75 | "paths": ["src"] 76 | }, 77 | "alias": { 78 | "extensions": [".js", ".jsx", ".ts", ".tsx", ".json"], 79 | "map": [["react-three-fiber", "./src/targets/web.tsx"]] 80 | } 81 | } 82 | }, 83 | "overrides": [ 84 | { 85 | "files": ["src"], 86 | "parserOptions": { 87 | "project": "./tsconfig.json" 88 | } 89 | } 90 | ] 91 | } 92 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "trailingComma": "es5", 4 | "singleQuote": true, 5 | "tabWidth": 2, 6 | "printWidth": 120 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Poimandres 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 |
2 | 3 |

react-three-scissor

4 |

Multiple scenes, one canvas! WebGL Scissoring implementation for React Three Fiber.

5 | 6 |
7 | 8 |

9 |

Depricated! Use <View /> from react-three-drei

10 |

11 | 12 |
13 | 14 |
15 | Show depricated readme 16 | 17 | `scissor` lets you render an infinite number of individual scenes (limited by your processing capability of course) on one single WebGL context and canvas. 18 | 19 | It is as easy as: 20 | 21 | ```jsx 22 | 23 | // Add Scissored components to the canvas 24 | 25 | 26 | 27 | // Define sissor windows. 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | // ... Any number of windows 37 | ``` 38 | 39 | ## Why this? 40 | 41 | Havigng multiple WebGL contests within one webpage is generally a bad idea because (from [ThreeJS manual](https://threejs.org/manual/?q=mul#en/multiple-scenes)): 42 | 43 | - **The browser limits how many WebGL contexts you can have.** Typically that limit is around 8 of them. After which, the oldest ones lose context. 44 | - **WebGL resources can not be shared across contexts.** That means expensive operation like loading models and compiling shaders would have to be repeated. 45 | 46 | Instead, we create the illusion of multiple canvases by having one large one and drawing on very speciifc parts of it. This process is called Scissoring. 47 | 48 | ## Getting Started 49 | 50 | ### ⚡️ Jump Start 51 | 52 | ```shell 53 | # Install the entire library 54 | npm install @react-three/scissor 55 | ``` 56 | 57 | ```jsx 58 | import { Box } from '@react-three/drei' 59 | import { Scissor, ScissorWindow } from '@react-three/scissor' 60 | 61 | export default function App() { 62 | return ( 63 | <> 64 | 65 | 66 | 67 | 68 |
69 | 70 | 71 | 72 | 73 | 74 | 75 | {/* Any R3F Components */} 76 |
77 | 78 | ) 79 | } 80 | ``` 81 | 82 | It's as simple as that to create scroll-in animations. 83 | 84 | ### 💅 Styling Windows 85 | 86 | ### CSS 87 | 88 | `ScissorWindow` can be styled, positioned and scaled with any CSS property. 89 | 90 | ```jsx 91 | 97 | {/* Any R3F Components */} 98 | 99 | ``` 100 | 101 | Or, 102 | 103 | ```css 104 | .window { 105 | width: 420px; 106 | height: 420px; 107 | border: 2px solid black; 108 | 109 | position: absolute; 110 | top: 0; 111 | ...; 112 | } 113 | ``` 114 | 115 | ### Styled components 116 | 117 | It can also be wrapped in `styled-component` definitions like so: 118 | 119 | ```js 120 | const StyledScissorWindow = styled(ScissorWindow)` 121 | width: 420px; 122 | height: 420px; 123 | border: 2px solid black; 124 | 125 | position: absolute; 126 | top: 0; 127 | ... 128 | ` 129 | ``` 130 | 131 | ## Roadmap 132 | 133 | Major TODOs 134 | 135 | - [ ] Controls support 136 | - [ ] `` support 137 | - [ ] Other Drei helpers support 138 | - [ ] Per-window camera 139 | 140 |
141 | -------------------------------------------------------------------------------- /example/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | react-three-scissor example 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "tsc && vite build", 7 | "serve": "vite preview" 8 | }, 9 | "dependencies": { 10 | "@react-spring/core": "^9.2.4", 11 | "@react-spring/three": "^9.2.4", 12 | "@react-three/drei": "^7.2.1", 13 | "framer-motion": "^6.2.1", 14 | "leva": "^0.9.18", 15 | "react": "^17.0.2", 16 | "react-dom": "^17.0.2", 17 | "styled-components": "^5.3.0" 18 | }, 19 | "devDependencies": { 20 | "@types/react": "^17.0.14", 21 | "@types/react-router-dom": "^5.1.8", 22 | "@types/styled-components": "^5.1.11", 23 | "@vitejs/plugin-react-refresh": "^1.3.5", 24 | "typescript": "^4.3.5", 25 | "vite": "^2.4.3" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /example/public/Parrot.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-scissor/1d7b50e8ddd886d05eb5b63df887df4f541c3a17/example/public/Parrot.glb -------------------------------------------------------------------------------- /example/public/Stork.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-scissor/1d7b50e8ddd886d05eb5b63df887df4f541c3a17/example/public/Stork.glb -------------------------------------------------------------------------------- /example/public/mesh.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-scissor/1d7b50e8ddd886d05eb5b63df887df4f541c3a17/example/public/mesh.glb -------------------------------------------------------------------------------- /example/src/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { Suspense } from 'react' 2 | import { Canvas } from '@react-three/fiber' 3 | import { Scissor, ScissorWindow } from '@react-three/scissor' 4 | import styled from 'styled-components' 5 | import { Leva, useControls } from 'leva' 6 | 7 | import { AnimatePresence, motion } from 'framer-motion' 8 | 9 | import useMesh from './useMesh' 10 | import Model from './Model' 11 | 12 | const variants = { 13 | container: { 14 | hidden: { 15 | scale: 0, 16 | transition: { 17 | staggerChildren: 0.05, 18 | }, 19 | }, 20 | show: { 21 | scale: 1, 22 | transition: { 23 | staggerChildren: 0.05, 24 | }, 25 | }, 26 | }, 27 | item: { 28 | hidden: { scale: 0 }, 29 | show: { scale: 1 }, 30 | }, 31 | } 32 | 33 | function Animals() { 34 | const { nMesh } = useControls({ 35 | nMesh: { 36 | min: 1, 37 | max: 100, 38 | value: 1, 39 | label: 'Number of meshes', 40 | }, 41 | }) 42 | const meshes = useMesh(nMesh) 43 | 44 | return ( 45 | 46 | 47 | {meshes.map((mesh, i) => ( 48 | 49 | 50 | 51 | 52 | 53 | ))} 54 | 55 | 56 | ) 57 | } 58 | 59 | export default function App() { 60 | return ( 61 | <> 62 | 63 |
64 |

react-three-scissor

65 |

Multiple scenes, one canvas! WebGL Scissoring implementation for React Three Fiber.

66 | 67 |
68 |
69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | ) 79 | } 80 | 81 | const Copy = styled.section` 82 | width: 100%; 83 | text-align: center; 84 | font-family: 'Recursive', system-ui, sans-serif; 85 | 86 | display: flex; 87 | justify-content: center; 88 | align-items: center; 89 | flex-direction: column; 90 | 91 | padding: 16px 32px; 92 | 93 | & > main { 94 | max-width: 600px; 95 | } 96 | 97 | h1 { 98 | font-style: italic; 99 | } 100 | 101 | p { 102 | font-weight: lighter; 103 | opacity: 40%; 104 | } 105 | ` 106 | 107 | const Grid = styled(motion.section)` 108 | padding: 16px 32px; 109 | 110 | height: 100%; 111 | width: 100%; 112 | display: flex; 113 | flex-wrap: wrap; 114 | gap: 0.5em; 115 | align-items: flex-start; 116 | justify-content: center; 117 | ` 118 | 119 | const GridCell = styled(motion.div)` 120 | border: 1px solid black; 121 | border-radius: 5px; 122 | 123 | width: 200px; 124 | height: 200px; 125 | ` 126 | const StyledScissorWindow = styled(ScissorWindow)` 127 | width: 100%; 128 | height: 100%; 129 | ` 130 | -------------------------------------------------------------------------------- /example/src/Lights.tsx: -------------------------------------------------------------------------------- 1 | import React, { useRef } from 'react' 2 | 3 | export default function Lights() { 4 | const ref = useRef() 5 | 6 | // useHelper(ref, DirectionalLightHelper); 7 | 8 | return ( 9 | 10 | 17 | 25 | 29 | 30 | ) 31 | } 32 | -------------------------------------------------------------------------------- /example/src/Model.tsx: -------------------------------------------------------------------------------- 1 | import { Center, Environment, OrbitControls, OrbitControlsProps, PerspectiveCamera, useCursor } from '@react-three/drei' 2 | import { useSpring, a } from '@react-spring/three' 3 | import React, { useEffect, useRef, useState } from 'react' 4 | import { MathUtils, Mesh } from 'three' 5 | import Lights from './Lights' 6 | 7 | export default function Model({ mesh }: { mesh: Mesh }) { 8 | const [hovered, setHover] = useState(false) 9 | const [active, setActive] = useState(false) 10 | 11 | useCursor(hovered, 'pointer', 'auto') 12 | 13 | const springs = useSpring({ scale: active ? 1.5 : 1 }) 14 | 15 | return ( 16 | 17 | 18 | 19 | setHover(true)} 23 | onPointerOut={() => setHover(false)} 24 | onClick={() => setActive(!active)} 25 | > 26 | 27 | 28 |
29 | 30 | 31 | 32 |
33 |
34 |
35 | ) 36 | } 37 | -------------------------------------------------------------------------------- /example/src/index.css: -------------------------------------------------------------------------------- 1 | /*styles.css*/ 2 | 3 | @font-face { 4 | font-family: 'Recursive'; 5 | font-style: normal; 6 | font-weight: 500; 7 | font-display: swap; 8 | src: url(https://fonts.gstatic.com/s/recursive/v23/8vI-7wMr0mhh-RQChyHEH06TlXhq_gukbYrFMk1QuAIcyEwG_X-dpEfaE5YaERmK-CImKsvxvU-MXGX2fSqasNfUlTGZnI14ZeY.woff2) 9 | format('woff2'); 10 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, 11 | U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 12 | } 13 | 14 | * { 15 | box-sizing: border-box; 16 | } 17 | 18 | html, 19 | body, 20 | #root { 21 | width: 100%; 22 | height: auto; 23 | margin: 0; 24 | padding: 0; 25 | } 26 | 27 | body { 28 | background: #f0f0f0; 29 | font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, helvetica neue, helvetica, ubuntu, roboto, noto, 30 | segoe ui, arial, sans-serif; 31 | } 32 | -------------------------------------------------------------------------------- /example/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom' 3 | import App from './App' 4 | import './index.css' 5 | 6 | ReactDOM.render(, document.getElementById('root')) 7 | -------------------------------------------------------------------------------- /example/src/useMesh.tsx: -------------------------------------------------------------------------------- 1 | import { useGLTF } from '@react-three/drei' 2 | import { useMemo } from 'react' 3 | 4 | export default function useMesh(limit: number) { 5 | // @ts-ignore 6 | const { nodes } = useGLTF(`/mesh.glb`) 7 | 8 | const meshes: THREE.Mesh[] = useMemo( 9 | () => 10 | Object.values(nodes) 11 | .filter((o: any) => o.isMesh) 12 | .splice(0, limit) as any, 13 | [limit, nodes] 14 | ) 15 | 16 | return meshes 17 | } 18 | 19 | useGLTF.preload(`/mesh.glb`) 20 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 5 | "types": ["vite/client"], 6 | "allowJs": false, 7 | "skipLibCheck": false, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react", 18 | "baseUrl": ".", 19 | "paths": { 20 | "@react-three/scissor": ["../src/index.ts"] 21 | } 22 | }, 23 | "include": ["./src"] 24 | } 25 | -------------------------------------------------------------------------------- /example/vite.config.ts: -------------------------------------------------------------------------------- 1 | import path from 'path' 2 | import { defineConfig } from 'vite' 3 | import reactRefresh from '@vitejs/plugin-react-refresh' 4 | 5 | export default defineConfig({ 6 | resolve: { 7 | alias: { 8 | react: path.resolve('./node_modules/react'), 9 | 'react-dom': path.resolve('./node_modules/react-dom'), 10 | '@react-three/scissor': path.resolve('../src/index.ts'), 11 | }, 12 | }, 13 | plugins: [reactRefresh()], 14 | }) 15 | -------------------------------------------------------------------------------- /example/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.16.7": 6 | version "7.16.7" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" 8 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== 9 | dependencies: 10 | "@babel/highlight" "^7.16.7" 11 | 12 | "@babel/compat-data@^7.16.4": 13 | version "7.16.8" 14 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" 15 | integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== 16 | 17 | "@babel/core@^7.14.8": 18 | version "7.16.12" 19 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" 20 | integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== 21 | dependencies: 22 | "@babel/code-frame" "^7.16.7" 23 | "@babel/generator" "^7.16.8" 24 | "@babel/helper-compilation-targets" "^7.16.7" 25 | "@babel/helper-module-transforms" "^7.16.7" 26 | "@babel/helpers" "^7.16.7" 27 | "@babel/parser" "^7.16.12" 28 | "@babel/template" "^7.16.7" 29 | "@babel/traverse" "^7.16.10" 30 | "@babel/types" "^7.16.8" 31 | convert-source-map "^1.7.0" 32 | debug "^4.1.0" 33 | gensync "^1.0.0-beta.2" 34 | json5 "^2.1.2" 35 | semver "^6.3.0" 36 | source-map "^0.5.0" 37 | 38 | "@babel/generator@^7.16.8": 39 | version "7.16.8" 40 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" 41 | integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== 42 | dependencies: 43 | "@babel/types" "^7.16.8" 44 | jsesc "^2.5.1" 45 | source-map "^0.5.0" 46 | 47 | "@babel/helper-annotate-as-pure@^7.16.0": 48 | version "7.16.7" 49 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" 50 | integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== 51 | dependencies: 52 | "@babel/types" "^7.16.7" 53 | 54 | "@babel/helper-compilation-targets@^7.16.7": 55 | version "7.16.7" 56 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" 57 | integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== 58 | dependencies: 59 | "@babel/compat-data" "^7.16.4" 60 | "@babel/helper-validator-option" "^7.16.7" 61 | browserslist "^4.17.5" 62 | semver "^6.3.0" 63 | 64 | "@babel/helper-environment-visitor@^7.16.7": 65 | version "7.16.7" 66 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" 67 | integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== 68 | dependencies: 69 | "@babel/types" "^7.16.7" 70 | 71 | "@babel/helper-function-name@^7.16.7": 72 | version "7.16.7" 73 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" 74 | integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== 75 | dependencies: 76 | "@babel/helper-get-function-arity" "^7.16.7" 77 | "@babel/template" "^7.16.7" 78 | "@babel/types" "^7.16.7" 79 | 80 | "@babel/helper-get-function-arity@^7.16.7": 81 | version "7.16.7" 82 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" 83 | integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== 84 | dependencies: 85 | "@babel/types" "^7.16.7" 86 | 87 | "@babel/helper-hoist-variables@^7.16.7": 88 | version "7.16.7" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" 90 | integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== 91 | dependencies: 92 | "@babel/types" "^7.16.7" 93 | 94 | "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": 95 | version "7.16.7" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" 97 | integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== 98 | dependencies: 99 | "@babel/types" "^7.16.7" 100 | 101 | "@babel/helper-module-transforms@^7.16.7": 102 | version "7.16.7" 103 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" 104 | integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== 105 | dependencies: 106 | "@babel/helper-environment-visitor" "^7.16.7" 107 | "@babel/helper-module-imports" "^7.16.7" 108 | "@babel/helper-simple-access" "^7.16.7" 109 | "@babel/helper-split-export-declaration" "^7.16.7" 110 | "@babel/helper-validator-identifier" "^7.16.7" 111 | "@babel/template" "^7.16.7" 112 | "@babel/traverse" "^7.16.7" 113 | "@babel/types" "^7.16.7" 114 | 115 | "@babel/helper-plugin-utils@^7.16.7": 116 | version "7.16.7" 117 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" 118 | integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== 119 | 120 | "@babel/helper-simple-access@^7.16.7": 121 | version "7.16.7" 122 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" 123 | integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== 124 | dependencies: 125 | "@babel/types" "^7.16.7" 126 | 127 | "@babel/helper-split-export-declaration@^7.16.7": 128 | version "7.16.7" 129 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" 130 | integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== 131 | dependencies: 132 | "@babel/types" "^7.16.7" 133 | 134 | "@babel/helper-validator-identifier@^7.16.7": 135 | version "7.16.7" 136 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 137 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 138 | 139 | "@babel/helper-validator-option@^7.16.7": 140 | version "7.16.7" 141 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" 142 | integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== 143 | 144 | "@babel/helpers@^7.16.7": 145 | version "7.16.7" 146 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" 147 | integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== 148 | dependencies: 149 | "@babel/template" "^7.16.7" 150 | "@babel/traverse" "^7.16.7" 151 | "@babel/types" "^7.16.7" 152 | 153 | "@babel/highlight@^7.16.7": 154 | version "7.16.10" 155 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" 156 | integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== 157 | dependencies: 158 | "@babel/helper-validator-identifier" "^7.16.7" 159 | chalk "^2.0.0" 160 | js-tokens "^4.0.0" 161 | 162 | "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7": 163 | version "7.16.12" 164 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" 165 | integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== 166 | 167 | "@babel/plugin-transform-react-jsx-self@^7.14.5": 168 | version "7.16.7" 169 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz#f432ad0cba14c4a1faf44f0076c69e42a4d4479e" 170 | integrity sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA== 171 | dependencies: 172 | "@babel/helper-plugin-utils" "^7.16.7" 173 | 174 | "@babel/plugin-transform-react-jsx-source@^7.14.5": 175 | version "7.16.7" 176 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz#1879c3f23629d287cc6186a6c683154509ec70c0" 177 | integrity sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw== 178 | dependencies: 179 | "@babel/helper-plugin-utils" "^7.16.7" 180 | 181 | "@babel/runtime@^7.11.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.7": 182 | version "7.16.7" 183 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" 184 | integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== 185 | dependencies: 186 | regenerator-runtime "^0.13.4" 187 | 188 | "@babel/template@^7.16.7": 189 | version "7.16.7" 190 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" 191 | integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== 192 | dependencies: 193 | "@babel/code-frame" "^7.16.7" 194 | "@babel/parser" "^7.16.7" 195 | "@babel/types" "^7.16.7" 196 | 197 | "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.4.5": 198 | version "7.16.10" 199 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" 200 | integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== 201 | dependencies: 202 | "@babel/code-frame" "^7.16.7" 203 | "@babel/generator" "^7.16.8" 204 | "@babel/helper-environment-visitor" "^7.16.7" 205 | "@babel/helper-function-name" "^7.16.7" 206 | "@babel/helper-hoist-variables" "^7.16.7" 207 | "@babel/helper-split-export-declaration" "^7.16.7" 208 | "@babel/parser" "^7.16.10" 209 | "@babel/types" "^7.16.8" 210 | debug "^4.1.0" 211 | globals "^11.1.0" 212 | 213 | "@babel/types@^7.16.7", "@babel/types@^7.16.8": 214 | version "7.16.8" 215 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" 216 | integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== 217 | dependencies: 218 | "@babel/helper-validator-identifier" "^7.16.7" 219 | to-fast-properties "^2.0.0" 220 | 221 | "@chevrotain/types@^9.1.0": 222 | version "9.1.0" 223 | resolved "https://registry.yarnpkg.com/@chevrotain/types/-/types-9.1.0.tgz#689f2952be5ad9459dae3c8e9209c0f4ec3c5ec4" 224 | integrity sha512-3hbCD1CThkv9gnaSIPq0GUXwKni68e0ph6jIHwCvcWiQ4JB2xi8bFxBain0RF04qHUWuDjgnZLj4rLgimuGO+g== 225 | 226 | "@chevrotain/utils@^9.1.0": 227 | version "9.1.0" 228 | resolved "https://registry.yarnpkg.com/@chevrotain/utils/-/utils-9.1.0.tgz#a34ab0696f9491dee934e848984517d226356f21" 229 | integrity sha512-llLJZ8OAlZrjGlBvamm6Zdo/HmGAcCLq5gx7cSwUX8No+n/8ip+oaC4x33IdZIif8+Rh5dQUIZXmfbSghiOmNQ== 230 | 231 | "@emotion/is-prop-valid@^0.8.2", "@emotion/is-prop-valid@^0.8.8": 232 | version "0.8.8" 233 | resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" 234 | integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== 235 | dependencies: 236 | "@emotion/memoize" "0.7.4" 237 | 238 | "@emotion/memoize@0.7.4": 239 | version "0.7.4" 240 | resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" 241 | integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== 242 | 243 | "@emotion/stylis@^0.8.4": 244 | version "0.8.5" 245 | resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" 246 | integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== 247 | 248 | "@emotion/unitless@^0.7.4": 249 | version "0.7.5" 250 | resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" 251 | integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== 252 | 253 | "@radix-ui/popper@0.1.0": 254 | version "0.1.0" 255 | resolved "https://registry.yarnpkg.com/@radix-ui/popper/-/popper-0.1.0.tgz#c387a38f31b7799e1ea0d2bb1ca0c91c2931b063" 256 | integrity sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ== 257 | dependencies: 258 | "@babel/runtime" "^7.13.10" 259 | csstype "^3.0.4" 260 | 261 | "@radix-ui/primitive@0.1.0": 262 | version "0.1.0" 263 | resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-0.1.0.tgz#6206b97d379994f0d1929809db035733b337e543" 264 | integrity sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA== 265 | dependencies: 266 | "@babel/runtime" "^7.13.10" 267 | 268 | "@radix-ui/react-arrow@0.1.3": 269 | version "0.1.3" 270 | resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-0.1.3.tgz#17f86eab216c48aff17b13b811569a9bbabaa44d" 271 | integrity sha512-9x1gRYdlUD5OUwY7L+M+4FY/YltDSsrNSj8QXGPbxZxL5ghWXB/4lhyIGccCwk/e8ggfmQYv9SRNmn3LavPo3A== 272 | dependencies: 273 | "@babel/runtime" "^7.13.10" 274 | "@radix-ui/react-primitive" "0.1.3" 275 | 276 | "@radix-ui/react-compose-refs@0.1.0": 277 | version "0.1.0" 278 | resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz#cff6e780a0f73778b976acff2c2a5b6551caab95" 279 | integrity sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg== 280 | dependencies: 281 | "@babel/runtime" "^7.13.10" 282 | 283 | "@radix-ui/react-context@0.1.1": 284 | version "0.1.1" 285 | resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-0.1.1.tgz#06996829ea124d9a1bc1dbe3e51f33588fab0875" 286 | integrity sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg== 287 | dependencies: 288 | "@babel/runtime" "^7.13.10" 289 | 290 | "@radix-ui/react-id@0.1.4": 291 | version "0.1.4" 292 | resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-0.1.4.tgz#4cd6126e6ac8a43ebe6d52948a068b797cc9ad71" 293 | integrity sha512-/hq5m/D0ZfJWOS7TLF+G0l08KDRs87LBE46JkAvgKkg1fW4jkucx9At9D9vauIPSbdNmww5kXEp566hMlA8eXA== 294 | dependencies: 295 | "@babel/runtime" "^7.13.10" 296 | "@radix-ui/react-use-layout-effect" "0.1.0" 297 | 298 | "@radix-ui/react-popper@0.1.3": 299 | version "0.1.3" 300 | resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-0.1.3.tgz#a93bdd72845566007e5f3868caddd62318bb781e" 301 | integrity sha512-2OV2YaJv7iTZexJY3HJ7B6Fs1A/3JXd3fRGU4JY0guACfGMD1C/jSgds505MKQOTiHE/quI6j3/q8yfzFjJR9g== 302 | dependencies: 303 | "@babel/runtime" "^7.13.10" 304 | "@radix-ui/popper" "0.1.0" 305 | "@radix-ui/react-arrow" "0.1.3" 306 | "@radix-ui/react-compose-refs" "0.1.0" 307 | "@radix-ui/react-context" "0.1.1" 308 | "@radix-ui/react-primitive" "0.1.3" 309 | "@radix-ui/react-use-rect" "0.1.1" 310 | "@radix-ui/react-use-size" "0.1.0" 311 | "@radix-ui/rect" "0.1.1" 312 | 313 | "@radix-ui/react-portal@0.1.3", "@radix-ui/react-portal@^0.1.3": 314 | version "0.1.3" 315 | resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-0.1.3.tgz#56826e789b3d4e37983f6d23666e3f1b1b9ee358" 316 | integrity sha512-DrV+sPYLs0HhmX5/b7yRT6nLM9Nl6FtQe2KUG+46kiCOKQ+0XzNMO5hmeQtyq0mRf/qlC02rFu6OMsWpIqVsJg== 317 | dependencies: 318 | "@babel/runtime" "^7.13.10" 319 | "@radix-ui/react-primitive" "0.1.3" 320 | "@radix-ui/react-use-layout-effect" "0.1.0" 321 | 322 | "@radix-ui/react-presence@0.1.1": 323 | version "0.1.1" 324 | resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-0.1.1.tgz#2088dec6f4f8042f83dd2d6bf9e8ef09dadbbc15" 325 | integrity sha512-LsL+NcWDpFUAYCmXeH02o4pgqcSLpwxP84UIjCtpIKrsPe2vLuhcp79KC/jZJeXz+of2lUpMAxpM+eCpxFZtlg== 326 | dependencies: 327 | "@babel/runtime" "^7.13.10" 328 | "@radix-ui/react-compose-refs" "0.1.0" 329 | "@radix-ui/react-use-layout-effect" "0.1.0" 330 | 331 | "@radix-ui/react-primitive@0.1.3": 332 | version "0.1.3" 333 | resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-0.1.3.tgz#585c35ef2ec06bab0ea9e0fc5c916e556661b881" 334 | integrity sha512-fcyADaaAx2jdqEDLsTs6aX50S3L1c9K9CC6XMpJpuXFJCU4n9PGTFDZRtY2gAoXXoRCPIBsklCopSmGb6SsDjQ== 335 | dependencies: 336 | "@babel/runtime" "^7.13.10" 337 | "@radix-ui/react-slot" "0.1.2" 338 | 339 | "@radix-ui/react-slot@0.1.2": 340 | version "0.1.2" 341 | resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-0.1.2.tgz#e6f7ad9caa8ce81cc8d532c854c56f9b8b6307c8" 342 | integrity sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q== 343 | dependencies: 344 | "@babel/runtime" "^7.13.10" 345 | "@radix-ui/react-compose-refs" "0.1.0" 346 | 347 | "@radix-ui/react-tooltip@0.1.6": 348 | version "0.1.6" 349 | resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-0.1.6.tgz#46a3e385e004aaebd16ecaa1da7d1af70ba3bb45" 350 | integrity sha512-0uaRpRmTCQo5yMUkDpv4LEDnaQDoeLXcNNhZonCZdbZBQ7ntvjURIWIigq1/pXZp0UX7oPpFzsXD9jUp8JT0WA== 351 | dependencies: 352 | "@babel/runtime" "^7.13.10" 353 | "@radix-ui/primitive" "0.1.0" 354 | "@radix-ui/react-compose-refs" "0.1.0" 355 | "@radix-ui/react-context" "0.1.1" 356 | "@radix-ui/react-id" "0.1.4" 357 | "@radix-ui/react-popper" "0.1.3" 358 | "@radix-ui/react-portal" "0.1.3" 359 | "@radix-ui/react-presence" "0.1.1" 360 | "@radix-ui/react-primitive" "0.1.3" 361 | "@radix-ui/react-slot" "0.1.2" 362 | "@radix-ui/react-use-controllable-state" "0.1.0" 363 | "@radix-ui/react-use-escape-keydown" "0.1.0" 364 | "@radix-ui/react-use-previous" "0.1.0" 365 | "@radix-ui/react-use-rect" "0.1.1" 366 | "@radix-ui/react-visually-hidden" "0.1.3" 367 | 368 | "@radix-ui/react-use-callback-ref@0.1.0": 369 | version "0.1.0" 370 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz#934b6e123330f5b3a6b116460e6662cbc663493f" 371 | integrity sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw== 372 | dependencies: 373 | "@babel/runtime" "^7.13.10" 374 | 375 | "@radix-ui/react-use-controllable-state@0.1.0": 376 | version "0.1.0" 377 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz#4fced164acfc69a4e34fb9d193afdab973a55de1" 378 | integrity sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg== 379 | dependencies: 380 | "@babel/runtime" "^7.13.10" 381 | "@radix-ui/react-use-callback-ref" "0.1.0" 382 | 383 | "@radix-ui/react-use-escape-keydown@0.1.0": 384 | version "0.1.0" 385 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz#dc80cb3753e9d1bd992adbad9a149fb6ea941874" 386 | integrity sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ== 387 | dependencies: 388 | "@babel/runtime" "^7.13.10" 389 | "@radix-ui/react-use-callback-ref" "0.1.0" 390 | 391 | "@radix-ui/react-use-layout-effect@0.1.0": 392 | version "0.1.0" 393 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz#ebf71bd6d2825de8f1fbb984abf2293823f0f223" 394 | integrity sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg== 395 | dependencies: 396 | "@babel/runtime" "^7.13.10" 397 | 398 | "@radix-ui/react-use-previous@0.1.0": 399 | version "0.1.0" 400 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-0.1.0.tgz#fed880d41187d0fdd1e19c4588402765f342777e" 401 | integrity sha512-0fxNc33rYnCzDMPSiSnfS8YklnxQo8WqbAQXPAgIaaA1jRu2qFB916PL4qCIW+avcAAqFD38vWhqDqcVmBharA== 402 | dependencies: 403 | "@babel/runtime" "^7.13.10" 404 | 405 | "@radix-ui/react-use-rect@0.1.1": 406 | version "0.1.1" 407 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz#6c15384beee59c086e75b89a7e66f3d2e583a856" 408 | integrity sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ== 409 | dependencies: 410 | "@babel/runtime" "^7.13.10" 411 | "@radix-ui/rect" "0.1.1" 412 | 413 | "@radix-ui/react-use-size@0.1.0": 414 | version "0.1.0" 415 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-0.1.0.tgz#dc49295d646f5d3f570943dbb88bd94fc7db7daf" 416 | integrity sha512-TcZAsR+BYI46w/RbaSFCRACl+Jh6mDqhu6GS2r0iuJpIVrj8atff7qtTjmMmfGtEDNEjhl7DxN3pr1nTS/oruQ== 417 | dependencies: 418 | "@babel/runtime" "^7.13.10" 419 | 420 | "@radix-ui/react-visually-hidden@0.1.3": 421 | version "0.1.3" 422 | resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-0.1.3.tgz#406a2f1e2f2cf27e5b85a29dc3aca718e695acaf" 423 | integrity sha512-dPU6ZR2WQ/W9qv7E1Y8/I8ymqG+8sViU6dQQ6sfr2/8yGr0I4mmI7ywTnqXaE+YS9gHLEZHdQcEqTNESg6YfdQ== 424 | dependencies: 425 | "@babel/runtime" "^7.13.10" 426 | "@radix-ui/react-primitive" "0.1.3" 427 | 428 | "@radix-ui/rect@0.1.1": 429 | version "0.1.1" 430 | resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-0.1.1.tgz#95b5ba51f469bea6b1b841e2d427e17e37d38419" 431 | integrity sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw== 432 | dependencies: 433 | "@babel/runtime" "^7.13.10" 434 | 435 | "@react-spring/animated@~9.4.0": 436 | version "9.4.2" 437 | resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.4.2.tgz#1dc107233ce4a44b023abac829f3b2ea8327a128" 438 | integrity sha512-Dzum5Ho8e+LIAegAqRyoQFakD2IVH3ZQ2nsFXJorAFq3Xjv6IVPz/+TNxb/wSvnsMludfoF+ZIf319FSFmgD5w== 439 | dependencies: 440 | "@react-spring/shared" "~9.4.0" 441 | "@react-spring/types" "~9.4.0" 442 | 443 | "@react-spring/core@^9.2.4", "@react-spring/core@~9.4.0": 444 | version "9.4.2" 445 | resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.4.2.tgz#c20249535b3acaead015d17e1c4ce839ec3d4c9f" 446 | integrity sha512-Ej/ULwdx8rQtMAWEpLgwbKcQEx6vPfjyG3cxLP05zAInpCoWkYpl+sXOp9tn3r99mTNQPTTt7BgQsSnmQA8+rQ== 447 | dependencies: 448 | "@react-spring/animated" "~9.4.0" 449 | "@react-spring/rafz" "~9.4.0" 450 | "@react-spring/shared" "~9.4.0" 451 | "@react-spring/types" "~9.4.0" 452 | 453 | "@react-spring/rafz@~9.4.0": 454 | version "9.4.2" 455 | resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.4.2.tgz#40a663d407cd116d436f662c6849f8e5b56234b6" 456 | integrity sha512-rSm+G8E/XEEpnCGtT/xYN6o8VvEXlU8wN/hyKp4Q44XAZzGSMHLIFP7pY94/MmWsxCxjkw1AxUWhiFYxWrnI5Q== 457 | 458 | "@react-spring/shared@~9.4.0": 459 | version "9.4.2" 460 | resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.4.2.tgz#45e103eee04f5e857ab2c575c2a84d3a883f0bfa" 461 | integrity sha512-mZtbQLpMm6Vy5+O1MSlY9KuAcMO8rdUQvtdnC7Or7y7xiZlnzj8oAILyO6Y2rD2ZC1PmgVS0gMev/8T+MykW+Q== 462 | dependencies: 463 | "@react-spring/rafz" "~9.4.0" 464 | "@react-spring/types" "~9.4.0" 465 | 466 | "@react-spring/three@^9.2.4", "@react-spring/three@^9.3.1": 467 | version "9.4.2" 468 | resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.4.2.tgz#a39b4f816023ea7792cacf74188f09de8fa13604" 469 | integrity sha512-qAPHOMjQjl9V3Eh4Xbdsdx9mAMe+rtSBfEuZGfoF5l8P8zC42gxggbyM1sKUOip3yyz76YTPiosWkmvgCVxMng== 470 | dependencies: 471 | "@react-spring/animated" "~9.4.0" 472 | "@react-spring/core" "~9.4.0" 473 | "@react-spring/shared" "~9.4.0" 474 | "@react-spring/types" "~9.4.0" 475 | 476 | "@react-spring/types@~9.4.0": 477 | version "9.4.2" 478 | resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.4.2.tgz#f0518f6d23a0b0f699a71976483323ac84bc4ace" 479 | integrity sha512-GGiIscTM+CEUNV52anj3g5FqAZKL2+eRKtvBOAlC99qGBbvJ3qTLImrUR/I3lXY7PRuLgzI6kh34quA1oUxWYQ== 480 | 481 | "@react-three/drei@^7.2.1": 482 | version "7.27.5" 483 | resolved "https://registry.yarnpkg.com/@react-three/drei/-/drei-7.27.5.tgz#8559b8c6e4b1363ee93cfc1d51d936726bf1bb16" 484 | integrity sha512-LD0BvN+toHnyn7TV+M50+MbtVIX1PXwHX9RXRa6wgBBDFWBRXNUQb37401+vgzqYV61/JZtxd+b4kM+OYZGpkg== 485 | dependencies: 486 | "@babel/runtime" "^7.11.2" 487 | "@react-spring/three" "^9.3.1" 488 | "@use-gesture/react" "^10.2.0" 489 | detect-gpu "^3.1.28" 490 | glsl-noise "^0.0.0" 491 | lodash.omit "^4.5.0" 492 | lodash.pick "^4.4.0" 493 | react-composer "^5.0.2" 494 | react-merge-refs "^1.1.0" 495 | stats.js "^0.17.0" 496 | three-mesh-bvh "^0.5.2" 497 | three-stdlib "^2.6.1" 498 | troika-three-text "^0.44.0" 499 | use-asset "^1.0.4" 500 | utility-types "^3.10.0" 501 | zustand "^3.5.13" 502 | 503 | "@rollup/pluginutils@^4.1.1": 504 | version "4.1.2" 505 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751" 506 | integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ== 507 | dependencies: 508 | estree-walker "^2.0.1" 509 | picomatch "^2.2.2" 510 | 511 | "@stitches/react@1.2.6": 512 | version "1.2.6" 513 | resolved "https://registry.yarnpkg.com/@stitches/react/-/react-1.2.6.tgz#61f2a3d1110334ecd33bcb7463650127d42470cb" 514 | integrity sha512-gRVITYj8W4jJmoiVxWDv72yCvd12VvtUUAnTzs07EqmtvGCVgKZu3Dx0x5KVCcb0b6tfgvvNH2L84YrzdM4Mag== 515 | 516 | "@types/history@^4.7.11": 517 | version "4.7.11" 518 | resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" 519 | integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== 520 | 521 | "@types/hoist-non-react-statics@*": 522 | version "3.3.1" 523 | resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" 524 | integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== 525 | dependencies: 526 | "@types/react" "*" 527 | hoist-non-react-statics "^3.3.0" 528 | 529 | "@types/prop-types@*": 530 | version "15.7.4" 531 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" 532 | integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== 533 | 534 | "@types/react-router-dom@^5.1.8": 535 | version "5.3.3" 536 | resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" 537 | integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== 538 | dependencies: 539 | "@types/history" "^4.7.11" 540 | "@types/react" "*" 541 | "@types/react-router" "*" 542 | 543 | "@types/react-router@*": 544 | version "5.1.18" 545 | resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.18.tgz#c8851884b60bc23733500d86c1266e1cfbbd9ef3" 546 | integrity sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g== 547 | dependencies: 548 | "@types/history" "^4.7.11" 549 | "@types/react" "*" 550 | 551 | "@types/react@*", "@types/react@^17.0.14": 552 | version "17.0.38" 553 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd" 554 | integrity sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ== 555 | dependencies: 556 | "@types/prop-types" "*" 557 | "@types/scheduler" "*" 558 | csstype "^3.0.2" 559 | 560 | "@types/scheduler@*": 561 | version "0.16.2" 562 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" 563 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== 564 | 565 | "@types/styled-components@^5.1.11": 566 | version "5.1.21" 567 | resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.21.tgz#39f6bdc4103254d899531ef099dae5619b039cdb" 568 | integrity sha512-lQzA0T6CaLXoeiOkSe2US2JfFgJV2/yJ8W1BaJubQQh2wdq7H+qScQQfbjURyLkgI1Ig+S/jRHCrWikfMHC6zA== 569 | dependencies: 570 | "@types/hoist-non-react-statics" "*" 571 | "@types/react" "*" 572 | csstype "^3.0.2" 573 | 574 | "@use-gesture/core@10.2.4": 575 | version "10.2.4" 576 | resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.2.4.tgz#139370223174b0589bd4b4f8ac7c0beb6ba64ba2" 577 | integrity sha512-fk1LjCBj43BKb8NE05qkdtPOR0ngA7PwgvEqfFap/h+s7QHi+JTv4/mtDQ4wI9zzem+Ry5EKrHS/cVdBehI4wA== 578 | 579 | "@use-gesture/react@^10.2.0", "@use-gesture/react@^10.2.4": 580 | version "10.2.4" 581 | resolved "https://registry.yarnpkg.com/@use-gesture/react/-/react-10.2.4.tgz#b333e91b00670785ee32e8f4f1530ac6b8894bbc" 582 | integrity sha512-CbqyRj+qNbRBOGmS8OWtaOa29fxEr7bKTYHvPuMQ1wsgQDh2/DqQxbp7cFxAg6WZ8oZjppDj/EkWnw22WpIIWQ== 583 | dependencies: 584 | "@use-gesture/core" "10.2.4" 585 | 586 | "@vitejs/plugin-react-refresh@^1.3.5": 587 | version "1.3.6" 588 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz#19818392db01e81746cfeb04e096ab3010e79fe3" 589 | integrity sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA== 590 | dependencies: 591 | "@babel/core" "^7.14.8" 592 | "@babel/plugin-transform-react-jsx-self" "^7.14.5" 593 | "@babel/plugin-transform-react-jsx-source" "^7.14.5" 594 | "@rollup/pluginutils" "^4.1.1" 595 | react-refresh "^0.10.0" 596 | 597 | "@webgpu/glslang@^0.0.15": 598 | version "0.0.15" 599 | resolved "https://registry.yarnpkg.com/@webgpu/glslang/-/glslang-0.0.15.tgz#f5ccaf6015241e6175f4b90906b053f88483d1f2" 600 | integrity sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q== 601 | 602 | "@webxr-input-profiles/motion-controllers@^1.0.0": 603 | version "1.0.0" 604 | resolved "https://registry.yarnpkg.com/@webxr-input-profiles/motion-controllers/-/motion-controllers-1.0.0.tgz#0a84533288af39d85bfe1987721035925d69be47" 605 | integrity sha512-Ppxde+G1/QZbU8ShCQg+eq5VtlcL/FPkerF1dkDOLlIml0LJD1tFqnCZYR0SrHzYleIQ2siRnOx7xbFLaCpExQ== 606 | 607 | "@welldone-software/why-did-you-render@^6.2.3": 608 | version "6.2.3" 609 | resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-6.2.3.tgz#cdd5e27cf25b7e767c1c0b0e8808f67d3f6be833" 610 | integrity sha512-FQgi90jvC9uw2aALlonJfqaWOvU5UUBBVvdAnS2iryXwCc4YJkKsPJY5Y/LzaND3OIyk8XGUn1vTRn6hcem28Q== 611 | dependencies: 612 | lodash "^4" 613 | 614 | ansi-styles@^3.2.1: 615 | version "3.2.1" 616 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 617 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 618 | dependencies: 619 | color-convert "^1.9.0" 620 | 621 | assign-symbols@^1.0.0: 622 | version "1.0.0" 623 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 624 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 625 | 626 | attr-accept@^2.2.1: 627 | version "2.2.2" 628 | resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" 629 | integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== 630 | 631 | "babel-plugin-styled-components@>= 1.12.0": 632 | version "2.0.2" 633 | resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz#0fac11402dc9db73698b55847ab1dc73f5197c54" 634 | integrity sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw== 635 | dependencies: 636 | "@babel/helper-annotate-as-pure" "^7.16.0" 637 | "@babel/helper-module-imports" "^7.16.0" 638 | babel-plugin-syntax-jsx "^6.18.0" 639 | lodash "^4.17.11" 640 | 641 | babel-plugin-syntax-jsx@^6.18.0: 642 | version "6.18.0" 643 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" 644 | integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= 645 | 646 | bidi-js@^1.0.2: 647 | version "1.0.2" 648 | resolved "https://registry.yarnpkg.com/bidi-js/-/bidi-js-1.0.2.tgz#1a497a762c2ddea377429d2649c9ce0f8a91527f" 649 | integrity sha512-rzSy/k7WdX5zOyeHHCOixGXbCHkyogkxPKL2r8QtzHmVQDiWCXUWa18bLdMWT9CYMLOYTjWpTHawuev2ouYJVw== 650 | dependencies: 651 | require-from-string "^2.0.2" 652 | 653 | browserslist@^4.17.5: 654 | version "4.19.1" 655 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" 656 | integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== 657 | dependencies: 658 | caniuse-lite "^1.0.30001286" 659 | electron-to-chromium "^1.4.17" 660 | escalade "^3.1.1" 661 | node-releases "^2.0.1" 662 | picocolors "^1.0.0" 663 | 664 | camelize@^1.0.0: 665 | version "1.0.0" 666 | resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" 667 | integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= 668 | 669 | caniuse-lite@^1.0.30001286: 670 | version "1.0.30001301" 671 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz#ebc9086026534cab0dab99425d9c3b4425e5f450" 672 | integrity sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA== 673 | 674 | chalk@^2.0.0: 675 | version "2.4.2" 676 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 677 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 678 | dependencies: 679 | ansi-styles "^3.2.1" 680 | escape-string-regexp "^1.0.5" 681 | supports-color "^5.3.0" 682 | 683 | chevrotain@^9.0.2: 684 | version "9.1.0" 685 | resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-9.1.0.tgz#ca2a811372687ad6f4d11c063cd27a26e5fbd52d" 686 | integrity sha512-A86/55so63HCfu0dgGg3j9u8uuuBOrSqly1OhBZxRu2x6sAKILLzfVjbGMw45kgier6lz45EzcjjWtTRgoT84Q== 687 | dependencies: 688 | "@chevrotain/types" "^9.1.0" 689 | "@chevrotain/utils" "^9.1.0" 690 | regexp-to-ast "0.5.0" 691 | 692 | color-convert@^1.9.0: 693 | version "1.9.3" 694 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 695 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 696 | dependencies: 697 | color-name "1.1.3" 698 | 699 | color-name@1.1.3: 700 | version "1.1.3" 701 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 702 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 703 | 704 | colord@^2.9.2: 705 | version "2.9.2" 706 | resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" 707 | integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== 708 | 709 | convert-source-map@^1.7.0: 710 | version "1.8.0" 711 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 712 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 713 | dependencies: 714 | safe-buffer "~5.1.1" 715 | 716 | css-color-keywords@^1.0.0: 717 | version "1.0.0" 718 | resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" 719 | integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= 720 | 721 | css-to-react-native@^3.0.0: 722 | version "3.0.0" 723 | resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" 724 | integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== 725 | dependencies: 726 | camelize "^1.0.0" 727 | css-color-keywords "^1.0.0" 728 | postcss-value-parser "^4.0.2" 729 | 730 | csstype@^3.0.2, csstype@^3.0.4: 731 | version "3.0.10" 732 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" 733 | integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== 734 | 735 | debug@^4.1.0: 736 | version "4.3.3" 737 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 738 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 739 | dependencies: 740 | ms "2.1.2" 741 | 742 | dequal@^2.0.2: 743 | version "2.0.2" 744 | resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" 745 | integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== 746 | 747 | detect-gpu@^3.1.28: 748 | version "3.1.30" 749 | resolved "https://registry.yarnpkg.com/detect-gpu/-/detect-gpu-3.1.30.tgz#5f81d02dc8c6417f686e1057256b3bd5d5a6f3f5" 750 | integrity sha512-WUOk8imHH56AWVt6iHry69qbNEFsPjtS6qsinurfxeI3bVYQZzFk8zECTaodLxfeRad7QspDjjkJWkp5vBo8WA== 751 | dependencies: 752 | webgl-constants "^1.1.1" 753 | 754 | draco3d@^1.4.1: 755 | version "1.5.0" 756 | resolved "https://registry.yarnpkg.com/draco3d/-/draco3d-1.5.0.tgz#768d5e449b6ca60684ed4666e56a5bb585f8c408" 757 | integrity sha512-8ESjH7o5xju1nfSvcS2A9vIbwSRQ3yYY0Yv7SFhNszsq4FlN4LGZuxNc3YfAPcg0AddaK0dE5AES3w1JoGeViA== 758 | 759 | electron-to-chromium@^1.4.17: 760 | version "1.4.51" 761 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.51.tgz#a432f5a5d983ace79278a33057300cf949627e63" 762 | integrity sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ== 763 | 764 | esbuild-android-arm64@0.13.15: 765 | version "0.13.15" 766 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" 767 | integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== 768 | 769 | esbuild-darwin-64@0.13.15: 770 | version "0.13.15" 771 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" 772 | integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== 773 | 774 | esbuild-darwin-arm64@0.13.15: 775 | version "0.13.15" 776 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" 777 | integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== 778 | 779 | esbuild-freebsd-64@0.13.15: 780 | version "0.13.15" 781 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" 782 | integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== 783 | 784 | esbuild-freebsd-arm64@0.13.15: 785 | version "0.13.15" 786 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" 787 | integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== 788 | 789 | esbuild-linux-32@0.13.15: 790 | version "0.13.15" 791 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" 792 | integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== 793 | 794 | esbuild-linux-64@0.13.15: 795 | version "0.13.15" 796 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" 797 | integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== 798 | 799 | esbuild-linux-arm64@0.13.15: 800 | version "0.13.15" 801 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" 802 | integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== 803 | 804 | esbuild-linux-arm@0.13.15: 805 | version "0.13.15" 806 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" 807 | integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== 808 | 809 | esbuild-linux-mips64le@0.13.15: 810 | version "0.13.15" 811 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" 812 | integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== 813 | 814 | esbuild-linux-ppc64le@0.13.15: 815 | version "0.13.15" 816 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" 817 | integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== 818 | 819 | esbuild-netbsd-64@0.13.15: 820 | version "0.13.15" 821 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" 822 | integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== 823 | 824 | esbuild-openbsd-64@0.13.15: 825 | version "0.13.15" 826 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" 827 | integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== 828 | 829 | esbuild-sunos-64@0.13.15: 830 | version "0.13.15" 831 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" 832 | integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== 833 | 834 | esbuild-windows-32@0.13.15: 835 | version "0.13.15" 836 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" 837 | integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== 838 | 839 | esbuild-windows-64@0.13.15: 840 | version "0.13.15" 841 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" 842 | integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== 843 | 844 | esbuild-windows-arm64@0.13.15: 845 | version "0.13.15" 846 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" 847 | integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== 848 | 849 | esbuild@^0.13.12: 850 | version "0.13.15" 851 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" 852 | integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== 853 | optionalDependencies: 854 | esbuild-android-arm64 "0.13.15" 855 | esbuild-darwin-64 "0.13.15" 856 | esbuild-darwin-arm64 "0.13.15" 857 | esbuild-freebsd-64 "0.13.15" 858 | esbuild-freebsd-arm64 "0.13.15" 859 | esbuild-linux-32 "0.13.15" 860 | esbuild-linux-64 "0.13.15" 861 | esbuild-linux-arm "0.13.15" 862 | esbuild-linux-arm64 "0.13.15" 863 | esbuild-linux-mips64le "0.13.15" 864 | esbuild-linux-ppc64le "0.13.15" 865 | esbuild-netbsd-64 "0.13.15" 866 | esbuild-openbsd-64 "0.13.15" 867 | esbuild-sunos-64 "0.13.15" 868 | esbuild-windows-32 "0.13.15" 869 | esbuild-windows-64 "0.13.15" 870 | esbuild-windows-arm64 "0.13.15" 871 | 872 | escalade@^3.1.1: 873 | version "3.1.1" 874 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 875 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 876 | 877 | escape-string-regexp@^1.0.5: 878 | version "1.0.5" 879 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 880 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 881 | 882 | estree-walker@^2.0.1: 883 | version "2.0.2" 884 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 885 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 886 | 887 | extend-shallow@^2.0.1: 888 | version "2.0.1" 889 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 890 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 891 | dependencies: 892 | is-extendable "^0.1.0" 893 | 894 | extend-shallow@^3.0.0: 895 | version "3.0.2" 896 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 897 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 898 | dependencies: 899 | assign-symbols "^1.0.0" 900 | is-extendable "^1.0.1" 901 | 902 | fast-deep-equal@^3.1.3: 903 | version "3.1.3" 904 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 905 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 906 | 907 | fflate@^0.6.9: 908 | version "0.6.10" 909 | resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43" 910 | integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg== 911 | 912 | file-selector@^0.2.2: 913 | version "0.2.4" 914 | resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.2.4.tgz#7b98286f9dbb9925f420130ea5ed0a69238d4d80" 915 | integrity sha512-ZDsQNbrv6qRi1YTDOEWzf5J2KjZ9KMI1Q2SGeTkCJmNNW25Jg4TW4UMcmoqcg4WrAyKRcpBXdbWRxkfrOzVRbA== 916 | dependencies: 917 | tslib "^2.0.3" 918 | 919 | for-in@^1.0.2: 920 | version "1.0.2" 921 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 922 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 923 | 924 | framer-motion@^6.2.1: 925 | version "6.2.1" 926 | resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-6.2.1.tgz#e0d02dd47211fe87e43bf5a0779991372bdadb1c" 927 | integrity sha512-/8MMBCKgiuO6V/raGsJ+2dFZw5kteXsX1cSarxiM8o1F0XNlzd+4WGTIos85G2nZpwpmReJuUk+Hz4S3Y7fwPw== 928 | dependencies: 929 | framesync "6.0.1" 930 | hey-listen "^1.0.8" 931 | popmotion "11.0.3" 932 | style-value-types "5.0.0" 933 | tslib "^2.1.0" 934 | optionalDependencies: 935 | "@emotion/is-prop-valid" "^0.8.2" 936 | 937 | framesync@6.0.1: 938 | version "6.0.1" 939 | resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.0.1.tgz#5e32fc01f1c42b39c654c35b16440e07a25d6f20" 940 | integrity sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA== 941 | dependencies: 942 | tslib "^2.1.0" 943 | 944 | fsevents@~2.3.2: 945 | version "2.3.2" 946 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 947 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 948 | 949 | function-bind@^1.1.1: 950 | version "1.1.1" 951 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 952 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 953 | 954 | gensync@^1.0.0-beta.2: 955 | version "1.0.0-beta.2" 956 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 957 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 958 | 959 | get-value@^2.0.6: 960 | version "2.0.6" 961 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 962 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 963 | 964 | globals@^11.1.0: 965 | version "11.12.0" 966 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 967 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 968 | 969 | glsl-noise@^0.0.0: 970 | version "0.0.0" 971 | resolved "https://registry.yarnpkg.com/glsl-noise/-/glsl-noise-0.0.0.tgz#367745f3a33382c0eeec4cb54b7e99cfc1d7670b" 972 | integrity sha1-NndF86MzgsDu7Ey1S36Zz8HXZws= 973 | 974 | has-flag@^3.0.0: 975 | version "3.0.0" 976 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 977 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 978 | 979 | has@^1.0.3: 980 | version "1.0.3" 981 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 982 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 983 | dependencies: 984 | function-bind "^1.1.1" 985 | 986 | hey-listen@^1.0.8: 987 | version "1.0.8" 988 | resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" 989 | integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== 990 | 991 | hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0: 992 | version "3.3.2" 993 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" 994 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== 995 | dependencies: 996 | react-is "^16.7.0" 997 | 998 | is-core-module@^2.8.1: 999 | version "2.8.1" 1000 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" 1001 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== 1002 | dependencies: 1003 | has "^1.0.3" 1004 | 1005 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1006 | version "0.1.1" 1007 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1008 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 1009 | 1010 | is-extendable@^1.0.0, is-extendable@^1.0.1: 1011 | version "1.0.1" 1012 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1013 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 1014 | dependencies: 1015 | is-plain-object "^2.0.4" 1016 | 1017 | is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1018 | version "2.0.4" 1019 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1020 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1021 | dependencies: 1022 | isobject "^3.0.1" 1023 | 1024 | isobject@^3.0.1: 1025 | version "3.0.1" 1026 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1027 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 1028 | 1029 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1030 | version "4.0.0" 1031 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1032 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1033 | 1034 | jsesc@^2.5.1: 1035 | version "2.5.2" 1036 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1037 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1038 | 1039 | json5@^2.1.2: 1040 | version "2.2.0" 1041 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 1042 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 1043 | dependencies: 1044 | minimist "^1.2.5" 1045 | 1046 | ktx-parse@^0.2.1: 1047 | version "0.2.2" 1048 | resolved "https://registry.yarnpkg.com/ktx-parse/-/ktx-parse-0.2.2.tgz#b037b66044855215b332cb73104590af49e47791" 1049 | integrity sha512-cFBc1jnGG2WlUf52NbDUXK2obJ+Mo9WUkBRvr6tP6CKxRMvZwDDFNV3JAS4cewETp5KyexByfWm9sm+O8AffiQ== 1050 | 1051 | leva@^0.9.18: 1052 | version "0.9.18" 1053 | resolved "https://registry.yarnpkg.com/leva/-/leva-0.9.18.tgz#f281375cad1dde517761e3663c3121fd616b97f7" 1054 | integrity sha512-4KlYlblbJAemVHkpljd56RW4IehYvtMlmP4sygC9eot9RD3zXePh7YfL8KF7njNXZkVn/X3xEhRQs45l3QYDWA== 1055 | dependencies: 1056 | "@radix-ui/react-portal" "^0.1.3" 1057 | "@radix-ui/react-tooltip" "0.1.6" 1058 | "@stitches/react" "1.2.6" 1059 | "@use-gesture/react" "^10.2.4" 1060 | "@welldone-software/why-did-you-render" "^6.2.3" 1061 | colord "^2.9.2" 1062 | dequal "^2.0.2" 1063 | merge-value "^1.0.0" 1064 | react-colorful "^5.5.1" 1065 | react-dropzone "^11.4.2" 1066 | v8n "^1.3.3" 1067 | zustand "^3.6.7" 1068 | 1069 | lodash.omit@^4.5.0: 1070 | version "4.5.0" 1071 | resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" 1072 | integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= 1073 | 1074 | lodash.pick@^4.4.0: 1075 | version "4.4.0" 1076 | resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" 1077 | integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= 1078 | 1079 | lodash@^4, lodash@^4.17.11: 1080 | version "4.17.21" 1081 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1082 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1083 | 1084 | loose-envify@^1.1.0, loose-envify@^1.4.0: 1085 | version "1.4.0" 1086 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1087 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1088 | dependencies: 1089 | js-tokens "^3.0.0 || ^4.0.0" 1090 | 1091 | merge-value@^1.0.0: 1092 | version "1.0.0" 1093 | resolved "https://registry.yarnpkg.com/merge-value/-/merge-value-1.0.0.tgz#d28f8d41c0b37426e032d1059a0d0343302de502" 1094 | integrity sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ== 1095 | dependencies: 1096 | get-value "^2.0.6" 1097 | is-extendable "^1.0.0" 1098 | mixin-deep "^1.2.0" 1099 | set-value "^2.0.0" 1100 | 1101 | minimist@^1.2.5: 1102 | version "1.2.5" 1103 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1104 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1105 | 1106 | mixin-deep@^1.2.0: 1107 | version "1.3.2" 1108 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 1109 | integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== 1110 | dependencies: 1111 | for-in "^1.0.2" 1112 | is-extendable "^1.0.1" 1113 | 1114 | mmd-parser@^1.0.4: 1115 | version "1.0.4" 1116 | resolved "https://registry.yarnpkg.com/mmd-parser/-/mmd-parser-1.0.4.tgz#87cc05782cb5974ca854f0303fc5147bc9d690e7" 1117 | integrity sha512-Qi0VCU46t2IwfGv5KF0+D/t9cizcDug7qnNoy9Ggk7aucp0tssV8IwTMkBlDbm+VqAf3cdQHTCARKSsuS2MYFg== 1118 | 1119 | ms@2.1.2: 1120 | version "2.1.2" 1121 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1122 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1123 | 1124 | nanoid@^3.1.30: 1125 | version "3.2.0" 1126 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" 1127 | integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== 1128 | 1129 | node-releases@^2.0.1: 1130 | version "2.0.1" 1131 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" 1132 | integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== 1133 | 1134 | object-assign@^4.1.1: 1135 | version "4.1.1" 1136 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1137 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1138 | 1139 | opentype.js@^1.3.3: 1140 | version "1.3.4" 1141 | resolved "https://registry.yarnpkg.com/opentype.js/-/opentype.js-1.3.4.tgz#1c0e72e46288473cc4a4c6a2dc60fd7fe6020d77" 1142 | integrity sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw== 1143 | dependencies: 1144 | string.prototype.codepointat "^0.2.1" 1145 | tiny-inflate "^1.0.3" 1146 | 1147 | path-parse@^1.0.7: 1148 | version "1.0.7" 1149 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1150 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1151 | 1152 | picocolors@^1.0.0: 1153 | version "1.0.0" 1154 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1155 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1156 | 1157 | picomatch@^2.2.2: 1158 | version "2.3.1" 1159 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1160 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1161 | 1162 | popmotion@11.0.3: 1163 | version "11.0.3" 1164 | resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.3.tgz#565c5f6590bbcddab7a33a074bb2ba97e24b0cc9" 1165 | integrity sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA== 1166 | dependencies: 1167 | framesync "6.0.1" 1168 | hey-listen "^1.0.8" 1169 | style-value-types "5.0.0" 1170 | tslib "^2.1.0" 1171 | 1172 | postcss-value-parser@^4.0.2: 1173 | version "4.2.0" 1174 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 1175 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 1176 | 1177 | postcss@^8.4.5: 1178 | version "8.4.5" 1179 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" 1180 | integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== 1181 | dependencies: 1182 | nanoid "^3.1.30" 1183 | picocolors "^1.0.0" 1184 | source-map-js "^1.0.1" 1185 | 1186 | potpack@^1.0.1: 1187 | version "1.0.2" 1188 | resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" 1189 | integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== 1190 | 1191 | prop-types@^15.6.0, prop-types@^15.7.2: 1192 | version "15.8.1" 1193 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" 1194 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== 1195 | dependencies: 1196 | loose-envify "^1.4.0" 1197 | object-assign "^4.1.1" 1198 | react-is "^16.13.1" 1199 | 1200 | react-colorful@^5.5.1: 1201 | version "5.5.1" 1202 | resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.5.1.tgz#29d9c4e496f2ca784dd2bb5053a3a4340cfaf784" 1203 | integrity sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg== 1204 | 1205 | react-composer@^5.0.2: 1206 | version "5.0.2" 1207 | resolved "https://registry.yarnpkg.com/react-composer/-/react-composer-5.0.2.tgz#131cb53326abb07363795ad3abb0dc4a3005ee05" 1208 | integrity sha512-6E2UNjUF0e7KRY+/faU2Hv7D9zagXnYdTfSSCGdYfuds6mRnVpN19vrbHXShaQzJNVXL4VOUb8qq6DvClDIG1g== 1209 | dependencies: 1210 | prop-types "^15.6.0" 1211 | 1212 | react-dom@^17.0.2: 1213 | version "17.0.2" 1214 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 1215 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 1216 | dependencies: 1217 | loose-envify "^1.1.0" 1218 | object-assign "^4.1.1" 1219 | scheduler "^0.20.2" 1220 | 1221 | react-dropzone@^11.4.2: 1222 | version "11.5.1" 1223 | resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-11.5.1.tgz#f4d664437bf8af6acfccbf5040a9890c6780a49f" 1224 | integrity sha512-eNhttdq4ZDe3eKbXAe54Opt+sbtqmNK5NWTHf/l5d+1TdZqShJ8gMjBrya00qx5zkI//TYxRhu1d9pemTgaWwg== 1225 | dependencies: 1226 | attr-accept "^2.2.1" 1227 | file-selector "^0.2.2" 1228 | prop-types "^15.7.2" 1229 | 1230 | react-is@^16.13.1, react-is@^16.7.0: 1231 | version "16.13.1" 1232 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1233 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1234 | 1235 | react-merge-refs@^1.1.0: 1236 | version "1.1.0" 1237 | resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06" 1238 | integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ== 1239 | 1240 | react-refresh@^0.10.0: 1241 | version "0.10.0" 1242 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.10.0.tgz#2f536c9660c0b9b1d500684d9e52a65e7404f7e3" 1243 | integrity sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== 1244 | 1245 | react@^17.0.2: 1246 | version "17.0.2" 1247 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 1248 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 1249 | dependencies: 1250 | loose-envify "^1.1.0" 1251 | object-assign "^4.1.1" 1252 | 1253 | regenerator-runtime@^0.13.4: 1254 | version "0.13.9" 1255 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 1256 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 1257 | 1258 | regexp-to-ast@0.5.0: 1259 | version "0.5.0" 1260 | resolved "https://registry.yarnpkg.com/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz#56c73856bee5e1fef7f73a00f1473452ab712a24" 1261 | integrity sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw== 1262 | 1263 | require-from-string@^2.0.2: 1264 | version "2.0.2" 1265 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1266 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1267 | 1268 | resolve@^1.20.0: 1269 | version "1.22.0" 1270 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 1271 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 1272 | dependencies: 1273 | is-core-module "^2.8.1" 1274 | path-parse "^1.0.7" 1275 | supports-preserve-symlinks-flag "^1.0.0" 1276 | 1277 | rollup@^2.59.0: 1278 | version "2.66.0" 1279 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.66.0.tgz#ee529ea15a20485d579039637fec3050bad03bbb" 1280 | integrity sha512-L6mKOkdyP8HK5kKJXaiWG7KZDumPJjuo1P+cfyHOJPNNTK3Moe7zCH5+fy7v8pVmHXtlxorzaBjvkBMB23s98g== 1281 | optionalDependencies: 1282 | fsevents "~2.3.2" 1283 | 1284 | safe-buffer@~5.1.1: 1285 | version "5.1.2" 1286 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1287 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1288 | 1289 | scheduler@^0.20.2: 1290 | version "0.20.2" 1291 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 1292 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 1293 | dependencies: 1294 | loose-envify "^1.1.0" 1295 | object-assign "^4.1.1" 1296 | 1297 | semver@^6.3.0: 1298 | version "6.3.0" 1299 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1300 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1301 | 1302 | set-value@^2.0.0: 1303 | version "2.0.1" 1304 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" 1305 | integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== 1306 | dependencies: 1307 | extend-shallow "^2.0.1" 1308 | is-extendable "^0.1.1" 1309 | is-plain-object "^2.0.3" 1310 | split-string "^3.0.1" 1311 | 1312 | shallowequal@^1.1.0: 1313 | version "1.1.0" 1314 | resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" 1315 | integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== 1316 | 1317 | source-map-js@^1.0.1: 1318 | version "1.0.2" 1319 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1320 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1321 | 1322 | source-map@^0.5.0: 1323 | version "0.5.7" 1324 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1325 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1326 | 1327 | split-string@^3.0.1: 1328 | version "3.1.0" 1329 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 1330 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 1331 | dependencies: 1332 | extend-shallow "^3.0.0" 1333 | 1334 | stats.js@^0.17.0: 1335 | version "0.17.0" 1336 | resolved "https://registry.yarnpkg.com/stats.js/-/stats.js-0.17.0.tgz#b1c3dc46d94498b578b7fd3985b81ace7131cc7d" 1337 | integrity sha1-scPcRtlEmLV4t/05hbgaznExzH0= 1338 | 1339 | string.prototype.codepointat@^0.2.1: 1340 | version "0.2.1" 1341 | resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc" 1342 | integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg== 1343 | 1344 | style-value-types@5.0.0: 1345 | version "5.0.0" 1346 | resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad" 1347 | integrity sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA== 1348 | dependencies: 1349 | hey-listen "^1.0.8" 1350 | tslib "^2.1.0" 1351 | 1352 | styled-components@^5.3.0: 1353 | version "5.3.3" 1354 | resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743" 1355 | integrity sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw== 1356 | dependencies: 1357 | "@babel/helper-module-imports" "^7.0.0" 1358 | "@babel/traverse" "^7.4.5" 1359 | "@emotion/is-prop-valid" "^0.8.8" 1360 | "@emotion/stylis" "^0.8.4" 1361 | "@emotion/unitless" "^0.7.4" 1362 | babel-plugin-styled-components ">= 1.12.0" 1363 | css-to-react-native "^3.0.0" 1364 | hoist-non-react-statics "^3.0.0" 1365 | shallowequal "^1.1.0" 1366 | supports-color "^5.5.0" 1367 | 1368 | supports-color@^5.3.0, supports-color@^5.5.0: 1369 | version "5.5.0" 1370 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1371 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1372 | dependencies: 1373 | has-flag "^3.0.0" 1374 | 1375 | supports-preserve-symlinks-flag@^1.0.0: 1376 | version "1.0.0" 1377 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1378 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1379 | 1380 | three-mesh-bvh@^0.5.2: 1381 | version "0.5.4" 1382 | resolved "https://registry.yarnpkg.com/three-mesh-bvh/-/three-mesh-bvh-0.5.4.tgz#f4c8d751f420c60c35f880393bb00553ce1b298c" 1383 | integrity sha512-Hq3zpjqBxx2sp/K2Fw7cZ1yEoIVbMc4hOv3VRtmCjHapDKkZpDh8w3OcktbCwn+vBNPt9Ii8D0nDTeqt+73Dwg== 1384 | 1385 | three-stdlib@^2.6.1: 1386 | version "2.7.2" 1387 | resolved "https://registry.yarnpkg.com/three-stdlib/-/three-stdlib-2.7.2.tgz#801a530e93f82dfdd8e2b0856cd4ef5fd73e9247" 1388 | integrity sha512-6jtdJVZOcA+6xE+/YnuOZ8eCuhQhDi4eZ6XKFGYiUDEVTrAFTehScqhWxdchaPGNEEAqSCuXGwSd14m397xr7w== 1389 | dependencies: 1390 | "@babel/runtime" "^7.16.7" 1391 | "@webgpu/glslang" "^0.0.15" 1392 | "@webxr-input-profiles/motion-controllers" "^1.0.0" 1393 | chevrotain "^9.0.2" 1394 | draco3d "^1.4.1" 1395 | fflate "^0.6.9" 1396 | ktx-parse "^0.2.1" 1397 | mmd-parser "^1.0.4" 1398 | opentype.js "^1.3.3" 1399 | potpack "^1.0.1" 1400 | zstddec "^0.0.2" 1401 | 1402 | tiny-inflate@^1.0.3: 1403 | version "1.0.3" 1404 | resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" 1405 | integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== 1406 | 1407 | to-fast-properties@^2.0.0: 1408 | version "2.0.0" 1409 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1410 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1411 | 1412 | troika-three-text@^0.44.0: 1413 | version "0.44.0" 1414 | resolved "https://registry.yarnpkg.com/troika-three-text/-/troika-three-text-0.44.0.tgz#7c1a785c1aea9acc7631651acac97f2dbed2f26f" 1415 | integrity sha512-YwqXczjXQ4yq2a2ufO9icOIjeJutE/ODS8PHmmt/WAzVFqoiqeemclp/Ewiqm0+sdI1KnWRm6lj8df/zmhU3Og== 1416 | dependencies: 1417 | bidi-js "^1.0.2" 1418 | troika-three-utils "^0.44.0" 1419 | troika-worker-utils "^0.44.0" 1420 | 1421 | troika-three-utils@^0.44.0: 1422 | version "0.44.0" 1423 | resolved "https://registry.yarnpkg.com/troika-three-utils/-/troika-three-utils-0.44.0.tgz#c19bcbedb08bff96b8a38cf8b4a60da3b12bb44b" 1424 | integrity sha512-gaEpqrlWnkrVU5UgUx+YZTC8NrhsA2Tt6zEIbn3WNuom7pLtrgjuHpAM72gif7DoYdOWEyFco3Zb6rpJh9Fodg== 1425 | 1426 | troika-worker-utils@^0.44.0: 1427 | version "0.44.0" 1428 | resolved "https://registry.yarnpkg.com/troika-worker-utils/-/troika-worker-utils-0.44.0.tgz#a236dc004b7a3c187ae8f14a6b497e54661e12c8" 1429 | integrity sha512-/ETcH1rUoO9hVBL6Ifea2WOoGPw90ncrk8b8SJKTLtzcQvEWRIZ4eUxlVCtU93fLechCV+DWPs1y8+Bjh1WaJg== 1430 | 1431 | tslib@^2.0.3, tslib@^2.1.0: 1432 | version "2.3.1" 1433 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 1434 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 1435 | 1436 | typescript@^4.3.5: 1437 | version "4.5.5" 1438 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" 1439 | integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== 1440 | 1441 | use-asset@^1.0.4: 1442 | version "1.0.4" 1443 | resolved "https://registry.yarnpkg.com/use-asset/-/use-asset-1.0.4.tgz#506caafc29f602890593799e58b577b70293a6e2" 1444 | integrity sha512-7/hqDrWa0iMnCoET9W1T07EmD4Eg/Wmoj/X8TGBc++ECRK4m5yTsjP4O6s0yagbxfqIOuUkIxe2/sA+VR2GxZA== 1445 | dependencies: 1446 | fast-deep-equal "^3.1.3" 1447 | 1448 | utility-types@^3.10.0: 1449 | version "3.10.0" 1450 | resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" 1451 | integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== 1452 | 1453 | v8n@^1.3.3: 1454 | version "1.3.3" 1455 | resolved "https://registry.yarnpkg.com/v8n/-/v8n-1.3.3.tgz#4e03782173f1ac6108370859319050470d72a1c9" 1456 | integrity sha512-5w0/blXdz5idt+TJj72Vs69HcRYDARRWFami3bj7TLx8qvOVpyL3D3wdnXVrPLWvSApfVe2vBV54V16QYVlJnA== 1457 | 1458 | vite@^2.4.3: 1459 | version "2.7.13" 1460 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.7.13.tgz#99b56e27dfb1e4399e407cf94648f5c7fb9d77f5" 1461 | integrity sha512-Mq8et7f3aK0SgSxjDNfOAimZGW9XryfHRa/uV0jseQSilg+KhYDSoNb9h1rknOy6SuMkvNDLKCYAYYUMCE+IgQ== 1462 | dependencies: 1463 | esbuild "^0.13.12" 1464 | postcss "^8.4.5" 1465 | resolve "^1.20.0" 1466 | rollup "^2.59.0" 1467 | optionalDependencies: 1468 | fsevents "~2.3.2" 1469 | 1470 | webgl-constants@^1.1.1: 1471 | version "1.1.1" 1472 | resolved "https://registry.yarnpkg.com/webgl-constants/-/webgl-constants-1.1.1.tgz#f9633ee87fea56647a60b9ce735cbdfb891c6855" 1473 | integrity sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg== 1474 | 1475 | zstddec@^0.0.2: 1476 | version "0.0.2" 1477 | resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.0.2.tgz#57e2f28dd1ff56b750e07d158a43f0611ad9eeb4" 1478 | integrity sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA== 1479 | 1480 | zustand@^3.5.13, zustand@^3.6.7: 1481 | version "3.6.9" 1482 | resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.6.9.tgz#f61a756ddea9f95c7ee7cfd3af2f88c10078afbc" 1483 | integrity sha512-OvDNu/jEWpRnEC7k8xh8GKjqYog7td6FZrLMuHs/IeI8WhrCwV+FngVuwMIFhp5kysZXr6emaeReMqjLGaldAQ== 1484 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-three-scissor", 3 | "description": "✂ Multiple scenes, one canvas! WebGL Scissoring implementation for React Three Fiber.", 4 | "version": "0.0.1", 5 | "main": "dist/index.cjs", 6 | "module": "dist/index.js", 7 | "types": "dist/index.d.ts", 8 | "sideEffects": false, 9 | "homepage": "https://github.com/pmndrs/react-three-scissor#readme", 10 | "scripts": { 11 | "build": "rollup -c", 12 | "postbuild": "tsc --emitDeclarationOnly", 13 | "prepublishOnly": "npm run build", 14 | "test": "echo no tests yet" 15 | }, 16 | "husky": { 17 | "hooks": { 18 | "pre-commit": "lint-staged" 19 | } 20 | }, 21 | "lint-staged": { 22 | "*.{js,jsx,ts,tsx}": [ 23 | "eslint --fix" 24 | ] 25 | }, 26 | "repository": { 27 | "type": "git", 28 | "url": "git+https://github.com/pmndrs/react-three-scissor.git" 29 | }, 30 | "keywords": [ 31 | "react", 32 | "scissor", 33 | "webgl", 34 | "three" 35 | ], 36 | "author": "Faraz Shaikh ", 37 | "license": "MIT", 38 | "bugs": { 39 | "url": "https://github.com/pmndrs/react-three-scissor/issues" 40 | }, 41 | "devDependencies": { 42 | "@babel/core": "7.16.0", 43 | "@babel/plugin-proposal-class-properties": "^7.16.0", 44 | "@babel/plugin-transform-modules-commonjs": "7.16.0", 45 | "@babel/plugin-transform-parameters": "7.16.0", 46 | "@babel/plugin-transform-runtime": "7.16.0", 47 | "@babel/plugin-transform-template-literals": "7.16.0", 48 | "@babel/preset-env": "7.16.0", 49 | "@babel/preset-react": "7.16.0", 50 | "@babel/preset-typescript": "^7.16.0", 51 | "@react-three/fiber": "^7.0.25", 52 | "@rollup/plugin-babel": "^5.3.0", 53 | "@rollup/plugin-node-resolve": "^13.0.6", 54 | "@types/jest": "^27.0.2", 55 | "@types/node": "^16.11.6", 56 | "@types/react": "^17.0.33", 57 | "@types/react-dom": "^17.0.10", 58 | "@types/react-test-renderer": "^17.0.1", 59 | "@types/three": "^0.136.1", 60 | "@typescript-eslint/eslint-plugin": "^5.3.0", 61 | "@typescript-eslint/parser": "^5.3.0", 62 | "eslint": "^8.1.0", 63 | "eslint-config-prettier": "^8.3.0", 64 | "eslint-import-resolver-alias": "^1.1.2", 65 | "eslint-plugin-import": "^2.25.2", 66 | "eslint-plugin-jest": "^25.2.2", 67 | "eslint-plugin-prettier": "^4.0.0", 68 | "eslint-plugin-react": "^7.26.1", 69 | "eslint-plugin-react-hooks": "^4.2.0", 70 | "husky": "^7.0.4", 71 | "lint-staged": "^11.2.6", 72 | "prettier": "^2.4.1", 73 | "react": "^17.0.1", 74 | "rollup": "^2.59.0", 75 | "rollup-plugin-size-snapshot": "^0.12.0", 76 | "rollup-plugin-terser": "^7.0.2", 77 | "three": "^0.136.0", 78 | "tunnel-rat": "^0.0.2", 79 | "typescript": "^4.4.4", 80 | "zustand": "^3.6.9" 81 | }, 82 | "dependencies": {} 83 | } 84 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import path from 'path' 2 | import babel from '@rollup/plugin-babel' 3 | import resolve from '@rollup/plugin-node-resolve' 4 | 5 | const root = process.platform === 'win32' ? path.resolve('/') : '/' 6 | const external = (id) => !id.startsWith('.') && !id.startsWith(root) 7 | const extensions = ['.js', '.jsx', '.ts', '.tsx', '.json'] 8 | 9 | const getBabelOptions = ({ useESModules }) => ({ 10 | babelrc: false, 11 | extensions, 12 | exclude: '**/node_modules/**', 13 | babelHelpers: 'runtime', 14 | presets: [ 15 | [ 16 | '@babel/preset-env', 17 | { 18 | include: [ 19 | '@babel/plugin-proposal-optional-chaining', 20 | '@babel/plugin-proposal-nullish-coalescing-operator', 21 | '@babel/plugin-proposal-numeric-separator', 22 | '@babel/plugin-proposal-logical-assignment-operators', 23 | ], 24 | bugfixes: true, 25 | loose: true, 26 | modules: false, 27 | targets: '> 1%, not dead, not ie 11, not op_mini all', 28 | }, 29 | ], 30 | '@babel/preset-react', 31 | '@babel/preset-typescript', 32 | ], 33 | plugins: [['@babel/transform-runtime', { regenerator: false, useESModules }]], 34 | }) 35 | 36 | export default [ 37 | { 38 | input: `./src/index.ts`, 39 | output: { file: `dist/index.js`, format: 'esm' }, 40 | external, 41 | plugins: [babel(getBabelOptions({ useESModules: true })), resolve({ extensions })], 42 | }, 43 | { 44 | input: `./src/index.ts`, 45 | output: { file: `dist/index.cjs.js`, format: 'cjs' }, 46 | external, 47 | plugins: [babel(getBabelOptions({ useESModules: false })), resolve({ extensions })], 48 | }, 49 | ] 50 | -------------------------------------------------------------------------------- /src/Scissor.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from 'react' 2 | import { useFrame, useThree } from '@react-three/fiber' 3 | import { useLayoutEffect } from 'react' 4 | import ScissorTunnel from './ScissorTunnel' 5 | import useScissorEvents from './useScissorEvents' 6 | import { Object3D } from 'three' 7 | 8 | export default function Scissor() { 9 | const gl = useThree((s) => s.gl) 10 | 11 | useScissorEvents() 12 | useFrame((state) => { 13 | const { gl, camera } = state 14 | 15 | gl.setScissorTest(false) 16 | gl.clear(true, true) 17 | gl.setScissorTest(true) 18 | 19 | const children = state.scene.children 20 | children.forEach((child: Object3D) => { 21 | if (child.userData.__Scissor) { 22 | // console.log(child.userData.__Scissor); 23 | const element = child.userData.__Scissor as HTMLDivElement 24 | const rect = element.getBoundingClientRect() 25 | const { left, right, top, bottom, width, height } = rect 26 | 27 | const isOffscreen = 28 | bottom < 0 || top > gl.domElement.clientHeight || right < 0 || left > gl.domElement.clientWidth 29 | 30 | if (!isOffscreen) { 31 | const positiveYUpBottom = gl.domElement.clientHeight - bottom 32 | gl.setScissor(left, positiveYUpBottom, width, height) 33 | gl.setViewport(left, positiveYUpBottom, width, height) 34 | 35 | // @ts-ignore 36 | camera.aspect = width / height 37 | camera.updateProjectionMatrix() 38 | 39 | gl.render(child, camera) 40 | } 41 | } 42 | }) 43 | }, 1) 44 | 45 | useLayoutEffect(() => { 46 | if (gl.domElement.parentElement) { 47 | gl.domElement.parentElement.style.position = 'fixed' 48 | gl.domElement.parentElement.style.top = '0' 49 | gl.domElement.parentElement.style.left = '0' 50 | gl.domElement.parentElement.style.width = '100%' 51 | gl.domElement.parentElement.style.height = '100%' 52 | } 53 | }, [gl]) 54 | 55 | return 56 | } 57 | -------------------------------------------------------------------------------- /src/ScissorTunnel.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactElement, ReactNode, useLayoutEffect } from 'react' 2 | import { Scene } from 'three' 3 | import create, { SetState } from 'zustand' 4 | 5 | type Props = { children: React.ReactNode } 6 | 7 | interface iScissorTunnel { 8 | scenes: ReactNode[] 9 | addScene: (scene: ReactNode) => any 10 | } 11 | 12 | function tunnel() { 13 | const useStore = create((set) => ({ 14 | scenes: [], 15 | addScene: (scene) => set((s) => ({ scenes: [...s.scenes, scene] })), 16 | })) 17 | 18 | return { 19 | Store: useStore, 20 | In: ({ children }: Props) => { 21 | const addScene = useStore((state) => state.addScene) 22 | useLayoutEffect(() => addScene(children), []) 23 | return null 24 | }, 25 | Out: () => { 26 | const scenes = useStore((state) => state.scenes) 27 | return scenes as unknown as ReactElement 28 | }, 29 | } 30 | } 31 | 32 | export default tunnel() 33 | -------------------------------------------------------------------------------- /src/ScissorWindow.tsx: -------------------------------------------------------------------------------- 1 | import React, { useLayoutEffect, useRef, useState } from 'react' 2 | import ScissorTunnel from './ScissorTunnel' 3 | 4 | export default function ScissorWindow({ children, ...rest }: React.PropsWithChildren>) { 5 | const [win, setWindow] = useState() 6 | const ref = useRef(null) 7 | 8 | useLayoutEffect(() => void (ref.current && setWindow(ref.current)), []) 9 | 10 | return ( 11 | <> 12 |
13 | {win && ( 14 | 15 | {children} 16 | 17 | )} 18 | 19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import Scissor from './Scissor' 2 | import ScissorWindow from './ScissorWindow' 3 | 4 | export { Scissor, ScissorWindow } 5 | -------------------------------------------------------------------------------- /src/useScissorEvents.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from 'react' 2 | import { useThree } from '@react-three/fiber' 3 | import { DomEvent } from '@react-three/fiber/dist/declarations/src/core/events' 4 | import { Color, Object3D, Scene, Texture } from 'three' 5 | import ScissorTunnel from './ScissorTunnel' 6 | 7 | export default function useScissorEvents() { 8 | const events = useThree((state) => state.events) 9 | const raycaster = useThree((state) => state.raycaster) 10 | const scene = useThree((state) => state.scene) 11 | const gl = useThree((state) => state.gl) 12 | const size = useThree((state) => state.size) 13 | 14 | const scenes = ScissorTunnel.Store((s) => s.scenes) 15 | 16 | useEffect(() => { 17 | scene.children.forEach((child: Object3D) => { 18 | if (child.userData.__Scissor) { 19 | ;(child as Scene).environment = scene.environment as Texture 20 | ;(child as Scene).background = scene.background as Texture 21 | } 22 | }) 23 | 24 | if (events.handlers) { 25 | for (const [key, handler] of Object.entries(events.handlers)) { 26 | const prevHandler = handler 27 | 28 | // @ts-ignore 29 | events.handlers![key] = (e: PointerEvent, state) => { 30 | scene.children.forEach((child: Object3D) => { 31 | if (child.userData.__Scissor) { 32 | const element = child.userData.__Scissor 33 | const rect = element.getBoundingClientRect() 34 | const { left, right, top, bottom, width, height } = rect 35 | 36 | if ( 37 | e.clientX >= left && // 38 | e.clientX <= right && 39 | e.clientY >= top && 40 | e.clientY <= bottom 41 | ) { 42 | raycaster.filter = (e) => { 43 | return e.filter((intersection) => child.getObjectById(intersection.object.id)) 44 | } 45 | 46 | const prevSize = { ...size } 47 | raycaster.computeOffsets = (event: DomEvent, state) => { 48 | state.size.height = height 49 | state.size.width = width 50 | 51 | return { 52 | offsetX: event.offsetX - left, // 53 | offsetY: event.offsetY - top, 54 | } 55 | } 56 | 57 | size.height = prevSize.height 58 | size.width = prevSize.width 59 | 60 | prevHandler(e) 61 | } 62 | } 63 | }) 64 | } 65 | } 66 | } 67 | }, [scenes, scene, events, gl, raycaster]) 68 | } 69 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "esnext", 4 | "target": "es2018", 5 | "allowSyntheticDefaultImports": true, 6 | "jsx": "react", 7 | "strict": true, 8 | "preserveSymlinks": true, 9 | "moduleResolution": "Node", 10 | "esModuleInterop": true, 11 | "declaration": true, 12 | "declarationDir": "dist", 13 | "skipLibCheck": true, 14 | "removeComments": false, 15 | "baseUrl": "." 16 | }, 17 | "include": ["src"] 18 | } 19 | --------------------------------------------------------------------------------