From b52bbb434a45ab8aa7514b0950ba61a6efc81223 Mon Sep 17 00:00:00 2001 From: Simon Randby Date: Sat, 13 Jul 2024 17:59:17 +0200 Subject: [PATCH 1/5] Example project: Add demo init overlay when in run mode --- example-project/src/main.ts | 143 ++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/example-project/src/main.ts b/example-project/src/main.ts index df0ad88..d67ec9f 100644 --- a/example-project/src/main.ts +++ b/example-project/src/main.ts @@ -17,4 +17,147 @@ export const renin = new Renin({ aspectRatio: 16.0/9, }); +var enableStartupOverlay = true; +if(enableStartupOverlay) { + // This enables an overlay, so that when you run in production/release mode (by starting a http server in the dist folder), + // you get a screen showing a start button demo enjoyers can click, instead of them having to know to press space to run. + // You also get goodies like fullscreen being automatically set, and some more production info showing up at the start while it's warming up! + const overlay = document.createElement("div"); + overlay.style.position = "absolute"; + overlay.style.left = "0px"; + overlay.style.right = "0px"; + overlay.style.top = "0px"; + overlay.style.bottom = "0px"; + overlay.style.background = "#f2de8d"; // This is the background of the splash screen + overlay.style.display = "flex"; + overlay.style.alignItems = "center"; + overlay.style.justifyContent = "center"; + document.body.appendChild(overlay); + + if (import.meta.env.PROD) { + var demoName = "Example Project"; + var crew = "Demo Group"; + var party = "Demo Party"; + var releasedTime = "Now!"; + + const delay = (ms: number) => + new Promise((resolve) => setTimeout(resolve, ms)); + (async () => { + overlay.innerHTML = ` +
+
${demoName}
+
by
+
${crew}
+ + +
Loading, please wait... (could take a while, hang in there!)
+ + +
Released at ${party} ${releasedTime}.
+
+ `; + await delay(50); + renin.isFullscreen = true; + let width = window.innerWidth * 2; + let height = window.innerHeight * 2; + const ratio = 2.35; + if (width / height >= ratio) { + width = height * ratio; + } else { + height = width / ratio; + } + renin.resize(width, height); + + var warmupScenes = false; + if(warmupScenes) + { + // This is awesome for performance when running the final built version of your demo, but wrecks everything if your scenes are stateful. + // Enable with care! + + for (let i = 0; i < 150 * 4; i++) { + await delay(1); + renin.jumpToFrame(i * 25); + renin.update(i * 25); + renin.render(); + console.log("warmup", i); + } + + // Put special frames you know you want warmed up, like scene transitions, here. + const specialFrames = [ + 0, + ]; + for (const frame of specialFrames) { + await delay(1); + renin.jumpToFrame(frame); + renin.update(frame); + renin.render(); + console.log("special warmup", frame); + } + + await delay(100); + } + + renin.jumpToFrame(0); + + await delay(100); + renin.resize(width, height); + const loading = document.querySelector("#loading"); + // @ts-ignore + loading.style.visibility = "hidden"; + const button = document.querySelector("button"); + button?.addEventListener("click", async () => { + document.body.requestFullscreen(); + delay(1000); + let width = window.innerWidth; + let height = window.innerHeight; + const ratio = 2.35; + if (width / height >= ratio) { + width = height * ratio; + } else { + height = width / ratio; + } + renin.renderer.domElement.width = width; + renin.renderer.domElement.height = height; + + renin.renderer.domElement.style.width = width + "px"; + renin.renderer.domElement.style.height = height + "px"; + + /* position domElement in the center of the screen */ + renin.renderer.domElement.style.position = "absolute"; + renin.renderer.domElement.style.left = "50%"; + renin.renderer.domElement.style.top = "50%"; + renin.renderer.domElement.style.transform = "translate(-50%, -50%)"; + + renin.resize(width, height); + renin.renderer.setPixelRatio(1); + const subtitleValue = document.querySelector("select")?.value; + //@ts-ignore + renin.subtitlePlacement = subtitleValue; + await delay(200); + for (let i = 0; i < 100; i++) { + await delay(1); + // @ts-ignore + overlay.style.opacity = 1 - i / 100; + } + overlay.remove(); + await delay(1500); + overlay.remove(); + renin.music.play(); + }); + // @ts-ignore + button.style.visibility = "visible"; + })(); + } else { + overlay.remove(); + } +} + renin.loop(); From d449b83479f3433739e4a31390ce099ba2ecabbf Mon Sep 17 00:00:00 2001 From: Simon Randby Date: Sat, 13 Jul 2024 18:00:29 +0200 Subject: [PATCH 2/5] Example project: Refer to sibling renin by default For some reason, the absence of this, has yet again this year, resulted in an ancient renin from registry.yarnpkg.com being picked up. I mean, if we encouraged by running with just refferingto renin in package.json and that was it, I'd get it. But since we require renin being in a sibling folder anyway, this is just a source of pain. And this should fix it. For now. --- example-project/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example-project/package.json b/example-project/package.json index 0e13a6c..6e21f3a 100644 --- a/example-project/package.json +++ b/example-project/package.json @@ -16,7 +16,7 @@ }, "dependencies": { "@types/three": "*", - "renin": "*", + "renin": "file:../renin/renin", "three": "*" } } From 1b20f09eba8c869ff2b5f736bfb4e784a8cf5c21 Mon Sep 17 00:00:00 2001 From: Simon Randby Date: Sat, 13 Jul 2024 20:11:21 +0200 Subject: [PATCH 3/5] Make aspectRatio proper visible variable --- example-project/src/main.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/example-project/src/main.ts b/example-project/src/main.ts index d67ec9f..840849b 100644 --- a/example-project/src/main.ts +++ b/example-project/src/main.ts @@ -35,6 +35,8 @@ if(enableStartupOverlay) { document.body.appendChild(overlay); if (import.meta.env.PROD) { + const aspectRatio = 16.0/9.0; // Would probably be more efficient to just write 1.7778, but this happens only once, is cheap, and more readable this way + var demoName = "Example Project"; var crew = "Demo Group"; var party = "Demo Party"; @@ -68,11 +70,10 @@ if(enableStartupOverlay) { renin.isFullscreen = true; let width = window.innerWidth * 2; let height = window.innerHeight * 2; - const ratio = 2.35; - if (width / height >= ratio) { - width = height * ratio; + if (width / height >= aspectRatio) { + width = height * aspectRatio; } else { - height = width / ratio; + height = width / aspectRatio; } renin.resize(width, height); @@ -118,11 +119,10 @@ if(enableStartupOverlay) { delay(1000); let width = window.innerWidth; let height = window.innerHeight; - const ratio = 2.35; - if (width / height >= ratio) { - width = height * ratio; + if (width / height >= aspectRatio) { + width = height * aspectRatio; } else { - height = width / ratio; + height = width / aspectRatio; } renin.renderer.domElement.width = width; renin.renderer.domElement.height = height; From d0008c0e42f03b1820eaf16a9e5479a23c27c26b Mon Sep 17 00:00:00 2001 From: Simon Randby Date: Sun, 14 Jul 2024 00:01:40 +0200 Subject: [PATCH 4/5] It actually builds and runs now! --- example-project/package.json | 18 +- example-project/src/FlatLand.ts | 1 + example-project/src/JumpingBox.ts | 4 + example-project/src/PostFx.ts | 18 +- example-project/src/SceneSwitcher.ts | 17 +- example-project/src/SpinningDonut.ts | 4 +- example-project/src/main.ts | 5 +- example-project/tsconfig.json | 2 +- example-project/vite.config.js | 31 +- example-project/yarn.lock | 510 +++++++++++++++++++++++++++ 10 files changed, 582 insertions(+), 28 deletions(-) create mode 100644 example-project/yarn.lock diff --git a/example-project/package.json b/example-project/package.json index 6e21f3a..96f7497 100644 --- a/example-project/package.json +++ b/example-project/package.json @@ -1,6 +1,6 @@ { "name": "renin-example-project", - "version": "2.1.0", + "version": "1.0.0", "type": "module", "private": true, "scripts": { @@ -10,13 +10,21 @@ }, "devDependencies": { "@rollup/plugin-node-resolve": "*", - "typescript": "*", + "prettier": "^2.8.8", "vite": "*", "vite-plugin-string": "*" }, "dependencies": { - "@types/three": "*", - "renin": "file:../renin/renin", - "three": "*" + "@babylonjs/havok": "^1.0.0", + "@types/seedrandom": "^3.0.5", + "@types/three": "0.150.1", + "postprocessing": "^6.32.2", + "react": "^18.2.0", + "renin": "file:./../renin/renin", + "screen-space-reflections": "^2.5.0", + "seedrandom": "^3.0.5", + "three": "0.150.1", + "three-custom-shader-material": "5.2.0", + "typescript": "^5.1.6" } } diff --git a/example-project/src/FlatLand.ts b/example-project/src/FlatLand.ts index 52d33bf..8a574a7 100644 --- a/example-project/src/FlatLand.ts +++ b/example-project/src/FlatLand.ts @@ -20,6 +20,7 @@ export class FlatLand extends ReninNode { this.texture = new CanvasTexture(this.canvas); } + // @ts-ignore public render(frame: number, _renderer: WebGLRenderer, renin: Renin) { if (!this.ctx) { return; diff --git a/example-project/src/JumpingBox.ts b/example-project/src/JumpingBox.ts index 39fb5c8..2cfac9e 100644 --- a/example-project/src/JumpingBox.ts +++ b/example-project/src/JumpingBox.ts @@ -6,6 +6,7 @@ import { Color, DoubleSide, FloatType, + // @ts-ignore LinearEncoding, Mesh, MeshBasicMaterial, @@ -39,6 +40,7 @@ export class JumpingBox extends ReninNode { /* In the constructor we set up our scene. */ constructor(renin: Renin) { super(renin); + // @ts-ignore this.cube = new Mesh( new BoxGeometry(), new ShaderMaterial({ @@ -76,6 +78,7 @@ export class JumpingBox extends ReninNode { this.renderTarget.setSize(width, height); } + // @ts-ignore public render(frame: number, renderer: WebGLRenderer, renin: Renin) { /* Since these animation updates are not stateful, we do * them "on-demand" in the render method. If they were stateful, @@ -111,6 +114,7 @@ export class JumpingBox extends ReninNode { * to the renderTarget, making the output available to the parent node. */ renderer.setRenderTarget(this.renderTarget); renderer.toneMapping = NoToneMapping; + // @ts-ignore renderer.outputEncoding = LinearEncoding; renderer.render(this.scene, this.camera); } diff --git a/example-project/src/PostFx.ts b/example-project/src/PostFx.ts index 0c781b9..caf5297 100644 --- a/example-project/src/PostFx.ts +++ b/example-project/src/PostFx.ts @@ -20,22 +20,24 @@ export class PostFx extends ReninNode { }) ); + // @ts-ignore + children: { + switcher: SceneSwitcher; + }; + constructor(renin: Renin) { super(renin); - this.scene.add(this.screen); - this.camera.position.z = 10; - - this.children = children<{ - switcher: SceneSwitcher; - }>({ + this.children = children({ switcher: new SceneSwitcher(renin), }); + this.scene.add(this.screen); + this.camera.position.z = 10; } + // @ts-ignore public render(frame: number, renderer: WebGLRenderer, _renin: Renin) { this.screen.material.uniforms.frame.value = frame; - //@ts-ignore - this.screen.material.uniforms.tDiffuse.value = this.children?.switcher.renderTarget.texture; + this.screen.material.uniforms.tDiffuse.value = this.children.switcher.renderTarget.texture; this.screen.material.needsUpdate = true; renderer.render(this.scene, this.camera); } diff --git a/example-project/src/SceneSwitcher.ts b/example-project/src/SceneSwitcher.ts index 0e3dd14..379624f 100644 --- a/example-project/src/SceneSwitcher.ts +++ b/example-project/src/SceneSwitcher.ts @@ -19,6 +19,14 @@ export class SceneSwitcher extends ReninNode { camera = new OrthographicCamera(-1, 1, 1, -1); renderTarget = new WebGLRenderTarget(640, 360); screen = new Mesh(new BoxGeometry(2, 2, 2), new MeshBasicMaterial()); + + // @ts-ignore + children: { + flatland: FlatLand; + jumpingbox: JumpingBox; + spinningcube: SpinningDonut; + }; + public resize(width: number, height: number) { this.renderTarget.setSize(width, height); } @@ -26,20 +34,17 @@ export class SceneSwitcher extends ReninNode { constructor(renin: Renin) { super(renin); - this.children = children<{ - spinningcube: SpinningDonut; - flatland: FlatLand; - jumpingbox: JumpingBox; - }>({ - spinningcube: new SpinningDonut(renin), + this.children = children({ flatland: new FlatLand(renin), jumpingbox: new JumpingBox(renin), + spinningcube: new SpinningDonut(renin), }); this.scene.add(this.screen); this.scene.add(this.camera); this.camera.position.z = 10; } + // @ts-ignore public render(frame: number, renderer: WebGLRenderer) { this.screen.material.map = null; if (this.children?.jumpingbox.isActive) { diff --git a/example-project/src/SpinningDonut.ts b/example-project/src/SpinningDonut.ts index 06b701d..d414bd4 100644 --- a/example-project/src/SpinningDonut.ts +++ b/example-project/src/SpinningDonut.ts @@ -1,5 +1,6 @@ import { ReninNode } from 'renin/lib/ReninNode'; import envMap from './envMap.jpg'; +import { Renin } from 'renin/lib/renin'; import { BufferGeometry, EquirectangularReflectionMapping, @@ -12,11 +13,11 @@ import { Scene, sRGBEncoding, TextureLoader, + // @ts-ignore TorusBufferGeometry, WebGLRenderer, WebGLRenderTarget, } from 'three'; -import { Renin } from 'renin/lib/renin'; export class SpinningDonut extends ReninNode { /* The frame range this node will be active. */ @@ -66,6 +67,7 @@ export class SpinningDonut extends ReninNode { this.renderTarget.setSize(width, height); } + // @ts-ignore public render(frame: number, renderer: WebGLRenderer) { /* Since these animation updates are not stateful, we do * them "on-demand" in the render method. If they were stateful, diff --git a/example-project/src/main.ts b/example-project/src/main.ts index 840849b..98cef6a 100644 --- a/example-project/src/main.ts +++ b/example-project/src/main.ts @@ -3,12 +3,14 @@ import { Renin } from 'renin/lib/renin'; import { PostFx } from './PostFx'; export const renin = new Renin({ + // @ts-ignore music: { src: music, bpm: 114, subdivision: 12, beatOffset: 4, }, + // @ts-ignore root: PostFx, productionMode: import.meta.env.PROD, rendererOptions: { @@ -35,7 +37,8 @@ if(enableStartupOverlay) { document.body.appendChild(overlay); if (import.meta.env.PROD) { - const aspectRatio = 16.0/9.0; // Would probably be more efficient to just write 1.7778, but this happens only once, is cheap, and more readable this way + // @ts-ignore + const aspectRatio = renin.aspectRatio; // Would probably be more efficient to just write 1.7778, but this happens only once, is cheap, and more readable this way var demoName = "Example Project"; var crew = "Demo Group"; diff --git a/example-project/tsconfig.json b/example-project/tsconfig.json index 8a5887d..73953fd 100644 --- a/example-project/tsconfig.json +++ b/example-project/tsconfig.json @@ -5,7 +5,7 @@ "module": "ESNext", "lib": ["ESNext", "DOM"], "moduleResolution": "Node", - "strict": true, + "strict": false, "sourceMap": true, "isolatedModules": true, "esModuleInterop": true, diff --git a/example-project/vite.config.js b/example-project/vite.config.js index cb5a219..89e1279 100644 --- a/example-project/vite.config.js +++ b/example-project/vite.config.js @@ -1,16 +1,35 @@ -import { defineConfig } from 'vite'; -import vitePluginString from 'vite-plugin-string'; -import reninPlugin from 'renin/lib/ui/vite.mjs'; -import { nodeResolve } from '@rollup/plugin-node-resolve'; +import { defineConfig } from "vite"; +import path from "path"; +import * as url from "url"; +import vitePluginString from "vite-plugin-string"; +import reninPlugin from "renin/lib/ui/vite.mjs"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; + +const dir = url.fileURLToPath(new URL(".", import.meta.url)); export default defineConfig({ - base: '', + build: { + target: "esnext", + }, + base: "", plugins: [ reninPlugin(), nodeResolve(), vitePluginString.default({ - include: ['**/*.vs', '**/*.fs', '**/*.vert', '**/*.frag', '**/*.glsl'], + include: [ + "**/*.vs", + "**/*.fs", + "**/*.vert", + "**/*.frag", + "**/*.glsl", + // "**/*.wasm" + ], compress: false, }), ], + resolve: { + alias: { + "@": path.resolve(dir, "src"), + }, + }, }); diff --git a/example-project/yarn.lock b/example-project/yarn.lock new file mode 100644 index 0000000..15191b8 --- /dev/null +++ b/example-project/yarn.lock @@ -0,0 +1,510 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babylonjs/havok@^1.0.0": + version "1.3.7" + resolved "https://registry.yarnpkg.com/@babylonjs/havok/-/havok-1.3.7.tgz#2ede7be80c68a9df0fbd8c8c963e8a52a7016811" + integrity sha512-Ngu8+odqdIOObCWBqOHxVDuifaWle/Qf4KQWYh5uRlM0XwhGGTNPvJ3vdffip/49tjf9Uo2/FbwGJbwIbFrAcQ== + dependencies: + "@types/emscripten" "^1.39.6" + +"@rollup/plugin-node-resolve@*": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + deepmerge "^4.2.2" + is-builtin-module "^3.1.0" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rollup/pluginutils@^4.1.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@types/diff@^5.0.2": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@types/diff/-/diff-5.2.1.tgz#cceae9c4b2dae5c6b8ab1ce1263601c255d87fb3" + integrity sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g== + +"@types/emscripten@^1.39.6": + version "1.39.13" + resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.13.tgz#afeb1648648dc096efe57983e20387627306e2aa" + integrity sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/node@*": + version "17.0.25" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.25.tgz#527051f3c2f77aa52e5dc74e45a3da5fb2301448" + integrity sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/seedrandom@^3.0.5": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.8.tgz#61cc8ed88f93a3c31289c295e6df8ca40be42bdf" + integrity sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ== + +"@types/stats.js@*": + version "0.17.3" + resolved "https://registry.yarnpkg.com/@types/stats.js/-/stats.js-0.17.3.tgz#705446e12ce0fad618557dd88236f51148b7a935" + integrity sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ== + +"@types/three@0.150.1": + version "0.150.1" + resolved "https://registry.yarnpkg.com/@types/three/-/three-0.150.1.tgz#32a594ac0d8452d37ad3abbb22a9496878ac6c77" + integrity sha512-ZXS1M3brsfAAbTeeUEt0defPi98yWQuEyPBnvjEYY1dCEYfJnFaww0mYgRpJ9JVfmtwRxqISpVcv/g/0lMl1DQ== + dependencies: + "@types/stats.js" "*" + "@types/webxr" "*" + fflate "~0.6.9" + lil-gui "~0.17.0" + +"@types/webxr@*": + version "0.5.19" + resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.19.tgz#463a27bc06ff1c0a0c997e86b48bf24c5f50a4af" + integrity sha512-4hxA+NwohSgImdTSlPXEqDqqFktNgmTXQ05ff1uWam05tNGroCMp4G+4XVl6qWm1p7GQ/9oD41kAYsSssF6Mzw== + +builtin-modules@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +diff@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" + integrity sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w== + +esbuild-android-64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz#fc5f95ce78c8c3d790fa16bc71bd904f2bb42aa1" + integrity sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw== + +esbuild-android-arm64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz#44356fbb9f8de82a5cdf11849e011dfb3ad0a8a8" + integrity sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg== + +esbuild-darwin-64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz#3d9324b21489c70141665c2e740d6e84f16f725d" + integrity sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ== + +esbuild-darwin-arm64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz#2a8040c2e465131e5281034f3c72405e643cb7b2" + integrity sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw== + +esbuild-freebsd-64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz#d82c387b4d01fe9e8631f97d41eb54f2dbeb68a3" + integrity sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww== + +esbuild-freebsd-arm64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz#e8ce2e6c697da6c7ecd0cc0ac821d47c5ab68529" + integrity sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA== + +esbuild-linux-32@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz#a4a261e2af91986ea62451f2db712a556cb38a15" + integrity sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw== + +esbuild-linux-64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz#4a9500f9197e2c8fcb884a511d2c9d4c2debde72" + integrity sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg== + +esbuild-linux-arm64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz#c91c21e25b315464bd7da867365dd1dae14ca176" + integrity sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw== + +esbuild-linux-arm@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz#90e23bca2e6e549affbbe994f80ba3bb6c4d934a" + integrity sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg== + +esbuild-linux-mips64le@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz#40e11afb08353ff24709fc89e4db0f866bc131d2" + integrity sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA== + +esbuild-linux-ppc64le@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz#9e8a588c513d06cc3859f9dcc52e5fdfce8a1a5e" + integrity sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg== + +esbuild-linux-riscv64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz#e578c09b23b3b97652e60e3692bfda628b541f06" + integrity sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A== + +esbuild-linux-s390x@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz#3c9dab40d0d69932ffded0fd7317bb403626c9bc" + integrity sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg== + +esbuild-netbsd-64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz#e27847f6d506218291619b8c1e121ecd97628494" + integrity sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A== + +esbuild-openbsd-64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz#c94c04c557fae516872a586eae67423da6d2fabb" + integrity sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg== + +esbuild-sunos-64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz#9b79febc0df65a30f1c9bd63047d1675511bf99d" + integrity sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ== + +esbuild-windows-32@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz#910d11936c8d2122ffdd3275e5b28d8a4e1240ec" + integrity sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w== + +esbuild-windows-64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz#21b4ce8b42a4efc63f4b58ec617f1302448aad26" + integrity sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ== + +esbuild-windows-arm64@0.14.36: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz#ba21546fecb7297667d0052d00150de22c044b24" + integrity sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q== + +esbuild@^0.14.27: + version "0.14.36" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.36.tgz#0023a73eab57886ac5605df16ee421e471a971b3" + integrity sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw== + optionalDependencies: + esbuild-android-64 "0.14.36" + esbuild-android-arm64 "0.14.36" + esbuild-darwin-64 "0.14.36" + esbuild-darwin-arm64 "0.14.36" + esbuild-freebsd-64 "0.14.36" + esbuild-freebsd-arm64 "0.14.36" + esbuild-linux-32 "0.14.36" + esbuild-linux-64 "0.14.36" + esbuild-linux-arm "0.14.36" + esbuild-linux-arm64 "0.14.36" + esbuild-linux-mips64le "0.14.36" + esbuild-linux-ppc64le "0.14.36" + esbuild-linux-riscv64 "0.14.36" + esbuild-linux-s390x "0.14.36" + esbuild-netbsd-64 "0.14.36" + esbuild-openbsd-64 "0.14.36" + esbuild-sunos-64 "0.14.36" + esbuild-windows-32 "0.14.36" + esbuild-windows-64 "0.14.36" + esbuild-windows-arm64 "0.14.36" + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +fast-diff@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fflate@~0.6.9: + version "0.6.10" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43" + integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +glsl-token-functions@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glsl-token-functions/-/glsl-token-functions-1.0.1.tgz#2f1614746b96e14f059a6d62af79b65457f0c9a0" + integrity sha512-EigGhp1g+aUVeUNY7H1o5tL/bnwIB3/FcRREPr2E7Du+/UDXN24hDkaZ3e4aWHDjHr9lJ6YHXMISkwhUYg9UOg== + +glsl-token-string@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glsl-token-string/-/glsl-token-string-1.0.1.tgz#59441d2f857de7c3449c945666021ece358e48ec" + integrity sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg== + +glsl-tokenizer@^2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz#1c2e78c16589933c274ba278d0a63b370c5fee1a" + integrity sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA== + dependencies: + through2 "^0.6.3" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +inherits@~2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-builtin-module@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" + integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + dependencies: + builtin-modules "^3.0.0" + +is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +lil-gui@~0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/lil-gui/-/lil-gui-0.17.0.tgz#b41ae55d0023fcd9185f7395a218db0f58189663" + integrity sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ== + +loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss@^8.4.13: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postprocessing@^6.32.2: + version "6.35.6" + resolved "https://registry.yarnpkg.com/postprocessing/-/postprocessing-6.35.6.tgz#2289dbd7757279436a34a686da72dcbc66e53b68" + integrity sha512-df0K1zofbBCYcHDFmJtAw9TgyPJu6eITBG0iJeUBcNLagi0EwLBVl1tib+ypYYjChojhiNaib16mRwvu9ZoJIA== + +prettier@^2.8.8: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +react@^18.2.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +"renin@file:../renin/renin": + version "2.4.0" + +resolve@^1.19.0, resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rollup@^2.59.0: + version "2.70.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.2.tgz#808d206a8851628a065097b7ba2053bd83ba0c0d" + integrity sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg== + optionalDependencies: + fsevents "~2.3.2" + +screen-space-reflections@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/screen-space-reflections/-/screen-space-reflections-2.5.0.tgz#2a6ea982da96f9c35f34a361b2555439f9fbb1f6" + integrity sha512-fWSDMhJS0xwD3LTxRRch7Lb9NzxsR66sCmtDmAA7i+OGnghUrBBsrha85ng7StnCBaLq/BKmZ97dLxWd1XgWdQ== + +seedrandom@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +textdiff-create@^1.0.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/textdiff-create/-/textdiff-create-1.1.11.tgz#7a8db6cb57f3a5292150607fadc24e6889972473" + integrity sha512-8/OXOCv0v6enH/isAutZ1dTvqIuDOWnh3QUGHKYD+1TgMzDI0xg3L4oz37kzPFjgc//VVTOW5QPmf8PtXKDk2Q== + dependencies: + fast-diff "^1.3.0" + +textdiff-patch@^1.0.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/textdiff-patch/-/textdiff-patch-1.1.10.tgz#17b619325278c20aac3c15db14da57290315924f" + integrity sha512-kHWBNftiWaE9knM+DIpN15mSHWYNzQmwLZqh+LH73hcBHnyj9NHg5uL55KRz4odEjgZe/y9JfL/Y1jPAyljHgg== + +three-custom-shader-material@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/three-custom-shader-material/-/three-custom-shader-material-5.2.0.tgz#3370fa7bbb2ec8a2ac0d768ef858d6429d11c41e" + integrity sha512-XaLXNssjdQmOrf2WwdLE41kTxHa6ZTanwUhfZqvgspBWWBV+8s0wlMnyQwqKcNkLmlxOnll4dKbSlzPv1SWsdA== + dependencies: + "@types/diff" "^5.0.2" + diff "1.4.0" + glsl-token-functions "^1.0.1" + glsl-token-string "^1.0.1" + glsl-tokenizer "^2.1.5" + object-hash "^3.0.0" + textdiff-create "^1.0.9" + textdiff-patch "^1.0.9" + +three@0.150.1: + version "0.150.1" + resolved "https://registry.yarnpkg.com/three/-/three-0.150.1.tgz#870d324a4d2daf1c7d55be97f3f73d83783e28be" + integrity sha512-5C1MqKUWaHYo13BX0Q64qcdwImgnnjSOFgBscOzAo8MYCzEtqfQqorEKMcajnA3FHy1yVlIe9AmaMQ0OQracNA== + +through2@^0.6.3: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg== + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +typescript@^5.1.6: + version "5.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" + integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== + +vite-plugin-string@*: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vite-plugin-string/-/vite-plugin-string-1.1.2.tgz#c577fc4488e5caa829f5e6ea76bf9a1c6c0ae01b" + integrity sha512-QMzsMAR4Vpw4DdCPNypVxKOkthtYIKNk8aR7U10kC/uMogf5tKsq5o8+lB9FtEu3XlSuym3On071zlUBP14yaw== + dependencies: + "@rollup/pluginutils" "^4.1.0" + +vite@*: + version "2.9.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.12.tgz#b1d636b0a8ac636afe9d83e3792d4895509a941b" + integrity sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew== + dependencies: + esbuild "^0.14.27" + postcss "^8.4.13" + resolve "^1.22.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + +"xtend@>=4.0.0 <4.1.0-0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== From 82498e1873982b08d0a34af68e098ddb672f503e Mon Sep 17 00:00:00 2001 From: Simon Randby Date: Sun, 14 Jul 2024 00:08:16 +0200 Subject: [PATCH 5/5] Example project: Bump package version --- example-project/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example-project/package.json b/example-project/package.json index 96f7497..d244e53 100644 --- a/example-project/package.json +++ b/example-project/package.json @@ -1,6 +1,6 @@ { "name": "renin-example-project", - "version": "1.0.0", + "version": "2.2.0", "type": "module", "private": true, "scripts": {