├── .gitignore ├── public ├── noise.jpg ├── favicon.ico └── noise3D.jpg ├── .prettierrc ├── src ├── index.jsx ├── index.html ├── css │ └── base.css └── App.jsx ├── vite.config.js ├── package.json ├── README.md ├── LICENSE └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.cache 3 | package-lock.json 4 | dist -------------------------------------------------------------------------------- /public/noise.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattrossman/magic-marble-tutorial/HEAD/public/noise.jpg -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattrossman/magic-marble-tutorial/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/noise3D.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattrossman/magic-marble-tutorial/HEAD/public/noise3D.jpg -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 140, 3 | "useTabs": false, 4 | "semi": false, 5 | "singleQuote": true, 6 | "trailingComma": "es5", 7 | "bracketSpacing": true, 8 | "jsxBracketSameLine": false 9 | } -------------------------------------------------------------------------------- /src/index.jsx: -------------------------------------------------------------------------------- 1 | import ReactDOM from 'react-dom' 2 | import App from './App' 3 | 4 | ReactDOM.render( 5 | 6 | 7 | , 8 | document.getElementById('root') 9 | ) 10 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import reactRefresh from '@vitejs/plugin-react-refresh' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [reactRefresh()], 7 | root: 'src', 8 | base: '', 9 | publicDir: '../public', 10 | build: { 11 | outDir: '../dist' 12 | }, 13 | esbuild: { 14 | jsxInject: "import React from 'react'", 15 | }, 16 | server: { 17 | port: 1234, 18 | open: true, 19 | }, 20 | }) 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magic-marble-tutorial", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build", 7 | "serve": "vite preview" 8 | }, 9 | "dependencies": { 10 | "@react-three/drei": "^7.3.1", 11 | "@react-three/fiber": "^7.0.6", 12 | "react": "^17.0.2", 13 | "react-dom": "^17.0.2", 14 | "react-spring": "^9.2.3", 15 | "three": "^0.131.1" 16 | }, 17 | "devDependencies": { 18 | "@vitejs/plugin-react-refresh": "^1.3.6", 19 | "vite": "^2.4.4" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Magical Marbles in Three.js 2 | 3 | Adding volumetric effects to a built-in Three.js shader. 4 | 5 | ![Image Title](https://tympanus.net/codrops/wp-content/uploads/2021/08/marble.jpg) 6 | 7 | [Article on Codrops](https://tympanus.net/codrops/?p=55713) 8 | 9 | [Demo](http://tympanus.net/Tutorials/MagicalMarbles/) 10 | 11 | 12 | ## Installation 13 | 14 | Install dependencies: 15 | 16 | ``` 17 | yarn 18 | ``` 19 | 20 | Compile the code for development and start a local server: 21 | 22 | ``` 23 | yarn dev 24 | ``` 25 | 26 | Create the build: 27 | 28 | ``` 29 | yarn build 30 | ``` 31 | 32 | ## Misc 33 | 34 | Follow Matt: [Twitter](https://twitter.com/the_ross_man), [GitHub](https://github.com/mattrossman) 35 | 36 | Follow Codrops: [Twitter](http://www.twitter.com/codrops), [Facebook](http://www.facebook.com/codrops), [GitHub](https://github.com/codrops), [Instagram](https://www.instagram.com/codropsss/) 37 | 38 | ## License 39 | [MIT](LICENSE) 40 | 41 | Made with :blue_heart: by [Codrops](http://www.codrops.com) 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2009 - 2020 [Codrops](https://tympanus.net/codrops) 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 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Magical Marbles in Three.js | Codrops 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |
21 |

Magical Marbles in Three.js

22 |
23 | 28 |
29 |
30 | 31 |
32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /src/css/base.css: -------------------------------------------------------------------------------- 1 | *, 2 | *::after, 3 | *::before { 4 | box-sizing: border-box; 5 | } 6 | 7 | :root { 8 | font-size: 15px; 9 | } 10 | 11 | body #cdawrap { 12 | --cda-bottom: 2rem; 13 | --cda-left: 2rem; 14 | } 15 | 16 | body { 17 | margin: 0; 18 | --color-text: #fff; 19 | --color-bg: #000; 20 | --color-link: #f0f0f0; 21 | --color-link-hover: #fff; 22 | color: var(--color-text); 23 | background-color: var(--color-bg); 24 | font-family: filson-pro,-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif; 25 | -webkit-font-smoothing: antialiased; 26 | -moz-osx-font-smoothing: grayscale; 27 | } 28 | 29 | /* Page Loader */ 30 | .js .loading::before, 31 | .js .loading::after { 32 | content: ''; 33 | position: fixed; 34 | z-index: 1000; 35 | } 36 | 37 | .js .loading::before { 38 | top: 0; 39 | left: 0; 40 | width: 100%; 41 | height: 100%; 42 | background: var(--color-bg); 43 | } 44 | 45 | .js .loading::after { 46 | top: 50%; 47 | left: 50%; 48 | width: 60px; 49 | height: 60px; 50 | margin: -30px 0 0 -30px; 51 | border-radius: 50%; 52 | opacity: 0.4; 53 | background: var(--color-link); 54 | animation: loaderAnim 0.7s linear infinite alternate forwards; 55 | 56 | } 57 | 58 | @keyframes loaderAnim { 59 | to { 60 | opacity: 1; 61 | transform: scale3d(0.5,0.5,1); 62 | } 63 | } 64 | 65 | a { 66 | text-decoration: underline; 67 | color: var(--color-link); 68 | outline: none; 69 | } 70 | 71 | a:hover { 72 | text-decoration: none; 73 | color: var(--color-link-hover); 74 | outline: none; 75 | } 76 | 77 | /* Better focus styles from https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible */ 78 | a:focus { 79 | /* Provide a fallback style for browsers 80 | that don't support :focus-visible */ 81 | outline: none; 82 | background: lightgrey; 83 | } 84 | 85 | a:focus:not(:focus-visible) { 86 | /* Remove the focus indicator on mouse-focus for browsers 87 | that do support :focus-visible */ 88 | background: transparent; 89 | } 90 | 91 | a:focus-visible { 92 | /* Draw a very noticeable focus style for 93 | keyboard-focus on browsers that do support 94 | :focus-visible */ 95 | outline: 2px solid red; 96 | background: transparent; 97 | } 98 | 99 | .frame { 100 | padding: 3rem 5vw; 101 | text-align: center; 102 | position: relative; 103 | z-index: 1000; 104 | } 105 | 106 | .frame__title { 107 | font-size: 1rem; 108 | margin: 0 0 1rem; 109 | font-weight: normal; 110 | } 111 | 112 | .frame__links { 113 | display: inline; 114 | } 115 | 116 | .frame__links a:not(:last-child), 117 | .frame__demos a:not(:last-child) { 118 | margin-right: 1rem; 119 | } 120 | 121 | .frame__demos { 122 | margin: 1rem 0; 123 | } 124 | 125 | .frame__demo--current, 126 | .frame__demo--current:hover { 127 | color: var(--color-text); 128 | } 129 | 130 | .content { 131 | display: flex; 132 | flex-direction: column; 133 | width: 100vw; 134 | height: calc(100vh - 13rem); 135 | position: relative; 136 | justify-content: flex-start; 137 | align-items: center; 138 | } 139 | 140 | @media screen and (min-width: 53em) { 141 | .frame { 142 | position: fixed; 143 | text-align: left; 144 | z-index: 100; 145 | top: 0; 146 | left: 0; 147 | display: grid; 148 | align-content: space-between; 149 | width: 100%; 150 | max-width: none; 151 | height: 100vh; 152 | padding: 2rem; 153 | pointer-events: none; 154 | grid-template-columns: 75% 25%; 155 | grid-template-rows: auto auto auto; 156 | grid-template-areas: 'title links' 157 | '... ...' 158 | '... demos'; 159 | } 160 | .frame__title-wrap { 161 | grid-area: title; 162 | display: flex; 163 | } 164 | .frame__title { 165 | margin: 0; 166 | } 167 | .frame__tagline { 168 | position: relative; 169 | margin: 0 0 0 1rem; 170 | padding: 0 0 0 1rem; 171 | opacity: 0.5; 172 | } 173 | .frame__demos { 174 | margin: 0; 175 | grid-area: demos; 176 | justify-self: end; 177 | } 178 | .frame__links { 179 | grid-area: links; 180 | padding: 0; 181 | justify-self: end; 182 | } 183 | .frame a { 184 | pointer-events: auto; 185 | } 186 | .content { 187 | height: 100vh; 188 | justify-content: center; 189 | } 190 | } 191 | -------------------------------------------------------------------------------- /src/App.jsx: -------------------------------------------------------------------------------- 1 | import { Suspense, useState } from 'react' 2 | import { Sphere, OrbitControls, Box, useTexture, Environment } from '@react-three/drei' 3 | import { Canvas, useFrame } from '@react-three/fiber' 4 | import { a as aw, useSpring as useSpringWeb } from '@react-spring/web' 5 | import { a as a3, useSpring as useSpringThree } from '@react-spring/three' 6 | import * as THREE from 'three' 7 | 8 | // HSL values 9 | const options = [ 10 | [0, 100, 50], 11 | [60, 100, 50], 12 | [150, 100, 50], 13 | [240, 70, 60], 14 | [0, 0, 80], 15 | ] 16 | 17 | export default function App() { 18 | const [step, setStep] = useState(0) 19 | const { hsl } = useSpringWeb({ 20 | hsl: options[step % options.length], 21 | config: { tension: 50 }, 22 | }) 23 | const springyGradient = hsl.to((h, s, l) => `radial-gradient(hsl(${h}, ${s * 0.7}%, ${l}%), hsl(${h},${s * 0.4}%, ${l * 0.2}%))`) 24 | return ( 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | ) 35 | } 36 | 37 | function Marble({ step, setStep }) { 38 | const [hover, setHover] = useState(false) 39 | const [tap, setTap] = useState(false) 40 | const { scale } = useSpringThree({ 41 | scale: tap && hover ? 0.95 : 1, 42 | config: { 43 | friction: 15, 44 | tension: 300, 45 | }, 46 | }) 47 | return ( 48 | 49 | setHover(true)} onPointerOut={() => setHover(false)} onClick={() => setStep(step + 1)}> 50 | 51 | 52 | 53 | 54 | {/* This big invisible box is just a pointer target so we can reliably track if the mouse button is up or down */} 55 | setTap(true)} onPointerUp={() => setTap(false)}> 56 | 57 | 58 | 59 | ) 60 | } 61 | 62 | /** 63 | * @typedef MagicMarbleMaterialProps 64 | * @property {number} step - Which step of the color sequence we're on 65 | * 66 | * @param {MagicMarbleMaterialProps & THREE.MeshStandardMaterialParameters} 67 | */ 68 | function MagicMarbleMaterial({ step, ...props }) { 69 | // Load the noise textures 70 | const heightMap = useTexture('noise.jpg') 71 | const displacementMap = useTexture('noise3D.jpg') 72 | heightMap.minFilter = displacementMap.minFilter = THREE.NearestFilter 73 | displacementMap.wrapS = displacementMap.wrapT = THREE.RepeatWrapping 74 | 75 | // Create persistent local uniforms object 76 | const [uniforms] = useState(() => ({ 77 | time: { value: 0 }, 78 | colorA: { value: new THREE.Color(0, 0, 0) }, 79 | colorB: { value: new THREE.Color(1, 0, 0) }, 80 | heightMap: { value: heightMap }, 81 | displacementMap: { value: displacementMap }, 82 | iterations: { value: 48 }, 83 | depth: { value: 0.6 }, 84 | smoothing: { value: 0.2 }, 85 | displacement: { value: 0.1 }, 86 | })) 87 | 88 | // This spring value allows us to "fast forward" the displacement in the marble 89 | const { timeOffset } = useSpringThree({ 90 | hsl: options[step % options.length], 91 | timeOffset: step * 0.2, 92 | config: { tension: 50 }, 93 | onChange: ({ value: { hsl } }) => { 94 | const [h, s, l] = hsl 95 | uniforms.colorB.value.setHSL(h / 360, s / 100, l / 100) 96 | }, 97 | }) 98 | 99 | // Update time uniform on each frame 100 | useFrame(({ clock }) => { 101 | uniforms.time.value = timeOffset.get() + clock.elapsedTime * 0.05 102 | }) 103 | 104 | // Add our custom bits to the MeshStandardMaterial 105 | const onBeforeCompile = (shader) => { 106 | // Wire up local uniform references 107 | shader.uniforms = { ...shader.uniforms, ...uniforms } 108 | 109 | // Add to top of vertex shader 110 | shader.vertexShader = 111 | /* glsl */ ` 112 | varying vec3 v_pos; 113 | varying vec3 v_dir; 114 | ` + shader.vertexShader 115 | 116 | // Assign values to varyings inside of main() 117 | shader.vertexShader = shader.vertexShader.replace( 118 | /void main\(\) {/, 119 | (match) => 120 | match + 121 | /* glsl */ ` 122 | v_dir = position - cameraPosition; // Points from camera to vertex 123 | v_pos = position; 124 | ` 125 | ) 126 | 127 | // Add to top of fragment shader 128 | shader.fragmentShader = 129 | /* glsl */ ` 130 | #define FLIP vec2(1., -1.) 131 | 132 | uniform vec3 colorA; 133 | uniform vec3 colorB; 134 | uniform sampler2D heightMap; 135 | uniform sampler2D displacementMap; 136 | uniform int iterations; 137 | uniform float depth; 138 | uniform float smoothing; 139 | uniform float displacement; 140 | uniform float time; 141 | 142 | varying vec3 v_pos; 143 | varying vec3 v_dir; 144 | ` + shader.fragmentShader 145 | 146 | // Add above fragment shader main() so we can access common.glsl.js 147 | shader.fragmentShader = shader.fragmentShader.replace( 148 | /void main\(\) {/, 149 | (match) => 150 | /* glsl */ ` 151 | /** 152 | * @param p - Point to displace 153 | * @param strength - How much the map can displace the point 154 | * @returns Point with scrolling displacement applied 155 | */ 156 | vec3 displacePoint(vec3 p, float strength) { 157 | vec2 uv = equirectUv(normalize(p)); 158 | vec2 scroll = vec2(time, 0.); 159 | vec3 displacementA = texture(displacementMap, uv + scroll).rgb; // Upright 160 | vec3 displacementB = texture(displacementMap, uv * FLIP - scroll).rgb; // Upside down 161 | 162 | // Center the range to [-0.5, 0.5], note the range of their sum is [-1, 1] 163 | displacementA -= 0.5; 164 | displacementB -= 0.5; 165 | 166 | return p + strength * (displacementA + displacementB); 167 | } 168 | 169 | /** 170 | * @param rayOrigin - Point on sphere 171 | * @param rayDir - Normalized ray direction 172 | * @returns Diffuse RGB color 173 | */ 174 | vec3 marchMarble(vec3 rayOrigin, vec3 rayDir) { 175 | float perIteration = 1. / float(iterations); 176 | vec3 deltaRay = rayDir * perIteration * depth; 177 | 178 | // Start at point of intersection and accumulate volume 179 | vec3 p = rayOrigin; 180 | float totalVolume = 0.; 181 | 182 | for (int i=0; i (m.needsUpdate = true)} 220 | customProgramCacheKey={() => onBeforeCompile.toString()} 221 | /> 222 | ) 223 | } 224 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.14.5": 6 | version "7.14.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" 8 | integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== 9 | dependencies: 10 | "@babel/highlight" "^7.14.5" 11 | 12 | "@babel/compat-data@^7.14.5": 13 | version "7.14.9" 14 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.9.tgz#ac7996ceaafcf8f410119c8af0d1db4cf914a210" 15 | integrity sha512-p3QjZmMGHDGdpcwEYYWu7i7oJShJvtgMjJeb0W95PPhSm++3lm8YXYOh45Y6iCN9PkZLTZ7CIX5nFrp7pw7TXw== 16 | 17 | "@babel/core@^7.14.8": 18 | version "7.14.8" 19 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" 20 | integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== 21 | dependencies: 22 | "@babel/code-frame" "^7.14.5" 23 | "@babel/generator" "^7.14.8" 24 | "@babel/helper-compilation-targets" "^7.14.5" 25 | "@babel/helper-module-transforms" "^7.14.8" 26 | "@babel/helpers" "^7.14.8" 27 | "@babel/parser" "^7.14.8" 28 | "@babel/template" "^7.14.5" 29 | "@babel/traverse" "^7.14.8" 30 | "@babel/types" "^7.14.8" 31 | convert-source-map "^1.7.0" 32 | debug "^4.1.0" 33 | gensync "^1.0.0-beta.2" 34 | json5 "^2.1.2" 35 | semver "^6.3.0" 36 | source-map "^0.5.0" 37 | 38 | "@babel/generator@^7.14.8", "@babel/generator@^7.14.9": 39 | version "7.14.9" 40 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.9.tgz#23b19c597d38b4f7dc2e3fe42a69c88d9ecfaa16" 41 | integrity sha512-4yoHbhDYzFa0GLfCzLp5GxH7vPPMAHdZjyE7M/OajM9037zhx0rf+iNsJwp4PT0MSFpwjG7BsHEbPkBQpZ6cYA== 42 | dependencies: 43 | "@babel/types" "^7.14.9" 44 | jsesc "^2.5.1" 45 | source-map "^0.5.0" 46 | 47 | "@babel/helper-compilation-targets@^7.14.5": 48 | version "7.14.5" 49 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" 50 | integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== 51 | dependencies: 52 | "@babel/compat-data" "^7.14.5" 53 | "@babel/helper-validator-option" "^7.14.5" 54 | browserslist "^4.16.6" 55 | semver "^6.3.0" 56 | 57 | "@babel/helper-function-name@^7.14.5": 58 | version "7.14.5" 59 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" 60 | integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== 61 | dependencies: 62 | "@babel/helper-get-function-arity" "^7.14.5" 63 | "@babel/template" "^7.14.5" 64 | "@babel/types" "^7.14.5" 65 | 66 | "@babel/helper-get-function-arity@^7.14.5": 67 | version "7.14.5" 68 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" 69 | integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== 70 | dependencies: 71 | "@babel/types" "^7.14.5" 72 | 73 | "@babel/helper-hoist-variables@^7.14.5": 74 | version "7.14.5" 75 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" 76 | integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== 77 | dependencies: 78 | "@babel/types" "^7.14.5" 79 | 80 | "@babel/helper-member-expression-to-functions@^7.14.5": 81 | version "7.14.7" 82 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" 83 | integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== 84 | dependencies: 85 | "@babel/types" "^7.14.5" 86 | 87 | "@babel/helper-module-imports@^7.14.5": 88 | version "7.14.5" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" 90 | integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== 91 | dependencies: 92 | "@babel/types" "^7.14.5" 93 | 94 | "@babel/helper-module-transforms@^7.14.8": 95 | version "7.14.8" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" 97 | integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== 98 | dependencies: 99 | "@babel/helper-module-imports" "^7.14.5" 100 | "@babel/helper-replace-supers" "^7.14.5" 101 | "@babel/helper-simple-access" "^7.14.8" 102 | "@babel/helper-split-export-declaration" "^7.14.5" 103 | "@babel/helper-validator-identifier" "^7.14.8" 104 | "@babel/template" "^7.14.5" 105 | "@babel/traverse" "^7.14.8" 106 | "@babel/types" "^7.14.8" 107 | 108 | "@babel/helper-optimise-call-expression@^7.14.5": 109 | version "7.14.5" 110 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" 111 | integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== 112 | dependencies: 113 | "@babel/types" "^7.14.5" 114 | 115 | "@babel/helper-plugin-utils@^7.14.5": 116 | version "7.14.5" 117 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" 118 | integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== 119 | 120 | "@babel/helper-replace-supers@^7.14.5": 121 | version "7.14.5" 122 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" 123 | integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== 124 | dependencies: 125 | "@babel/helper-member-expression-to-functions" "^7.14.5" 126 | "@babel/helper-optimise-call-expression" "^7.14.5" 127 | "@babel/traverse" "^7.14.5" 128 | "@babel/types" "^7.14.5" 129 | 130 | "@babel/helper-simple-access@^7.14.8": 131 | version "7.14.8" 132 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" 133 | integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== 134 | dependencies: 135 | "@babel/types" "^7.14.8" 136 | 137 | "@babel/helper-split-export-declaration@^7.14.5": 138 | version "7.14.5" 139 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" 140 | integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== 141 | dependencies: 142 | "@babel/types" "^7.14.5" 143 | 144 | "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8", "@babel/helper-validator-identifier@^7.14.9": 145 | version "7.14.9" 146 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" 147 | integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== 148 | 149 | "@babel/helper-validator-option@^7.14.5": 150 | version "7.14.5" 151 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" 152 | integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== 153 | 154 | "@babel/helpers@^7.14.8": 155 | version "7.14.8" 156 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" 157 | integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== 158 | dependencies: 159 | "@babel/template" "^7.14.5" 160 | "@babel/traverse" "^7.14.8" 161 | "@babel/types" "^7.14.8" 162 | 163 | "@babel/highlight@^7.14.5": 164 | version "7.14.5" 165 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 166 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 167 | dependencies: 168 | "@babel/helper-validator-identifier" "^7.14.5" 169 | chalk "^2.0.0" 170 | js-tokens "^4.0.0" 171 | 172 | "@babel/parser@^7.14.5", "@babel/parser@^7.14.8", "@babel/parser@^7.14.9": 173 | version "7.14.9" 174 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.9.tgz#596c1ad67608070058ebf8df50c1eaf65db895a4" 175 | integrity sha512-RdUTOseXJ8POjjOeEBEvNMIZU/nm4yu2rufRkcibzkkg7DmQvXU8v3M4Xk9G7uuI86CDGkKcuDWgioqZm+mScQ== 176 | 177 | "@babel/plugin-transform-react-jsx-self@^7.14.5": 178 | version "7.14.9" 179 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.14.9.tgz#33041e665453391eb6ee54a2ecf3ba1d46bd30f4" 180 | integrity sha512-Fqqu0f8zv9W+RyOnx29BX/RlEsBRANbOf5xs5oxb2aHP4FKbLXxIaVPUiCti56LAR1IixMH4EyaixhUsKqoBHw== 181 | dependencies: 182 | "@babel/helper-plugin-utils" "^7.14.5" 183 | 184 | "@babel/plugin-transform-react-jsx-source@^7.14.5": 185 | version "7.14.5" 186 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.5.tgz#79f728e60e6dbd31a2b860b0bf6c9765918acf1d" 187 | integrity sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q== 188 | dependencies: 189 | "@babel/helper-plugin-utils" "^7.14.5" 190 | 191 | "@babel/runtime@^7.11.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.6": 192 | version "7.14.8" 193 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" 194 | integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== 195 | dependencies: 196 | regenerator-runtime "^0.13.4" 197 | 198 | "@babel/template@^7.14.5": 199 | version "7.14.5" 200 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" 201 | integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== 202 | dependencies: 203 | "@babel/code-frame" "^7.14.5" 204 | "@babel/parser" "^7.14.5" 205 | "@babel/types" "^7.14.5" 206 | 207 | "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": 208 | version "7.14.9" 209 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.9.tgz#016126b331210bf06fff29d52971eef8383e556f" 210 | integrity sha512-bldh6dtB49L8q9bUyB7bC20UKgU+EFDwKJylwl234Kv+ySZeMD31Xeht6URyueQ6LrRRpF2tmkfcZooZR9/e8g== 211 | dependencies: 212 | "@babel/code-frame" "^7.14.5" 213 | "@babel/generator" "^7.14.9" 214 | "@babel/helper-function-name" "^7.14.5" 215 | "@babel/helper-hoist-variables" "^7.14.5" 216 | "@babel/helper-split-export-declaration" "^7.14.5" 217 | "@babel/parser" "^7.14.9" 218 | "@babel/types" "^7.14.9" 219 | debug "^4.1.0" 220 | globals "^11.1.0" 221 | 222 | "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.14.9": 223 | version "7.14.9" 224 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.9.tgz#f2b19c3f2f77c5708d67fe8f6046e9cea2b5036d" 225 | integrity sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow== 226 | dependencies: 227 | "@babel/helper-validator-identifier" "^7.14.9" 228 | to-fast-properties "^2.0.0" 229 | 230 | "@chevrotain/types@^9.0.2": 231 | version "9.0.2" 232 | resolved "https://registry.yarnpkg.com/@chevrotain/types/-/types-9.0.2.tgz#477bb3b973b91ff47377399d1e9f4410be6c0141" 233 | integrity sha512-lo1dQPX7DQffJb26eaYLEy4/jUTFmsGKa43mDvMNAHwItEgUQHUkTZR0iAkHG0aJv8ejM/KqYpRVSNetrOK8qw== 234 | 235 | "@chevrotain/utils@^9.0.2": 236 | version "9.0.2" 237 | resolved "https://registry.yarnpkg.com/@chevrotain/utils/-/utils-9.0.2.tgz#6f28fd41d2168c21e441e1a4ad6a0097e4d351f5" 238 | integrity sha512-iTju1VpbGruWagXS/XswuqeimOCRNeDvrXLlWHYsHp1qTU8sJfAfLiX5vs7DNxB1px6N8VWVI0SD8vMUksNBYw== 239 | 240 | "@react-spring/animated@~9.2.0": 241 | version "9.2.4" 242 | resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.2.4.tgz#062ecc0fdfef89f2541a42d8500428b70035f879" 243 | integrity sha512-AfV6ZM8pCCAT29GY5C8/1bOPjZrv/7kD0vedjiE/tEYvNDwg9GlscrvsTViWR2XykJoYrDfdkYArrldWpsCJ5g== 244 | dependencies: 245 | "@react-spring/shared" "~9.2.0" 246 | "@react-spring/types" "~9.2.0" 247 | 248 | "@react-spring/core@~9.2.0": 249 | version "9.2.4" 250 | resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.2.4.tgz#275a4a065e3a315a4f5fb28c9a6f62ce718c25d6" 251 | integrity sha512-R+PwyfsjiuYCWqaTTfCpYpRmsP0h87RNm7uxC1Uxy7QAHUfHEm2sAHn+AdHPwq/MbVwDssVT8C5yf2WGcqiXGg== 252 | dependencies: 253 | "@react-spring/animated" "~9.2.0" 254 | "@react-spring/shared" "~9.2.0" 255 | "@react-spring/types" "~9.2.0" 256 | 257 | "@react-spring/konva@~9.2.0": 258 | version "9.2.4" 259 | resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.2.4.tgz#e467b24b3b110ba496526c9001439ce561641e0d" 260 | integrity sha512-19anDOIkfjcydDTfGgVIuZ3lruZxKubYGs9oHCswaP8SRLj7c1kkopJHUr/S4LXGxiIdqdF0XucWm0iTEPEq4w== 261 | dependencies: 262 | "@react-spring/animated" "~9.2.0" 263 | "@react-spring/core" "~9.2.0" 264 | "@react-spring/shared" "~9.2.0" 265 | "@react-spring/types" "~9.2.0" 266 | 267 | "@react-spring/native@~9.2.0": 268 | version "9.2.4" 269 | resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.2.4.tgz#0fd335a44c05023f5428df444d8f1aa3da7abfc9" 270 | integrity sha512-xKJWKh5qOhSclpL3iuGwJRLoZzTNvlBEnIrMs8yh8xvX6z9Lmnu4uGu5DpfrnM1GzBvRoktoCoLEx/VcEYFSng== 271 | dependencies: 272 | "@react-spring/animated" "~9.2.0" 273 | "@react-spring/core" "~9.2.0" 274 | "@react-spring/shared" "~9.2.0" 275 | "@react-spring/types" "~9.2.0" 276 | 277 | "@react-spring/rafz@~9.2.0": 278 | version "9.2.4" 279 | resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.2.4.tgz#44793e9adc14dd0dcd1573d094368af11a89d73a" 280 | integrity sha512-SOKf9eue+vAX+DGo7kWYNl9i9J3gPUlQjifIcV9Bzw9h3i30wPOOP0TjS7iMG/kLp2cdHQYDNFte6nt23VAZkQ== 281 | 282 | "@react-spring/shared@~9.2.0": 283 | version "9.2.4" 284 | resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.2.4.tgz#f9cc66ac5308a77293330a18518e34121f4008c1" 285 | integrity sha512-ZEr4l2BxmyFRUvRA2VCkPfCJii4E7cGkwbjmTBx1EmcGrOnde/V2eF5dxqCTY3k35QuCegkrWe0coRJVkh8q2Q== 286 | dependencies: 287 | "@react-spring/rafz" "~9.2.0" 288 | "@react-spring/types" "~9.2.0" 289 | 290 | "@react-spring/three@~9.2.0": 291 | version "9.2.4" 292 | resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.2.4.tgz#849c97658a6e1410b6f823ad21e2ee33feada820" 293 | integrity sha512-ljFig7XW099VWwRPKPUf+4yYLivp/sSWXN3oO5SJOF/9BSoV1quS/9chZ5Myl5J14od3CsHf89Tv4FdlX5kHlA== 294 | dependencies: 295 | "@react-spring/animated" "~9.2.0" 296 | "@react-spring/core" "~9.2.0" 297 | "@react-spring/shared" "~9.2.0" 298 | "@react-spring/types" "~9.2.0" 299 | 300 | "@react-spring/types@~9.2.0": 301 | version "9.2.4" 302 | resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.2.4.tgz#2365ce9d761f548a9adcb2cd68714bf26765a5de" 303 | integrity sha512-zHUXrWO8nweUN/ISjrjqU7GgXXvoEbFca1CgiE0TY0H/dqJb3l+Rhx8ecPVNYimzFg3ZZ1/T0egpLop8SOv4aA== 304 | 305 | "@react-spring/web@~9.2.0": 306 | version "9.2.4" 307 | resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.2.4.tgz#c6d5464a954bfd0d7bc90117050f796a95ebfa08" 308 | integrity sha512-vtPvOalLFvuju/MDBtoSnCyt0xXSL6Amyv82fljOuWPl1yGd4M1WteijnYL9Zlriljl0a3oXcPunAVYTD9dbDQ== 309 | dependencies: 310 | "@react-spring/animated" "~9.2.0" 311 | "@react-spring/core" "~9.2.0" 312 | "@react-spring/shared" "~9.2.0" 313 | "@react-spring/types" "~9.2.0" 314 | 315 | "@react-spring/zdog@~9.2.0": 316 | version "9.2.4" 317 | resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.2.4.tgz#db1d1924fe9920e917d889c4d3bb138bd0885cf1" 318 | integrity sha512-rv7ptedS37SHr6yuCbRkUErAzAhebdgt8f4KUtZWzseC+7qLNkaZWf+uujgsb881qAuX9b9yz8rre9UKeYepgw== 319 | dependencies: 320 | "@react-spring/animated" "~9.2.0" 321 | "@react-spring/core" "~9.2.0" 322 | "@react-spring/shared" "~9.2.0" 323 | "@react-spring/types" "~9.2.0" 324 | 325 | "@react-three/drei@^7.3.1": 326 | version "7.3.1" 327 | resolved "https://registry.yarnpkg.com/@react-three/drei/-/drei-7.3.1.tgz#df35632f41e4b23f8b68b887ed9d5af7a9ebf36a" 328 | integrity sha512-bw8zlD2YnRbHUQnkvuj7ew0nhut+nidQhffvUwsUsSIIHG1aqlPAGnaJZS1URh9qeu9lbuF1dIIKLy3/UbyLLw== 329 | dependencies: 330 | "@babel/runtime" "^7.11.2" 331 | blob-polyfill "^5.0.20210201" 332 | detect-gpu "^3.0.0" 333 | glsl-noise "^0.0.0" 334 | lodash.omit "^4.5.0" 335 | lodash.pick "^4.4.0" 336 | react-merge-refs "^1.0.0" 337 | stats.js "^0.17.0" 338 | three-mesh-bvh "^0.4.1" 339 | three-stdlib "^2.4.0" 340 | troika-three-text "^0.42.0" 341 | use-asset "^1.0.4" 342 | utility-types "^3.10.0" 343 | zustand "^3.5.1" 344 | 345 | "@react-three/fiber@^7.0.6": 346 | version "7.0.6" 347 | resolved "https://registry.yarnpkg.com/@react-three/fiber/-/fiber-7.0.6.tgz#faa5aa5d496ae778a89fe2d3f503428a0e3c841b" 348 | integrity sha512-GSMmnk66B/xGGfbSj5lGiZCxGQD0i8rm0Bt/Xp6TD2b9cYe2Lxb2wegU04zIeN89aoUYMHXhL1GNXsZvvOjfUA== 349 | dependencies: 350 | "@babel/runtime" "^7.13.10" 351 | react-merge-refs "^1.1.0" 352 | react-reconciler "^0.26.2" 353 | react-three-fiber "0.0.0-deprecated" 354 | react-use-measure "^2.0.4" 355 | resize-observer-polyfill "^1.5.1" 356 | scheduler "^0.20.2" 357 | use-asset "^1.0.4" 358 | utility-types "^3.10.0" 359 | zustand "^3.5.1" 360 | 361 | "@rollup/pluginutils@^4.1.1": 362 | version "4.1.1" 363 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 364 | integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 365 | dependencies: 366 | estree-walker "^2.0.1" 367 | picomatch "^2.2.2" 368 | 369 | "@vitejs/plugin-react-refresh@^1.3.6": 370 | version "1.3.6" 371 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz#19818392db01e81746cfeb04e096ab3010e79fe3" 372 | integrity sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA== 373 | dependencies: 374 | "@babel/core" "^7.14.8" 375 | "@babel/plugin-transform-react-jsx-self" "^7.14.5" 376 | "@babel/plugin-transform-react-jsx-source" "^7.14.5" 377 | "@rollup/pluginutils" "^4.1.1" 378 | react-refresh "^0.10.0" 379 | 380 | "@webgpu/glslang@^0.0.15": 381 | version "0.0.15" 382 | resolved "https://registry.yarnpkg.com/@webgpu/glslang/-/glslang-0.0.15.tgz#f5ccaf6015241e6175f4b90906b053f88483d1f2" 383 | integrity sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q== 384 | 385 | "@webxr-input-profiles/motion-controllers@^1.0.0": 386 | version "1.0.0" 387 | resolved "https://registry.yarnpkg.com/@webxr-input-profiles/motion-controllers/-/motion-controllers-1.0.0.tgz#0a84533288af39d85bfe1987721035925d69be47" 388 | integrity sha512-Ppxde+G1/QZbU8ShCQg+eq5VtlcL/FPkerF1dkDOLlIml0LJD1tFqnCZYR0SrHzYleIQ2siRnOx7xbFLaCpExQ== 389 | 390 | ansi-styles@^3.2.1: 391 | version "3.2.1" 392 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 393 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 394 | dependencies: 395 | color-convert "^1.9.0" 396 | 397 | bidi-js@^1.0.2: 398 | version "1.0.2" 399 | resolved "https://registry.yarnpkg.com/bidi-js/-/bidi-js-1.0.2.tgz#1a497a762c2ddea377429d2649c9ce0f8a91527f" 400 | integrity sha512-rzSy/k7WdX5zOyeHHCOixGXbCHkyogkxPKL2r8QtzHmVQDiWCXUWa18bLdMWT9CYMLOYTjWpTHawuev2ouYJVw== 401 | dependencies: 402 | require-from-string "^2.0.2" 403 | 404 | blob-polyfill@^5.0.20210201: 405 | version "5.0.20210201" 406 | resolved "https://registry.yarnpkg.com/blob-polyfill/-/blob-polyfill-5.0.20210201.tgz#0024bfa5dcc3440eb5a2f1e5991cb1612a558465" 407 | integrity sha512-SrH6IG6aXL9pCgSysBCiDpGcAJ1j6/c1qCwR3sTEQJhb+MTk6FITNA6eW6WNYQDNZVi4Z9GjxH5v2MMTv59CrQ== 408 | 409 | browserslist@^4.16.6: 410 | version "4.16.6" 411 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" 412 | integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== 413 | dependencies: 414 | caniuse-lite "^1.0.30001219" 415 | colorette "^1.2.2" 416 | electron-to-chromium "^1.3.723" 417 | escalade "^3.1.1" 418 | node-releases "^1.1.71" 419 | 420 | caniuse-lite@^1.0.30001219: 421 | version "1.0.30001248" 422 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz#26ab45e340f155ea5da2920dadb76a533cb8ebce" 423 | integrity sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw== 424 | 425 | chalk@^2.0.0: 426 | version "2.4.2" 427 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 428 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 429 | dependencies: 430 | ansi-styles "^3.2.1" 431 | escape-string-regexp "^1.0.5" 432 | supports-color "^5.3.0" 433 | 434 | chevrotain@^9.0.2: 435 | version "9.0.2" 436 | resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-9.0.2.tgz#7cc462262fec8ee293d96b756085ac71b8804bf1" 437 | integrity sha512-6ZjgUdGvU4j1n1b2hTjb79Vr2V+qNtmP7f8FVt79+kdAYcUj2QfYNwI8ycCVsgHD/dIeO5Vr1hckkkfliVQTfg== 438 | dependencies: 439 | "@chevrotain/types" "^9.0.2" 440 | "@chevrotain/utils" "^9.0.2" 441 | regexp-to-ast "0.5.0" 442 | 443 | color-convert@^1.9.0: 444 | version "1.9.3" 445 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 446 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 447 | dependencies: 448 | color-name "1.1.3" 449 | 450 | color-name@1.1.3: 451 | version "1.1.3" 452 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 453 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 454 | 455 | colorette@^1.2.2: 456 | version "1.2.2" 457 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" 458 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== 459 | 460 | convert-source-map@^1.7.0: 461 | version "1.8.0" 462 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 463 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 464 | dependencies: 465 | safe-buffer "~5.1.1" 466 | 467 | debounce@^1.2.0: 468 | version "1.2.1" 469 | resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" 470 | integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== 471 | 472 | debug@^4.1.0: 473 | version "4.3.2" 474 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 475 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 476 | dependencies: 477 | ms "2.1.2" 478 | 479 | detect-gpu@^3.0.0: 480 | version "3.1.11" 481 | resolved "https://registry.yarnpkg.com/detect-gpu/-/detect-gpu-3.1.11.tgz#433f07fb8e505cb5e8975d23820fd4d00ec65f9b" 482 | integrity sha512-JcmbzhdVfOPf0wNheytEEVD+tRZ3Lj6XQUBGKNdDjWW5Fb9xitTuBXdXnB1vcLy5DQMeSzYGFJVI66uAk4vnvA== 483 | dependencies: 484 | webgl-constants "^1.1.1" 485 | 486 | electron-to-chromium@^1.3.723: 487 | version "1.3.792" 488 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.792.tgz#791b0d8fcf7411885d086193fb49aaef0c1594ca" 489 | integrity sha512-RM2O2xrNarM7Cs+XF/OE2qX/aBROyOZqqgP+8FXMXSuWuUqCfUUzg7NytQrzZU3aSqk1Qq6zqnVkJsbfMkIatg== 490 | 491 | esbuild@^0.12.8: 492 | version "0.12.17" 493 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.17.tgz#5816f905c2905de0ebbc658860df7b5b48afbcd3" 494 | integrity sha512-GshKJyVYUnlSXIZj/NheC2O0Kblh42CS7P1wJyTbbIHevTG4jYMS9NNw8EOd8dDWD0dzydYHS01MpZoUcQXB4g== 495 | 496 | escalade@^3.1.1: 497 | version "3.1.1" 498 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 499 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 500 | 501 | escape-string-regexp@^1.0.5: 502 | version "1.0.5" 503 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 504 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 505 | 506 | estree-walker@^2.0.1: 507 | version "2.0.2" 508 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 509 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 510 | 511 | fast-deep-equal@^3.1.3: 512 | version "3.1.3" 513 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 514 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 515 | 516 | fflate@^0.6.9: 517 | version "0.6.10" 518 | resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43" 519 | integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg== 520 | 521 | fsevents@~2.3.2: 522 | version "2.3.2" 523 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 524 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 525 | 526 | function-bind@^1.1.1: 527 | version "1.1.1" 528 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 529 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 530 | 531 | gensync@^1.0.0-beta.2: 532 | version "1.0.0-beta.2" 533 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 534 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 535 | 536 | globals@^11.1.0: 537 | version "11.12.0" 538 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 539 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 540 | 541 | glsl-noise@^0.0.0: 542 | version "0.0.0" 543 | resolved "https://registry.yarnpkg.com/glsl-noise/-/glsl-noise-0.0.0.tgz#367745f3a33382c0eeec4cb54b7e99cfc1d7670b" 544 | integrity sha1-NndF86MzgsDu7Ey1S36Zz8HXZws= 545 | 546 | has-flag@^3.0.0: 547 | version "3.0.0" 548 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 549 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 550 | 551 | has@^1.0.3: 552 | version "1.0.3" 553 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 554 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 555 | dependencies: 556 | function-bind "^1.1.1" 557 | 558 | is-core-module@^2.2.0: 559 | version "2.5.0" 560 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" 561 | integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== 562 | dependencies: 563 | has "^1.0.3" 564 | 565 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 566 | version "4.0.0" 567 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 568 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 569 | 570 | jsesc@^2.5.1: 571 | version "2.5.2" 572 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 573 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 574 | 575 | json5@^2.1.2: 576 | version "2.2.0" 577 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 578 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 579 | dependencies: 580 | minimist "^1.2.5" 581 | 582 | ktx-parse@^0.2.1: 583 | version "0.2.1" 584 | resolved "https://registry.yarnpkg.com/ktx-parse/-/ktx-parse-0.2.1.tgz#6805c0929eae0a1f571ab3ce789e860e9135b432" 585 | integrity sha512-I+2mYJ6nQdWGmOlE3m9d9idKfhn2MCw04zaVpgtzyuc19uQ8OwRmmYLf/TP5ueVFfYmHbdpM8mPmId2X5PBLEw== 586 | 587 | lodash.omit@^4.5.0: 588 | version "4.5.0" 589 | resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" 590 | integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= 591 | 592 | lodash.pick@^4.4.0: 593 | version "4.4.0" 594 | resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" 595 | integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= 596 | 597 | loose-envify@^1.1.0: 598 | version "1.4.0" 599 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 600 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 601 | dependencies: 602 | js-tokens "^3.0.0 || ^4.0.0" 603 | 604 | minimist@^1.2.5: 605 | version "1.2.5" 606 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 607 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 608 | 609 | mmd-parser@^1.0.4: 610 | version "1.0.4" 611 | resolved "https://registry.yarnpkg.com/mmd-parser/-/mmd-parser-1.0.4.tgz#87cc05782cb5974ca854f0303fc5147bc9d690e7" 612 | integrity sha512-Qi0VCU46t2IwfGv5KF0+D/t9cizcDug7qnNoy9Ggk7aucp0tssV8IwTMkBlDbm+VqAf3cdQHTCARKSsuS2MYFg== 613 | 614 | ms@2.1.2: 615 | version "2.1.2" 616 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 617 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 618 | 619 | nanoid@^3.1.23: 620 | version "3.1.23" 621 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" 622 | integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== 623 | 624 | node-releases@^1.1.71: 625 | version "1.1.73" 626 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" 627 | integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== 628 | 629 | object-assign@^4.1.1: 630 | version "4.1.1" 631 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 632 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 633 | 634 | opentype.js@^1.3.3: 635 | version "1.3.3" 636 | resolved "https://registry.yarnpkg.com/opentype.js/-/opentype.js-1.3.3.tgz#65b8645b090a1ad444065b784d442fa19d1061f6" 637 | integrity sha512-/qIY/+WnKGlPIIPhbeNjynfD2PO15G9lA/xqlX2bDH+4lc3Xz5GCQ68mqxj3DdUv6AJqCeaPvuAoH8mVL0zcuA== 638 | dependencies: 639 | string.prototype.codepointat "^0.2.1" 640 | tiny-inflate "^1.0.3" 641 | 642 | path-parse@^1.0.6: 643 | version "1.0.7" 644 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 645 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 646 | 647 | picomatch@^2.2.2: 648 | version "2.3.0" 649 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 650 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 651 | 652 | postcss@^8.3.6: 653 | version "8.3.6" 654 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" 655 | integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== 656 | dependencies: 657 | colorette "^1.2.2" 658 | nanoid "^3.1.23" 659 | source-map-js "^0.6.2" 660 | 661 | potpack@^1.0.1: 662 | version "1.0.1" 663 | resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.1.tgz#d1b1afd89e4c8f7762865ec30bd112ab767e2ebf" 664 | integrity sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw== 665 | 666 | react-dom@^17.0.2: 667 | version "17.0.2" 668 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 669 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 670 | dependencies: 671 | loose-envify "^1.1.0" 672 | object-assign "^4.1.1" 673 | scheduler "^0.20.2" 674 | 675 | react-merge-refs@^1.0.0, react-merge-refs@^1.1.0: 676 | version "1.1.0" 677 | resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06" 678 | integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ== 679 | 680 | react-reconciler@^0.26.2: 681 | version "0.26.2" 682 | resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.26.2.tgz#bbad0e2d1309423f76cf3c3309ac6c96e05e9d91" 683 | integrity sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q== 684 | dependencies: 685 | loose-envify "^1.1.0" 686 | object-assign "^4.1.1" 687 | scheduler "^0.20.2" 688 | 689 | react-refresh@^0.10.0: 690 | version "0.10.0" 691 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.10.0.tgz#2f536c9660c0b9b1d500684d9e52a65e7404f7e3" 692 | integrity sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== 693 | 694 | react-spring@^9.2.3: 695 | version "9.2.4" 696 | resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.2.4.tgz#9d89b0321664d594f957dca9459b13d94b3dfa39" 697 | integrity sha512-bMjbyTW0ZGd+/h9cjtohLqCwOGqX2OuaTvalOVfLCGmhzEg/u3GgopI3LAm4UD2Br3MNdVdGgNVoESg4MGqKFQ== 698 | dependencies: 699 | "@react-spring/core" "~9.2.0" 700 | "@react-spring/konva" "~9.2.0" 701 | "@react-spring/native" "~9.2.0" 702 | "@react-spring/three" "~9.2.0" 703 | "@react-spring/web" "~9.2.0" 704 | "@react-spring/zdog" "~9.2.0" 705 | 706 | react-three-fiber@0.0.0-deprecated: 707 | version "0.0.0-deprecated" 708 | resolved "https://registry.yarnpkg.com/react-three-fiber/-/react-three-fiber-0.0.0-deprecated.tgz#c737242487d824cf9520307308b7e4c4071a278f" 709 | integrity sha512-EblIqTAsIpkYeM8bZtC4lcpTE0A2zCEGipFB52RgcQq/q+0oryrk7Sxt+sqhIjUu6xMNEVywV8dr74lz5yWO6A== 710 | 711 | react-use-measure@^2.0.4: 712 | version "2.0.4" 713 | resolved "https://registry.yarnpkg.com/react-use-measure/-/react-use-measure-2.0.4.tgz#cb675b36eaeaf3681b94d5f5e08b2a1e081fedc9" 714 | integrity sha512-7K2HIGaPMl3Q9ZQiEVjen3tRXl4UDda8LiTPy/QxP8dP2rl5gPBhf7mMH6MVjjRNv3loU7sNzey/ycPNnHVTxQ== 715 | dependencies: 716 | debounce "^1.2.0" 717 | 718 | react@^17.0.2: 719 | version "17.0.2" 720 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 721 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 722 | dependencies: 723 | loose-envify "^1.1.0" 724 | object-assign "^4.1.1" 725 | 726 | regenerator-runtime@^0.13.4: 727 | version "0.13.9" 728 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 729 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 730 | 731 | regexp-to-ast@0.5.0: 732 | version "0.5.0" 733 | resolved "https://registry.yarnpkg.com/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz#56c73856bee5e1fef7f73a00f1473452ab712a24" 734 | integrity sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw== 735 | 736 | require-from-string@^2.0.2: 737 | version "2.0.2" 738 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 739 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 740 | 741 | resize-observer-polyfill@^1.5.1: 742 | version "1.5.1" 743 | resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" 744 | integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== 745 | 746 | resolve@^1.20.0: 747 | version "1.20.0" 748 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 749 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 750 | dependencies: 751 | is-core-module "^2.2.0" 752 | path-parse "^1.0.6" 753 | 754 | rollup@^2.38.5: 755 | version "2.55.1" 756 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.55.1.tgz#66a444648e2fb603d8e329e77a61c608a6510fda" 757 | integrity sha512-1P9w5fpb6b4qroePh8vHKGIvPNxwoCQhjJpIqfZGHLKpZ0xcU2/XBmFxFbc9697/6bmHpmFTLk5R1dAQhFSo0g== 758 | optionalDependencies: 759 | fsevents "~2.3.2" 760 | 761 | safe-buffer@~5.1.1: 762 | version "5.1.2" 763 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 764 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 765 | 766 | scheduler@^0.20.2: 767 | version "0.20.2" 768 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 769 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 770 | dependencies: 771 | loose-envify "^1.1.0" 772 | object-assign "^4.1.1" 773 | 774 | semver@^6.3.0: 775 | version "6.3.0" 776 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 777 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 778 | 779 | source-map-js@^0.6.2: 780 | version "0.6.2" 781 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" 782 | integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== 783 | 784 | source-map@^0.5.0: 785 | version "0.5.7" 786 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 787 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 788 | 789 | stats.js@^0.17.0: 790 | version "0.17.0" 791 | resolved "https://registry.yarnpkg.com/stats.js/-/stats.js-0.17.0.tgz#b1c3dc46d94498b578b7fd3985b81ace7131cc7d" 792 | integrity sha1-scPcRtlEmLV4t/05hbgaznExzH0= 793 | 794 | string.prototype.codepointat@^0.2.1: 795 | version "0.2.1" 796 | resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc" 797 | integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg== 798 | 799 | supports-color@^5.3.0: 800 | version "5.5.0" 801 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 802 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 803 | dependencies: 804 | has-flag "^3.0.0" 805 | 806 | three-mesh-bvh@^0.4.1: 807 | version "0.4.1" 808 | resolved "https://registry.yarnpkg.com/three-mesh-bvh/-/three-mesh-bvh-0.4.1.tgz#ba0bf1dac7cbd41f2132c8446545c8ad9fbeb892" 809 | integrity sha512-1ALlGVjArZpi0SdqZhjwFA3DZHgBF/Uo4LnL8G7PczI7rpOoBK87CaBL073DVrrbIE4OONJvpq/PEzluKoRHbg== 810 | 811 | three-stdlib@^2.4.0: 812 | version "2.4.0" 813 | resolved "https://registry.yarnpkg.com/three-stdlib/-/three-stdlib-2.4.0.tgz#e6ffde19de40f3e2d8dfe5d5659667272c1918b6" 814 | integrity sha512-fy1utgeo/RskodAmKPoiexkcH/m5Zy9C01QjuESTnihDd+LyjxsmqAUI+qoDCkQIAwtBvYPE53EFBXzZM0B04A== 815 | dependencies: 816 | "@babel/runtime" "^7.14.6" 817 | "@webgpu/glslang" "^0.0.15" 818 | "@webxr-input-profiles/motion-controllers" "^1.0.0" 819 | chevrotain "^9.0.2" 820 | fflate "^0.6.9" 821 | ktx-parse "^0.2.1" 822 | mmd-parser "^1.0.4" 823 | opentype.js "^1.3.3" 824 | potpack "^1.0.1" 825 | zstddec "^0.0.2" 826 | 827 | three@^0.131.1: 828 | version "0.131.1" 829 | resolved "https://registry.yarnpkg.com/three/-/three-0.131.1.tgz#c7d35213a0ec5c3ee28316221ecdf2c18d1140a0" 830 | integrity sha512-1vojiLBfH7e2GZDEzFBfmzU0b/5uraxdg630PcVCRdzgGOttGe6HmG+n71lLCZZnPOxU9f7UVPiSkKPMsyiB/A== 831 | 832 | tiny-inflate@^1.0.3: 833 | version "1.0.3" 834 | resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" 835 | integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== 836 | 837 | to-fast-properties@^2.0.0: 838 | version "2.0.0" 839 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 840 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 841 | 842 | troika-three-text@^0.42.0: 843 | version "0.42.0" 844 | resolved "https://registry.yarnpkg.com/troika-three-text/-/troika-three-text-0.42.0.tgz#7ef7eca6482c020102010139cadac44724a5cb69" 845 | integrity sha512-bI9tCNwYDxcAi04NN0g0exOCrvNur9YfA2adR3AZgKHq+FIzxFIOem9LJ8kVwvo4smR+/hAv8N8pcRvXTek21w== 846 | dependencies: 847 | bidi-js "^1.0.2" 848 | troika-three-utils "^0.42.0" 849 | troika-worker-utils "^0.42.0" 850 | 851 | troika-three-utils@^0.42.0: 852 | version "0.42.0" 853 | resolved "https://registry.yarnpkg.com/troika-three-utils/-/troika-three-utils-0.42.0.tgz#01624fb8b2b9e8ea007985868fa1bcdaed0819ef" 854 | integrity sha512-IimGItKTN4PxeXEL4uWSF20kHZU1J1jXHD0gYQflX3QOFSven7HBG7nEqHcWavbZkB3AeRfR6NB3294GIt3uGA== 855 | 856 | troika-worker-utils@^0.42.0: 857 | version "0.42.0" 858 | resolved "https://registry.yarnpkg.com/troika-worker-utils/-/troika-worker-utils-0.42.0.tgz#473004a65b8e6d1bed89f0384394712a526363c3" 859 | integrity sha512-eTfX/vBNC7zMD+sSIDzbQAVwbhotbCz71IimZe0rFqPvAXkvLpKfH2YcWd1Ho42PII1O9Gl4QxxTV8ulRmDilQ== 860 | 861 | use-asset@^1.0.4: 862 | version "1.0.4" 863 | resolved "https://registry.yarnpkg.com/use-asset/-/use-asset-1.0.4.tgz#506caafc29f602890593799e58b577b70293a6e2" 864 | integrity sha512-7/hqDrWa0iMnCoET9W1T07EmD4Eg/Wmoj/X8TGBc++ECRK4m5yTsjP4O6s0yagbxfqIOuUkIxe2/sA+VR2GxZA== 865 | dependencies: 866 | fast-deep-equal "^3.1.3" 867 | 868 | utility-types@^3.10.0: 869 | version "3.10.0" 870 | resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" 871 | integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== 872 | 873 | vite@^2.4.4: 874 | version "2.4.4" 875 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.4.4.tgz#8c402a07ad45f168f6eb5428bead38f3e4363e47" 876 | integrity sha512-m1wK6pFJKmaYA6AeZIUXyiAgUAAJzVXhIMYCdZUpCaFMGps0v0IlNJtbmPvkUhVEyautalajmnW5X6NboUPsnw== 877 | dependencies: 878 | esbuild "^0.12.8" 879 | postcss "^8.3.6" 880 | resolve "^1.20.0" 881 | rollup "^2.38.5" 882 | optionalDependencies: 883 | fsevents "~2.3.2" 884 | 885 | webgl-constants@^1.1.1: 886 | version "1.1.1" 887 | resolved "https://registry.yarnpkg.com/webgl-constants/-/webgl-constants-1.1.1.tgz#f9633ee87fea56647a60b9ce735cbdfb891c6855" 888 | integrity sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg== 889 | 890 | zstddec@^0.0.2: 891 | version "0.0.2" 892 | resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.0.2.tgz#57e2f28dd1ff56b750e07d158a43f0611ad9eeb4" 893 | integrity sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA== 894 | 895 | zustand@^3.5.1: 896 | version "3.5.7" 897 | resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.5.7.tgz#add5e8d0ba031ce6e0ddf9cb76ef15306efb665f" 898 | integrity sha512-DlVFXJavIHyXTOGz6dB+8QHZsPyJcGJSEBtlp2Ivmd5SwtlCnhPo3L8LB6YRfAOJC2PbqzgoD8NMjk+y+vIF0g== 899 | --------------------------------------------------------------------------------