[READ-ONLY] Mirror of https://github.com/flo-bit/one-hour-jam-fruits. flo-bit.dev/one-hour-jam-fruits/
0

Configure Feed

Select the types of activity you want to include in your feed.

commit

author
Florian
date (May 17, 2025, 7:37 PM +0200) commit fd30ac1b
+1401
+24
.gitignore
··· 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + pnpm-debug.log* 8 + lerna-debug.log* 9 + 10 + node_modules 11 + dist 12 + dist-ssr 13 + *.local 14 + 15 + # Editor directories and files 16 + .vscode/* 17 + !.vscode/extensions.json 18 + .idea 19 + .DS_Store 20 + *.suo 21 + *.ntvs* 22 + *.njsproj 23 + *.sln 24 + *.sw?
+19
index.html
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8" /> 5 + <link rel="icon" type="image/svg+xml" href="/vite.svg" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + <title>PixiJS App</title> 8 + <style> 9 + body { 10 + margin: 0; 11 + padding: 0; 12 + overflow: hidden; 13 + } 14 + </style> 15 + </head> 16 + <body> 17 + <script type="module" src="/src/main.ts"></script> 18 + </body> 19 + </html>
+1116
package-lock.json
··· 1 + { 2 + "name": "pixi", 3 + "version": "0.0.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "pixi", 9 + "version": "0.0.0", 10 + "dependencies": { 11 + "pixi.js": "^8.9.2" 12 + }, 13 + "devDependencies": { 14 + "typescript": "~5.6.2", 15 + "vite": "^6.0.5" 16 + } 17 + }, 18 + "node_modules/@esbuild/aix-ppc64": { 19 + "version": "0.25.4", 20 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", 21 + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", 22 + "cpu": [ 23 + "ppc64" 24 + ], 25 + "dev": true, 26 + "license": "MIT", 27 + "optional": true, 28 + "os": [ 29 + "aix" 30 + ], 31 + "engines": { 32 + "node": ">=18" 33 + } 34 + }, 35 + "node_modules/@esbuild/android-arm": { 36 + "version": "0.25.4", 37 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", 38 + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", 39 + "cpu": [ 40 + "arm" 41 + ], 42 + "dev": true, 43 + "license": "MIT", 44 + "optional": true, 45 + "os": [ 46 + "android" 47 + ], 48 + "engines": { 49 + "node": ">=18" 50 + } 51 + }, 52 + "node_modules/@esbuild/android-arm64": { 53 + "version": "0.25.4", 54 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", 55 + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", 56 + "cpu": [ 57 + "arm64" 58 + ], 59 + "dev": true, 60 + "license": "MIT", 61 + "optional": true, 62 + "os": [ 63 + "android" 64 + ], 65 + "engines": { 66 + "node": ">=18" 67 + } 68 + }, 69 + "node_modules/@esbuild/android-x64": { 70 + "version": "0.25.4", 71 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", 72 + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", 73 + "cpu": [ 74 + "x64" 75 + ], 76 + "dev": true, 77 + "license": "MIT", 78 + "optional": true, 79 + "os": [ 80 + "android" 81 + ], 82 + "engines": { 83 + "node": ">=18" 84 + } 85 + }, 86 + "node_modules/@esbuild/darwin-arm64": { 87 + "version": "0.25.4", 88 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", 89 + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", 90 + "cpu": [ 91 + "arm64" 92 + ], 93 + "dev": true, 94 + "license": "MIT", 95 + "optional": true, 96 + "os": [ 97 + "darwin" 98 + ], 99 + "engines": { 100 + "node": ">=18" 101 + } 102 + }, 103 + "node_modules/@esbuild/darwin-x64": { 104 + "version": "0.25.4", 105 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", 106 + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", 107 + "cpu": [ 108 + "x64" 109 + ], 110 + "dev": true, 111 + "license": "MIT", 112 + "optional": true, 113 + "os": [ 114 + "darwin" 115 + ], 116 + "engines": { 117 + "node": ">=18" 118 + } 119 + }, 120 + "node_modules/@esbuild/freebsd-arm64": { 121 + "version": "0.25.4", 122 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", 123 + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", 124 + "cpu": [ 125 + "arm64" 126 + ], 127 + "dev": true, 128 + "license": "MIT", 129 + "optional": true, 130 + "os": [ 131 + "freebsd" 132 + ], 133 + "engines": { 134 + "node": ">=18" 135 + } 136 + }, 137 + "node_modules/@esbuild/freebsd-x64": { 138 + "version": "0.25.4", 139 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", 140 + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", 141 + "cpu": [ 142 + "x64" 143 + ], 144 + "dev": true, 145 + "license": "MIT", 146 + "optional": true, 147 + "os": [ 148 + "freebsd" 149 + ], 150 + "engines": { 151 + "node": ">=18" 152 + } 153 + }, 154 + "node_modules/@esbuild/linux-arm": { 155 + "version": "0.25.4", 156 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", 157 + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", 158 + "cpu": [ 159 + "arm" 160 + ], 161 + "dev": true, 162 + "license": "MIT", 163 + "optional": true, 164 + "os": [ 165 + "linux" 166 + ], 167 + "engines": { 168 + "node": ">=18" 169 + } 170 + }, 171 + "node_modules/@esbuild/linux-arm64": { 172 + "version": "0.25.4", 173 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", 174 + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", 175 + "cpu": [ 176 + "arm64" 177 + ], 178 + "dev": true, 179 + "license": "MIT", 180 + "optional": true, 181 + "os": [ 182 + "linux" 183 + ], 184 + "engines": { 185 + "node": ">=18" 186 + } 187 + }, 188 + "node_modules/@esbuild/linux-ia32": { 189 + "version": "0.25.4", 190 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", 191 + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", 192 + "cpu": [ 193 + "ia32" 194 + ], 195 + "dev": true, 196 + "license": "MIT", 197 + "optional": true, 198 + "os": [ 199 + "linux" 200 + ], 201 + "engines": { 202 + "node": ">=18" 203 + } 204 + }, 205 + "node_modules/@esbuild/linux-loong64": { 206 + "version": "0.25.4", 207 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", 208 + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", 209 + "cpu": [ 210 + "loong64" 211 + ], 212 + "dev": true, 213 + "license": "MIT", 214 + "optional": true, 215 + "os": [ 216 + "linux" 217 + ], 218 + "engines": { 219 + "node": ">=18" 220 + } 221 + }, 222 + "node_modules/@esbuild/linux-mips64el": { 223 + "version": "0.25.4", 224 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", 225 + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", 226 + "cpu": [ 227 + "mips64el" 228 + ], 229 + "dev": true, 230 + "license": "MIT", 231 + "optional": true, 232 + "os": [ 233 + "linux" 234 + ], 235 + "engines": { 236 + "node": ">=18" 237 + } 238 + }, 239 + "node_modules/@esbuild/linux-ppc64": { 240 + "version": "0.25.4", 241 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", 242 + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", 243 + "cpu": [ 244 + "ppc64" 245 + ], 246 + "dev": true, 247 + "license": "MIT", 248 + "optional": true, 249 + "os": [ 250 + "linux" 251 + ], 252 + "engines": { 253 + "node": ">=18" 254 + } 255 + }, 256 + "node_modules/@esbuild/linux-riscv64": { 257 + "version": "0.25.4", 258 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", 259 + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", 260 + "cpu": [ 261 + "riscv64" 262 + ], 263 + "dev": true, 264 + "license": "MIT", 265 + "optional": true, 266 + "os": [ 267 + "linux" 268 + ], 269 + "engines": { 270 + "node": ">=18" 271 + } 272 + }, 273 + "node_modules/@esbuild/linux-s390x": { 274 + "version": "0.25.4", 275 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", 276 + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", 277 + "cpu": [ 278 + "s390x" 279 + ], 280 + "dev": true, 281 + "license": "MIT", 282 + "optional": true, 283 + "os": [ 284 + "linux" 285 + ], 286 + "engines": { 287 + "node": ">=18" 288 + } 289 + }, 290 + "node_modules/@esbuild/linux-x64": { 291 + "version": "0.25.4", 292 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", 293 + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", 294 + "cpu": [ 295 + "x64" 296 + ], 297 + "dev": true, 298 + "license": "MIT", 299 + "optional": true, 300 + "os": [ 301 + "linux" 302 + ], 303 + "engines": { 304 + "node": ">=18" 305 + } 306 + }, 307 + "node_modules/@esbuild/netbsd-arm64": { 308 + "version": "0.25.4", 309 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", 310 + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", 311 + "cpu": [ 312 + "arm64" 313 + ], 314 + "dev": true, 315 + "license": "MIT", 316 + "optional": true, 317 + "os": [ 318 + "netbsd" 319 + ], 320 + "engines": { 321 + "node": ">=18" 322 + } 323 + }, 324 + "node_modules/@esbuild/netbsd-x64": { 325 + "version": "0.25.4", 326 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", 327 + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", 328 + "cpu": [ 329 + "x64" 330 + ], 331 + "dev": true, 332 + "license": "MIT", 333 + "optional": true, 334 + "os": [ 335 + "netbsd" 336 + ], 337 + "engines": { 338 + "node": ">=18" 339 + } 340 + }, 341 + "node_modules/@esbuild/openbsd-arm64": { 342 + "version": "0.25.4", 343 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", 344 + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", 345 + "cpu": [ 346 + "arm64" 347 + ], 348 + "dev": true, 349 + "license": "MIT", 350 + "optional": true, 351 + "os": [ 352 + "openbsd" 353 + ], 354 + "engines": { 355 + "node": ">=18" 356 + } 357 + }, 358 + "node_modules/@esbuild/openbsd-x64": { 359 + "version": "0.25.4", 360 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", 361 + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", 362 + "cpu": [ 363 + "x64" 364 + ], 365 + "dev": true, 366 + "license": "MIT", 367 + "optional": true, 368 + "os": [ 369 + "openbsd" 370 + ], 371 + "engines": { 372 + "node": ">=18" 373 + } 374 + }, 375 + "node_modules/@esbuild/sunos-x64": { 376 + "version": "0.25.4", 377 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", 378 + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", 379 + "cpu": [ 380 + "x64" 381 + ], 382 + "dev": true, 383 + "license": "MIT", 384 + "optional": true, 385 + "os": [ 386 + "sunos" 387 + ], 388 + "engines": { 389 + "node": ">=18" 390 + } 391 + }, 392 + "node_modules/@esbuild/win32-arm64": { 393 + "version": "0.25.4", 394 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", 395 + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", 396 + "cpu": [ 397 + "arm64" 398 + ], 399 + "dev": true, 400 + "license": "MIT", 401 + "optional": true, 402 + "os": [ 403 + "win32" 404 + ], 405 + "engines": { 406 + "node": ">=18" 407 + } 408 + }, 409 + "node_modules/@esbuild/win32-ia32": { 410 + "version": "0.25.4", 411 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", 412 + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", 413 + "cpu": [ 414 + "ia32" 415 + ], 416 + "dev": true, 417 + "license": "MIT", 418 + "optional": true, 419 + "os": [ 420 + "win32" 421 + ], 422 + "engines": { 423 + "node": ">=18" 424 + } 425 + }, 426 + "node_modules/@esbuild/win32-x64": { 427 + "version": "0.25.4", 428 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", 429 + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", 430 + "cpu": [ 431 + "x64" 432 + ], 433 + "dev": true, 434 + "license": "MIT", 435 + "optional": true, 436 + "os": [ 437 + "win32" 438 + ], 439 + "engines": { 440 + "node": ">=18" 441 + } 442 + }, 443 + "node_modules/@pixi/colord": { 444 + "version": "2.9.6", 445 + "resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz", 446 + "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==", 447 + "license": "MIT" 448 + }, 449 + "node_modules/@rollup/rollup-android-arm-eabi": { 450 + "version": "4.40.2", 451 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz", 452 + "integrity": "sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==", 453 + "cpu": [ 454 + "arm" 455 + ], 456 + "dev": true, 457 + "license": "MIT", 458 + "optional": true, 459 + "os": [ 460 + "android" 461 + ] 462 + }, 463 + "node_modules/@rollup/rollup-android-arm64": { 464 + "version": "4.40.2", 465 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz", 466 + "integrity": "sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==", 467 + "cpu": [ 468 + "arm64" 469 + ], 470 + "dev": true, 471 + "license": "MIT", 472 + "optional": true, 473 + "os": [ 474 + "android" 475 + ] 476 + }, 477 + "node_modules/@rollup/rollup-darwin-arm64": { 478 + "version": "4.40.2", 479 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz", 480 + "integrity": "sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==", 481 + "cpu": [ 482 + "arm64" 483 + ], 484 + "dev": true, 485 + "license": "MIT", 486 + "optional": true, 487 + "os": [ 488 + "darwin" 489 + ] 490 + }, 491 + "node_modules/@rollup/rollup-darwin-x64": { 492 + "version": "4.40.2", 493 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz", 494 + "integrity": "sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==", 495 + "cpu": [ 496 + "x64" 497 + ], 498 + "dev": true, 499 + "license": "MIT", 500 + "optional": true, 501 + "os": [ 502 + "darwin" 503 + ] 504 + }, 505 + "node_modules/@rollup/rollup-freebsd-arm64": { 506 + "version": "4.40.2", 507 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz", 508 + "integrity": "sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==", 509 + "cpu": [ 510 + "arm64" 511 + ], 512 + "dev": true, 513 + "license": "MIT", 514 + "optional": true, 515 + "os": [ 516 + "freebsd" 517 + ] 518 + }, 519 + "node_modules/@rollup/rollup-freebsd-x64": { 520 + "version": "4.40.2", 521 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz", 522 + "integrity": "sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==", 523 + "cpu": [ 524 + "x64" 525 + ], 526 + "dev": true, 527 + "license": "MIT", 528 + "optional": true, 529 + "os": [ 530 + "freebsd" 531 + ] 532 + }, 533 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 534 + "version": "4.40.2", 535 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz", 536 + "integrity": "sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==", 537 + "cpu": [ 538 + "arm" 539 + ], 540 + "dev": true, 541 + "license": "MIT", 542 + "optional": true, 543 + "os": [ 544 + "linux" 545 + ] 546 + }, 547 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 548 + "version": "4.40.2", 549 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz", 550 + "integrity": "sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==", 551 + "cpu": [ 552 + "arm" 553 + ], 554 + "dev": true, 555 + "license": "MIT", 556 + "optional": true, 557 + "os": [ 558 + "linux" 559 + ] 560 + }, 561 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 562 + "version": "4.40.2", 563 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz", 564 + "integrity": "sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==", 565 + "cpu": [ 566 + "arm64" 567 + ], 568 + "dev": true, 569 + "license": "MIT", 570 + "optional": true, 571 + "os": [ 572 + "linux" 573 + ] 574 + }, 575 + "node_modules/@rollup/rollup-linux-arm64-musl": { 576 + "version": "4.40.2", 577 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz", 578 + "integrity": "sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==", 579 + "cpu": [ 580 + "arm64" 581 + ], 582 + "dev": true, 583 + "license": "MIT", 584 + "optional": true, 585 + "os": [ 586 + "linux" 587 + ] 588 + }, 589 + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 590 + "version": "4.40.2", 591 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz", 592 + "integrity": "sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==", 593 + "cpu": [ 594 + "loong64" 595 + ], 596 + "dev": true, 597 + "license": "MIT", 598 + "optional": true, 599 + "os": [ 600 + "linux" 601 + ] 602 + }, 603 + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 604 + "version": "4.40.2", 605 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz", 606 + "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==", 607 + "cpu": [ 608 + "ppc64" 609 + ], 610 + "dev": true, 611 + "license": "MIT", 612 + "optional": true, 613 + "os": [ 614 + "linux" 615 + ] 616 + }, 617 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 618 + "version": "4.40.2", 619 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz", 620 + "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==", 621 + "cpu": [ 622 + "riscv64" 623 + ], 624 + "dev": true, 625 + "license": "MIT", 626 + "optional": true, 627 + "os": [ 628 + "linux" 629 + ] 630 + }, 631 + "node_modules/@rollup/rollup-linux-riscv64-musl": { 632 + "version": "4.40.2", 633 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz", 634 + "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==", 635 + "cpu": [ 636 + "riscv64" 637 + ], 638 + "dev": true, 639 + "license": "MIT", 640 + "optional": true, 641 + "os": [ 642 + "linux" 643 + ] 644 + }, 645 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 646 + "version": "4.40.2", 647 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz", 648 + "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==", 649 + "cpu": [ 650 + "s390x" 651 + ], 652 + "dev": true, 653 + "license": "MIT", 654 + "optional": true, 655 + "os": [ 656 + "linux" 657 + ] 658 + }, 659 + "node_modules/@rollup/rollup-linux-x64-gnu": { 660 + "version": "4.40.2", 661 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz", 662 + "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==", 663 + "cpu": [ 664 + "x64" 665 + ], 666 + "dev": true, 667 + "license": "MIT", 668 + "optional": true, 669 + "os": [ 670 + "linux" 671 + ] 672 + }, 673 + "node_modules/@rollup/rollup-linux-x64-musl": { 674 + "version": "4.40.2", 675 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz", 676 + "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==", 677 + "cpu": [ 678 + "x64" 679 + ], 680 + "dev": true, 681 + "license": "MIT", 682 + "optional": true, 683 + "os": [ 684 + "linux" 685 + ] 686 + }, 687 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 688 + "version": "4.40.2", 689 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz", 690 + "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==", 691 + "cpu": [ 692 + "arm64" 693 + ], 694 + "dev": true, 695 + "license": "MIT", 696 + "optional": true, 697 + "os": [ 698 + "win32" 699 + ] 700 + }, 701 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 702 + "version": "4.40.2", 703 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz", 704 + "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==", 705 + "cpu": [ 706 + "ia32" 707 + ], 708 + "dev": true, 709 + "license": "MIT", 710 + "optional": true, 711 + "os": [ 712 + "win32" 713 + ] 714 + }, 715 + "node_modules/@rollup/rollup-win32-x64-msvc": { 716 + "version": "4.40.2", 717 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", 718 + "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", 719 + "cpu": [ 720 + "x64" 721 + ], 722 + "dev": true, 723 + "license": "MIT", 724 + "optional": true, 725 + "os": [ 726 + "win32" 727 + ] 728 + }, 729 + "node_modules/@types/css-font-loading-module": { 730 + "version": "0.0.12", 731 + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", 732 + "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==", 733 + "license": "MIT" 734 + }, 735 + "node_modules/@types/earcut": { 736 + "version": "2.1.4", 737 + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", 738 + "integrity": "sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==", 739 + "license": "MIT" 740 + }, 741 + "node_modules/@types/estree": { 742 + "version": "1.0.7", 743 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", 744 + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", 745 + "dev": true, 746 + "license": "MIT" 747 + }, 748 + "node_modules/@webgpu/types": { 749 + "version": "0.1.60", 750 + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.60.tgz", 751 + "integrity": "sha512-8B/tdfRFKdrnejqmvq95ogp8tf52oZ51p3f4QD5m5Paey/qlX4Rhhy5Y8tgFMi7Ms70HzcMMw3EQjH/jdhTwlA==", 752 + "license": "BSD-3-Clause" 753 + }, 754 + "node_modules/@xmldom/xmldom": { 755 + "version": "0.8.10", 756 + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", 757 + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", 758 + "license": "MIT", 759 + "engines": { 760 + "node": ">=10.0.0" 761 + } 762 + }, 763 + "node_modules/earcut": { 764 + "version": "2.2.4", 765 + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", 766 + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", 767 + "license": "ISC" 768 + }, 769 + "node_modules/esbuild": { 770 + "version": "0.25.4", 771 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", 772 + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", 773 + "dev": true, 774 + "hasInstallScript": true, 775 + "license": "MIT", 776 + "bin": { 777 + "esbuild": "bin/esbuild" 778 + }, 779 + "engines": { 780 + "node": ">=18" 781 + }, 782 + "optionalDependencies": { 783 + "@esbuild/aix-ppc64": "0.25.4", 784 + "@esbuild/android-arm": "0.25.4", 785 + "@esbuild/android-arm64": "0.25.4", 786 + "@esbuild/android-x64": "0.25.4", 787 + "@esbuild/darwin-arm64": "0.25.4", 788 + "@esbuild/darwin-x64": "0.25.4", 789 + "@esbuild/freebsd-arm64": "0.25.4", 790 + "@esbuild/freebsd-x64": "0.25.4", 791 + "@esbuild/linux-arm": "0.25.4", 792 + "@esbuild/linux-arm64": "0.25.4", 793 + "@esbuild/linux-ia32": "0.25.4", 794 + "@esbuild/linux-loong64": "0.25.4", 795 + "@esbuild/linux-mips64el": "0.25.4", 796 + "@esbuild/linux-ppc64": "0.25.4", 797 + "@esbuild/linux-riscv64": "0.25.4", 798 + "@esbuild/linux-s390x": "0.25.4", 799 + "@esbuild/linux-x64": "0.25.4", 800 + "@esbuild/netbsd-arm64": "0.25.4", 801 + "@esbuild/netbsd-x64": "0.25.4", 802 + "@esbuild/openbsd-arm64": "0.25.4", 803 + "@esbuild/openbsd-x64": "0.25.4", 804 + "@esbuild/sunos-x64": "0.25.4", 805 + "@esbuild/win32-arm64": "0.25.4", 806 + "@esbuild/win32-ia32": "0.25.4", 807 + "@esbuild/win32-x64": "0.25.4" 808 + } 809 + }, 810 + "node_modules/eventemitter3": { 811 + "version": "5.0.1", 812 + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 813 + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", 814 + "license": "MIT" 815 + }, 816 + "node_modules/fdir": { 817 + "version": "6.4.4", 818 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", 819 + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", 820 + "dev": true, 821 + "license": "MIT", 822 + "peerDependencies": { 823 + "picomatch": "^3 || ^4" 824 + }, 825 + "peerDependenciesMeta": { 826 + "picomatch": { 827 + "optional": true 828 + } 829 + } 830 + }, 831 + "node_modules/fsevents": { 832 + "version": "2.3.3", 833 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 834 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 835 + "dev": true, 836 + "hasInstallScript": true, 837 + "license": "MIT", 838 + "optional": true, 839 + "os": [ 840 + "darwin" 841 + ], 842 + "engines": { 843 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 844 + } 845 + }, 846 + "node_modules/gifuct-js": { 847 + "version": "2.1.2", 848 + "resolved": "https://registry.npmjs.org/gifuct-js/-/gifuct-js-2.1.2.tgz", 849 + "integrity": "sha512-rI2asw77u0mGgwhV3qA+OEgYqaDn5UNqgs+Bx0FGwSpuqfYn+Ir6RQY5ENNQ8SbIiG/m5gVa7CD5RriO4f4Lsg==", 850 + "license": "MIT", 851 + "dependencies": { 852 + "js-binary-schema-parser": "^2.0.3" 853 + } 854 + }, 855 + "node_modules/ismobilejs": { 856 + "version": "1.1.1", 857 + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", 858 + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==", 859 + "license": "MIT" 860 + }, 861 + "node_modules/js-binary-schema-parser": { 862 + "version": "2.0.3", 863 + "resolved": "https://registry.npmjs.org/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz", 864 + "integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==", 865 + "license": "MIT" 866 + }, 867 + "node_modules/nanoid": { 868 + "version": "3.3.11", 869 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 870 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 871 + "dev": true, 872 + "funding": [ 873 + { 874 + "type": "github", 875 + "url": "https://github.com/sponsors/ai" 876 + } 877 + ], 878 + "license": "MIT", 879 + "bin": { 880 + "nanoid": "bin/nanoid.cjs" 881 + }, 882 + "engines": { 883 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 884 + } 885 + }, 886 + "node_modules/parse-svg-path": { 887 + "version": "0.1.2", 888 + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", 889 + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==", 890 + "license": "MIT" 891 + }, 892 + "node_modules/picocolors": { 893 + "version": "1.1.1", 894 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 895 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 896 + "dev": true, 897 + "license": "ISC" 898 + }, 899 + "node_modules/picomatch": { 900 + "version": "4.0.2", 901 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 902 + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 903 + "dev": true, 904 + "license": "MIT", 905 + "engines": { 906 + "node": ">=12" 907 + }, 908 + "funding": { 909 + "url": "https://github.com/sponsors/jonschlinkert" 910 + } 911 + }, 912 + "node_modules/pixi.js": { 913 + "version": "8.9.2", 914 + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.9.2.tgz", 915 + "integrity": "sha512-oLFBkOOA/O6OpT5T8o05AxgZB9x9yWNzEQ+WTNZZFoCvfU2GdT4sFTjpVFuHQzgZPmAm/1IFhKdNiXVnlL8PRw==", 916 + "license": "MIT", 917 + "dependencies": { 918 + "@pixi/colord": "^2.9.6", 919 + "@types/css-font-loading-module": "^0.0.12", 920 + "@types/earcut": "^2.1.4", 921 + "@webgpu/types": "^0.1.40", 922 + "@xmldom/xmldom": "^0.8.10", 923 + "earcut": "^2.2.4", 924 + "eventemitter3": "^5.0.1", 925 + "gifuct-js": "^2.1.2", 926 + "ismobilejs": "^1.1.1", 927 + "parse-svg-path": "^0.1.2" 928 + } 929 + }, 930 + "node_modules/postcss": { 931 + "version": "8.5.3", 932 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", 933 + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", 934 + "dev": true, 935 + "funding": [ 936 + { 937 + "type": "opencollective", 938 + "url": "https://opencollective.com/postcss/" 939 + }, 940 + { 941 + "type": "tidelift", 942 + "url": "https://tidelift.com/funding/github/npm/postcss" 943 + }, 944 + { 945 + "type": "github", 946 + "url": "https://github.com/sponsors/ai" 947 + } 948 + ], 949 + "license": "MIT", 950 + "dependencies": { 951 + "nanoid": "^3.3.8", 952 + "picocolors": "^1.1.1", 953 + "source-map-js": "^1.2.1" 954 + }, 955 + "engines": { 956 + "node": "^10 || ^12 || >=14" 957 + } 958 + }, 959 + "node_modules/rollup": { 960 + "version": "4.40.2", 961 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.2.tgz", 962 + "integrity": "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==", 963 + "dev": true, 964 + "license": "MIT", 965 + "dependencies": { 966 + "@types/estree": "1.0.7" 967 + }, 968 + "bin": { 969 + "rollup": "dist/bin/rollup" 970 + }, 971 + "engines": { 972 + "node": ">=18.0.0", 973 + "npm": ">=8.0.0" 974 + }, 975 + "optionalDependencies": { 976 + "@rollup/rollup-android-arm-eabi": "4.40.2", 977 + "@rollup/rollup-android-arm64": "4.40.2", 978 + "@rollup/rollup-darwin-arm64": "4.40.2", 979 + "@rollup/rollup-darwin-x64": "4.40.2", 980 + "@rollup/rollup-freebsd-arm64": "4.40.2", 981 + "@rollup/rollup-freebsd-x64": "4.40.2", 982 + "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", 983 + "@rollup/rollup-linux-arm-musleabihf": "4.40.2", 984 + "@rollup/rollup-linux-arm64-gnu": "4.40.2", 985 + "@rollup/rollup-linux-arm64-musl": "4.40.2", 986 + "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", 987 + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", 988 + "@rollup/rollup-linux-riscv64-gnu": "4.40.2", 989 + "@rollup/rollup-linux-riscv64-musl": "4.40.2", 990 + "@rollup/rollup-linux-s390x-gnu": "4.40.2", 991 + "@rollup/rollup-linux-x64-gnu": "4.40.2", 992 + "@rollup/rollup-linux-x64-musl": "4.40.2", 993 + "@rollup/rollup-win32-arm64-msvc": "4.40.2", 994 + "@rollup/rollup-win32-ia32-msvc": "4.40.2", 995 + "@rollup/rollup-win32-x64-msvc": "4.40.2", 996 + "fsevents": "~2.3.2" 997 + } 998 + }, 999 + "node_modules/source-map-js": { 1000 + "version": "1.2.1", 1001 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 1002 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 1003 + "dev": true, 1004 + "license": "BSD-3-Clause", 1005 + "engines": { 1006 + "node": ">=0.10.0" 1007 + } 1008 + }, 1009 + "node_modules/tinyglobby": { 1010 + "version": "0.2.13", 1011 + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", 1012 + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", 1013 + "dev": true, 1014 + "license": "MIT", 1015 + "dependencies": { 1016 + "fdir": "^6.4.4", 1017 + "picomatch": "^4.0.2" 1018 + }, 1019 + "engines": { 1020 + "node": ">=12.0.0" 1021 + }, 1022 + "funding": { 1023 + "url": "https://github.com/sponsors/SuperchupuDev" 1024 + } 1025 + }, 1026 + "node_modules/typescript": { 1027 + "version": "5.6.3", 1028 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", 1029 + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", 1030 + "dev": true, 1031 + "license": "Apache-2.0", 1032 + "bin": { 1033 + "tsc": "bin/tsc", 1034 + "tsserver": "bin/tsserver" 1035 + }, 1036 + "engines": { 1037 + "node": ">=14.17" 1038 + } 1039 + }, 1040 + "node_modules/vite": { 1041 + "version": "6.3.5", 1042 + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", 1043 + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", 1044 + "dev": true, 1045 + "license": "MIT", 1046 + "dependencies": { 1047 + "esbuild": "^0.25.0", 1048 + "fdir": "^6.4.4", 1049 + "picomatch": "^4.0.2", 1050 + "postcss": "^8.5.3", 1051 + "rollup": "^4.34.9", 1052 + "tinyglobby": "^0.2.13" 1053 + }, 1054 + "bin": { 1055 + "vite": "bin/vite.js" 1056 + }, 1057 + "engines": { 1058 + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 1059 + }, 1060 + "funding": { 1061 + "url": "https://github.com/vitejs/vite?sponsor=1" 1062 + }, 1063 + "optionalDependencies": { 1064 + "fsevents": "~2.3.3" 1065 + }, 1066 + "peerDependencies": { 1067 + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 1068 + "jiti": ">=1.21.0", 1069 + "less": "*", 1070 + "lightningcss": "^1.21.0", 1071 + "sass": "*", 1072 + "sass-embedded": "*", 1073 + "stylus": "*", 1074 + "sugarss": "*", 1075 + "terser": "^5.16.0", 1076 + "tsx": "^4.8.1", 1077 + "yaml": "^2.4.2" 1078 + }, 1079 + "peerDependenciesMeta": { 1080 + "@types/node": { 1081 + "optional": true 1082 + }, 1083 + "jiti": { 1084 + "optional": true 1085 + }, 1086 + "less": { 1087 + "optional": true 1088 + }, 1089 + "lightningcss": { 1090 + "optional": true 1091 + }, 1092 + "sass": { 1093 + "optional": true 1094 + }, 1095 + "sass-embedded": { 1096 + "optional": true 1097 + }, 1098 + "stylus": { 1099 + "optional": true 1100 + }, 1101 + "sugarss": { 1102 + "optional": true 1103 + }, 1104 + "terser": { 1105 + "optional": true 1106 + }, 1107 + "tsx": { 1108 + "optional": true 1109 + }, 1110 + "yaml": { 1111 + "optional": true 1112 + } 1113 + } 1114 + } 1115 + } 1116 + }
+18
package.json
··· 1 + { 2 + "name": "pixi", 3 + "private": true, 4 + "version": "0.0.0", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite", 8 + "build": "tsc && vite build", 9 + "preview": "vite preview" 10 + }, 11 + "devDependencies": { 12 + "typescript": "~5.6.2", 13 + "vite": "^6.0.5" 14 + }, 15 + "dependencies": { 16 + "pixi.js": "^8.9.2" 17 + } 18 + }
public/heart.png

This is a binary file and will not be displayed.

+1
public/vite.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
+103
src/main.ts
··· 1 + import * as PIXI from 'pixi.js' 2 + import ParticleSystem from './particles'; 3 + 4 + let app: PIXI.Application; 5 + let container: PIXI.Container; 6 + 7 + let particles: ParticleSystem; 8 + 9 + // List of emojis to randomly use 10 + const fruitEmojis = ["🍎", "🍐", "🍊", "🍋", "🍌", "🍉", "🍇", "🍓", "🫐", "🍈", "🍒", "🍑", "🥭", "🍍", "🥥", "🥝"]; 11 + 12 + async function setup() { 13 + // Create the application 14 + app = new PIXI.Application(); 15 + await app.init({ 16 + background: 'black', 17 + resizeTo: window, 18 + }); 19 + 20 + // Add the canvas to the DOM 21 + document.body.appendChild(app.canvas); 22 + 23 + // Create a container with fixed dimensions 24 + container = new PIXI.Container(); 25 + container.width = 700; 26 + container.height = 400; 27 + 28 + // Create a red rectangle 29 + const rectangle = new PIXI.Graphics(); 30 + rectangle.rect(0, 0, 100, 100).fill({ color: 0xff0000, alpha: 1 }); 31 + 32 + // Add the rectangle to the container 33 + container.addChild(rectangle); 34 + 35 + // Center the rectangle in the container 36 + rectangle.x = (container.width - rectangle.width) / 2; 37 + rectangle.y = (container.height - rectangle.height) / 2; 38 + 39 + // Add the container to the stage 40 + app.stage.addChild(container); 41 + 42 + // add background 43 + const background = new PIXI.Graphics(); 44 + background.rect(-350, -200, 700, 400).fill({ color: 0x515151, alpha: 1 }); 45 + container.addChild(background); 46 + 47 + // Create the particle system (no need for texture path now) 48 + particles = new ParticleSystem(1000); 49 + 50 + // Add a test particle 51 + particles.spawnParticle({ 52 + x: 0, 53 + y: 0, 54 + size: 30, 55 + color: 0xffffff, 56 + alpha: 1, 57 + emoji: "🍎" 58 + }); 59 + 60 + container.addChild(particles.container); 61 + resize(); 62 + 63 + app.ticker.add((ticker) => { 64 + particles.update(ticker.deltaMS * 0.001); 65 + 66 + if(Math.random() < 0.05) { 67 + // Get a random emoji from our list 68 + const randomEmoji = fruitEmojis[Math.floor(Math.random() * fruitEmojis.length)]; 69 + 70 + // Random color for variety 71 + const colors = [0xFFFFFF, 0xFF9999, 0x99FF99, 0x9999FF, 0xFFFF99, 0xFF99FF, 0x99FFFF]; 72 + const randomColor = colors[Math.floor(Math.random() * colors.length)]; 73 + 74 + particles.spawnParticle({ 75 + x: Math.random() * 700 - 350, 76 + y: -200, 77 + size: 20 + Math.random() * 20, 78 + color: randomColor, 79 + alpha: 1, 80 + speedX: Math.random() * 10 - 5, 81 + speedY: 100 + Math.random() * 50, 82 + emoji: randomEmoji 83 + }); 84 + } 85 + }); 86 + } 87 + 88 + // Function to handle window resize 89 + function resize() { 90 + const scale = Math.min( 91 + window.innerWidth / 700, 92 + window.innerHeight / 400 93 + ); 94 + 95 + console.log(scale); 96 + container.scale.set(scale); 97 + container.position.set(window.innerWidth / 2, window.innerHeight / 2); 98 + } 99 + 100 + // Add resize event listener 101 + window.addEventListener('resize', resize); 102 + 103 + setup();
+95
src/particles.ts
··· 1 + import * as PIXI from "pixi.js"; 2 + 3 + interface ParticleText extends PIXI.Text { 4 + speedX: number; 5 + speedY: number; 6 + age: number; 7 + maxAge: number; 8 + initialSize: number; 9 + } 10 + 11 + export type ParticleOptions = { 12 + x: number; 13 + y: number; 14 + size: number; 15 + color: PIXI.ColorSource; 16 + alpha: number; 17 + speedX: number; 18 + speedY: number; 19 + maxAge: number; 20 + emoji: string; 21 + }; 22 + 23 + export default class ParticleSystem { 24 + private maxParticles: number; 25 + public container: PIXI.Container; 26 + private particles: ParticleText[]; 27 + private particlePool: ParticleText[]; 28 + 29 + constructor(maxParticles: number = 10000) { 30 + this.maxParticles = maxParticles; 31 + this.container = new PIXI.Container(); 32 + this.container.zIndex = 10; 33 + this.particles = []; 34 + this.particlePool = []; 35 + } 36 + 37 + spawnParticle(opts: Partial<ParticleOptions>): ParticleText | null { 38 + let particle: ParticleText; 39 + 40 + if (this.particlePool.length > 0) { 41 + particle = this.particlePool.pop()!; 42 + particle.text = opts.emoji || "❤️"; // Update the text for reused particles 43 + } else if (this.particles.length < this.maxParticles) { 44 + const textStyle = new PIXI.TextStyle({ 45 + fontSize: opts.size || 20, 46 + fill: opts.color || 0xffffff, 47 + }); 48 + 49 + particle = new PIXI.Text(opts.emoji || "❤️", textStyle) as ParticleText; 50 + particle.anchor.set(0.5, 0.5); 51 + this.container.addChild(particle); 52 + } else { 53 + return null; 54 + } 55 + 56 + particle.rotation = (Math.random() - 0.5) * 0.5; 57 + particle.visible = true; 58 + particle.x = opts.x ?? 0; 59 + particle.y = opts.y ?? 0; 60 + particle.scale.set((opts.size ?? 20) / particle.width); 61 + particle.alpha = opts.alpha ?? 1; 62 + particle.speedX = opts.speedX ?? 0; 63 + particle.speedY = opts.speedY ?? 0; 64 + particle.age = 0; 65 + particle.maxAge = opts.maxAge ?? 1; 66 + particle.initialSize = opts.size ?? 20; 67 + 68 + this.particles.push(particle); 69 + 70 + return particle; 71 + } 72 + 73 + removeParticle(particle: ParticleText): void { 74 + const index = this.particles.indexOf(particle); 75 + if (index !== -1) { 76 + particle.visible = false; 77 + 78 + this.particles.splice(index, 1); 79 + this.particlePool.push(particle); 80 + } 81 + } 82 + 83 + update(deltaTime: number): void { 84 + for (let i = this.particles.length - 1; i >= 0; i--) { 85 + const particle = this.particles[i]; 86 + particle.x += particle.speedX * deltaTime; 87 + particle.y += particle.speedY * deltaTime; 88 + particle.age += deltaTime; 89 + 90 + if(particle.y > 400) { 91 + this.removeParticle(particle); 92 + } 93 + } 94 + } 95 + }
+1
src/vite-env.d.ts
··· 1 + /// <reference types="vite/client" />
+24
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "target": "ES2020", 4 + "useDefineForClassFields": true, 5 + "module": "ESNext", 6 + "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 + "skipLibCheck": true, 8 + 9 + /* Bundler mode */ 10 + "moduleResolution": "bundler", 11 + "allowImportingTsExtensions": true, 12 + "isolatedModules": true, 13 + "moduleDetection": "force", 14 + "noEmit": true, 15 + 16 + /* Linting */ 17 + "strict": true, 18 + "noUnusedLocals": true, 19 + "noUnusedParameters": true, 20 + "noFallthroughCasesInSwitch": true, 21 + "noUncheckedSideEffectImports": true 22 + }, 23 + "include": ["src"] 24 + }