├── .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 | 
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 |
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 |
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 |
--------------------------------------------------------------------------------