diff --git a/demo/app.jsx b/demo/app.jsx index ae1f144..dc5dbae 100644 --- a/demo/app.jsx +++ b/demo/app.jsx @@ -1,22 +1,21 @@ import React, { useCallback, useMemo, useState } from "react"; import { createRoot } from "react-dom/client"; -import * as box from "./sketches/box"; -import * as plane from "./sketches/plane"; -import * as torus from "./sketches/torus"; import { ReactP5Wrapper } from "../src/main.tsx"; import "./demo.css"; +import { sketch as box } from "./sketches/box"; +import { sketch as plane } from "./sketches/plane"; +import { sketch as torus } from "./sketches/torus"; function App() { - const sketches = useMemo( - () => [box.sketch, torus.sketch, plane.sketch], - [box, torus, plane] - ); + const sketches = useMemo(() => [box, torus, plane], [box, torus, plane]); + const [state, setState] = useState({ rotation: 160, - sketch: box.sketch, + sketch: box, unmount: false }); + const onChangeSketch = useCallback(() => { setState(state => { const currentSketchIndex = sketches.findIndex(sketch => { @@ -32,9 +31,11 @@ function App() { return { ...state, sketch }; }); }, [sketches]); + const onMountStateChange = useCallback(() => { setState(state => ({ ...state, unmount: !state.unmount })); }, []); + const onRotationChange = useCallback( event => { setState(state => ({ diff --git a/demo/sketches/capture.jsx b/demo/sketches/capture.jsx new file mode 100644 index 0000000..491b25c --- /dev/null +++ b/demo/sketches/capture.jsx @@ -0,0 +1,30 @@ +import "p5.capture"; + +export function sketch(p5) { + p5.setup = () => { + p5.createCanvas(300, 300); + p5.capture.initialize(p5); + }; + + p5.draw = () => { + if (p5.frameCount === 1) { + const capture = p5.capture.getInstance(); + capture.start({ + format: "gif", + duration: 100 + }); + } + }; + + p5.keyPressed = () => { + if (key === "c") { + const capture = p5.capture.getInstance(); + + if (capture.state === "idle") { + capture.start(); + } else { + capture.stop(); + } + } + }; +} diff --git a/package.json b/package.json index 896c32b..8a56d4a 100644 --- a/package.json +++ b/package.json @@ -110,6 +110,7 @@ "jiti": "^2.4.2", "js": "^0.1.0", "jsdom": "^26.1.0", + "p5.capture": "^1.6.0", "prettier": "^3.6.2", "react": "19.1.0", "react-dom": "19.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26d7bfd..384913e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,7 +20,7 @@ importers: devDependencies: '@babel/eslint-plugin': specifier: ^7.27.1 - version: 7.27.1(@babel/eslint-parser@7.27.1(@babel/core@7.27.4)(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)) + version: 7.27.1(@babel/eslint-parser@7.27.1(@babel/core@7.28.0)(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)) '@eslint/compat': specifier: ^1.3.1 version: 1.3.1(eslint@9.30.1(jiti@2.4.2)) @@ -87,6 +87,9 @@ importers: jsdom: specifier: ^26.1.0 version: 26.1.0 + p5.capture: + specifier: ^1.6.0 + version: 1.6.0 prettier: specifier: ^3.6.2 version: 3.6.2 @@ -138,10 +141,6 @@ packages: resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.4': - resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} - engines: {node: '>=6.9.0'} - '@babel/core@7.28.0': resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} engines: {node: '>=6.9.0'} @@ -160,10 +159,6 @@ packages: '@babel/eslint-parser': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - '@babel/generator@7.27.3': - resolution: {integrity: sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.28.0': resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} @@ -230,19 +225,10 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.4': - resolution: {integrity: sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.4': - resolution: {integrity: sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.0': resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} engines: {node: '>=6.0.0'} @@ -267,10 +253,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.27.4': - resolution: {integrity: sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.6': resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} @@ -279,18 +261,10 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.4': - resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.0': resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.3': - resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} - engines: {node: '>=6.9.0'} - '@babel/types@7.28.0': resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} engines: {node: '>=6.9.0'} @@ -636,8 +610,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.19': resolution: {integrity: sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==} - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + '@rollup/pluginutils@5.2.0': + resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -977,20 +951,14 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@volar/language-core@2.4.14': - resolution: {integrity: sha512-X6beusV0DvuVseaOEy7GoagS4rYHgDHnTrdOj5jeUb49fW5ceQyP9Ej5rBhqgz2wJggl+2fDbbojq1XKaxDi6w==} - '@volar/language-core@2.4.17': resolution: {integrity: sha512-chmRZMbKmcGpKMoO7Reb70uiLrzo0KWC2CkFttKUuKvrE+VYgi+fL9vWMJ07Fv5ulX0V1TAyyacN9q3nc5/ecA==} - '@volar/source-map@2.4.14': - resolution: {integrity: sha512-5TeKKMh7Sfxo8021cJfmBzcjfY1SsXsPMMjMvjY7ivesdnybqqS+GxGAoXHAOUawQTwtdUxgP65Im+dEmvWtYQ==} - '@volar/source-map@2.4.17': resolution: {integrity: sha512-QDybtQyO3Ms/NjFqNHTC5tbDN2oK5VH7ZaKrcubtfHBDj63n2pizHC3wlMQ+iT55kQXZUUAbmBX5L1C8CHFeBw==} - '@volar/typescript@2.4.14': - resolution: {integrity: sha512-p8Z6f/bZM3/HyCdRNFZOEEzts51uV8WHeN8Tnfnm2EBv6FDB2TQLzfVx7aJvnl8ofKAOnS64B2O8bImBFaauRw==} + '@volar/typescript@2.4.17': + resolution: {integrity: sha512-3paEFNh4P5DkgNUB2YkTRrfUekN4brAXxd3Ow1syMqdIPtCZHbUy4AW99S5RO/7mzyTWPMdDSo3mqTpB/LPObQ==} '@vue/compiler-core@3.5.17': resolution: {integrity: sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==} @@ -1480,6 +1448,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + expect-type@1.2.1: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} @@ -1515,6 +1487,9 @@ packages: picomatch: optional: true + fflate@0.7.4: + resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -1598,6 +1573,9 @@ packages: engines: {node: '>=10'} hasBin: true + gif.js@0.2.0: + resolution: {integrity: sha512-bYxCoT8OZKmbxY8RN4qDiYuj4nrQDTzgLRcFVovyona1PTWNePzI4nzOmotnlOFIzTk/ZxAHtv+TfVLiBWj/hw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1615,10 +1593,6 @@ packages: engines: {node: 20 || >=22} hasBin: true - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1641,6 +1615,9 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + h264-mp4-encoder@1.0.12: + resolution: {integrity: sha512-xih3J+Go0o1RqGjhOt6TwXLWWGqLONRPyS8yoMu/RoS/S8WyEv4HuHp1KBsDDl8srZQ3gw9f95JYkCSjCuZbHQ==} + has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -2143,6 +2120,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + p5.capture@1.6.0: + resolution: {integrity: sha512-GoYUW6hUyvX60rxowgWGHlqDEa1HsG68TMyhpSeEc3hUIyU95JXoOKRfbfGjDeeFsCV8QVIvsTKFSUNG94tATw==} + p5@1.11.8: resolution: {integrity: sha512-owi2+HDP/KQvzc3mAagp74cc6yPalWejMjjDfrIqjsheo6CZ16WjbPRDKjgpuIH9F5eAPVTuTSbLsTawl2Djiw==} @@ -2714,6 +2694,9 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webm-writer@1.0.0: + resolution: {integrity: sha512-xafP4mzUqht03HBXP0Ov2YGsxfD08uncad9fQeshYwQXrcP6Z/4uxd1IUaGKqKigFPAgaD9xb6JEKA8SXLQMLA==} + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -2793,14 +2776,14 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zod-validation-error@3.4.1: - resolution: {integrity: sha512-1KP64yqDPQ3rupxNv7oXhf7KdhHHgaqbKuspVoiN93TT0xrBjql+Svjkdjq/Qh/7GSMmgQs3AfvBT0heE35thw==} + zod-validation-error@3.5.2: + resolution: {integrity: sha512-mdi7YOLtram5dzJ5aDtm1AG9+mxRma1iaMrZdYIpFO7epdKBUwLHIxTF8CPDeCQ828zAXYtizrKlEJAtzgfgrw==} engines: {node: '>=18.0.0'} peerDependencies: - zod: ^3.24.4 + zod: ^3.25.0 - zod@3.25.46: - resolution: {integrity: sha512-IqRxcHEIjqLd4LNS/zKffB3Jzg3NwqJxQQ0Ns7pdrvgGkwQsEBdEQcOHaBVqvvZArShRzI39+aMST3FBGmTrLQ==} + zod@3.25.74: + resolution: {integrity: sha512-J8poo92VuhKjNknViHRAIuuN6li/EwFbAC8OedzI8uxpEPGiXHGQu9wemIAioIpqgfB4SySaJhdk0mH5Y4ICBg==} snapshots: @@ -2827,26 +2810,6 @@ snapshots: '@babel/compat-data@7.28.0': {} - '@babel/core@7.27.4': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helpers': 7.27.4 - '@babel/parser': 7.27.4 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 - convert-source-map: 2.0.0 - debug: 4.4.1 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.28.0': dependencies: '@ampproject/remapping': 2.3.0 @@ -2867,28 +2830,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.27.1(@babel/core@7.27.4)(eslint@9.30.1(jiti@2.4.2))': + '@babel/eslint-parser@7.27.1(@babel/core@7.28.0)(eslint@9.30.1(jiti@2.4.2))': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 9.30.1(jiti@2.4.2) eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/eslint-plugin@7.27.1(@babel/eslint-parser@7.27.1(@babel/core@7.27.4)(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))': + '@babel/eslint-plugin@7.27.1(@babel/eslint-parser@7.27.1(@babel/core@7.28.0)(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))': dependencies: - '@babel/eslint-parser': 7.27.1(@babel/core@7.27.4)(eslint@9.30.1(jiti@2.4.2)) + '@babel/eslint-parser': 7.27.1(@babel/core@7.28.0)(eslint@9.30.1(jiti@2.4.2)) eslint: 9.30.1(jiti@2.4.2) eslint-rule-composer: 0.3.0 - '@babel/generator@7.27.3': - dependencies: - '@babel/parser': 7.27.4 - '@babel/types': 7.27.3 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - jsesc: 3.1.0 - '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 @@ -2909,15 +2864,15 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.28.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2938,21 +2893,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -2962,12 +2908,12 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -2984,28 +2930,19 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.27.4': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.3 - '@babel/helpers@7.27.6': dependencies: '@babel/template': 7.27.2 '@babel/types': 7.28.0 - '@babel/parser@7.27.4': - dependencies: - '@babel/types': 7.27.3 - '@babel/parser@7.28.0': dependencies: '@babel/types': 7.28.0 - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.27.4)': + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/core': 7.28.0 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -3020,8 +2957,6 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.27.4': {} - '@babel/runtime@7.27.6': {} '@babel/template@7.27.2': @@ -3030,18 +2965,6 @@ snapshots: '@babel/parser': 7.28.0 '@babel/types': 7.28.0 - '@babel/traverse@7.27.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.3 - '@babel/parser': 7.27.4 - '@babel/template': 7.27.2 - '@babel/types': 7.27.3 - debug: 4.4.1 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.28.0': dependencies: '@babel/code-frame': 7.27.1 @@ -3054,11 +2977,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.27.3': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.0': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -3340,7 +3258,7 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.19': {} - '@rollup/pluginutils@5.1.4(rollup@4.44.2)': + '@rollup/pluginutils@5.2.0(rollup@4.44.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 @@ -3467,7 +3385,7 @@ snapshots: '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.4 + '@babel/runtime': 7.27.6 '@testing-library/dom': 10.4.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -3724,21 +3642,15 @@ snapshots: loupe: 3.1.4 tinyrainbow: 2.0.0 - '@volar/language-core@2.4.14': - dependencies: - '@volar/source-map': 2.4.14 - '@volar/language-core@2.4.17': dependencies: '@volar/source-map': 2.4.17 - '@volar/source-map@2.4.14': {} - '@volar/source-map@2.4.17': {} - '@volar/typescript@2.4.14': + '@volar/typescript@2.4.17': dependencies: - '@volar/language-core': 2.4.14 + '@volar/language-core': 2.4.17 path-browserify: 1.0.1 vscode-uri: 3.1.0 @@ -4247,13 +4159,13 @@ snapshots: eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.30.1(jiti@2.4.2)): dependencies: - '@babel/core': 7.27.4 - '@babel/parser': 7.27.4 - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.27.4) + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.0) eslint: 9.30.1(jiti@2.4.2) hermes-parser: 0.25.1 - zod: 3.25.46 - zod-validation-error: 3.4.1(zod@3.25.46) + zod: 3.25.74 + zod-validation-error: 3.5.2(zod@3.25.74) transitivePeerDependencies: - supports-color @@ -4369,6 +4281,8 @@ snapshots: esutils@2.0.3: {} + events@3.3.0: {} + expect-type@1.2.1: {} expect@30.0.4: @@ -4404,6 +4318,8 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fflate@0.7.4: {} + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -4510,6 +4426,8 @@ snapshots: fs-extra: 11.3.0 globby: 11.1.0 + gif.js@0.2.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4536,8 +4454,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 - globals@11.12.0: {} - globals@14.0.0: {} globalthis@1.0.4: @@ -4560,6 +4476,8 @@ snapshots: graphemer@1.4.0: {} + h264-mp4-encoder@1.0.12: {} + has-bigints@1.1.0: {} has-flag@4.0.0: {} @@ -5100,6 +5018,14 @@ snapshots: p-try@2.2.0: {} + p5.capture@1.6.0: + dependencies: + events: 3.3.0 + fflate: 0.7.4 + gif.js: 0.2.0 + h264-mp4-encoder: 1.0.12 + webm-writer: 1.0.0 + p5@1.11.8: {} package-json-from-dist@1.0.1: {} @@ -5647,8 +5573,8 @@ snapshots: vite-plugin-dts@4.5.4(@types/node@24.0.10)(rollup@4.44.2)(typescript@5.8.3)(vite@7.0.2(@types/node@24.0.10)(jiti@2.4.2)): dependencies: '@microsoft/api-extractor': 7.52.8(@types/node@24.0.10) - '@rollup/pluginutils': 5.1.4(rollup@4.44.2) - '@volar/typescript': 2.4.14 + '@rollup/pluginutils': 5.2.0(rollup@4.44.2) + '@volar/typescript': 2.4.17 '@vue/language-core': 2.2.0(typescript@5.8.3) compare-versions: 6.1.1 debug: 4.4.1 @@ -5731,6 +5657,8 @@ snapshots: webidl-conversions@7.0.0: {} + webm-writer@1.0.0: {} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -5818,8 +5746,8 @@ snapshots: yocto-queue@0.1.0: {} - zod-validation-error@3.4.1(zod@3.25.46): + zod-validation-error@3.5.2(zod@3.25.74): dependencies: - zod: 3.25.46 + zod: 3.25.74 - zod@3.25.46: {} + zod@3.25.74: {}