├── .gitignore ├── .npmrc ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── app.d.ts ├── app.html └── routes │ ├── +layout.svelte │ ├── +page.svelte │ ├── models │ ├── +page.svelte │ ├── bloom.svelte │ └── scene.svelte │ └── sphere │ ├── +page.svelte │ └── scene.svelte ├── static ├── assets │ ├── garden.glb │ └── ghost.glb └── favicon.png ├── svelte.config.js ├── tsconfig.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | resolution-mode=highest 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Svelte 3D 2 | 3 | ✍️ https://joyofcode.xyz/introduction-to-3d-with-svelte 4 | 5 | Introduction to using 3D in the browser with Svelte. 6 | 7 | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/joysofcode/svelte-3d) 8 | 9 | ## 💿️ Development 10 | 11 | You can use any package manager. 12 | 13 | ```bash 14 | pnpm i && pnpm run dev 15 | ``` 16 | 17 | ## 🛠️ Build 18 | 19 | ```bash 20 | pnpm run build && pnpm run preview 21 | ``` 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-3d", 3 | "version": "0.0.1", 4 | "private": true, 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite dev", 8 | "build": "vite build", 9 | "preview": "vite preview", 10 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 11 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" 12 | }, 13 | "devDependencies": { 14 | "@sveltejs/adapter-auto": "^2.0.0", 15 | "@sveltejs/kit": "^1.20.4", 16 | "svelte": "^4.0.5", 17 | "svelte-check": "^3.4.3", 18 | "tslib": "^2.4.1", 19 | "typescript": "^5.0.0", 20 | "vite": "^4.4.2" 21 | }, 22 | "dependencies": { 23 | "@threlte/core": "^6.0.3", 24 | "@threlte/extras": "^5.1.0", 25 | "@tweakpane/core": "^2.0.0", 26 | "@types/three": "^0.155.0", 27 | "postprocessing": "^6.32.2", 28 | "three": "^0.155.0", 29 | "tweakpane": "^4.0.0" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@threlte/core': 9 | specifier: ^6.0.3 10 | version: 6.0.3(svelte@4.1.2)(three@0.155.0) 11 | '@threlte/extras': 12 | specifier: ^5.1.0 13 | version: 5.1.0(svelte@4.1.2)(three@0.155.0) 14 | '@tweakpane/core': 15 | specifier: ^2.0.0 16 | version: 2.0.0 17 | '@types/three': 18 | specifier: ^0.155.0 19 | version: 0.155.0 20 | postprocessing: 21 | specifier: ^6.32.2 22 | version: 6.32.2(three@0.155.0) 23 | three: 24 | specifier: ^0.155.0 25 | version: 0.155.0 26 | tweakpane: 27 | specifier: ^4.0.0 28 | version: 4.0.0 29 | 30 | devDependencies: 31 | '@sveltejs/adapter-auto': 32 | specifier: ^2.0.0 33 | version: 2.1.0(@sveltejs/kit@1.22.4) 34 | '@sveltejs/kit': 35 | specifier: ^1.20.4 36 | version: 1.22.4(svelte@4.1.2)(vite@4.4.9) 37 | svelte: 38 | specifier: ^4.0.5 39 | version: 4.1.2 40 | svelte-check: 41 | specifier: ^3.4.3 42 | version: 3.4.6(svelte@4.1.2) 43 | tslib: 44 | specifier: ^2.4.1 45 | version: 2.6.1 46 | typescript: 47 | specifier: ^5.0.0 48 | version: 5.1.6 49 | vite: 50 | specifier: ^4.4.2 51 | version: 4.4.9 52 | 53 | packages: 54 | 55 | /@ampproject/remapping@2.2.1: 56 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 57 | engines: {node: '>=6.0.0'} 58 | dependencies: 59 | '@jridgewell/gen-mapping': 0.3.3 60 | '@jridgewell/trace-mapping': 0.3.19 61 | 62 | /@esbuild/android-arm64@0.18.20: 63 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 64 | engines: {node: '>=12'} 65 | cpu: [arm64] 66 | os: [android] 67 | requiresBuild: true 68 | dev: true 69 | optional: true 70 | 71 | /@esbuild/android-arm@0.18.20: 72 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 73 | engines: {node: '>=12'} 74 | cpu: [arm] 75 | os: [android] 76 | requiresBuild: true 77 | dev: true 78 | optional: true 79 | 80 | /@esbuild/android-x64@0.18.20: 81 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 82 | engines: {node: '>=12'} 83 | cpu: [x64] 84 | os: [android] 85 | requiresBuild: true 86 | dev: true 87 | optional: true 88 | 89 | /@esbuild/darwin-arm64@0.18.20: 90 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 91 | engines: {node: '>=12'} 92 | cpu: [arm64] 93 | os: [darwin] 94 | requiresBuild: true 95 | dev: true 96 | optional: true 97 | 98 | /@esbuild/darwin-x64@0.18.20: 99 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 100 | engines: {node: '>=12'} 101 | cpu: [x64] 102 | os: [darwin] 103 | requiresBuild: true 104 | dev: true 105 | optional: true 106 | 107 | /@esbuild/freebsd-arm64@0.18.20: 108 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 109 | engines: {node: '>=12'} 110 | cpu: [arm64] 111 | os: [freebsd] 112 | requiresBuild: true 113 | dev: true 114 | optional: true 115 | 116 | /@esbuild/freebsd-x64@0.18.20: 117 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 118 | engines: {node: '>=12'} 119 | cpu: [x64] 120 | os: [freebsd] 121 | requiresBuild: true 122 | dev: true 123 | optional: true 124 | 125 | /@esbuild/linux-arm64@0.18.20: 126 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 127 | engines: {node: '>=12'} 128 | cpu: [arm64] 129 | os: [linux] 130 | requiresBuild: true 131 | dev: true 132 | optional: true 133 | 134 | /@esbuild/linux-arm@0.18.20: 135 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 136 | engines: {node: '>=12'} 137 | cpu: [arm] 138 | os: [linux] 139 | requiresBuild: true 140 | dev: true 141 | optional: true 142 | 143 | /@esbuild/linux-ia32@0.18.20: 144 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 145 | engines: {node: '>=12'} 146 | cpu: [ia32] 147 | os: [linux] 148 | requiresBuild: true 149 | dev: true 150 | optional: true 151 | 152 | /@esbuild/linux-loong64@0.18.20: 153 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 154 | engines: {node: '>=12'} 155 | cpu: [loong64] 156 | os: [linux] 157 | requiresBuild: true 158 | dev: true 159 | optional: true 160 | 161 | /@esbuild/linux-mips64el@0.18.20: 162 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 163 | engines: {node: '>=12'} 164 | cpu: [mips64el] 165 | os: [linux] 166 | requiresBuild: true 167 | dev: true 168 | optional: true 169 | 170 | /@esbuild/linux-ppc64@0.18.20: 171 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 172 | engines: {node: '>=12'} 173 | cpu: [ppc64] 174 | os: [linux] 175 | requiresBuild: true 176 | dev: true 177 | optional: true 178 | 179 | /@esbuild/linux-riscv64@0.18.20: 180 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 181 | engines: {node: '>=12'} 182 | cpu: [riscv64] 183 | os: [linux] 184 | requiresBuild: true 185 | dev: true 186 | optional: true 187 | 188 | /@esbuild/linux-s390x@0.18.20: 189 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 190 | engines: {node: '>=12'} 191 | cpu: [s390x] 192 | os: [linux] 193 | requiresBuild: true 194 | dev: true 195 | optional: true 196 | 197 | /@esbuild/linux-x64@0.18.20: 198 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 199 | engines: {node: '>=12'} 200 | cpu: [x64] 201 | os: [linux] 202 | requiresBuild: true 203 | dev: true 204 | optional: true 205 | 206 | /@esbuild/netbsd-x64@0.18.20: 207 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 208 | engines: {node: '>=12'} 209 | cpu: [x64] 210 | os: [netbsd] 211 | requiresBuild: true 212 | dev: true 213 | optional: true 214 | 215 | /@esbuild/openbsd-x64@0.18.20: 216 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 217 | engines: {node: '>=12'} 218 | cpu: [x64] 219 | os: [openbsd] 220 | requiresBuild: true 221 | dev: true 222 | optional: true 223 | 224 | /@esbuild/sunos-x64@0.18.20: 225 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 226 | engines: {node: '>=12'} 227 | cpu: [x64] 228 | os: [sunos] 229 | requiresBuild: true 230 | dev: true 231 | optional: true 232 | 233 | /@esbuild/win32-arm64@0.18.20: 234 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 235 | engines: {node: '>=12'} 236 | cpu: [arm64] 237 | os: [win32] 238 | requiresBuild: true 239 | dev: true 240 | optional: true 241 | 242 | /@esbuild/win32-ia32@0.18.20: 243 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 244 | engines: {node: '>=12'} 245 | cpu: [ia32] 246 | os: [win32] 247 | requiresBuild: true 248 | dev: true 249 | optional: true 250 | 251 | /@esbuild/win32-x64@0.18.20: 252 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 253 | engines: {node: '>=12'} 254 | cpu: [x64] 255 | os: [win32] 256 | requiresBuild: true 257 | dev: true 258 | optional: true 259 | 260 | /@jridgewell/gen-mapping@0.3.3: 261 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 262 | engines: {node: '>=6.0.0'} 263 | dependencies: 264 | '@jridgewell/set-array': 1.1.2 265 | '@jridgewell/sourcemap-codec': 1.4.15 266 | '@jridgewell/trace-mapping': 0.3.19 267 | 268 | /@jridgewell/resolve-uri@3.1.1: 269 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 270 | engines: {node: '>=6.0.0'} 271 | 272 | /@jridgewell/set-array@1.1.2: 273 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 274 | engines: {node: '>=6.0.0'} 275 | 276 | /@jridgewell/sourcemap-codec@1.4.15: 277 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 278 | 279 | /@jridgewell/trace-mapping@0.3.19: 280 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} 281 | dependencies: 282 | '@jridgewell/resolve-uri': 3.1.1 283 | '@jridgewell/sourcemap-codec': 1.4.15 284 | 285 | /@nodelib/fs.scandir@2.1.5: 286 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 287 | engines: {node: '>= 8'} 288 | dependencies: 289 | '@nodelib/fs.stat': 2.0.5 290 | run-parallel: 1.2.0 291 | dev: true 292 | 293 | /@nodelib/fs.stat@2.0.5: 294 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 295 | engines: {node: '>= 8'} 296 | dev: true 297 | 298 | /@nodelib/fs.walk@1.2.8: 299 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 300 | engines: {node: '>= 8'} 301 | dependencies: 302 | '@nodelib/fs.scandir': 2.1.5 303 | fastq: 1.15.0 304 | dev: true 305 | 306 | /@polka/url@1.0.0-next.21: 307 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 308 | dev: true 309 | 310 | /@sveltejs/adapter-auto@2.1.0(@sveltejs/kit@1.22.4): 311 | resolution: {integrity: sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==} 312 | peerDependencies: 313 | '@sveltejs/kit': ^1.0.0 314 | dependencies: 315 | '@sveltejs/kit': 1.22.4(svelte@4.1.2)(vite@4.4.9) 316 | import-meta-resolve: 3.0.0 317 | dev: true 318 | 319 | /@sveltejs/kit@1.22.4(svelte@4.1.2)(vite@4.4.9): 320 | resolution: {integrity: sha512-Opkqw1QXk4Cc25b/heJP2D7mX+OUBFAq4MXKfET58svTTxdeiHFKzmnuRsSF3nmxESqrLjqPAgHpib+knNGzRw==} 321 | engines: {node: ^16.14 || >=18} 322 | hasBin: true 323 | requiresBuild: true 324 | peerDependencies: 325 | svelte: ^3.54.0 || ^4.0.0-next.0 326 | vite: ^4.0.0 327 | dependencies: 328 | '@sveltejs/vite-plugin-svelte': 2.4.4(svelte@4.1.2)(vite@4.4.9) 329 | '@types/cookie': 0.5.1 330 | cookie: 0.5.0 331 | devalue: 4.3.2 332 | esm-env: 1.0.0 333 | kleur: 4.1.5 334 | magic-string: 0.30.2 335 | mime: 3.0.0 336 | sade: 1.8.1 337 | set-cookie-parser: 2.6.0 338 | sirv: 2.0.3 339 | svelte: 4.1.2 340 | undici: 5.22.1 341 | vite: 4.4.9 342 | transitivePeerDependencies: 343 | - supports-color 344 | dev: true 345 | 346 | /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.4)(svelte@4.1.2)(vite@4.4.9): 347 | resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} 348 | engines: {node: ^14.18.0 || >= 16} 349 | peerDependencies: 350 | '@sveltejs/vite-plugin-svelte': ^2.2.0 351 | svelte: ^3.54.0 || ^4.0.0 352 | vite: ^4.0.0 353 | dependencies: 354 | '@sveltejs/vite-plugin-svelte': 2.4.4(svelte@4.1.2)(vite@4.4.9) 355 | debug: 4.3.4 356 | svelte: 4.1.2 357 | vite: 4.4.9 358 | transitivePeerDependencies: 359 | - supports-color 360 | dev: true 361 | 362 | /@sveltejs/vite-plugin-svelte@2.4.4(svelte@4.1.2)(vite@4.4.9): 363 | resolution: {integrity: sha512-Q5z7+iIjs3sw/Jquxaa9KSY5/MShboNjvsxnQYRMdREx/SBDmEYTjeXenpMBh6k0IQ3tMKESCiwKq3/TeAQ8Og==} 364 | engines: {node: ^14.18.0 || >= 16} 365 | peerDependencies: 366 | svelte: ^3.54.0 || ^4.0.0 367 | vite: ^4.0.0 368 | dependencies: 369 | '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.4)(svelte@4.1.2)(vite@4.4.9) 370 | debug: 4.3.4 371 | deepmerge: 4.3.1 372 | kleur: 4.1.5 373 | magic-string: 0.30.2 374 | svelte: 4.1.2 375 | svelte-hmr: 0.15.3(svelte@4.1.2) 376 | vite: 4.4.9 377 | vitefu: 0.2.4(vite@4.4.9) 378 | transitivePeerDependencies: 379 | - supports-color 380 | dev: true 381 | 382 | /@threlte/core@6.0.3(svelte@4.1.2)(three@0.155.0): 383 | resolution: {integrity: sha512-5fTK+iQGeXpqU3HVKp6CkWIXa1KlUxarvChQU+GhU1ScgmqFn791S0fQsFammrufqNLEWzpG8IG0q1iE7fpQkQ==} 384 | peerDependencies: 385 | svelte: '>=4' 386 | three: '>=0.133' 387 | dependencies: 388 | svelte: 4.1.2 389 | three: 0.155.0 390 | dev: false 391 | 392 | /@threlte/extras@5.1.0(svelte@4.1.2)(three@0.155.0): 393 | resolution: {integrity: sha512-Cn7VdVt1/X8j7aeKCkoiRVcysEujPexR1mnzSckAzvMkMdm26J21mTKCV3T62aGahYrvXusDw/fHUdgD/jCajg==} 394 | peerDependencies: 395 | svelte: '>=4' 396 | three: '>=0.133' 397 | dependencies: 398 | lodash-es: 4.17.21 399 | svelte: 4.1.2 400 | three: 0.155.0 401 | troika-three-text: 0.47.2(three@0.155.0) 402 | dev: false 403 | 404 | /@tweakpane/core@2.0.0: 405 | resolution: {integrity: sha512-reIUN8bj+YuB/PyhcqPAMuV3/t2P6iHPlR73++xwx+vW2RZ2LRYhXvcs+3VgbubTjyLOiek6a4T5rsbHwOPKqw==} 406 | dev: false 407 | 408 | /@tweenjs/tween.js@18.6.4: 409 | resolution: {integrity: sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==} 410 | dev: false 411 | 412 | /@types/cookie@0.5.1: 413 | resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} 414 | dev: true 415 | 416 | /@types/estree@1.0.1: 417 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 418 | 419 | /@types/pug@2.0.6: 420 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 421 | dev: true 422 | 423 | /@types/stats.js@0.17.0: 424 | resolution: {integrity: sha512-9w+a7bR8PeB0dCT/HBULU2fMqf6BAzvKbxFboYhmDtDkKPiyXYbjoe2auwsXlEFI7CFNMF1dCv3dFH5Poy9R1w==} 425 | dev: false 426 | 427 | /@types/three@0.155.0: 428 | resolution: {integrity: sha512-IzdbqXsGsbG0flvq9D5L9pZRwySQQps2bGcizLYEsfvK3dM+B0sqKR6S+xAOXbouXemfDmHttrcQjVOM46YnAw==} 429 | dependencies: 430 | '@tweenjs/tween.js': 18.6.4 431 | '@types/stats.js': 0.17.0 432 | '@types/webxr': 0.5.2 433 | fflate: 0.6.10 434 | lil-gui: 0.17.0 435 | meshoptimizer: 0.18.1 436 | dev: false 437 | 438 | /@types/webxr@0.5.2: 439 | resolution: {integrity: sha512-szL74BnIcok9m7QwYtVmQ+EdIKwbjPANudfuvDrAF8Cljg9MKUlIoc1w5tjj9PMpeSH3U1Xnx//czQybJ0EfSw==} 440 | dev: false 441 | 442 | /acorn@8.10.0: 443 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 444 | engines: {node: '>=0.4.0'} 445 | hasBin: true 446 | 447 | /anymatch@3.1.3: 448 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 449 | engines: {node: '>= 8'} 450 | dependencies: 451 | normalize-path: 3.0.0 452 | picomatch: 2.3.1 453 | dev: true 454 | 455 | /aria-query@5.3.0: 456 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 457 | dependencies: 458 | dequal: 2.0.3 459 | 460 | /axobject-query@3.2.1: 461 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 462 | dependencies: 463 | dequal: 2.0.3 464 | 465 | /balanced-match@1.0.2: 466 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 467 | dev: true 468 | 469 | /bidi-js@1.0.3: 470 | resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} 471 | dependencies: 472 | require-from-string: 2.0.2 473 | dev: false 474 | 475 | /binary-extensions@2.2.0: 476 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 477 | engines: {node: '>=8'} 478 | dev: true 479 | 480 | /brace-expansion@1.1.11: 481 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 482 | dependencies: 483 | balanced-match: 1.0.2 484 | concat-map: 0.0.1 485 | dev: true 486 | 487 | /braces@3.0.2: 488 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 489 | engines: {node: '>=8'} 490 | dependencies: 491 | fill-range: 7.0.1 492 | dev: true 493 | 494 | /buffer-crc32@0.2.13: 495 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 496 | dev: true 497 | 498 | /busboy@1.6.0: 499 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 500 | engines: {node: '>=10.16.0'} 501 | dependencies: 502 | streamsearch: 1.1.0 503 | dev: true 504 | 505 | /callsites@3.1.0: 506 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 507 | engines: {node: '>=6'} 508 | dev: true 509 | 510 | /chokidar@3.5.3: 511 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 512 | engines: {node: '>= 8.10.0'} 513 | dependencies: 514 | anymatch: 3.1.3 515 | braces: 3.0.2 516 | glob-parent: 5.1.2 517 | is-binary-path: 2.1.0 518 | is-glob: 4.0.3 519 | normalize-path: 3.0.0 520 | readdirp: 3.6.0 521 | optionalDependencies: 522 | fsevents: 2.3.2 523 | dev: true 524 | 525 | /code-red@1.0.3: 526 | resolution: {integrity: sha512-kVwJELqiILQyG5aeuyKFbdsI1fmQy1Cmf7dQ8eGmVuJoaRVdwey7WaMknr2ZFeVSYSKT0rExsa8EGw0aoI/1QQ==} 527 | dependencies: 528 | '@jridgewell/sourcemap-codec': 1.4.15 529 | '@types/estree': 1.0.1 530 | acorn: 8.10.0 531 | estree-walker: 3.0.3 532 | periscopic: 3.1.0 533 | 534 | /concat-map@0.0.1: 535 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 536 | dev: true 537 | 538 | /cookie@0.5.0: 539 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 540 | engines: {node: '>= 0.6'} 541 | dev: true 542 | 543 | /css-tree@2.3.1: 544 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 545 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 546 | dependencies: 547 | mdn-data: 2.0.30 548 | source-map-js: 1.0.2 549 | 550 | /debug@4.3.4: 551 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 552 | engines: {node: '>=6.0'} 553 | peerDependencies: 554 | supports-color: '*' 555 | peerDependenciesMeta: 556 | supports-color: 557 | optional: true 558 | dependencies: 559 | ms: 2.1.2 560 | dev: true 561 | 562 | /deepmerge@4.3.1: 563 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 564 | engines: {node: '>=0.10.0'} 565 | dev: true 566 | 567 | /dequal@2.0.3: 568 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 569 | engines: {node: '>=6'} 570 | 571 | /detect-indent@6.1.0: 572 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 573 | engines: {node: '>=8'} 574 | dev: true 575 | 576 | /devalue@4.3.2: 577 | resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} 578 | dev: true 579 | 580 | /es6-promise@3.3.1: 581 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 582 | dev: true 583 | 584 | /esbuild@0.18.20: 585 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 586 | engines: {node: '>=12'} 587 | hasBin: true 588 | requiresBuild: true 589 | optionalDependencies: 590 | '@esbuild/android-arm': 0.18.20 591 | '@esbuild/android-arm64': 0.18.20 592 | '@esbuild/android-x64': 0.18.20 593 | '@esbuild/darwin-arm64': 0.18.20 594 | '@esbuild/darwin-x64': 0.18.20 595 | '@esbuild/freebsd-arm64': 0.18.20 596 | '@esbuild/freebsd-x64': 0.18.20 597 | '@esbuild/linux-arm': 0.18.20 598 | '@esbuild/linux-arm64': 0.18.20 599 | '@esbuild/linux-ia32': 0.18.20 600 | '@esbuild/linux-loong64': 0.18.20 601 | '@esbuild/linux-mips64el': 0.18.20 602 | '@esbuild/linux-ppc64': 0.18.20 603 | '@esbuild/linux-riscv64': 0.18.20 604 | '@esbuild/linux-s390x': 0.18.20 605 | '@esbuild/linux-x64': 0.18.20 606 | '@esbuild/netbsd-x64': 0.18.20 607 | '@esbuild/openbsd-x64': 0.18.20 608 | '@esbuild/sunos-x64': 0.18.20 609 | '@esbuild/win32-arm64': 0.18.20 610 | '@esbuild/win32-ia32': 0.18.20 611 | '@esbuild/win32-x64': 0.18.20 612 | dev: true 613 | 614 | /esm-env@1.0.0: 615 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 616 | dev: true 617 | 618 | /estree-walker@3.0.3: 619 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 620 | dependencies: 621 | '@types/estree': 1.0.1 622 | 623 | /fast-glob@3.3.1: 624 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 625 | engines: {node: '>=8.6.0'} 626 | dependencies: 627 | '@nodelib/fs.stat': 2.0.5 628 | '@nodelib/fs.walk': 1.2.8 629 | glob-parent: 5.1.2 630 | merge2: 1.4.1 631 | micromatch: 4.0.5 632 | dev: true 633 | 634 | /fastq@1.15.0: 635 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 636 | dependencies: 637 | reusify: 1.0.4 638 | dev: true 639 | 640 | /fflate@0.6.10: 641 | resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==} 642 | dev: false 643 | 644 | /fill-range@7.0.1: 645 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 646 | engines: {node: '>=8'} 647 | dependencies: 648 | to-regex-range: 5.0.1 649 | dev: true 650 | 651 | /fs.realpath@1.0.0: 652 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 653 | dev: true 654 | 655 | /fsevents@2.3.2: 656 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 657 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 658 | os: [darwin] 659 | requiresBuild: true 660 | dev: true 661 | optional: true 662 | 663 | /glob-parent@5.1.2: 664 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 665 | engines: {node: '>= 6'} 666 | dependencies: 667 | is-glob: 4.0.3 668 | dev: true 669 | 670 | /glob@7.2.3: 671 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 672 | dependencies: 673 | fs.realpath: 1.0.0 674 | inflight: 1.0.6 675 | inherits: 2.0.4 676 | minimatch: 3.1.2 677 | once: 1.4.0 678 | path-is-absolute: 1.0.1 679 | dev: true 680 | 681 | /graceful-fs@4.2.11: 682 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 683 | dev: true 684 | 685 | /import-fresh@3.3.0: 686 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 687 | engines: {node: '>=6'} 688 | dependencies: 689 | parent-module: 1.0.1 690 | resolve-from: 4.0.0 691 | dev: true 692 | 693 | /import-meta-resolve@3.0.0: 694 | resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} 695 | dev: true 696 | 697 | /inflight@1.0.6: 698 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 699 | dependencies: 700 | once: 1.4.0 701 | wrappy: 1.0.2 702 | dev: true 703 | 704 | /inherits@2.0.4: 705 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 706 | dev: true 707 | 708 | /is-binary-path@2.1.0: 709 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 710 | engines: {node: '>=8'} 711 | dependencies: 712 | binary-extensions: 2.2.0 713 | dev: true 714 | 715 | /is-extglob@2.1.1: 716 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 717 | engines: {node: '>=0.10.0'} 718 | dev: true 719 | 720 | /is-glob@4.0.3: 721 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 722 | engines: {node: '>=0.10.0'} 723 | dependencies: 724 | is-extglob: 2.1.1 725 | dev: true 726 | 727 | /is-number@7.0.0: 728 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 729 | engines: {node: '>=0.12.0'} 730 | dev: true 731 | 732 | /is-reference@3.0.1: 733 | resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} 734 | dependencies: 735 | '@types/estree': 1.0.1 736 | 737 | /kleur@4.1.5: 738 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 739 | engines: {node: '>=6'} 740 | dev: true 741 | 742 | /lil-gui@0.17.0: 743 | resolution: {integrity: sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==} 744 | dev: false 745 | 746 | /locate-character@3.0.0: 747 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 748 | 749 | /lodash-es@4.17.21: 750 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 751 | dev: false 752 | 753 | /magic-string@0.27.0: 754 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 755 | engines: {node: '>=12'} 756 | dependencies: 757 | '@jridgewell/sourcemap-codec': 1.4.15 758 | dev: true 759 | 760 | /magic-string@0.30.2: 761 | resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} 762 | engines: {node: '>=12'} 763 | dependencies: 764 | '@jridgewell/sourcemap-codec': 1.4.15 765 | 766 | /mdn-data@2.0.30: 767 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 768 | 769 | /merge2@1.4.1: 770 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 771 | engines: {node: '>= 8'} 772 | dev: true 773 | 774 | /meshoptimizer@0.18.1: 775 | resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} 776 | dev: false 777 | 778 | /micromatch@4.0.5: 779 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 780 | engines: {node: '>=8.6'} 781 | dependencies: 782 | braces: 3.0.2 783 | picomatch: 2.3.1 784 | dev: true 785 | 786 | /mime@3.0.0: 787 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 788 | engines: {node: '>=10.0.0'} 789 | hasBin: true 790 | dev: true 791 | 792 | /min-indent@1.0.1: 793 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 794 | engines: {node: '>=4'} 795 | dev: true 796 | 797 | /minimatch@3.1.2: 798 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 799 | dependencies: 800 | brace-expansion: 1.1.11 801 | dev: true 802 | 803 | /minimist@1.2.8: 804 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 805 | dev: true 806 | 807 | /mkdirp@0.5.6: 808 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 809 | hasBin: true 810 | dependencies: 811 | minimist: 1.2.8 812 | dev: true 813 | 814 | /mri@1.2.0: 815 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 816 | engines: {node: '>=4'} 817 | dev: true 818 | 819 | /mrmime@1.0.1: 820 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 821 | engines: {node: '>=10'} 822 | dev: true 823 | 824 | /ms@2.1.2: 825 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 826 | dev: true 827 | 828 | /nanoid@3.3.6: 829 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 830 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 831 | hasBin: true 832 | dev: true 833 | 834 | /normalize-path@3.0.0: 835 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 836 | engines: {node: '>=0.10.0'} 837 | dev: true 838 | 839 | /once@1.4.0: 840 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 841 | dependencies: 842 | wrappy: 1.0.2 843 | dev: true 844 | 845 | /parent-module@1.0.1: 846 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 847 | engines: {node: '>=6'} 848 | dependencies: 849 | callsites: 3.1.0 850 | dev: true 851 | 852 | /path-is-absolute@1.0.1: 853 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 854 | engines: {node: '>=0.10.0'} 855 | dev: true 856 | 857 | /periscopic@3.1.0: 858 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 859 | dependencies: 860 | '@types/estree': 1.0.1 861 | estree-walker: 3.0.3 862 | is-reference: 3.0.1 863 | 864 | /picocolors@1.0.0: 865 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 866 | dev: true 867 | 868 | /picomatch@2.3.1: 869 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 870 | engines: {node: '>=8.6'} 871 | dev: true 872 | 873 | /postcss@8.4.27: 874 | resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} 875 | engines: {node: ^10 || ^12 || >=14} 876 | dependencies: 877 | nanoid: 3.3.6 878 | picocolors: 1.0.0 879 | source-map-js: 1.0.2 880 | dev: true 881 | 882 | /postprocessing@6.32.2(three@0.155.0): 883 | resolution: {integrity: sha512-BpjIHeElXRmkcqO6p8Pi6W1uDcivQa2FVQ/Swnoo32Cg5bq/bb0mh9hXSHeCkIBD0W4D2KU8Fg7jBICztcN9iQ==} 884 | engines: {node: '>= 0.13.2'} 885 | peerDependencies: 886 | three: '>= 0.138.0 < 0.155.0' 887 | dependencies: 888 | three: 0.155.0 889 | dev: false 890 | 891 | /queue-microtask@1.2.3: 892 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 893 | dev: true 894 | 895 | /readdirp@3.6.0: 896 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 897 | engines: {node: '>=8.10.0'} 898 | dependencies: 899 | picomatch: 2.3.1 900 | dev: true 901 | 902 | /require-from-string@2.0.2: 903 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 904 | engines: {node: '>=0.10.0'} 905 | dev: false 906 | 907 | /resolve-from@4.0.0: 908 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 909 | engines: {node: '>=4'} 910 | dev: true 911 | 912 | /reusify@1.0.4: 913 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 914 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 915 | dev: true 916 | 917 | /rimraf@2.7.1: 918 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 919 | hasBin: true 920 | dependencies: 921 | glob: 7.2.3 922 | dev: true 923 | 924 | /rollup@3.28.0: 925 | resolution: {integrity: sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==} 926 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 927 | hasBin: true 928 | optionalDependencies: 929 | fsevents: 2.3.2 930 | dev: true 931 | 932 | /run-parallel@1.2.0: 933 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 934 | dependencies: 935 | queue-microtask: 1.2.3 936 | dev: true 937 | 938 | /sade@1.8.1: 939 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 940 | engines: {node: '>=6'} 941 | dependencies: 942 | mri: 1.2.0 943 | dev: true 944 | 945 | /sander@0.5.1: 946 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 947 | dependencies: 948 | es6-promise: 3.3.1 949 | graceful-fs: 4.2.11 950 | mkdirp: 0.5.6 951 | rimraf: 2.7.1 952 | dev: true 953 | 954 | /set-cookie-parser@2.6.0: 955 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 956 | dev: true 957 | 958 | /sirv@2.0.3: 959 | resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} 960 | engines: {node: '>= 10'} 961 | dependencies: 962 | '@polka/url': 1.0.0-next.21 963 | mrmime: 1.0.1 964 | totalist: 3.0.1 965 | dev: true 966 | 967 | /sorcery@0.11.0: 968 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 969 | hasBin: true 970 | dependencies: 971 | '@jridgewell/sourcemap-codec': 1.4.15 972 | buffer-crc32: 0.2.13 973 | minimist: 1.2.8 974 | sander: 0.5.1 975 | dev: true 976 | 977 | /source-map-js@1.0.2: 978 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 979 | engines: {node: '>=0.10.0'} 980 | 981 | /streamsearch@1.1.0: 982 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 983 | engines: {node: '>=10.0.0'} 984 | dev: true 985 | 986 | /strip-indent@3.0.0: 987 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 988 | engines: {node: '>=8'} 989 | dependencies: 990 | min-indent: 1.0.1 991 | dev: true 992 | 993 | /svelte-check@3.4.6(svelte@4.1.2): 994 | resolution: {integrity: sha512-OBlY8866Zh1zHQTkBMPS6psPi7o2umTUyj6JWm4SacnIHXpWFm658pG32m3dKvKFL49V4ntAkfFHKo4ztH07og==} 995 | hasBin: true 996 | peerDependencies: 997 | svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 998 | dependencies: 999 | '@jridgewell/trace-mapping': 0.3.19 1000 | chokidar: 3.5.3 1001 | fast-glob: 3.3.1 1002 | import-fresh: 3.3.0 1003 | picocolors: 1.0.0 1004 | sade: 1.8.1 1005 | svelte: 4.1.2 1006 | svelte-preprocess: 5.0.4(svelte@4.1.2)(typescript@5.1.6) 1007 | typescript: 5.1.6 1008 | transitivePeerDependencies: 1009 | - '@babel/core' 1010 | - coffeescript 1011 | - less 1012 | - postcss 1013 | - postcss-load-config 1014 | - pug 1015 | - sass 1016 | - stylus 1017 | - sugarss 1018 | dev: true 1019 | 1020 | /svelte-hmr@0.15.3(svelte@4.1.2): 1021 | resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} 1022 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 1023 | peerDependencies: 1024 | svelte: ^3.19.0 || ^4.0.0 1025 | dependencies: 1026 | svelte: 4.1.2 1027 | dev: true 1028 | 1029 | /svelte-preprocess@5.0.4(svelte@4.1.2)(typescript@5.1.6): 1030 | resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} 1031 | engines: {node: '>= 14.10.0'} 1032 | requiresBuild: true 1033 | peerDependencies: 1034 | '@babel/core': ^7.10.2 1035 | coffeescript: ^2.5.1 1036 | less: ^3.11.3 || ^4.0.0 1037 | postcss: ^7 || ^8 1038 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 1039 | pug: ^3.0.0 1040 | sass: ^1.26.8 1041 | stylus: ^0.55.0 1042 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 1043 | svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 1044 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 1045 | peerDependenciesMeta: 1046 | '@babel/core': 1047 | optional: true 1048 | coffeescript: 1049 | optional: true 1050 | less: 1051 | optional: true 1052 | postcss: 1053 | optional: true 1054 | postcss-load-config: 1055 | optional: true 1056 | pug: 1057 | optional: true 1058 | sass: 1059 | optional: true 1060 | stylus: 1061 | optional: true 1062 | sugarss: 1063 | optional: true 1064 | typescript: 1065 | optional: true 1066 | dependencies: 1067 | '@types/pug': 2.0.6 1068 | detect-indent: 6.1.0 1069 | magic-string: 0.27.0 1070 | sorcery: 0.11.0 1071 | strip-indent: 3.0.0 1072 | svelte: 4.1.2 1073 | typescript: 5.1.6 1074 | dev: true 1075 | 1076 | /svelte@4.1.2: 1077 | resolution: {integrity: sha512-/evA8U6CgOHe5ZD1C1W3va9iJG7mWflcCdghBORJaAhD2JzrVERJty/2gl0pIPrJYBGZwZycH6onYf+64XXF9g==} 1078 | engines: {node: '>=16'} 1079 | dependencies: 1080 | '@ampproject/remapping': 2.2.1 1081 | '@jridgewell/sourcemap-codec': 1.4.15 1082 | '@jridgewell/trace-mapping': 0.3.19 1083 | acorn: 8.10.0 1084 | aria-query: 5.3.0 1085 | axobject-query: 3.2.1 1086 | code-red: 1.0.3 1087 | css-tree: 2.3.1 1088 | estree-walker: 3.0.3 1089 | is-reference: 3.0.1 1090 | locate-character: 3.0.0 1091 | magic-string: 0.30.2 1092 | periscopic: 3.1.0 1093 | 1094 | /three@0.155.0: 1095 | resolution: {integrity: sha512-sNgCYmDijnIqkD/bMfk+1pHg3YzsxW7V2ChpuP6HCQ8NiZr3RufsXQr8M3SSUMjW4hG+sUk7YbyuY0DncaDTJQ==} 1096 | dev: false 1097 | 1098 | /to-regex-range@5.0.1: 1099 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1100 | engines: {node: '>=8.0'} 1101 | dependencies: 1102 | is-number: 7.0.0 1103 | dev: true 1104 | 1105 | /totalist@3.0.1: 1106 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 1107 | engines: {node: '>=6'} 1108 | dev: true 1109 | 1110 | /troika-three-text@0.47.2(three@0.155.0): 1111 | resolution: {integrity: sha512-qylT0F+U7xGs+/PEf3ujBdJMYWbn0Qci0kLqI5BJG2kW1wdg4T1XSxneypnF05DxFqJhEzuaOR9S2SjiyknMng==} 1112 | peerDependencies: 1113 | three: '>=0.125.0' 1114 | dependencies: 1115 | bidi-js: 1.0.3 1116 | three: 0.155.0 1117 | troika-three-utils: 0.47.2(three@0.155.0) 1118 | troika-worker-utils: 0.47.2 1119 | webgl-sdf-generator: 1.1.1 1120 | dev: false 1121 | 1122 | /troika-three-utils@0.47.2(three@0.155.0): 1123 | resolution: {integrity: sha512-/28plhCxfKtH7MSxEGx8e3b/OXU5A0xlwl+Sbdp0H8FXUHKZDoksduEKmjQayXYtxAyuUiCRunYIv/8Vi7aiyg==} 1124 | peerDependencies: 1125 | three: '>=0.125.0' 1126 | dependencies: 1127 | three: 0.155.0 1128 | dev: false 1129 | 1130 | /troika-worker-utils@0.47.2: 1131 | resolution: {integrity: sha512-mzss4MeyzUkYBppn4x5cdAqrhBHFEuVmMMgLMTyFV23x6GvQMyo+/R5E5Lsbrt7WSt5RfvewjcwD1DChRTA9lA==} 1132 | dev: false 1133 | 1134 | /tslib@2.6.1: 1135 | resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} 1136 | dev: true 1137 | 1138 | /tweakpane@4.0.0: 1139 | resolution: {integrity: sha512-U1kbExuRj921my8EX7VHq+ajYoIIzlE7+4P94CtHkBBLw0ggq8ktyY6cUCHb/lOKrTUS7N0OKY1HawBcX4vecA==} 1140 | dev: false 1141 | 1142 | /typescript@5.1.6: 1143 | resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} 1144 | engines: {node: '>=14.17'} 1145 | hasBin: true 1146 | dev: true 1147 | 1148 | /undici@5.22.1: 1149 | resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} 1150 | engines: {node: '>=14.0'} 1151 | dependencies: 1152 | busboy: 1.6.0 1153 | dev: true 1154 | 1155 | /vite@4.4.9: 1156 | resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} 1157 | engines: {node: ^14.18.0 || >=16.0.0} 1158 | hasBin: true 1159 | peerDependencies: 1160 | '@types/node': '>= 14' 1161 | less: '*' 1162 | lightningcss: ^1.21.0 1163 | sass: '*' 1164 | stylus: '*' 1165 | sugarss: '*' 1166 | terser: ^5.4.0 1167 | peerDependenciesMeta: 1168 | '@types/node': 1169 | optional: true 1170 | less: 1171 | optional: true 1172 | lightningcss: 1173 | optional: true 1174 | sass: 1175 | optional: true 1176 | stylus: 1177 | optional: true 1178 | sugarss: 1179 | optional: true 1180 | terser: 1181 | optional: true 1182 | dependencies: 1183 | esbuild: 0.18.20 1184 | postcss: 8.4.27 1185 | rollup: 3.28.0 1186 | optionalDependencies: 1187 | fsevents: 2.3.2 1188 | dev: true 1189 | 1190 | /vitefu@0.2.4(vite@4.4.9): 1191 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 1192 | peerDependencies: 1193 | vite: ^3.0.0 || ^4.0.0 1194 | peerDependenciesMeta: 1195 | vite: 1196 | optional: true 1197 | dependencies: 1198 | vite: 4.4.9 1199 | dev: true 1200 | 1201 | /webgl-sdf-generator@1.1.1: 1202 | resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} 1203 | dev: false 1204 | 1205 | /wrappy@1.0.2: 1206 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1207 | dev: true 1208 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface Platform {} 9 | } 10 | } 11 | 12 | export {}; 13 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %sveltekit.head% 9 | 10 | 11 |
%sveltekit.body%
12 | 13 | 14 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 | Threlte 7 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 |
2 |

Examples

3 | 11 |
12 | 13 | 41 | -------------------------------------------------------------------------------- /src/routes/models/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/routes/models/bloom.svelte: -------------------------------------------------------------------------------- 1 | 49 | -------------------------------------------------------------------------------- /src/routes/models/scene.svelte: -------------------------------------------------------------------------------- 1 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | {#await useGltf('/assets/ghost.glb') then ghost} 35 | 36 | {/await} 37 | 38 | {#await useGltf('/assets/garden.glb') then garden} 39 | 40 | {/await} 41 | -------------------------------------------------------------------------------- /src/routes/sphere/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/routes/sphere/scene.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /static/assets/garden.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joysofcode/svelte-3d/11e8c61f99f553c540b7f8600e8850c042d25d9a/static/assets/garden.glb -------------------------------------------------------------------------------- /static/assets/ghost.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joysofcode/svelte-3d/11e8c61f99f553c540b7f8600e8850c042d25d9a/static/assets/ghost.glb -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joysofcode/svelte-3d/11e8c61f99f553c540b7f8600e8850c042d25d9a/static/favicon.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto' 2 | import { vitePreprocess } from '@sveltejs/kit/vite' 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | preprocess: vitePreprocess(), 7 | kit: { 8 | adapter: adapter(), 9 | }, 10 | } 11 | 12 | export default config 13 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite' 2 | import { defineConfig } from 'vite' 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()], 6 | ssr: { 7 | noExternal: ['three', 'postprocessing'], 8 | }, 9 | }) 10 | --------------------------------------------------------------------------------