your personal website on atproto - mirror blento.app

add drawing card

Florian 0588b574 33e9556c

+531 -181
+3 -10
docs/Beta.md
··· 1 1 # Todo for beta version 2 2 3 - - fix opengraph image stuff (caching issue?) 4 - 5 3 - site.standard 6 - - move subpages to own lexicon (app.blento.page) 7 4 - move description to markdownDescription and set description as text only 8 5 6 + - big button card 7 + 9 8 - card with big call to action button 10 9 11 - - link card: save favicon and og image as blobs 10 + - link card allow changing favicon, og image (+ hide favicon) 12 11 13 12 - video card? 14 13 15 - - allow changing profile picture 16 - 17 - - allow editing profile stuff inline (in sidebar profile) 18 - 19 14 - allow setting base and accent color 20 15 21 16 - ask to fill with some default cards on page creation ··· 23 18 - share button (copy share link to blento, maybe post to bluesky?) 24 19 25 20 - add icons to "change card to..." popover 26 - 27 - - show social icon instead of favicon in link card if platform found for link 28 21 29 22 - when adding images try to add them in a size that best fits aspect ratio 30 23
+1
package.json
··· 72 72 "link-preview-js": "^4.0.0", 73 73 "mapbox-gl": "^3.18.1", 74 74 "marked": "^17.0.1", 75 + "perfect-freehand": "^1.2.2", 75 76 "plyr": "^3.8.4", 76 77 "qr-code-styling": "^1.8.6", 77 78 "simple-icons": "^16.6.0",
+147 -139
pnpm-lock.yaml
··· 107 107 marked: 108 108 specifier: ^17.0.1 109 109 version: 17.0.1 110 + perfect-freehand: 111 + specifier: ^1.2.2 112 + version: 1.2.2 110 113 plyr: 111 114 specifier: ^3.8.4 112 115 version: 3.8.4 ··· 287 290 optional: true 288 291 289 292 '@cloudflare/workerd-darwin-64@1.20260120.0': 290 - resolution: {integrity: sha512-JLHx3p5dpwz4wjVSis45YNReftttnI3ndhdMh5BUbbpdreN/g0jgxNt5Qp9tDFqEKl++N63qv+hxJiIIvSLR+Q==} 293 + resolution: {integrity: sha512-JLHx3p5dpwz4wjVSis45YNReftttnI3ndhdMh5BUbbpdreN/g0jgxNt5Qp9tDFqEKl++N63qv+hxJiIIvSLR+Q==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260120.0.tgz} 291 294 engines: {node: '>=16'} 292 295 cpu: [x64] 293 296 os: [darwin] 294 297 295 298 '@cloudflare/workerd-darwin-arm64@1.20260120.0': 296 - resolution: {integrity: sha512-1Md2tCRhZjwajsZNOiBeOVGiS3zbpLPzUDjHr4+XGTXWOA6FzzwScJwQZLa0Doc28Cp4Nr1n7xGL0Dwiz1XuOA==} 299 + resolution: {integrity: sha512-1Md2tCRhZjwajsZNOiBeOVGiS3zbpLPzUDjHr4+XGTXWOA6FzzwScJwQZLa0Doc28Cp4Nr1n7xGL0Dwiz1XuOA==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260120.0.tgz} 297 300 engines: {node: '>=16'} 298 301 cpu: [arm64] 299 302 os: [darwin] 300 303 301 304 '@cloudflare/workerd-linux-64@1.20260120.0': 302 - resolution: {integrity: sha512-O0mIfJfvU7F8N5siCoRDaVDuI12wkz2xlG4zK6/Ct7U9c9FiE0ViXNFWXFQm5PPj+qbkNRyhjUwhP+GCKTk5EQ==} 305 + resolution: {integrity: sha512-O0mIfJfvU7F8N5siCoRDaVDuI12wkz2xlG4zK6/Ct7U9c9FiE0ViXNFWXFQm5PPj+qbkNRyhjUwhP+GCKTk5EQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260120.0.tgz} 303 306 engines: {node: '>=16'} 304 307 cpu: [x64] 305 308 os: [linux] 306 309 307 310 '@cloudflare/workerd-linux-arm64@1.20260120.0': 308 - resolution: {integrity: sha512-aRHO/7bjxVpjZEmVVcpmhbzpN6ITbFCxuLLZSW0H9O0C0w40cDCClWSi19T87Ax/PQcYjFNT22pTewKsupkckA==} 311 + resolution: {integrity: sha512-aRHO/7bjxVpjZEmVVcpmhbzpN6ITbFCxuLLZSW0H9O0C0w40cDCClWSi19T87Ax/PQcYjFNT22pTewKsupkckA==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260120.0.tgz} 309 312 engines: {node: '>=16'} 310 313 cpu: [arm64] 311 314 os: [linux] 312 315 313 316 '@cloudflare/workerd-windows-64@1.20260120.0': 314 - resolution: {integrity: sha512-ASZIz1E8sqZQqQCgcfY1PJbBpUDrxPt8NZ+lqNil0qxnO4qX38hbCsdDF2/TDAuq0Txh7nu8ztgTelfNDlb4EA==} 317 + resolution: {integrity: sha512-ASZIz1E8sqZQqQCgcfY1PJbBpUDrxPt8NZ+lqNil0qxnO4qX38hbCsdDF2/TDAuq0Txh7nu8ztgTelfNDlb4EA==, tarball: https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260120.0.tgz} 315 318 engines: {node: '>=16'} 316 319 cpu: [x64] 317 320 os: [win32] ··· 324 327 engines: {node: '>=12'} 325 328 326 329 '@emnapi/runtime@1.8.1': 327 - resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} 330 + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==, tarball: https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz} 328 331 329 332 '@esbuild/aix-ppc64@0.27.0': 330 - resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} 333 + resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz} 331 334 engines: {node: '>=18'} 332 335 cpu: [ppc64] 333 336 os: [aix] 334 337 335 338 '@esbuild/aix-ppc64@0.27.2': 336 - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} 339 + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz} 337 340 engines: {node: '>=18'} 338 341 cpu: [ppc64] 339 342 os: [aix] 340 343 341 344 '@esbuild/android-arm64@0.27.0': 342 - resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} 345 + resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz} 343 346 engines: {node: '>=18'} 344 347 cpu: [arm64] 345 348 os: [android] 346 349 347 350 '@esbuild/android-arm64@0.27.2': 348 - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} 351 + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz} 349 352 engines: {node: '>=18'} 350 353 cpu: [arm64] 351 354 os: [android] 352 355 353 356 '@esbuild/android-arm@0.27.0': 354 - resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} 357 + resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.0.tgz} 355 358 engines: {node: '>=18'} 356 359 cpu: [arm] 357 360 os: [android] 358 361 359 362 '@esbuild/android-arm@0.27.2': 360 - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} 363 + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz} 361 364 engines: {node: '>=18'} 362 365 cpu: [arm] 363 366 os: [android] 364 367 365 368 '@esbuild/android-x64@0.27.0': 366 - resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} 369 + resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.0.tgz} 367 370 engines: {node: '>=18'} 368 371 cpu: [x64] 369 372 os: [android] 370 373 371 374 '@esbuild/android-x64@0.27.2': 372 - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} 375 + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz} 373 376 engines: {node: '>=18'} 374 377 cpu: [x64] 375 378 os: [android] 376 379 377 380 '@esbuild/darwin-arm64@0.27.0': 378 - resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} 381 + resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz} 379 382 engines: {node: '>=18'} 380 383 cpu: [arm64] 381 384 os: [darwin] 382 385 383 386 '@esbuild/darwin-arm64@0.27.2': 384 - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} 387 + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz} 385 388 engines: {node: '>=18'} 386 389 cpu: [arm64] 387 390 os: [darwin] 388 391 389 392 '@esbuild/darwin-x64@0.27.0': 390 - resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} 393 + resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz} 391 394 engines: {node: '>=18'} 392 395 cpu: [x64] 393 396 os: [darwin] 394 397 395 398 '@esbuild/darwin-x64@0.27.2': 396 - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} 399 + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz} 397 400 engines: {node: '>=18'} 398 401 cpu: [x64] 399 402 os: [darwin] 400 403 401 404 '@esbuild/freebsd-arm64@0.27.0': 402 - resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} 405 + resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz} 403 406 engines: {node: '>=18'} 404 407 cpu: [arm64] 405 408 os: [freebsd] 406 409 407 410 '@esbuild/freebsd-arm64@0.27.2': 408 - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} 411 + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz} 409 412 engines: {node: '>=18'} 410 413 cpu: [arm64] 411 414 os: [freebsd] 412 415 413 416 '@esbuild/freebsd-x64@0.27.0': 414 - resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} 417 + resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz} 415 418 engines: {node: '>=18'} 416 419 cpu: [x64] 417 420 os: [freebsd] 418 421 419 422 '@esbuild/freebsd-x64@0.27.2': 420 - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} 423 + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz} 421 424 engines: {node: '>=18'} 422 425 cpu: [x64] 423 426 os: [freebsd] 424 427 425 428 '@esbuild/linux-arm64@0.27.0': 426 - resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} 429 + resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz} 427 430 engines: {node: '>=18'} 428 431 cpu: [arm64] 429 432 os: [linux] 430 433 431 434 '@esbuild/linux-arm64@0.27.2': 432 - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} 435 + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz} 433 436 engines: {node: '>=18'} 434 437 cpu: [arm64] 435 438 os: [linux] 436 439 437 440 '@esbuild/linux-arm@0.27.0': 438 - resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} 441 + resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz} 439 442 engines: {node: '>=18'} 440 443 cpu: [arm] 441 444 os: [linux] 442 445 443 446 '@esbuild/linux-arm@0.27.2': 444 - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} 447 + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz} 445 448 engines: {node: '>=18'} 446 449 cpu: [arm] 447 450 os: [linux] 448 451 449 452 '@esbuild/linux-ia32@0.27.0': 450 - resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} 453 + resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz} 451 454 engines: {node: '>=18'} 452 455 cpu: [ia32] 453 456 os: [linux] 454 457 455 458 '@esbuild/linux-ia32@0.27.2': 456 - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} 459 + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz} 457 460 engines: {node: '>=18'} 458 461 cpu: [ia32] 459 462 os: [linux] 460 463 461 464 '@esbuild/linux-loong64@0.27.0': 462 - resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} 465 + resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz} 463 466 engines: {node: '>=18'} 464 467 cpu: [loong64] 465 468 os: [linux] 466 469 467 470 '@esbuild/linux-loong64@0.27.2': 468 - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} 471 + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz} 469 472 engines: {node: '>=18'} 470 473 cpu: [loong64] 471 474 os: [linux] 472 475 473 476 '@esbuild/linux-mips64el@0.27.0': 474 - resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} 477 + resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz} 475 478 engines: {node: '>=18'} 476 479 cpu: [mips64el] 477 480 os: [linux] 478 481 479 482 '@esbuild/linux-mips64el@0.27.2': 480 - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} 483 + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz} 481 484 engines: {node: '>=18'} 482 485 cpu: [mips64el] 483 486 os: [linux] 484 487 485 488 '@esbuild/linux-ppc64@0.27.0': 486 - resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} 489 + resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz} 487 490 engines: {node: '>=18'} 488 491 cpu: [ppc64] 489 492 os: [linux] 490 493 491 494 '@esbuild/linux-ppc64@0.27.2': 492 - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} 495 + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz} 493 496 engines: {node: '>=18'} 494 497 cpu: [ppc64] 495 498 os: [linux] 496 499 497 500 '@esbuild/linux-riscv64@0.27.0': 498 - resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} 501 + resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz} 499 502 engines: {node: '>=18'} 500 503 cpu: [riscv64] 501 504 os: [linux] 502 505 503 506 '@esbuild/linux-riscv64@0.27.2': 504 - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} 507 + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz} 505 508 engines: {node: '>=18'} 506 509 cpu: [riscv64] 507 510 os: [linux] 508 511 509 512 '@esbuild/linux-s390x@0.27.0': 510 - resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} 513 + resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz} 511 514 engines: {node: '>=18'} 512 515 cpu: [s390x] 513 516 os: [linux] 514 517 515 518 '@esbuild/linux-s390x@0.27.2': 516 - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} 519 + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz} 517 520 engines: {node: '>=18'} 518 521 cpu: [s390x] 519 522 os: [linux] 520 523 521 524 '@esbuild/linux-x64@0.27.0': 522 - resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} 525 + resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz} 523 526 engines: {node: '>=18'} 524 527 cpu: [x64] 525 528 os: [linux] 526 529 527 530 '@esbuild/linux-x64@0.27.2': 528 - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} 531 + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz} 529 532 engines: {node: '>=18'} 530 533 cpu: [x64] 531 534 os: [linux] 532 535 533 536 '@esbuild/netbsd-arm64@0.27.0': 534 - resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} 537 + resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==, tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz} 535 538 engines: {node: '>=18'} 536 539 cpu: [arm64] 537 540 os: [netbsd] 538 541 539 542 '@esbuild/netbsd-arm64@0.27.2': 540 - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} 543 + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz} 541 544 engines: {node: '>=18'} 542 545 cpu: [arm64] 543 546 os: [netbsd] 544 547 545 548 '@esbuild/netbsd-x64@0.27.0': 546 - resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} 549 + resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz} 547 550 engines: {node: '>=18'} 548 551 cpu: [x64] 549 552 os: [netbsd] 550 553 551 554 '@esbuild/netbsd-x64@0.27.2': 552 - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} 555 + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz} 553 556 engines: {node: '>=18'} 554 557 cpu: [x64] 555 558 os: [netbsd] 556 559 557 560 '@esbuild/openbsd-arm64@0.27.0': 558 - resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} 561 + resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz} 559 562 engines: {node: '>=18'} 560 563 cpu: [arm64] 561 564 os: [openbsd] 562 565 563 566 '@esbuild/openbsd-arm64@0.27.2': 564 - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} 567 + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz} 565 568 engines: {node: '>=18'} 566 569 cpu: [arm64] 567 570 os: [openbsd] 568 571 569 572 '@esbuild/openbsd-x64@0.27.0': 570 - resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} 573 + resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz} 571 574 engines: {node: '>=18'} 572 575 cpu: [x64] 573 576 os: [openbsd] 574 577 575 578 '@esbuild/openbsd-x64@0.27.2': 576 - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} 579 + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz} 577 580 engines: {node: '>=18'} 578 581 cpu: [x64] 579 582 os: [openbsd] 580 583 581 584 '@esbuild/openharmony-arm64@0.27.0': 582 - resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} 585 + resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==, tarball: https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz} 583 586 engines: {node: '>=18'} 584 587 cpu: [arm64] 585 588 os: [openharmony] 586 589 587 590 '@esbuild/openharmony-arm64@0.27.2': 588 - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} 591 + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==, tarball: https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz} 589 592 engines: {node: '>=18'} 590 593 cpu: [arm64] 591 594 os: [openharmony] 592 595 593 596 '@esbuild/sunos-x64@0.27.0': 594 - resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} 597 + resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz} 595 598 engines: {node: '>=18'} 596 599 cpu: [x64] 597 600 os: [sunos] 598 601 599 602 '@esbuild/sunos-x64@0.27.2': 600 - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} 603 + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz} 601 604 engines: {node: '>=18'} 602 605 cpu: [x64] 603 606 os: [sunos] 604 607 605 608 '@esbuild/win32-arm64@0.27.0': 606 - resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} 609 + resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz} 607 610 engines: {node: '>=18'} 608 611 cpu: [arm64] 609 612 os: [win32] 610 613 611 614 '@esbuild/win32-arm64@0.27.2': 612 - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} 615 + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz} 613 616 engines: {node: '>=18'} 614 617 cpu: [arm64] 615 618 os: [win32] 616 619 617 620 '@esbuild/win32-ia32@0.27.0': 618 - resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} 621 + resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz} 619 622 engines: {node: '>=18'} 620 623 cpu: [ia32] 621 624 os: [win32] 622 625 623 626 '@esbuild/win32-ia32@0.27.2': 624 - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} 627 + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz} 625 628 engines: {node: '>=18'} 626 629 cpu: [ia32] 627 630 os: [win32] 628 631 629 632 '@esbuild/win32-x64@0.27.0': 630 - resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} 633 + resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz} 631 634 engines: {node: '>=18'} 632 635 cpu: [x64] 633 636 os: [win32] 634 637 635 638 '@esbuild/win32-x64@0.27.2': 636 - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} 639 + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz} 637 640 engines: {node: '>=18'} 638 641 cpu: [x64] 639 642 os: [win32] ··· 754 757 engines: {node: '>=18'} 755 758 756 759 '@img/sharp-darwin-arm64@0.34.5': 757 - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} 760 + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==, tarball: https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz} 758 761 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 759 762 cpu: [arm64] 760 763 os: [darwin] 761 764 762 765 '@img/sharp-darwin-x64@0.34.5': 763 - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} 766 + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==, tarball: https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz} 764 767 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 765 768 cpu: [x64] 766 769 os: [darwin] 767 770 768 771 '@img/sharp-libvips-darwin-arm64@1.2.4': 769 - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} 772 + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==, tarball: https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz} 770 773 cpu: [arm64] 771 774 os: [darwin] 772 775 773 776 '@img/sharp-libvips-darwin-x64@1.2.4': 774 - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} 777 + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==, tarball: https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz} 775 778 cpu: [x64] 776 779 os: [darwin] 777 780 778 781 '@img/sharp-libvips-linux-arm64@1.2.4': 779 - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} 782 + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==, tarball: https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz} 780 783 cpu: [arm64] 781 784 os: [linux] 782 785 783 786 '@img/sharp-libvips-linux-arm@1.2.4': 784 - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} 787 + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==, tarball: https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz} 785 788 cpu: [arm] 786 789 os: [linux] 787 790 788 791 '@img/sharp-libvips-linux-ppc64@1.2.4': 789 - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} 792 + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==, tarball: https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz} 790 793 cpu: [ppc64] 791 794 os: [linux] 792 795 793 796 '@img/sharp-libvips-linux-riscv64@1.2.4': 794 - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} 797 + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==, tarball: https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz} 795 798 cpu: [riscv64] 796 799 os: [linux] 797 800 798 801 '@img/sharp-libvips-linux-s390x@1.2.4': 799 - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} 802 + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==, tarball: https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz} 800 803 cpu: [s390x] 801 804 os: [linux] 802 805 803 806 '@img/sharp-libvips-linux-x64@1.2.4': 804 - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} 807 + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==, tarball: https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz} 805 808 cpu: [x64] 806 809 os: [linux] 807 810 808 811 '@img/sharp-libvips-linuxmusl-arm64@1.2.4': 809 - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} 812 + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==, tarball: https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz} 810 813 cpu: [arm64] 811 814 os: [linux] 812 815 813 816 '@img/sharp-libvips-linuxmusl-x64@1.2.4': 814 - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} 817 + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==, tarball: https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz} 815 818 cpu: [x64] 816 819 os: [linux] 817 820 818 821 '@img/sharp-linux-arm64@0.34.5': 819 - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} 822 + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==, tarball: https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz} 820 823 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 821 824 cpu: [arm64] 822 825 os: [linux] 823 826 824 827 '@img/sharp-linux-arm@0.34.5': 825 - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} 828 + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==, tarball: https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz} 826 829 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 827 830 cpu: [arm] 828 831 os: [linux] 829 832 830 833 '@img/sharp-linux-ppc64@0.34.5': 831 - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} 834 + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==, tarball: https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz} 832 835 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 833 836 cpu: [ppc64] 834 837 os: [linux] 835 838 836 839 '@img/sharp-linux-riscv64@0.34.5': 837 - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} 840 + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==, tarball: https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz} 838 841 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 839 842 cpu: [riscv64] 840 843 os: [linux] 841 844 842 845 '@img/sharp-linux-s390x@0.34.5': 843 - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} 846 + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==, tarball: https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz} 844 847 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 845 848 cpu: [s390x] 846 849 os: [linux] 847 850 848 851 '@img/sharp-linux-x64@0.34.5': 849 - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} 852 + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==, tarball: https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz} 850 853 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 851 854 cpu: [x64] 852 855 os: [linux] 853 856 854 857 '@img/sharp-linuxmusl-arm64@0.34.5': 855 - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} 858 + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==, tarball: https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz} 856 859 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 857 860 cpu: [arm64] 858 861 os: [linux] 859 862 860 863 '@img/sharp-linuxmusl-x64@0.34.5': 861 - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} 864 + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==, tarball: https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz} 862 865 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 863 866 cpu: [x64] 864 867 os: [linux] 865 868 866 869 '@img/sharp-wasm32@0.34.5': 867 - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} 870 + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==, tarball: https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz} 868 871 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 869 872 cpu: [wasm32] 870 873 871 874 '@img/sharp-win32-arm64@0.34.5': 872 - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} 875 + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==, tarball: https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz} 873 876 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 874 877 cpu: [arm64] 875 878 os: [win32] 876 879 877 880 '@img/sharp-win32-ia32@0.34.5': 878 - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} 881 + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==, tarball: https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz} 879 882 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 880 883 cpu: [ia32] 881 884 os: [win32] 882 885 883 886 '@img/sharp-win32-x64@0.34.5': 884 - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} 887 + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==, tarball: https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz} 885 888 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 886 889 cpu: [x64] 887 890 os: [win32] ··· 959 962 engines: {node: '>= 10'} 960 963 961 964 '@rollup/rollup-android-arm-eabi@4.56.0': 962 - resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} 965 + resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz} 963 966 cpu: [arm] 964 967 os: [android] 965 968 966 969 '@rollup/rollup-android-arm64@4.56.0': 967 - resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} 970 + resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz} 968 971 cpu: [arm64] 969 972 os: [android] 970 973 971 974 '@rollup/rollup-darwin-arm64@4.56.0': 972 - resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} 975 + resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz} 973 976 cpu: [arm64] 974 977 os: [darwin] 975 978 976 979 '@rollup/rollup-darwin-x64@4.56.0': 977 - resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} 980 + resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz} 978 981 cpu: [x64] 979 982 os: [darwin] 980 983 981 984 '@rollup/rollup-freebsd-arm64@4.56.0': 982 - resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} 985 + resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz} 983 986 cpu: [arm64] 984 987 os: [freebsd] 985 988 986 989 '@rollup/rollup-freebsd-x64@4.56.0': 987 - resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} 990 + resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz} 988 991 cpu: [x64] 989 992 os: [freebsd] 990 993 991 994 '@rollup/rollup-linux-arm-gnueabihf@4.56.0': 992 - resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} 995 + resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz} 993 996 cpu: [arm] 994 997 os: [linux] 995 998 996 999 '@rollup/rollup-linux-arm-musleabihf@4.56.0': 997 - resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} 1000 + resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz} 998 1001 cpu: [arm] 999 1002 os: [linux] 1000 1003 1001 1004 '@rollup/rollup-linux-arm64-gnu@4.56.0': 1002 - resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} 1005 + resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz} 1003 1006 cpu: [arm64] 1004 1007 os: [linux] 1005 1008 1006 1009 '@rollup/rollup-linux-arm64-musl@4.56.0': 1007 - resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} 1010 + resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz} 1008 1011 cpu: [arm64] 1009 1012 os: [linux] 1010 1013 1011 1014 '@rollup/rollup-linux-loong64-gnu@4.56.0': 1012 - resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} 1015 + resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz} 1013 1016 cpu: [loong64] 1014 1017 os: [linux] 1015 1018 1016 1019 '@rollup/rollup-linux-loong64-musl@4.56.0': 1017 - resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} 1020 + resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz} 1018 1021 cpu: [loong64] 1019 1022 os: [linux] 1020 1023 1021 1024 '@rollup/rollup-linux-ppc64-gnu@4.56.0': 1022 - resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} 1025 + resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz} 1023 1026 cpu: [ppc64] 1024 1027 os: [linux] 1025 1028 1026 1029 '@rollup/rollup-linux-ppc64-musl@4.56.0': 1027 - resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} 1030 + resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz} 1028 1031 cpu: [ppc64] 1029 1032 os: [linux] 1030 1033 1031 1034 '@rollup/rollup-linux-riscv64-gnu@4.56.0': 1032 - resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} 1035 + resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz} 1033 1036 cpu: [riscv64] 1034 1037 os: [linux] 1035 1038 1036 1039 '@rollup/rollup-linux-riscv64-musl@4.56.0': 1037 - resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} 1040 + resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz} 1038 1041 cpu: [riscv64] 1039 1042 os: [linux] 1040 1043 1041 1044 '@rollup/rollup-linux-s390x-gnu@4.56.0': 1042 - resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} 1045 + resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz} 1043 1046 cpu: [s390x] 1044 1047 os: [linux] 1045 1048 1046 1049 '@rollup/rollup-linux-x64-gnu@4.56.0': 1047 - resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} 1050 + resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz} 1048 1051 cpu: [x64] 1049 1052 os: [linux] 1050 1053 1051 1054 '@rollup/rollup-linux-x64-musl@4.56.0': 1052 - resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} 1055 + resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz} 1053 1056 cpu: [x64] 1054 1057 os: [linux] 1055 1058 1056 1059 '@rollup/rollup-openbsd-x64@4.56.0': 1057 - resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} 1060 + resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==, tarball: https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz} 1058 1061 cpu: [x64] 1059 1062 os: [openbsd] 1060 1063 1061 1064 '@rollup/rollup-openharmony-arm64@4.56.0': 1062 - resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} 1065 + resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==, tarball: https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz} 1063 1066 cpu: [arm64] 1064 1067 os: [openharmony] 1065 1068 1066 1069 '@rollup/rollup-win32-arm64-msvc@4.56.0': 1067 - resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} 1070 + resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz} 1068 1071 cpu: [arm64] 1069 1072 os: [win32] 1070 1073 1071 1074 '@rollup/rollup-win32-ia32-msvc@4.56.0': 1072 - resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} 1075 + resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz} 1073 1076 cpu: [ia32] 1074 1077 os: [win32] 1075 1078 1076 1079 '@rollup/rollup-win32-x64-gnu@4.56.0': 1077 - resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} 1080 + resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz} 1078 1081 cpu: [x64] 1079 1082 os: [win32] 1080 1083 1081 1084 '@rollup/rollup-win32-x64-msvc@4.56.0': 1082 - resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} 1085 + resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz} 1083 1086 cpu: [x64] 1084 1087 os: [win32] 1085 1088 ··· 1152 1155 resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} 1153 1156 1154 1157 '@tailwindcss/oxide-android-arm64@4.1.18': 1155 - resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} 1158 + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz} 1156 1159 engines: {node: '>= 10'} 1157 1160 cpu: [arm64] 1158 1161 os: [android] 1159 1162 1160 1163 '@tailwindcss/oxide-darwin-arm64@4.1.18': 1161 - resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} 1164 + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz} 1162 1165 engines: {node: '>= 10'} 1163 1166 cpu: [arm64] 1164 1167 os: [darwin] 1165 1168 1166 1169 '@tailwindcss/oxide-darwin-x64@4.1.18': 1167 - resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} 1170 + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz} 1168 1171 engines: {node: '>= 10'} 1169 1172 cpu: [x64] 1170 1173 os: [darwin] 1171 1174 1172 1175 '@tailwindcss/oxide-freebsd-x64@4.1.18': 1173 - resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} 1176 + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz} 1174 1177 engines: {node: '>= 10'} 1175 1178 cpu: [x64] 1176 1179 os: [freebsd] 1177 1180 1178 1181 '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 1179 - resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} 1182 + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz} 1180 1183 engines: {node: '>= 10'} 1181 1184 cpu: [arm] 1182 1185 os: [linux] 1183 1186 1184 1187 '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 1185 - resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} 1188 + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz} 1186 1189 engines: {node: '>= 10'} 1187 1190 cpu: [arm64] 1188 1191 os: [linux] 1189 1192 1190 1193 '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 1191 - resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} 1194 + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz} 1192 1195 engines: {node: '>= 10'} 1193 1196 cpu: [arm64] 1194 1197 os: [linux] 1195 1198 1196 1199 '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 1197 - resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} 1200 + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz} 1198 1201 engines: {node: '>= 10'} 1199 1202 cpu: [x64] 1200 1203 os: [linux] 1201 1204 1202 1205 '@tailwindcss/oxide-linux-x64-musl@4.1.18': 1203 - resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} 1206 + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz} 1204 1207 engines: {node: '>= 10'} 1205 1208 cpu: [x64] 1206 1209 os: [linux] 1207 1210 1208 1211 '@tailwindcss/oxide-wasm32-wasi@4.1.18': 1209 - resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} 1212 + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz} 1210 1213 engines: {node: '>=14.0.0'} 1211 1214 cpu: [wasm32] 1212 1215 bundledDependencies: ··· 1218 1221 - tslib 1219 1222 1220 1223 '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 1221 - resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} 1224 + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz} 1222 1225 engines: {node: '>= 10'} 1223 1226 cpu: [arm64] 1224 1227 os: [win32] 1225 1228 1226 1229 '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 1227 - resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} 1230 + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz} 1228 1231 engines: {node: '>= 10'} 1229 1232 cpu: [x64] 1230 1233 os: [win32] ··· 1244 1247 vite: ^5.2.0 || ^6 || ^7 1245 1248 1246 1249 '@takumi-rs/core-darwin-arm64@0.55.4': 1247 - resolution: {integrity: sha512-LH/X/ul19DActLGcBpXnxH3OBEq8qOgPD56hNHAJMbnCRxAO6TDaIh2U7WqPVliSkFk3jZfikbD21SIEpZrp8A==} 1250 + resolution: {integrity: sha512-LH/X/ul19DActLGcBpXnxH3OBEq8qOgPD56hNHAJMbnCRxAO6TDaIh2U7WqPVliSkFk3jZfikbD21SIEpZrp8A==, tarball: https://registry.npmjs.org/@takumi-rs/core-darwin-arm64/-/core-darwin-arm64-0.55.4.tgz} 1248 1251 engines: {node: '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0'} 1249 1252 cpu: [arm64] 1250 1253 os: [darwin] 1251 1254 1252 1255 '@takumi-rs/core-darwin-x64@0.55.4': 1253 - resolution: {integrity: sha512-UW7ovR/D1Qp8n8bJOo6JLqZZUDFWWtGRXEZZUZhzUeMSzJ4k3C6ef/DEc75bUTGeBKqCeypMPcvtkQAjcVwwhw==} 1256 + resolution: {integrity: sha512-UW7ovR/D1Qp8n8bJOo6JLqZZUDFWWtGRXEZZUZhzUeMSzJ4k3C6ef/DEc75bUTGeBKqCeypMPcvtkQAjcVwwhw==, tarball: https://registry.npmjs.org/@takumi-rs/core-darwin-x64/-/core-darwin-x64-0.55.4.tgz} 1254 1257 engines: {node: '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0'} 1255 1258 cpu: [x64] 1256 1259 os: [darwin] 1257 1260 1258 1261 '@takumi-rs/core-linux-arm64-gnu@0.55.4': 1259 - resolution: {integrity: sha512-y1d5yuPapKlmt77TpE+XrtULj7LZ51leBqWSg6qMNKxhpvRqmjI/SYjHmk5YvshnrTkdKmRQiXJiiN5EzOhbmA==} 1262 + resolution: {integrity: sha512-y1d5yuPapKlmt77TpE+XrtULj7LZ51leBqWSg6qMNKxhpvRqmjI/SYjHmk5YvshnrTkdKmRQiXJiiN5EzOhbmA==, tarball: https://registry.npmjs.org/@takumi-rs/core-linux-arm64-gnu/-/core-linux-arm64-gnu-0.55.4.tgz} 1260 1263 engines: {node: '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0'} 1261 1264 cpu: [arm64] 1262 1265 os: [linux] 1263 1266 1264 1267 '@takumi-rs/core-linux-arm64-musl@0.55.4': 1265 - resolution: {integrity: sha512-VRbQqbMeoPlrMmaqPwn30Sw82LYya+o4ru9dqV/7BKExozWj/pX9ahexlJdHsZ6wqmsr+ZxexZivK1mPum9ang==} 1268 + resolution: {integrity: sha512-VRbQqbMeoPlrMmaqPwn30Sw82LYya+o4ru9dqV/7BKExozWj/pX9ahexlJdHsZ6wqmsr+ZxexZivK1mPum9ang==, tarball: https://registry.npmjs.org/@takumi-rs/core-linux-arm64-musl/-/core-linux-arm64-musl-0.55.4.tgz} 1266 1269 engines: {node: '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0'} 1267 1270 cpu: [arm64] 1268 1271 os: [linux] 1269 1272 1270 1273 '@takumi-rs/core-linux-x64-gnu@0.55.4': 1271 - resolution: {integrity: sha512-ecCUtNgOe6mCWKf+SE7cbJXWd6D6TQoCnKZAJAGrJkJLAdy/gBhCFhOyPz8M7q/4uWHUATentqi35KAp+jxBiQ==} 1274 + resolution: {integrity: sha512-ecCUtNgOe6mCWKf+SE7cbJXWd6D6TQoCnKZAJAGrJkJLAdy/gBhCFhOyPz8M7q/4uWHUATentqi35KAp+jxBiQ==, tarball: https://registry.npmjs.org/@takumi-rs/core-linux-x64-gnu/-/core-linux-x64-gnu-0.55.4.tgz} 1272 1275 engines: {node: '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0'} 1273 1276 cpu: [x64] 1274 1277 os: [linux] 1275 1278 1276 1279 '@takumi-rs/core-linux-x64-musl@0.55.4': 1277 - resolution: {integrity: sha512-YBM2zPrGE/1sfHoFZvOsCvCuK9PfaxzePN/GnnlaAvpvgeRHiAU4PJkLGDpjMFfsWUAEdjly/b0HSAjVQ7NL6Q==} 1280 + resolution: {integrity: sha512-YBM2zPrGE/1sfHoFZvOsCvCuK9PfaxzePN/GnnlaAvpvgeRHiAU4PJkLGDpjMFfsWUAEdjly/b0HSAjVQ7NL6Q==, tarball: https://registry.npmjs.org/@takumi-rs/core-linux-x64-musl/-/core-linux-x64-musl-0.55.4.tgz} 1278 1281 engines: {node: '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0'} 1279 1282 cpu: [x64] 1280 1283 os: [linux] 1281 1284 1282 1285 '@takumi-rs/core-win32-arm64-msvc@0.55.4': 1283 - resolution: {integrity: sha512-VcgLCWnmyWuhwLv0Tpob8Hv5IFPreFVykoHruPGwXDVVoUcCo+lQ8oCO5EYTB8B/tBAXl2S0xUL0nMDbyLzMxQ==} 1286 + resolution: {integrity: sha512-VcgLCWnmyWuhwLv0Tpob8Hv5IFPreFVykoHruPGwXDVVoUcCo+lQ8oCO5EYTB8B/tBAXl2S0xUL0nMDbyLzMxQ==, tarball: https://registry.npmjs.org/@takumi-rs/core-win32-arm64-msvc/-/core-win32-arm64-msvc-0.55.4.tgz} 1284 1287 engines: {node: '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0'} 1285 1288 cpu: [arm64] 1286 1289 os: [win32] 1287 1290 1288 1291 '@takumi-rs/core-win32-x64-msvc@0.55.4': 1289 - resolution: {integrity: sha512-ta9g1gUybS2V4mHaccJHcMeBb+w1P6pgZuqHzLoQzBIEK9a/KncHPfnR48cz4sGfg4atorfSa6UBffa2FqijyQ==} 1292 + resolution: {integrity: sha512-ta9g1gUybS2V4mHaccJHcMeBb+w1P6pgZuqHzLoQzBIEK9a/KncHPfnR48cz4sGfg4atorfSa6UBffa2FqijyQ==, tarball: https://registry.npmjs.org/@takumi-rs/core-win32-x64-msvc/-/core-win32-x64-msvc-0.55.4.tgz} 1290 1293 engines: {node: '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0'} 1291 1294 cpu: [x64] 1292 1295 os: [win32] ··· 1912 1915 resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1913 1916 1914 1917 fsevents@2.3.3: 1915 - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1918 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} 1916 1919 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1917 1920 os: [darwin] 1918 1921 ··· 2048 2051 engines: {node: '>= 0.8.0'} 2049 2052 2050 2053 lightningcss-android-arm64@1.30.2: 2051 - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} 2054 + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==, tarball: https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz} 2052 2055 engines: {node: '>= 12.0.0'} 2053 2056 cpu: [arm64] 2054 2057 os: [android] 2055 2058 2056 2059 lightningcss-darwin-arm64@1.30.2: 2057 - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} 2060 + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==, tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz} 2058 2061 engines: {node: '>= 12.0.0'} 2059 2062 cpu: [arm64] 2060 2063 os: [darwin] 2061 2064 2062 2065 lightningcss-darwin-x64@1.30.2: 2063 - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} 2066 + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==, tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz} 2064 2067 engines: {node: '>= 12.0.0'} 2065 2068 cpu: [x64] 2066 2069 os: [darwin] 2067 2070 2068 2071 lightningcss-freebsd-x64@1.30.2: 2069 - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} 2072 + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==, tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz} 2070 2073 engines: {node: '>= 12.0.0'} 2071 2074 cpu: [x64] 2072 2075 os: [freebsd] 2073 2076 2074 2077 lightningcss-linux-arm-gnueabihf@1.30.2: 2075 - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} 2078 + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==, tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz} 2076 2079 engines: {node: '>= 12.0.0'} 2077 2080 cpu: [arm] 2078 2081 os: [linux] 2079 2082 2080 2083 lightningcss-linux-arm64-gnu@1.30.2: 2081 - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} 2084 + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz} 2082 2085 engines: {node: '>= 12.0.0'} 2083 2086 cpu: [arm64] 2084 2087 os: [linux] 2085 2088 2086 2089 lightningcss-linux-arm64-musl@1.30.2: 2087 - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} 2090 + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz} 2088 2091 engines: {node: '>= 12.0.0'} 2089 2092 cpu: [arm64] 2090 2093 os: [linux] 2091 2094 2092 2095 lightningcss-linux-x64-gnu@1.30.2: 2093 - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} 2096 + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz} 2094 2097 engines: {node: '>= 12.0.0'} 2095 2098 cpu: [x64] 2096 2099 os: [linux] 2097 2100 2098 2101 lightningcss-linux-x64-musl@1.30.2: 2099 - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} 2102 + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz} 2100 2103 engines: {node: '>= 12.0.0'} 2101 2104 cpu: [x64] 2102 2105 os: [linux] 2103 2106 2104 2107 lightningcss-win32-arm64-msvc@1.30.2: 2105 - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} 2108 + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==, tarball: https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz} 2106 2109 engines: {node: '>= 12.0.0'} 2107 2110 cpu: [arm64] 2108 2111 os: [win32] 2109 2112 2110 2113 lightningcss-win32-x64-msvc@1.30.2: 2111 - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} 2114 + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==, tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz} 2112 2115 engines: {node: '>= 12.0.0'} 2113 2116 cpu: [x64] 2114 2117 os: [win32] ··· 2290 2293 pbf@4.0.1: 2291 2294 resolution: {integrity: sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==} 2292 2295 hasBin: true 2296 + 2297 + perfect-freehand@1.2.2: 2298 + resolution: {integrity: sha512-eh31l019WICQ03pkF3FSzHxB8n07ItqIQ++G5UV8JX0zVOXzgTGCqnRR0jJ2h9U8/2uW4W4mtGJELt9kEV0CFQ==, tarball: https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.2.tgz} 2293 2299 2294 2300 picocolors@1.1.1: 2295 2301 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} ··· 4874 4880 pbf@4.0.1: 4875 4881 dependencies: 4876 4882 resolve-protobuf-schema: 2.1.0 4883 + 4884 + perfect-freehand@1.2.2: {} 4877 4885 4878 4886 picocolors@1.1.1: {} 4879 4887
+3 -1
src/lib/cards/BaseCard/BaseCard.svelte
··· 17 17 controls?: Snippet<[]>; 18 18 isEditing?: boolean; 19 19 showOutline?: boolean; 20 + locked?: boolean; 20 21 } & WithElementRef<HTMLAttributes<HTMLDivElement>>; 21 22 22 23 let { ··· 26 27 isEditing = false, 27 28 controls, 28 29 showOutline, 30 + locked = false, 29 31 class: className, 30 32 ...rest 31 33 }: BaseCardProps = $props(); ··· 37 39 id={item.id} 38 40 data-flip-id={item.id} 39 41 bind:this={ref} 40 - draggable={isEditing} 42 + draggable={isEditing && !locked} 41 43 class={[ 42 44 'card group/card selection:bg-accent-600/50 focus-within:outline-accent-500 @container/card absolute isolate z-0 rounded-3xl outline-offset-2 transition-all duration-200 focus-within:outline-2', 43 45 color ? (colors[color] ?? colors.accent) : colors.base,
+4 -1
src/lib/cards/BaseCard/BaseEditingCard.svelte
··· 173 173 isEditing={true} 174 174 bind:ref 175 175 showOutline={isResizing} 176 + locked={item.cardData?.locked} 176 177 class="scale-100 opacity-100 starting:scale-0 starting:opacity-0" 177 178 {...rest} 178 179 > 179 - <div class="absolute inset-0 cursor-grab"></div> 180 + {#if !item.cardData?.locked} 181 + <div class="absolute inset-0 cursor-grab"></div> 182 + {/if} 180 183 {@render children?.()} 181 184 182 185 {#if cardDef.canHaveLabel}
+54
src/lib/cards/DrawCard/DrawCard.svelte
··· 1 + <script lang="ts"> 2 + import { getStroke } from 'perfect-freehand'; 3 + import type { ContentComponentProps } from '../types'; 4 + 5 + let { item = $bindable(), isEditing }: ContentComponentProps = $props(); 6 + 7 + type Stroke = { 8 + points: [number, number, number][]; 9 + size?: number; 10 + }; 11 + 12 + function getStrokeOptions(size: number) { 13 + return { size, thinning: 0.5, smoothing: 0.5, streamline: 0.5 }; 14 + } 15 + 16 + function getSvgPathFromStroke(stroke: number[][]): string { 17 + if (!stroke.length) return ''; 18 + 19 + const d = stroke.reduce( 20 + (acc, [x0, y0], i, arr) => { 21 + const [x1, y1] = arr[(i + 1) % arr.length]; 22 + acc.push(x0, y0, (x0 + x1) / 2, (y0 + y1) / 2); 23 + return acc; 24 + }, 25 + ['M', ...stroke[0], 'Q'] as (string | number)[] 26 + ); 27 + 28 + d.push('Z'); 29 + return d.join(' '); 30 + } 31 + 32 + // Parse strokes from JSON string stored in cardData 33 + function parseStrokes(): Stroke[] { 34 + const strokesJson = item.cardData.strokesJson as string | undefined; 35 + if (!strokesJson) return []; 36 + try { 37 + return JSON.parse(strokesJson) as Stroke[]; 38 + } catch { 39 + return []; 40 + } 41 + } 42 + 43 + let strokes = $derived(parseStrokes()); 44 + let viewBox = $derived((item.cardData.viewBox as string) || '0 0 100 100'); 45 + </script> 46 + 47 + <svg class="absolute inset-0 h-full w-full" {viewBox} preserveAspectRatio="xMidYMid meet"> 48 + {#each strokes as stroke, index (index)} 49 + {@const pathData = getSvgPathFromStroke( 50 + getStroke(stroke.points, getStrokeOptions(stroke.size ?? 3)) 51 + )} 52 + <path d={pathData} class="accent:fill-white fill-black dark:fill-white" /> 53 + {/each} 54 + </svg>
+261
src/lib/cards/DrawCard/EditingDrawCard.svelte
··· 1 + <script lang="ts"> 2 + import { getStroke } from 'perfect-freehand'; 3 + import type { ContentComponentProps } from '../types'; 4 + 5 + let { item = $bindable(), isEditing }: ContentComponentProps = $props(); 6 + 7 + type Stroke = { 8 + points: [number, number, number][]; 9 + size?: number; 10 + }; 11 + 12 + let currentStroke = $state<[number, number, number][]>([]); 13 + let isDrawing = $state(false); 14 + let svgElement: SVGSVGElement | undefined = $state(); 15 + 16 + const strokeSizes = [4, 8, 16] as const; 17 + let strokeWidth = $derived((item.cardData.strokeWidth as number) ?? 1); 18 + 19 + function getStrokeOptions(size: number) { 20 + return { size, thinning: 0.5, smoothing: 0.5, streamline: 0.5 }; 21 + } 22 + 23 + let isLocked = $derived(item.cardData?.locked ?? true); 24 + 25 + function toggleLock() { 26 + item.cardData.locked = !item.cardData.locked; 27 + } 28 + 29 + function setStrokeWidth(index: number) { 30 + item.cardData.strokeWidth = index; 31 + } 32 + 33 + function getSvgPathFromStroke(stroke: number[][]): string { 34 + if (!stroke.length) return ''; 35 + 36 + const d = stroke.reduce( 37 + (acc, [x0, y0], i, arr) => { 38 + const [x1, y1] = arr[(i + 1) % arr.length]; 39 + acc.push(x0, y0, (x0 + x1) / 2, (y0 + y1) / 2); 40 + return acc; 41 + }, 42 + ['M', ...stroke[0], 'Q'] as (string | number)[] 43 + ); 44 + 45 + d.push('Z'); 46 + return d.join(' '); 47 + } 48 + 49 + // Parse strokes from JSON string stored in cardData 50 + function parseStrokes(): Stroke[] { 51 + const strokesJson = item.cardData.strokesJson as string | undefined; 52 + if (!strokesJson) return []; 53 + try { 54 + return JSON.parse(strokesJson) as Stroke[]; 55 + } catch { 56 + return []; 57 + } 58 + } 59 + 60 + // Save strokes as JSON string to cardData 61 + function saveStrokes(strokes: Stroke[]) { 62 + item.cardData.strokesJson = JSON.stringify(strokes); 63 + } 64 + 65 + let strokes = $derived(parseStrokes()); 66 + let viewBox = $derived((item.cardData.viewBox as string) || '0 0 100 100'); 67 + 68 + function getPointerPosition(event: PointerEvent): [number, number, number] { 69 + if (!svgElement) return [0, 0, 0.5]; 70 + const rect = svgElement.getBoundingClientRect(); 71 + 72 + // Get the current viewBox dimensions 73 + const [, , vbWidth, vbHeight] = (item.cardData.viewBox as string)?.split(' ').map(Number) || [ 74 + 0, 0, 100, 100 75 + ]; 76 + 77 + // Calculate the scale and offset for xMidYMid meet 78 + const scaleX = rect.width / vbWidth; 79 + const scaleY = rect.height / vbHeight; 80 + const scale = Math.min(scaleX, scaleY); // "meet" uses the smaller scale 81 + 82 + // Calculate the actual rendered size of the viewBox content 83 + const renderedWidth = vbWidth * scale; 84 + const renderedHeight = vbHeight * scale; 85 + 86 + // Calculate centering offsets (xMid, yMid) 87 + const offsetX = (rect.width - renderedWidth) / 2; 88 + const offsetY = (rect.height - renderedHeight) / 2; 89 + 90 + // Map screen coordinates to viewBox coordinates, accounting for centering 91 + const x = ((event.clientX - rect.left - offsetX) / renderedWidth) * vbWidth; 92 + const y = ((event.clientY - rect.top - offsetY) / renderedHeight) * vbHeight; 93 + const pressure = event.pressure || 0.5; 94 + return [x, y, pressure]; 95 + } 96 + 97 + function initViewBox() { 98 + if (!svgElement || item.cardData.viewBox) return; 99 + const rect = svgElement.getBoundingClientRect(); 100 + item.cardData.viewBox = `0 0 ${Math.round(rect.width)} ${Math.round(rect.height)}`; 101 + } 102 + 103 + function handlePointerDown(event: PointerEvent) { 104 + isDrawing = true; 105 + initViewBox(); 106 + const point = getPointerPosition(event); 107 + currentStroke = [point]; 108 + (event.target as Element)?.setPointerCapture?.(event.pointerId); 109 + } 110 + 111 + function handlePointerMove(event: PointerEvent) { 112 + if (!isDrawing) return; 113 + const point = getPointerPosition(event); 114 + currentStroke = [...currentStroke, point]; 115 + } 116 + 117 + function handlePointerUp(event: PointerEvent) { 118 + if (!isDrawing) return; 119 + isDrawing = false; 120 + if (currentStroke.length > 0) { 121 + const newStroke: Stroke = { 122 + points: currentStroke, 123 + size: strokeSizes[strokeWidth] 124 + }; 125 + saveStrokes([...strokes, newStroke]); 126 + } 127 + currentStroke = []; 128 + (event.target as Element)?.releasePointerCapture?.(event.pointerId); 129 + } 130 + 131 + function clearStrokes() { 132 + saveStrokes([]); 133 + item.cardData.viewBox = ''; 134 + } 135 + </script> 136 + 137 + <div class={['absolute inset-0', isLocked ? 'touch-none' : '']}> 138 + <svg 139 + bind:this={svgElement} 140 + class={[ 141 + 'absolute inset-0 h-full w-full', 142 + isLocked ? 'pointer-events-auto cursor-crosshair' : 'pointer-events-none' 143 + ]} 144 + {viewBox} 145 + preserveAspectRatio="xMidYMid meet" 146 + onpointerdown={isLocked ? handlePointerDown : undefined} 147 + onpointermove={isLocked ? handlePointerMove : undefined} 148 + onpointerup={isLocked ? handlePointerUp : undefined} 149 + onpointerleave={isLocked ? handlePointerUp : undefined} 150 + > 151 + {#each strokes as stroke, index (index)} 152 + {@const pathData = getSvgPathFromStroke( 153 + getStroke(stroke.points, getStrokeOptions(stroke.size ?? 3)) 154 + )} 155 + <path d={pathData} class="fill-black accent:fill-white dark:fill-white" /> 156 + {/each} 157 + {#if currentStroke.length > 0} 158 + {@const pathData = getSvgPathFromStroke( 159 + getStroke(currentStroke, getStrokeOptions(strokeSizes[strokeWidth])) 160 + )} 161 + <path d={pathData} class="fill-black accent:fill-white dark:fill-white" /> 162 + {/if} 163 + </svg> 164 + 165 + {#if !isLocked && strokes.length === 0} 166 + <div 167 + class="text-base-500 pointer-events-none absolute inset-0 flex items-center justify-center text-sm" 168 + > 169 + Lock to draw 170 + </div> 171 + {/if} 172 + 173 + <div class="absolute top-2 right-2 flex gap-1"> 174 + {#if isLocked} 175 + <div class="bg-base-100/80 dark:bg-base-800/80 flex items-center gap-0.5 rounded-full px-1"> 176 + {#each strokeSizes as size, index (size)} 177 + <button 178 + type="button" 179 + class={[ 180 + 'flex items-center justify-center rounded-full p-1.5', 181 + strokeWidth === index ? 'bg-accent-500 text-white' : '' 182 + ]} 183 + onclick={() => setStrokeWidth(index)} 184 + aria-label={`Stroke size ${size}`} 185 + > 186 + <div 187 + class={[ 188 + 'rounded-full bg-current', 189 + index === 0 ? 'h-1.5 w-1.5' : index === 1 ? 'h-2.5 w-2.5' : 'h-3.5 w-3.5' 190 + ]} 191 + ></div> 192 + </button> 193 + {/each} 194 + </div> 195 + 196 + <button 197 + type="button" 198 + class="bg-base-100/80 dark:bg-base-800/80 rounded-full p-1.5" 199 + onclick={clearStrokes} 200 + aria-label="Clear drawing" 201 + > 202 + <svg 203 + xmlns="http://www.w3.org/2000/svg" 204 + class="h-4 w-4" 205 + viewBox="0 0 24 24" 206 + fill="none" 207 + stroke="currentColor" 208 + stroke-width="2" 209 + stroke-linecap="round" 210 + stroke-linejoin="round" 211 + > 212 + <polyline points="3 6 5 6 21 6"></polyline> 213 + <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" 214 + ></path> 215 + </svg> 216 + </button> 217 + {/if} 218 + 219 + <button 220 + type="button" 221 + class={[ 222 + 'rounded-full p-1.5', 223 + isLocked 224 + ? 'bg-accent-500 text-white' 225 + : 'bg-base-100/80 text-base-900 dark:bg-base-800/80 dark:text-base-50' 226 + ]} 227 + onclick={toggleLock} 228 + aria-label={isLocked ? 'Unlock card' : 'Lock card to draw'} 229 + > 230 + {#if isLocked} 231 + <svg 232 + xmlns="http://www.w3.org/2000/svg" 233 + class="h-4 w-4" 234 + viewBox="0 0 24 24" 235 + fill="none" 236 + stroke="currentColor" 237 + stroke-width="2" 238 + stroke-linecap="round" 239 + stroke-linejoin="round" 240 + > 241 + <rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect> 242 + <path d="M7 11V7a5 5 0 0 1 10 0v4"></path> 243 + </svg> 244 + {:else} 245 + <svg 246 + xmlns="http://www.w3.org/2000/svg" 247 + class="h-4 w-4" 248 + viewBox="0 0 24 24" 249 + fill="none" 250 + stroke="currentColor" 251 + stroke-width="2" 252 + stroke-linecap="round" 253 + stroke-linejoin="round" 254 + > 255 + <rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect> 256 + <path d="M7 11V7a5 5 0 0 1 9.9-1"></path> 257 + </svg> 258 + {/if} 259 + </button> 260 + </div> 261 + </div>
+27
src/lib/cards/DrawCard/index.ts
··· 1 + import type { CardDefinition } from '../types'; 2 + import DrawCard from './DrawCard.svelte'; 3 + import EditingDrawCard from './EditingDrawCard.svelte'; 4 + 5 + export const DrawCardDefinition = { 6 + type: 'draw', 7 + name: 'Drawing', 8 + contentComponent: DrawCard, 9 + editingContentComponent: EditingDrawCard, 10 + sidebarButtonText: 'Draw', 11 + defaultColor: 'base', 12 + allowSetColor: true, 13 + minW: 2, 14 + minH: 2, 15 + createNew: (item) => { 16 + item.w = 4; 17 + item.h = 4; 18 + item.mobileW = 4; 19 + item.mobileH = 4; 20 + item.cardData = { 21 + strokesJson: '[]', 22 + viewBox: '', 23 + strokeWidth: 1, 24 + locked: true 25 + }; 26 + } 27 + } as CardDefinition & { type: 'draw' };
+3 -1
src/lib/cards/index.ts
··· 27 27 import { StatusphereCardDefinition } from './StatusphereCard'; 28 28 import { EventCardDefinition } from './EventCard'; 29 29 import { VCardCardDefinition } from './VCardCard'; 30 + import { DrawCardDefinition } from './DrawCard'; 30 31 31 32 export const AllCardDefinitions = [ 32 33 ImageCardDefinition, ··· 56 57 StandardSiteDocumentListCardDefinition, 57 58 StatusphereCardDefinition, 58 59 EventCardDefinition, 59 - VCardCardDefinition 60 + VCardCardDefinition, 61 + DrawCardDefinition 60 62 ] as const; 61 63 62 64 export const CardDefinitionsByType = AllCardDefinitions.reduce(
+1 -2
src/lib/components/MarkdownTextEditor.svelte
··· 108 108 109 109 editorProps: { 110 110 attributes: { 111 - class: 112 - 'outline-none w-full text-base-600 dark:text-base-400 prose dark:prose-invert prose-a:text-accent-500 prose-a:no-underline' 111 + class: 'outline-none w-full' 113 112 }, 114 113 handleDOMEvents: { drop: () => false } 115 114 }
+10 -9
src/lib/helper.ts
··· 421 421 ) { 422 422 const promises = []; 423 423 // find all cards that have been updated (where items differ from originalItems) 424 - for (let item of currentItems) { 424 + for (const item of currentItems) { 425 425 const originalItem = data.cards.find((i) => cardsEqual(i, item)); 426 426 427 427 if (!originalItem) { 428 - console.log('updated or new item', item); 429 - item.updatedAt = new Date().toISOString(); 428 + let parsedItem = JSON.parse(JSON.stringify(item)); 429 + console.log('updated or new item', parsedItem); 430 + parsedItem.updatedAt = new Date().toISOString(); 430 431 // run optional upload function for this card type 431 - const cardDef = CardDefinitionsByType[item.cardType]; 432 + const cardDef = CardDefinitionsByType[parsedItem.cardType]; 432 433 433 434 if (cardDef?.upload) { 434 - item = await cardDef?.upload(item); 435 + parsedItem = await cardDef?.upload(parsedItem); 435 436 } 436 437 437 - item.page = data.page; 438 - item.version = 2; 438 + parsedItem.page = data.page; 439 + parsedItem.version = 2; 439 440 440 441 promises.push( 441 442 putRecord({ 442 443 collection: 'app.blento.card', 443 - rkey: item.id, 444 - record: item 444 + rkey: parsedItem.id, 445 + record: parsedItem 445 446 }) 446 447 ); 447 448 }
+2 -2
src/lib/website/EditableProfile.svelte
··· 102 102 > 103 103 {#if getAvatarUrl()} 104 104 <img 105 - class="border-base-400 shrink-0 dark:border-base-800 size-full rounded-full border object-cover" 105 + class="border-base-400 dark:border-base-800 size-full shrink-0 rounded-full border object-cover" 106 106 src={getAvatarUrl()} 107 107 alt="" 108 108 /> ··· 164 164 bind:contentDict={data.publication} 165 165 key="description" 166 166 placeholder="Something about me..." 167 - class="" 167 + class="text-base-600 dark:text-base-400 prose dark:prose-invert prose-a:text-accent-500 prose-a:no-underline" 168 168 /> 169 169 {/if} 170 170 </div>
+13 -14
src/lib/website/EditableWebsite.svelte
··· 142 142 await savePage(data, items, publication); 143 143 144 144 publication = JSON.stringify(data.publication); 145 - } catch { 145 + } catch (error) { 146 + console.log(error); 146 147 toast.error('Error saving page!'); 147 148 } finally { 148 149 isSaving = false; ··· 755 756 </div> 756 757 </Sidebar> 757 758 758 - {#if user.isLoggedIn} 759 - <EditBar 760 - {data} 761 - bind:linkValue 762 - bind:isSaving 763 - bind:showingMobileView 764 - {newCard} 765 - {addLink} 766 - {save} 767 - {handleImageInputChange} 768 - {handleVideoInputChange} 769 - /> 770 - {/if} 759 + <EditBar 760 + {data} 761 + bind:linkValue 762 + bind:isSaving 763 + bind:showingMobileView 764 + {newCard} 765 + {addLink} 766 + {save} 767 + {handleImageInputChange} 768 + {handleVideoInputChange} 769 + /> 771 770 772 771 <Toaster /> 773 772 </Context>
+2 -2
src/lib/website/Profile.svelte
··· 54 54 {#if data.publication?.icon || data.profile.avatar} 55 55 <img 56 56 class={[ 57 - 'border-base-400 shrink-0 dark:border-base-800 size-32 rounded-full border object-cover', 57 + 'border-base-400 dark:border-base-800 size-32 shrink-0 rounded-full border object-cover', 58 58 profilePosition === 'side' && '@5xl/wrapper:size-44' 59 59 ]} 60 60 src={getImage(data.publication, data.did, 'icon') || data.profile.avatar} ··· 63 63 {:else} 64 64 <div 65 65 class={[ 66 - 'bg-base-300 dark:bg-base-700 shrink-0 size-32 rounded-full', 66 + 'bg-base-300 dark:bg-base-700 size-32 shrink-0 rounded-full', 67 67 profilePosition === 'side' && '@5xl/wrapper:size-44' 68 68 ]} 69 69 ></div>