├── .gitignore
├── .prettierrc
├── LICENSE
├── README.md
├── demo
├── index.html
├── jsconfig.json
├── src
│ ├── App.jsx
│ └── index.jsx
└── vite.config.ts
├── package.json
├── screenshots
├── birds.jpg
├── demo.jpg
├── graph.jpg
├── shape.jpg
├── spinner.jpg
└── svg.jpg
├── src
├── MeshLineGeometry.ts
├── MeshLineMaterial.ts
├── index.ts
└── raycast.ts
├── tsconfig.json
├── vite.config.ts
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | dist
4 |
5 | # Editor directories and files
6 | .idea
7 | .vscode
8 | *.suo
9 | *.ntvs*
10 | *.njsproj
11 | *.sln
12 | *.sw?
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "trailingComma": "all",
4 | "singleQuote": true,
5 | "tabWidth": 2,
6 | "printWidth": 120,
7 | "jsxBracketSameLine": true
8 | }
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Jaume Sanchez
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MeshLine
2 |
3 | A mesh replacement for `THREE.Line`. Instead of using GL_LINE, it uses a strip of billboarded triangles. This is a fork of [spite/THREE.MeshLine](https://github.com/spite/THREE.MeshLine), previously maintained by studio [Utsuboco](https://github.com/utsuboco).
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | ### How to use
15 |
16 | ```
17 | npm install meshline
18 | ```
19 |
20 | ```jsx
21 | import * as THREE from 'three'
22 | import { MeshLineGeometry, MeshLineMaterial, raycast } from 'meshline'
23 |
24 | const geometry = new MeshLineGeometry()
25 | geometry.setPoints([...])
26 | const material = new MeshLineMaterial({ ... })
27 | const mesh = new THREE.Mesh(geometry, material)
28 | mesh.raycast = raycast
29 | scene.add(mesh)
30 | ```
31 |
32 | #### Assign points
33 |
34 | Create a `MeshLineGeometry` and pass a list of points into `.setPoints()`. Expected inputs are:
35 |
36 | - `Float32Array`
37 | - `THREE.BufferGeometry`
38 | - `Array`
39 |
40 | ```jsx
41 | const geometry = new MeshLineGeometry()
42 |
43 | const points = []
44 | for (let j = 0; j < Math.PI; j += (2 * Math.PI) / 100)
45 | points.push(Math.cos(j), Math.sin(j), 0)
46 |
47 | geometry.setPoints(points)
48 | ```
49 |
50 | Note: `.setPoints` accepts a second parameter, which is a function to define a variable width for each point along the line. By default that value is 1, making the line width 1 \* lineWidth.
51 |
52 | ```jsx
53 | // p is a decimal percentage of the number of points
54 | // ie. point 200 of 250 points, p = 0.8
55 | geometry.setPoints(points, (p) => 2) // makes width 2 * lineWidth
56 | geometry.setPoints(points, (p) => 1 - p) // makes width taper
57 | geometry.setPoints(points, (p) => 2 + Math.sin(50 * p)) // makes width sinusoidal
58 | ```
59 |
60 | #### Create a material
61 |
62 | ```jsx
63 | const material = new MeshLineMaterial(options)
64 | ```
65 |
66 | By default it's a white material of width 1 unit.
67 |
68 | `MeshLineMaterial` has several attributes to control the appereance:
69 |
70 | - `map` - a `THREE.Texture` to paint along the line (requires `useMap` set to true)
71 | - `useMap` - tells the material to use `map` (0 - solid color, 1 use texture)
72 | - `alphaMap` - a `THREE.Texture` to use as alpha along the line (requires `useAlphaMap` set to true)
73 | - `useAlphaMap` - tells the material to use `alphaMap` (0 - no alpha, 1 modulate alpha)
74 | - `repeat` - THREE.Vector2 to define the texture tiling (applies to map and alphaMap)
75 | - `color` - `THREE.Color` to paint the line width, or tint the texture with
76 | - `opacity` - alpha value from 0 to 1 (requires `transparent` set to `true`)
77 | - `alphaTest` - cutoff value from 0 to 1
78 | - `dashArray` - the length and space between dashes. (0 - no dash)
79 | - `dashOffset` - defines the location where the dash will begin. Ideal to animate the line.
80 | - `dashRatio` - defines the ratio between that is visible or not (0 - more visible, 1 - more invisible).
81 | - `resolution` - `THREE.Vector2` specifying the canvas size (REQUIRED)
82 | - `sizeAttenuation` - constant lineWidth regardless of distance (1 is 1px on screen) (0 - attenuate, 1 - don't)
83 | - `lineWidth` - float defining width (if `sizeAttenuation` is true, it's world units; else is screen pixels)
84 |
85 | If you're rendering transparent lines or using a texture with alpha map, you should set `depthTest` to `false`, `transparent` to `true` and `blending` to an appropriate blending mode, or use `alphaTest`.
86 |
87 | #### Form a mesh
88 |
89 | ```jsx
90 | const mesh = new THREE.Mesh(geometry, material)
91 | scene.add(mesh)
92 | ```
93 |
94 | ### Raycasting
95 |
96 | Raycast can be optionally added by overwriting `mesh.raycast` with the one that meshline provides.
97 |
98 | ```jsx
99 | import { raycast } from 'meshline'
100 |
101 | mesh.raycast = raycast
102 | ```
103 |
104 | ### Declarative use
105 |
106 | Meshline can be used declaritively in [react-three-fiber](https://github.com/pmndrs/react-three-fiber). `MeshLineGeometry` has a convenience setter/getter for `.setPoints()`, `points`.
107 |
108 | ```jsx
109 | import { Canvas, extend } from '@react-three/fiber'
110 | import { MeshLineGeometry, MeshLineMaterial, raycast } from 'meshline'
111 |
112 | extend({ MeshLineGeometry, MeshLineMaterial })
113 |
114 | function App() {
115 | return (
116 |
122 | )
123 | }
124 | ```
125 |
126 | #### Variable line widths
127 |
128 | Variable line widths can be set for each point using the `widthCallback` prop.
129 |
130 | ```jsx
131 | p * Math.random()} />
132 | ```
133 |
134 | #### Types
135 |
136 | Add these declarations to your entry point.
137 |
138 | ```tsx
139 | import { Object3DNode, MaterialNode } from '@react-three/fiber'
140 |
141 | declare module '@react-three/fiber' {
142 | interface ThreeElements {
143 | meshLineGeometry: Object3DNode
144 | meshLineMaterial: MaterialNode
145 | }
146 | }
147 | ```
148 |
149 | ### References
150 |
151 | - [Drawing lines is hard](http://mattdesl.svbtle.com/drawing-lines-is-hard)
152 | - [WebGL rendering of solid trails](http://codeflow.org/entries/2012/aug/05/webgl-rendering-of-solid-trails/)
153 | - [Drawing Antialiased Lines with OpenGL](https://www.mapbox.com/blog/drawing-antialiased-lines/)
154 |
--------------------------------------------------------------------------------
/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | meshline demo
7 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/demo/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "meshline": ["../src"]
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/demo/src/App.jsx:
--------------------------------------------------------------------------------
1 | import * as THREE from 'three'
2 | import { useMemo, useRef } from 'react'
3 | import { MeshLineGeometry, MeshLineMaterial } from 'meshline'
4 | import { extend, Canvas, useFrame } from '@react-three/fiber'
5 | import { EffectComposer, Bloom } from '@react-three/postprocessing'
6 | import { easing } from 'maath'
7 | import { useControls } from 'leva'
8 |
9 | extend({ MeshLineGeometry, MeshLineMaterial })
10 |
11 | export default function App() {
12 | const { dash, count, radius } = useControls({
13 | dash: { value: 0.9, min: 0, max: 0.99, step: 0.01 },
14 | count: { value: 50, min: 0, max: 200, step: 1 },
15 | radius: { value: 50, min: 1, max: 100, step: 1 },
16 | })
17 | return (
18 |
31 | )
32 | }
33 |
34 | function Lines({ dash, count, colors, radius = 50, rand = THREE.MathUtils.randFloatSpread }) {
35 | const lines = useMemo(() => {
36 | return Array.from({ length: count }, () => {
37 | const pos = new THREE.Vector3(rand(radius), rand(radius), rand(radius))
38 | const points = Array.from({ length: 10 }, () =>
39 | pos.add(new THREE.Vector3(rand(radius), rand(radius), rand(radius))).clone(),
40 | )
41 | const curve = new THREE.CatmullRomCurve3(points).getPoints(200)
42 | return {
43 | color: colors[parseInt(colors.length * Math.random())],
44 | width: Math.max(radius / 100, (radius / 50) * Math.random()),
45 | speed: Math.max(0.1, 1 * Math.random()),
46 | curve: curve.flatMap((point) => point.toArray()),
47 | }
48 | })
49 | }, [colors, count, radius])
50 | return lines.map((props, index) => )
51 | }
52 |
53 | function Fatline({ curve, width, color, speed, dash }) {
54 | const ref = useRef()
55 | useFrame((state, delta) => (ref.current.material.dashOffset -= (delta * speed) / 10))
56 | return (
57 |
58 |
59 |
68 |
69 | )
70 | }
71 |
72 | function Rig({ radius = 20 }) {
73 | return useFrame((state, dt) => {
74 | easing.damp3(
75 | state.camera.position,
76 | [Math.sin(state.pointer.x) * radius, Math.atan(state.pointer.y) * radius, Math.cos(state.pointer.x) * radius],
77 | 0.25,
78 | dt,
79 | )
80 | state.camera.lookAt(0, 0, 0)
81 | })
82 | }
83 |
--------------------------------------------------------------------------------
/demo/src/index.jsx:
--------------------------------------------------------------------------------
1 | import { createRoot } from 'react-dom/client'
2 | import App from './App'
3 |
4 | createRoot(document.getElementById('root')).render()
5 |
--------------------------------------------------------------------------------
/demo/vite.config.ts:
--------------------------------------------------------------------------------
1 | import * as path from 'node:path'
2 | import react from '@vitejs/plugin-react'
3 | import { defineConfig } from 'vite'
4 |
5 | export default defineConfig({
6 | resolve: {
7 | alias: {
8 | meshline: path.resolve(__dirname, '../src'),
9 | },
10 | },
11 | plugins: [react()],
12 | })
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "meshline",
3 | "version": "3.3.1",
4 | "author": "Jaume Sanchez (https://www.clicktorelease.com)",
5 | "license": "MIT",
6 | "bugs": {
7 | "url": "https://github.com/pmndrs/meshline/issues"
8 | },
9 | "homepage": "https://github.com/pmndrs/meshline#readme",
10 | "files": [
11 | "dist"
12 | ],
13 | "type": "module",
14 | "main": "./dist/index.cjs",
15 | "module": "./dist/index.js",
16 | "types": "./dist/index.d.ts",
17 | "devDependencies": {
18 | "@react-three/fiber": "^8.9.1",
19 | "@react-three/postprocessing": "^2.7.0",
20 | "@types/node": "^18.11.13",
21 | "@types/three": "^0.146.0",
22 | "@vitejs/plugin-react": "2",
23 | "leva": "^0.9.34",
24 | "maath": "^0.4.2",
25 | "react": "^18.2.0",
26 | "react-dom": "^18.2.0",
27 | "three": "^0.147.0",
28 | "typescript": "^4.9.3",
29 | "vite": "^3.2.5"
30 | },
31 | "peerDependencies": {
32 | "three": ">=0.137"
33 | },
34 | "scripts": {
35 | "dev": "vite demo",
36 | "build": "vite build && tsc"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/screenshots/birds.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmndrs/meshline/4df8778398e086628076267c67552c079d39be85/screenshots/birds.jpg
--------------------------------------------------------------------------------
/screenshots/demo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmndrs/meshline/4df8778398e086628076267c67552c079d39be85/screenshots/demo.jpg
--------------------------------------------------------------------------------
/screenshots/graph.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmndrs/meshline/4df8778398e086628076267c67552c079d39be85/screenshots/graph.jpg
--------------------------------------------------------------------------------
/screenshots/shape.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmndrs/meshline/4df8778398e086628076267c67552c079d39be85/screenshots/shape.jpg
--------------------------------------------------------------------------------
/screenshots/spinner.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmndrs/meshline/4df8778398e086628076267c67552c079d39be85/screenshots/spinner.jpg
--------------------------------------------------------------------------------
/screenshots/svg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmndrs/meshline/4df8778398e086628076267c67552c079d39be85/screenshots/svg.jpg
--------------------------------------------------------------------------------
/src/MeshLineGeometry.ts:
--------------------------------------------------------------------------------
1 | import * as THREE from 'three'
2 |
3 | // https://stackoverflow.com/a/56532878
4 | function memcpy(
5 | src: BufferSource | ArrayLike,
6 | srcOffset: number,
7 | dst: BufferSource | ArrayLike,
8 | dstOffset: number,
9 | length: number,
10 | ): any {
11 | let i: number
12 | // @ts-ignore
13 | src = src.subarray || src.slice ? src : src.buffer
14 | // @ts-ignore
15 | dst = dst.subarray || dst.slice ? dst : dst.buffer
16 | src = srcOffset
17 | ? // @ts-ignore
18 | src.subarray
19 | ? // @ts-ignore
20 | src.subarray(srcOffset, length && srcOffset + length)
21 | : // @ts-ignore
22 | src.slice(srcOffset, length && srcOffset + length)
23 | : src
24 | // @ts-ignore
25 | if (dst.set) {
26 | // @ts-ignore
27 | dst.set(src, dstOffset)
28 | } else {
29 | // @ts-ignore
30 | for (i = 0; i < src.length; i++) dst[i + dstOffset] = src[i]
31 | }
32 | return dst
33 | }
34 |
35 | export type PointsRepresentation =
36 | | THREE.BufferGeometry
37 | | Float32Array
38 | | THREE.Vector3[]
39 | | THREE.Vector2[]
40 | | THREE.Vector3Tuple[]
41 | | THREE.Vector2Tuple[]
42 | | number[]
43 |
44 | function convertPoints(points: PointsRepresentation): Float32Array | number[] {
45 | if (points instanceof Float32Array) return points
46 | if (points instanceof THREE.BufferGeometry) return points.getAttribute('position').array as Float32Array
47 | return points
48 | .map((p) => {
49 | const isArray = Array.isArray(p)
50 | return p instanceof THREE.Vector3
51 | ? [p.x, p.y, p.z]
52 | : p instanceof THREE.Vector2
53 | ? [p.x, p.y, 0]
54 | : isArray && p.length === 3
55 | ? [p[0], p[1], p[2]]
56 | : isArray && p.length === 2
57 | ? [p[0], p[1], 0]
58 | : p
59 | })
60 | .flat()
61 | }
62 |
63 | export type WidthCallback = (p: number) => any
64 |
65 | export class MeshLineGeometry extends THREE.BufferGeometry {
66 | type = 'MeshLine'
67 | isMeshLine = true
68 | positions: number[] = []
69 | previous: number[] = []
70 | next: number[] = []
71 | side: number[] = []
72 | width: number[] = []
73 | indices_array: number[] = []
74 | uvs: number[] = []
75 | counters: number[] = []
76 | widthCallback: WidthCallback | null = null
77 |
78 | _attributes!: {
79 | position: THREE.BufferAttribute
80 | previous: THREE.BufferAttribute
81 | next: THREE.BufferAttribute
82 | side: THREE.BufferAttribute
83 | width: THREE.BufferAttribute
84 | uv: THREE.BufferAttribute
85 | index: THREE.BufferAttribute
86 | counters: THREE.BufferAttribute
87 | }
88 | _points: Float32Array | number[] = []
89 | points!: Float32Array | number[]
90 |
91 | // Used to raycast
92 | matrixWorld = new THREE.Matrix4()
93 |
94 | constructor() {
95 | super()
96 |
97 | Object.defineProperties(this, {
98 | points: {
99 | enumerable: true,
100 | get() {
101 | return this._points
102 | },
103 | set(value) {
104 | this.setPoints(value, this.widthCallback)
105 | },
106 | },
107 | })
108 | }
109 |
110 | setMatrixWorld(matrixWorld: THREE.Matrix4): void {
111 | this.matrixWorld = matrixWorld
112 | }
113 |
114 | setPoints(points: PointsRepresentation, wcb?: WidthCallback): void {
115 | points = convertPoints(points)
116 | // as the points are mutated we store them
117 | // for later retreival when necessary (declaritive architectures)
118 | this._points = points
119 | this.widthCallback = wcb ?? null
120 | this.positions = []
121 | this.counters = []
122 |
123 | // TODO: this is unreachable
124 | if (points.length && (points[0] as any) instanceof THREE.Vector3) {
125 | // could transform Vector3 array into the array used below
126 | // but this approach will only loop through the array once
127 | // and is more performant
128 | for (let j = 0; j < points.length; j++) {
129 | const p = points[j] as unknown as THREE.Vector3
130 | const c = j / (points.length - 1)
131 | this.positions.push(p.x, p.y, p.z)
132 | this.positions.push(p.x, p.y, p.z)
133 | this.counters.push(c)
134 | this.counters.push(c)
135 | }
136 | } else {
137 | for (let j = 0; j < points.length; j += 3) {
138 | const c = j / (points.length - 1)
139 | this.positions.push(points[j], points[j + 1], points[j + 2])
140 | this.positions.push(points[j], points[j + 1], points[j + 2])
141 | this.counters.push(c)
142 | this.counters.push(c)
143 | }
144 | }
145 | this.process()
146 | }
147 |
148 | compareV3(a: number, b: number): boolean {
149 | const aa = a * 6
150 | const ab = b * 6
151 | return (
152 | this.positions[aa] === this.positions[ab] &&
153 | this.positions[aa + 1] === this.positions[ab + 1] &&
154 | this.positions[aa + 2] === this.positions[ab + 2]
155 | )
156 | }
157 |
158 | copyV3(a: number): THREE.Vector3Tuple {
159 | const aa = a * 6
160 | return [this.positions[aa], this.positions[aa + 1], this.positions[aa + 2]]
161 | }
162 |
163 | process(): void {
164 | const l = this.positions.length / 6
165 |
166 | this.previous = []
167 | this.next = []
168 | this.side = []
169 | this.width = []
170 | this.indices_array = []
171 | this.uvs = []
172 |
173 | let w
174 |
175 | let v: THREE.Vector3Tuple
176 | // initial previous points
177 | if (this.compareV3(0, l - 1)) {
178 | v = this.copyV3(l - 2)
179 | } else {
180 | v = this.copyV3(0)
181 | }
182 | this.previous.push(v[0], v[1], v[2])
183 | this.previous.push(v[0], v[1], v[2])
184 |
185 | for (let j = 0; j < l; j++) {
186 | // sides
187 | this.side.push(1)
188 | this.side.push(-1)
189 |
190 | // widths
191 | if (this.widthCallback) w = this.widthCallback(j / (l - 1))
192 | else w = 1
193 | this.width.push(w)
194 | this.width.push(w)
195 |
196 | // uvs
197 | this.uvs.push(j / (l - 1), 0)
198 | this.uvs.push(j / (l - 1), 1)
199 |
200 | if (j < l - 1) {
201 | // points previous to poisitions
202 | v = this.copyV3(j)
203 | this.previous.push(v[0], v[1], v[2])
204 | this.previous.push(v[0], v[1], v[2])
205 |
206 | // indices
207 | const n = j * 2
208 | this.indices_array.push(n, n + 1, n + 2)
209 | this.indices_array.push(n + 2, n + 1, n + 3)
210 | }
211 | if (j > 0) {
212 | // points after poisitions
213 | v = this.copyV3(j)
214 | this.next.push(v[0], v[1], v[2])
215 | this.next.push(v[0], v[1], v[2])
216 | }
217 | }
218 |
219 | // last next point
220 | if (this.compareV3(l - 1, 0)) {
221 | v = this.copyV3(1)
222 | } else {
223 | v = this.copyV3(l - 1)
224 | }
225 | this.next.push(v[0], v[1], v[2])
226 | this.next.push(v[0], v[1], v[2])
227 |
228 | if (!this._attributes || this._attributes.position.count !== this.counters.length) {
229 | this._attributes = {
230 | position: new THREE.BufferAttribute(new Float32Array(this.positions), 3),
231 | previous: new THREE.BufferAttribute(new Float32Array(this.previous), 3),
232 | next: new THREE.BufferAttribute(new Float32Array(this.next), 3),
233 | side: new THREE.BufferAttribute(new Float32Array(this.side), 1),
234 | width: new THREE.BufferAttribute(new Float32Array(this.width), 1),
235 | uv: new THREE.BufferAttribute(new Float32Array(this.uvs), 2),
236 | index: new THREE.BufferAttribute(new Uint16Array(this.indices_array), 1),
237 | counters: new THREE.BufferAttribute(new Float32Array(this.counters), 1),
238 | }
239 | } else {
240 | this._attributes.position.copyArray(new Float32Array(this.positions))
241 | this._attributes.position.needsUpdate = true
242 | this._attributes.previous.copyArray(new Float32Array(this.previous))
243 | this._attributes.previous.needsUpdate = true
244 | this._attributes.next.copyArray(new Float32Array(this.next))
245 | this._attributes.next.needsUpdate = true
246 | this._attributes.side.copyArray(new Float32Array(this.side))
247 | this._attributes.side.needsUpdate = true
248 | this._attributes.width.copyArray(new Float32Array(this.width))
249 | this._attributes.width.needsUpdate = true
250 | this._attributes.uv.copyArray(new Float32Array(this.uvs))
251 | this._attributes.uv.needsUpdate = true
252 | this._attributes.index.copyArray(new Uint16Array(this.indices_array))
253 | this._attributes.index.needsUpdate = true
254 | }
255 |
256 | this.setAttribute('position', this._attributes.position)
257 | this.setAttribute('previous', this._attributes.previous)
258 | this.setAttribute('next', this._attributes.next)
259 | this.setAttribute('side', this._attributes.side)
260 | this.setAttribute('width', this._attributes.width)
261 | this.setAttribute('uv', this._attributes.uv)
262 | this.setAttribute('counters', this._attributes.counters)
263 |
264 | this.setAttribute('position', this._attributes.position)
265 | this.setAttribute('previous', this._attributes.previous)
266 | this.setAttribute('next', this._attributes.next)
267 | this.setAttribute('side', this._attributes.side)
268 | this.setAttribute('width', this._attributes.width)
269 | this.setAttribute('uv', this._attributes.uv)
270 | this.setAttribute('counters', this._attributes.counters)
271 |
272 | this.setIndex(this._attributes.index)
273 |
274 | this.computeBoundingSphere()
275 | this.computeBoundingBox()
276 | }
277 |
278 | /**
279 | * Fast method to advance the line by one position. The oldest position is removed.
280 | * @param position
281 | */
282 | advance({ x, y, z }: THREE.Vector3) {
283 | const positions = this._attributes.position.array as number[]
284 | const previous = this._attributes.previous.array as number[]
285 | const next = this._attributes.next.array as number[]
286 | const l = positions.length
287 |
288 | // PREVIOUS
289 | memcpy(positions, 0, previous, 0, l)
290 |
291 | // POSITIONS
292 | memcpy(positions, 6, positions, 0, l - 6)
293 |
294 | positions[l - 6] = x
295 | positions[l - 5] = y
296 | positions[l - 4] = z
297 | positions[l - 3] = x
298 | positions[l - 2] = y
299 | positions[l - 1] = z
300 |
301 | // NEXT
302 | memcpy(positions, 6, next, 0, l - 6)
303 |
304 | next[l - 6] = x
305 | next[l - 5] = y
306 | next[l - 4] = z
307 | next[l - 3] = x
308 | next[l - 2] = y
309 | next[l - 1] = z
310 |
311 | this._attributes.position.needsUpdate = true
312 | this._attributes.previous.needsUpdate = true
313 | this._attributes.next.needsUpdate = true
314 | }
315 | }
316 |
--------------------------------------------------------------------------------
/src/MeshLineMaterial.ts:
--------------------------------------------------------------------------------
1 | import * as THREE from 'three'
2 |
3 | const vertexShader = /* glsl */ `
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | attribute vec3 previous;
10 | attribute vec3 next;
11 | attribute float side;
12 | attribute float width;
13 | attribute float counters;
14 |
15 | uniform vec2 resolution;
16 | uniform float lineWidth;
17 | uniform vec3 color;
18 | uniform float opacity;
19 | uniform float sizeAttenuation;
20 |
21 | varying vec2 vUV;
22 | varying vec4 vColor;
23 | varying float vCounters;
24 |
25 | vec2 fix(vec4 i, float aspect) {
26 | vec2 res = i.xy / i.w;
27 | res.x *= aspect;
28 | return res;
29 | }
30 |
31 | void main() {
32 | float aspect = resolution.x / resolution.y;
33 | vColor = vec4(color, opacity);
34 | vUV = uv;
35 | vCounters = counters;
36 |
37 | mat4 m = projectionMatrix * modelViewMatrix;
38 | vec4 finalPosition = m * vec4(position, 1.0) * aspect;
39 | vec4 prevPos = m * vec4(previous, 1.0);
40 | vec4 nextPos = m * vec4(next, 1.0);
41 |
42 | vec2 currentP = fix(finalPosition, aspect);
43 | vec2 prevP = fix(prevPos, aspect);
44 | vec2 nextP = fix(nextPos, aspect);
45 |
46 | float w = lineWidth * width;
47 |
48 | vec2 dir;
49 | if (nextP == currentP) dir = normalize(currentP - prevP);
50 | else if (prevP == currentP) dir = normalize(nextP - currentP);
51 | else {
52 | vec2 dir1 = normalize(currentP - prevP);
53 | vec2 dir2 = normalize(nextP - currentP);
54 | dir = normalize(dir1 + dir2);
55 |
56 | vec2 perp = vec2(-dir1.y, dir1.x);
57 | vec2 miter = vec2(-dir.y, dir.x);
58 | //w = clamp(w / dot(miter, perp), 0., 4. * lineWidth * width);
59 | }
60 |
61 | //vec2 normal = (cross(vec3(dir, 0.), vec3(0., 0., 1.))).xy;
62 | vec4 normal = vec4(-dir.y, dir.x, 0., 1.);
63 | normal.xy *= .5 * w;
64 | //normal *= projectionMatrix;
65 | if (sizeAttenuation == 0.) {
66 | normal.xy *= finalPosition.w;
67 | normal.xy /= (vec4(resolution, 0., 1.) * projectionMatrix).xy * aspect;
68 | }
69 |
70 | finalPosition.xy += normal.xy * side;
71 | gl_Position = finalPosition;
72 | #include
73 | #include
74 | vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);
75 | #include
76 | #include
77 | }
78 | `
79 |
80 | const version = /* @__PURE__ */ (() => parseInt(THREE.REVISION.replace(/\D+/g, '')))()
81 | const colorspace_fragment = version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'
82 |
83 | const fragmentShader = /* glsl */ `
84 | #include
85 | #include
86 | #include
87 |
88 | uniform sampler2D map;
89 | uniform sampler2D alphaMap;
90 | uniform float useGradient;
91 | uniform float useMap;
92 | uniform float useAlphaMap;
93 | uniform float useDash;
94 | uniform float dashArray;
95 | uniform float dashOffset;
96 | uniform float dashRatio;
97 | uniform float visibility;
98 | uniform float alphaTest;
99 | uniform vec2 repeat;
100 | uniform vec3 gradient[2];
101 |
102 | varying vec2 vUV;
103 | varying vec4 vColor;
104 | varying float vCounters;
105 |
106 | void main() {
107 | #include
108 | vec4 diffuseColor = vColor;
109 | if (useGradient == 1.) diffuseColor = vec4(mix(gradient[0], gradient[1], vCounters), 1.0);
110 | if (useMap == 1.) diffuseColor *= texture2D(map, vUV * repeat);
111 | if (useAlphaMap == 1.) diffuseColor.a *= texture2D(alphaMap, vUV * repeat).a;
112 | if (diffuseColor.a < alphaTest) discard;
113 | if (useDash == 1.) diffuseColor.a *= ceil(mod(vCounters + dashOffset, dashArray) - (dashArray * dashRatio));
114 | diffuseColor.a *= step(vCounters, visibility);
115 | #include
116 | gl_FragColor = diffuseColor;
117 | #include
118 | #include
119 | #include <${colorspace_fragment}>
120 | }
121 | `
122 |
123 | export interface MeshLineMaterialParameters {
124 | lineWidth?: number
125 | map?: THREE.Texture
126 | useMap?: number
127 | alphaMap?: THREE.Texture
128 | useAlphaMap?: number
129 | color?: string | THREE.Color | number
130 | gradient?: string[] | THREE.Color[] | number[]
131 | opacity?: number
132 | resolution: THREE.Vector2 // required
133 | sizeAttenuation?: number
134 | dashArray?: number
135 | dashOffset?: number
136 | dashRatio?: number
137 | useDash?: number
138 | useGradient?: number
139 | visibility?: number
140 | alphaTest?: number
141 | repeat?: THREE.Vector2
142 | }
143 |
144 | export class MeshLineMaterial extends THREE.ShaderMaterial implements MeshLineMaterialParameters {
145 | lineWidth!: number
146 | map!: THREE.Texture
147 | useMap!: number
148 | alphaMap!: THREE.Texture
149 | useAlphaMap!: number
150 | color!: THREE.Color
151 | gradient!: THREE.Color[]
152 | resolution!: THREE.Vector2
153 | sizeAttenuation!: number
154 | dashArray!: number
155 | dashOffset!: number
156 | dashRatio!: number
157 | useDash!: number
158 | useGradient!: number
159 | visibility!: number
160 | repeat!: THREE.Vector2
161 |
162 | constructor(parameters: MeshLineMaterialParameters) {
163 | super({
164 | uniforms: {
165 | ...THREE.UniformsLib.fog,
166 | lineWidth: { value: 1 },
167 | map: { value: null },
168 | useMap: { value: 0 },
169 | alphaMap: { value: null },
170 | useAlphaMap: { value: 0 },
171 | color: { value: new THREE.Color(0xffffff) },
172 | gradient: { value: [new THREE.Color(0xff0000), new THREE.Color(0x00ff00)] },
173 | opacity: { value: 1 },
174 | resolution: { value: new THREE.Vector2(1, 1) },
175 | sizeAttenuation: { value: 1 },
176 | dashArray: { value: 0 },
177 | dashOffset: { value: 0 },
178 | dashRatio: { value: 0.5 },
179 | useDash: { value: 0 },
180 | useGradient: { value: 0 },
181 | visibility: { value: 1 },
182 | alphaTest: { value: 0 },
183 | repeat: { value: new THREE.Vector2(1, 1) },
184 | },
185 | vertexShader,
186 | fragmentShader,
187 | })
188 |
189 | this.type = 'MeshLineMaterial'
190 | Object.defineProperties(this, {
191 | lineWidth: {
192 | enumerable: true,
193 | get() {
194 | return this.uniforms.lineWidth.value
195 | },
196 | set(value) {
197 | this.uniforms.lineWidth.value = value
198 | },
199 | },
200 | map: {
201 | enumerable: true,
202 | get() {
203 | return this.uniforms.map.value
204 | },
205 | set(value) {
206 | this.uniforms.map.value = value
207 | },
208 | },
209 | useMap: {
210 | enumerable: true,
211 | get() {
212 | return this.uniforms.useMap.value
213 | },
214 | set(value) {
215 | this.uniforms.useMap.value = value
216 | },
217 | },
218 | alphaMap: {
219 | enumerable: true,
220 | get() {
221 | return this.uniforms.alphaMap.value
222 | },
223 | set(value) {
224 | this.uniforms.alphaMap.value = value
225 | },
226 | },
227 | useAlphaMap: {
228 | enumerable: true,
229 | get() {
230 | return this.uniforms.useAlphaMap.value
231 | },
232 | set(value) {
233 | this.uniforms.useAlphaMap.value = value
234 | },
235 | },
236 | color: {
237 | enumerable: true,
238 | get() {
239 | return this.uniforms.color.value
240 | },
241 | set(value) {
242 | this.uniforms.color.value = value
243 | },
244 | },
245 | gradient: {
246 | enumerable: true,
247 | get() {
248 | return this.uniforms.gradient.value
249 | },
250 | set(value) {
251 | this.uniforms.gradient.value = value
252 | },
253 | },
254 | opacity: {
255 | enumerable: true,
256 | get() {
257 | return this.uniforms.opacity.value
258 | },
259 | set(value) {
260 | this.uniforms.opacity.value = value
261 | },
262 | },
263 | resolution: {
264 | enumerable: true,
265 | get() {
266 | return this.uniforms.resolution.value
267 | },
268 | set(value) {
269 | this.uniforms.resolution.value.copy(value)
270 | },
271 | },
272 | sizeAttenuation: {
273 | enumerable: true,
274 | get() {
275 | return this.uniforms.sizeAttenuation.value
276 | },
277 | set(value) {
278 | this.uniforms.sizeAttenuation.value = value
279 | },
280 | },
281 | dashArray: {
282 | enumerable: true,
283 | get() {
284 | return this.uniforms.dashArray.value
285 | },
286 | set(value) {
287 | this.uniforms.dashArray.value = value
288 | this.useDash = value !== 0 ? 1 : 0
289 | },
290 | },
291 | dashOffset: {
292 | enumerable: true,
293 | get() {
294 | return this.uniforms.dashOffset.value
295 | },
296 | set(value) {
297 | this.uniforms.dashOffset.value = value
298 | },
299 | },
300 | dashRatio: {
301 | enumerable: true,
302 | get() {
303 | return this.uniforms.dashRatio.value
304 | },
305 | set(value) {
306 | this.uniforms.dashRatio.value = value
307 | },
308 | },
309 | useDash: {
310 | enumerable: true,
311 | get() {
312 | return this.uniforms.useDash.value
313 | },
314 | set(value) {
315 | this.uniforms.useDash.value = value
316 | },
317 | },
318 | useGradient: {
319 | enumerable: true,
320 | get() {
321 | return this.uniforms.useGradient.value
322 | },
323 | set(value) {
324 | this.uniforms.useGradient.value = value
325 | },
326 | },
327 | visibility: {
328 | enumerable: true,
329 | get() {
330 | return this.uniforms.visibility.value
331 | },
332 | set(value) {
333 | this.uniforms.visibility.value = value
334 | },
335 | },
336 | alphaTest: {
337 | enumerable: true,
338 | get() {
339 | return this.uniforms.alphaTest.value
340 | },
341 | set(value) {
342 | this.uniforms.alphaTest.value = value
343 | },
344 | },
345 | repeat: {
346 | enumerable: true,
347 | get() {
348 | return this.uniforms.repeat.value
349 | },
350 | set(value) {
351 | this.uniforms.repeat.value.copy(value)
352 | },
353 | },
354 | })
355 | this.setValues(parameters)
356 | }
357 |
358 | copy(source: MeshLineMaterial): this {
359 | super.copy(source)
360 | this.lineWidth = source.lineWidth
361 | this.map = source.map
362 | this.useMap = source.useMap
363 | this.alphaMap = source.alphaMap
364 | this.useAlphaMap = source.useAlphaMap
365 | this.color.copy(source.color)
366 | this.gradient = source.gradient
367 | this.opacity = source.opacity
368 | this.resolution.copy(source.resolution)
369 | this.sizeAttenuation = source.sizeAttenuation
370 | this.dashArray = source.dashArray
371 | this.dashOffset = source.dashOffset
372 | this.dashRatio = source.dashRatio
373 | this.useDash = source.useDash
374 | this.useGradient = source.useGradient
375 | this.visibility = source.visibility
376 | this.alphaTest = source.alphaTest
377 | this.repeat.copy(source.repeat)
378 | return this
379 | }
380 | }
381 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './MeshLineGeometry'
2 | export * from './MeshLineMaterial'
3 | export * from './raycast'
4 |
--------------------------------------------------------------------------------
/src/raycast.ts:
--------------------------------------------------------------------------------
1 | import * as THREE from 'three'
2 | import type { MeshLineMaterial } from './MeshLineMaterial'
3 |
4 | export function raycast(
5 | this: THREE.Mesh,
6 | raycaster: THREE.Raycaster,
7 | intersects: THREE.Intersection[],
8 | ): void {
9 | const inverseMatrix = new THREE.Matrix4()
10 | const ray = new THREE.Ray()
11 | const sphere = new THREE.Sphere()
12 | const interRay = new THREE.Vector3()
13 | const geometry = this.geometry
14 | // Checking boundingSphere distance to ray
15 |
16 | sphere.copy(geometry.boundingSphere!)
17 | sphere.applyMatrix4(this.matrixWorld)
18 |
19 | if (!raycaster.ray.intersectSphere(sphere, interRay)) return
20 |
21 | inverseMatrix.copy(this.matrixWorld).invert()
22 | ray.copy(raycaster.ray).applyMatrix4(inverseMatrix)
23 |
24 | const vStart = new THREE.Vector3()
25 | const vEnd = new THREE.Vector3()
26 | const interSegment = new THREE.Vector3()
27 | const step = this instanceof THREE.LineSegments ? 2 : 1
28 | const index = geometry.index
29 | const attributes = geometry.attributes
30 |
31 | if (index !== null) {
32 | const indices = index.array
33 | const positions = attributes.position.array
34 | const widths = attributes.width.array
35 |
36 | for (let i = 0, l = indices.length - 1; i < l; i += step) {
37 | const a = indices[i]
38 | const b = indices[i + 1]
39 |
40 | vStart.fromArray(positions, a * 3)
41 | vEnd.fromArray(positions, b * 3)
42 | const width = widths[Math.floor(i / 3)] != undefined ? widths[Math.floor(i / 3)] : 1
43 | const precision = raycaster.params.Line!.threshold + (this.material.lineWidth * width) / 2
44 | const precisionSq = precision * precision
45 |
46 | const distSq = ray.distanceSqToSegment(vStart, vEnd, interRay, interSegment)
47 |
48 | if (distSq > precisionSq) continue
49 |
50 | interRay.applyMatrix4(this.matrixWorld) //Move back to world space for distance calculation
51 |
52 | const distance = raycaster.ray.origin.distanceTo(interRay)
53 | if (distance < raycaster.near || distance > raycaster.far) continue
54 |
55 | intersects.push({
56 | distance,
57 | // What do we want? intersection point on the ray or on the segment??
58 | // point: raycaster.ray.at( distance ),
59 | point: interSegment.clone().applyMatrix4(this.matrixWorld),
60 | index: i,
61 | face: null,
62 | faceIndex: undefined,
63 | object: this,
64 | })
65 | // make event only fire once
66 | i = l
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "outDir": "dist",
4 | "target": "esnext",
5 | "module": "esnext",
6 | "lib": ["esnext", "dom"],
7 | "moduleResolution": "node",
8 | "pretty": true,
9 | "strict": true,
10 | "declaration": true,
11 | "emitDeclarationOnly": true,
12 | "forceConsistentCasingInFileNames": true
13 | },
14 | "include": ["src/**/*"]
15 | }
16 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import * as path from 'node:path'
2 | import { defineConfig } from 'vite'
3 |
4 | export default defineConfig({
5 | build: {
6 | minify: false,
7 | target: 'es2018',
8 | lib: {
9 | formats: ['es', 'cjs'],
10 | entry: 'src/index.ts',
11 | fileName: '[name]',
12 | },
13 | rollupOptions: {
14 | external: (id: string) => !id.startsWith('.') && !path.isAbsolute(id),
15 | },
16 | },
17 | })
18 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@ampproject/remapping@^2.1.0":
6 | version "2.2.0"
7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
8 | integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
9 | dependencies:
10 | "@jridgewell/gen-mapping" "^0.1.0"
11 | "@jridgewell/trace-mapping" "^0.3.9"
12 |
13 | "@babel/code-frame@^7.18.6":
14 | version "7.18.6"
15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
16 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
17 | dependencies:
18 | "@babel/highlight" "^7.18.6"
19 |
20 | "@babel/compat-data@^7.20.0":
21 | version "7.20.5"
22 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733"
23 | integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==
24 |
25 | "@babel/core@^7.19.6":
26 | version "7.20.5"
27 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113"
28 | integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==
29 | dependencies:
30 | "@ampproject/remapping" "^2.1.0"
31 | "@babel/code-frame" "^7.18.6"
32 | "@babel/generator" "^7.20.5"
33 | "@babel/helper-compilation-targets" "^7.20.0"
34 | "@babel/helper-module-transforms" "^7.20.2"
35 | "@babel/helpers" "^7.20.5"
36 | "@babel/parser" "^7.20.5"
37 | "@babel/template" "^7.18.10"
38 | "@babel/traverse" "^7.20.5"
39 | "@babel/types" "^7.20.5"
40 | convert-source-map "^1.7.0"
41 | debug "^4.1.0"
42 | gensync "^1.0.0-beta.2"
43 | json5 "^2.2.1"
44 | semver "^6.3.0"
45 |
46 | "@babel/generator@^7.20.5":
47 | version "7.20.5"
48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95"
49 | integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==
50 | dependencies:
51 | "@babel/types" "^7.20.5"
52 | "@jridgewell/gen-mapping" "^0.3.2"
53 | jsesc "^2.5.1"
54 |
55 | "@babel/helper-annotate-as-pure@^7.18.6":
56 | version "7.18.6"
57 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb"
58 | integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==
59 | dependencies:
60 | "@babel/types" "^7.18.6"
61 |
62 | "@babel/helper-compilation-targets@^7.20.0":
63 | version "7.20.0"
64 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a"
65 | integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==
66 | dependencies:
67 | "@babel/compat-data" "^7.20.0"
68 | "@babel/helper-validator-option" "^7.18.6"
69 | browserslist "^4.21.3"
70 | semver "^6.3.0"
71 |
72 | "@babel/helper-environment-visitor@^7.18.9":
73 | version "7.18.9"
74 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
75 | integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
76 |
77 | "@babel/helper-function-name@^7.19.0":
78 | version "7.19.0"
79 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
80 | integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
81 | dependencies:
82 | "@babel/template" "^7.18.10"
83 | "@babel/types" "^7.19.0"
84 |
85 | "@babel/helper-hoist-variables@^7.18.6":
86 | version "7.18.6"
87 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
88 | integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
89 | dependencies:
90 | "@babel/types" "^7.18.6"
91 |
92 | "@babel/helper-module-imports@^7.18.6":
93 | version "7.18.6"
94 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
95 | integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
96 | dependencies:
97 | "@babel/types" "^7.18.6"
98 |
99 | "@babel/helper-module-transforms@^7.20.2":
100 | version "7.20.2"
101 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712"
102 | integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==
103 | dependencies:
104 | "@babel/helper-environment-visitor" "^7.18.9"
105 | "@babel/helper-module-imports" "^7.18.6"
106 | "@babel/helper-simple-access" "^7.20.2"
107 | "@babel/helper-split-export-declaration" "^7.18.6"
108 | "@babel/helper-validator-identifier" "^7.19.1"
109 | "@babel/template" "^7.18.10"
110 | "@babel/traverse" "^7.20.1"
111 | "@babel/types" "^7.20.2"
112 |
113 | "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0":
114 | version "7.20.2"
115 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
116 | integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
117 |
118 | "@babel/helper-simple-access@^7.20.2":
119 | version "7.20.2"
120 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
121 | integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
122 | dependencies:
123 | "@babel/types" "^7.20.2"
124 |
125 | "@babel/helper-split-export-declaration@^7.18.6":
126 | version "7.18.6"
127 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
128 | integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
129 | dependencies:
130 | "@babel/types" "^7.18.6"
131 |
132 | "@babel/helper-string-parser@^7.19.4":
133 | version "7.19.4"
134 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
135 | integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
136 |
137 | "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
138 | version "7.19.1"
139 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
140 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
141 |
142 | "@babel/helper-validator-option@^7.18.6":
143 | version "7.18.6"
144 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
145 | integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
146 |
147 | "@babel/helpers@^7.20.5":
148 | version "7.20.6"
149 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763"
150 | integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==
151 | dependencies:
152 | "@babel/template" "^7.18.10"
153 | "@babel/traverse" "^7.20.5"
154 | "@babel/types" "^7.20.5"
155 |
156 | "@babel/highlight@^7.18.6":
157 | version "7.18.6"
158 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
159 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
160 | dependencies:
161 | "@babel/helper-validator-identifier" "^7.18.6"
162 | chalk "^2.0.0"
163 | js-tokens "^4.0.0"
164 |
165 | "@babel/parser@^7.18.10", "@babel/parser@^7.20.5":
166 | version "7.20.5"
167 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8"
168 | integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
169 |
170 | "@babel/plugin-syntax-jsx@^7.18.6":
171 | version "7.18.6"
172 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
173 | integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
174 | dependencies:
175 | "@babel/helper-plugin-utils" "^7.18.6"
176 |
177 | "@babel/plugin-transform-react-jsx-development@^7.18.6":
178 | version "7.18.6"
179 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5"
180 | integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==
181 | dependencies:
182 | "@babel/plugin-transform-react-jsx" "^7.18.6"
183 |
184 | "@babel/plugin-transform-react-jsx-self@^7.18.6":
185 | version "7.18.6"
186 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7"
187 | integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==
188 | dependencies:
189 | "@babel/helper-plugin-utils" "^7.18.6"
190 |
191 | "@babel/plugin-transform-react-jsx-source@^7.19.6":
192 | version "7.19.6"
193 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86"
194 | integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==
195 | dependencies:
196 | "@babel/helper-plugin-utils" "^7.19.0"
197 |
198 | "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.19.0":
199 | version "7.19.0"
200 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9"
201 | integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==
202 | dependencies:
203 | "@babel/helper-annotate-as-pure" "^7.18.6"
204 | "@babel/helper-module-imports" "^7.18.6"
205 | "@babel/helper-plugin-utils" "^7.19.0"
206 | "@babel/plugin-syntax-jsx" "^7.18.6"
207 | "@babel/types" "^7.19.0"
208 |
209 | "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8":
210 | version "7.20.6"
211 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3"
212 | integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==
213 | dependencies:
214 | regenerator-runtime "^0.13.11"
215 |
216 | "@babel/template@^7.18.10":
217 | version "7.18.10"
218 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
219 | integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
220 | dependencies:
221 | "@babel/code-frame" "^7.18.6"
222 | "@babel/parser" "^7.18.10"
223 | "@babel/types" "^7.18.10"
224 |
225 | "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5":
226 | version "7.20.5"
227 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133"
228 | integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==
229 | dependencies:
230 | "@babel/code-frame" "^7.18.6"
231 | "@babel/generator" "^7.20.5"
232 | "@babel/helper-environment-visitor" "^7.18.9"
233 | "@babel/helper-function-name" "^7.19.0"
234 | "@babel/helper-hoist-variables" "^7.18.6"
235 | "@babel/helper-split-export-declaration" "^7.18.6"
236 | "@babel/parser" "^7.20.5"
237 | "@babel/types" "^7.20.5"
238 | debug "^4.1.0"
239 | globals "^11.1.0"
240 |
241 | "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5":
242 | version "7.20.5"
243 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84"
244 | integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==
245 | dependencies:
246 | "@babel/helper-string-parser" "^7.19.4"
247 | "@babel/helper-validator-identifier" "^7.19.1"
248 | to-fast-properties "^2.0.0"
249 |
250 | "@chevrotain/cst-dts-gen@10.4.2":
251 | version "10.4.2"
252 | resolved "https://registry.yarnpkg.com/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.4.2.tgz#a3426dba2c48cf6c90e49a0676aea750e8f43e88"
253 | integrity sha512-0+4bNjlndNWMoVLH/+y4uHnf6GrTipsC+YTppJxelVJo+xeRVQ0s2PpkdDCVTsu7efyj+8r1gFiwVXsp6JZ0iQ==
254 | dependencies:
255 | "@chevrotain/gast" "10.4.2"
256 | "@chevrotain/types" "10.4.2"
257 | lodash "4.17.21"
258 |
259 | "@chevrotain/gast@10.4.2":
260 | version "10.4.2"
261 | resolved "https://registry.yarnpkg.com/@chevrotain/gast/-/gast-10.4.2.tgz#236dc48e54cba16260c03bece25d5a3b6e2f5dab"
262 | integrity sha512-4ZAn8/mjkmYonilSJ60gGj1tAF0cVWYUMlIGA0e4ATAc3a648aCnvpBw7zlPHDQjFp50XC13iyWEgWAKiRKTOA==
263 | dependencies:
264 | "@chevrotain/types" "10.4.2"
265 | lodash "4.17.21"
266 |
267 | "@chevrotain/types@10.4.2":
268 | version "10.4.2"
269 | resolved "https://registry.yarnpkg.com/@chevrotain/types/-/types-10.4.2.tgz#18be6b7a3226b121fccec08c2ba8433219a6813c"
270 | integrity sha512-QzSCjg6G4MvIoLeIgOiMR0IgzkGEQqrNJJIr3T5ETRa7l4Av4AMIiEctV99mvDr57iXwwk0/kr3RJxiU36Nevw==
271 |
272 | "@chevrotain/utils@10.4.2":
273 | version "10.4.2"
274 | resolved "https://registry.yarnpkg.com/@chevrotain/utils/-/utils-10.4.2.tgz#87735732184cc5a2f8aad2f3454082294ef3c924"
275 | integrity sha512-V34dacxWLwKcvcy32dx96ADJVdB7kOJLm7LyBkBQw5u5HC9WdEFw2G17zml+U3ivavGTrGPJHl8o9/UJm0PlUw==
276 |
277 | "@esbuild/android-arm@0.15.18":
278 | version "0.15.18"
279 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80"
280 | integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==
281 |
282 | "@esbuild/linux-loong64@0.15.18":
283 | version "0.15.18"
284 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239"
285 | integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==
286 |
287 | "@jridgewell/gen-mapping@^0.1.0":
288 | version "0.1.1"
289 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
290 | integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
291 | dependencies:
292 | "@jridgewell/set-array" "^1.0.0"
293 | "@jridgewell/sourcemap-codec" "^1.4.10"
294 |
295 | "@jridgewell/gen-mapping@^0.3.2":
296 | version "0.3.2"
297 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
298 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
299 | dependencies:
300 | "@jridgewell/set-array" "^1.0.1"
301 | "@jridgewell/sourcemap-codec" "^1.4.10"
302 | "@jridgewell/trace-mapping" "^0.3.9"
303 |
304 | "@jridgewell/resolve-uri@3.1.0":
305 | version "3.1.0"
306 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
307 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
308 |
309 | "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
310 | version "1.1.2"
311 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
312 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
313 |
314 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
315 | version "1.4.14"
316 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
317 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
318 |
319 | "@jridgewell/trace-mapping@^0.3.9":
320 | version "0.3.17"
321 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
322 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
323 | dependencies:
324 | "@jridgewell/resolve-uri" "3.1.0"
325 | "@jridgewell/sourcemap-codec" "1.4.14"
326 |
327 | "@radix-ui/popper@0.1.0":
328 | version "0.1.0"
329 | resolved "https://registry.yarnpkg.com/@radix-ui/popper/-/popper-0.1.0.tgz#c387a38f31b7799e1ea0d2bb1ca0c91c2931b063"
330 | integrity sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==
331 | dependencies:
332 | "@babel/runtime" "^7.13.10"
333 | csstype "^3.0.4"
334 |
335 | "@radix-ui/primitive@0.1.0":
336 | version "0.1.0"
337 | resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-0.1.0.tgz#6206b97d379994f0d1929809db035733b337e543"
338 | integrity sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==
339 | dependencies:
340 | "@babel/runtime" "^7.13.10"
341 |
342 | "@radix-ui/react-arrow@0.1.3":
343 | version "0.1.3"
344 | resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-0.1.3.tgz#17f86eab216c48aff17b13b811569a9bbabaa44d"
345 | integrity sha512-9x1gRYdlUD5OUwY7L+M+4FY/YltDSsrNSj8QXGPbxZxL5ghWXB/4lhyIGccCwk/e8ggfmQYv9SRNmn3LavPo3A==
346 | dependencies:
347 | "@babel/runtime" "^7.13.10"
348 | "@radix-ui/react-primitive" "0.1.3"
349 |
350 | "@radix-ui/react-compose-refs@0.1.0":
351 | version "0.1.0"
352 | resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz#cff6e780a0f73778b976acff2c2a5b6551caab95"
353 | integrity sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==
354 | dependencies:
355 | "@babel/runtime" "^7.13.10"
356 |
357 | "@radix-ui/react-context@0.1.1":
358 | version "0.1.1"
359 | resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-0.1.1.tgz#06996829ea124d9a1bc1dbe3e51f33588fab0875"
360 | integrity sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==
361 | dependencies:
362 | "@babel/runtime" "^7.13.10"
363 |
364 | "@radix-ui/react-id@0.1.4":
365 | version "0.1.4"
366 | resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-0.1.4.tgz#4cd6126e6ac8a43ebe6d52948a068b797cc9ad71"
367 | integrity sha512-/hq5m/D0ZfJWOS7TLF+G0l08KDRs87LBE46JkAvgKkg1fW4jkucx9At9D9vauIPSbdNmww5kXEp566hMlA8eXA==
368 | dependencies:
369 | "@babel/runtime" "^7.13.10"
370 | "@radix-ui/react-use-layout-effect" "0.1.0"
371 |
372 | "@radix-ui/react-popper@0.1.3":
373 | version "0.1.3"
374 | resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-0.1.3.tgz#a93bdd72845566007e5f3868caddd62318bb781e"
375 | integrity sha512-2OV2YaJv7iTZexJY3HJ7B6Fs1A/3JXd3fRGU4JY0guACfGMD1C/jSgds505MKQOTiHE/quI6j3/q8yfzFjJR9g==
376 | dependencies:
377 | "@babel/runtime" "^7.13.10"
378 | "@radix-ui/popper" "0.1.0"
379 | "@radix-ui/react-arrow" "0.1.3"
380 | "@radix-ui/react-compose-refs" "0.1.0"
381 | "@radix-ui/react-context" "0.1.1"
382 | "@radix-ui/react-primitive" "0.1.3"
383 | "@radix-ui/react-use-rect" "0.1.1"
384 | "@radix-ui/react-use-size" "0.1.0"
385 | "@radix-ui/rect" "0.1.1"
386 |
387 | "@radix-ui/react-portal@0.1.3":
388 | version "0.1.3"
389 | resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-0.1.3.tgz#56826e789b3d4e37983f6d23666e3f1b1b9ee358"
390 | integrity sha512-DrV+sPYLs0HhmX5/b7yRT6nLM9Nl6FtQe2KUG+46kiCOKQ+0XzNMO5hmeQtyq0mRf/qlC02rFu6OMsWpIqVsJg==
391 | dependencies:
392 | "@babel/runtime" "^7.13.10"
393 | "@radix-ui/react-primitive" "0.1.3"
394 | "@radix-ui/react-use-layout-effect" "0.1.0"
395 |
396 | "@radix-ui/react-portal@^0.1.3":
397 | version "0.1.4"
398 | resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-0.1.4.tgz#17bdce3d7f1a9a0b35cb5e935ab8bc562441a7d2"
399 | integrity sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==
400 | dependencies:
401 | "@babel/runtime" "^7.13.10"
402 | "@radix-ui/react-primitive" "0.1.4"
403 | "@radix-ui/react-use-layout-effect" "0.1.0"
404 |
405 | "@radix-ui/react-presence@0.1.1":
406 | version "0.1.1"
407 | resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-0.1.1.tgz#2088dec6f4f8042f83dd2d6bf9e8ef09dadbbc15"
408 | integrity sha512-LsL+NcWDpFUAYCmXeH02o4pgqcSLpwxP84UIjCtpIKrsPe2vLuhcp79KC/jZJeXz+of2lUpMAxpM+eCpxFZtlg==
409 | dependencies:
410 | "@babel/runtime" "^7.13.10"
411 | "@radix-ui/react-compose-refs" "0.1.0"
412 | "@radix-ui/react-use-layout-effect" "0.1.0"
413 |
414 | "@radix-ui/react-primitive@0.1.3":
415 | version "0.1.3"
416 | resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-0.1.3.tgz#585c35ef2ec06bab0ea9e0fc5c916e556661b881"
417 | integrity sha512-fcyADaaAx2jdqEDLsTs6aX50S3L1c9K9CC6XMpJpuXFJCU4n9PGTFDZRtY2gAoXXoRCPIBsklCopSmGb6SsDjQ==
418 | dependencies:
419 | "@babel/runtime" "^7.13.10"
420 | "@radix-ui/react-slot" "0.1.2"
421 |
422 | "@radix-ui/react-primitive@0.1.4":
423 | version "0.1.4"
424 | resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz#6c233cf08b0cb87fecd107e9efecb3f21861edc1"
425 | integrity sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==
426 | dependencies:
427 | "@babel/runtime" "^7.13.10"
428 | "@radix-ui/react-slot" "0.1.2"
429 |
430 | "@radix-ui/react-slot@0.1.2":
431 | version "0.1.2"
432 | resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-0.1.2.tgz#e6f7ad9caa8ce81cc8d532c854c56f9b8b6307c8"
433 | integrity sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==
434 | dependencies:
435 | "@babel/runtime" "^7.13.10"
436 | "@radix-ui/react-compose-refs" "0.1.0"
437 |
438 | "@radix-ui/react-tooltip@0.1.6":
439 | version "0.1.6"
440 | resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-0.1.6.tgz#46a3e385e004aaebd16ecaa1da7d1af70ba3bb45"
441 | integrity sha512-0uaRpRmTCQo5yMUkDpv4LEDnaQDoeLXcNNhZonCZdbZBQ7ntvjURIWIigq1/pXZp0UX7oPpFzsXD9jUp8JT0WA==
442 | dependencies:
443 | "@babel/runtime" "^7.13.10"
444 | "@radix-ui/primitive" "0.1.0"
445 | "@radix-ui/react-compose-refs" "0.1.0"
446 | "@radix-ui/react-context" "0.1.1"
447 | "@radix-ui/react-id" "0.1.4"
448 | "@radix-ui/react-popper" "0.1.3"
449 | "@radix-ui/react-portal" "0.1.3"
450 | "@radix-ui/react-presence" "0.1.1"
451 | "@radix-ui/react-primitive" "0.1.3"
452 | "@radix-ui/react-slot" "0.1.2"
453 | "@radix-ui/react-use-controllable-state" "0.1.0"
454 | "@radix-ui/react-use-escape-keydown" "0.1.0"
455 | "@radix-ui/react-use-previous" "0.1.0"
456 | "@radix-ui/react-use-rect" "0.1.1"
457 | "@radix-ui/react-visually-hidden" "0.1.3"
458 |
459 | "@radix-ui/react-use-callback-ref@0.1.0":
460 | version "0.1.0"
461 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz#934b6e123330f5b3a6b116460e6662cbc663493f"
462 | integrity sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==
463 | dependencies:
464 | "@babel/runtime" "^7.13.10"
465 |
466 | "@radix-ui/react-use-controllable-state@0.1.0":
467 | version "0.1.0"
468 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz#4fced164acfc69a4e34fb9d193afdab973a55de1"
469 | integrity sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==
470 | dependencies:
471 | "@babel/runtime" "^7.13.10"
472 | "@radix-ui/react-use-callback-ref" "0.1.0"
473 |
474 | "@radix-ui/react-use-escape-keydown@0.1.0":
475 | version "0.1.0"
476 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz#dc80cb3753e9d1bd992adbad9a149fb6ea941874"
477 | integrity sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==
478 | dependencies:
479 | "@babel/runtime" "^7.13.10"
480 | "@radix-ui/react-use-callback-ref" "0.1.0"
481 |
482 | "@radix-ui/react-use-layout-effect@0.1.0":
483 | version "0.1.0"
484 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz#ebf71bd6d2825de8f1fbb984abf2293823f0f223"
485 | integrity sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==
486 | dependencies:
487 | "@babel/runtime" "^7.13.10"
488 |
489 | "@radix-ui/react-use-previous@0.1.0":
490 | version "0.1.0"
491 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-0.1.0.tgz#fed880d41187d0fdd1e19c4588402765f342777e"
492 | integrity sha512-0fxNc33rYnCzDMPSiSnfS8YklnxQo8WqbAQXPAgIaaA1jRu2qFB916PL4qCIW+avcAAqFD38vWhqDqcVmBharA==
493 | dependencies:
494 | "@babel/runtime" "^7.13.10"
495 |
496 | "@radix-ui/react-use-rect@0.1.1":
497 | version "0.1.1"
498 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz#6c15384beee59c086e75b89a7e66f3d2e583a856"
499 | integrity sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==
500 | dependencies:
501 | "@babel/runtime" "^7.13.10"
502 | "@radix-ui/rect" "0.1.1"
503 |
504 | "@radix-ui/react-use-size@0.1.0":
505 | version "0.1.0"
506 | resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-0.1.0.tgz#dc49295d646f5d3f570943dbb88bd94fc7db7daf"
507 | integrity sha512-TcZAsR+BYI46w/RbaSFCRACl+Jh6mDqhu6GS2r0iuJpIVrj8atff7qtTjmMmfGtEDNEjhl7DxN3pr1nTS/oruQ==
508 | dependencies:
509 | "@babel/runtime" "^7.13.10"
510 |
511 | "@radix-ui/react-visually-hidden@0.1.3":
512 | version "0.1.3"
513 | resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-0.1.3.tgz#406a2f1e2f2cf27e5b85a29dc3aca718e695acaf"
514 | integrity sha512-dPU6ZR2WQ/W9qv7E1Y8/I8ymqG+8sViU6dQQ6sfr2/8yGr0I4mmI7ywTnqXaE+YS9gHLEZHdQcEqTNESg6YfdQ==
515 | dependencies:
516 | "@babel/runtime" "^7.13.10"
517 | "@radix-ui/react-primitive" "0.1.3"
518 |
519 | "@radix-ui/rect@0.1.1":
520 | version "0.1.1"
521 | resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-0.1.1.tgz#95b5ba51f469bea6b1b841e2d427e17e37d38419"
522 | integrity sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==
523 | dependencies:
524 | "@babel/runtime" "^7.13.10"
525 |
526 | "@react-three/fiber@^8.9.1":
527 | version "8.9.1"
528 | resolved "https://registry.yarnpkg.com/@react-three/fiber/-/fiber-8.9.1.tgz#54e278148ae1c301a4b516936bfce0d9240a7292"
529 | integrity sha512-xRMO9RGp0DkxSFu5BmmkjCxJ4r0dEpLobtxXdZwI0h2rZZaCnkPM5zThRN8xaZNbZhzRSVICeNOFaZltr9xFyQ==
530 | dependencies:
531 | "@babel/runtime" "^7.17.8"
532 | "@types/react-reconciler" "^0.26.7"
533 | its-fine "^1.0.6"
534 | react-reconciler "^0.27.0"
535 | react-use-measure "^2.1.1"
536 | scheduler "^0.21.0"
537 | suspend-react "^0.0.8"
538 | zustand "^3.7.1"
539 |
540 | "@react-three/postprocessing@^2.7.0":
541 | version "2.7.0"
542 | resolved "https://registry.yarnpkg.com/@react-three/postprocessing/-/postprocessing-2.7.0.tgz#bae6be248bdb43cbab3d125b23ba5b0de4d934d2"
543 | integrity sha512-lJfV8GYp+L1SlGRcl8QPUg9QMdO+8ojW2kfaEc/MuvoI4rX3TRhVd3qFjjF++0bBmzt8LeQpDHCOHFAaT3MNYA==
544 | dependencies:
545 | postprocessing "^6.29.0"
546 | react-merge-refs "^1.1.0"
547 | screen-space-reflections "2.5.0"
548 | three-stdlib "^2.8.11"
549 |
550 | "@stitches/react@1.2.8":
551 | version "1.2.8"
552 | resolved "https://registry.yarnpkg.com/@stitches/react/-/react-1.2.8.tgz#954f8008be8d9c65c4e58efa0937f32388ce3a38"
553 | integrity sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==
554 |
555 | "@types/node@^18.11.13":
556 | version "18.11.13"
557 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.13.tgz#dff34f226ec1ac0432ae3b136ec5552bd3b9c0fe"
558 | integrity sha512-IASpMGVcWpUsx5xBOrxMj7Bl8lqfuTY7FKAnPmu5cHkfQVWF8GulWS1jbRqA934qZL35xh5xN/+Xe/i26Bod4w==
559 |
560 | "@types/offscreencanvas@^2019.6.4":
561 | version "2019.7.0"
562 | resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz#e4a932069db47bb3eabeb0b305502d01586fa90d"
563 | integrity sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==
564 |
565 | "@types/prop-types@*":
566 | version "15.7.5"
567 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
568 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
569 |
570 | "@types/react-reconciler@^0.26.7":
571 | version "0.26.7"
572 | resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.26.7.tgz#0c4643f30821ae057e401b0d9037e03e8e9b2a36"
573 | integrity sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==
574 | dependencies:
575 | "@types/react" "*"
576 |
577 | "@types/react-reconciler@^0.28.0":
578 | version "0.28.0"
579 | resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.28.0.tgz#513acbed173140e958c909041ca14eb40412077f"
580 | integrity sha512-5cjk9ottZAj7eaTsqzPUIlrVbh3hBAO2YaEL1rkjHKB3xNAId7oU8GhzvAX+gfmlfoxTwJnBjPxEHyxkEA1Ffg==
581 | dependencies:
582 | "@types/react" "*"
583 |
584 | "@types/react@*":
585 | version "18.0.26"
586 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917"
587 | integrity sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==
588 | dependencies:
589 | "@types/prop-types" "*"
590 | "@types/scheduler" "*"
591 | csstype "^3.0.2"
592 |
593 | "@types/scheduler@*":
594 | version "0.16.2"
595 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
596 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
597 |
598 | "@types/three@^0.146.0":
599 | version "0.146.0"
600 | resolved "https://registry.yarnpkg.com/@types/three/-/three-0.146.0.tgz#83813ba0d2fff6bdc6d7fda3a77993a932bba45f"
601 | integrity sha512-75AgysUrIvTCB054eQa2pDVFurfeFW8CrMQjpzjt3yHBfuuknoSvvsESd/3EhQxPrz9si3+P0wiDUVsWUlljfA==
602 | dependencies:
603 | "@types/webxr" "*"
604 |
605 | "@types/webxr@*":
606 | version "0.5.0"
607 | resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.0.tgz#aae1cef3210d88fd4204f8c33385a0bbc4da07c9"
608 | integrity sha512-IUMDPSXnYIbEO2IereEFcgcqfDREOgmbGqtrMpVPpACTU6pltYLwHgVkrnYv0XhWEcjio9sYEfIEzgn3c7nDqA==
609 |
610 | "@use-gesture/core@10.2.23":
611 | version "10.2.23"
612 | resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.2.23.tgz#ed5892e86b4ad537613b6ab83111ca58341e40c0"
613 | integrity sha512-Ynap/Uh6RX1Vgn3zNmFTyKapapdf7Av+GzAe6h+RsBZaxMF1z3cK6aohHPJP6T1hLrPyH/yehxa7RBqyESG9RA==
614 |
615 | "@use-gesture/react@^10.2.5":
616 | version "10.2.23"
617 | resolved "https://registry.yarnpkg.com/@use-gesture/react/-/react-10.2.23.tgz#744f7fb68e904721a2bf3d8bffd40e446b86c82a"
618 | integrity sha512-anj9j3Lm4l+/s60Jv1FD2m13r+T+aYstSHUT62hTugojM64LPe9XatfEVHRyWOrGjRU2buQhlm03xN8oxkg/OQ==
619 | dependencies:
620 | "@use-gesture/core" "10.2.23"
621 |
622 | "@vitejs/plugin-react@2":
623 | version "2.2.0"
624 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz#1b9f63b8b6bc3f56258d20cd19b33f5cc761ce6e"
625 | integrity sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==
626 | dependencies:
627 | "@babel/core" "^7.19.6"
628 | "@babel/plugin-transform-react-jsx" "^7.19.0"
629 | "@babel/plugin-transform-react-jsx-development" "^7.18.6"
630 | "@babel/plugin-transform-react-jsx-self" "^7.18.6"
631 | "@babel/plugin-transform-react-jsx-source" "^7.19.6"
632 | magic-string "^0.26.7"
633 | react-refresh "^0.14.0"
634 |
635 | "@webgpu/glslang@^0.0.15":
636 | version "0.0.15"
637 | resolved "https://registry.yarnpkg.com/@webgpu/glslang/-/glslang-0.0.15.tgz#f5ccaf6015241e6175f4b90906b053f88483d1f2"
638 | integrity sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q==
639 |
640 | ansi-styles@^3.2.1:
641 | version "3.2.1"
642 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
643 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
644 | dependencies:
645 | color-convert "^1.9.0"
646 |
647 | assign-symbols@^1.0.0:
648 | version "1.0.0"
649 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
650 | integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==
651 |
652 | attr-accept@^2.2.2:
653 | version "2.2.2"
654 | resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b"
655 | integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==
656 |
657 | browserslist@^4.21.3:
658 | version "4.21.4"
659 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
660 | integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
661 | dependencies:
662 | caniuse-lite "^1.0.30001400"
663 | electron-to-chromium "^1.4.251"
664 | node-releases "^2.0.6"
665 | update-browserslist-db "^1.0.9"
666 |
667 | caniuse-lite@^1.0.30001400:
668 | version "1.0.30001439"
669 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz#ab7371faeb4adff4b74dad1718a6fd122e45d9cb"
670 | integrity sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==
671 |
672 | chalk@^2.0.0:
673 | version "2.4.2"
674 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
675 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
676 | dependencies:
677 | ansi-styles "^3.2.1"
678 | escape-string-regexp "^1.0.5"
679 | supports-color "^5.3.0"
680 |
681 | chevrotain@^10.1.2:
682 | version "10.4.2"
683 | resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-10.4.2.tgz#9abeac6a60134931c0a0788b206400e5f7a3daba"
684 | integrity sha512-gzF5GxE0Ckti5kZVuKEZycLntB5X2aj9RVY0r4/220GwQjdnljU+/t3kP74/FMWC7IzCDDEjQ9wsFUf0WCdSHg==
685 | dependencies:
686 | "@chevrotain/cst-dts-gen" "10.4.2"
687 | "@chevrotain/gast" "10.4.2"
688 | "@chevrotain/types" "10.4.2"
689 | "@chevrotain/utils" "10.4.2"
690 | lodash "4.17.21"
691 | regexp-to-ast "0.5.0"
692 |
693 | color-convert@^1.9.0:
694 | version "1.9.3"
695 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
696 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
697 | dependencies:
698 | color-name "1.1.3"
699 |
700 | color-name@1.1.3:
701 | version "1.1.3"
702 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
703 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
704 |
705 | colord@^2.9.2:
706 | version "2.9.3"
707 | resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
708 | integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
709 |
710 | convert-source-map@^1.7.0:
711 | version "1.9.0"
712 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
713 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
714 |
715 | csstype@^3.0.2, csstype@^3.0.4:
716 | version "3.1.1"
717 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
718 | integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
719 |
720 | debounce@^1.2.1:
721 | version "1.2.1"
722 | resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
723 | integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
724 |
725 | debug@^4.1.0:
726 | version "4.3.4"
727 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
728 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
729 | dependencies:
730 | ms "2.1.2"
731 |
732 | dequal@^2.0.2:
733 | version "2.0.3"
734 | resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
735 | integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
736 |
737 | draco3d@^1.4.1:
738 | version "1.5.5"
739 | resolved "https://registry.yarnpkg.com/draco3d/-/draco3d-1.5.5.tgz#6bf4bbdd65950e6153e991cb0dcb8a10323f610e"
740 | integrity sha512-JVuNV0EJzD3LBYhGyIXJLeBID/EVtmFO1ZNhAYflTgiMiAJlbhXQmRRda/azjc8MRVMHh0gqGhiqHUo5dIXM8Q==
741 |
742 | electron-to-chromium@^1.4.251:
743 | version "1.4.284"
744 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
745 | integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
746 |
747 | esbuild-android-64@0.15.18:
748 | version "0.15.18"
749 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5"
750 | integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==
751 |
752 | esbuild-android-arm64@0.15.18:
753 | version "0.15.18"
754 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04"
755 | integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==
756 |
757 | esbuild-darwin-64@0.15.18:
758 | version "0.15.18"
759 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz#428e1730ea819d500808f220fbc5207aea6d4410"
760 | integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==
761 |
762 | esbuild-darwin-arm64@0.15.18:
763 | version "0.15.18"
764 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz#b6dfc7799115a2917f35970bfbc93ae50256b337"
765 | integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==
766 |
767 | esbuild-freebsd-64@0.15.18:
768 | version "0.15.18"
769 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2"
770 | integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==
771 |
772 | esbuild-freebsd-arm64@0.15.18:
773 | version "0.15.18"
774 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635"
775 | integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==
776 |
777 | esbuild-linux-32@0.15.18:
778 | version "0.15.18"
779 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce"
780 | integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==
781 |
782 | esbuild-linux-64@0.15.18:
783 | version "0.15.18"
784 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c"
785 | integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==
786 |
787 | esbuild-linux-arm64@0.15.18:
788 | version "0.15.18"
789 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d"
790 | integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==
791 |
792 | esbuild-linux-arm@0.15.18:
793 | version "0.15.18"
794 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc"
795 | integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==
796 |
797 | esbuild-linux-mips64le@0.15.18:
798 | version "0.15.18"
799 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb"
800 | integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==
801 |
802 | esbuild-linux-ppc64le@0.15.18:
803 | version "0.15.18"
804 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507"
805 | integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==
806 |
807 | esbuild-linux-riscv64@0.15.18:
808 | version "0.15.18"
809 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6"
810 | integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==
811 |
812 | esbuild-linux-s390x@0.15.18:
813 | version "0.15.18"
814 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb"
815 | integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==
816 |
817 | esbuild-netbsd-64@0.15.18:
818 | version "0.15.18"
819 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998"
820 | integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==
821 |
822 | esbuild-openbsd-64@0.15.18:
823 | version "0.15.18"
824 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8"
825 | integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==
826 |
827 | esbuild-sunos-64@0.15.18:
828 | version "0.15.18"
829 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971"
830 | integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==
831 |
832 | esbuild-windows-32@0.15.18:
833 | version "0.15.18"
834 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3"
835 | integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==
836 |
837 | esbuild-windows-64@0.15.18:
838 | version "0.15.18"
839 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0"
840 | integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==
841 |
842 | esbuild-windows-arm64@0.15.18:
843 | version "0.15.18"
844 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7"
845 | integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==
846 |
847 | esbuild@^0.15.9:
848 | version "0.15.18"
849 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.18.tgz#ea894adaf3fbc036d32320a00d4d6e4978a2f36d"
850 | integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==
851 | optionalDependencies:
852 | "@esbuild/android-arm" "0.15.18"
853 | "@esbuild/linux-loong64" "0.15.18"
854 | esbuild-android-64 "0.15.18"
855 | esbuild-android-arm64 "0.15.18"
856 | esbuild-darwin-64 "0.15.18"
857 | esbuild-darwin-arm64 "0.15.18"
858 | esbuild-freebsd-64 "0.15.18"
859 | esbuild-freebsd-arm64 "0.15.18"
860 | esbuild-linux-32 "0.15.18"
861 | esbuild-linux-64 "0.15.18"
862 | esbuild-linux-arm "0.15.18"
863 | esbuild-linux-arm64 "0.15.18"
864 | esbuild-linux-mips64le "0.15.18"
865 | esbuild-linux-ppc64le "0.15.18"
866 | esbuild-linux-riscv64 "0.15.18"
867 | esbuild-linux-s390x "0.15.18"
868 | esbuild-netbsd-64 "0.15.18"
869 | esbuild-openbsd-64 "0.15.18"
870 | esbuild-sunos-64 "0.15.18"
871 | esbuild-windows-32 "0.15.18"
872 | esbuild-windows-64 "0.15.18"
873 | esbuild-windows-arm64 "0.15.18"
874 |
875 | escalade@^3.1.1:
876 | version "3.1.1"
877 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
878 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
879 |
880 | escape-string-regexp@^1.0.5:
881 | version "1.0.5"
882 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
883 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
884 |
885 | extend-shallow@^2.0.1:
886 | version "2.0.1"
887 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
888 | integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
889 | dependencies:
890 | is-extendable "^0.1.0"
891 |
892 | extend-shallow@^3.0.0:
893 | version "3.0.2"
894 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
895 | integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==
896 | dependencies:
897 | assign-symbols "^1.0.0"
898 | is-extendable "^1.0.1"
899 |
900 | fflate@^0.6.9:
901 | version "0.6.10"
902 | resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43"
903 | integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==
904 |
905 | file-selector@^0.5.0:
906 | version "0.5.0"
907 | resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.5.0.tgz#21c7126dc9728b31a2742d91cab20d55e67e4fb4"
908 | integrity sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==
909 | dependencies:
910 | tslib "^2.0.3"
911 |
912 | for-in@^1.0.2:
913 | version "1.0.2"
914 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
915 | integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
916 |
917 | fsevents@~2.3.2:
918 | version "2.3.2"
919 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
920 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
921 |
922 | function-bind@^1.1.1:
923 | version "1.1.1"
924 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
925 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
926 |
927 | gensync@^1.0.0-beta.2:
928 | version "1.0.0-beta.2"
929 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
930 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
931 |
932 | get-value@^2.0.6:
933 | version "2.0.6"
934 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
935 | integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
936 |
937 | globals@^11.1.0:
938 | version "11.12.0"
939 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
940 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
941 |
942 | has-flag@^3.0.0:
943 | version "3.0.0"
944 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
945 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
946 |
947 | has@^1.0.3:
948 | version "1.0.3"
949 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
950 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
951 | dependencies:
952 | function-bind "^1.1.1"
953 |
954 | is-core-module@^2.9.0:
955 | version "2.11.0"
956 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
957 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
958 | dependencies:
959 | has "^1.0.3"
960 |
961 | is-extendable@^0.1.0, is-extendable@^0.1.1:
962 | version "0.1.1"
963 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
964 | integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
965 |
966 | is-extendable@^1.0.0, is-extendable@^1.0.1:
967 | version "1.0.1"
968 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
969 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
970 | dependencies:
971 | is-plain-object "^2.0.4"
972 |
973 | is-plain-object@^2.0.3, is-plain-object@^2.0.4:
974 | version "2.0.4"
975 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
976 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
977 | dependencies:
978 | isobject "^3.0.1"
979 |
980 | isobject@^3.0.1:
981 | version "3.0.1"
982 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
983 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
984 |
985 | its-fine@^1.0.6:
986 | version "1.0.6"
987 | resolved "https://registry.yarnpkg.com/its-fine/-/its-fine-1.0.6.tgz#087b14d71137816dab676d8b57c35a6cd5d2b021"
988 | integrity sha512-VZJZPwVT2kxe5KQv+TxCjojfLiUIut8zXDNLTxcM7gJ/xQ/bSPk5M0neZ+j3myy45KKkltY1mm1jyJgx3Fxsdg==
989 | dependencies:
990 | "@types/react-reconciler" "^0.28.0"
991 |
992 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
993 | version "4.0.0"
994 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
995 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
996 |
997 | jsesc@^2.5.1:
998 | version "2.5.2"
999 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
1000 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
1001 |
1002 | json5@^2.2.1:
1003 | version "2.2.1"
1004 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
1005 | integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
1006 |
1007 | ktx-parse@^0.4.5:
1008 | version "0.4.5"
1009 | resolved "https://registry.yarnpkg.com/ktx-parse/-/ktx-parse-0.4.5.tgz#79905e22281a9d3e602b2ff522df1ee7d1813aa6"
1010 | integrity sha512-MK3FOody4TXbFf8Yqv7EBbySw7aPvEcPX++Ipt6Sox+/YMFvR5xaTyhfNSk1AEmMy+RYIw81ctN4IMxCB8OAlg==
1011 |
1012 | leva@^0.9.34:
1013 | version "0.9.34"
1014 | resolved "https://registry.yarnpkg.com/leva/-/leva-0.9.34.tgz#24f2d717f620de959e9ff27b0118d8d94d4e730b"
1015 | integrity sha512-hQmWAakOCuBXYIenJ7RaNIei5enDwHNNb6Gz5BUU3mZk+ElECdbvNJbmcMfkFAJslJw33MXRabt7OKIzItLLWw==
1016 | dependencies:
1017 | "@radix-ui/react-portal" "^0.1.3"
1018 | "@radix-ui/react-tooltip" "0.1.6"
1019 | "@stitches/react" "1.2.8"
1020 | "@use-gesture/react" "^10.2.5"
1021 | colord "^2.9.2"
1022 | dequal "^2.0.2"
1023 | merge-value "^1.0.0"
1024 | react-colorful "^5.5.1"
1025 | react-dropzone "^12.0.0"
1026 | v8n "^1.3.3"
1027 | zustand "^3.6.9"
1028 |
1029 | lodash@4.17.21:
1030 | version "4.17.21"
1031 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
1032 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
1033 |
1034 | loose-envify@^1.1.0, loose-envify@^1.4.0:
1035 | version "1.4.0"
1036 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
1037 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
1038 | dependencies:
1039 | js-tokens "^3.0.0 || ^4.0.0"
1040 |
1041 | maath@^0.4.2:
1042 | version "0.4.2"
1043 | resolved "https://registry.yarnpkg.com/maath/-/maath-0.4.2.tgz#379efb3d2fd46bb557333eabb41e4a1d2cbd2766"
1044 | integrity sha512-9vd9AzZY7XLM159LNyWF6v2Lu1lsnjPMlzdGy3pMKxTUg0mWePdyHjfhNi439RpLZCR33hDkdbxbbsmjWyqhIA==
1045 |
1046 | magic-string@^0.26.7:
1047 | version "0.26.7"
1048 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
1049 | integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==
1050 | dependencies:
1051 | sourcemap-codec "^1.4.8"
1052 |
1053 | merge-value@^1.0.0:
1054 | version "1.0.0"
1055 | resolved "https://registry.yarnpkg.com/merge-value/-/merge-value-1.0.0.tgz#d28f8d41c0b37426e032d1059a0d0343302de502"
1056 | integrity sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==
1057 | dependencies:
1058 | get-value "^2.0.6"
1059 | is-extendable "^1.0.0"
1060 | mixin-deep "^1.2.0"
1061 | set-value "^2.0.0"
1062 |
1063 | mixin-deep@^1.2.0:
1064 | version "1.3.2"
1065 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
1066 | integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
1067 | dependencies:
1068 | for-in "^1.0.2"
1069 | is-extendable "^1.0.1"
1070 |
1071 | mmd-parser@^1.0.4:
1072 | version "1.0.4"
1073 | resolved "https://registry.yarnpkg.com/mmd-parser/-/mmd-parser-1.0.4.tgz#87cc05782cb5974ca854f0303fc5147bc9d690e7"
1074 | integrity sha512-Qi0VCU46t2IwfGv5KF0+D/t9cizcDug7qnNoy9Ggk7aucp0tssV8IwTMkBlDbm+VqAf3cdQHTCARKSsuS2MYFg==
1075 |
1076 | ms@2.1.2:
1077 | version "2.1.2"
1078 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1079 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1080 |
1081 | nanoid@^3.3.4:
1082 | version "3.3.4"
1083 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
1084 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
1085 |
1086 | node-releases@^2.0.6:
1087 | version "2.0.6"
1088 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
1089 | integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
1090 |
1091 | object-assign@^4.1.1:
1092 | version "4.1.1"
1093 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1094 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
1095 |
1096 | opentype.js@^1.3.3:
1097 | version "1.3.4"
1098 | resolved "https://registry.yarnpkg.com/opentype.js/-/opentype.js-1.3.4.tgz#1c0e72e46288473cc4a4c6a2dc60fd7fe6020d77"
1099 | integrity sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==
1100 | dependencies:
1101 | string.prototype.codepointat "^0.2.1"
1102 | tiny-inflate "^1.0.3"
1103 |
1104 | path-parse@^1.0.7:
1105 | version "1.0.7"
1106 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1107 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1108 |
1109 | picocolors@^1.0.0:
1110 | version "1.0.0"
1111 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1112 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1113 |
1114 | postcss@^8.4.18:
1115 | version "8.4.19"
1116 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc"
1117 | integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==
1118 | dependencies:
1119 | nanoid "^3.3.4"
1120 | picocolors "^1.0.0"
1121 | source-map-js "^1.0.2"
1122 |
1123 | postprocessing@^6.29.0:
1124 | version "6.29.1"
1125 | resolved "https://registry.yarnpkg.com/postprocessing/-/postprocessing-6.29.1.tgz#169b48cca498a52d3ee4b8960645b089cc7f64b3"
1126 | integrity sha512-w+XoL2Z7YpVDsHbIeg6sldMMmDqZS4Hul1FDq3TjOeXZ0Wnp0Qy1EvR7QmYJxyWBux1cKQx/k3XO7LxfvPsZyg==
1127 |
1128 | potpack@^1.0.1:
1129 | version "1.0.2"
1130 | resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14"
1131 | integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==
1132 |
1133 | prop-types@^15.8.1:
1134 | version "15.8.1"
1135 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
1136 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
1137 | dependencies:
1138 | loose-envify "^1.4.0"
1139 | object-assign "^4.1.1"
1140 | react-is "^16.13.1"
1141 |
1142 | react-colorful@^5.5.1:
1143 | version "5.6.1"
1144 | resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b"
1145 | integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==
1146 |
1147 | react-dom@^18.2.0:
1148 | version "18.2.0"
1149 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
1150 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
1151 | dependencies:
1152 | loose-envify "^1.1.0"
1153 | scheduler "^0.23.0"
1154 |
1155 | react-dropzone@^12.0.0:
1156 | version "12.1.0"
1157 | resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-12.1.0.tgz#e097b37e9da6f9e324efc757b7434ebc6f3dc2cb"
1158 | integrity sha512-iBYHA1rbopIvtzokEX4QubO6qk5IF/x3BtKGu74rF2JkQDXnwC4uO/lHKpaw4PJIV6iIAYOlwLv2FpiGyqHNog==
1159 | dependencies:
1160 | attr-accept "^2.2.2"
1161 | file-selector "^0.5.0"
1162 | prop-types "^15.8.1"
1163 |
1164 | react-is@^16.13.1:
1165 | version "16.13.1"
1166 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
1167 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
1168 |
1169 | react-merge-refs@^1.1.0:
1170 | version "1.1.0"
1171 | resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06"
1172 | integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==
1173 |
1174 | react-reconciler@^0.27.0:
1175 | version "0.27.0"
1176 | resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.27.0.tgz#360124fdf2d76447c7491ee5f0e04503ed9acf5b"
1177 | integrity sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==
1178 | dependencies:
1179 | loose-envify "^1.1.0"
1180 | scheduler "^0.21.0"
1181 |
1182 | react-refresh@^0.14.0:
1183 | version "0.14.0"
1184 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
1185 | integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
1186 |
1187 | react-use-measure@^2.1.1:
1188 | version "2.1.1"
1189 | resolved "https://registry.yarnpkg.com/react-use-measure/-/react-use-measure-2.1.1.tgz#5824537f4ee01c9469c45d5f7a8446177c6cc4ba"
1190 | integrity sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==
1191 | dependencies:
1192 | debounce "^1.2.1"
1193 |
1194 | react@^18.2.0:
1195 | version "18.2.0"
1196 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
1197 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
1198 | dependencies:
1199 | loose-envify "^1.1.0"
1200 |
1201 | regenerator-runtime@^0.13.11:
1202 | version "0.13.11"
1203 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
1204 | integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
1205 |
1206 | regexp-to-ast@0.5.0:
1207 | version "0.5.0"
1208 | resolved "https://registry.yarnpkg.com/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz#56c73856bee5e1fef7f73a00f1473452ab712a24"
1209 | integrity sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==
1210 |
1211 | resolve@^1.22.1:
1212 | version "1.22.1"
1213 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
1214 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
1215 | dependencies:
1216 | is-core-module "^2.9.0"
1217 | path-parse "^1.0.7"
1218 | supports-preserve-symlinks-flag "^1.0.0"
1219 |
1220 | rollup@^2.79.1:
1221 | version "2.79.1"
1222 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
1223 | integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
1224 | optionalDependencies:
1225 | fsevents "~2.3.2"
1226 |
1227 | scheduler@^0.21.0:
1228 | version "0.21.0"
1229 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820"
1230 | integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==
1231 | dependencies:
1232 | loose-envify "^1.1.0"
1233 |
1234 | scheduler@^0.23.0:
1235 | version "0.23.0"
1236 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
1237 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
1238 | dependencies:
1239 | loose-envify "^1.1.0"
1240 |
1241 | screen-space-reflections@2.5.0:
1242 | version "2.5.0"
1243 | resolved "https://registry.yarnpkg.com/screen-space-reflections/-/screen-space-reflections-2.5.0.tgz#2a6ea982da96f9c35f34a361b2555439f9fbb1f6"
1244 | integrity sha512-fWSDMhJS0xwD3LTxRRch7Lb9NzxsR66sCmtDmAA7i+OGnghUrBBsrha85ng7StnCBaLq/BKmZ97dLxWd1XgWdQ==
1245 |
1246 | semver@^6.3.0:
1247 | version "6.3.0"
1248 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1249 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1250 |
1251 | set-value@^2.0.0:
1252 | version "2.0.1"
1253 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
1254 | integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
1255 | dependencies:
1256 | extend-shallow "^2.0.1"
1257 | is-extendable "^0.1.1"
1258 | is-plain-object "^2.0.3"
1259 | split-string "^3.0.1"
1260 |
1261 | source-map-js@^1.0.2:
1262 | version "1.0.2"
1263 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1264 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
1265 |
1266 | sourcemap-codec@^1.4.8:
1267 | version "1.4.8"
1268 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
1269 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
1270 |
1271 | split-string@^3.0.1:
1272 | version "3.1.0"
1273 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
1274 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
1275 | dependencies:
1276 | extend-shallow "^3.0.0"
1277 |
1278 | string.prototype.codepointat@^0.2.1:
1279 | version "0.2.1"
1280 | resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc"
1281 | integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==
1282 |
1283 | supports-color@^5.3.0:
1284 | version "5.5.0"
1285 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1286 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1287 | dependencies:
1288 | has-flag "^3.0.0"
1289 |
1290 | supports-preserve-symlinks-flag@^1.0.0:
1291 | version "1.0.0"
1292 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
1293 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
1294 |
1295 | suspend-react@^0.0.8:
1296 | version "0.0.8"
1297 | resolved "https://registry.yarnpkg.com/suspend-react/-/suspend-react-0.0.8.tgz#b0740c1386b4eb652f17affe4339915ee268bd31"
1298 | integrity sha512-ZC3r8Hu1y0dIThzsGw0RLZplnX9yXwfItcvaIzJc2VQVi8TGyGDlu92syMB5ulybfvGLHAI5Ghzlk23UBPF8xg==
1299 |
1300 | three-stdlib@^2.8.11:
1301 | version "2.20.4"
1302 | resolved "https://registry.yarnpkg.com/three-stdlib/-/three-stdlib-2.20.4.tgz#89a006c53f12c0b037dc9242874bcada8865bd00"
1303 | integrity sha512-Ksy7h//nnH5dhohbmE6mT/gM54dtmcAjaC9Srx7AJ7xpmCEX3IASkZyUkVqNXv3NZFqx79Swq3sSSVqL4pF79Q==
1304 | dependencies:
1305 | "@babel/runtime" "^7.16.7"
1306 | "@types/offscreencanvas" "^2019.6.4"
1307 | "@webgpu/glslang" "^0.0.15"
1308 | chevrotain "^10.1.2"
1309 | draco3d "^1.4.1"
1310 | fflate "^0.6.9"
1311 | ktx-parse "^0.4.5"
1312 | mmd-parser "^1.0.4"
1313 | opentype.js "^1.3.3"
1314 | potpack "^1.0.1"
1315 | zstddec "^0.0.2"
1316 |
1317 | three@^0.147.0:
1318 | version "0.147.0"
1319 | resolved "https://registry.yarnpkg.com/three/-/three-0.147.0.tgz#1974af9e8e0c1efb3a8561334d57c0b6c29a7951"
1320 | integrity sha512-LPTOslYQXFkmvceQjFTNnVVli2LaVF6C99Pv34fJypp8NbQLbTlu3KinZ0zURghS5zEehK+VQyvWuPZ/Sm8fzw==
1321 |
1322 | tiny-inflate@^1.0.3:
1323 | version "1.0.3"
1324 | resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4"
1325 | integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==
1326 |
1327 | to-fast-properties@^2.0.0:
1328 | version "2.0.0"
1329 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
1330 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
1331 |
1332 | tslib@^2.0.3:
1333 | version "2.4.1"
1334 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
1335 | integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
1336 |
1337 | typescript@^4.9.3:
1338 | version "4.9.3"
1339 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db"
1340 | integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==
1341 |
1342 | update-browserslist-db@^1.0.9:
1343 | version "1.0.10"
1344 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
1345 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
1346 | dependencies:
1347 | escalade "^3.1.1"
1348 | picocolors "^1.0.0"
1349 |
1350 | v8n@^1.3.3:
1351 | version "1.5.1"
1352 | resolved "https://registry.yarnpkg.com/v8n/-/v8n-1.5.1.tgz#aecfeb9d298a8ce8be443cd7ad0d46e30203165a"
1353 | integrity sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==
1354 |
1355 | vite@^3.2.5:
1356 | version "3.2.5"
1357 | resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.5.tgz#dee5678172a8a0ab3e547ad4148c3d547f90e86a"
1358 | integrity sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==
1359 | dependencies:
1360 | esbuild "^0.15.9"
1361 | postcss "^8.4.18"
1362 | resolve "^1.22.1"
1363 | rollup "^2.79.1"
1364 | optionalDependencies:
1365 | fsevents "~2.3.2"
1366 |
1367 | zstddec@^0.0.2:
1368 | version "0.0.2"
1369 | resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.0.2.tgz#57e2f28dd1ff56b750e07d158a43f0611ad9eeb4"
1370 | integrity sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==
1371 |
1372 | zustand@^3.6.9, zustand@^3.7.1:
1373 | version "3.7.2"
1374 | resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.7.2.tgz#7b44c4f4a5bfd7a8296a3957b13e1c346f42514d"
1375 | integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==
1376 |
--------------------------------------------------------------------------------