├── .gitignore ├── .prettierrc ├── LICENSE.md ├── README.md ├── assets └── hero-screenshot.png ├── example ├── README.md ├── index.html ├── package.json ├── public │ ├── game_boy_classic.glb │ ├── textures │ │ ├── wood_cabinet_worn_long_ao_2k.jpg │ │ ├── wood_cabinet_worn_long_diff_2k.jpg │ │ ├── wood_cabinet_worn_long_nor_gl_2k.jpg │ │ └── wood_cabinet_worn_long_rough_2k.jpg │ └── vite.svg ├── src │ ├── App.tsx │ ├── Controls.js │ ├── Model.jsx │ ├── Tag.jsx │ ├── index.css │ ├── index.js │ ├── main.tsx │ └── vite-env.d.ts ├── tsconfig.json └── vite.config.ts ├── package.json ├── package ├── package.json ├── src │ ├── Pass.ts │ ├── Pathtracer.tsx │ ├── index.ts │ └── types.ts ├── tsconfig.json └── vite.config.ts ├── tsconfig.json └── yarn.lock /.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 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "none", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": false 6 | } 7 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Poimandres 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |

react-three-gpu-pathtracer

4 |

⚡️ A React abstraction for the popular three-gpu-pathtracer

5 | 6 |
7 | 8 |

9 | 10 |

11 |

12 | This demo is real, you can click it! It contains full code, too. 📦 13 |

14 |

15 | GameBoy model by 16 | (@kleingeo) 17 | 18 | on Sketchfab 19 | 20 | . GameBoy Cartridge by 21 | (@MeBob) 22 | 23 | on Sketchfab 24 | 25 | . 26 |

27 | 28 |
29 | 30 |

31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | Chat on Twitter 39 | 40 | 41 | Chat on Twitter 42 | 43 |

44 | 45 |
46 | 47 | `react-three-gpu-pathtracer` lets you render your `react-three-fiber` scenes using Path Tracing! It is as simple as 48 | 49 | ```jsx 50 | import { Pathtracer } from "@react-three/gpu-pathtracer"; 51 | 52 | function GradientSphere() { 53 | return ( 54 | 55 | {/* Your scene */} 56 | 57 | ); 58 | } 59 | ``` 60 | 61 | The `` component wraps your scene. The scene is then rendered using Path Tracing. 62 | 63 | #### Props 64 | 65 | | Prop | Type | Default | Description | 66 | | ------------ | ---------------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- | 67 | | `minSamples` | `number` | `1` | Default: 5. Min number of samples before blending the base scene with the pathtraced one. | 68 | | `samples` | `number` | `1` | Max number of samples before the pathtracer stops. | 69 | | `frames` | `number` | `Infinity` | Number of frames to path trace. Will pause rendering once this number is reached. | 70 | | `tiles` | `[number, number] / THREE.Vector2 / { x: number; y: number } / number` | `2` | Number of tiles. Can be used to improve the responsiveness of a page while still rendering a high resolution target. | 71 | | `bounces` | `number` | `1` | The number of ray bounces to test. Higher is better quality but slower performance. | 72 | | `enabled` | `boolean` | `true` | Wether to enable pathtracing. | 73 | 74 | ### Env maps 75 | 76 | Env maps can be added using [Drei's ``](https://github.com/pmndrs/drei#environment) component just like in a regular scene. 77 | 78 | ```jsx 79 | 80 | 86 | 87 | ``` 88 | 89 | ### `usePathtracer` 90 | 91 | This hook provides access to useful functions in the internal renderer. Can only be used within the `` component. 92 | 93 | ```ts 94 | const { renderer, update, reset } = usePathtracer(); 95 | ``` 96 | 97 | | Return value | Type | Description | 98 | | -------------- | ----------------- | ------------------------------------------------------------------------------------------- | 99 | | `pathtracer` | `WebGLPathTracer` | Internal renderer. Can be used to access/edit internal properties | 100 | | ~~`renderer`~~ | `WebGLPathTracer` | DEPRECIATED: use `pathtracer` to not get confused with raster renderer | 101 | | `reset` | `() => void` | Flushes the rendered scene and resets the samples count. | 102 | | `update` | `() => void` | Tells the pathtracer that the scene has been updated. Everything is managed internally now. | 103 | 104 | ### Note on controls 105 | 106 | When you set controls be sure to use `makeDefault` and it's best to import the `OrbitControls` [from drei](https://drei.docs.pmnd.rs/controls/introduction) 107 | 108 | ```jsx 109 | 110 | // ... 111 | ``` 112 | 113 | ### Development 114 | 115 | #### Dev 116 | 117 | ```bash 118 | cd project-root 119 | yarn 120 | yarn dev 121 | ``` 122 | 123 | #### Build 124 | 125 | ```bash 126 | yarn build 127 | ``` 128 | 129 | #### Publish 130 | 131 | ```bash 132 | cd package 133 | npm run release 134 | ``` 135 | -------------------------------------------------------------------------------- /assets/hero-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-gpu-pathtracer/967420805c238da5a1d5cd7d4b9c886cee65beef/assets/hero-screenshot.png -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |

react-three-gpu-pathtracer

4 |

⚡️ A React abstraction for the popular three-gpu-pathtracer

5 | 6 | --- 7 | 8 |

Example

9 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | @react-three/gpu-pathtracer | Example 12 | 13 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@react-three/gpu-pathtracer-example", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc -b && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@pmndrs/branding": "^0.0.8", 13 | "@react-three/drei": "^9.114.0", 14 | "@react-three/fiber": "^8.17.8", 15 | "@react-three/gpu-pathtracer": "^0.1.1", 16 | "leva": "^0.9.35", 17 | "react": "^18.3.1", 18 | "react-dom": "^18.3.1", 19 | "react-icons": "^5.3.0", 20 | "three": "^0.169.0" 21 | }, 22 | "devDependencies": { 23 | "@types/node": "^22.5.5", 24 | "@types/react": "^18.3.3", 25 | "@types/react-dom": "^18.3.0", 26 | "@vitejs/plugin-react": "^4.3.1", 27 | "globals": "^15.9.0", 28 | "typescript": "^5.5.3", 29 | "vite": "^5.4.1" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /example/public/game_boy_classic.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-gpu-pathtracer/967420805c238da5a1d5cd7d4b9c886cee65beef/example/public/game_boy_classic.glb -------------------------------------------------------------------------------- /example/public/textures/wood_cabinet_worn_long_ao_2k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-gpu-pathtracer/967420805c238da5a1d5cd7d4b9c886cee65beef/example/public/textures/wood_cabinet_worn_long_ao_2k.jpg -------------------------------------------------------------------------------- /example/public/textures/wood_cabinet_worn_long_diff_2k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-gpu-pathtracer/967420805c238da5a1d5cd7d4b9c886cee65beef/example/public/textures/wood_cabinet_worn_long_diff_2k.jpg -------------------------------------------------------------------------------- /example/public/textures/wood_cabinet_worn_long_nor_gl_2k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-gpu-pathtracer/967420805c238da5a1d5cd7d4b9c886cee65beef/example/public/textures/wood_cabinet_worn_long_nor_gl_2k.jpg -------------------------------------------------------------------------------- /example/public/textures/wood_cabinet_worn_long_rough_2k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pmndrs/react-three-gpu-pathtracer/967420805c238da5a1d5cd7d4b9c886cee65beef/example/public/textures/wood_cabinet_worn_long_rough_2k.jpg -------------------------------------------------------------------------------- /example/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/src/App.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | Bounds, 3 | Center, 4 | Circle, 5 | Environment, 6 | OrbitControls, 7 | PerspectiveCamera, 8 | Stats, 9 | useTexture 10 | } from "@react-three/drei"; 11 | import { Canvas, useFrame } from "@react-three/fiber"; 12 | import { Pathtracer, usePathtracer } from "@react-three/gpu-pathtracer"; 13 | import { Leva } from "leva"; 14 | import { useEffect, useRef } from "react"; 15 | 16 | import Controls from "./Controls"; 17 | 18 | import { ACESFilmicToneMapping, MathUtils } from "three"; 19 | import Model from "./Model"; 20 | import Tag from "./Tag"; 21 | 22 | const baseURL = import.meta.env.BASE_URL; 23 | 24 | function Floor() { 25 | const [aoMap, diffMap, norMap, roughMap] = useTexture([ 26 | baseURL + "/textures/wood_cabinet_worn_long_ao_2k.jpg", 27 | baseURL + "/textures/wood_cabinet_worn_long_diff_2k.jpg", 28 | baseURL + "/textures/wood_cabinet_worn_long_nor_gl_2k.jpg", 29 | baseURL + "/textures/wood_cabinet_worn_long_rough_2k.jpg" 30 | ]); 31 | 32 | return ( 33 | <> 34 | 35 | 36 | 37 | 38 | ); 39 | } 40 | 41 | function UI({ infoRef }) { 42 | const { pathtracer } = usePathtracer(); 43 | const opts = Controls(); 44 | 45 | useFrame(() => { 46 | if (pathtracer && infoRef.current) { 47 | infoRef.current.children[0].textContent = `Samples: ${Math.ceil( 48 | // @ts-ignore 49 | pathtracer.samples 50 | )}/${opts.Rendering_Samples}`; 51 | 52 | // @ts-ignore 53 | infoRef.current.children[1].textContent = pathtracer.isCompiling 54 | ? `Initializing...` 55 | : ""; 56 | } 57 | }); 58 | 59 | return null; 60 | } 61 | 62 | function Thing() { 63 | const { reset, update } = usePathtracer(); 64 | const opts = Controls(); 65 | 66 | // Trigger updates when envmap stuff changes 67 | useEffect(() => { 68 | update(); 69 | }, [ 70 | opts.Environment_Visible, 71 | opts.Environment_Preset, 72 | opts.Environment_Intensity, 73 | opts.Environment_Blur 74 | ]); 75 | 76 | return ( 77 | <> 78 | 79 | 80 |
81 | 82 | 83 | 84 |
85 |
86 | 87 |
88 | 89 | ); 90 | } 91 | 92 | export default function App() { 93 | const infoRef = useRef(); 94 | const opts = Controls(); 95 | 96 | return ( 97 | <> 98 | 104 | 109 | 110 | 111 | 112 | 119 | {opts.Environment_Visible ? ( 120 | 126 | ) : ( 127 | 128 | )} 129 | 130 | 131 | 132 | 133 | 134 | 135 |
136 |

Samples: 0

137 |

Initializing...

138 |
139 | 140 | 141 | ); 142 | } 143 | -------------------------------------------------------------------------------- /example/src/Controls.js: -------------------------------------------------------------------------------- 1 | import { presetsObj } from "@react-three/drei/helpers/environment-assets"; 2 | import { folder, useControls } from "leva"; 3 | 4 | export default function Controls() { 5 | return useControls({ 6 | Rendering: folder({ 7 | Rendering_Factor: { 8 | value: 1, 9 | max: 1, 10 | min: 0, 11 | step: 0.01, 12 | label: "Resolution Factor" 13 | }, 14 | Rendering_Samples: { 15 | value: 128, 16 | max: 512, 17 | min: 1, 18 | step: 1, 19 | label: "Samples" 20 | }, 21 | Rendering_Bounces: { 22 | value: 8, 23 | max: 20, 24 | min: 1, 25 | step: 1, 26 | label: "Bounces" 27 | }, 28 | Rendering_Tiles: { 29 | value: { 30 | x: 2, 31 | y: 2 32 | }, 33 | max: 20, 34 | min: 1, 35 | step: 1, 36 | label: "Tiles", 37 | joystick: false 38 | }, 39 | Rendering_Enabled: { 40 | value: true, 41 | label: "Enabled" 42 | } 43 | }), 44 | Environment: folder({ 45 | Environment_Visible: { 46 | value: true, 47 | label: "Enabled" 48 | }, 49 | Environment_Preset: { 50 | options: Object.keys(presetsObj), 51 | value: "apartment", 52 | label: "Preset" 53 | }, 54 | Environment_Intensity: { 55 | value: 1.2, 56 | max: 10, 57 | min: 0, 58 | step: 0.01, 59 | label: "Intensity" 60 | }, 61 | Environment_Blur: { 62 | value: 0.3, 63 | max: 1, 64 | min: 0, 65 | step: 0.01, 66 | label: "Blur" 67 | } 68 | }) 69 | }); 70 | } 71 | -------------------------------------------------------------------------------- /example/src/Model.jsx: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | */ 4 | 5 | import { useGLTF } from "@react-three/drei"; 6 | import { useLayoutEffect } from "react"; 7 | import { MeshPhysicalMaterial } from "three"; 8 | 9 | export default function Model(props) { 10 | const { scene } = useGLTF(import.meta.env.BASE_URL + "game_boy_classic.glb"); 11 | 12 | useLayoutEffect(() => { 13 | convertOpacityToTransmission(scene); 14 | }, []); 15 | 16 | return ; 17 | } 18 | 19 | function convertOpacityToTransmission(model) { 20 | model.traverse((c) => { 21 | if (c.material) { 22 | const material = c.material; 23 | if (material.opacity < 0.65 && material.opacity > 0.2) { 24 | const newMaterial = new MeshPhysicalMaterial(); 25 | for (const key in material) { 26 | if (key in material) { 27 | if (material[key] === null) { 28 | continue; 29 | } 30 | 31 | if (material[key].isTexture) { 32 | newMaterial[key] = material[key]; 33 | } else if ( 34 | material[key].copy && 35 | material[key].constructor === newMaterial[key].constructor 36 | ) { 37 | newMaterial[key].copy(material[key]); 38 | } else if (typeof material[key] === "number") { 39 | newMaterial[key] = material[key]; 40 | } 41 | } 42 | } 43 | 44 | newMaterial.opacity = 1.0; 45 | newMaterial.transmission = 1.0; 46 | c.material = newMaterial; 47 | } 48 | } 49 | }); 50 | } 51 | -------------------------------------------------------------------------------- /example/src/Tag.jsx: -------------------------------------------------------------------------------- 1 | import { Logo } from "@pmndrs/branding"; 2 | import { FaGithub } from "react-icons/fa"; 3 | 4 | export default function Tag() { 5 | return ( 6 |
7 | 17 | @react-three/gpu-pathtracer 18 | {" "} 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 31 |
40 | 41 | 46 | @react-three/gpu-pathtracer 47 | {" "} 48 | is a React port of{" "} 49 | 54 | three-gpu-pathtracer 55 | {" "} 56 | by{" "} 57 | 62 | Garrett Johnson 63 | 64 | 65 | 66 | GameBoy model by{" "} 67 | (@kleingeo){" "} 68 | 69 | on Sketchfab 70 | 71 | . GameBoy Cartridge by{" "} 72 | (@MeBob){" "} 73 | 74 | on Sketchfab 75 | 76 | . 77 | 78 |
79 |
80 | 81 | 86 | 87 | 88 | 89 |
90 |
91 | ); 92 | } 93 | -------------------------------------------------------------------------------- /example/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 4 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 12 | monospace; 13 | } 14 | 15 | #root, 16 | body, 17 | canvas { 18 | width: 100vw; 19 | height: 100vh; 20 | overflow: hidden; 21 | margin: 0; 22 | background: linear-gradient(180deg, #2a1303 0%, #000000 100%); 23 | } 24 | 25 | canvas { 26 | cursor: grab; 27 | cursor: -moz-grab; 28 | cursor: -webkit-grab; 29 | } 30 | 31 | canvas:active { 32 | cursor: grabbing; 33 | cursor: -moz-grabbing; 34 | cursor: -webkit-grabbing; 35 | } 36 | 37 | .copy { 38 | position: absolute; 39 | bottom: 0; 40 | right: 0; 41 | width: 100%; 42 | box-sizing: border-box; 43 | padding: 32px; 44 | color: white; 45 | text-align: center; 46 | 47 | display: flex; 48 | flex-direction: column; 49 | justify-content: center; 50 | align-items: center; 51 | gap: 0.25rem; 52 | 53 | pointer-events: none; 54 | 55 | background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, #000000 80%); 56 | } 57 | 58 | .copy > div { 59 | width: 100%; 60 | display: flex; 61 | flex-direction: row; 62 | justify-content: space-between; 63 | align-items: center; 64 | gap: 1rem; 65 | } 66 | 67 | .copy svg { 68 | width: 1.5rem; 69 | fill: white; 70 | } 71 | 72 | a { 73 | font-style: italic; 74 | color: #ffbe33; 75 | font-weight: bold; 76 | text-decoration: none; 77 | pointer-events: all; 78 | } 79 | 80 | /* .copy span a svg { 81 | margin-right: 16px; 82 | } */ 83 | 84 | .info { 85 | position: absolute; 86 | top: 50px; 87 | left: 0; 88 | 89 | padding: 0.25rem; 90 | 91 | color: white; 92 | font-family: monospace; 93 | } 94 | 95 | .info p { 96 | margin: 0; 97 | } 98 | -------------------------------------------------------------------------------- /example/src/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | const root = ReactDOM.createRoot(document.getElementById("root")); 7 | root.render( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /example/src/main.tsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from "react"; 2 | import { createRoot } from "react-dom/client"; 3 | import App from "./App.tsx"; 4 | import "./index.css"; 5 | 6 | createRoot(document.getElementById("root")!).render( 7 | 8 | 9 | 10 | ); 11 | -------------------------------------------------------------------------------- /example/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "useDefineForClassFields": true, 5 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | "jsx": "react-jsx", 16 | 17 | /* Linting */ 18 | "strict": false, 19 | "allowJs": true, 20 | 21 | "preserveSymlinks": true, 22 | "paths": { 23 | "@react-three/gpu-pathtracer": ["../package/src"] 24 | } 25 | }, 26 | "include": ["src"] 27 | } 28 | -------------------------------------------------------------------------------- /example/vite.config.ts: -------------------------------------------------------------------------------- 1 | import react from "@vitejs/plugin-react"; 2 | import path from "path"; 3 | import { defineConfig } from "vite"; 4 | 5 | // https://vitejs.dev/config/ 6 | export default defineConfig({ 7 | base: "/react-three-gpu-pathtracer/", 8 | plugins: [react()], 9 | resolve: { 10 | alias: { 11 | "@react-three/gpu-pathtracer": path.resolve( 12 | __dirname, 13 | "../package/src/index.ts" 14 | ) 15 | } 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@react-three/gpu-pathtracer-monorepo", 3 | "description": "Monorepo for @react-three/gpu-pathtracer-monorepo and its examples", 4 | "version": "1.0.0", 5 | "private": true, 6 | "repository": "https://github.com/pmndrs/react-three-gpu-pathtracer", 7 | "author": "Faraz Shaikh (https://twitter.com/CantBeFaraz)", 8 | "contributors": [ 9 | "Dennis Smolek (https://twitter.com/DennisSmolek)" 10 | ], 11 | "license": "MIT", 12 | "homepage": "https://github.com/pmndrs/react-three-gpu-pathtracer", 13 | "workspaces": [ 14 | "package", 15 | "example" 16 | ], 17 | "scripts": { 18 | "build:package": "yarn --cwd package build", 19 | "build": "yarn --cwd example build", 20 | "preview": "yarn --cwd example preview", 21 | "dev": "yarn --cwd example dev", 22 | "release": "yarn --cwd package release" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /package/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@react-three/gpu-pathtracer", 3 | "private": false, 4 | "version": "0.2.0", 5 | "description": "⚡️ A React abstraction for the popular three-gpu-pathtracer.", 6 | "type": "module", 7 | "files": [ 8 | "./**/*" 9 | ], 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/pmndrs/react-three-gpu-pathtracer" 13 | }, 14 | "bugs": { 15 | "url": "https://github.com/pmndrs/react-three-gpu-pathtracer/issues" 16 | }, 17 | "author": "Faraz Shaikh (https://twitter.com/CantBeFaraz)", 18 | "contributors": [ 19 | "Dennis Smolek (https://twitter.com/DennisSmolek)" 20 | ], 21 | "license": "MIT", 22 | "homepage": "https://github.com/pmndrs/react-three-gpu-pathtracer", 23 | "keywords": [ 24 | "react", 25 | "webgl", 26 | "three", 27 | "path", 28 | "tracing", 29 | "pathtracing", 30 | "raytracing" 31 | ], 32 | "main": "react-three-gpu-pathtracer.cjs.js", 33 | "module": "react-three-gpu-pathtracer.es.js", 34 | "types": "index.d.ts", 35 | "scripts": { 36 | "build": "tsc && vite build", 37 | "release": "yarn build && cp ./package.json ./dist/package.json && cd ./dist && npm publish" 38 | }, 39 | "devDependencies": { 40 | "@types/node": "^22.7.4", 41 | "@types/react": "^18.3.3", 42 | "@types/react-dom": "^18.3.0", 43 | "@types/three": "^0.168.0", 44 | "@vitejs/plugin-react": "^4.3.1", 45 | "globals": "^15.9.0", 46 | "typescript": "^5.5.3", 47 | "typescript-eslint": "^8.0.1", 48 | "vite": "^5.4.1", 49 | "vite-plugin-dts": "^4.2.1" 50 | }, 51 | "peerDependencies": { 52 | "@react-three/fiber": ">=8.0", 53 | "react": ">=18.0", 54 | "three": ">=0.149" 55 | }, 56 | "dependencies": { 57 | "three-gpu-pathtracer": "^0.0.23" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /package/src/Pass.ts: -------------------------------------------------------------------------------- 1 | import { 2 | OrthographicCamera, 3 | PlaneGeometry, 4 | Mesh, 5 | Material, 6 | Renderer, 7 | WebGLRenderer, 8 | WebGLRenderTarget 9 | } from "three"; 10 | 11 | class Pass { 12 | // if set to true, the pass is processed by the composer 13 | public enabled = true; 14 | 15 | // if set to true, the pass indicates to swap read and write buffer after rendering 16 | public needsSwap = true; 17 | 18 | // if set to true, the pass clears its buffer before rendering 19 | public clear = false; 20 | 21 | // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer. 22 | public renderToScreen = false; 23 | 24 | public setSize( 25 | /* eslint-disable @typescript-eslint/no-unused-vars */ 26 | /* eslint-disable no-unused-vars */ 27 | width: number, 28 | height: number 29 | ): void {} 30 | 31 | public render( 32 | /* eslint-disable @typescript-eslint/no-unused-vars */ 33 | /* eslint-disable no-unused-vars */ 34 | renderer: WebGLRenderer, 35 | writeBuffer: WebGLRenderTarget, 36 | readBuffer: WebGLRenderTarget, 37 | deltaTime: number, 38 | maskActive?: unknown 39 | ): void { 40 | console.error("THREE.Pass: .render() must be implemented in derived pass."); 41 | } 42 | } 43 | 44 | // Helper for passes that need to fill the viewport with a single quad. 45 | class FullScreenQuad { 46 | public camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1); 47 | public geometry = new PlaneGeometry(2, 2); 48 | private mesh: Mesh; 49 | 50 | constructor(material: TMaterial) { 51 | this.mesh = new Mesh(this.geometry, material); 52 | } 53 | 54 | public get material(): TMaterial { 55 | return this.mesh.material; 56 | } 57 | 58 | public set material(value: TMaterial) { 59 | this.mesh.material = value; 60 | } 61 | 62 | public dispose(): void { 63 | this.mesh.geometry.dispose(); 64 | } 65 | 66 | public render(renderer: Renderer): void { 67 | renderer.render(this.mesh, this.camera); 68 | } 69 | } 70 | 71 | export { Pass, FullScreenQuad }; 72 | -------------------------------------------------------------------------------- /package/src/Pathtracer.tsx: -------------------------------------------------------------------------------- 1 | import { useFrame, useThree } from "@react-three/fiber"; 2 | import React, { useMemo } from "react"; 3 | import * as THREE from "three"; 4 | import { WebGLPathTracer } from "three-gpu-pathtracer"; 5 | 6 | type TilesType = 7 | | [number, number] 8 | | THREE.Vector2 9 | | { x: number; y: number } 10 | | number; 11 | 12 | interface PathtracerProps { 13 | minSamples?: number; 14 | samples?: number; 15 | tiles?: TilesType; 16 | bounces?: number; 17 | enabled?: boolean; 18 | resolutionFactor?: number; 19 | } 20 | 21 | interface PathtracerAPI { 22 | update: () => void; 23 | reset: () => void; 24 | renderer: typeof WebGLPathTracer; 25 | pathtracer: typeof WebGLPathTracer; 26 | } 27 | 28 | const context = React.createContext(null as any); 29 | 30 | //* Helper Function to convert TilesType to [number, number] 31 | function fiberVec2ToArr(vec: TilesType): [number, number] { 32 | if (Array.isArray(vec)) return vec; 33 | if (vec instanceof THREE.Vector2) return [vec.x, vec.y]; 34 | if (typeof vec === "number") return [vec, vec]; 35 | return [vec.x, vec.y]; 36 | } 37 | 38 | export const Pathtracer = React.forwardRef< 39 | InstanceType, 40 | React.PropsWithChildren 41 | >(({ enabled = true, children, ...props }, ref) => { 42 | // state objects 43 | const { gl, size, viewport, camera, scene, controls } = useThree(); 44 | 45 | const pathtracer = useMemo(() => { 46 | const pt = new WebGLPathTracer(gl); 47 | pt.synchronizeRenderSize = true; 48 | // This might not be needed as we arent using setSceneAsync 49 | //pt.setBVHWorker(new ParallelMeshBVHWorker()) 50 | return pt; 51 | }, [gl]); 52 | 53 | // Expose the pathtracer instance via ref 54 | React.useImperativeHandle(ref, () => pathtracer, [pathtracer]); 55 | 56 | //* Single handler for all props 57 | React.useEffect(() => { 58 | const { 59 | minSamples = 5, 60 | tiles = 2, 61 | bounces = 4, 62 | resolutionFactor = 1 63 | } = props; 64 | 65 | pathtracer.bounces = bounces; 66 | pathtracer.minSamples = minSamples; 67 | pathtracer.renderScale = resolutionFactor; 68 | const t = fiberVec2ToArr(tiles); 69 | pathtracer.tiles.set(t[0], t[1]); 70 | }, [props, pathtracer]); 71 | 72 | React.useEffect(() => { 73 | if (enabled) pathtracer.reset(); 74 | }, [enabled]); 75 | 76 | const api = React.useMemo( 77 | () => ({ 78 | /** 79 | * Update the pathtracer scene. Call this after adding or removing objects from the scene 80 | */ 81 | update: () => { 82 | pathtracer.setScene(scene, camera); 83 | }, 84 | /** 85 | * Reset the pathtracer. Call this after changing any pathtracing properties 86 | */ 87 | reset: () => { 88 | pathtracer.reset(); 89 | }, 90 | /** 91 | * @deprecated Use `pathtracer` instead 92 | */ 93 | renderer: pathtracer, 94 | pathtracer: pathtracer // Use this instead. Keeps base three renderer seperate mentally 95 | }), 96 | [pathtracer, scene, camera] 97 | ); 98 | 99 | //* Initialize the pathtracer 100 | React.useEffect(() => { 101 | // scene.updateMatrixWorld() 102 | pathtracer.setScene(scene, camera); 103 | }, [scene, camera]); 104 | 105 | // Bind control listeners 106 | React.useEffect(() => { 107 | // setup control listeners 108 | 109 | const controlListener = () => { 110 | pathtracer.updateCamera(); 111 | }; 112 | 113 | // @ts-ignore 114 | if (controls) controls.addEventListener("change", controlListener); 115 | 116 | return () => { 117 | // @ts-ignore 118 | if (controls) controls.removeEventListener("change", controlListener); 119 | }; 120 | }, [controls, pathtracer]); 121 | 122 | useFrame(({ camera, gl, scene }) => { 123 | if (enabled && pathtracer.samples < (props.samples ?? Infinity)) 124 | pathtracer.renderSample(); 125 | if (!enabled) gl.render(scene, camera); 126 | }, 1); 127 | 128 | return {children}; 129 | }); 130 | 131 | export function usePathtracer() { 132 | const ctx = React.useContext(context); 133 | if (!ctx) throw new Error("usePathtracer must be used within a Pathtracer"); 134 | 135 | return ctx; 136 | } 137 | -------------------------------------------------------------------------------- /package/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Pathtracer"; 2 | -------------------------------------------------------------------------------- /package/src/types.ts: -------------------------------------------------------------------------------- 1 | declare module "three-gpu-pathtracer"; 2 | -------------------------------------------------------------------------------- /package/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noEmit": true, 4 | "allowSyntheticDefaultImports": true, 5 | "jsx": "react-jsx", 6 | "strict": true, 7 | "moduleResolution": "Node", 8 | "skipLibCheck": true, 9 | "allowJs": true, 10 | "lib": ["esnext", "dom"] 11 | }, 12 | "include": ["src/**/*"], 13 | "exclude": ["node_modules", "dist"] 14 | } 15 | -------------------------------------------------------------------------------- /package/vite.config.ts: -------------------------------------------------------------------------------- 1 | import react from "@vitejs/plugin-react"; 2 | import fs from "fs/promises"; 3 | import path from "path"; 4 | import { defineConfig } from "vite"; 5 | import dts from "vite-plugin-dts"; 6 | 7 | function copyFiles() { 8 | return { 9 | name: "copy-license", 10 | closeBundle: async () => { 11 | await fs.copyFile("../LICENSE.md", "./dist/LICENSE.md"); 12 | await fs.copyFile("../README.md", "./dist/README.md"); 13 | } 14 | }; 15 | } 16 | 17 | export default defineConfig({ 18 | build: { 19 | outDir: "dist", 20 | lib: { 21 | entry: path.resolve(__dirname, "src/index.ts"), 22 | name: "react-three-gpu-pathtracer", 23 | formats: ["es", "cjs"], 24 | fileName: (format) => `react-three-gpu-pathtracer.${format}.js` 25 | }, 26 | rollupOptions: { 27 | external: ["react", "three", "@react-three/fiber"] 28 | }, 29 | sourcemap: true, 30 | emptyOutDir: true 31 | }, 32 | plugins: [react(), dts(), copyFiles()] 33 | }); 34 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "esnext", 4 | "target": "es2018", 5 | "allowSyntheticDefaultImports": true, 6 | "jsx": "react", 7 | "strict": true, 8 | "preserveSymlinks": true, 9 | "moduleResolution": "Node", 10 | "esModuleInterop": true, 11 | "declaration": true, 12 | "skipLibCheck": true, 13 | "removeComments": false 14 | }, 15 | "include": ["package/src/**/*"], 16 | "exclude": ["node_modules", "package/dist/**/*"] 17 | } 18 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.0": 6 | "integrity" "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==" 7 | "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" 8 | "version" "2.3.0" 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.5" 11 | "@jridgewell/trace-mapping" "^0.3.24" 12 | 13 | "@babel/code-frame@^7.24.7": 14 | "integrity" "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==" 15 | "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz" 16 | "version" "7.24.7" 17 | dependencies: 18 | "@babel/highlight" "^7.24.7" 19 | "picocolors" "^1.0.0" 20 | 21 | "@babel/compat-data@^7.25.2": 22 | "integrity" "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==" 23 | "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz" 24 | "version" "7.25.4" 25 | 26 | "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.24.5": 27 | "integrity" "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==" 28 | "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz" 29 | "version" "7.25.2" 30 | dependencies: 31 | "@ampproject/remapping" "^2.2.0" 32 | "@babel/code-frame" "^7.24.7" 33 | "@babel/generator" "^7.25.0" 34 | "@babel/helper-compilation-targets" "^7.25.2" 35 | "@babel/helper-module-transforms" "^7.25.2" 36 | "@babel/helpers" "^7.25.0" 37 | "@babel/parser" "^7.25.0" 38 | "@babel/template" "^7.25.0" 39 | "@babel/traverse" "^7.25.2" 40 | "@babel/types" "^7.25.2" 41 | "convert-source-map" "^2.0.0" 42 | "debug" "^4.1.0" 43 | "gensync" "^1.0.0-beta.2" 44 | "json5" "^2.2.3" 45 | "semver" "^6.3.1" 46 | 47 | "@babel/generator@^7.25.0", "@babel/generator@^7.25.6": 48 | "integrity" "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==" 49 | "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz" 50 | "version" "7.25.6" 51 | dependencies: 52 | "@babel/types" "^7.25.6" 53 | "@jridgewell/gen-mapping" "^0.3.5" 54 | "@jridgewell/trace-mapping" "^0.3.25" 55 | "jsesc" "^2.5.1" 56 | 57 | "@babel/helper-compilation-targets@^7.25.2": 58 | "integrity" "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==" 59 | "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz" 60 | "version" "7.25.2" 61 | dependencies: 62 | "@babel/compat-data" "^7.25.2" 63 | "@babel/helper-validator-option" "^7.24.8" 64 | "browserslist" "^4.23.1" 65 | "lru-cache" "^5.1.1" 66 | "semver" "^6.3.1" 67 | 68 | "@babel/helper-module-imports@^7.24.7": 69 | "integrity" "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==" 70 | "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz" 71 | "version" "7.24.7" 72 | dependencies: 73 | "@babel/traverse" "^7.24.7" 74 | "@babel/types" "^7.24.7" 75 | 76 | "@babel/helper-module-transforms@^7.25.2": 77 | "integrity" "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==" 78 | "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz" 79 | "version" "7.25.2" 80 | dependencies: 81 | "@babel/helper-module-imports" "^7.24.7" 82 | "@babel/helper-simple-access" "^7.24.7" 83 | "@babel/helper-validator-identifier" "^7.24.7" 84 | "@babel/traverse" "^7.25.2" 85 | 86 | "@babel/helper-plugin-utils@^7.24.7": 87 | "integrity" "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==" 88 | "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz" 89 | "version" "7.24.8" 90 | 91 | "@babel/helper-simple-access@^7.24.7": 92 | "integrity" "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==" 93 | "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz" 94 | "version" "7.24.7" 95 | dependencies: 96 | "@babel/traverse" "^7.24.7" 97 | "@babel/types" "^7.24.7" 98 | 99 | "@babel/helper-string-parser@^7.24.8": 100 | "integrity" "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==" 101 | "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz" 102 | "version" "7.24.8" 103 | 104 | "@babel/helper-validator-identifier@^7.24.7": 105 | "integrity" "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" 106 | "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz" 107 | "version" "7.24.7" 108 | 109 | "@babel/helper-validator-option@^7.24.8": 110 | "integrity" "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==" 111 | "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz" 112 | "version" "7.24.8" 113 | 114 | "@babel/helpers@^7.25.0": 115 | "integrity" "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==" 116 | "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz" 117 | "version" "7.25.6" 118 | dependencies: 119 | "@babel/template" "^7.25.0" 120 | "@babel/types" "^7.25.6" 121 | 122 | "@babel/highlight@^7.24.7": 123 | "integrity" "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==" 124 | "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz" 125 | "version" "7.24.7" 126 | dependencies: 127 | "@babel/helper-validator-identifier" "^7.24.7" 128 | "chalk" "^2.4.2" 129 | "js-tokens" "^4.0.0" 130 | "picocolors" "^1.0.0" 131 | 132 | "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3", "@babel/parser@^7.25.6": 133 | "integrity" "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==" 134 | "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz" 135 | "version" "7.25.6" 136 | dependencies: 137 | "@babel/types" "^7.25.6" 138 | 139 | "@babel/plugin-transform-react-jsx-self@^7.24.5": 140 | "integrity" "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==" 141 | "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz" 142 | "version" "7.24.7" 143 | dependencies: 144 | "@babel/helper-plugin-utils" "^7.24.7" 145 | 146 | "@babel/plugin-transform-react-jsx-source@^7.24.1": 147 | "integrity" "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==" 148 | "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz" 149 | "version" "7.24.7" 150 | dependencies: 151 | "@babel/helper-plugin-utils" "^7.24.7" 152 | 153 | "@babel/runtime@^7.11.2", "@babel/runtime@^7.17.8": 154 | "integrity" "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==" 155 | "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz" 156 | "version" "7.25.6" 157 | dependencies: 158 | "regenerator-runtime" "^0.14.0" 159 | 160 | "@babel/template@^7.25.0": 161 | "integrity" "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==" 162 | "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz" 163 | "version" "7.25.0" 164 | dependencies: 165 | "@babel/code-frame" "^7.24.7" 166 | "@babel/parser" "^7.25.0" 167 | "@babel/types" "^7.25.0" 168 | 169 | "@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": 170 | "integrity" "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==" 171 | "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz" 172 | "version" "7.25.6" 173 | dependencies: 174 | "@babel/code-frame" "^7.24.7" 175 | "@babel/generator" "^7.25.6" 176 | "@babel/parser" "^7.25.6" 177 | "@babel/template" "^7.25.0" 178 | "@babel/types" "^7.25.6" 179 | "debug" "^4.3.1" 180 | "globals" "^11.1.0" 181 | 182 | "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6": 183 | "integrity" "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==" 184 | "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz" 185 | "version" "7.25.6" 186 | dependencies: 187 | "@babel/helper-string-parser" "^7.24.8" 188 | "@babel/helper-validator-identifier" "^7.24.7" 189 | "to-fast-properties" "^2.0.0" 190 | 191 | "@esbuild/win32-x64@0.21.5": 192 | "integrity" "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==" 193 | "resolved" "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz" 194 | "version" "0.21.5" 195 | 196 | "@eslint-community/eslint-utils@^4.4.0": 197 | "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" 198 | "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" 199 | "version" "4.4.0" 200 | dependencies: 201 | "eslint-visitor-keys" "^3.3.0" 202 | 203 | "@eslint-community/regexpp@^4.10.0": 204 | "integrity" "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==" 205 | "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz" 206 | "version" "4.11.1" 207 | 208 | "@floating-ui/core@^1.6.0": 209 | "integrity" "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==" 210 | "resolved" "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz" 211 | "version" "1.6.8" 212 | dependencies: 213 | "@floating-ui/utils" "^0.2.8" 214 | 215 | "@floating-ui/dom@^1.0.0": 216 | "integrity" "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==" 217 | "resolved" "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz" 218 | "version" "1.6.11" 219 | dependencies: 220 | "@floating-ui/core" "^1.6.0" 221 | "@floating-ui/utils" "^0.2.8" 222 | 223 | "@floating-ui/react-dom@^2.0.0": 224 | "integrity" "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==" 225 | "resolved" "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz" 226 | "version" "2.1.2" 227 | dependencies: 228 | "@floating-ui/dom" "^1.0.0" 229 | 230 | "@floating-ui/utils@^0.2.8": 231 | "integrity" "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" 232 | "resolved" "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz" 233 | "version" "0.2.8" 234 | 235 | "@jridgewell/gen-mapping@^0.3.5": 236 | "integrity" "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==" 237 | "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" 238 | "version" "0.3.5" 239 | dependencies: 240 | "@jridgewell/set-array" "^1.2.1" 241 | "@jridgewell/sourcemap-codec" "^1.4.10" 242 | "@jridgewell/trace-mapping" "^0.3.24" 243 | 244 | "@jridgewell/resolve-uri@^3.1.0": 245 | "integrity" "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" 246 | "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" 247 | "version" "3.1.2" 248 | 249 | "@jridgewell/set-array@^1.2.1": 250 | "integrity" "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" 251 | "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" 252 | "version" "1.2.1" 253 | 254 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": 255 | "integrity" "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" 256 | "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" 257 | "version" "1.5.0" 258 | 259 | "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 260 | "integrity" "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==" 261 | "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" 262 | "version" "0.3.25" 263 | dependencies: 264 | "@jridgewell/resolve-uri" "^3.1.0" 265 | "@jridgewell/sourcemap-codec" "^1.4.14" 266 | 267 | "@mediapipe/tasks-vision@0.10.8": 268 | "integrity" "sha512-Rp7ll8BHrKB3wXaRFKhrltwZl1CiXGdibPxuWXvqGnKTnv8fqa/nvftYNuSbf+pbJWKYCXdBtYTITdAUTGGh0Q==" 269 | "resolved" "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.8.tgz" 270 | "version" "0.10.8" 271 | 272 | "@microsoft/api-extractor-model@7.29.6": 273 | "integrity" "sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==" 274 | "resolved" "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.29.6.tgz" 275 | "version" "7.29.6" 276 | dependencies: 277 | "@microsoft/tsdoc" "~0.15.0" 278 | "@microsoft/tsdoc-config" "~0.17.0" 279 | "@rushstack/node-core-library" "5.7.0" 280 | 281 | "@microsoft/api-extractor@7.47.7": 282 | "integrity" "sha512-fNiD3G55ZJGhPOBPMKD/enozj8yxJSYyVJWxRWdcUtw842rvthDHJgUWq9gXQTensFlMHv2wGuCjjivPv53j0A==" 283 | "resolved" "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.47.7.tgz" 284 | "version" "7.47.7" 285 | dependencies: 286 | "@microsoft/api-extractor-model" "7.29.6" 287 | "@microsoft/tsdoc" "~0.15.0" 288 | "@microsoft/tsdoc-config" "~0.17.0" 289 | "@rushstack/node-core-library" "5.7.0" 290 | "@rushstack/rig-package" "0.5.3" 291 | "@rushstack/terminal" "0.14.0" 292 | "@rushstack/ts-command-line" "4.22.6" 293 | "lodash" "~4.17.15" 294 | "minimatch" "~3.0.3" 295 | "resolve" "~1.22.1" 296 | "semver" "~7.5.4" 297 | "source-map" "~0.6.1" 298 | "typescript" "5.4.2" 299 | 300 | "@microsoft/tsdoc-config@~0.17.0": 301 | "integrity" "sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==" 302 | "resolved" "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.0.tgz" 303 | "version" "0.17.0" 304 | dependencies: 305 | "@microsoft/tsdoc" "0.15.0" 306 | "ajv" "~8.12.0" 307 | "jju" "~1.4.0" 308 | "resolve" "~1.22.2" 309 | 310 | "@microsoft/tsdoc@~0.15.0", "@microsoft/tsdoc@0.15.0": 311 | "integrity" "sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==" 312 | "resolved" "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz" 313 | "version" "0.15.0" 314 | 315 | "@monogrid/gainmap-js@^3.0.5": 316 | "integrity" "sha512-ireqJg7cw0tUn/JePDG8rAL7RyXgUKSDbjYdiygkrnye1WuKGLAWDBwF/ICwCwJ9iZBAF5caU8gSu+c34HLGdQ==" 317 | "resolved" "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.0.6.tgz" 318 | "version" "3.0.6" 319 | dependencies: 320 | "promise-worker-transferable" "^1.0.4" 321 | 322 | "@nodelib/fs.scandir@2.1.5": 323 | "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" 324 | "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" 325 | "version" "2.1.5" 326 | dependencies: 327 | "@nodelib/fs.stat" "2.0.5" 328 | "run-parallel" "^1.1.9" 329 | 330 | "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": 331 | "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" 332 | "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" 333 | "version" "2.0.5" 334 | 335 | "@nodelib/fs.walk@^1.2.3": 336 | "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" 337 | "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" 338 | "version" "1.2.8" 339 | dependencies: 340 | "@nodelib/fs.scandir" "2.1.5" 341 | "fastq" "^1.6.0" 342 | 343 | "@pmndrs/branding@^0.0.8": 344 | "integrity" "sha512-AIWJJDiUhIWNJqhN+bz1FIlQRURqQDIaJ2FokEIHAJ/k0XIYI6VM5UgVBRupS4YkMXtvdBAYnfsDpFx8C7N4Xw==" 345 | "resolved" "https://registry.npmjs.org/@pmndrs/branding/-/branding-0.0.8.tgz" 346 | "version" "0.0.8" 347 | 348 | "@radix-ui/primitive@1.1.0": 349 | "integrity" "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==" 350 | "resolved" "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz" 351 | "version" "1.1.0" 352 | 353 | "@radix-ui/react-arrow@1.1.0": 354 | "integrity" "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==" 355 | "resolved" "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz" 356 | "version" "1.1.0" 357 | dependencies: 358 | "@radix-ui/react-primitive" "2.0.0" 359 | 360 | "@radix-ui/react-compose-refs@1.1.0": 361 | "integrity" "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==" 362 | "resolved" "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz" 363 | "version" "1.1.0" 364 | 365 | "@radix-ui/react-context@1.1.0": 366 | "integrity" "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==" 367 | "resolved" "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz" 368 | "version" "1.1.0" 369 | 370 | "@radix-ui/react-dismissable-layer@1.1.0": 371 | "integrity" "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==" 372 | "resolved" "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz" 373 | "version" "1.1.0" 374 | dependencies: 375 | "@radix-ui/primitive" "1.1.0" 376 | "@radix-ui/react-compose-refs" "1.1.0" 377 | "@radix-ui/react-primitive" "2.0.0" 378 | "@radix-ui/react-use-callback-ref" "1.1.0" 379 | "@radix-ui/react-use-escape-keydown" "1.1.0" 380 | 381 | "@radix-ui/react-id@1.1.0": 382 | "integrity" "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==" 383 | "resolved" "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz" 384 | "version" "1.1.0" 385 | dependencies: 386 | "@radix-ui/react-use-layout-effect" "1.1.0" 387 | 388 | "@radix-ui/react-popper@1.2.0": 389 | "integrity" "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==" 390 | "resolved" "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz" 391 | "version" "1.2.0" 392 | dependencies: 393 | "@floating-ui/react-dom" "^2.0.0" 394 | "@radix-ui/react-arrow" "1.1.0" 395 | "@radix-ui/react-compose-refs" "1.1.0" 396 | "@radix-ui/react-context" "1.1.0" 397 | "@radix-ui/react-primitive" "2.0.0" 398 | "@radix-ui/react-use-callback-ref" "1.1.0" 399 | "@radix-ui/react-use-layout-effect" "1.1.0" 400 | "@radix-ui/react-use-rect" "1.1.0" 401 | "@radix-ui/react-use-size" "1.1.0" 402 | "@radix-ui/rect" "1.1.0" 403 | 404 | "@radix-ui/react-portal@^1.0.2", "@radix-ui/react-portal@1.1.1": 405 | "integrity" "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==" 406 | "resolved" "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz" 407 | "version" "1.1.1" 408 | dependencies: 409 | "@radix-ui/react-primitive" "2.0.0" 410 | "@radix-ui/react-use-layout-effect" "1.1.0" 411 | 412 | "@radix-ui/react-presence@1.1.0": 413 | "integrity" "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==" 414 | "resolved" "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz" 415 | "version" "1.1.0" 416 | dependencies: 417 | "@radix-ui/react-compose-refs" "1.1.0" 418 | "@radix-ui/react-use-layout-effect" "1.1.0" 419 | 420 | "@radix-ui/react-primitive@2.0.0": 421 | "integrity" "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==" 422 | "resolved" "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz" 423 | "version" "2.0.0" 424 | dependencies: 425 | "@radix-ui/react-slot" "1.1.0" 426 | 427 | "@radix-ui/react-slot@1.1.0": 428 | "integrity" "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==" 429 | "resolved" "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz" 430 | "version" "1.1.0" 431 | dependencies: 432 | "@radix-ui/react-compose-refs" "1.1.0" 433 | 434 | "@radix-ui/react-tooltip@^1.0.5": 435 | "integrity" "sha512-9XRsLwe6Yb9B/tlnYCPVUd/TFS4J7HuOZW345DCeC6vKIxQGMZdx21RK4VoZauPD5frgkXTYVS5y90L+3YBn4w==" 436 | "resolved" "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.2.tgz" 437 | "version" "1.1.2" 438 | dependencies: 439 | "@radix-ui/primitive" "1.1.0" 440 | "@radix-ui/react-compose-refs" "1.1.0" 441 | "@radix-ui/react-context" "1.1.0" 442 | "@radix-ui/react-dismissable-layer" "1.1.0" 443 | "@radix-ui/react-id" "1.1.0" 444 | "@radix-ui/react-popper" "1.2.0" 445 | "@radix-ui/react-portal" "1.1.1" 446 | "@radix-ui/react-presence" "1.1.0" 447 | "@radix-ui/react-primitive" "2.0.0" 448 | "@radix-ui/react-slot" "1.1.0" 449 | "@radix-ui/react-use-controllable-state" "1.1.0" 450 | "@radix-ui/react-visually-hidden" "1.1.0" 451 | 452 | "@radix-ui/react-use-callback-ref@1.1.0": 453 | "integrity" "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==" 454 | "resolved" "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz" 455 | "version" "1.1.0" 456 | 457 | "@radix-ui/react-use-controllable-state@1.1.0": 458 | "integrity" "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==" 459 | "resolved" "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz" 460 | "version" "1.1.0" 461 | dependencies: 462 | "@radix-ui/react-use-callback-ref" "1.1.0" 463 | 464 | "@radix-ui/react-use-escape-keydown@1.1.0": 465 | "integrity" "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==" 466 | "resolved" "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz" 467 | "version" "1.1.0" 468 | dependencies: 469 | "@radix-ui/react-use-callback-ref" "1.1.0" 470 | 471 | "@radix-ui/react-use-layout-effect@1.1.0": 472 | "integrity" "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==" 473 | "resolved" "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz" 474 | "version" "1.1.0" 475 | 476 | "@radix-ui/react-use-rect@1.1.0": 477 | "integrity" "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==" 478 | "resolved" "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz" 479 | "version" "1.1.0" 480 | dependencies: 481 | "@radix-ui/rect" "1.1.0" 482 | 483 | "@radix-ui/react-use-size@1.1.0": 484 | "integrity" "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==" 485 | "resolved" "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz" 486 | "version" "1.1.0" 487 | dependencies: 488 | "@radix-ui/react-use-layout-effect" "1.1.0" 489 | 490 | "@radix-ui/react-visually-hidden@1.1.0": 491 | "integrity" "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==" 492 | "resolved" "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz" 493 | "version" "1.1.0" 494 | dependencies: 495 | "@radix-ui/react-primitive" "2.0.0" 496 | 497 | "@radix-ui/rect@1.1.0": 498 | "integrity" "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" 499 | "resolved" "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz" 500 | "version" "1.1.0" 501 | 502 | "@react-spring/animated@~9.6.1": 503 | "integrity" "sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==" 504 | "resolved" "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz" 505 | "version" "9.6.1" 506 | dependencies: 507 | "@react-spring/shared" "~9.6.1" 508 | "@react-spring/types" "~9.6.1" 509 | 510 | "@react-spring/core@~9.6.1": 511 | "integrity" "sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==" 512 | "resolved" "https://registry.npmjs.org/@react-spring/core/-/core-9.6.1.tgz" 513 | "version" "9.6.1" 514 | dependencies: 515 | "@react-spring/animated" "~9.6.1" 516 | "@react-spring/rafz" "~9.6.1" 517 | "@react-spring/shared" "~9.6.1" 518 | "@react-spring/types" "~9.6.1" 519 | 520 | "@react-spring/rafz@~9.6.1": 521 | "integrity" "sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==" 522 | "resolved" "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.6.1.tgz" 523 | "version" "9.6.1" 524 | 525 | "@react-spring/shared@~9.6.1": 526 | "integrity" "sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==" 527 | "resolved" "https://registry.npmjs.org/@react-spring/shared/-/shared-9.6.1.tgz" 528 | "version" "9.6.1" 529 | dependencies: 530 | "@react-spring/rafz" "~9.6.1" 531 | "@react-spring/types" "~9.6.1" 532 | 533 | "@react-spring/three@~9.6.1": 534 | "integrity" "sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==" 535 | "resolved" "https://registry.npmjs.org/@react-spring/three/-/three-9.6.1.tgz" 536 | "version" "9.6.1" 537 | dependencies: 538 | "@react-spring/animated" "~9.6.1" 539 | "@react-spring/core" "~9.6.1" 540 | "@react-spring/shared" "~9.6.1" 541 | "@react-spring/types" "~9.6.1" 542 | 543 | "@react-spring/types@~9.6.1": 544 | "integrity" "sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==" 545 | "resolved" "https://registry.npmjs.org/@react-spring/types/-/types-9.6.1.tgz" 546 | "version" "9.6.1" 547 | 548 | "@react-three/drei@^9.114.0": 549 | "integrity" "sha512-+3EjUS47DEInY3LoTabA0t2AC62hgJvhZmQggZC1iTTZNrnyGQ9EQVYKP3e4kYyq2cnRAYptRnonSRF3RZkStA==" 550 | "resolved" "https://registry.npmjs.org/@react-three/drei/-/drei-9.114.0.tgz" 551 | "version" "9.114.0" 552 | dependencies: 553 | "@babel/runtime" "^7.11.2" 554 | "@mediapipe/tasks-vision" "0.10.8" 555 | "@monogrid/gainmap-js" "^3.0.5" 556 | "@react-spring/three" "~9.6.1" 557 | "@use-gesture/react" "^10.2.24" 558 | "camera-controls" "^2.4.2" 559 | "cross-env" "^7.0.3" 560 | "detect-gpu" "^5.0.28" 561 | "glsl-noise" "^0.0.0" 562 | "hls.js" "1.3.5" 563 | "maath" "^0.10.7" 564 | "meshline" "^3.1.6" 565 | "react-composer" "^5.0.3" 566 | "stats-gl" "^2.0.0" 567 | "stats.js" "^0.17.0" 568 | "suspend-react" "^0.1.3" 569 | "three-mesh-bvh" "^0.7.8" 570 | "three-stdlib" "^2.29.9" 571 | "troika-three-text" "^0.49.0" 572 | "tunnel-rat" "^0.1.2" 573 | "utility-types" "^3.10.0" 574 | "uuid" "^9.0.1" 575 | "zustand" "^3.7.1" 576 | 577 | "@react-three/fiber@^8.17.8", "@react-three/fiber@>=6.0", "@react-three/fiber@>=8.0": 578 | "integrity" "sha512-L2r8n4Ebg7YMTMaPHx1soxplgfia7SpAJUA1bS4C1ApRG9KKAjK8Kjhx3ODX3f6fyYfQZju2JyE8Q7OJHv1DNA==" 579 | "resolved" "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.17.8.tgz" 580 | "version" "8.17.8" 581 | dependencies: 582 | "@babel/runtime" "^7.17.8" 583 | "@types/debounce" "^1.2.1" 584 | "@types/react-reconciler" "^0.26.7" 585 | "@types/webxr" "*" 586 | "base64-js" "^1.5.1" 587 | "buffer" "^6.0.3" 588 | "debounce" "^1.2.1" 589 | "its-fine" "^1.0.6" 590 | "react-reconciler" "^0.27.0" 591 | "scheduler" "^0.21.0" 592 | "suspend-react" "^0.1.3" 593 | "zustand" "^3.7.1" 594 | 595 | "@react-three/gpu-pathtracer-example@file:C:\\Users\\Faraz\\Documents\\work\\pmndrs\\react-three-gpu-pathtracer\\example": 596 | "resolved" "file:example" 597 | "version" "0.0.0" 598 | dependencies: 599 | "@pmndrs/branding" "^0.0.8" 600 | "@react-three/drei" "^9.114.0" 601 | "@react-three/fiber" "^8.17.8" 602 | "@react-three/gpu-pathtracer" "^0.1.1" 603 | "leva" "^0.9.35" 604 | "react" "^18.3.1" 605 | "react-dom" "^18.3.1" 606 | "react-icons" "^5.3.0" 607 | "three" "^0.169.0" 608 | 609 | "@react-three/gpu-pathtracer@^0.1.1": 610 | "integrity" "sha512-AaH/Xx6xBWvv9aPVupQn+WiVdI5wrj+NkvWyQ/P2ZkZjT23e4nzwVexPh9Ta4CPUHMz5ZhN777jqV9z/hRPbFA==" 611 | "resolved" "https://registry.npmjs.org/@react-three/gpu-pathtracer/-/gpu-pathtracer-0.1.1.tgz" 612 | "version" "0.1.1" 613 | dependencies: 614 | "three-gpu-pathtracer" "^0.0.13" 615 | 616 | "@react-three/gpu-pathtracer@file:C:\\Users\\Faraz\\Documents\\work\\pmndrs\\react-three-gpu-pathtracer\\package": 617 | "resolved" "file:package" 618 | "version" "0.2.0" 619 | dependencies: 620 | "three-gpu-pathtracer" "^0.0.23" 621 | 622 | "@rollup/pluginutils@^5.1.0": 623 | "integrity" "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==" 624 | "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz" 625 | "version" "5.1.2" 626 | dependencies: 627 | "@types/estree" "^1.0.0" 628 | "estree-walker" "^2.0.2" 629 | "picomatch" "^2.3.1" 630 | 631 | "@rollup/rollup-win32-x64-msvc@4.22.5": 632 | "integrity" "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==" 633 | "resolved" "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz" 634 | "version" "4.22.5" 635 | 636 | "@rushstack/node-core-library@5.7.0": 637 | "integrity" "sha512-Ff9Cz/YlWu9ce4dmqNBZpA45AEya04XaBFIjV7xTVeEf+y/kTjEasmozqFELXlNG4ROdevss75JrrZ5WgufDkQ==" 638 | "resolved" "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.7.0.tgz" 639 | "version" "5.7.0" 640 | dependencies: 641 | "ajv" "~8.13.0" 642 | "ajv-draft-04" "~1.0.0" 643 | "ajv-formats" "~3.0.1" 644 | "fs-extra" "~7.0.1" 645 | "import-lazy" "~4.0.0" 646 | "jju" "~1.4.0" 647 | "resolve" "~1.22.1" 648 | "semver" "~7.5.4" 649 | 650 | "@rushstack/rig-package@0.5.3": 651 | "integrity" "sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==" 652 | "resolved" "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.3.tgz" 653 | "version" "0.5.3" 654 | dependencies: 655 | "resolve" "~1.22.1" 656 | "strip-json-comments" "~3.1.1" 657 | 658 | "@rushstack/terminal@0.14.0": 659 | "integrity" "sha512-juTKMAMpTIJKudeFkG5slD8Z/LHwNwGZLtU441l/u82XdTBfsP+LbGKJLCNwP5se+DMCT55GB8x9p6+C4UL7jw==" 660 | "resolved" "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.14.0.tgz" 661 | "version" "0.14.0" 662 | dependencies: 663 | "@rushstack/node-core-library" "5.7.0" 664 | "supports-color" "~8.1.1" 665 | 666 | "@rushstack/ts-command-line@4.22.6": 667 | "integrity" "sha512-QSRqHT/IfoC5nk9zn6+fgyqOPXHME0BfchII9EUPR19pocsNp/xSbeBCbD3PIR2Lg+Q5qk7OFqk1VhWPMdKHJg==" 668 | "resolved" "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.22.6.tgz" 669 | "version" "4.22.6" 670 | dependencies: 671 | "@rushstack/terminal" "0.14.0" 672 | "@types/argparse" "1.0.38" 673 | "argparse" "~1.0.9" 674 | "string-argv" "~0.3.1" 675 | 676 | "@stitches/react@^1.2.8": 677 | "integrity" "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==" 678 | "resolved" "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz" 679 | "version" "1.2.8" 680 | 681 | "@tweenjs/tween.js@~23.1.1", "@tweenjs/tween.js@~23.1.3": 682 | "integrity" "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==" 683 | "resolved" "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz" 684 | "version" "23.1.3" 685 | 686 | "@types/argparse@1.0.38": 687 | "integrity" "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==" 688 | "resolved" "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz" 689 | "version" "1.0.38" 690 | 691 | "@types/babel__core@^7.20.5": 692 | "integrity" "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==" 693 | "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" 694 | "version" "7.20.5" 695 | dependencies: 696 | "@babel/parser" "^7.20.7" 697 | "@babel/types" "^7.20.7" 698 | "@types/babel__generator" "*" 699 | "@types/babel__template" "*" 700 | "@types/babel__traverse" "*" 701 | 702 | "@types/babel__generator@*": 703 | "integrity" "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==" 704 | "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz" 705 | "version" "7.6.8" 706 | dependencies: 707 | "@babel/types" "^7.0.0" 708 | 709 | "@types/babel__template@*": 710 | "integrity" "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==" 711 | "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" 712 | "version" "7.4.4" 713 | dependencies: 714 | "@babel/parser" "^7.1.0" 715 | "@babel/types" "^7.0.0" 716 | 717 | "@types/babel__traverse@*": 718 | "integrity" "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==" 719 | "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz" 720 | "version" "7.20.6" 721 | dependencies: 722 | "@babel/types" "^7.20.7" 723 | 724 | "@types/debounce@^1.2.1": 725 | "integrity" "sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==" 726 | "resolved" "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.4.tgz" 727 | "version" "1.2.4" 728 | 729 | "@types/draco3d@^1.4.0": 730 | "integrity" "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==" 731 | "resolved" "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz" 732 | "version" "1.4.10" 733 | 734 | "@types/estree@^1.0.0", "@types/estree@1.0.6": 735 | "integrity" "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" 736 | "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" 737 | "version" "1.0.6" 738 | 739 | "@types/node@*", "@types/node@^18.0.0 || >=20.0.0", "@types/node@^22.5.5", "@types/node@^22.7.4": 740 | "integrity" "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==" 741 | "resolved" "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz" 742 | "version" "22.7.4" 743 | dependencies: 744 | "undici-types" "~6.19.2" 745 | 746 | "@types/offscreencanvas@^2019.6.4": 747 | "integrity" "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" 748 | "resolved" "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz" 749 | "version" "2019.7.3" 750 | 751 | "@types/prop-types@*": 752 | "integrity" "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" 753 | "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz" 754 | "version" "15.7.13" 755 | 756 | "@types/react-dom@*", "@types/react-dom@^18.3.0": 757 | "integrity" "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==" 758 | "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz" 759 | "version" "18.3.0" 760 | dependencies: 761 | "@types/react" "*" 762 | 763 | "@types/react-reconciler@^0.26.7": 764 | "integrity" "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==" 765 | "resolved" "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz" 766 | "version" "0.26.7" 767 | dependencies: 768 | "@types/react" "*" 769 | 770 | "@types/react-reconciler@^0.28.0": 771 | "integrity" "sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==" 772 | "resolved" "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.8.tgz" 773 | "version" "0.28.8" 774 | dependencies: 775 | "@types/react" "*" 776 | 777 | "@types/react@*", "@types/react@^18.3.3", "@types/react@>=16.8": 778 | "integrity" "sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==" 779 | "resolved" "https://registry.npmjs.org/@types/react/-/react-18.3.10.tgz" 780 | "version" "18.3.10" 781 | dependencies: 782 | "@types/prop-types" "*" 783 | "csstype" "^3.0.2" 784 | 785 | "@types/stats.js@*": 786 | "integrity" "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==" 787 | "resolved" "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz" 788 | "version" "0.17.3" 789 | 790 | "@types/three@^0.163.0": 791 | "integrity" "sha512-uIdDhsXRpQiBUkflBS/i1l3JX14fW6Ot9csed60nfbZNXHDTRsnV2xnTVwXcgbvTiboAR4IW+t+lTL5f1rqIqA==" 792 | "resolved" "https://registry.npmjs.org/@types/three/-/three-0.163.0.tgz" 793 | "version" "0.163.0" 794 | dependencies: 795 | "@tweenjs/tween.js" "~23.1.1" 796 | "@types/stats.js" "*" 797 | "@types/webxr" "*" 798 | "fflate" "~0.8.2" 799 | "meshoptimizer" "~0.18.1" 800 | 801 | "@types/three@^0.168.0", "@types/three@>=0.134.0": 802 | "integrity" "sha512-qAGLGzbaYgkkonOBfwOr+TZpOskPfFjrDAj801WQSVkUz0/D9zwir4vhruJ/CC/GteywzR9pqeVVfs5th/2oKw==" 803 | "resolved" "https://registry.npmjs.org/@types/three/-/three-0.168.0.tgz" 804 | "version" "0.168.0" 805 | dependencies: 806 | "@tweenjs/tween.js" "~23.1.3" 807 | "@types/stats.js" "*" 808 | "@types/webxr" "*" 809 | "@webgpu/types" "*" 810 | "fflate" "~0.8.2" 811 | "meshoptimizer" "~0.18.1" 812 | 813 | "@types/webxr@*", "@types/webxr@^0.5.2": 814 | "integrity" "sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==" 815 | "resolved" "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.20.tgz" 816 | "version" "0.5.20" 817 | 818 | "@typescript-eslint/eslint-plugin@8.7.0": 819 | "integrity" "sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==" 820 | "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.7.0.tgz" 821 | "version" "8.7.0" 822 | dependencies: 823 | "@eslint-community/regexpp" "^4.10.0" 824 | "@typescript-eslint/scope-manager" "8.7.0" 825 | "@typescript-eslint/type-utils" "8.7.0" 826 | "@typescript-eslint/utils" "8.7.0" 827 | "@typescript-eslint/visitor-keys" "8.7.0" 828 | "graphemer" "^1.4.0" 829 | "ignore" "^5.3.1" 830 | "natural-compare" "^1.4.0" 831 | "ts-api-utils" "^1.3.0" 832 | 833 | "@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@8.7.0": 834 | "integrity" "sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==" 835 | "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.7.0.tgz" 836 | "version" "8.7.0" 837 | dependencies: 838 | "@typescript-eslint/scope-manager" "8.7.0" 839 | "@typescript-eslint/types" "8.7.0" 840 | "@typescript-eslint/typescript-estree" "8.7.0" 841 | "@typescript-eslint/visitor-keys" "8.7.0" 842 | "debug" "^4.3.4" 843 | 844 | "@typescript-eslint/scope-manager@8.7.0": 845 | "integrity" "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==" 846 | "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz" 847 | "version" "8.7.0" 848 | dependencies: 849 | "@typescript-eslint/types" "8.7.0" 850 | "@typescript-eslint/visitor-keys" "8.7.0" 851 | 852 | "@typescript-eslint/type-utils@8.7.0": 853 | "integrity" "sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==" 854 | "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.7.0.tgz" 855 | "version" "8.7.0" 856 | dependencies: 857 | "@typescript-eslint/typescript-estree" "8.7.0" 858 | "@typescript-eslint/utils" "8.7.0" 859 | "debug" "^4.3.4" 860 | "ts-api-utils" "^1.3.0" 861 | 862 | "@typescript-eslint/types@8.7.0": 863 | "integrity" "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==" 864 | "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz" 865 | "version" "8.7.0" 866 | 867 | "@typescript-eslint/typescript-estree@8.7.0": 868 | "integrity" "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==" 869 | "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz" 870 | "version" "8.7.0" 871 | dependencies: 872 | "@typescript-eslint/types" "8.7.0" 873 | "@typescript-eslint/visitor-keys" "8.7.0" 874 | "debug" "^4.3.4" 875 | "fast-glob" "^3.3.2" 876 | "is-glob" "^4.0.3" 877 | "minimatch" "^9.0.4" 878 | "semver" "^7.6.0" 879 | "ts-api-utils" "^1.3.0" 880 | 881 | "@typescript-eslint/utils@8.7.0": 882 | "integrity" "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==" 883 | "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz" 884 | "version" "8.7.0" 885 | dependencies: 886 | "@eslint-community/eslint-utils" "^4.4.0" 887 | "@typescript-eslint/scope-manager" "8.7.0" 888 | "@typescript-eslint/types" "8.7.0" 889 | "@typescript-eslint/typescript-estree" "8.7.0" 890 | 891 | "@typescript-eslint/visitor-keys@8.7.0": 892 | "integrity" "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==" 893 | "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz" 894 | "version" "8.7.0" 895 | dependencies: 896 | "@typescript-eslint/types" "8.7.0" 897 | "eslint-visitor-keys" "^3.4.3" 898 | 899 | "@use-gesture/core@10.3.1": 900 | "integrity" "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==" 901 | "resolved" "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz" 902 | "version" "10.3.1" 903 | 904 | "@use-gesture/react@^10.2.24", "@use-gesture/react@^10.2.5": 905 | "integrity" "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==" 906 | "resolved" "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz" 907 | "version" "10.3.1" 908 | dependencies: 909 | "@use-gesture/core" "10.3.1" 910 | 911 | "@vitejs/plugin-react@^4.3.1": 912 | "integrity" "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==" 913 | "resolved" "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz" 914 | "version" "4.3.1" 915 | dependencies: 916 | "@babel/core" "^7.24.5" 917 | "@babel/plugin-transform-react-jsx-self" "^7.24.5" 918 | "@babel/plugin-transform-react-jsx-source" "^7.24.1" 919 | "@types/babel__core" "^7.20.5" 920 | "react-refresh" "^0.14.2" 921 | 922 | "@volar/language-core@~2.4.1", "@volar/language-core@2.4.5": 923 | "integrity" "sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==" 924 | "resolved" "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.5.tgz" 925 | "version" "2.4.5" 926 | dependencies: 927 | "@volar/source-map" "2.4.5" 928 | 929 | "@volar/source-map@2.4.5": 930 | "integrity" "sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==" 931 | "resolved" "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.5.tgz" 932 | "version" "2.4.5" 933 | 934 | "@volar/typescript@^2.4.4": 935 | "integrity" "sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==" 936 | "resolved" "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.5.tgz" 937 | "version" "2.4.5" 938 | dependencies: 939 | "@volar/language-core" "2.4.5" 940 | "path-browserify" "^1.0.1" 941 | "vscode-uri" "^3.0.8" 942 | 943 | "@vue/compiler-core@3.5.10": 944 | "integrity" "sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==" 945 | "resolved" "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.10.tgz" 946 | "version" "3.5.10" 947 | dependencies: 948 | "@babel/parser" "^7.25.3" 949 | "@vue/shared" "3.5.10" 950 | "entities" "^4.5.0" 951 | "estree-walker" "^2.0.2" 952 | "source-map-js" "^1.2.0" 953 | 954 | "@vue/compiler-dom@^3.4.0": 955 | "integrity" "sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==" 956 | "resolved" "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.10.tgz" 957 | "version" "3.5.10" 958 | dependencies: 959 | "@vue/compiler-core" "3.5.10" 960 | "@vue/shared" "3.5.10" 961 | 962 | "@vue/compiler-vue2@^2.7.16": 963 | "integrity" "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==" 964 | "resolved" "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz" 965 | "version" "2.7.16" 966 | dependencies: 967 | "de-indent" "^1.0.2" 968 | "he" "^1.2.0" 969 | 970 | "@vue/language-core@2.1.6": 971 | "integrity" "sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==" 972 | "resolved" "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.6.tgz" 973 | "version" "2.1.6" 974 | dependencies: 975 | "@volar/language-core" "~2.4.1" 976 | "@vue/compiler-dom" "^3.4.0" 977 | "@vue/compiler-vue2" "^2.7.16" 978 | "@vue/shared" "^3.4.0" 979 | "computeds" "^0.0.1" 980 | "minimatch" "^9.0.3" 981 | "muggle-string" "^0.4.1" 982 | "path-browserify" "^1.0.1" 983 | 984 | "@vue/shared@^3.4.0", "@vue/shared@3.5.10": 985 | "integrity" "sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==" 986 | "resolved" "https://registry.npmjs.org/@vue/shared/-/shared-3.5.10.tgz" 987 | "version" "3.5.10" 988 | 989 | "@webgpu/types@*": 990 | "integrity" "sha512-2iogO6Zh0pTbKLGZuuGWEmJpF/fTABGs7G9wXxpn7s24XSJchSUIiMqIJHURi5zsMZRRTuXrV/3GLOkmOFjq5w==" 991 | "resolved" "https://registry.npmjs.org/@webgpu/types/-/types-0.1.46.tgz" 992 | "version" "0.1.46" 993 | 994 | "acorn@^8.11.3": 995 | "integrity" "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==" 996 | "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" 997 | "version" "8.12.1" 998 | 999 | "ajv-draft-04@~1.0.0": 1000 | "integrity" "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==" 1001 | "resolved" "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz" 1002 | "version" "1.0.0" 1003 | 1004 | "ajv-formats@~3.0.1": 1005 | "integrity" "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==" 1006 | "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz" 1007 | "version" "3.0.1" 1008 | dependencies: 1009 | "ajv" "^8.0.0" 1010 | 1011 | "ajv@^8.0.0", "ajv@^8.5.0", "ajv@~8.13.0": 1012 | "integrity" "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==" 1013 | "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz" 1014 | "version" "8.13.0" 1015 | dependencies: 1016 | "fast-deep-equal" "^3.1.3" 1017 | "json-schema-traverse" "^1.0.0" 1018 | "require-from-string" "^2.0.2" 1019 | "uri-js" "^4.4.1" 1020 | 1021 | "ajv@~8.12.0": 1022 | "integrity" "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==" 1023 | "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" 1024 | "version" "8.12.0" 1025 | dependencies: 1026 | "fast-deep-equal" "^3.1.1" 1027 | "json-schema-traverse" "^1.0.0" 1028 | "require-from-string" "^2.0.2" 1029 | "uri-js" "^4.2.2" 1030 | 1031 | "ansi-styles@^3.2.1": 1032 | "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" 1033 | "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" 1034 | "version" "3.2.1" 1035 | dependencies: 1036 | "color-convert" "^1.9.0" 1037 | 1038 | "argparse@~1.0.9": 1039 | "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" 1040 | "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" 1041 | "version" "1.0.10" 1042 | dependencies: 1043 | "sprintf-js" "~1.0.2" 1044 | 1045 | "assign-symbols@^1.0.0": 1046 | "integrity" "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" 1047 | "resolved" "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" 1048 | "version" "1.0.0" 1049 | 1050 | "attr-accept@^2.2.2": 1051 | "integrity" "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" 1052 | "resolved" "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz" 1053 | "version" "2.2.2" 1054 | 1055 | "balanced-match@^1.0.0": 1056 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1057 | "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 1058 | "version" "1.0.2" 1059 | 1060 | "base64-js@^1.3.1", "base64-js@^1.5.1": 1061 | "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 1062 | "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" 1063 | "version" "1.5.1" 1064 | 1065 | "bidi-js@^1.0.2": 1066 | "integrity" "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==" 1067 | "resolved" "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz" 1068 | "version" "1.0.3" 1069 | dependencies: 1070 | "require-from-string" "^2.0.2" 1071 | 1072 | "brace-expansion@^1.1.7": 1073 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" 1074 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 1075 | "version" "1.1.11" 1076 | dependencies: 1077 | "balanced-match" "^1.0.0" 1078 | "concat-map" "0.0.1" 1079 | 1080 | "brace-expansion@^2.0.1": 1081 | "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" 1082 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" 1083 | "version" "2.0.1" 1084 | dependencies: 1085 | "balanced-match" "^1.0.0" 1086 | 1087 | "braces@^3.0.3": 1088 | "integrity" "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==" 1089 | "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" 1090 | "version" "3.0.3" 1091 | dependencies: 1092 | "fill-range" "^7.1.1" 1093 | 1094 | "browserslist@^4.23.1", "browserslist@>= 4.21.0": 1095 | "integrity" "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==" 1096 | "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz" 1097 | "version" "4.24.0" 1098 | dependencies: 1099 | "caniuse-lite" "^1.0.30001663" 1100 | "electron-to-chromium" "^1.5.28" 1101 | "node-releases" "^2.0.18" 1102 | "update-browserslist-db" "^1.1.0" 1103 | 1104 | "buffer@^6.0.3": 1105 | "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" 1106 | "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" 1107 | "version" "6.0.3" 1108 | dependencies: 1109 | "base64-js" "^1.3.1" 1110 | "ieee754" "^1.2.1" 1111 | 1112 | "camera-controls@^2.4.2": 1113 | "integrity" "sha512-TpCujnP0vqPppTXXJRYpvIy0xq9Tro6jQf2iYUxlDpPCNxkvE/XGaTuwIxnhINOkVP/ob2CRYXtY3iVYXeMEzA==" 1114 | "resolved" "https://registry.npmjs.org/camera-controls/-/camera-controls-2.9.0.tgz" 1115 | "version" "2.9.0" 1116 | 1117 | "caniuse-lite@^1.0.30001663": 1118 | "integrity" "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==" 1119 | "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz" 1120 | "version" "1.0.30001664" 1121 | 1122 | "chalk@^2.4.2": 1123 | "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" 1124 | "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" 1125 | "version" "2.4.2" 1126 | dependencies: 1127 | "ansi-styles" "^3.2.1" 1128 | "escape-string-regexp" "^1.0.5" 1129 | "supports-color" "^5.3.0" 1130 | 1131 | "color-convert@^1.9.0": 1132 | "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" 1133 | "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" 1134 | "version" "1.9.3" 1135 | dependencies: 1136 | "color-name" "1.1.3" 1137 | 1138 | "color-name@1.1.3": 1139 | "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 1140 | "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" 1141 | "version" "1.1.3" 1142 | 1143 | "colord@^2.9.2": 1144 | "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" 1145 | "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" 1146 | "version" "2.9.3" 1147 | 1148 | "compare-versions@^6.1.1": 1149 | "integrity" "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==" 1150 | "resolved" "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz" 1151 | "version" "6.1.1" 1152 | 1153 | "computeds@^0.0.1": 1154 | "integrity" "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==" 1155 | "resolved" "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz" 1156 | "version" "0.0.1" 1157 | 1158 | "concat-map@0.0.1": 1159 | "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 1160 | "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 1161 | "version" "0.0.1" 1162 | 1163 | "confbox@^0.1.7": 1164 | "integrity" "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==" 1165 | "resolved" "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz" 1166 | "version" "0.1.7" 1167 | 1168 | "convert-source-map@^2.0.0": 1169 | "integrity" "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" 1170 | "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" 1171 | "version" "2.0.0" 1172 | 1173 | "cross-env@^7.0.3": 1174 | "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" 1175 | "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" 1176 | "version" "7.0.3" 1177 | dependencies: 1178 | "cross-spawn" "^7.0.1" 1179 | 1180 | "cross-spawn@^7.0.1": 1181 | "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" 1182 | "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" 1183 | "version" "7.0.3" 1184 | dependencies: 1185 | "path-key" "^3.1.0" 1186 | "shebang-command" "^2.0.0" 1187 | "which" "^2.0.1" 1188 | 1189 | "csstype@^3.0.2": 1190 | "integrity" "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" 1191 | "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" 1192 | "version" "3.1.3" 1193 | 1194 | "de-indent@^1.0.2": 1195 | "integrity" "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" 1196 | "resolved" "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" 1197 | "version" "1.0.2" 1198 | 1199 | "debounce@^1.2.1": 1200 | "integrity" "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" 1201 | "resolved" "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" 1202 | "version" "1.2.1" 1203 | 1204 | "debug@^4.1.0", "debug@^4.3.1", "debug@^4.3.4", "debug@^4.3.6": 1205 | "integrity" "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==" 1206 | "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" 1207 | "version" "4.3.7" 1208 | dependencies: 1209 | "ms" "^2.1.3" 1210 | 1211 | "dequal@^2.0.2": 1212 | "integrity" "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" 1213 | "resolved" "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" 1214 | "version" "2.0.3" 1215 | 1216 | "detect-gpu@^5.0.28": 1217 | "integrity" "sha512-Bzuv0ZTC9AqIVwoWqtBJW91rNR9vT5F5DeIEb6x82WZC55848i9FFyRR+kswCuW3IfCtMNyiIxRuL2EWlF4Ihw==" 1218 | "resolved" "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.50.tgz" 1219 | "version" "5.0.50" 1220 | dependencies: 1221 | "webgl-constants" "^1.1.1" 1222 | 1223 | "draco3d@^1.4.1": 1224 | "integrity" "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==" 1225 | "resolved" "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz" 1226 | "version" "1.5.7" 1227 | 1228 | "electron-to-chromium@^1.5.28": 1229 | "integrity" "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==" 1230 | "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz" 1231 | "version" "1.5.29" 1232 | 1233 | "entities@^4.5.0": 1234 | "integrity" "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" 1235 | "resolved" "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" 1236 | "version" "4.5.0" 1237 | 1238 | "esbuild@^0.21.3": 1239 | "integrity" "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==" 1240 | "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz" 1241 | "version" "0.21.5" 1242 | optionalDependencies: 1243 | "@esbuild/aix-ppc64" "0.21.5" 1244 | "@esbuild/android-arm" "0.21.5" 1245 | "@esbuild/android-arm64" "0.21.5" 1246 | "@esbuild/android-x64" "0.21.5" 1247 | "@esbuild/darwin-arm64" "0.21.5" 1248 | "@esbuild/darwin-x64" "0.21.5" 1249 | "@esbuild/freebsd-arm64" "0.21.5" 1250 | "@esbuild/freebsd-x64" "0.21.5" 1251 | "@esbuild/linux-arm" "0.21.5" 1252 | "@esbuild/linux-arm64" "0.21.5" 1253 | "@esbuild/linux-ia32" "0.21.5" 1254 | "@esbuild/linux-loong64" "0.21.5" 1255 | "@esbuild/linux-mips64el" "0.21.5" 1256 | "@esbuild/linux-ppc64" "0.21.5" 1257 | "@esbuild/linux-riscv64" "0.21.5" 1258 | "@esbuild/linux-s390x" "0.21.5" 1259 | "@esbuild/linux-x64" "0.21.5" 1260 | "@esbuild/netbsd-x64" "0.21.5" 1261 | "@esbuild/openbsd-x64" "0.21.5" 1262 | "@esbuild/sunos-x64" "0.21.5" 1263 | "@esbuild/win32-arm64" "0.21.5" 1264 | "@esbuild/win32-ia32" "0.21.5" 1265 | "@esbuild/win32-x64" "0.21.5" 1266 | 1267 | "escalade@^3.2.0": 1268 | "integrity" "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" 1269 | "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" 1270 | "version" "3.2.0" 1271 | 1272 | "escape-string-regexp@^1.0.5": 1273 | "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 1274 | "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 1275 | "version" "1.0.5" 1276 | 1277 | "eslint-visitor-keys@^3.3.0", "eslint-visitor-keys@^3.4.3": 1278 | "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" 1279 | "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" 1280 | "version" "3.4.3" 1281 | 1282 | "estree-walker@^2.0.2": 1283 | "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1284 | "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" 1285 | "version" "2.0.2" 1286 | 1287 | "extend-shallow@^2.0.1": 1288 | "integrity" "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==" 1289 | "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" 1290 | "version" "2.0.1" 1291 | dependencies: 1292 | "is-extendable" "^0.1.0" 1293 | 1294 | "extend-shallow@^3.0.0": 1295 | "integrity" "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==" 1296 | "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" 1297 | "version" "3.0.2" 1298 | dependencies: 1299 | "assign-symbols" "^1.0.0" 1300 | "is-extendable" "^1.0.1" 1301 | 1302 | "fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": 1303 | "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1304 | "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 1305 | "version" "3.1.3" 1306 | 1307 | "fast-glob@^3.3.2": 1308 | "integrity" "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==" 1309 | "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" 1310 | "version" "3.3.2" 1311 | dependencies: 1312 | "@nodelib/fs.stat" "^2.0.2" 1313 | "@nodelib/fs.walk" "^1.2.3" 1314 | "glob-parent" "^5.1.2" 1315 | "merge2" "^1.3.0" 1316 | "micromatch" "^4.0.4" 1317 | 1318 | "fastq@^1.6.0": 1319 | "integrity" "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==" 1320 | "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" 1321 | "version" "1.17.1" 1322 | dependencies: 1323 | "reusify" "^1.0.4" 1324 | 1325 | "fflate@^0.6.9": 1326 | "integrity" "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==" 1327 | "resolved" "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz" 1328 | "version" "0.6.10" 1329 | 1330 | "fflate@~0.8.2": 1331 | "integrity" "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" 1332 | "resolved" "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz" 1333 | "version" "0.8.2" 1334 | 1335 | "file-selector@^0.5.0": 1336 | "integrity" "sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==" 1337 | "resolved" "https://registry.npmjs.org/file-selector/-/file-selector-0.5.0.tgz" 1338 | "version" "0.5.0" 1339 | dependencies: 1340 | "tslib" "^2.0.3" 1341 | 1342 | "fill-range@^7.1.1": 1343 | "integrity" "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==" 1344 | "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" 1345 | "version" "7.1.1" 1346 | dependencies: 1347 | "to-regex-range" "^5.0.1" 1348 | 1349 | "for-in@^1.0.2": 1350 | "integrity" "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" 1351 | "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" 1352 | "version" "1.0.2" 1353 | 1354 | "fs-extra@~7.0.1": 1355 | "integrity" "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==" 1356 | "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" 1357 | "version" "7.0.1" 1358 | dependencies: 1359 | "graceful-fs" "^4.1.2" 1360 | "jsonfile" "^4.0.0" 1361 | "universalify" "^0.1.0" 1362 | 1363 | "function-bind@^1.1.2": 1364 | "integrity" "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" 1365 | "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" 1366 | "version" "1.1.2" 1367 | 1368 | "gensync@^1.0.0-beta.2": 1369 | "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" 1370 | "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" 1371 | "version" "1.0.0-beta.2" 1372 | 1373 | "get-value@^2.0.6": 1374 | "integrity" "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" 1375 | "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" 1376 | "version" "2.0.6" 1377 | 1378 | "glob-parent@^5.1.2": 1379 | "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" 1380 | "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 1381 | "version" "5.1.2" 1382 | dependencies: 1383 | "is-glob" "^4.0.1" 1384 | 1385 | "globals@^11.1.0": 1386 | "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" 1387 | "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" 1388 | "version" "11.12.0" 1389 | 1390 | "globals@^15.9.0": 1391 | "integrity" "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==" 1392 | "resolved" "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz" 1393 | "version" "15.9.0" 1394 | 1395 | "glsl-noise@^0.0.0": 1396 | "integrity" "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==" 1397 | "resolved" "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz" 1398 | "version" "0.0.0" 1399 | 1400 | "graceful-fs@^4.1.2", "graceful-fs@^4.1.6": 1401 | "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 1402 | "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" 1403 | "version" "4.2.11" 1404 | 1405 | "graphemer@^1.4.0": 1406 | "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" 1407 | "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" 1408 | "version" "1.4.0" 1409 | 1410 | "has-flag@^3.0.0": 1411 | "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1412 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 1413 | "version" "3.0.0" 1414 | 1415 | "has-flag@^4.0.0": 1416 | "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1417 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 1418 | "version" "4.0.0" 1419 | 1420 | "hasown@^2.0.2": 1421 | "integrity" "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" 1422 | "resolved" "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" 1423 | "version" "2.0.2" 1424 | dependencies: 1425 | "function-bind" "^1.1.2" 1426 | 1427 | "he@^1.2.0": 1428 | "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" 1429 | "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" 1430 | "version" "1.2.0" 1431 | 1432 | "hls.js@1.3.5": 1433 | "integrity" "sha512-uybAvKS6uDe0MnWNEPnO0krWVr+8m2R0hJ/viql8H3MVK+itq8gGQuIYoFHL3rECkIpNH98Lw8YuuWMKZxp3Ew==" 1434 | "resolved" "https://registry.npmjs.org/hls.js/-/hls.js-1.3.5.tgz" 1435 | "version" "1.3.5" 1436 | 1437 | "ieee754@^1.2.1": 1438 | "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1439 | "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" 1440 | "version" "1.2.1" 1441 | 1442 | "ignore@^5.3.1": 1443 | "integrity" "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" 1444 | "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" 1445 | "version" "5.3.2" 1446 | 1447 | "immediate@~3.0.5": 1448 | "integrity" "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" 1449 | "resolved" "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" 1450 | "version" "3.0.6" 1451 | 1452 | "import-lazy@~4.0.0": 1453 | "integrity" "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==" 1454 | "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" 1455 | "version" "4.0.0" 1456 | 1457 | "is-core-module@^2.13.0": 1458 | "integrity" "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==" 1459 | "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz" 1460 | "version" "2.15.1" 1461 | dependencies: 1462 | "hasown" "^2.0.2" 1463 | 1464 | "is-extendable@^0.1.0": 1465 | "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" 1466 | "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 1467 | "version" "0.1.1" 1468 | 1469 | "is-extendable@^0.1.1": 1470 | "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" 1471 | "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 1472 | "version" "0.1.1" 1473 | 1474 | "is-extendable@^1.0.0", "is-extendable@^1.0.1": 1475 | "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" 1476 | "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" 1477 | "version" "1.0.1" 1478 | dependencies: 1479 | "is-plain-object" "^2.0.4" 1480 | 1481 | "is-extglob@^2.1.1": 1482 | "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 1483 | "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 1484 | "version" "2.1.1" 1485 | 1486 | "is-glob@^4.0.1", "is-glob@^4.0.3": 1487 | "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" 1488 | "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 1489 | "version" "4.0.3" 1490 | dependencies: 1491 | "is-extglob" "^2.1.1" 1492 | 1493 | "is-number@^7.0.0": 1494 | "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1495 | "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 1496 | "version" "7.0.0" 1497 | 1498 | "is-plain-object@^2.0.3", "is-plain-object@^2.0.4": 1499 | "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" 1500 | "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" 1501 | "version" "2.0.4" 1502 | dependencies: 1503 | "isobject" "^3.0.1" 1504 | 1505 | "is-promise@^2.1.0": 1506 | "integrity" "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" 1507 | "resolved" "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" 1508 | "version" "2.2.2" 1509 | 1510 | "isexe@^2.0.0": 1511 | "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1512 | "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 1513 | "version" "2.0.0" 1514 | 1515 | "isobject@^3.0.1": 1516 | "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" 1517 | "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" 1518 | "version" "3.0.1" 1519 | 1520 | "its-fine@^1.0.6": 1521 | "integrity" "sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==" 1522 | "resolved" "https://registry.npmjs.org/its-fine/-/its-fine-1.2.5.tgz" 1523 | "version" "1.2.5" 1524 | dependencies: 1525 | "@types/react-reconciler" "^0.28.0" 1526 | 1527 | "jju@~1.4.0": 1528 | "integrity" "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" 1529 | "resolved" "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz" 1530 | "version" "1.4.0" 1531 | 1532 | "js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": 1533 | "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1534 | "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 1535 | "version" "4.0.0" 1536 | 1537 | "jsesc@^2.5.1": 1538 | "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" 1539 | "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" 1540 | "version" "2.5.2" 1541 | 1542 | "json-schema-traverse@^1.0.0": 1543 | "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" 1544 | "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" 1545 | "version" "1.0.0" 1546 | 1547 | "json5@^2.2.3": 1548 | "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" 1549 | "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" 1550 | "version" "2.2.3" 1551 | 1552 | "jsonfile@^4.0.0": 1553 | "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" 1554 | "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" 1555 | "version" "4.0.0" 1556 | optionalDependencies: 1557 | "graceful-fs" "^4.1.6" 1558 | 1559 | "kolorist@^1.8.0": 1560 | "integrity" "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" 1561 | "resolved" "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz" 1562 | "version" "1.8.0" 1563 | 1564 | "leva@^0.9.35": 1565 | "integrity" "sha512-sp/ZbHGrrzM+eq+wIAc9X7C5qFagNERYkwaulKI/xy0XrDPV67jLUSSqTCFSoSc0Uk96j3oephYoO/6I8mZNuw==" 1566 | "resolved" "https://registry.npmjs.org/leva/-/leva-0.9.35.tgz" 1567 | "version" "0.9.35" 1568 | dependencies: 1569 | "@radix-ui/react-portal" "^1.0.2" 1570 | "@radix-ui/react-tooltip" "^1.0.5" 1571 | "@stitches/react" "^1.2.8" 1572 | "@use-gesture/react" "^10.2.5" 1573 | "colord" "^2.9.2" 1574 | "dequal" "^2.0.2" 1575 | "merge-value" "^1.0.0" 1576 | "react-colorful" "^5.5.1" 1577 | "react-dropzone" "^12.0.0" 1578 | "v8n" "^1.3.3" 1579 | "zustand" "^3.6.9" 1580 | 1581 | "lie@^3.0.2": 1582 | "integrity" "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==" 1583 | "resolved" "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" 1584 | "version" "3.3.0" 1585 | dependencies: 1586 | "immediate" "~3.0.5" 1587 | 1588 | "local-pkg@^0.5.0": 1589 | "integrity" "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==" 1590 | "resolved" "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz" 1591 | "version" "0.5.0" 1592 | dependencies: 1593 | "mlly" "^1.4.2" 1594 | "pkg-types" "^1.0.3" 1595 | 1596 | "lodash@~4.17.15": 1597 | "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1598 | "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 1599 | "version" "4.17.21" 1600 | 1601 | "loose-envify@^1.1.0", "loose-envify@^1.4.0": 1602 | "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" 1603 | "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" 1604 | "version" "1.4.0" 1605 | dependencies: 1606 | "js-tokens" "^3.0.0 || ^4.0.0" 1607 | 1608 | "lru-cache@^5.1.1": 1609 | "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" 1610 | "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" 1611 | "version" "5.1.1" 1612 | dependencies: 1613 | "yallist" "^3.0.2" 1614 | 1615 | "lru-cache@^6.0.0": 1616 | "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" 1617 | "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" 1618 | "version" "6.0.0" 1619 | dependencies: 1620 | "yallist" "^4.0.0" 1621 | 1622 | "maath@^0.10.7": 1623 | "integrity" "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==" 1624 | "resolved" "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz" 1625 | "version" "0.10.8" 1626 | 1627 | "magic-string@^0.30.11": 1628 | "integrity" "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==" 1629 | "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz" 1630 | "version" "0.30.11" 1631 | dependencies: 1632 | "@jridgewell/sourcemap-codec" "^1.5.0" 1633 | 1634 | "merge-value@^1.0.0": 1635 | "integrity" "sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==" 1636 | "resolved" "https://registry.npmjs.org/merge-value/-/merge-value-1.0.0.tgz" 1637 | "version" "1.0.0" 1638 | dependencies: 1639 | "get-value" "^2.0.6" 1640 | "is-extendable" "^1.0.0" 1641 | "mixin-deep" "^1.2.0" 1642 | "set-value" "^2.0.0" 1643 | 1644 | "merge2@^1.3.0": 1645 | "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 1646 | "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" 1647 | "version" "1.4.1" 1648 | 1649 | "meshline@^3.1.6": 1650 | "integrity" "sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==" 1651 | "resolved" "https://registry.npmjs.org/meshline/-/meshline-3.3.1.tgz" 1652 | "version" "3.3.1" 1653 | 1654 | "meshoptimizer@~0.18.1": 1655 | "integrity" "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==" 1656 | "resolved" "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz" 1657 | "version" "0.18.1" 1658 | 1659 | "micromatch@^4.0.4": 1660 | "integrity" "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==" 1661 | "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" 1662 | "version" "4.0.8" 1663 | dependencies: 1664 | "braces" "^3.0.3" 1665 | "picomatch" "^2.3.1" 1666 | 1667 | "minimatch@^9.0.3", "minimatch@^9.0.4": 1668 | "integrity" "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==" 1669 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" 1670 | "version" "9.0.5" 1671 | dependencies: 1672 | "brace-expansion" "^2.0.1" 1673 | 1674 | "minimatch@~3.0.3": 1675 | "integrity" "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==" 1676 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz" 1677 | "version" "3.0.8" 1678 | dependencies: 1679 | "brace-expansion" "^1.1.7" 1680 | 1681 | "mixin-deep@^1.2.0": 1682 | "integrity" "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==" 1683 | "resolved" "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" 1684 | "version" "1.3.2" 1685 | dependencies: 1686 | "for-in" "^1.0.2" 1687 | "is-extendable" "^1.0.1" 1688 | 1689 | "mlly@^1.4.2", "mlly@^1.7.1": 1690 | "integrity" "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==" 1691 | "resolved" "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz" 1692 | "version" "1.7.1" 1693 | dependencies: 1694 | "acorn" "^8.11.3" 1695 | "pathe" "^1.1.2" 1696 | "pkg-types" "^1.1.1" 1697 | "ufo" "^1.5.3" 1698 | 1699 | "ms@^2.1.3": 1700 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1701 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1702 | "version" "2.1.3" 1703 | 1704 | "muggle-string@^0.4.1": 1705 | "integrity" "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==" 1706 | "resolved" "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz" 1707 | "version" "0.4.1" 1708 | 1709 | "nanoid@^3.3.7": 1710 | "integrity" "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" 1711 | "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" 1712 | "version" "3.3.7" 1713 | 1714 | "natural-compare@^1.4.0": 1715 | "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" 1716 | "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" 1717 | "version" "1.4.0" 1718 | 1719 | "node-releases@^2.0.18": 1720 | "integrity" "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" 1721 | "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz" 1722 | "version" "2.0.18" 1723 | 1724 | "object-assign@^4.1.1": 1725 | "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1726 | "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 1727 | "version" "4.1.1" 1728 | 1729 | "path-browserify@^1.0.1": 1730 | "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" 1731 | "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" 1732 | "version" "1.0.1" 1733 | 1734 | "path-key@^3.1.0": 1735 | "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 1736 | "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 1737 | "version" "3.1.1" 1738 | 1739 | "path-parse@^1.0.7": 1740 | "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1741 | "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1742 | "version" "1.0.7" 1743 | 1744 | "pathe@^1.1.2": 1745 | "integrity" "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" 1746 | "resolved" "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz" 1747 | "version" "1.1.2" 1748 | 1749 | "picocolors@^1.0.0", "picocolors@^1.1.0": 1750 | "integrity" "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" 1751 | "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz" 1752 | "version" "1.1.0" 1753 | 1754 | "picomatch@^2.3.1": 1755 | "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1756 | "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1757 | "version" "2.3.1" 1758 | 1759 | "pkg-types@^1.0.3", "pkg-types@^1.1.1": 1760 | "integrity" "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==" 1761 | "resolved" "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz" 1762 | "version" "1.2.0" 1763 | dependencies: 1764 | "confbox" "^0.1.7" 1765 | "mlly" "^1.7.1" 1766 | "pathe" "^1.1.2" 1767 | 1768 | "postcss@^8.4.43": 1769 | "integrity" "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==" 1770 | "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz" 1771 | "version" "8.4.47" 1772 | dependencies: 1773 | "nanoid" "^3.3.7" 1774 | "picocolors" "^1.1.0" 1775 | "source-map-js" "^1.2.1" 1776 | 1777 | "potpack@^1.0.1": 1778 | "integrity" "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" 1779 | "resolved" "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz" 1780 | "version" "1.0.2" 1781 | 1782 | "promise-worker-transferable@^1.0.4": 1783 | "integrity" "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==" 1784 | "resolved" "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz" 1785 | "version" "1.0.4" 1786 | dependencies: 1787 | "is-promise" "^2.1.0" 1788 | "lie" "^3.0.2" 1789 | 1790 | "prop-types@^15.6.0", "prop-types@^15.8.1": 1791 | "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" 1792 | "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" 1793 | "version" "15.8.1" 1794 | dependencies: 1795 | "loose-envify" "^1.4.0" 1796 | "object-assign" "^4.1.1" 1797 | "react-is" "^16.13.1" 1798 | 1799 | "punycode@^2.1.0": 1800 | "integrity" "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" 1801 | "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" 1802 | "version" "2.3.1" 1803 | 1804 | "queue-microtask@^1.2.2": 1805 | "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 1806 | "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" 1807 | "version" "1.2.3" 1808 | 1809 | "react-colorful@^5.5.1": 1810 | "integrity" "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==" 1811 | "resolved" "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz" 1812 | "version" "5.6.1" 1813 | 1814 | "react-composer@^5.0.3": 1815 | "integrity" "sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==" 1816 | "resolved" "https://registry.npmjs.org/react-composer/-/react-composer-5.0.3.tgz" 1817 | "version" "5.0.3" 1818 | dependencies: 1819 | "prop-types" "^15.6.0" 1820 | 1821 | "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^18.3.1", "react-dom@>=16.13", "react-dom@>=16.8.0", "react-dom@>=18.0": 1822 | "integrity" "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==" 1823 | "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" 1824 | "version" "18.3.1" 1825 | dependencies: 1826 | "loose-envify" "^1.1.0" 1827 | "scheduler" "^0.23.2" 1828 | 1829 | "react-dropzone@^12.0.0": 1830 | "integrity" "sha512-iBYHA1rbopIvtzokEX4QubO6qk5IF/x3BtKGu74rF2JkQDXnwC4uO/lHKpaw4PJIV6iIAYOlwLv2FpiGyqHNog==" 1831 | "resolved" "https://registry.npmjs.org/react-dropzone/-/react-dropzone-12.1.0.tgz" 1832 | "version" "12.1.0" 1833 | dependencies: 1834 | "attr-accept" "^2.2.2" 1835 | "file-selector" "^0.5.0" 1836 | "prop-types" "^15.8.1" 1837 | 1838 | "react-icons@^5.3.0": 1839 | "integrity" "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==" 1840 | "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz" 1841 | "version" "5.3.0" 1842 | 1843 | "react-is@^16.13.1": 1844 | "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 1845 | "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" 1846 | "version" "16.13.1" 1847 | 1848 | "react-reconciler@^0.27.0": 1849 | "integrity" "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==" 1850 | "resolved" "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz" 1851 | "version" "0.27.0" 1852 | dependencies: 1853 | "loose-envify" "^1.1.0" 1854 | "scheduler" "^0.21.0" 1855 | 1856 | "react-refresh@^0.14.2": 1857 | "integrity" "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==" 1858 | "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz" 1859 | "version" "0.14.2" 1860 | 1861 | "react@*", "react@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^18.0.0", "react@^18.3.1", "react@>= 16.3.0", "react@>= 16.8", "react@>= 16.8.0", "react@>=16.13", "react@>=16.8", "react@>=16.8.0", "react@>=17.0", "react@>=18.0": 1862 | "integrity" "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==" 1863 | "resolved" "https://registry.npmjs.org/react/-/react-18.3.1.tgz" 1864 | "version" "18.3.1" 1865 | dependencies: 1866 | "loose-envify" "^1.1.0" 1867 | 1868 | "regenerator-runtime@^0.14.0": 1869 | "integrity" "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" 1870 | "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" 1871 | "version" "0.14.1" 1872 | 1873 | "require-from-string@^2.0.2": 1874 | "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" 1875 | "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" 1876 | "version" "2.0.2" 1877 | 1878 | "resolve@~1.22.1", "resolve@~1.22.2": 1879 | "integrity" "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==" 1880 | "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" 1881 | "version" "1.22.8" 1882 | dependencies: 1883 | "is-core-module" "^2.13.0" 1884 | "path-parse" "^1.0.7" 1885 | "supports-preserve-symlinks-flag" "^1.0.0" 1886 | 1887 | "reusify@^1.0.4": 1888 | "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 1889 | "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" 1890 | "version" "1.0.4" 1891 | 1892 | "rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0", "rollup@^4.20.0": 1893 | "integrity" "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==" 1894 | "resolved" "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz" 1895 | "version" "4.22.5" 1896 | dependencies: 1897 | "@types/estree" "1.0.6" 1898 | optionalDependencies: 1899 | "@rollup/rollup-android-arm-eabi" "4.22.5" 1900 | "@rollup/rollup-android-arm64" "4.22.5" 1901 | "@rollup/rollup-darwin-arm64" "4.22.5" 1902 | "@rollup/rollup-darwin-x64" "4.22.5" 1903 | "@rollup/rollup-linux-arm-gnueabihf" "4.22.5" 1904 | "@rollup/rollup-linux-arm-musleabihf" "4.22.5" 1905 | "@rollup/rollup-linux-arm64-gnu" "4.22.5" 1906 | "@rollup/rollup-linux-arm64-musl" "4.22.5" 1907 | "@rollup/rollup-linux-powerpc64le-gnu" "4.22.5" 1908 | "@rollup/rollup-linux-riscv64-gnu" "4.22.5" 1909 | "@rollup/rollup-linux-s390x-gnu" "4.22.5" 1910 | "@rollup/rollup-linux-x64-gnu" "4.22.5" 1911 | "@rollup/rollup-linux-x64-musl" "4.22.5" 1912 | "@rollup/rollup-win32-arm64-msvc" "4.22.5" 1913 | "@rollup/rollup-win32-ia32-msvc" "4.22.5" 1914 | "@rollup/rollup-win32-x64-msvc" "4.22.5" 1915 | "fsevents" "~2.3.2" 1916 | 1917 | "run-parallel@^1.1.9": 1918 | "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" 1919 | "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" 1920 | "version" "1.2.0" 1921 | dependencies: 1922 | "queue-microtask" "^1.2.2" 1923 | 1924 | "scheduler@^0.21.0": 1925 | "integrity" "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==" 1926 | "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz" 1927 | "version" "0.21.0" 1928 | dependencies: 1929 | "loose-envify" "^1.1.0" 1930 | 1931 | "scheduler@^0.23.2": 1932 | "integrity" "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==" 1933 | "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz" 1934 | "version" "0.23.2" 1935 | dependencies: 1936 | "loose-envify" "^1.1.0" 1937 | 1938 | "semver@^6.3.1": 1939 | "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" 1940 | "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" 1941 | "version" "6.3.1" 1942 | 1943 | "semver@^7.6.0": 1944 | "integrity" "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" 1945 | "resolved" "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" 1946 | "version" "7.6.3" 1947 | 1948 | "semver@~7.5.4": 1949 | "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" 1950 | "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" 1951 | "version" "7.5.4" 1952 | dependencies: 1953 | "lru-cache" "^6.0.0" 1954 | 1955 | "set-value@^2.0.0": 1956 | "integrity" "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==" 1957 | "resolved" "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" 1958 | "version" "2.0.1" 1959 | dependencies: 1960 | "extend-shallow" "^2.0.1" 1961 | "is-extendable" "^0.1.1" 1962 | "is-plain-object" "^2.0.3" 1963 | "split-string" "^3.0.1" 1964 | 1965 | "shebang-command@^2.0.0": 1966 | "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" 1967 | "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 1968 | "version" "2.0.0" 1969 | dependencies: 1970 | "shebang-regex" "^3.0.0" 1971 | 1972 | "shebang-regex@^3.0.0": 1973 | "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 1974 | "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 1975 | "version" "3.0.0" 1976 | 1977 | "source-map-js@^1.2.0", "source-map-js@^1.2.1": 1978 | "integrity" "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" 1979 | "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" 1980 | "version" "1.2.1" 1981 | 1982 | "source-map@~0.6.1": 1983 | "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1984 | "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" 1985 | "version" "0.6.1" 1986 | 1987 | "split-string@^3.0.1": 1988 | "integrity" "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==" 1989 | "resolved" "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" 1990 | "version" "3.1.0" 1991 | dependencies: 1992 | "extend-shallow" "^3.0.0" 1993 | 1994 | "sprintf-js@~1.0.2": 1995 | "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" 1996 | "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" 1997 | "version" "1.0.3" 1998 | 1999 | "stats-gl@^2.0.0": 2000 | "integrity" "sha512-94G5nZvduDmzxBS7K0lYnynYwreZpkknD8g5dZmU6mpwIhy3caCrjAm11Qm1cbyx7mqix7Fp00RkbsonzKWnoQ==" 2001 | "resolved" "https://registry.npmjs.org/stats-gl/-/stats-gl-2.2.8.tgz" 2002 | "version" "2.2.8" 2003 | dependencies: 2004 | "@types/three" "^0.163.0" 2005 | 2006 | "stats.js@^0.17.0": 2007 | "integrity" "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" 2008 | "resolved" "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz" 2009 | "version" "0.17.0" 2010 | 2011 | "string-argv@~0.3.1": 2012 | "integrity" "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==" 2013 | "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" 2014 | "version" "0.3.2" 2015 | 2016 | "strip-json-comments@~3.1.1": 2017 | "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" 2018 | "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 2019 | "version" "3.1.1" 2020 | 2021 | "supports-color@^5.3.0": 2022 | "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" 2023 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 2024 | "version" "5.5.0" 2025 | dependencies: 2026 | "has-flag" "^3.0.0" 2027 | 2028 | "supports-color@~8.1.1": 2029 | "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" 2030 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" 2031 | "version" "8.1.1" 2032 | dependencies: 2033 | "has-flag" "^4.0.0" 2034 | 2035 | "supports-preserve-symlinks-flag@^1.0.0": 2036 | "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" 2037 | "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 2038 | "version" "1.0.0" 2039 | 2040 | "suspend-react@^0.1.3": 2041 | "integrity" "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==" 2042 | "resolved" "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz" 2043 | "version" "0.1.3" 2044 | 2045 | "three-gpu-pathtracer@^0.0.13": 2046 | "integrity" "sha512-GpgGQq75HWqtixHjJ1FEYd6Yv4v1ZNjjUw+Tg1locO4OsQhSLCZ3ycYc5pAZ8PV5TmfANvpnLF8HGfWd8GxvDQ==" 2047 | "resolved" "https://registry.npmjs.org/three-gpu-pathtracer/-/three-gpu-pathtracer-0.0.13.tgz" 2048 | "version" "0.0.13" 2049 | dependencies: 2050 | "three-mesh-bvh" "^0.5.19" 2051 | 2052 | "three-gpu-pathtracer@^0.0.23": 2053 | "integrity" "sha512-CjMX5YU3ajDklOv3hW1EQ4CCkPLiLR+jB31w6G5WLf6Nasemib62tmCj45vBK5ItKAD0aHG1NWc479gXzk6fOQ==" 2054 | "resolved" "https://registry.npmjs.org/three-gpu-pathtracer/-/three-gpu-pathtracer-0.0.23.tgz" 2055 | "version" "0.0.23" 2056 | 2057 | "three-mesh-bvh@^0.5.19": 2058 | "integrity" "sha512-VTIgfjz8aFoPKTQoMIQQv9jJD4ybFRZuKKE1/kqy78FQcuHQ0+iIWv7C5cSb2inlvs7bNMVY3yRx3RXGZfrvzQ==" 2059 | "resolved" "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.5.24.tgz" 2060 | "version" "0.5.24" 2061 | 2062 | "three-mesh-bvh@^0.7.8", "three-mesh-bvh@>=0.7.4": 2063 | "integrity" "sha512-BGEZTOIC14U0XIRw3tO4jY7IjP7n7v24nv9JXS1CyeVRWOCkcOMhRnmENUjuV39gktAw4Ofhr0OvIAiTspQrrw==" 2064 | "resolved" "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.7.8.tgz" 2065 | "version" "0.7.8" 2066 | 2067 | "three-stdlib@^2.29.9": 2068 | "integrity" "sha512-V/uycBuqQOP/3Z+FBtpMdj2Ds5PyfJ3VDfMzktEmG4niOIzv7q1y5uMSbMcng0+057m1l0N147FQxsodQo9zBg==" 2069 | "resolved" "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.33.0.tgz" 2070 | "version" "2.33.0" 2071 | dependencies: 2072 | "@types/draco3d" "^1.4.0" 2073 | "@types/offscreencanvas" "^2019.6.4" 2074 | "@types/webxr" "^0.5.2" 2075 | "draco3d" "^1.4.1" 2076 | "fflate" "^0.6.9" 2077 | "potpack" "^1.0.1" 2078 | 2079 | "three@^0.169.0", "three@>= 0.123.0", "three@>= 0.151.0", "three@>= 0.159.0", "three@>=0.125.0", "three@>=0.126", "three@>=0.126.1", "three@>=0.128.0", "three@>=0.133", "three@>=0.134.0", "three@>=0.137", "three@>=0.139.2", "three@>=0.149", "three@>=0.151.0": 2080 | "integrity" "sha512-Ed906MA3dR4TS5riErd4QBsRGPcx+HBDX2O5yYE5GqJeFQTPU+M56Va/f/Oph9X7uZo3W3o4l2ZhBZ6f6qUv0w==" 2081 | "resolved" "https://registry.npmjs.org/three/-/three-0.169.0.tgz" 2082 | "version" "0.169.0" 2083 | 2084 | "to-fast-properties@^2.0.0": 2085 | "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" 2086 | "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" 2087 | "version" "2.0.0" 2088 | 2089 | "to-regex-range@^5.0.1": 2090 | "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" 2091 | "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 2092 | "version" "5.0.1" 2093 | dependencies: 2094 | "is-number" "^7.0.0" 2095 | 2096 | "troika-three-text@^0.49.0": 2097 | "integrity" "sha512-lXGWxgjJP9kw4i4Wh+0k0Q/7cRfS6iOME4knKht/KozPu9GcFA9NnNpRvehIhrUawq9B0ZRw+0oiFHgRO+4Wig==" 2098 | "resolved" "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.49.1.tgz" 2099 | "version" "0.49.1" 2100 | dependencies: 2101 | "bidi-js" "^1.0.2" 2102 | "troika-three-utils" "^0.49.0" 2103 | "troika-worker-utils" "^0.49.0" 2104 | "webgl-sdf-generator" "1.1.1" 2105 | 2106 | "troika-three-utils@^0.49.0": 2107 | "integrity" "sha512-umitFL4cT+Fm/uONmaQEq4oZlyRHWwVClaS6ZrdcueRvwc2w+cpNQ47LlJKJswpqtMFWbEhOLy0TekmcPZOdYA==" 2108 | "resolved" "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.49.0.tgz" 2109 | "version" "0.49.0" 2110 | 2111 | "troika-worker-utils@^0.49.0": 2112 | "integrity" "sha512-1xZHoJrG0HFfCvT/iyN41DvI/nRykiBtHqFkGaGgJwq5iXfIZFBiPPEHFpPpgyKM3Oo5ITHXP5wM2TNQszYdVg==" 2113 | "resolved" "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.49.0.tgz" 2114 | "version" "0.49.0" 2115 | 2116 | "ts-api-utils@^1.3.0": 2117 | "integrity" "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==" 2118 | "resolved" "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz" 2119 | "version" "1.3.0" 2120 | 2121 | "tslib@^2.0.3": 2122 | "integrity" "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" 2123 | "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz" 2124 | "version" "2.7.0" 2125 | 2126 | "tunnel-rat@^0.1.2": 2127 | "integrity" "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==" 2128 | "resolved" "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz" 2129 | "version" "0.1.2" 2130 | dependencies: 2131 | "zustand" "^4.3.2" 2132 | 2133 | "typescript-eslint@^8.0.1": 2134 | "integrity" "sha512-nEHbEYJyHwsuf7c3V3RS7Saq+1+la3i0ieR3qP0yjqWSzVmh8Drp47uOl9LjbPANac4S7EFSqvcYIKXUUwIfIQ==" 2135 | "resolved" "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.7.0.tgz" 2136 | "version" "8.7.0" 2137 | dependencies: 2138 | "@typescript-eslint/eslint-plugin" "8.7.0" 2139 | "@typescript-eslint/parser" "8.7.0" 2140 | "@typescript-eslint/utils" "8.7.0" 2141 | 2142 | "typescript@*", "typescript@^5.5.3", "typescript@>=4.2.0": 2143 | "integrity" "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==" 2144 | "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz" 2145 | "version" "5.6.2" 2146 | 2147 | "typescript@5.4.2": 2148 | "integrity" "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==" 2149 | "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz" 2150 | "version" "5.4.2" 2151 | 2152 | "ufo@^1.5.3": 2153 | "integrity" "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" 2154 | "resolved" "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz" 2155 | "version" "1.5.4" 2156 | 2157 | "undici-types@~6.19.2": 2158 | "integrity" "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" 2159 | "resolved" "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" 2160 | "version" "6.19.8" 2161 | 2162 | "universalify@^0.1.0": 2163 | "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 2164 | "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" 2165 | "version" "0.1.2" 2166 | 2167 | "update-browserslist-db@^1.1.0": 2168 | "integrity" "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==" 2169 | "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz" 2170 | "version" "1.1.1" 2171 | dependencies: 2172 | "escalade" "^3.2.0" 2173 | "picocolors" "^1.1.0" 2174 | 2175 | "uri-js@^4.2.2", "uri-js@^4.4.1": 2176 | "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" 2177 | "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 2178 | "version" "4.4.1" 2179 | dependencies: 2180 | "punycode" "^2.1.0" 2181 | 2182 | "use-sync-external-store@1.2.2": 2183 | "integrity" "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==" 2184 | "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz" 2185 | "version" "1.2.2" 2186 | 2187 | "utility-types@^3.10.0": 2188 | "integrity" "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==" 2189 | "resolved" "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz" 2190 | "version" "3.11.0" 2191 | 2192 | "uuid@^9.0.1": 2193 | "integrity" "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" 2194 | "resolved" "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" 2195 | "version" "9.0.1" 2196 | 2197 | "v8n@^1.3.3": 2198 | "integrity" "sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==" 2199 | "resolved" "https://registry.npmjs.org/v8n/-/v8n-1.5.1.tgz" 2200 | "version" "1.5.1" 2201 | 2202 | "vite-plugin-dts@^4.2.1": 2203 | "integrity" "sha512-USwTMReZFf8yXV+cKkm4WOMqmFjbReAvkyxON5xzdnZzJEBnFgax6BBDZIGGr9WMJYvhHdpaIHLrOjXDcla4OA==" 2204 | "resolved" "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.2.2.tgz" 2205 | "version" "4.2.2" 2206 | dependencies: 2207 | "@microsoft/api-extractor" "7.47.7" 2208 | "@rollup/pluginutils" "^5.1.0" 2209 | "@volar/typescript" "^2.4.4" 2210 | "@vue/language-core" "2.1.6" 2211 | "compare-versions" "^6.1.1" 2212 | "debug" "^4.3.6" 2213 | "kolorist" "^1.8.0" 2214 | "local-pkg" "^0.5.0" 2215 | "magic-string" "^0.30.11" 2216 | 2217 | "vite@*", "vite@^4.2.0 || ^5.0.0", "vite@^5.4.1": 2218 | "integrity" "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==" 2219 | "resolved" "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz" 2220 | "version" "5.4.8" 2221 | dependencies: 2222 | "esbuild" "^0.21.3" 2223 | "postcss" "^8.4.43" 2224 | "rollup" "^4.20.0" 2225 | optionalDependencies: 2226 | "fsevents" "~2.3.3" 2227 | 2228 | "vscode-uri@^3.0.8": 2229 | "integrity" "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" 2230 | "resolved" "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz" 2231 | "version" "3.0.8" 2232 | 2233 | "webgl-constants@^1.1.1": 2234 | "integrity" "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==" 2235 | "resolved" "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz" 2236 | "version" "1.1.1" 2237 | 2238 | "webgl-sdf-generator@1.1.1": 2239 | "integrity" "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==" 2240 | "resolved" "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz" 2241 | "version" "1.1.1" 2242 | 2243 | "which@^2.0.1": 2244 | "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" 2245 | "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 2246 | "version" "2.0.2" 2247 | dependencies: 2248 | "isexe" "^2.0.0" 2249 | 2250 | "xatlas-web@^0.1.0": 2251 | "integrity" "sha512-PprVfuXbaIskxLTLBUQRaWfgSy9xUQqAMIRooOw0P6NYqwgh6T0voeer6+Z5M7AFt5SGXUybuww/uDGs1yw8vQ==" 2252 | "resolved" "https://registry.npmjs.org/xatlas-web/-/xatlas-web-0.1.0.tgz" 2253 | "version" "0.1.0" 2254 | 2255 | "yallist@^3.0.2": 2256 | "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 2257 | "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" 2258 | "version" "3.1.1" 2259 | 2260 | "yallist@^4.0.0": 2261 | "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2262 | "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" 2263 | "version" "4.0.0" 2264 | 2265 | "zustand@^3.6.9", "zustand@^3.7.1": 2266 | "integrity" "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==" 2267 | "resolved" "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz" 2268 | "version" "3.7.2" 2269 | 2270 | "zustand@^4.3.2": 2271 | "integrity" "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==" 2272 | "resolved" "https://registry.npmjs.org/zustand/-/zustand-4.5.5.tgz" 2273 | "version" "4.5.5" 2274 | dependencies: 2275 | "use-sync-external-store" "1.2.2" 2276 | --------------------------------------------------------------------------------