├── .eslintrc.cjs ├── .gitignore ├── README.md ├── index.html ├── package.json ├── pnpm-lock.yaml ├── src ├── App.jsx ├── Blob │ ├── Blob.jsx │ ├── fragment.glsl │ └── vertex.glsl ├── index.css └── main.jsx └── vite.config.js /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { browser: true, es2020: true }, 3 | extends: [ 4 | 'eslint:recommended', 5 | 'plugin:react/recommended', 6 | 'plugin:react/jsx-runtime', 7 | 'plugin:react-hooks/recommended', 8 | ], 9 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, 10 | settings: { react: { version: '18.2' } }, 11 | plugins: ['react-refresh'], 12 | rules: { 13 | 'react-refresh/only-export-components': 'warn', 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sdf-morph 2 | 3 | Morphing 3D shapes by representing them as signed distance functions... -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SDF Morph 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sdf-morph", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@react-three/drei": "^9.77.0", 14 | "@react-three/fiber": "^8.13.3", 15 | "@types/three": "^0.152.1", 16 | "leva": "^0.9.35", 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "three": "^0.153.0" 20 | }, 21 | "devDependencies": { 22 | "@types/react": "^18.0.37", 23 | "@types/react-dom": "^18.0.11", 24 | "@vitejs/plugin-react": "^4.0.0", 25 | "eslint": "^8.38.0", 26 | "eslint-plugin-react": "^7.32.2", 27 | "eslint-plugin-react-hooks": "^4.6.0", 28 | "eslint-plugin-react-refresh": "^0.3.4", 29 | "r3f-perf": "^7.1.2", 30 | "vite": "^4.3.9", 31 | "vite-plugin-glsl": "^1.1.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | dependencies: 4 | '@react-three/drei': 5 | specifier: ^9.77.0 6 | version: 9.77.0(@react-three/fiber@8.13.3)(@types/three@0.152.1)(react-dom@18.2.0)(react@18.2.0)(three@0.153.0) 7 | '@react-three/fiber': 8 | specifier: ^8.13.3 9 | version: 8.13.3(react-dom@18.2.0)(react@18.2.0)(three@0.153.0) 10 | '@types/three': 11 | specifier: ^0.152.1 12 | version: 0.152.1 13 | leva: 14 | specifier: ^0.9.35 15 | version: 0.9.35(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 16 | react: 17 | specifier: ^18.2.0 18 | version: 18.2.0 19 | react-dom: 20 | specifier: ^18.2.0 21 | version: 18.2.0(react@18.2.0) 22 | three: 23 | specifier: ^0.153.0 24 | version: 0.153.0 25 | 26 | devDependencies: 27 | '@types/react': 28 | specifier: ^18.0.37 29 | version: 18.2.13 30 | '@types/react-dom': 31 | specifier: ^18.0.11 32 | version: 18.2.6 33 | '@vitejs/plugin-react': 34 | specifier: ^4.0.0 35 | version: 4.0.1(vite@4.3.9) 36 | eslint: 37 | specifier: ^8.38.0 38 | version: 8.43.0 39 | eslint-plugin-react: 40 | specifier: ^7.32.2 41 | version: 7.32.2(eslint@8.43.0) 42 | eslint-plugin-react-hooks: 43 | specifier: ^4.6.0 44 | version: 4.6.0(eslint@8.43.0) 45 | eslint-plugin-react-refresh: 46 | specifier: ^0.3.4 47 | version: 0.3.5(eslint@8.43.0) 48 | r3f-perf: 49 | specifier: ^7.1.2 50 | version: 7.1.2(@react-three/fiber@8.13.3)(@types/three@0.152.1)(react-dom@18.2.0)(react@18.2.0)(three@0.153.0) 51 | vite: 52 | specifier: ^4.3.9 53 | version: 4.3.9 54 | vite-plugin-glsl: 55 | specifier: ^1.1.2 56 | version: 1.1.2(vite@4.3.9) 57 | 58 | packages: 59 | 60 | /@ampproject/remapping@2.2.1: 61 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 62 | engines: {node: '>=6.0.0'} 63 | dependencies: 64 | '@jridgewell/gen-mapping': 0.3.3 65 | '@jridgewell/trace-mapping': 0.3.18 66 | dev: true 67 | 68 | /@babel/code-frame@7.22.5: 69 | resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} 70 | engines: {node: '>=6.9.0'} 71 | dependencies: 72 | '@babel/highlight': 7.22.5 73 | dev: true 74 | 75 | /@babel/compat-data@7.22.5: 76 | resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} 77 | engines: {node: '>=6.9.0'} 78 | dev: true 79 | 80 | /@babel/core@7.22.5: 81 | resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} 82 | engines: {node: '>=6.9.0'} 83 | dependencies: 84 | '@ampproject/remapping': 2.2.1 85 | '@babel/code-frame': 7.22.5 86 | '@babel/generator': 7.22.5 87 | '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) 88 | '@babel/helper-module-transforms': 7.22.5 89 | '@babel/helpers': 7.22.5 90 | '@babel/parser': 7.22.5 91 | '@babel/template': 7.22.5 92 | '@babel/traverse': 7.22.5 93 | '@babel/types': 7.22.5 94 | convert-source-map: 1.9.0 95 | debug: 4.3.4 96 | gensync: 1.0.0-beta.2 97 | json5: 2.2.3 98 | semver: 6.3.0 99 | transitivePeerDependencies: 100 | - supports-color 101 | dev: true 102 | 103 | /@babel/generator@7.22.5: 104 | resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} 105 | engines: {node: '>=6.9.0'} 106 | dependencies: 107 | '@babel/types': 7.22.5 108 | '@jridgewell/gen-mapping': 0.3.3 109 | '@jridgewell/trace-mapping': 0.3.18 110 | jsesc: 2.5.2 111 | dev: true 112 | 113 | /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): 114 | resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} 115 | engines: {node: '>=6.9.0'} 116 | peerDependencies: 117 | '@babel/core': ^7.0.0 118 | dependencies: 119 | '@babel/compat-data': 7.22.5 120 | '@babel/core': 7.22.5 121 | '@babel/helper-validator-option': 7.22.5 122 | browserslist: 4.21.9 123 | lru-cache: 5.1.1 124 | semver: 6.3.0 125 | dev: true 126 | 127 | /@babel/helper-environment-visitor@7.22.5: 128 | resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} 129 | engines: {node: '>=6.9.0'} 130 | dev: true 131 | 132 | /@babel/helper-function-name@7.22.5: 133 | resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} 134 | engines: {node: '>=6.9.0'} 135 | dependencies: 136 | '@babel/template': 7.22.5 137 | '@babel/types': 7.22.5 138 | dev: true 139 | 140 | /@babel/helper-hoist-variables@7.22.5: 141 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 142 | engines: {node: '>=6.9.0'} 143 | dependencies: 144 | '@babel/types': 7.22.5 145 | dev: true 146 | 147 | /@babel/helper-module-imports@7.22.5: 148 | resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} 149 | engines: {node: '>=6.9.0'} 150 | dependencies: 151 | '@babel/types': 7.22.5 152 | dev: true 153 | 154 | /@babel/helper-module-transforms@7.22.5: 155 | resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} 156 | engines: {node: '>=6.9.0'} 157 | dependencies: 158 | '@babel/helper-environment-visitor': 7.22.5 159 | '@babel/helper-module-imports': 7.22.5 160 | '@babel/helper-simple-access': 7.22.5 161 | '@babel/helper-split-export-declaration': 7.22.5 162 | '@babel/helper-validator-identifier': 7.22.5 163 | '@babel/template': 7.22.5 164 | '@babel/traverse': 7.22.5 165 | '@babel/types': 7.22.5 166 | transitivePeerDependencies: 167 | - supports-color 168 | dev: true 169 | 170 | /@babel/helper-plugin-utils@7.22.5: 171 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} 172 | engines: {node: '>=6.9.0'} 173 | dev: true 174 | 175 | /@babel/helper-simple-access@7.22.5: 176 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} 177 | engines: {node: '>=6.9.0'} 178 | dependencies: 179 | '@babel/types': 7.22.5 180 | dev: true 181 | 182 | /@babel/helper-split-export-declaration@7.22.5: 183 | resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} 184 | engines: {node: '>=6.9.0'} 185 | dependencies: 186 | '@babel/types': 7.22.5 187 | dev: true 188 | 189 | /@babel/helper-string-parser@7.22.5: 190 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 191 | engines: {node: '>=6.9.0'} 192 | dev: true 193 | 194 | /@babel/helper-validator-identifier@7.22.5: 195 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} 196 | engines: {node: '>=6.9.0'} 197 | dev: true 198 | 199 | /@babel/helper-validator-option@7.22.5: 200 | resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} 201 | engines: {node: '>=6.9.0'} 202 | dev: true 203 | 204 | /@babel/helpers@7.22.5: 205 | resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} 206 | engines: {node: '>=6.9.0'} 207 | dependencies: 208 | '@babel/template': 7.22.5 209 | '@babel/traverse': 7.22.5 210 | '@babel/types': 7.22.5 211 | transitivePeerDependencies: 212 | - supports-color 213 | dev: true 214 | 215 | /@babel/highlight@7.22.5: 216 | resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} 217 | engines: {node: '>=6.9.0'} 218 | dependencies: 219 | '@babel/helper-validator-identifier': 7.22.5 220 | chalk: 2.4.2 221 | js-tokens: 4.0.0 222 | dev: true 223 | 224 | /@babel/parser@7.22.5: 225 | resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} 226 | engines: {node: '>=6.0.0'} 227 | hasBin: true 228 | dependencies: 229 | '@babel/types': 7.22.5 230 | dev: true 231 | 232 | /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.5): 233 | resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} 234 | engines: {node: '>=6.9.0'} 235 | peerDependencies: 236 | '@babel/core': ^7.0.0-0 237 | dependencies: 238 | '@babel/core': 7.22.5 239 | '@babel/helper-plugin-utils': 7.22.5 240 | dev: true 241 | 242 | /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.5): 243 | resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} 244 | engines: {node: '>=6.9.0'} 245 | peerDependencies: 246 | '@babel/core': ^7.0.0-0 247 | dependencies: 248 | '@babel/core': 7.22.5 249 | '@babel/helper-plugin-utils': 7.22.5 250 | dev: true 251 | 252 | /@babel/runtime@7.22.5: 253 | resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} 254 | engines: {node: '>=6.9.0'} 255 | dependencies: 256 | regenerator-runtime: 0.13.11 257 | 258 | /@babel/template@7.22.5: 259 | resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} 260 | engines: {node: '>=6.9.0'} 261 | dependencies: 262 | '@babel/code-frame': 7.22.5 263 | '@babel/parser': 7.22.5 264 | '@babel/types': 7.22.5 265 | dev: true 266 | 267 | /@babel/traverse@7.22.5: 268 | resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} 269 | engines: {node: '>=6.9.0'} 270 | dependencies: 271 | '@babel/code-frame': 7.22.5 272 | '@babel/generator': 7.22.5 273 | '@babel/helper-environment-visitor': 7.22.5 274 | '@babel/helper-function-name': 7.22.5 275 | '@babel/helper-hoist-variables': 7.22.5 276 | '@babel/helper-split-export-declaration': 7.22.5 277 | '@babel/parser': 7.22.5 278 | '@babel/types': 7.22.5 279 | debug: 4.3.4 280 | globals: 11.12.0 281 | transitivePeerDependencies: 282 | - supports-color 283 | dev: true 284 | 285 | /@babel/types@7.22.5: 286 | resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} 287 | engines: {node: '>=6.9.0'} 288 | dependencies: 289 | '@babel/helper-string-parser': 7.22.5 290 | '@babel/helper-validator-identifier': 7.22.5 291 | to-fast-properties: 2.0.0 292 | dev: true 293 | 294 | /@chevrotain/cst-dts-gen@10.5.0: 295 | resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==} 296 | dependencies: 297 | '@chevrotain/gast': 10.5.0 298 | '@chevrotain/types': 10.5.0 299 | lodash: 4.17.21 300 | 301 | /@chevrotain/gast@10.5.0: 302 | resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==} 303 | dependencies: 304 | '@chevrotain/types': 10.5.0 305 | lodash: 4.17.21 306 | 307 | /@chevrotain/types@10.5.0: 308 | resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==} 309 | 310 | /@chevrotain/utils@10.5.0: 311 | resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} 312 | 313 | /@esbuild/android-arm64@0.17.19: 314 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} 315 | engines: {node: '>=12'} 316 | cpu: [arm64] 317 | os: [android] 318 | requiresBuild: true 319 | dev: true 320 | optional: true 321 | 322 | /@esbuild/android-arm@0.17.19: 323 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} 324 | engines: {node: '>=12'} 325 | cpu: [arm] 326 | os: [android] 327 | requiresBuild: true 328 | dev: true 329 | optional: true 330 | 331 | /@esbuild/android-x64@0.17.19: 332 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} 333 | engines: {node: '>=12'} 334 | cpu: [x64] 335 | os: [android] 336 | requiresBuild: true 337 | dev: true 338 | optional: true 339 | 340 | /@esbuild/darwin-arm64@0.17.19: 341 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} 342 | engines: {node: '>=12'} 343 | cpu: [arm64] 344 | os: [darwin] 345 | requiresBuild: true 346 | dev: true 347 | optional: true 348 | 349 | /@esbuild/darwin-x64@0.17.19: 350 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} 351 | engines: {node: '>=12'} 352 | cpu: [x64] 353 | os: [darwin] 354 | requiresBuild: true 355 | dev: true 356 | optional: true 357 | 358 | /@esbuild/freebsd-arm64@0.17.19: 359 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} 360 | engines: {node: '>=12'} 361 | cpu: [arm64] 362 | os: [freebsd] 363 | requiresBuild: true 364 | dev: true 365 | optional: true 366 | 367 | /@esbuild/freebsd-x64@0.17.19: 368 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} 369 | engines: {node: '>=12'} 370 | cpu: [x64] 371 | os: [freebsd] 372 | requiresBuild: true 373 | dev: true 374 | optional: true 375 | 376 | /@esbuild/linux-arm64@0.17.19: 377 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} 378 | engines: {node: '>=12'} 379 | cpu: [arm64] 380 | os: [linux] 381 | requiresBuild: true 382 | dev: true 383 | optional: true 384 | 385 | /@esbuild/linux-arm@0.17.19: 386 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} 387 | engines: {node: '>=12'} 388 | cpu: [arm] 389 | os: [linux] 390 | requiresBuild: true 391 | dev: true 392 | optional: true 393 | 394 | /@esbuild/linux-ia32@0.17.19: 395 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} 396 | engines: {node: '>=12'} 397 | cpu: [ia32] 398 | os: [linux] 399 | requiresBuild: true 400 | dev: true 401 | optional: true 402 | 403 | /@esbuild/linux-loong64@0.17.19: 404 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} 405 | engines: {node: '>=12'} 406 | cpu: [loong64] 407 | os: [linux] 408 | requiresBuild: true 409 | dev: true 410 | optional: true 411 | 412 | /@esbuild/linux-mips64el@0.17.19: 413 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} 414 | engines: {node: '>=12'} 415 | cpu: [mips64el] 416 | os: [linux] 417 | requiresBuild: true 418 | dev: true 419 | optional: true 420 | 421 | /@esbuild/linux-ppc64@0.17.19: 422 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} 423 | engines: {node: '>=12'} 424 | cpu: [ppc64] 425 | os: [linux] 426 | requiresBuild: true 427 | dev: true 428 | optional: true 429 | 430 | /@esbuild/linux-riscv64@0.17.19: 431 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} 432 | engines: {node: '>=12'} 433 | cpu: [riscv64] 434 | os: [linux] 435 | requiresBuild: true 436 | dev: true 437 | optional: true 438 | 439 | /@esbuild/linux-s390x@0.17.19: 440 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} 441 | engines: {node: '>=12'} 442 | cpu: [s390x] 443 | os: [linux] 444 | requiresBuild: true 445 | dev: true 446 | optional: true 447 | 448 | /@esbuild/linux-x64@0.17.19: 449 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} 450 | engines: {node: '>=12'} 451 | cpu: [x64] 452 | os: [linux] 453 | requiresBuild: true 454 | dev: true 455 | optional: true 456 | 457 | /@esbuild/netbsd-x64@0.17.19: 458 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} 459 | engines: {node: '>=12'} 460 | cpu: [x64] 461 | os: [netbsd] 462 | requiresBuild: true 463 | dev: true 464 | optional: true 465 | 466 | /@esbuild/openbsd-x64@0.17.19: 467 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} 468 | engines: {node: '>=12'} 469 | cpu: [x64] 470 | os: [openbsd] 471 | requiresBuild: true 472 | dev: true 473 | optional: true 474 | 475 | /@esbuild/sunos-x64@0.17.19: 476 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} 477 | engines: {node: '>=12'} 478 | cpu: [x64] 479 | os: [sunos] 480 | requiresBuild: true 481 | dev: true 482 | optional: true 483 | 484 | /@esbuild/win32-arm64@0.17.19: 485 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} 486 | engines: {node: '>=12'} 487 | cpu: [arm64] 488 | os: [win32] 489 | requiresBuild: true 490 | dev: true 491 | optional: true 492 | 493 | /@esbuild/win32-ia32@0.17.19: 494 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} 495 | engines: {node: '>=12'} 496 | cpu: [ia32] 497 | os: [win32] 498 | requiresBuild: true 499 | dev: true 500 | optional: true 501 | 502 | /@esbuild/win32-x64@0.17.19: 503 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} 504 | engines: {node: '>=12'} 505 | cpu: [x64] 506 | os: [win32] 507 | requiresBuild: true 508 | dev: true 509 | optional: true 510 | 511 | /@eslint-community/eslint-utils@4.4.0(eslint@8.43.0): 512 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 513 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 514 | peerDependencies: 515 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 516 | dependencies: 517 | eslint: 8.43.0 518 | eslint-visitor-keys: 3.4.1 519 | dev: true 520 | 521 | /@eslint-community/regexpp@4.5.1: 522 | resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} 523 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 524 | dev: true 525 | 526 | /@eslint/eslintrc@2.0.3: 527 | resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} 528 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 529 | dependencies: 530 | ajv: 6.12.6 531 | debug: 4.3.4 532 | espree: 9.5.2 533 | globals: 13.20.0 534 | ignore: 5.2.4 535 | import-fresh: 3.3.0 536 | js-yaml: 4.1.0 537 | minimatch: 3.1.2 538 | strip-json-comments: 3.1.1 539 | transitivePeerDependencies: 540 | - supports-color 541 | dev: true 542 | 543 | /@eslint/js@8.43.0: 544 | resolution: {integrity: sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==} 545 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 546 | dev: true 547 | 548 | /@floating-ui/core@1.3.1: 549 | resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==} 550 | dev: false 551 | 552 | /@floating-ui/dom@1.4.2: 553 | resolution: {integrity: sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g==} 554 | dependencies: 555 | '@floating-ui/core': 1.3.1 556 | dev: false 557 | 558 | /@floating-ui/react-dom@2.0.1(react-dom@18.2.0)(react@18.2.0): 559 | resolution: {integrity: sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==} 560 | peerDependencies: 561 | react: '>=16.8.0' 562 | react-dom: '>=16.8.0' 563 | dependencies: 564 | '@floating-ui/dom': 1.4.2 565 | react: 18.2.0 566 | react-dom: 18.2.0(react@18.2.0) 567 | dev: false 568 | 569 | /@humanwhocodes/config-array@0.11.10: 570 | resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} 571 | engines: {node: '>=10.10.0'} 572 | dependencies: 573 | '@humanwhocodes/object-schema': 1.2.1 574 | debug: 4.3.4 575 | minimatch: 3.1.2 576 | transitivePeerDependencies: 577 | - supports-color 578 | dev: true 579 | 580 | /@humanwhocodes/module-importer@1.0.1: 581 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 582 | engines: {node: '>=12.22'} 583 | dev: true 584 | 585 | /@humanwhocodes/object-schema@1.2.1: 586 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 587 | dev: true 588 | 589 | /@jridgewell/gen-mapping@0.3.3: 590 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 591 | engines: {node: '>=6.0.0'} 592 | dependencies: 593 | '@jridgewell/set-array': 1.1.2 594 | '@jridgewell/sourcemap-codec': 1.4.15 595 | '@jridgewell/trace-mapping': 0.3.18 596 | dev: true 597 | 598 | /@jridgewell/resolve-uri@3.1.0: 599 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 600 | engines: {node: '>=6.0.0'} 601 | dev: true 602 | 603 | /@jridgewell/set-array@1.1.2: 604 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 605 | engines: {node: '>=6.0.0'} 606 | dev: true 607 | 608 | /@jridgewell/sourcemap-codec@1.4.14: 609 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 610 | dev: true 611 | 612 | /@jridgewell/sourcemap-codec@1.4.15: 613 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 614 | dev: true 615 | 616 | /@jridgewell/trace-mapping@0.3.18: 617 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 618 | dependencies: 619 | '@jridgewell/resolve-uri': 3.1.0 620 | '@jridgewell/sourcemap-codec': 1.4.14 621 | dev: true 622 | 623 | /@mediapipe/tasks-vision@0.10.2-rc2: 624 | resolution: {integrity: sha512-b9ar6TEUo8I07n/jXSuKDu5HgzkDah9pe4H8BYpcubhCEahlfDD5ixE+9SQyJM4HXHXdF9nN/wRQT7rEnLz7Gg==} 625 | 626 | /@nodelib/fs.scandir@2.1.5: 627 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 628 | engines: {node: '>= 8'} 629 | dependencies: 630 | '@nodelib/fs.stat': 2.0.5 631 | run-parallel: 1.2.0 632 | dev: true 633 | 634 | /@nodelib/fs.stat@2.0.5: 635 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 636 | engines: {node: '>= 8'} 637 | dev: true 638 | 639 | /@nodelib/fs.walk@1.2.8: 640 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 641 | engines: {node: '>= 8'} 642 | dependencies: 643 | '@nodelib/fs.scandir': 2.1.5 644 | fastq: 1.15.0 645 | dev: true 646 | 647 | /@radix-ui/primitive@1.0.1: 648 | resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} 649 | dependencies: 650 | '@babel/runtime': 7.22.5 651 | dev: false 652 | 653 | /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 654 | resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} 655 | peerDependencies: 656 | '@types/react': '*' 657 | '@types/react-dom': '*' 658 | react: ^16.8 || ^17.0 || ^18.0 659 | react-dom: ^16.8 || ^17.0 || ^18.0 660 | peerDependenciesMeta: 661 | '@types/react': 662 | optional: true 663 | '@types/react-dom': 664 | optional: true 665 | dependencies: 666 | '@babel/runtime': 7.22.5 667 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 668 | '@types/react': 18.2.13 669 | '@types/react-dom': 18.2.6 670 | react: 18.2.0 671 | react-dom: 18.2.0(react@18.2.0) 672 | dev: false 673 | 674 | /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.13)(react@18.2.0): 675 | resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} 676 | peerDependencies: 677 | '@types/react': '*' 678 | react: ^16.8 || ^17.0 || ^18.0 679 | peerDependenciesMeta: 680 | '@types/react': 681 | optional: true 682 | dependencies: 683 | '@babel/runtime': 7.22.5 684 | '@types/react': 18.2.13 685 | react: 18.2.0 686 | dev: false 687 | 688 | /@radix-ui/react-context@1.0.1(@types/react@18.2.13)(react@18.2.0): 689 | resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} 690 | peerDependencies: 691 | '@types/react': '*' 692 | react: ^16.8 || ^17.0 || ^18.0 693 | peerDependenciesMeta: 694 | '@types/react': 695 | optional: true 696 | dependencies: 697 | '@babel/runtime': 7.22.5 698 | '@types/react': 18.2.13 699 | react: 18.2.0 700 | dev: false 701 | 702 | /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 703 | resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} 704 | peerDependencies: 705 | '@types/react': '*' 706 | '@types/react-dom': '*' 707 | react: ^16.8 || ^17.0 || ^18.0 708 | react-dom: ^16.8 || ^17.0 || ^18.0 709 | peerDependenciesMeta: 710 | '@types/react': 711 | optional: true 712 | '@types/react-dom': 713 | optional: true 714 | dependencies: 715 | '@babel/runtime': 7.22.5 716 | '@radix-ui/primitive': 1.0.1 717 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.13)(react@18.2.0) 718 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 719 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.13)(react@18.2.0) 720 | '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.13)(react@18.2.0) 721 | '@types/react': 18.2.13 722 | '@types/react-dom': 18.2.6 723 | react: 18.2.0 724 | react-dom: 18.2.0(react@18.2.0) 725 | dev: false 726 | 727 | /@radix-ui/react-icons@1.3.0(react@18.2.0): 728 | resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} 729 | peerDependencies: 730 | react: ^16.x || ^17.x || ^18.x 731 | dependencies: 732 | react: 18.2.0 733 | dev: true 734 | 735 | /@radix-ui/react-id@1.0.1(@types/react@18.2.13)(react@18.2.0): 736 | resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} 737 | peerDependencies: 738 | '@types/react': '*' 739 | react: ^16.8 || ^17.0 || ^18.0 740 | peerDependenciesMeta: 741 | '@types/react': 742 | optional: true 743 | dependencies: 744 | '@babel/runtime': 7.22.5 745 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.13)(react@18.2.0) 746 | '@types/react': 18.2.13 747 | react: 18.2.0 748 | dev: false 749 | 750 | /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 751 | resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} 752 | peerDependencies: 753 | '@types/react': '*' 754 | '@types/react-dom': '*' 755 | react: ^16.8 || ^17.0 || ^18.0 756 | react-dom: ^16.8 || ^17.0 || ^18.0 757 | peerDependenciesMeta: 758 | '@types/react': 759 | optional: true 760 | '@types/react-dom': 761 | optional: true 762 | dependencies: 763 | '@babel/runtime': 7.22.5 764 | '@floating-ui/react-dom': 2.0.1(react-dom@18.2.0)(react@18.2.0) 765 | '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 766 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.13)(react@18.2.0) 767 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.13)(react@18.2.0) 768 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 769 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.13)(react@18.2.0) 770 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.13)(react@18.2.0) 771 | '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.13)(react@18.2.0) 772 | '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.13)(react@18.2.0) 773 | '@radix-ui/rect': 1.0.1 774 | '@types/react': 18.2.13 775 | '@types/react-dom': 18.2.6 776 | react: 18.2.0 777 | react-dom: 18.2.0(react@18.2.0) 778 | dev: false 779 | 780 | /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 781 | resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} 782 | peerDependencies: 783 | '@types/react': '*' 784 | '@types/react-dom': '*' 785 | react: ^16.8 || ^17.0 || ^18.0 786 | react-dom: ^16.8 || ^17.0 || ^18.0 787 | peerDependenciesMeta: 788 | '@types/react': 789 | optional: true 790 | '@types/react-dom': 791 | optional: true 792 | dependencies: 793 | '@babel/runtime': 7.22.5 794 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 795 | '@types/react': 18.2.13 796 | '@types/react-dom': 18.2.6 797 | react: 18.2.0 798 | react-dom: 18.2.0(react@18.2.0) 799 | dev: false 800 | 801 | /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 802 | resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} 803 | peerDependencies: 804 | '@types/react': '*' 805 | '@types/react-dom': '*' 806 | react: ^16.8 || ^17.0 || ^18.0 807 | react-dom: ^16.8 || ^17.0 || ^18.0 808 | peerDependenciesMeta: 809 | '@types/react': 810 | optional: true 811 | '@types/react-dom': 812 | optional: true 813 | dependencies: 814 | '@babel/runtime': 7.22.5 815 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.13)(react@18.2.0) 816 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.13)(react@18.2.0) 817 | '@types/react': 18.2.13 818 | '@types/react-dom': 18.2.6 819 | react: 18.2.0 820 | react-dom: 18.2.0(react@18.2.0) 821 | dev: false 822 | 823 | /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 824 | resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} 825 | peerDependencies: 826 | '@types/react': '*' 827 | '@types/react-dom': '*' 828 | react: ^16.8 || ^17.0 || ^18.0 829 | react-dom: ^16.8 || ^17.0 || ^18.0 830 | peerDependenciesMeta: 831 | '@types/react': 832 | optional: true 833 | '@types/react-dom': 834 | optional: true 835 | dependencies: 836 | '@babel/runtime': 7.22.5 837 | '@radix-ui/react-slot': 1.0.2(@types/react@18.2.13)(react@18.2.0) 838 | '@types/react': 18.2.13 839 | '@types/react-dom': 18.2.6 840 | react: 18.2.0 841 | react-dom: 18.2.0(react@18.2.0) 842 | dev: false 843 | 844 | /@radix-ui/react-slot@1.0.2(@types/react@18.2.13)(react@18.2.0): 845 | resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} 846 | peerDependencies: 847 | '@types/react': '*' 848 | react: ^16.8 || ^17.0 || ^18.0 849 | peerDependenciesMeta: 850 | '@types/react': 851 | optional: true 852 | dependencies: 853 | '@babel/runtime': 7.22.5 854 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.13)(react@18.2.0) 855 | '@types/react': 18.2.13 856 | react: 18.2.0 857 | dev: false 858 | 859 | /@radix-ui/react-tooltip@1.0.6(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 860 | resolution: {integrity: sha512-DmNFOiwEc2UDigsYj6clJENma58OelxD24O4IODoZ+3sQc3Zb+L8w1EP+y9laTuKCLAysPw4fD6/v0j4KNV8rg==} 861 | peerDependencies: 862 | '@types/react': '*' 863 | '@types/react-dom': '*' 864 | react: ^16.8 || ^17.0 || ^18.0 865 | react-dom: ^16.8 || ^17.0 || ^18.0 866 | peerDependenciesMeta: 867 | '@types/react': 868 | optional: true 869 | '@types/react-dom': 870 | optional: true 871 | dependencies: 872 | '@babel/runtime': 7.22.5 873 | '@radix-ui/primitive': 1.0.1 874 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.13)(react@18.2.0) 875 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.13)(react@18.2.0) 876 | '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 877 | '@radix-ui/react-id': 1.0.1(@types/react@18.2.13)(react@18.2.0) 878 | '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 879 | '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 880 | '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 881 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 882 | '@radix-ui/react-slot': 1.0.2(@types/react@18.2.13)(react@18.2.0) 883 | '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.13)(react@18.2.0) 884 | '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 885 | '@types/react': 18.2.13 886 | '@types/react-dom': 18.2.6 887 | react: 18.2.0 888 | react-dom: 18.2.0(react@18.2.0) 889 | dev: false 890 | 891 | /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.13)(react@18.2.0): 892 | resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} 893 | peerDependencies: 894 | '@types/react': '*' 895 | react: ^16.8 || ^17.0 || ^18.0 896 | peerDependenciesMeta: 897 | '@types/react': 898 | optional: true 899 | dependencies: 900 | '@babel/runtime': 7.22.5 901 | '@types/react': 18.2.13 902 | react: 18.2.0 903 | dev: false 904 | 905 | /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.13)(react@18.2.0): 906 | resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} 907 | peerDependencies: 908 | '@types/react': '*' 909 | react: ^16.8 || ^17.0 || ^18.0 910 | peerDependenciesMeta: 911 | '@types/react': 912 | optional: true 913 | dependencies: 914 | '@babel/runtime': 7.22.5 915 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.13)(react@18.2.0) 916 | '@types/react': 18.2.13 917 | react: 18.2.0 918 | dev: false 919 | 920 | /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.13)(react@18.2.0): 921 | resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} 922 | peerDependencies: 923 | '@types/react': '*' 924 | react: ^16.8 || ^17.0 || ^18.0 925 | peerDependenciesMeta: 926 | '@types/react': 927 | optional: true 928 | dependencies: 929 | '@babel/runtime': 7.22.5 930 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.13)(react@18.2.0) 931 | '@types/react': 18.2.13 932 | react: 18.2.0 933 | dev: false 934 | 935 | /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.13)(react@18.2.0): 936 | resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} 937 | peerDependencies: 938 | '@types/react': '*' 939 | react: ^16.8 || ^17.0 || ^18.0 940 | peerDependenciesMeta: 941 | '@types/react': 942 | optional: true 943 | dependencies: 944 | '@babel/runtime': 7.22.5 945 | '@types/react': 18.2.13 946 | react: 18.2.0 947 | dev: false 948 | 949 | /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.13)(react@18.2.0): 950 | resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} 951 | peerDependencies: 952 | '@types/react': '*' 953 | react: ^16.8 || ^17.0 || ^18.0 954 | peerDependenciesMeta: 955 | '@types/react': 956 | optional: true 957 | dependencies: 958 | '@babel/runtime': 7.22.5 959 | '@radix-ui/rect': 1.0.1 960 | '@types/react': 18.2.13 961 | react: 18.2.0 962 | dev: false 963 | 964 | /@radix-ui/react-use-size@1.0.1(@types/react@18.2.13)(react@18.2.0): 965 | resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} 966 | peerDependencies: 967 | '@types/react': '*' 968 | react: ^16.8 || ^17.0 || ^18.0 969 | peerDependenciesMeta: 970 | '@types/react': 971 | optional: true 972 | dependencies: 973 | '@babel/runtime': 7.22.5 974 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.13)(react@18.2.0) 975 | '@types/react': 18.2.13 976 | react: 18.2.0 977 | dev: false 978 | 979 | /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 980 | resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} 981 | peerDependencies: 982 | '@types/react': '*' 983 | '@types/react-dom': '*' 984 | react: ^16.8 || ^17.0 || ^18.0 985 | react-dom: ^16.8 || ^17.0 || ^18.0 986 | peerDependenciesMeta: 987 | '@types/react': 988 | optional: true 989 | '@types/react-dom': 990 | optional: true 991 | dependencies: 992 | '@babel/runtime': 7.22.5 993 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 994 | '@types/react': 18.2.13 995 | '@types/react-dom': 18.2.6 996 | react: 18.2.0 997 | react-dom: 18.2.0(react@18.2.0) 998 | dev: false 999 | 1000 | /@radix-ui/rect@1.0.1: 1001 | resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} 1002 | dependencies: 1003 | '@babel/runtime': 7.22.5 1004 | dev: false 1005 | 1006 | /@react-spring/animated@9.6.1(react@18.2.0): 1007 | resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==} 1008 | peerDependencies: 1009 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1010 | dependencies: 1011 | '@react-spring/shared': 9.6.1(react@18.2.0) 1012 | '@react-spring/types': 9.6.1 1013 | react: 18.2.0 1014 | 1015 | /@react-spring/core@9.6.1(react@18.2.0): 1016 | resolution: {integrity: sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==} 1017 | peerDependencies: 1018 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1019 | dependencies: 1020 | '@react-spring/animated': 9.6.1(react@18.2.0) 1021 | '@react-spring/rafz': 9.6.1 1022 | '@react-spring/shared': 9.6.1(react@18.2.0) 1023 | '@react-spring/types': 9.6.1 1024 | react: 18.2.0 1025 | 1026 | /@react-spring/rafz@9.6.1: 1027 | resolution: {integrity: sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==} 1028 | 1029 | /@react-spring/shared@9.6.1(react@18.2.0): 1030 | resolution: {integrity: sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==} 1031 | peerDependencies: 1032 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1033 | dependencies: 1034 | '@react-spring/rafz': 9.6.1 1035 | '@react-spring/types': 9.6.1 1036 | react: 18.2.0 1037 | 1038 | /@react-spring/three@9.6.1(@react-three/fiber@8.13.3)(react@18.2.0)(three@0.153.0): 1039 | resolution: {integrity: sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==} 1040 | peerDependencies: 1041 | '@react-three/fiber': '>=6.0' 1042 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1043 | three: '>=0.126' 1044 | dependencies: 1045 | '@react-spring/animated': 9.6.1(react@18.2.0) 1046 | '@react-spring/core': 9.6.1(react@18.2.0) 1047 | '@react-spring/shared': 9.6.1(react@18.2.0) 1048 | '@react-spring/types': 9.6.1 1049 | '@react-three/fiber': 8.13.3(react-dom@18.2.0)(react@18.2.0)(three@0.153.0) 1050 | react: 18.2.0 1051 | three: 0.153.0 1052 | 1053 | /@react-spring/types@9.6.1: 1054 | resolution: {integrity: sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==} 1055 | 1056 | /@react-three/drei@9.77.0(@react-three/fiber@8.13.3)(@types/three@0.152.1)(react-dom@18.2.0)(react@18.2.0)(three@0.153.0): 1057 | resolution: {integrity: sha512-hAPXkPbmvBB1oKcGgkX+fRfAT9j7+Y2/78pa0xL8jgmkjVbLsrKYh7SOcPuVZ1kUmFFsg75pTZA85KTWqCIzew==} 1058 | peerDependencies: 1059 | '@react-three/fiber': '>=8.0' 1060 | react: '>=18.0' 1061 | react-dom: '>=18.0' 1062 | three: '>=0.137' 1063 | peerDependenciesMeta: 1064 | react-dom: 1065 | optional: true 1066 | dependencies: 1067 | '@babel/runtime': 7.22.5 1068 | '@mediapipe/tasks-vision': 0.10.2-rc2 1069 | '@react-spring/three': 9.6.1(@react-three/fiber@8.13.3)(react@18.2.0)(three@0.153.0) 1070 | '@react-three/fiber': 8.13.3(react-dom@18.2.0)(react@18.2.0)(three@0.153.0) 1071 | '@use-gesture/react': 10.2.27(react@18.2.0) 1072 | camera-controls: 2.6.0(three@0.153.0) 1073 | detect-gpu: 5.0.29 1074 | glsl-noise: 0.0.0 1075 | lodash.clamp: 4.0.3 1076 | lodash.omit: 4.5.0 1077 | lodash.pick: 4.4.0 1078 | maath: 0.6.0(@types/three@0.152.1)(three@0.153.0) 1079 | meshline: 3.1.6(three@0.153.0) 1080 | react: 18.2.0 1081 | react-composer: 5.0.3(react@18.2.0) 1082 | react-dom: 18.2.0(react@18.2.0) 1083 | react-merge-refs: 1.1.0 1084 | stats.js: 0.17.0 1085 | suspend-react: 0.1.3(react@18.2.0) 1086 | three: 0.153.0 1087 | three-mesh-bvh: 0.6.0(three@0.153.0) 1088 | three-stdlib: 2.23.10(three@0.153.0) 1089 | troika-three-text: 0.47.2(three@0.153.0) 1090 | utility-types: 3.10.0 1091 | zustand: 3.7.2(react@18.2.0) 1092 | transitivePeerDependencies: 1093 | - '@types/three' 1094 | 1095 | /@react-three/fiber@8.13.3(react-dom@18.2.0)(react@18.2.0)(three@0.153.0): 1096 | resolution: {integrity: sha512-mCdTUB8D1kwlsOSxGhUg5nuGHt3HN3aNFc0s9I/N7ayk+nzT2ttLdn49c56nrHu+YK+SU1xnrxe6LqftZgIRmQ==} 1097 | peerDependencies: 1098 | expo: '>=43.0' 1099 | expo-asset: '>=8.4' 1100 | expo-gl: '>=11.0' 1101 | react: '>=18.0' 1102 | react-dom: '>=18.0' 1103 | react-native: '>=0.64' 1104 | three: '>=0.133' 1105 | peerDependenciesMeta: 1106 | expo: 1107 | optional: true 1108 | expo-asset: 1109 | optional: true 1110 | expo-gl: 1111 | optional: true 1112 | react-dom: 1113 | optional: true 1114 | react-native: 1115 | optional: true 1116 | dependencies: 1117 | '@babel/runtime': 7.22.5 1118 | '@types/react-reconciler': 0.26.7 1119 | its-fine: 1.1.1(react@18.2.0) 1120 | react: 18.2.0 1121 | react-dom: 18.2.0(react@18.2.0) 1122 | react-reconciler: 0.27.0(react@18.2.0) 1123 | react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) 1124 | scheduler: 0.21.0 1125 | suspend-react: 0.1.3(react@18.2.0) 1126 | three: 0.153.0 1127 | zustand: 3.7.2(react@18.2.0) 1128 | 1129 | /@rollup/pluginutils@5.0.2: 1130 | resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} 1131 | engines: {node: '>=14.0.0'} 1132 | peerDependencies: 1133 | rollup: ^1.20.0||^2.0.0||^3.0.0 1134 | peerDependenciesMeta: 1135 | rollup: 1136 | optional: true 1137 | dependencies: 1138 | '@types/estree': 1.0.1 1139 | estree-walker: 2.0.2 1140 | picomatch: 2.3.1 1141 | dev: true 1142 | 1143 | /@stitches/react@1.2.8(react@18.2.0): 1144 | resolution: {integrity: sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==} 1145 | peerDependencies: 1146 | react: '>= 16.3.0' 1147 | dependencies: 1148 | react: 18.2.0 1149 | 1150 | /@tweenjs/tween.js@18.6.4: 1151 | resolution: {integrity: sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==} 1152 | 1153 | /@types/draco3d@1.4.2: 1154 | resolution: {integrity: sha512-goh23EGr6CLV6aKPwN1p8kBD/7tT5V/bLpToSbarKrwVejqNrspVrv8DhliteYkkhZYrlq/fwKZRRUzH4XN88w==} 1155 | 1156 | /@types/estree@1.0.1: 1157 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 1158 | dev: true 1159 | 1160 | /@types/offscreencanvas@2019.7.0: 1161 | resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} 1162 | 1163 | /@types/prop-types@15.7.5: 1164 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 1165 | 1166 | /@types/react-dom@18.2.6: 1167 | resolution: {integrity: sha512-2et4PDvg6PVCyS7fuTc4gPoksV58bW0RwSxWKcPRcHZf0PRUGq03TKcD/rUHe3azfV6/5/biUBJw+HhCQjaP0A==} 1168 | dependencies: 1169 | '@types/react': 18.2.13 1170 | 1171 | /@types/react-reconciler@0.26.7: 1172 | resolution: {integrity: sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==} 1173 | dependencies: 1174 | '@types/react': 18.2.13 1175 | 1176 | /@types/react-reconciler@0.28.2: 1177 | resolution: {integrity: sha512-8tu6lHzEgYPlfDf/J6GOQdIc+gs+S2yAqlby3zTsB3SP2svlqTYe5fwZNtZyfactP74ShooP2vvi1BOp9ZemWw==} 1178 | dependencies: 1179 | '@types/react': 18.2.13 1180 | 1181 | /@types/react@18.2.13: 1182 | resolution: {integrity: sha512-vJ+zElvi/Zn9cVXB5slX2xL8PZodPCwPRDpittQdw43JR2AJ5k3vKdgJJyneV/cYgIbLQUwXa9JVDvUZXGba+Q==} 1183 | dependencies: 1184 | '@types/prop-types': 15.7.5 1185 | '@types/scheduler': 0.16.3 1186 | csstype: 3.1.2 1187 | 1188 | /@types/scheduler@0.16.3: 1189 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 1190 | 1191 | /@types/stats.js@0.17.0: 1192 | resolution: {integrity: sha512-9w+a7bR8PeB0dCT/HBULU2fMqf6BAzvKbxFboYhmDtDkKPiyXYbjoe2auwsXlEFI7CFNMF1dCv3dFH5Poy9R1w==} 1193 | 1194 | /@types/three@0.152.1: 1195 | resolution: {integrity: sha512-PMOCQnx9JRmq+2OUGTPoY9h1hTWD2L7/nmuW/SyNq1Vbq3Lwt3MNdl3wYSa4DvLTGv62NmIXD9jYdAOwohwJyw==} 1196 | dependencies: 1197 | '@tweenjs/tween.js': 18.6.4 1198 | '@types/stats.js': 0.17.0 1199 | '@types/webxr': 0.5.2 1200 | fflate: 0.6.10 1201 | lil-gui: 0.17.0 1202 | 1203 | /@types/webxr@0.5.2: 1204 | resolution: {integrity: sha512-szL74BnIcok9m7QwYtVmQ+EdIKwbjPANudfuvDrAF8Cljg9MKUlIoc1w5tjj9PMpeSH3U1Xnx//czQybJ0EfSw==} 1205 | 1206 | /@use-gesture/core@10.2.27: 1207 | resolution: {integrity: sha512-V4XV7hn9GAD2MYu8yBBVi5iuWBsAMfjPRMsEVzoTNGYH72tf0kFP+OKqGKc8YJFQIJx6yj+AOqxmEHOmx2/MEA==} 1208 | 1209 | /@use-gesture/react@10.2.27(react@18.2.0): 1210 | resolution: {integrity: sha512-7E5vnWCxeslWlxwZ8uKIcnUZVMTRMZ8cvSnLLKF1NkyNb3PnNiAzoXM4G1vTKJKRhgOTeI6wK1YsEpwo9ABV5w==} 1211 | peerDependencies: 1212 | react: '>= 16.8.0' 1213 | dependencies: 1214 | '@use-gesture/core': 10.2.27 1215 | react: 18.2.0 1216 | 1217 | /@utsubo/events@0.1.7(react@18.2.0): 1218 | resolution: {integrity: sha512-WB/GEj/0h27Bz8rJ0+CBtNz5mLT79ne1OjB7PUM4n0qLBqEDwm6yBzZC3j6tasHjlBPJDYZiBVIA1glaMlgZ5g==} 1219 | peerDependencies: 1220 | react: '>=16.8.0' 1221 | peerDependenciesMeta: 1222 | react: 1223 | optional: true 1224 | dependencies: 1225 | eventemitter3: 4.0.7 1226 | react: 18.2.0 1227 | dev: true 1228 | 1229 | /@vitejs/plugin-react@4.0.1(vite@4.3.9): 1230 | resolution: {integrity: sha512-g25lL98essfeSj43HJ0o4DMp0325XK0ITkxpgChzJU/CyemgyChtlxfnRbjfwxDGCTRxTiXtQAsdebQXKMRSOA==} 1231 | engines: {node: ^14.18.0 || >=16.0.0} 1232 | peerDependencies: 1233 | vite: ^4.2.0 1234 | dependencies: 1235 | '@babel/core': 7.22.5 1236 | '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.5) 1237 | '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.5) 1238 | react-refresh: 0.14.0 1239 | vite: 4.3.9 1240 | transitivePeerDependencies: 1241 | - supports-color 1242 | dev: true 1243 | 1244 | /acorn-jsx@5.3.2(acorn@8.9.0): 1245 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1246 | peerDependencies: 1247 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1248 | dependencies: 1249 | acorn: 8.9.0 1250 | dev: true 1251 | 1252 | /acorn@8.9.0: 1253 | resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} 1254 | engines: {node: '>=0.4.0'} 1255 | hasBin: true 1256 | dev: true 1257 | 1258 | /ajv@6.12.6: 1259 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1260 | dependencies: 1261 | fast-deep-equal: 3.1.3 1262 | fast-json-stable-stringify: 2.1.0 1263 | json-schema-traverse: 0.4.1 1264 | uri-js: 4.4.1 1265 | dev: true 1266 | 1267 | /ansi-regex@5.0.1: 1268 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1269 | engines: {node: '>=8'} 1270 | dev: true 1271 | 1272 | /ansi-styles@3.2.1: 1273 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 1274 | engines: {node: '>=4'} 1275 | dependencies: 1276 | color-convert: 1.9.3 1277 | dev: true 1278 | 1279 | /ansi-styles@4.3.0: 1280 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1281 | engines: {node: '>=8'} 1282 | dependencies: 1283 | color-convert: 2.0.1 1284 | dev: true 1285 | 1286 | /argparse@2.0.1: 1287 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1288 | dev: true 1289 | 1290 | /array-buffer-byte-length@1.0.0: 1291 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 1292 | dependencies: 1293 | call-bind: 1.0.2 1294 | is-array-buffer: 3.0.2 1295 | dev: true 1296 | 1297 | /array-includes@3.1.6: 1298 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 1299 | engines: {node: '>= 0.4'} 1300 | dependencies: 1301 | call-bind: 1.0.2 1302 | define-properties: 1.2.0 1303 | es-abstract: 1.21.2 1304 | get-intrinsic: 1.2.1 1305 | is-string: 1.0.7 1306 | dev: true 1307 | 1308 | /array.prototype.flatmap@1.3.1: 1309 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} 1310 | engines: {node: '>= 0.4'} 1311 | dependencies: 1312 | call-bind: 1.0.2 1313 | define-properties: 1.2.0 1314 | es-abstract: 1.21.2 1315 | es-shim-unscopables: 1.0.0 1316 | dev: true 1317 | 1318 | /array.prototype.tosorted@1.1.1: 1319 | resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} 1320 | dependencies: 1321 | call-bind: 1.0.2 1322 | define-properties: 1.2.0 1323 | es-abstract: 1.21.2 1324 | es-shim-unscopables: 1.0.0 1325 | get-intrinsic: 1.2.1 1326 | dev: true 1327 | 1328 | /assign-symbols@1.0.0: 1329 | resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} 1330 | engines: {node: '>=0.10.0'} 1331 | dev: false 1332 | 1333 | /attr-accept@2.2.2: 1334 | resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} 1335 | engines: {node: '>=4'} 1336 | dev: false 1337 | 1338 | /available-typed-arrays@1.0.5: 1339 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 1340 | engines: {node: '>= 0.4'} 1341 | dev: true 1342 | 1343 | /balanced-match@1.0.2: 1344 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1345 | dev: true 1346 | 1347 | /bidi-js@1.0.2: 1348 | resolution: {integrity: sha512-rzSy/k7WdX5zOyeHHCOixGXbCHkyogkxPKL2r8QtzHmVQDiWCXUWa18bLdMWT9CYMLOYTjWpTHawuev2ouYJVw==} 1349 | dependencies: 1350 | require-from-string: 2.0.2 1351 | 1352 | /brace-expansion@1.1.11: 1353 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1354 | dependencies: 1355 | balanced-match: 1.0.2 1356 | concat-map: 0.0.1 1357 | dev: true 1358 | 1359 | /browserslist@4.21.9: 1360 | resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} 1361 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1362 | hasBin: true 1363 | dependencies: 1364 | caniuse-lite: 1.0.30001506 1365 | electron-to-chromium: 1.4.435 1366 | node-releases: 2.0.12 1367 | update-browserslist-db: 1.0.11(browserslist@4.21.9) 1368 | dev: true 1369 | 1370 | /call-bind@1.0.2: 1371 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1372 | dependencies: 1373 | function-bind: 1.1.1 1374 | get-intrinsic: 1.2.1 1375 | dev: true 1376 | 1377 | /callsites@3.1.0: 1378 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1379 | engines: {node: '>=6'} 1380 | dev: true 1381 | 1382 | /camera-controls@2.6.0(three@0.153.0): 1383 | resolution: {integrity: sha512-65vkZ+FQfRLtq5LHrNuDFeOALN8+gfoRFuIOwYwgwzVY7bjBxP+j3joj6RTgc5Ot+dTJupFWwfcq7ds4Iq4DGg==} 1384 | peerDependencies: 1385 | three: '>=0.126.1' 1386 | dependencies: 1387 | three: 0.153.0 1388 | 1389 | /caniuse-lite@1.0.30001506: 1390 | resolution: {integrity: sha512-6XNEcpygZMCKaufIcgpQNZNf00GEqc7VQON+9Rd0K1bMYo8xhMZRAo5zpbnbMNizi4YNgIDAFrdykWsvY3H4Hw==} 1391 | dev: true 1392 | 1393 | /chalk@2.4.2: 1394 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1395 | engines: {node: '>=4'} 1396 | dependencies: 1397 | ansi-styles: 3.2.1 1398 | escape-string-regexp: 1.0.5 1399 | supports-color: 5.5.0 1400 | dev: true 1401 | 1402 | /chalk@4.1.2: 1403 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1404 | engines: {node: '>=10'} 1405 | dependencies: 1406 | ansi-styles: 4.3.0 1407 | supports-color: 7.2.0 1408 | dev: true 1409 | 1410 | /chevrotain@10.5.0: 1411 | resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==} 1412 | dependencies: 1413 | '@chevrotain/cst-dts-gen': 10.5.0 1414 | '@chevrotain/gast': 10.5.0 1415 | '@chevrotain/types': 10.5.0 1416 | '@chevrotain/utils': 10.5.0 1417 | lodash: 4.17.21 1418 | regexp-to-ast: 0.5.0 1419 | 1420 | /color-convert@1.9.3: 1421 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1422 | dependencies: 1423 | color-name: 1.1.3 1424 | dev: true 1425 | 1426 | /color-convert@2.0.1: 1427 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1428 | engines: {node: '>=7.0.0'} 1429 | dependencies: 1430 | color-name: 1.1.4 1431 | dev: true 1432 | 1433 | /color-name@1.1.3: 1434 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1435 | dev: true 1436 | 1437 | /color-name@1.1.4: 1438 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1439 | dev: true 1440 | 1441 | /colord@2.9.3: 1442 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} 1443 | dev: false 1444 | 1445 | /concat-map@0.0.1: 1446 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1447 | dev: true 1448 | 1449 | /convert-source-map@1.9.0: 1450 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 1451 | dev: true 1452 | 1453 | /cross-spawn@7.0.3: 1454 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1455 | engines: {node: '>= 8'} 1456 | dependencies: 1457 | path-key: 3.1.1 1458 | shebang-command: 2.0.0 1459 | which: 2.0.2 1460 | dev: true 1461 | 1462 | /csstype@3.1.2: 1463 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 1464 | 1465 | /debounce@1.2.1: 1466 | resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} 1467 | 1468 | /debug@4.3.4: 1469 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1470 | engines: {node: '>=6.0'} 1471 | peerDependencies: 1472 | supports-color: '*' 1473 | peerDependenciesMeta: 1474 | supports-color: 1475 | optional: true 1476 | dependencies: 1477 | ms: 2.1.2 1478 | dev: true 1479 | 1480 | /deep-is@0.1.4: 1481 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1482 | dev: true 1483 | 1484 | /define-properties@1.2.0: 1485 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} 1486 | engines: {node: '>= 0.4'} 1487 | dependencies: 1488 | has-property-descriptors: 1.0.0 1489 | object-keys: 1.1.1 1490 | dev: true 1491 | 1492 | /dequal@2.0.3: 1493 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1494 | engines: {node: '>=6'} 1495 | dev: false 1496 | 1497 | /detect-gpu@5.0.29: 1498 | resolution: {integrity: sha512-DEqWxHXAKaoIHxF0rtFPDdWWINGoketQ6fk64KbahK3IC0I0LiZR6NbWZo4pwf7UH8khBLY8w4wS+1MHi81LSQ==} 1499 | dependencies: 1500 | webgl-constants: 1.1.1 1501 | 1502 | /doctrine@2.1.0: 1503 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1504 | engines: {node: '>=0.10.0'} 1505 | dependencies: 1506 | esutils: 2.0.3 1507 | dev: true 1508 | 1509 | /doctrine@3.0.0: 1510 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1511 | engines: {node: '>=6.0.0'} 1512 | dependencies: 1513 | esutils: 2.0.3 1514 | dev: true 1515 | 1516 | /draco3d@1.5.6: 1517 | resolution: {integrity: sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ==} 1518 | 1519 | /electron-to-chromium@1.4.435: 1520 | resolution: {integrity: sha512-B0CBWVFhvoQCW/XtjRzgrmqcgVWg6RXOEM/dK59+wFV93BFGR6AeNKc4OyhM+T3IhJaOOG8o/V+33Y2mwJWtzw==} 1521 | dev: true 1522 | 1523 | /es-abstract@1.21.2: 1524 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} 1525 | engines: {node: '>= 0.4'} 1526 | dependencies: 1527 | array-buffer-byte-length: 1.0.0 1528 | available-typed-arrays: 1.0.5 1529 | call-bind: 1.0.2 1530 | es-set-tostringtag: 2.0.1 1531 | es-to-primitive: 1.2.1 1532 | function.prototype.name: 1.1.5 1533 | get-intrinsic: 1.2.1 1534 | get-symbol-description: 1.0.0 1535 | globalthis: 1.0.3 1536 | gopd: 1.0.1 1537 | has: 1.0.3 1538 | has-property-descriptors: 1.0.0 1539 | has-proto: 1.0.1 1540 | has-symbols: 1.0.3 1541 | internal-slot: 1.0.5 1542 | is-array-buffer: 3.0.2 1543 | is-callable: 1.2.7 1544 | is-negative-zero: 2.0.2 1545 | is-regex: 1.1.4 1546 | is-shared-array-buffer: 1.0.2 1547 | is-string: 1.0.7 1548 | is-typed-array: 1.1.10 1549 | is-weakref: 1.0.2 1550 | object-inspect: 1.12.3 1551 | object-keys: 1.1.1 1552 | object.assign: 4.1.4 1553 | regexp.prototype.flags: 1.5.0 1554 | safe-regex-test: 1.0.0 1555 | string.prototype.trim: 1.2.7 1556 | string.prototype.trimend: 1.0.6 1557 | string.prototype.trimstart: 1.0.6 1558 | typed-array-length: 1.0.4 1559 | unbox-primitive: 1.0.2 1560 | which-typed-array: 1.1.9 1561 | dev: true 1562 | 1563 | /es-set-tostringtag@2.0.1: 1564 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 1565 | engines: {node: '>= 0.4'} 1566 | dependencies: 1567 | get-intrinsic: 1.2.1 1568 | has: 1.0.3 1569 | has-tostringtag: 1.0.0 1570 | dev: true 1571 | 1572 | /es-shim-unscopables@1.0.0: 1573 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 1574 | dependencies: 1575 | has: 1.0.3 1576 | dev: true 1577 | 1578 | /es-to-primitive@1.2.1: 1579 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1580 | engines: {node: '>= 0.4'} 1581 | dependencies: 1582 | is-callable: 1.2.7 1583 | is-date-object: 1.0.5 1584 | is-symbol: 1.0.4 1585 | dev: true 1586 | 1587 | /esbuild@0.17.19: 1588 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} 1589 | engines: {node: '>=12'} 1590 | hasBin: true 1591 | requiresBuild: true 1592 | optionalDependencies: 1593 | '@esbuild/android-arm': 0.17.19 1594 | '@esbuild/android-arm64': 0.17.19 1595 | '@esbuild/android-x64': 0.17.19 1596 | '@esbuild/darwin-arm64': 0.17.19 1597 | '@esbuild/darwin-x64': 0.17.19 1598 | '@esbuild/freebsd-arm64': 0.17.19 1599 | '@esbuild/freebsd-x64': 0.17.19 1600 | '@esbuild/linux-arm': 0.17.19 1601 | '@esbuild/linux-arm64': 0.17.19 1602 | '@esbuild/linux-ia32': 0.17.19 1603 | '@esbuild/linux-loong64': 0.17.19 1604 | '@esbuild/linux-mips64el': 0.17.19 1605 | '@esbuild/linux-ppc64': 0.17.19 1606 | '@esbuild/linux-riscv64': 0.17.19 1607 | '@esbuild/linux-s390x': 0.17.19 1608 | '@esbuild/linux-x64': 0.17.19 1609 | '@esbuild/netbsd-x64': 0.17.19 1610 | '@esbuild/openbsd-x64': 0.17.19 1611 | '@esbuild/sunos-x64': 0.17.19 1612 | '@esbuild/win32-arm64': 0.17.19 1613 | '@esbuild/win32-ia32': 0.17.19 1614 | '@esbuild/win32-x64': 0.17.19 1615 | dev: true 1616 | 1617 | /escalade@3.1.1: 1618 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1619 | engines: {node: '>=6'} 1620 | dev: true 1621 | 1622 | /escape-string-regexp@1.0.5: 1623 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1624 | engines: {node: '>=0.8.0'} 1625 | dev: true 1626 | 1627 | /escape-string-regexp@4.0.0: 1628 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1629 | engines: {node: '>=10'} 1630 | dev: true 1631 | 1632 | /eslint-plugin-react-hooks@4.6.0(eslint@8.43.0): 1633 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1634 | engines: {node: '>=10'} 1635 | peerDependencies: 1636 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1637 | dependencies: 1638 | eslint: 8.43.0 1639 | dev: true 1640 | 1641 | /eslint-plugin-react-refresh@0.3.5(eslint@8.43.0): 1642 | resolution: {integrity: sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==} 1643 | peerDependencies: 1644 | eslint: '>=7' 1645 | dependencies: 1646 | eslint: 8.43.0 1647 | dev: true 1648 | 1649 | /eslint-plugin-react@7.32.2(eslint@8.43.0): 1650 | resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} 1651 | engines: {node: '>=4'} 1652 | peerDependencies: 1653 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1654 | dependencies: 1655 | array-includes: 3.1.6 1656 | array.prototype.flatmap: 1.3.1 1657 | array.prototype.tosorted: 1.1.1 1658 | doctrine: 2.1.0 1659 | eslint: 8.43.0 1660 | estraverse: 5.3.0 1661 | jsx-ast-utils: 3.3.3 1662 | minimatch: 3.1.2 1663 | object.entries: 1.1.6 1664 | object.fromentries: 2.0.6 1665 | object.hasown: 1.1.2 1666 | object.values: 1.1.6 1667 | prop-types: 15.8.1 1668 | resolve: 2.0.0-next.4 1669 | semver: 6.3.0 1670 | string.prototype.matchall: 4.0.8 1671 | dev: true 1672 | 1673 | /eslint-scope@7.2.0: 1674 | resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} 1675 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1676 | dependencies: 1677 | esrecurse: 4.3.0 1678 | estraverse: 5.3.0 1679 | dev: true 1680 | 1681 | /eslint-visitor-keys@3.4.1: 1682 | resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} 1683 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1684 | dev: true 1685 | 1686 | /eslint@8.43.0: 1687 | resolution: {integrity: sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==} 1688 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1689 | hasBin: true 1690 | dependencies: 1691 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.43.0) 1692 | '@eslint-community/regexpp': 4.5.1 1693 | '@eslint/eslintrc': 2.0.3 1694 | '@eslint/js': 8.43.0 1695 | '@humanwhocodes/config-array': 0.11.10 1696 | '@humanwhocodes/module-importer': 1.0.1 1697 | '@nodelib/fs.walk': 1.2.8 1698 | ajv: 6.12.6 1699 | chalk: 4.1.2 1700 | cross-spawn: 7.0.3 1701 | debug: 4.3.4 1702 | doctrine: 3.0.0 1703 | escape-string-regexp: 4.0.0 1704 | eslint-scope: 7.2.0 1705 | eslint-visitor-keys: 3.4.1 1706 | espree: 9.5.2 1707 | esquery: 1.5.0 1708 | esutils: 2.0.3 1709 | fast-deep-equal: 3.1.3 1710 | file-entry-cache: 6.0.1 1711 | find-up: 5.0.0 1712 | glob-parent: 6.0.2 1713 | globals: 13.20.0 1714 | graphemer: 1.4.0 1715 | ignore: 5.2.4 1716 | import-fresh: 3.3.0 1717 | imurmurhash: 0.1.4 1718 | is-glob: 4.0.3 1719 | is-path-inside: 3.0.3 1720 | js-yaml: 4.1.0 1721 | json-stable-stringify-without-jsonify: 1.0.1 1722 | levn: 0.4.1 1723 | lodash.merge: 4.6.2 1724 | minimatch: 3.1.2 1725 | natural-compare: 1.4.0 1726 | optionator: 0.9.1 1727 | strip-ansi: 6.0.1 1728 | strip-json-comments: 3.1.1 1729 | text-table: 0.2.0 1730 | transitivePeerDependencies: 1731 | - supports-color 1732 | dev: true 1733 | 1734 | /espree@9.5.2: 1735 | resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} 1736 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1737 | dependencies: 1738 | acorn: 8.9.0 1739 | acorn-jsx: 5.3.2(acorn@8.9.0) 1740 | eslint-visitor-keys: 3.4.1 1741 | dev: true 1742 | 1743 | /esquery@1.5.0: 1744 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1745 | engines: {node: '>=0.10'} 1746 | dependencies: 1747 | estraverse: 5.3.0 1748 | dev: true 1749 | 1750 | /esrecurse@4.3.0: 1751 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1752 | engines: {node: '>=4.0'} 1753 | dependencies: 1754 | estraverse: 5.3.0 1755 | dev: true 1756 | 1757 | /estraverse@5.3.0: 1758 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1759 | engines: {node: '>=4.0'} 1760 | dev: true 1761 | 1762 | /estree-walker@2.0.2: 1763 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1764 | dev: true 1765 | 1766 | /esutils@2.0.3: 1767 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1768 | engines: {node: '>=0.10.0'} 1769 | dev: true 1770 | 1771 | /eventemitter3@4.0.7: 1772 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 1773 | dev: true 1774 | 1775 | /extend-shallow@2.0.1: 1776 | resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} 1777 | engines: {node: '>=0.10.0'} 1778 | dependencies: 1779 | is-extendable: 0.1.1 1780 | dev: false 1781 | 1782 | /extend-shallow@3.0.2: 1783 | resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} 1784 | engines: {node: '>=0.10.0'} 1785 | dependencies: 1786 | assign-symbols: 1.0.0 1787 | is-extendable: 1.0.1 1788 | dev: false 1789 | 1790 | /fast-deep-equal@3.1.3: 1791 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1792 | dev: true 1793 | 1794 | /fast-json-stable-stringify@2.1.0: 1795 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1796 | dev: true 1797 | 1798 | /fast-levenshtein@2.0.6: 1799 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1800 | dev: true 1801 | 1802 | /fastq@1.15.0: 1803 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1804 | dependencies: 1805 | reusify: 1.0.4 1806 | dev: true 1807 | 1808 | /fflate@0.6.10: 1809 | resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==} 1810 | 1811 | /file-entry-cache@6.0.1: 1812 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1813 | engines: {node: ^10.12.0 || >=12.0.0} 1814 | dependencies: 1815 | flat-cache: 3.0.4 1816 | dev: true 1817 | 1818 | /file-selector@0.5.0: 1819 | resolution: {integrity: sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==} 1820 | engines: {node: '>= 10'} 1821 | dependencies: 1822 | tslib: 2.5.3 1823 | dev: false 1824 | 1825 | /find-up@5.0.0: 1826 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1827 | engines: {node: '>=10'} 1828 | dependencies: 1829 | locate-path: 6.0.0 1830 | path-exists: 4.0.0 1831 | dev: true 1832 | 1833 | /flat-cache@3.0.4: 1834 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1835 | engines: {node: ^10.12.0 || >=12.0.0} 1836 | dependencies: 1837 | flatted: 3.2.7 1838 | rimraf: 3.0.2 1839 | dev: true 1840 | 1841 | /flatted@3.2.7: 1842 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1843 | dev: true 1844 | 1845 | /for-each@0.3.3: 1846 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1847 | dependencies: 1848 | is-callable: 1.2.7 1849 | dev: true 1850 | 1851 | /for-in@1.0.2: 1852 | resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} 1853 | engines: {node: '>=0.10.0'} 1854 | dev: false 1855 | 1856 | /fs.realpath@1.0.0: 1857 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1858 | dev: true 1859 | 1860 | /fsevents@2.3.2: 1861 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1862 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1863 | os: [darwin] 1864 | requiresBuild: true 1865 | dev: true 1866 | optional: true 1867 | 1868 | /function-bind@1.1.1: 1869 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1870 | dev: true 1871 | 1872 | /function.prototype.name@1.1.5: 1873 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1874 | engines: {node: '>= 0.4'} 1875 | dependencies: 1876 | call-bind: 1.0.2 1877 | define-properties: 1.2.0 1878 | es-abstract: 1.21.2 1879 | functions-have-names: 1.2.3 1880 | dev: true 1881 | 1882 | /functions-have-names@1.2.3: 1883 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1884 | dev: true 1885 | 1886 | /gensync@1.0.0-beta.2: 1887 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1888 | engines: {node: '>=6.9.0'} 1889 | dev: true 1890 | 1891 | /get-intrinsic@1.2.1: 1892 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 1893 | dependencies: 1894 | function-bind: 1.1.1 1895 | has: 1.0.3 1896 | has-proto: 1.0.1 1897 | has-symbols: 1.0.3 1898 | dev: true 1899 | 1900 | /get-symbol-description@1.0.0: 1901 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1902 | engines: {node: '>= 0.4'} 1903 | dependencies: 1904 | call-bind: 1.0.2 1905 | get-intrinsic: 1.2.1 1906 | dev: true 1907 | 1908 | /get-value@2.0.6: 1909 | resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} 1910 | engines: {node: '>=0.10.0'} 1911 | dev: false 1912 | 1913 | /glob-parent@6.0.2: 1914 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1915 | engines: {node: '>=10.13.0'} 1916 | dependencies: 1917 | is-glob: 4.0.3 1918 | dev: true 1919 | 1920 | /glob@7.2.3: 1921 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1922 | dependencies: 1923 | fs.realpath: 1.0.0 1924 | inflight: 1.0.6 1925 | inherits: 2.0.4 1926 | minimatch: 3.1.2 1927 | once: 1.4.0 1928 | path-is-absolute: 1.0.1 1929 | dev: true 1930 | 1931 | /globals@11.12.0: 1932 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1933 | engines: {node: '>=4'} 1934 | dev: true 1935 | 1936 | /globals@13.20.0: 1937 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1938 | engines: {node: '>=8'} 1939 | dependencies: 1940 | type-fest: 0.20.2 1941 | dev: true 1942 | 1943 | /globalthis@1.0.3: 1944 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1945 | engines: {node: '>= 0.4'} 1946 | dependencies: 1947 | define-properties: 1.2.0 1948 | dev: true 1949 | 1950 | /glsl-noise@0.0.0: 1951 | resolution: {integrity: sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==} 1952 | 1953 | /gopd@1.0.1: 1954 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1955 | dependencies: 1956 | get-intrinsic: 1.2.1 1957 | dev: true 1958 | 1959 | /graphemer@1.4.0: 1960 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1961 | dev: true 1962 | 1963 | /has-bigints@1.0.2: 1964 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1965 | dev: true 1966 | 1967 | /has-flag@3.0.0: 1968 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1969 | engines: {node: '>=4'} 1970 | dev: true 1971 | 1972 | /has-flag@4.0.0: 1973 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1974 | engines: {node: '>=8'} 1975 | dev: true 1976 | 1977 | /has-property-descriptors@1.0.0: 1978 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1979 | dependencies: 1980 | get-intrinsic: 1.2.1 1981 | dev: true 1982 | 1983 | /has-proto@1.0.1: 1984 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1985 | engines: {node: '>= 0.4'} 1986 | dev: true 1987 | 1988 | /has-symbols@1.0.3: 1989 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1990 | engines: {node: '>= 0.4'} 1991 | dev: true 1992 | 1993 | /has-tostringtag@1.0.0: 1994 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1995 | engines: {node: '>= 0.4'} 1996 | dependencies: 1997 | has-symbols: 1.0.3 1998 | dev: true 1999 | 2000 | /has@1.0.3: 2001 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 2002 | engines: {node: '>= 0.4.0'} 2003 | dependencies: 2004 | function-bind: 1.1.1 2005 | dev: true 2006 | 2007 | /ignore@5.2.4: 2008 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 2009 | engines: {node: '>= 4'} 2010 | dev: true 2011 | 2012 | /import-fresh@3.3.0: 2013 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2014 | engines: {node: '>=6'} 2015 | dependencies: 2016 | parent-module: 1.0.1 2017 | resolve-from: 4.0.0 2018 | dev: true 2019 | 2020 | /imurmurhash@0.1.4: 2021 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2022 | engines: {node: '>=0.8.19'} 2023 | dev: true 2024 | 2025 | /inflight@1.0.6: 2026 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 2027 | dependencies: 2028 | once: 1.4.0 2029 | wrappy: 1.0.2 2030 | dev: true 2031 | 2032 | /inherits@2.0.4: 2033 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2034 | dev: true 2035 | 2036 | /internal-slot@1.0.5: 2037 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 2038 | engines: {node: '>= 0.4'} 2039 | dependencies: 2040 | get-intrinsic: 1.2.1 2041 | has: 1.0.3 2042 | side-channel: 1.0.4 2043 | dev: true 2044 | 2045 | /is-array-buffer@3.0.2: 2046 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 2047 | dependencies: 2048 | call-bind: 1.0.2 2049 | get-intrinsic: 1.2.1 2050 | is-typed-array: 1.1.10 2051 | dev: true 2052 | 2053 | /is-bigint@1.0.4: 2054 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2055 | dependencies: 2056 | has-bigints: 1.0.2 2057 | dev: true 2058 | 2059 | /is-boolean-object@1.1.2: 2060 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2061 | engines: {node: '>= 0.4'} 2062 | dependencies: 2063 | call-bind: 1.0.2 2064 | has-tostringtag: 1.0.0 2065 | dev: true 2066 | 2067 | /is-callable@1.2.7: 2068 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 2069 | engines: {node: '>= 0.4'} 2070 | dev: true 2071 | 2072 | /is-core-module@2.12.1: 2073 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 2074 | dependencies: 2075 | has: 1.0.3 2076 | dev: true 2077 | 2078 | /is-date-object@1.0.5: 2079 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2080 | engines: {node: '>= 0.4'} 2081 | dependencies: 2082 | has-tostringtag: 1.0.0 2083 | dev: true 2084 | 2085 | /is-extendable@0.1.1: 2086 | resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} 2087 | engines: {node: '>=0.10.0'} 2088 | dev: false 2089 | 2090 | /is-extendable@1.0.1: 2091 | resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} 2092 | engines: {node: '>=0.10.0'} 2093 | dependencies: 2094 | is-plain-object: 2.0.4 2095 | dev: false 2096 | 2097 | /is-extglob@2.1.1: 2098 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2099 | engines: {node: '>=0.10.0'} 2100 | dev: true 2101 | 2102 | /is-glob@4.0.3: 2103 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2104 | engines: {node: '>=0.10.0'} 2105 | dependencies: 2106 | is-extglob: 2.1.1 2107 | dev: true 2108 | 2109 | /is-negative-zero@2.0.2: 2110 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2111 | engines: {node: '>= 0.4'} 2112 | dev: true 2113 | 2114 | /is-number-object@1.0.7: 2115 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2116 | engines: {node: '>= 0.4'} 2117 | dependencies: 2118 | has-tostringtag: 1.0.0 2119 | dev: true 2120 | 2121 | /is-path-inside@3.0.3: 2122 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2123 | engines: {node: '>=8'} 2124 | dev: true 2125 | 2126 | /is-plain-object@2.0.4: 2127 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} 2128 | engines: {node: '>=0.10.0'} 2129 | dependencies: 2130 | isobject: 3.0.1 2131 | dev: false 2132 | 2133 | /is-regex@1.1.4: 2134 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2135 | engines: {node: '>= 0.4'} 2136 | dependencies: 2137 | call-bind: 1.0.2 2138 | has-tostringtag: 1.0.0 2139 | dev: true 2140 | 2141 | /is-shared-array-buffer@1.0.2: 2142 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2143 | dependencies: 2144 | call-bind: 1.0.2 2145 | dev: true 2146 | 2147 | /is-string@1.0.7: 2148 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2149 | engines: {node: '>= 0.4'} 2150 | dependencies: 2151 | has-tostringtag: 1.0.0 2152 | dev: true 2153 | 2154 | /is-symbol@1.0.4: 2155 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2156 | engines: {node: '>= 0.4'} 2157 | dependencies: 2158 | has-symbols: 1.0.3 2159 | dev: true 2160 | 2161 | /is-typed-array@1.1.10: 2162 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 2163 | engines: {node: '>= 0.4'} 2164 | dependencies: 2165 | available-typed-arrays: 1.0.5 2166 | call-bind: 1.0.2 2167 | for-each: 0.3.3 2168 | gopd: 1.0.1 2169 | has-tostringtag: 1.0.0 2170 | dev: true 2171 | 2172 | /is-weakref@1.0.2: 2173 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2174 | dependencies: 2175 | call-bind: 1.0.2 2176 | dev: true 2177 | 2178 | /isexe@2.0.0: 2179 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2180 | dev: true 2181 | 2182 | /isobject@3.0.1: 2183 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} 2184 | engines: {node: '>=0.10.0'} 2185 | dev: false 2186 | 2187 | /its-fine@1.1.1(react@18.2.0): 2188 | resolution: {integrity: sha512-v1Ia1xl20KbuSGlwoaGsW0oxsw8Be+TrXweidxD9oT/1lAh6O3K3/GIM95Tt6WCiv6W+h2M7RB1TwdoAjQyyKw==} 2189 | peerDependencies: 2190 | react: '>=18.0' 2191 | dependencies: 2192 | '@types/react-reconciler': 0.28.2 2193 | react: 18.2.0 2194 | 2195 | /js-tokens@4.0.0: 2196 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2197 | 2198 | /js-yaml@4.1.0: 2199 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2200 | hasBin: true 2201 | dependencies: 2202 | argparse: 2.0.1 2203 | dev: true 2204 | 2205 | /jsesc@2.5.2: 2206 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2207 | engines: {node: '>=4'} 2208 | hasBin: true 2209 | dev: true 2210 | 2211 | /json-schema-traverse@0.4.1: 2212 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2213 | dev: true 2214 | 2215 | /json-stable-stringify-without-jsonify@1.0.1: 2216 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2217 | dev: true 2218 | 2219 | /json5@2.2.3: 2220 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 2221 | engines: {node: '>=6'} 2222 | hasBin: true 2223 | dev: true 2224 | 2225 | /jsx-ast-utils@3.3.3: 2226 | resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} 2227 | engines: {node: '>=4.0'} 2228 | dependencies: 2229 | array-includes: 3.1.6 2230 | object.assign: 4.1.4 2231 | dev: true 2232 | 2233 | /ktx-parse@0.4.5: 2234 | resolution: {integrity: sha512-MK3FOody4TXbFf8Yqv7EBbySw7aPvEcPX++Ipt6Sox+/YMFvR5xaTyhfNSk1AEmMy+RYIw81ctN4IMxCB8OAlg==} 2235 | 2236 | /leva@0.9.35(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): 2237 | resolution: {integrity: sha512-sp/ZbHGrrzM+eq+wIAc9X7C5qFagNERYkwaulKI/xy0XrDPV67jLUSSqTCFSoSc0Uk96j3oephYoO/6I8mZNuw==} 2238 | peerDependencies: 2239 | react: '>=16.8.0' 2240 | react-dom: '>=16.8.0' 2241 | dependencies: 2242 | '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 2243 | '@radix-ui/react-tooltip': 1.0.6(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) 2244 | '@stitches/react': 1.2.8(react@18.2.0) 2245 | '@use-gesture/react': 10.2.27(react@18.2.0) 2246 | colord: 2.9.3 2247 | dequal: 2.0.3 2248 | merge-value: 1.0.0 2249 | react: 18.2.0 2250 | react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) 2251 | react-dom: 18.2.0(react@18.2.0) 2252 | react-dropzone: 12.1.0(react@18.2.0) 2253 | v8n: 1.5.1 2254 | zustand: 3.7.2(react@18.2.0) 2255 | transitivePeerDependencies: 2256 | - '@types/react' 2257 | - '@types/react-dom' 2258 | dev: false 2259 | 2260 | /levn@0.4.1: 2261 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2262 | engines: {node: '>= 0.8.0'} 2263 | dependencies: 2264 | prelude-ls: 1.2.1 2265 | type-check: 0.4.0 2266 | dev: true 2267 | 2268 | /lil-gui@0.17.0: 2269 | resolution: {integrity: sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==} 2270 | 2271 | /locate-path@6.0.0: 2272 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2273 | engines: {node: '>=10'} 2274 | dependencies: 2275 | p-locate: 5.0.0 2276 | dev: true 2277 | 2278 | /lodash.clamp@4.0.3: 2279 | resolution: {integrity: sha512-HvzRFWjtcguTW7yd8NJBshuNaCa8aqNFtnswdT7f/cMd/1YKy5Zzoq4W/Oxvnx9l7aeY258uSdDfM793+eLsVg==} 2280 | 2281 | /lodash.merge@4.6.2: 2282 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2283 | dev: true 2284 | 2285 | /lodash.omit@4.5.0: 2286 | resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} 2287 | 2288 | /lodash.pick@4.4.0: 2289 | resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} 2290 | 2291 | /lodash@4.17.21: 2292 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2293 | 2294 | /loose-envify@1.4.0: 2295 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2296 | hasBin: true 2297 | dependencies: 2298 | js-tokens: 4.0.0 2299 | 2300 | /lru-cache@5.1.1: 2301 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 2302 | dependencies: 2303 | yallist: 3.1.1 2304 | dev: true 2305 | 2306 | /maath@0.6.0(@types/three@0.152.1)(three@0.153.0): 2307 | resolution: {integrity: sha512-dSb2xQuP7vDnaYqfoKzlApeRcR2xtN8/f7WV/TMAkBC8552TwTLtOO0JTcSygkYMjNDPoo6V01jTw/aPi4JrMw==} 2308 | peerDependencies: 2309 | '@types/three': '>=0.144.0' 2310 | three: '>=0.144.0' 2311 | dependencies: 2312 | '@types/three': 0.152.1 2313 | three: 0.153.0 2314 | 2315 | /merge-value@1.0.0: 2316 | resolution: {integrity: sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==} 2317 | engines: {node: '>=0.10.0'} 2318 | dependencies: 2319 | get-value: 2.0.6 2320 | is-extendable: 1.0.1 2321 | mixin-deep: 1.3.2 2322 | set-value: 2.0.1 2323 | dev: false 2324 | 2325 | /meshline@3.1.6(three@0.153.0): 2326 | resolution: {integrity: sha512-8JZJOdaL5oz3PI/upG8JvP/5FfzYUOhrkJ8np/WKvXzl0/PZ2V9pqTvCIjSKv+w9ccg2xb+yyBhXAwt6ier3ug==} 2327 | peerDependencies: 2328 | three: '>=0.137' 2329 | dependencies: 2330 | three: 0.153.0 2331 | 2332 | /minimatch@3.1.2: 2333 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2334 | dependencies: 2335 | brace-expansion: 1.1.11 2336 | dev: true 2337 | 2338 | /mixin-deep@1.3.2: 2339 | resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} 2340 | engines: {node: '>=0.10.0'} 2341 | dependencies: 2342 | for-in: 1.0.2 2343 | is-extendable: 1.0.1 2344 | dev: false 2345 | 2346 | /mmd-parser@1.0.4: 2347 | resolution: {integrity: sha512-Qi0VCU46t2IwfGv5KF0+D/t9cizcDug7qnNoy9Ggk7aucp0tssV8IwTMkBlDbm+VqAf3cdQHTCARKSsuS2MYFg==} 2348 | 2349 | /ms@2.1.2: 2350 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2351 | dev: true 2352 | 2353 | /nanoid@3.3.6: 2354 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 2355 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2356 | hasBin: true 2357 | dev: true 2358 | 2359 | /natural-compare@1.4.0: 2360 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2361 | dev: true 2362 | 2363 | /node-releases@2.0.12: 2364 | resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} 2365 | dev: true 2366 | 2367 | /object-assign@4.1.1: 2368 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2369 | engines: {node: '>=0.10.0'} 2370 | 2371 | /object-inspect@1.12.3: 2372 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 2373 | dev: true 2374 | 2375 | /object-keys@1.1.1: 2376 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2377 | engines: {node: '>= 0.4'} 2378 | dev: true 2379 | 2380 | /object.assign@4.1.4: 2381 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2382 | engines: {node: '>= 0.4'} 2383 | dependencies: 2384 | call-bind: 1.0.2 2385 | define-properties: 1.2.0 2386 | has-symbols: 1.0.3 2387 | object-keys: 1.1.1 2388 | dev: true 2389 | 2390 | /object.entries@1.1.6: 2391 | resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} 2392 | engines: {node: '>= 0.4'} 2393 | dependencies: 2394 | call-bind: 1.0.2 2395 | define-properties: 1.2.0 2396 | es-abstract: 1.21.2 2397 | dev: true 2398 | 2399 | /object.fromentries@2.0.6: 2400 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} 2401 | engines: {node: '>= 0.4'} 2402 | dependencies: 2403 | call-bind: 1.0.2 2404 | define-properties: 1.2.0 2405 | es-abstract: 1.21.2 2406 | dev: true 2407 | 2408 | /object.hasown@1.1.2: 2409 | resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} 2410 | dependencies: 2411 | define-properties: 1.2.0 2412 | es-abstract: 1.21.2 2413 | dev: true 2414 | 2415 | /object.values@1.1.6: 2416 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 2417 | engines: {node: '>= 0.4'} 2418 | dependencies: 2419 | call-bind: 1.0.2 2420 | define-properties: 1.2.0 2421 | es-abstract: 1.21.2 2422 | dev: true 2423 | 2424 | /once@1.4.0: 2425 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2426 | dependencies: 2427 | wrappy: 1.0.2 2428 | dev: true 2429 | 2430 | /opentype.js@1.3.4: 2431 | resolution: {integrity: sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==} 2432 | engines: {node: '>= 8.0.0'} 2433 | hasBin: true 2434 | dependencies: 2435 | string.prototype.codepointat: 0.2.1 2436 | tiny-inflate: 1.0.3 2437 | 2438 | /optionator@0.9.1: 2439 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2440 | engines: {node: '>= 0.8.0'} 2441 | dependencies: 2442 | deep-is: 0.1.4 2443 | fast-levenshtein: 2.0.6 2444 | levn: 0.4.1 2445 | prelude-ls: 1.2.1 2446 | type-check: 0.4.0 2447 | word-wrap: 1.2.3 2448 | dev: true 2449 | 2450 | /p-limit@3.1.0: 2451 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2452 | engines: {node: '>=10'} 2453 | dependencies: 2454 | yocto-queue: 0.1.0 2455 | dev: true 2456 | 2457 | /p-locate@5.0.0: 2458 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2459 | engines: {node: '>=10'} 2460 | dependencies: 2461 | p-limit: 3.1.0 2462 | dev: true 2463 | 2464 | /parent-module@1.0.1: 2465 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2466 | engines: {node: '>=6'} 2467 | dependencies: 2468 | callsites: 3.1.0 2469 | dev: true 2470 | 2471 | /path-exists@4.0.0: 2472 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2473 | engines: {node: '>=8'} 2474 | dev: true 2475 | 2476 | /path-is-absolute@1.0.1: 2477 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2478 | engines: {node: '>=0.10.0'} 2479 | dev: true 2480 | 2481 | /path-key@3.1.1: 2482 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2483 | engines: {node: '>=8'} 2484 | dev: true 2485 | 2486 | /path-parse@1.0.7: 2487 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2488 | dev: true 2489 | 2490 | /picocolors@1.0.0: 2491 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2492 | dev: true 2493 | 2494 | /picomatch@2.3.1: 2495 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2496 | engines: {node: '>=8.6'} 2497 | dev: true 2498 | 2499 | /postcss@8.4.24: 2500 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} 2501 | engines: {node: ^10 || ^12 || >=14} 2502 | dependencies: 2503 | nanoid: 3.3.6 2504 | picocolors: 1.0.0 2505 | source-map-js: 1.0.2 2506 | dev: true 2507 | 2508 | /potpack@1.0.2: 2509 | resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} 2510 | 2511 | /prelude-ls@1.2.1: 2512 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2513 | engines: {node: '>= 0.8.0'} 2514 | dev: true 2515 | 2516 | /prop-types@15.8.1: 2517 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2518 | dependencies: 2519 | loose-envify: 1.4.0 2520 | object-assign: 4.1.1 2521 | react-is: 16.13.1 2522 | 2523 | /punycode@2.3.0: 2524 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 2525 | engines: {node: '>=6'} 2526 | dev: true 2527 | 2528 | /queue-microtask@1.2.3: 2529 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2530 | dev: true 2531 | 2532 | /r3f-perf@7.1.2(@react-three/fiber@8.13.3)(@types/three@0.152.1)(react-dom@18.2.0)(react@18.2.0)(three@0.153.0): 2533 | resolution: {integrity: sha512-AQ78ULjufILylHZpbgBdzk7JF3F7bceehlgOL19xtyJIDhvi4J4vwE5wpxNZ5q4PT4Oza1WADZt6KSlrkCqgkA==} 2534 | peerDependencies: 2535 | '@react-three/fiber': '>=8.0' 2536 | dom: '*' 2537 | react: '>=18.0' 2538 | react-dom: '>=18.0' 2539 | three: '>=0.133' 2540 | peerDependenciesMeta: 2541 | '@react-three/fiber': 2542 | optional: true 2543 | dom: 2544 | optional: true 2545 | react-dom: 2546 | optional: true 2547 | dependencies: 2548 | '@radix-ui/react-icons': 1.3.0(react@18.2.0) 2549 | '@react-three/drei': 9.77.0(@react-three/fiber@8.13.3)(@types/three@0.152.1)(react-dom@18.2.0)(react@18.2.0)(three@0.153.0) 2550 | '@react-three/fiber': 8.13.3(react-dom@18.2.0)(react@18.2.0)(three@0.153.0) 2551 | '@stitches/react': 1.2.8(react@18.2.0) 2552 | '@utsubo/events': 0.1.7(react@18.2.0) 2553 | react: 18.2.0 2554 | react-dom: 18.2.0(react@18.2.0) 2555 | three: 0.153.0 2556 | zustand: 4.1.5(react@18.2.0) 2557 | transitivePeerDependencies: 2558 | - '@types/three' 2559 | - immer 2560 | dev: true 2561 | 2562 | /react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): 2563 | resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} 2564 | peerDependencies: 2565 | react: '>=16.8.0' 2566 | react-dom: '>=16.8.0' 2567 | dependencies: 2568 | react: 18.2.0 2569 | react-dom: 18.2.0(react@18.2.0) 2570 | dev: false 2571 | 2572 | /react-composer@5.0.3(react@18.2.0): 2573 | resolution: {integrity: sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==} 2574 | peerDependencies: 2575 | react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 2576 | dependencies: 2577 | prop-types: 15.8.1 2578 | react: 18.2.0 2579 | 2580 | /react-dom@18.2.0(react@18.2.0): 2581 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2582 | peerDependencies: 2583 | react: ^18.2.0 2584 | dependencies: 2585 | loose-envify: 1.4.0 2586 | react: 18.2.0 2587 | scheduler: 0.23.0 2588 | 2589 | /react-dropzone@12.1.0(react@18.2.0): 2590 | resolution: {integrity: sha512-iBYHA1rbopIvtzokEX4QubO6qk5IF/x3BtKGu74rF2JkQDXnwC4uO/lHKpaw4PJIV6iIAYOlwLv2FpiGyqHNog==} 2591 | engines: {node: '>= 10.13'} 2592 | peerDependencies: 2593 | react: '>= 16.8' 2594 | dependencies: 2595 | attr-accept: 2.2.2 2596 | file-selector: 0.5.0 2597 | prop-types: 15.8.1 2598 | react: 18.2.0 2599 | dev: false 2600 | 2601 | /react-is@16.13.1: 2602 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2603 | 2604 | /react-merge-refs@1.1.0: 2605 | resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==} 2606 | 2607 | /react-reconciler@0.27.0(react@18.2.0): 2608 | resolution: {integrity: sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==} 2609 | engines: {node: '>=0.10.0'} 2610 | peerDependencies: 2611 | react: ^18.0.0 2612 | dependencies: 2613 | loose-envify: 1.4.0 2614 | react: 18.2.0 2615 | scheduler: 0.21.0 2616 | 2617 | /react-refresh@0.14.0: 2618 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} 2619 | engines: {node: '>=0.10.0'} 2620 | dev: true 2621 | 2622 | /react-use-measure@2.1.1(react-dom@18.2.0)(react@18.2.0): 2623 | resolution: {integrity: sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==} 2624 | peerDependencies: 2625 | react: '>=16.13' 2626 | react-dom: '>=16.13' 2627 | dependencies: 2628 | debounce: 1.2.1 2629 | react: 18.2.0 2630 | react-dom: 18.2.0(react@18.2.0) 2631 | 2632 | /react@18.2.0: 2633 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2634 | engines: {node: '>=0.10.0'} 2635 | dependencies: 2636 | loose-envify: 1.4.0 2637 | 2638 | /regenerator-runtime@0.13.11: 2639 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 2640 | 2641 | /regexp-to-ast@0.5.0: 2642 | resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} 2643 | 2644 | /regexp.prototype.flags@1.5.0: 2645 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} 2646 | engines: {node: '>= 0.4'} 2647 | dependencies: 2648 | call-bind: 1.0.2 2649 | define-properties: 1.2.0 2650 | functions-have-names: 1.2.3 2651 | dev: true 2652 | 2653 | /require-from-string@2.0.2: 2654 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 2655 | engines: {node: '>=0.10.0'} 2656 | 2657 | /resolve-from@4.0.0: 2658 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2659 | engines: {node: '>=4'} 2660 | dev: true 2661 | 2662 | /resolve@2.0.0-next.4: 2663 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 2664 | hasBin: true 2665 | dependencies: 2666 | is-core-module: 2.12.1 2667 | path-parse: 1.0.7 2668 | supports-preserve-symlinks-flag: 1.0.0 2669 | dev: true 2670 | 2671 | /reusify@1.0.4: 2672 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2673 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2674 | dev: true 2675 | 2676 | /rimraf@3.0.2: 2677 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2678 | hasBin: true 2679 | dependencies: 2680 | glob: 7.2.3 2681 | dev: true 2682 | 2683 | /rollup@3.25.1: 2684 | resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} 2685 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 2686 | hasBin: true 2687 | optionalDependencies: 2688 | fsevents: 2.3.2 2689 | dev: true 2690 | 2691 | /run-parallel@1.2.0: 2692 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2693 | dependencies: 2694 | queue-microtask: 1.2.3 2695 | dev: true 2696 | 2697 | /safe-regex-test@1.0.0: 2698 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2699 | dependencies: 2700 | call-bind: 1.0.2 2701 | get-intrinsic: 1.2.1 2702 | is-regex: 1.1.4 2703 | dev: true 2704 | 2705 | /scheduler@0.21.0: 2706 | resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} 2707 | dependencies: 2708 | loose-envify: 1.4.0 2709 | 2710 | /scheduler@0.23.0: 2711 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2712 | dependencies: 2713 | loose-envify: 1.4.0 2714 | 2715 | /semver@6.3.0: 2716 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2717 | hasBin: true 2718 | dev: true 2719 | 2720 | /set-value@2.0.1: 2721 | resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} 2722 | engines: {node: '>=0.10.0'} 2723 | dependencies: 2724 | extend-shallow: 2.0.1 2725 | is-extendable: 0.1.1 2726 | is-plain-object: 2.0.4 2727 | split-string: 3.1.0 2728 | dev: false 2729 | 2730 | /shebang-command@2.0.0: 2731 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2732 | engines: {node: '>=8'} 2733 | dependencies: 2734 | shebang-regex: 3.0.0 2735 | dev: true 2736 | 2737 | /shebang-regex@3.0.0: 2738 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2739 | engines: {node: '>=8'} 2740 | dev: true 2741 | 2742 | /side-channel@1.0.4: 2743 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2744 | dependencies: 2745 | call-bind: 1.0.2 2746 | get-intrinsic: 1.2.1 2747 | object-inspect: 1.12.3 2748 | dev: true 2749 | 2750 | /source-map-js@1.0.2: 2751 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2752 | engines: {node: '>=0.10.0'} 2753 | dev: true 2754 | 2755 | /split-string@3.1.0: 2756 | resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} 2757 | engines: {node: '>=0.10.0'} 2758 | dependencies: 2759 | extend-shallow: 3.0.2 2760 | dev: false 2761 | 2762 | /stats.js@0.17.0: 2763 | resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} 2764 | 2765 | /string.prototype.codepointat@0.2.1: 2766 | resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} 2767 | 2768 | /string.prototype.matchall@4.0.8: 2769 | resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} 2770 | dependencies: 2771 | call-bind: 1.0.2 2772 | define-properties: 1.2.0 2773 | es-abstract: 1.21.2 2774 | get-intrinsic: 1.2.1 2775 | has-symbols: 1.0.3 2776 | internal-slot: 1.0.5 2777 | regexp.prototype.flags: 1.5.0 2778 | side-channel: 1.0.4 2779 | dev: true 2780 | 2781 | /string.prototype.trim@1.2.7: 2782 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} 2783 | engines: {node: '>= 0.4'} 2784 | dependencies: 2785 | call-bind: 1.0.2 2786 | define-properties: 1.2.0 2787 | es-abstract: 1.21.2 2788 | dev: true 2789 | 2790 | /string.prototype.trimend@1.0.6: 2791 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 2792 | dependencies: 2793 | call-bind: 1.0.2 2794 | define-properties: 1.2.0 2795 | es-abstract: 1.21.2 2796 | dev: true 2797 | 2798 | /string.prototype.trimstart@1.0.6: 2799 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 2800 | dependencies: 2801 | call-bind: 1.0.2 2802 | define-properties: 1.2.0 2803 | es-abstract: 1.21.2 2804 | dev: true 2805 | 2806 | /strip-ansi@6.0.1: 2807 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2808 | engines: {node: '>=8'} 2809 | dependencies: 2810 | ansi-regex: 5.0.1 2811 | dev: true 2812 | 2813 | /strip-json-comments@3.1.1: 2814 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2815 | engines: {node: '>=8'} 2816 | dev: true 2817 | 2818 | /supports-color@5.5.0: 2819 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2820 | engines: {node: '>=4'} 2821 | dependencies: 2822 | has-flag: 3.0.0 2823 | dev: true 2824 | 2825 | /supports-color@7.2.0: 2826 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2827 | engines: {node: '>=8'} 2828 | dependencies: 2829 | has-flag: 4.0.0 2830 | dev: true 2831 | 2832 | /supports-preserve-symlinks-flag@1.0.0: 2833 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2834 | engines: {node: '>= 0.4'} 2835 | dev: true 2836 | 2837 | /suspend-react@0.1.3(react@18.2.0): 2838 | resolution: {integrity: sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==} 2839 | peerDependencies: 2840 | react: '>=17.0' 2841 | dependencies: 2842 | react: 18.2.0 2843 | 2844 | /text-table@0.2.0: 2845 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2846 | dev: true 2847 | 2848 | /three-mesh-bvh@0.6.0(three@0.153.0): 2849 | resolution: {integrity: sha512-4/oXeqVMLuN9/P0M3L5ezIVrFiXQXKvjVTErkiSYMjSaPoWfNPAwqulSgLf4bIUPn8/Lq3rmIJwxbCuD8qDobA==} 2850 | peerDependencies: 2851 | three: '>= 0.151.0' 2852 | dependencies: 2853 | three: 0.153.0 2854 | 2855 | /three-stdlib@2.23.10(three@0.153.0): 2856 | resolution: {integrity: sha512-y0DlxaN5HZXI9hKjEtqO2xlCEt7XyDCOMvD2M3JJFBmYjwbU+PbJ1n3Z+7Hr/6BeVGE6KZYcqPMnfKrTK5WTJg==} 2857 | peerDependencies: 2858 | three: '>=0.128.0' 2859 | dependencies: 2860 | '@types/draco3d': 1.4.2 2861 | '@types/offscreencanvas': 2019.7.0 2862 | '@types/webxr': 0.5.2 2863 | chevrotain: 10.5.0 2864 | draco3d: 1.5.6 2865 | fflate: 0.6.10 2866 | ktx-parse: 0.4.5 2867 | mmd-parser: 1.0.4 2868 | opentype.js: 1.3.4 2869 | potpack: 1.0.2 2870 | three: 0.153.0 2871 | zstddec: 0.0.2 2872 | 2873 | /three@0.153.0: 2874 | resolution: {integrity: sha512-OCP2/uQR6GcDpSLnJt/3a4mdS0kNWcbfUXIwLoEMgLzEUIVIYsSDwskpmOii/AkDM+BBwrl6+CKgrjX9+E2aWg==} 2875 | 2876 | /tiny-inflate@1.0.3: 2877 | resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} 2878 | 2879 | /to-fast-properties@2.0.0: 2880 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2881 | engines: {node: '>=4'} 2882 | dev: true 2883 | 2884 | /troika-three-text@0.47.2(three@0.153.0): 2885 | resolution: {integrity: sha512-qylT0F+U7xGs+/PEf3ujBdJMYWbn0Qci0kLqI5BJG2kW1wdg4T1XSxneypnF05DxFqJhEzuaOR9S2SjiyknMng==} 2886 | peerDependencies: 2887 | three: '>=0.125.0' 2888 | dependencies: 2889 | bidi-js: 1.0.2 2890 | three: 0.153.0 2891 | troika-three-utils: 0.47.2(three@0.153.0) 2892 | troika-worker-utils: 0.47.2 2893 | webgl-sdf-generator: 1.1.1 2894 | 2895 | /troika-three-utils@0.47.2(three@0.153.0): 2896 | resolution: {integrity: sha512-/28plhCxfKtH7MSxEGx8e3b/OXU5A0xlwl+Sbdp0H8FXUHKZDoksduEKmjQayXYtxAyuUiCRunYIv/8Vi7aiyg==} 2897 | peerDependencies: 2898 | three: '>=0.125.0' 2899 | dependencies: 2900 | three: 0.153.0 2901 | 2902 | /troika-worker-utils@0.47.2: 2903 | resolution: {integrity: sha512-mzss4MeyzUkYBppn4x5cdAqrhBHFEuVmMMgLMTyFV23x6GvQMyo+/R5E5Lsbrt7WSt5RfvewjcwD1DChRTA9lA==} 2904 | 2905 | /tslib@2.5.3: 2906 | resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} 2907 | dev: false 2908 | 2909 | /type-check@0.4.0: 2910 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2911 | engines: {node: '>= 0.8.0'} 2912 | dependencies: 2913 | prelude-ls: 1.2.1 2914 | dev: true 2915 | 2916 | /type-fest@0.20.2: 2917 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2918 | engines: {node: '>=10'} 2919 | dev: true 2920 | 2921 | /typed-array-length@1.0.4: 2922 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 2923 | dependencies: 2924 | call-bind: 1.0.2 2925 | for-each: 0.3.3 2926 | is-typed-array: 1.1.10 2927 | dev: true 2928 | 2929 | /unbox-primitive@1.0.2: 2930 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2931 | dependencies: 2932 | call-bind: 1.0.2 2933 | has-bigints: 1.0.2 2934 | has-symbols: 1.0.3 2935 | which-boxed-primitive: 1.0.2 2936 | dev: true 2937 | 2938 | /update-browserslist-db@1.0.11(browserslist@4.21.9): 2939 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 2940 | hasBin: true 2941 | peerDependencies: 2942 | browserslist: '>= 4.21.0' 2943 | dependencies: 2944 | browserslist: 4.21.9 2945 | escalade: 3.1.1 2946 | picocolors: 1.0.0 2947 | dev: true 2948 | 2949 | /uri-js@4.4.1: 2950 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2951 | dependencies: 2952 | punycode: 2.3.0 2953 | dev: true 2954 | 2955 | /use-sync-external-store@1.2.0(react@18.2.0): 2956 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} 2957 | peerDependencies: 2958 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 2959 | dependencies: 2960 | react: 18.2.0 2961 | dev: true 2962 | 2963 | /utility-types@3.10.0: 2964 | resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} 2965 | engines: {node: '>= 4'} 2966 | 2967 | /v8n@1.5.1: 2968 | resolution: {integrity: sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==} 2969 | dev: false 2970 | 2971 | /vite-plugin-glsl@1.1.2(vite@4.3.9): 2972 | resolution: {integrity: sha512-zmXsfc1vn2MlYve9t3FAoWuhLyoCkNS1TuQL+TkXZL7tGmBjRErp10eNYxcse5tK9oUC5MyJpNc4ElpQnx8DoA==} 2973 | engines: {node: '>= 16.15.1', npm: '>= 8.11.0'} 2974 | peerDependencies: 2975 | vite: ^3.0.0 || ^4.0.0 2976 | dependencies: 2977 | '@rollup/pluginutils': 5.0.2 2978 | vite: 4.3.9 2979 | transitivePeerDependencies: 2980 | - rollup 2981 | dev: true 2982 | 2983 | /vite@4.3.9: 2984 | resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} 2985 | engines: {node: ^14.18.0 || >=16.0.0} 2986 | hasBin: true 2987 | peerDependencies: 2988 | '@types/node': '>= 14' 2989 | less: '*' 2990 | sass: '*' 2991 | stylus: '*' 2992 | sugarss: '*' 2993 | terser: ^5.4.0 2994 | peerDependenciesMeta: 2995 | '@types/node': 2996 | optional: true 2997 | less: 2998 | optional: true 2999 | sass: 3000 | optional: true 3001 | stylus: 3002 | optional: true 3003 | sugarss: 3004 | optional: true 3005 | terser: 3006 | optional: true 3007 | dependencies: 3008 | esbuild: 0.17.19 3009 | postcss: 8.4.24 3010 | rollup: 3.25.1 3011 | optionalDependencies: 3012 | fsevents: 2.3.2 3013 | dev: true 3014 | 3015 | /webgl-constants@1.1.1: 3016 | resolution: {integrity: sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==} 3017 | 3018 | /webgl-sdf-generator@1.1.1: 3019 | resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} 3020 | 3021 | /which-boxed-primitive@1.0.2: 3022 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3023 | dependencies: 3024 | is-bigint: 1.0.4 3025 | is-boolean-object: 1.1.2 3026 | is-number-object: 1.0.7 3027 | is-string: 1.0.7 3028 | is-symbol: 1.0.4 3029 | dev: true 3030 | 3031 | /which-typed-array@1.1.9: 3032 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 3033 | engines: {node: '>= 0.4'} 3034 | dependencies: 3035 | available-typed-arrays: 1.0.5 3036 | call-bind: 1.0.2 3037 | for-each: 0.3.3 3038 | gopd: 1.0.1 3039 | has-tostringtag: 1.0.0 3040 | is-typed-array: 1.1.10 3041 | dev: true 3042 | 3043 | /which@2.0.2: 3044 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3045 | engines: {node: '>= 8'} 3046 | hasBin: true 3047 | dependencies: 3048 | isexe: 2.0.0 3049 | dev: true 3050 | 3051 | /word-wrap@1.2.3: 3052 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3053 | engines: {node: '>=0.10.0'} 3054 | dev: true 3055 | 3056 | /wrappy@1.0.2: 3057 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3058 | dev: true 3059 | 3060 | /yallist@3.1.1: 3061 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3062 | dev: true 3063 | 3064 | /yocto-queue@0.1.0: 3065 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3066 | engines: {node: '>=10'} 3067 | dev: true 3068 | 3069 | /zstddec@0.0.2: 3070 | resolution: {integrity: sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==} 3071 | 3072 | /zustand@3.7.2(react@18.2.0): 3073 | resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} 3074 | engines: {node: '>=12.7.0'} 3075 | peerDependencies: 3076 | react: '>=16.8' 3077 | peerDependenciesMeta: 3078 | react: 3079 | optional: true 3080 | dependencies: 3081 | react: 18.2.0 3082 | 3083 | /zustand@4.1.5(react@18.2.0): 3084 | resolution: {integrity: sha512-PsdRT8Bvq22Yyh1tvpgdHNE7OAeFKqJXUxtJvj1Ixw2B9O2YZ1M34ImQ+xyZah4wZrR4lENMoDUutKPpyXCQ/Q==} 3085 | engines: {node: '>=12.7.0'} 3086 | peerDependencies: 3087 | immer: '>=9.0' 3088 | react: '>=16.8' 3089 | peerDependenciesMeta: 3090 | immer: 3091 | optional: true 3092 | react: 3093 | optional: true 3094 | dependencies: 3095 | react: 18.2.0 3096 | use-sync-external-store: 1.2.0(react@18.2.0) 3097 | dev: true 3098 | -------------------------------------------------------------------------------- /src/App.jsx: -------------------------------------------------------------------------------- 1 | import { Canvas } from "@react-three/fiber"; 2 | import { OrbitControls } from "@react-three/drei"; 3 | 4 | 5 | import Blob from "./Blob/Blob"; 6 | 7 | function App() { 8 | 9 | return ( 10 | 11 | 12 | 13 | 14 | ); 15 | } 16 | export default App; 17 | -------------------------------------------------------------------------------- /src/Blob/Blob.jsx: -------------------------------------------------------------------------------- 1 | import { useRef } from "react"; 2 | import { extend, useFrame } from "@react-three/fiber"; 3 | import { shaderMaterial } from "@react-three/drei"; 4 | import { useControls } from "leva"; 5 | import * as THREE from 'three'; 6 | import vertex from "./vertex.glsl"; 7 | import fragment from "./fragment.glsl"; 8 | 9 | 10 | const BlobMaterial = shaderMaterial( 11 | { u_time: 0.0, u_morph_sphere: 0.5, u_morph_cube: 0.5, u_morph_torus: 0.5 }, 12 | vertex, 13 | fragment 14 | ); 15 | extend( { BlobMaterial } ) 16 | 17 | 18 | function Blob () { 19 | 20 | const shaderMaterial = useRef() 21 | 22 | const { sphereMorph, cubeMorph, torusMorph } = useControls(' Morph! ', { 23 | sphereMorph: { value: 0.5, step: 0.05, max: 1.0, min: 0.0 }, 24 | cubeMorph: { value: 0.5, step: 0.05, max: 1.0, min: 0.0 }, 25 | torusMorph: { value: 0.5, step: 0.05, max: 1.0, min: 0.0 }, 26 | }) 27 | 28 | useFrame((state, delta) => { 29 | shaderMaterial.current.u_time = state.clock.elapsedTime 30 | 31 | shaderMaterial.current.u_morph_sphere = sphereMorph 32 | shaderMaterial.current.u_morph_cube = cubeMorph 33 | shaderMaterial.current.u_morph_torus = torusMorph 34 | }) 35 | 36 | return ( 37 | 38 | 39 | 40 | 41 | ) 42 | } 43 | export default Blob 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/Blob/fragment.glsl: -------------------------------------------------------------------------------- 1 | #define PI 3.14 2 | 3 | varying vec3 v_ray_dir; 4 | varying vec3 v_ray_origin; 5 | 6 | uniform float u_time; 7 | uniform float u_morph_sphere; 8 | uniform float u_morph_cube; 9 | uniform float u_morph_torus; 10 | 11 | const int MAX_STEPS = 50; 12 | const float EPSILON = 0.001; 13 | 14 | float opSmoothUnion( float d1, float d2, float k ) { 15 | float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 ); 16 | return mix( d2, d1, h ) - k*h*(1.0-h); 17 | } 18 | 19 | float opSmoothSubtraction( float d1, float d2, float k ) { 20 | float h = clamp( 0.5 - 0.5*(d2+d1)/k, 0.0, 1.0 ); 21 | return mix( d2, -d1, h ) + k*h*(1.0-h); 22 | } 23 | 24 | 25 | float sphereSDF( vec3 p, float sRadius ) { 26 | return length(p) - sRadius; 27 | } 28 | 29 | float roundBoxSDF( vec3 p, vec3 b, float r ) { 30 | vec3 q = (abs(p) - b); 31 | return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0) - r; 32 | } 33 | 34 | float boxFrameSDF( vec3 p, vec3 b, float e ){ 35 | p = abs(p )-b; 36 | vec3 q = abs(p+e)-e; 37 | return min(min( 38 | length(max(vec3(p.x,q.y,q.z),0.0))+min(max(p.x,max(q.y,q.z)),0.0), 39 | length(max(vec3(q.x,p.y,q.z),0.0))+min(max(q.x,max(p.y,q.z)),0.0)), 40 | length(max(vec3(q.x,q.y,p.z),0.0))+min(max(q.x,max(q.y,p.z)),0.0) 41 | ); 42 | } 43 | 44 | float torusSDF( vec3 p, vec2 t ){ 45 | vec2 q = vec2(length(p.xz)-t.x,p.y); 46 | return length(q)-t.y; 47 | } 48 | 49 | float sceneSDF( vec3 samplePos ) { 50 | 51 | float frame = boxFrameSDF( samplePos, vec3( 0.5 ), 0.02 ); 52 | float sphere = sphereSDF( vec3(samplePos.x + sin(u_time * PI * 0.33), samplePos.y, samplePos.z), 0.1 ); 53 | float box = roundBoxSDF( vec3(samplePos.x, samplePos.y + sin(u_time * PI * 0.214), samplePos.z), vec3( 0.1 ), 0.0 ); 54 | float torus = torusSDF( vec3(samplePos.x, samplePos.y, samplePos.z + sin(u_time * PI * 0.125)), vec2(0.1, 0.05) ); 55 | 56 | float s1 = opSmoothUnion( frame, sphere, u_morph_sphere ); 57 | float s2 = opSmoothUnion( s1, box, u_morph_cube ); 58 | float s3 = opSmoothUnion( s2, torus, u_morph_torus ); 59 | 60 | return s3; 61 | } 62 | 63 | vec3 estimateNormal( vec3 p ) { 64 | return normalize(vec3( 65 | sceneSDF(vec3(p.x + EPSILON, p.y, p.z)) - sceneSDF(vec3(p.x - EPSILON, p.y, p.z)), 66 | sceneSDF(vec3(p.x, p.y + EPSILON, p.z)) - sceneSDF(vec3(p.x, p.y - EPSILON, p.z)), 67 | sceneSDF(vec3(p.x, p.y, p.z + EPSILON)) - sceneSDF(vec3(p.x, p.y, p.z - EPSILON)) 68 | )); 69 | } 70 | 71 | vec3 toonShade ( vec3 pos ) { 72 | vec3 n = estimateNormal( pos ); 73 | float NdotL = dot( n, vec3( 0.0, 0.0, -1.0 ) ); 74 | float lightIntensity = smoothstep( 0.0, 0.08, NdotL ); 75 | return vec3(pos.z, pos.z, pos.x) * lightIntensity; 76 | } 77 | 78 | vec4 rayMarchSDF( vec3 rayOrigin, vec3 rayDir ){ 79 | 80 | vec3 col = vec3( 0.0 ); 81 | float alpha = 0.0; 82 | float dist = 0.0; 83 | 84 | for ( int i = 0; i < MAX_STEPS; i++ ){ 85 | vec3 samplePos = rayOrigin + ( rayDir * dist ); 86 | float sdf = sceneSDF( samplePos ); 87 | 88 | if ( sdf < EPSILON ) { 89 | 90 | col = toonShade( samplePos ) + vec3( 1.0, 0.2, 0.6 ); 91 | alpha = 1.0; 92 | return vec4 ( col, alpha ); 93 | } 94 | 95 | dist += sdf; 96 | } 97 | 98 | 99 | return vec4( col, alpha ); 100 | } 101 | 102 | void main () { 103 | 104 | vec3 rayOrigin = v_ray_origin; 105 | vec3 rayDir = normalize(v_ray_dir); 106 | 107 | vec4 color = rayMarchSDF( rayOrigin, rayDir ); 108 | gl_FragColor = color; 109 | } -------------------------------------------------------------------------------- /src/Blob/vertex.glsl: -------------------------------------------------------------------------------- 1 | varying vec3 v_ray_dir; 2 | varying vec3 v_ray_origin; 3 | 4 | void main() { 5 | 6 | // local space ray 7 | v_ray_origin = vec3( inverse( modelMatrix ) * vec4( cameraPosition, 1.0 ) ).xyz; 8 | v_ray_dir = position - v_ray_origin; 9 | 10 | vec4 worldPosition = modelMatrix * vec4( position, 1.0 ); 11 | 12 | // world space ray 13 | // v_ray_dir = worldPosition.xyz - cameraPosition; 14 | 15 | vec4 viewPosition = viewMatrix * vec4(position, 1.0); 16 | gl_Position = projectionMatrix * viewPosition; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | height: 100%; 3 | margin: 0; 4 | 5 | background-color: rgb(20, 20, 20); 6 | } 7 | 8 | #root { 9 | height: inherit; 10 | } -------------------------------------------------------------------------------- /src/main.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App.jsx' 4 | import './index.css' 5 | 6 | ReactDOM.createRoot(document.getElementById('root')).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | import glsl from 'vite-plugin-glsl'; 4 | 5 | // https://vitejs.dev/config/ 6 | export default defineConfig({ 7 | plugins: [react(), glsl()], 8 | }) 9 | --------------------------------------------------------------------------------