diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index cecb0b921..f891e262c 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -14,7 +14,7 @@ importers: dependencies: '@arco-design/web-react': specifier: 2.46.1 - version: 2.46.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.46.1(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@visactor/vchart': specifier: 1.3.0 version: 1.3.0 @@ -22,14 +22,14 @@ importers: specifier: ~0.5.7 version: 0.5.7 '@visactor/vrender': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../packages/vrender '@visactor/vutils': specifier: 1.0.6 version: 1.0.6 axios: specifier: ^1.4.0 - version: 1.9.0 + version: 1.8.4 highlight.js: specifier: ^11.8.0 version: 11.11.1 @@ -57,13 +57,13 @@ importers: version: 13.0.9 '@types/react': specifier: ^18.0.0 - version: 18.3.23 + version: 18.3.20 '@types/react-dom': specifier: ^18.0.0 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.5(@types/react@18.3.20) '@vitejs/plugin-react': specifier: 3.1.0 - version: 3.1.0(vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1)) + version: 3.1.0(vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1)) chalk: specifier: ^3.0.0 version: 3.0.0 @@ -87,7 +87,7 @@ importers: version: 4.9.5 vite: specifier: 3.2.6 - version: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + version: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) yargs: specifier: ^17.1.1 version: 17.7.2 @@ -95,7 +95,7 @@ importers: ../../packages/react-vrender: dependencies: '@visactor/vrender': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender '@visactor/vutils': specifier: 1.0.6 @@ -121,16 +121,16 @@ importers: version: 1.1.4 '@types/react': specifier: ^18.0.0 - version: 18.3.23 + version: 18.3.20 '@types/react-dom': specifier: ^18.0.0 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.5(@types/react@18.3.20) '@types/react-reconciler': specifier: ^0.28.2 - version: 0.28.9(@types/react@18.3.23) + version: 0.28.9(@types/react@18.3.20) '@vitejs/plugin-react': specifier: 3.1.0 - version: 3.1.0(vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1)) + version: 3.1.0(vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -148,15 +148,15 @@ importers: version: 4.9.5 vite: specifier: 3.2.6 - version: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + version: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) ../../packages/react-vrender-utils: dependencies: '@visactor/react-vrender': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../react-vrender '@visactor/vrender': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender '@visactor/vutils': specifier: 1.0.6 @@ -182,13 +182,13 @@ importers: version: 1.1.4 '@types/react': specifier: ^18.0.0 - version: 18.3.23 + version: 18.3.20 '@types/react-dom': specifier: ^18.0.0 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.5(@types/react@18.3.20) '@vitejs/plugin-react': specifier: 3.1.0 - version: 3.1.0(vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1)) + version: 3.1.0(vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -206,21 +206,21 @@ importers: version: 4.9.5 vite: specifier: 3.2.6 - version: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + version: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) ../../packages/vrender: dependencies: '@visactor/vrender-animate': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-animate '@visactor/vrender-components': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-components '@visactor/vrender-core': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-core '@visactor/vrender-kits': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-kits devDependencies: '@internal/bundler': @@ -240,16 +240,16 @@ importers: version: 26.0.24 '@types/react': specifier: ^18.0.0 - version: 18.3.23 + version: 18.3.20 '@types/react-dom': specifier: ^18.0.0 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.5(@types/react@18.3.20) '@visactor/vutils': specifier: 1.0.6 version: 1.0.6 '@vitejs/plugin-react': specifier: 3.1.0 - version: 3.1.0(vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1)) + version: 3.1.0(vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1)) canvas: specifier: 2.11.2 version: 2.11.2 @@ -261,10 +261,10 @@ importers: version: 8.18.0 jest: specifier: ^26.0.0 - version: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + version: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-electron: specifier: ^0.1.12 - version: 0.1.12(jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))) + version: 0.1.12(jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))) jest-extended: specifier: ^1.2.1 version: 1.2.1 @@ -276,18 +276,18 @@ importers: version: 18.3.1(react@18.3.1) ts-jest: specifier: ^26.0.0 - version: 26.5.6(jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)))(typescript@4.9.5) + version: 26.5.6(jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)))(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 vite: specifier: 3.2.6 - version: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + version: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) ../../packages/vrender-animate: dependencies: '@visactor/vrender-core': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-core '@visactor/vutils': specifier: 1.0.6 @@ -310,13 +310,13 @@ importers: version: 2.6.4 '@types/react': specifier: ^18.0.0 - version: 18.3.23 + version: 18.3.20 '@types/react-dom': specifier: ^18.0.0 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.5(@types/react@18.3.20) '@vitejs/plugin-react': specifier: 3.1.0 - version: 3.1.0(vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1)) + version: 3.1.0(vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1)) canvas: specifier: 2.11.2 version: 2.11.2 @@ -340,18 +340,18 @@ importers: version: 4.9.5 vite: specifier: 3.2.6 - version: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + version: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) ../../packages/vrender-components: dependencies: '@visactor/vrender-animate': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-animate '@visactor/vrender-core': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-core '@visactor/vrender-kits': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-kits '@visactor/vscale': specifier: 1.0.6 @@ -383,22 +383,22 @@ importers: version: 8.18.0 jest: specifier: ^26.0.0 - version: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + version: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-electron: specifier: ^0.1.12 - version: 0.1.12(jest@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))) + version: 0.1.12(jest@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))) lil-gui: specifier: ^0.17.0 version: 0.17.0 ts-jest: specifier: ^26.0.0 - version: 26.5.6(jest@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)))(typescript@4.9.5) + version: 26.5.6(jest@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)))(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 vite: specifier: 3.2.6 - version: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + version: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) ../../packages/vrender-core: dependencies: @@ -426,13 +426,13 @@ importers: version: 26.0.24 '@types/react': specifier: ^18.0.0 - version: 18.3.23 + version: 18.3.20 '@types/react-dom': specifier: ^18.0.0 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.5(@types/react@18.3.20) '@vitejs/plugin-react': specifier: 3.1.0 - version: 3.1.0(vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1)) + version: 3.1.0(vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -441,10 +441,10 @@ importers: version: 8.18.0 jest: specifier: ^26.0.0 - version: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + version: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-electron: specifier: ^0.1.12 - version: 0.1.12(jest@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))) + version: 0.1.12(jest@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))) jest-extended: specifier: ^1.2.1 version: 1.2.1 @@ -456,13 +456,13 @@ importers: version: 18.3.1(react@18.3.1) ts-jest: specifier: ^26.0.0 - version: 26.5.6(jest@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)))(typescript@4.9.5) + version: 26.5.6(jest@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)))(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 vite: specifier: 3.2.6 - version: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + version: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) ../../packages/vrender-kits: dependencies: @@ -470,7 +470,7 @@ importers: specifier: 2.4.1 version: 2.4.1 '@visactor/vrender-core': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../vrender-core '@visactor/vutils': specifier: 1.0.6 @@ -480,7 +480,7 @@ importers: version: 2.1.2 lottie-web: specifier: ^5.12.2 - version: 5.13.0 + version: 5.12.2 roughjs: specifier: 4.5.2 version: 4.5.2 @@ -502,13 +502,13 @@ importers: version: 2.6.4 '@types/react': specifier: ^18.0.0 - version: 18.3.23 + version: 18.3.20 '@types/react-dom': specifier: ^18.0.0 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.5(@types/react@18.3.20) '@vitejs/plugin-react': specifier: 3.1.0 - version: 3.1.0(vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1)) + version: 3.1.0(vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1)) canvas: specifier: 2.11.2 version: 2.11.2 @@ -532,7 +532,7 @@ importers: version: 4.9.5 vite: specifier: 3.2.6 - version: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + version: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) ../../share/eslint-config: dependencies: @@ -569,14 +569,14 @@ importers: version: 26.6.2 ts-jest: specifier: ^26.0.0 - version: 26.5.6(jest@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)))(typescript@4.9.5) + version: 26.5.6(jest@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)))(typescript@4.9.5) devDependencies: '@types/jest': specifier: ^26.0.0 version: 26.0.24 jest: specifier: ^26.0.0 - version: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + version: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) typescript: specifier: 4.9.5 version: 4.9.5 @@ -586,19 +586,19 @@ importers: ../../tools/bugserver-trigger: dependencies: '@visactor/vrender': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../../packages/vrender '@visactor/vrender-animate': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../../packages/vrender-animate '@visactor/vrender-components': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../../packages/vrender-components '@visactor/vrender-core': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../../packages/vrender-core '@visactor/vrender-kits': - specifier: workspace:1.0.18 + specifier: workspace:1.0.19 version: link:../../packages/vrender-kits devDependencies: '@internal/bundler': @@ -615,7 +615,7 @@ importers: version: 1.1.4 '@types/node': specifier: '*' - version: 22.15.30 + version: 22.13.17 '@types/node-fetch': specifier: 2.6.4 version: 2.6.4 @@ -627,13 +627,13 @@ importers: version: 8.18.0 form-data: specifier: ~4.0.0 - version: 4.0.3 + version: 4.0.2 node-fetch: specifier: 2.6.6 version: 2.6.6 ts-node: specifier: 10.9.0 - version: 10.9.0(@types/node@22.15.30)(typescript@4.9.5) + version: 10.9.0(@types/node@22.13.17)(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 @@ -826,7 +826,7 @@ importers: version: 0.7.31 '@types/node': specifier: '*' - version: 22.15.30 + version: 22.13.17 '@types/semver': specifier: 7.3.12 version: 7.3.12 @@ -850,7 +850,7 @@ importers: version: 8.18.0 ts-node: specifier: 10.9.0 - version: 10.9.0(@types/node@22.15.30)(typescript@4.9.5) + version: 10.9.0(@types/node@22.13.17)(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 @@ -873,12 +873,12 @@ packages: react: '>=16' react-dom: '>=16' - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.5': - resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} '@babel/core@7.20.12': @@ -889,26 +889,26 @@ packages: resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.5': - resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.27.1': - resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + '@babel/helper-create-class-features-plugin@7.27.0': + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': - resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + '@babel/helper-create-regexp-features-plugin@7.27.0': + resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -922,77 +922,77 @@ packages: resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.27.3': - resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.27.1': - resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.27.1': - resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.5': - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': - resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': - resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 @@ -1134,8 +1134,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-export-default-from@7.27.1': - resolution: {integrity: sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==} + '@babel/plugin-syntax-export-default-from@7.25.9': + resolution: {integrity: sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1145,14 +1145,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.27.1': - resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1167,8 +1167,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1215,248 +1215,248 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-arrow-functions@7.27.1': - resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.27.1': - resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.27.1': - resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.27.5': - resolution: {integrity: sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==} + '@babel/plugin-transform-block-scoping@7.27.0': + resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-classes@7.27.1': - resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==} + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.27.1': - resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.27.3': - resolution: {integrity: sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==} + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.27.1': - resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.27.1': - resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.27.1': - resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.27.1': - resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + '@babel/plugin-transform-for-of@7.26.9': + resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.27.1': - resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.27.1': - resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.27.1': - resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.27.1': - resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.27.1': - resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.27.1': - resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.27.1': - resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.27.1': - resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==} + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.27.1': - resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.27.1': - resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} + '@babel/plugin-transform-react-display-name@7.25.9': + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-development@7.27.1': - resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + '@babel/plugin-transform-react-jsx-development@7.25.9': + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + '@babel/plugin-transform-react-jsx@7.25.9': + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-pure-annotations@7.27.1': - resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + '@babel/plugin-transform-react-pure-annotations@7.25.9': + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.27.5': - resolution: {integrity: sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==} + '@babel/plugin-transform-regenerator@7.27.0': + resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.27.1': - resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.27.1': - resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.27.1': - resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.27.1': - resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.27.1': - resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + '@babel/plugin-transform-template-literals@7.26.8': + resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.27.1': - resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + '@babel/plugin-transform-typeof-symbol@7.27.0': + resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.27.1': - resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} + '@babel/plugin-transform-typescript@7.27.0': + resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.27.1': - resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.27.1': - resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1484,20 +1484,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.4': - resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.6': - resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -1905,8 +1905,8 @@ packages: '@types/babel__core@7.20.0': resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} @@ -1928,8 +1928,8 @@ packages: '@types/debug@4.1.7': resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} '@types/expect@1.20.4': resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} @@ -1937,8 +1937,8 @@ packages: '@types/fs-extra@9.0.13': resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - '@types/glob-stream@8.0.3': - resolution: {integrity: sha512-vctgrT9AH/GK3TRaIbRUU0TZn12GBU4kzelZdPyJp1Sc8L/6Wrq21UrtN4+x4saqTg6COUIUtFV6JSYcVln/EQ==} + '@types/glob-stream@8.0.2': + resolution: {integrity: sha512-kyuRfGE+yiSJWzSO3t74rXxdZNdYfLcllO0IUha4eX1fl40pm9L02Q/TEc3mykTLjoWz4STBNwYnUWdFu3I0DA==} '@types/glob-watcher@5.0.2': resolution: {integrity: sha512-MZeh2nIzibl/euv5UV0femkGzcKTSE4G2+zv48d6ymeitWwCx52+4X+FqzML9oH2mQnPs+N/JHp3CsBPj1x1Ug==} @@ -2012,8 +2012,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@22.15.30': - resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==} + '@types/node@22.13.17': + resolution: {integrity: sha512-nAJuQXoyPj04uLgu+obZcSmsfOenUg6DxPKogeUy6yNCFwWaj5sBF8/G/pNo8EtBJjAfSVgfIlugR/BCOleO+g==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2027,8 +2027,8 @@ packages: '@types/prop-types@15.7.14': resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - '@types/react-dom@18.3.7': - resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + '@types/react-dom@18.3.5': + resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} peerDependencies: '@types/react': ^18.0.0 @@ -2037,8 +2037,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@18.3.23': - resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + '@types/react@18.3.20': + resolution: {integrity: sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -2068,8 +2068,8 @@ packages: '@types/undertaker@1.2.8': resolution: {integrity: sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==} - '@types/vinyl-fs@3.0.6': - resolution: {integrity: sha512-e9GHnmABNUnJ4D99OjVO5s87TfYpmEs7/VKbVS/rt0KkZnKA2vIMyEC5K0H7W/XBiRUO4pdaZxvVUmzjRnrydA==} + '@types/vinyl-fs@3.0.5': + resolution: {integrity: sha512-ckYz9giHgV6U10RFuf9WsDQ3X86EFougapxHmmoxLK7e6ICQqO8CE+4V/3lBN148V5N1pb4nQMmMjyScleVsig==} '@types/vinyl@2.0.7': resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} @@ -2279,8 +2279,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true @@ -2413,8 +2413,8 @@ packages: array-equal@1.0.2: resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} array-initial@1.1.0: @@ -2521,8 +2521,8 @@ packages: aws4@1.13.2: resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - axios@1.9.0: - resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + axios@1.8.4: + resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} b-tween@0.3.3: resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==} @@ -2649,8 +2649,8 @@ packages: browser-resolve@1.11.3: resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} - browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2715,8 +2715,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001721: - resolution: {integrity: sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==} + caniuse-lite@1.0.30001707: + resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} canvas@2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -2917,8 +2917,8 @@ packages: copy-props@2.0.5: resolution: {integrity: sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==} - core-js-compat@3.43.0: - resolution: {integrity: sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==} + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} core-js@3.31.1: resolution: {integrity: sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==} @@ -3110,8 +3110,8 @@ packages: resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} engines: {node: '>=0.10.0'} - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} detect-newline@2.1.0: @@ -3204,8 +3204,8 @@ packages: ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - electron-to-chromium@1.5.165: - resolution: {integrity: sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==} + electron-to-chromium@1.5.129: + resolution: {integrity: sha512-JlXUemX4s0+9f8mLqib/bHH8gOHf5elKS6KeWG3sk3xozb/JTq/RLXIv8OKUWiK4Ah00Wm88EFj5PYkFr4RUPA==} electron@11.5.0: resolution: {integrity: sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg==} @@ -3247,8 +3247,8 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} es-array-method-boxes-properly@1.0.0: @@ -3728,8 +3728,8 @@ packages: resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} engines: {node: '>= 6'} - form-data@4.0.3: - resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} engines: {node: '>= 6'} fraction.js@4.3.7: @@ -4052,8 +4052,8 @@ packages: htmlparser2@4.1.0: resolution: {integrity: sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==} - http-cache-semantics@4.2.0: - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} @@ -4269,10 +4269,6 @@ packages: resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} engines: {node: '>=0.10.0'} - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -4883,8 +4879,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - lottie-web@5.13.0: - resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==} + lottie-web@5.12.2: + resolution: {integrity: sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==} loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} @@ -5591,8 +5587,8 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - react-clientside-effect@1.2.8: - resolution: {integrity: sha512-ma2FePH0z3px2+WOu6h+YycZcEvFmmxIlAb62cF52bG86eMySciO/EQZeQMXd07kPCYB0a1dWDT5J+KE9mCDUw==} + react-clientside-effect@1.2.7: + resolution: {integrity: sha512-gce9m0Pk/xYYMEojRI9bgvqQAkl6hm7ozQvqWPyQx+kULiatdHgkNM1QG4DQRx5N9BAzWSCJmt9mMV8/KsdgVg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc @@ -5710,6 +5706,12 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regex-not@1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} engines: {node: '>=0.10.0'} @@ -5961,8 +5963,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true @@ -6172,17 +6174,13 @@ packages: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} engines: {node: '>=0.10.0'} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@3.8.1: + resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} stealthy-require@1.1.1: resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} engines: {node: '>=0.10.0'} - stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - stream-exhaust@1.0.2: resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==} @@ -6555,8 +6553,8 @@ packages: uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} @@ -6574,8 +6572,8 @@ packages: resolution: {integrity: sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==} engines: {node: '>= 0.10'} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} @@ -6989,10 +6987,10 @@ snapshots: dependencies: color: 3.2.1 - '@arco-design/web-react@2.46.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@arco-design/web-react@2.46.1(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@arco-design/color': 0.4.0 - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.27.0 b-tween: 0.3.3 b-validate: 1.5.3 compute-scroll-into-view: 1.0.20 @@ -7001,7 +6999,7 @@ snapshots: number-precision: 1.6.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-focus-lock: 2.13.6(@types/react@18.3.23)(react@18.3.1) + react-focus-lock: 2.13.6(@types/react@18.3.20)(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) resize-observer-polyfill: 1.5.1 scroll-into-view-if-needed: 2.2.20 @@ -7009,26 +7007,26 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.26.2': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.27.5': {} + '@babel/compat-data@7.26.8': {} '@babel/core@7.20.12': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.26.2 '@babel/generator': 7.21.1 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.20.12) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.20.12) + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -7039,56 +7037,56 @@ snapshots: '@babel/generator@7.21.1': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/generator@7.27.5': + '@babel/generator@7.27.0': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.27.3': + '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 - '@babel/helper-compilation-targets@7.27.2': + '@babel/helper-compilation-targets@7.27.0': dependencies: - '@babel/compat-data': 7.27.5 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.0 + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.20.12)': + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@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.20.12) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.20.12) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.20.12)': + '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-annotate-as-pure': 7.25.9 regexpu-core: 6.2.0 semver: 6.3.1 '@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.10 @@ -7098,96 +7096,96 @@ snapshots: '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 - '@babel/helper-member-expression-to-functions@7.27.1': + '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.20.12)': + '@babel/helper-module-transforms@7.26.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.27.1': + '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 - '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.26.5': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.20.12)': + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.20.12)': + '@babel/helper-replace-supers@7.26.5(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-validator-option@7.25.9': {} - '@babel/helper-wrap-function@7.27.1': + '@babel/helper-wrap-function@7.25.9': dependencies: - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helpers@7.27.6': + '@babel/helpers@7.27.0': dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 - '@babel/parser@7.27.5': + '@babel/parser@7.27.0': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.20.12) transitivePeerDependencies: - supports-color @@ -7195,8 +7193,8 @@ snapshots: dependencies: '@babel/core': 7.20.12 '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.20.12) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.12) transitivePeerDependencies: - supports-color @@ -7204,16 +7202,16 @@ snapshots: '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.12) transitivePeerDependencies: - supports-color @@ -7221,65 +7219,65 @@ snapshots: '@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.12) '@babel/plugin-proposal-export-default-from@7.18.10(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.20.12) '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.20.12) '@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.12) '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.12) '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12) '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.12) '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.20.12)': dependencies: - '@babel/compat-data': 7.27.5 + '@babel/compat-data': 7.26.8 '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.20.12) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.20.12) '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.12) '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12) transitivePeerDependencies: - supports-color @@ -7287,17 +7285,17 @@ snapshots: '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.20.12) transitivePeerDependencies: - supports-color @@ -7305,383 +7303,384 @@ snapshots: '@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-syntax-export-default-from@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.20.12) + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.20.12) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.20.12)': + '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-classes@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.20.12) - '@babel/traverse': 7.27.4 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.20.12) + '@babel/traverse': 7.27.0 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/template': 7.27.0 - '@babel/plugin-transform-destructuring@7.27.3(@babel/core@7.20.12)': + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.20.12) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.20.12) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.20.12) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.20.12) - '@babel/types': 7.27.6 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.20.12) + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.20.12)': + '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.20.12) + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.20.12) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.20.12) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 '@babel/preset-env@7.20.2(@babel/core@7.20.12)': dependencies: - '@babel/compat-data': 7.27.5 + '@babel/compat-data': 7.26.8 '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.20.12) + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.20.12) '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.20.12) '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12) '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.20.12) @@ -7702,7 +7701,7 @@ snapshots: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.12) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.12) '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.20.12) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.20.12) '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.12) '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.12) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12) @@ -7712,44 +7711,44 @@ snapshots: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12) '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.20.12) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.12) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.20.12) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.20.12) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-regenerator': 7.27.5(@babel/core@7.20.12) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.20.12) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.20.12) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.20.12) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.20.12) + '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.20.12) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.20.12) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.20.12) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.20.12) + '@babel/plugin-transform-typeof-symbol': 7.27.0(@babel/core@7.20.12) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.20.12) '@babel/preset-modules': 0.1.6(@babel/core@7.20.12) - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.20.12) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.20.12) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.20.12) - core-js-compat: 3.43.0 + core-js-compat: 3.41.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -7757,57 +7756,59 @@ snapshots: '@babel/preset-modules@0.1.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.20.12) - '@babel/types': 7.27.6 + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.20.12) + '@babel/types': 7.27.0 esutils: 2.0.3 '@babel/preset-react@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.20.12) transitivePeerDependencies: - supports-color '@babel/preset-typescript@7.18.6(@babel/core@7.20.12)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.20.12) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.20.12) transitivePeerDependencies: - supports-color - '@babel/runtime@7.27.6': {} + '@babel/runtime@7.27.0': + dependencies: + regenerator-runtime: 0.14.1 - '@babel/template@7.27.2': + '@babel/template@7.27.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 - '@babel/traverse@7.27.4': + '@babel/traverse@7.27.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.27.6': + '@babel/types@7.27.0': dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 '@bcoe/v8-coverage@0.2.3': {} @@ -7897,33 +7898,33 @@ snapshots: '@jest/console@26.6.2': dependencies: '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 chalk: 4.1.2 jest-message-util: 26.6.2 jest-util: 26.6.2 slash: 3.0.0 - '@jest/core@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))': + '@jest/core@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))': dependencies: '@jest/console': 26.6.2 '@jest/reporters': 26.6.2 '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 26.6.2 - jest-config: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-config: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-haste-map: 26.6.2 jest-message-util: 26.6.2 jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) - jest-runtime: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-runner: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) + jest-runtime: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-snapshot: 26.6.2 jest-util: 26.6.2 jest-validate: 26.6.2 @@ -7940,27 +7941,27 @@ snapshots: - ts-node - utf-8-validate - '@jest/core@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))': + '@jest/core@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))': dependencies: '@jest/console': 26.6.2 '@jest/reporters': 26.6.2 '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 26.6.2 - jest-config: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-config: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-haste-map: 26.6.2 jest-message-util: 26.6.2 jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) - jest-runtime: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-runner: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) + jest-runtime: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-snapshot: 26.6.2 jest-util: 26.6.2 jest-validate: 26.6.2 @@ -7990,7 +7991,7 @@ snapshots: dependencies: '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 jest-mock: 26.6.2 '@jest/fake-timers@24.9.0': @@ -8003,7 +8004,7 @@ snapshots: dependencies: '@jest/types': 26.6.2 '@sinonjs/fake-timers': 6.0.1 - '@types/node': 22.15.30 + '@types/node': 22.13.17 jest-message-util: 26.6.2 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -8079,13 +8080,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/test-sequencer@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))': + '@jest/test-sequencer@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))': dependencies: '@jest/test-result': 26.6.2 graceful-fs: 4.2.11 jest-haste-map: 26.6.2 - jest-runner: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) - jest-runtime: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-runner: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) + jest-runtime: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) transitivePeerDependencies: - bufferutil - canvas @@ -8093,13 +8094,13 @@ snapshots: - ts-node - utf-8-validate - '@jest/test-sequencer@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))': + '@jest/test-sequencer@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))': dependencies: '@jest/test-result': 26.6.2 graceful-fs: 4.2.11 jest-haste-map: 26.6.2 - jest-runner: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) - jest-runtime: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-runner: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) + jest-runtime: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) transitivePeerDependencies: - bufferutil - canvas @@ -8158,7 +8159,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -8191,14 +8192,14 @@ snapshots: '@mapbox/node-pre-gyp@1.0.11': dependencies: - detect-libc: 2.0.4 + detect-libc: 2.0.3 https-proxy-agent: 5.0.1 make-dir: 3.1.0 node-fetch: 2.7.0 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.7.2 + semver: 7.7.1 tar: 6.2.1 transitivePeerDependencies: - encoding @@ -8278,7 +8279,7 @@ snapshots: '@rollup/plugin-babel@6.0.3(@babel/core@7.20.12)(@types/babel__core@7.20.0)(rollup@3.20.5)': dependencies: '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.25.9 '@rollup/pluginutils': 5.1.4(rollup@3.20.5) optionalDependencies: '@types/babel__core': 7.20.0 @@ -8342,7 +8343,7 @@ snapshots: '@rollup/pluginutils@5.1.4(rollup@3.20.5)': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: @@ -8416,24 +8417,24 @@ snapshots: '@types/babel__core@7.20.0': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - '@types/babel__generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 - '@types/babel__generator@7.27.0': + '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 '@types/chai-subset@1.3.6(@types/chai@4.3.20)': dependencies: @@ -8443,38 +8444,38 @@ snapshots: '@types/clean-css@4.2.6': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 source-map: 0.6.1 '@types/debug@4.1.7': dependencies: '@types/ms': 0.7.31 - '@types/estree@1.0.8': {} + '@types/estree@1.0.7': {} '@types/expect@1.20.4': {} '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 - '@types/glob-stream@8.0.3': + '@types/glob-stream@8.0.2': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/picomatch': 4.0.0 '@types/streamx': 2.9.5 '@types/glob-watcher@5.0.2': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/gulp-if@0.0.34': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/vinyl': 2.0.7 '@types/gulp-match@1.1.2': @@ -8484,13 +8485,13 @@ snapshots: '@types/gulp-sourcemaps@0.0.35': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/vinyl': 2.0.7 '@types/gulp@4.0.10': dependencies: '@types/undertaker': 1.2.8 - '@types/vinyl-fs': 3.0.6 + '@types/vinyl-fs': 3.0.5 chokidar: 3.6.0 '@types/highlightjs@9.12.6': {} @@ -8532,7 +8533,7 @@ snapshots: '@types/merge2@1.4.0': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/minimatch@5.1.2': {} @@ -8542,14 +8543,14 @@ snapshots: '@types/node-fetch@2.6.4': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 form-data: 3.0.3 '@types/node@12.20.55': {} - '@types/node@22.15.30': + '@types/node@22.13.17': dependencies: - undici-types: 6.21.0 + undici-types: 6.20.0 '@types/normalize-package-data@2.4.4': {} @@ -8559,15 +8560,15 @@ snapshots: '@types/prop-types@15.7.14': {} - '@types/react-dom@18.3.7(@types/react@18.3.23)': + '@types/react-dom@18.3.5(@types/react@18.3.20)': dependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.20 - '@types/react-reconciler@0.28.9(@types/react@18.3.23)': + '@types/react-reconciler@0.28.9(@types/react@18.3.20)': dependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.20 - '@types/react@18.3.23': + '@types/react@18.3.20': dependencies: '@types/prop-types': 15.7.14 csstype: 3.1.3 @@ -8582,7 +8583,7 @@ snapshots: '@types/streamx@2.9.5': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/terser@3.12.0': dependencies: @@ -8590,26 +8591,26 @@ snapshots: '@types/through2@2.0.38': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/undertaker-registry@1.0.4': {} '@types/undertaker@1.2.8': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/undertaker-registry': 1.0.4 async-done: 1.3.2 - '@types/vinyl-fs@3.0.6': + '@types/vinyl-fs@3.0.5': dependencies: - '@types/glob-stream': 8.0.3 - '@types/node': 22.15.30 + '@types/glob-stream': 8.0.2 + '@types/node': 22.13.17 '@types/vinyl': 2.0.7 '@types/vinyl@2.0.7': dependencies: '@types/expect': 1.20.4 - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/yargs-parser@21.0.0': {} @@ -8632,7 +8633,7 @@ snapshots: functional-red-black-tree: 1.0.1 ignore: 5.3.2 regexpp: 3.2.0 - semver: 7.7.2 + semver: 7.7.1 tsutils: 3.21.0(typescript@4.9.5) optionalDependencies: typescript: 4.9.5 @@ -8676,7 +8677,7 @@ snapshots: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.7.2 + semver: 7.7.1 tsutils: 3.21.0(typescript@4.9.5) optionalDependencies: typescript: 4.9.5 @@ -8866,14 +8867,14 @@ snapshots: '@turf/invariant': 6.5.0 eventemitter3: 4.0.7 - '@vitejs/plugin-react@3.1.0(vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1))': + '@vitejs/plugin-react@3.1.0(vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1))': dependencies: '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.20.12) + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.20.12) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.20.12) magic-string: 0.27.0 react-refresh: 0.14.2 - vite: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + vite: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) transitivePeerDependencies: - supports-color @@ -8922,9 +8923,9 @@ snapshots: acorn: 7.4.1 acorn-walk: 7.2.0 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: - acorn: 8.15.0 + acorn: 8.14.1 acorn-walk@6.2.0: {} @@ -8932,7 +8933,7 @@ snapshots: acorn-walk@8.3.4: dependencies: - acorn: 8.15.0 + acorn: 8.14.1 acorn@5.7.4: {} @@ -8940,7 +8941,7 @@ snapshots: acorn@7.4.1: {} - acorn@8.15.0: {} + acorn@8.14.1: {} agent-base@6.0.2: dependencies: @@ -9056,16 +9057,14 @@ snapshots: array-equal@1.0.2: {} - array-includes@3.1.9: + array-includes@3.1.8: dependencies: call-bind: 1.0.8 - call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 - math-intrinsics: 1.1.0 array-initial@1.1.0: dependencies: @@ -9096,14 +9095,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-shim-unscopables: 1.1.0 array.prototype.reduce@1.0.8: @@ -9111,7 +9110,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-array-method-boxes-properly: 1.0.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 @@ -9122,7 +9121,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -9160,8 +9159,8 @@ snapshots: autoprefixer@10.4.13(postcss@8.4.21): dependencies: - browserslist: 4.25.0 - caniuse-lite: 1.0.30001721 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001707 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -9176,10 +9175,10 @@ snapshots: aws4@1.13.2: {} - axios@1.9.0: + axios@1.8.4: dependencies: follow-redirects: 1.15.9 - form-data: 4.0.3 + form-data: 4.0.2 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -9217,13 +9216,13 @@ snapshots: babel-plugin-import@1.13.6: dependencies: - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.25.9 transitivePeerDependencies: - supports-color babel-plugin-istanbul@5.2.0: dependencies: - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 find-up: 3.0.0 istanbul-lib-instrument: 3.3.0 test-exclude: 5.2.3 @@ -9232,7 +9231,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -9246,14 +9245,14 @@ snapshots: babel-plugin-jest-hoist@26.6.2: dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.20.7 babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.20.12): dependencies: - '@babel/compat-data': 7.27.5 + '@babel/compat-data': 7.26.8 '@babel/core': 7.20.12 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.20.12) semver: 6.3.1 @@ -9264,7 +9263,7 @@ snapshots: dependencies: '@babel/core': 7.20.12 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.20.12) - core-js-compat: 3.43.0 + core-js-compat: 3.41.0 transitivePeerDependencies: - supports-color @@ -9282,7 +9281,7 @@ snapshots: '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.20.12) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.12) '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.12) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.20.12) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.20.12) '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.20.12) '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.12) '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.12) @@ -9382,12 +9381,12 @@ snapshots: dependencies: resolve: 1.1.7 - browserslist@4.25.0: + browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001721 - electron-to-chromium: 1.5.165 + caniuse-lite: 1.0.30001707 + electron-to-chromium: 1.5.129 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) + update-browserslist-db: 1.1.3(browserslist@4.24.4) bs-logger@0.2.6: dependencies: @@ -9423,7 +9422,7 @@ snapshots: dependencies: clone-response: 1.0.3 get-stream: 5.2.0 - http-cache-semantics: 4.2.0 + http-cache-semantics: 4.1.1 keyv: 3.1.0 lowercase-keys: 2.0.0 normalize-url: 4.5.1 @@ -9454,7 +9453,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001721: {} + caniuse-lite@1.0.30001707: {} canvas@2.11.2: dependencies: @@ -9705,9 +9704,9 @@ snapshots: each-props: 1.3.2 is-plain-object: 5.0.0 - core-js-compat@3.43.0: + core-js-compat@3.41.0: dependencies: - browserslist: 4.25.0 + browserslist: 4.24.4 core-js@3.31.1: {} @@ -9897,7 +9896,7 @@ snapshots: detect-file@1.0.0: {} - detect-libc@2.0.4: {} + detect-libc@2.0.3: {} detect-newline@2.1.0: {} @@ -9930,7 +9929,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.27.0 csstype: 3.1.3 dom-serializer@1.4.1: @@ -9995,7 +9994,7 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 - electron-to-chromium@1.5.165: {} + electron-to-chromium@1.5.129: {} electron@11.5.0: dependencies: @@ -10033,7 +10032,7 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.24.0: + es-abstract@1.23.9: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -10062,9 +10061,7 @@ snapshots: is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 - is-negative-zero: 2.0.3 is-regex: 1.2.1 - is-set: 2.0.3 is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 @@ -10079,7 +10076,6 @@ snapshots: safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 string.prototype.trim: 1.2.10 string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 @@ -10269,7 +10265,7 @@ snapshots: eslint-plugin-react@7.30.1(eslint@8.18.0): dependencies: - array-includes: 3.1.9 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.3 doctrine: 2.1.0 eslint: 8.18.0 @@ -10353,8 +10349,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -10622,12 +10618,11 @@ snapshots: es-set-tostringtag: 2.1.0 mime-types: 2.1.35 - form-data@4.0.3: + form-data@4.0.2: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 - hasown: 2.0.2 mime-types: 2.1.35 fraction.js@4.3.7: {} @@ -10941,7 +10936,7 @@ snapshots: gulp-replace@1.1.4: dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@types/vinyl': 2.0.7 istextorbinary: 3.3.0 replacestream: 4.0.3 @@ -11059,7 +11054,7 @@ snapshots: domutils: 2.8.0 entities: 2.2.0 - http-cache-semantics@4.2.0: {} + http-cache-semantics@4.1.1: {} http-proxy-agent@4.0.1: dependencies: @@ -11266,8 +11261,6 @@ snapshots: is-negated-glob@1.0.0: {} - is-negative-zero@2.0.3: {} - is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -11293,7 +11286,7 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 is-regex@1.2.1: dependencies: @@ -11383,10 +11376,10 @@ snapshots: istanbul-lib-instrument@3.3.0: dependencies: '@babel/generator': 7.21.1 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 istanbul-lib-coverage: 2.0.5 semver: 6.3.1 transitivePeerDependencies: @@ -11404,7 +11397,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.20.12 - '@babel/parser': 7.27.5 + '@babel/parser': 7.27.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -11441,9 +11434,9 @@ snapshots: execa: 4.1.0 throat: 5.0.0 - jest-cli@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-cli@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: - '@jest/core': 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + '@jest/core': 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 chalk: 4.1.2 @@ -11451,7 +11444,7 @@ snapshots: graceful-fs: 4.2.11 import-local: 3.2.0 is-ci: 2.0.0 - jest-config: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-config: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-util: 26.6.2 jest-validate: 26.6.2 prompts: 2.4.2 @@ -11463,9 +11456,9 @@ snapshots: - ts-node - utf-8-validate - jest-cli@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-cli@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: - '@jest/core': 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + '@jest/core': 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 chalk: 4.1.2 @@ -11473,7 +11466,7 @@ snapshots: graceful-fs: 4.2.11 import-local: 3.2.0 is-ci: 2.0.0 - jest-config: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-config: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-util: 26.6.2 jest-validate: 26.6.2 prompts: 2.4.2 @@ -11507,10 +11500,10 @@ snapshots: transitivePeerDependencies: - supports-color - jest-config@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-config@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: '@babel/core': 7.20.12 - '@jest/test-sequencer': 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + '@jest/test-sequencer': 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) '@jest/types': 26.6.2 babel-jest: 26.6.3(@babel/core@7.20.12) chalk: 4.1.2 @@ -11520,7 +11513,7 @@ snapshots: jest-environment-jsdom: 26.6.2(canvas@2.11.2) jest-environment-node: 26.6.2 jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-jasmine2: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-util: 26.6.2 @@ -11528,17 +11521,17 @@ snapshots: micromatch: 4.0.8 pretty-format: 26.6.2 optionalDependencies: - ts-node: 10.9.0(@types/node@22.15.30)(typescript@4.9.5) + ts-node: 10.9.0(@types/node@22.13.17)(typescript@4.9.5) transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - jest-config@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-config@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: '@babel/core': 7.20.12 - '@jest/test-sequencer': 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + '@jest/test-sequencer': 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) '@jest/types': 26.6.2 babel-jest: 26.6.3(@babel/core@7.20.12) chalk: 4.1.2 @@ -11548,7 +11541,7 @@ snapshots: jest-environment-jsdom: 26.6.2(canvas@2.11.2) jest-environment-node: 26.6.2 jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-jasmine2: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-util: 26.6.2 @@ -11556,7 +11549,7 @@ snapshots: micromatch: 4.0.8 pretty-format: 26.6.2 optionalDependencies: - ts-node: 10.9.0(@types/node@22.15.30)(typescript@4.9.5) + ts-node: 10.9.0(@types/node@22.13.17)(typescript@4.9.5) transitivePeerDependencies: - bufferutil - canvas @@ -11608,10 +11601,10 @@ snapshots: jest-util: 26.6.2 pretty-format: 26.6.2 - jest-electron@0.1.12(jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))): + jest-electron@0.1.12(jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))): dependencies: electron: 11.5.0 - jest: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-haste-map: 24.9.0 jest-message-util: 24.9.0 jest-mock: 24.9.0 @@ -11624,10 +11617,10 @@ snapshots: transitivePeerDependencies: - supports-color - jest-electron@0.1.12(jest@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5))): + jest-electron@0.1.12(jest@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5))): dependencies: electron: 11.5.0 - jest: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-haste-map: 24.9.0 jest-message-util: 24.9.0 jest-mock: 24.9.0 @@ -11656,7 +11649,7 @@ snapshots: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0(canvas@2.11.2) @@ -11681,7 +11674,7 @@ snapshots: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -11718,7 +11711,7 @@ snapshots: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.30 + '@types/node': 22.13.17 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -11734,7 +11727,7 @@ snapshots: jest-jasmine2@24.9.0: dependencies: - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.0 '@jest/environment': 24.9.0 '@jest/test-result': 24.9.0 '@jest/types': 24.9.0 @@ -11753,14 +11746,14 @@ snapshots: transitivePeerDependencies: - supports-color - jest-jasmine2@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-jasmine2@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.0 '@jest/environment': 26.6.2 '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -11768,7 +11761,7 @@ snapshots: jest-each: 26.6.2 jest-matcher-utils: 26.6.2 jest-message-util: 26.6.2 - jest-runtime: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-runtime: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-snapshot: 26.6.2 jest-util: 26.6.2 pretty-format: 26.6.2 @@ -11780,14 +11773,14 @@ snapshots: - ts-node - utf-8-validate - jest-jasmine2@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-jasmine2@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.0 '@jest/environment': 26.6.2 '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -11795,7 +11788,7 @@ snapshots: jest-each: 26.6.2 jest-matcher-utils: 26.6.2 jest-message-util: 26.6.2 - jest-runtime: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-runtime: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-snapshot: 26.6.2 jest-util: 26.6.2 pretty-format: 26.6.2 @@ -11840,7 +11833,7 @@ snapshots: jest-message-util@24.9.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.26.2 '@jest/test-result': 24.9.0 '@jest/types': 24.9.0 '@types/stack-utils': 1.0.1 @@ -11851,7 +11844,7 @@ snapshots: jest-message-util@26.6.2: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.26.2 '@jest/types': 26.6.2 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -11868,7 +11861,7 @@ snapshots: jest-mock@26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 jest-pnp-resolver@1.2.3(jest-resolve@24.9.0): optionalDependencies: @@ -11931,24 +11924,24 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runner@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-runner@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: '@jest/console': 26.6.2 '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-config: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-docblock: 26.0.0 jest-haste-map: 26.6.2 jest-leak-detector: 26.6.2 jest-message-util: 26.6.2 jest-resolve: 26.6.2 - jest-runtime: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-runtime: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-util: 26.6.2 jest-worker: 26.6.2 source-map-support: 0.5.21 @@ -11960,24 +11953,24 @@ snapshots: - ts-node - utf-8-validate - jest-runner@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-runner@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: '@jest/console': 26.6.2 '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-config: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-docblock: 26.0.0 jest-haste-map: 26.6.2 jest-leak-detector: 26.6.2 jest-message-util: 26.6.2 jest-resolve: 26.6.2 - jest-runtime: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-runtime: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-util: 26.6.2 jest-worker: 26.6.2 source-map-support: 0.5.21 @@ -12017,7 +12010,7 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runtime@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-runtime@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: '@jest/console': 26.6.2 '@jest/environment': 26.6.2 @@ -12034,7 +12027,7 @@ snapshots: exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-config: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-config: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-haste-map: 26.6.2 jest-message-util: 26.6.2 jest-mock: 26.6.2 @@ -12053,7 +12046,7 @@ snapshots: - ts-node - utf-8-validate - jest-runtime@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest-runtime@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: '@jest/console': 26.6.2 '@jest/environment': 26.6.2 @@ -12070,7 +12063,7 @@ snapshots: exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-config: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-config: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-haste-map: 26.6.2 jest-message-util: 26.6.2 jest-mock: 26.6.2 @@ -12093,12 +12086,12 @@ snapshots: jest-serializer@26.6.2: dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 graceful-fs: 4.2.11 jest-snapshot@24.9.0: dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 '@jest/types': 24.9.0 chalk: 2.4.2 expect: 24.9.0 @@ -12114,7 +12107,7 @@ snapshots: jest-snapshot@26.6.2: dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.27.0 '@jest/types': 26.6.2 '@types/babel__traverse': 7.20.7 '@types/prettier': 2.7.3 @@ -12149,7 +12142,7 @@ snapshots: jest-util@26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 @@ -12177,7 +12170,7 @@ snapshots: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.15.30 + '@types/node': 22.13.17 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 @@ -12190,15 +12183,15 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 merge-stream: 2.0.0 supports-color: 7.2.0 - jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: - '@jest/core': 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + '@jest/core': 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) import-local: 3.2.0 - jest-cli: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-cli: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) transitivePeerDependencies: - bufferutil - canvas @@ -12206,11 +12199,11 @@ snapshots: - ts-node - utf-8-validate - jest@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)): + jest@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)): dependencies: - '@jest/core': 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + '@jest/core': 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) import-local: 3.2.0 - jest-cli: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest-cli: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) transitivePeerDependencies: - bufferutil - canvas @@ -12267,7 +12260,7 @@ snapshots: jsdom@16.7.0(canvas@2.11.2): dependencies: abab: 2.0.6 - acorn: 8.15.0 + acorn: 8.14.1 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -12343,7 +12336,7 @@ snapshots: jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.9 + array-includes: 3.1.8 array.prototype.flat: 1.3.3 object.assign: 4.1.7 object.values: 1.2.1 @@ -12476,7 +12469,7 @@ snapshots: dependencies: js-tokens: 4.0.0 - lottie-web@5.13.0: {} + lottie-web@5.12.2: {} loupe@2.3.7: dependencies: @@ -12518,7 +12511,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.1 make-error@1.3.6: {} @@ -12657,10 +12650,10 @@ snapshots: mlly@1.7.4: dependencies: - acorn: 8.15.0 + acorn: 8.14.1 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.1 + ufo: 1.5.4 ms@2.0.0: {} @@ -12819,7 +12812,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-object-atoms: 1.1.1 object.getownpropertydescriptors@2.1.8: @@ -12827,7 +12820,7 @@ snapshots: array.prototype.reduce: 1.0.8 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-object-atoms: 1.1.1 gopd: 1.2.0 safe-array-concat: 1.1.3 @@ -12835,7 +12828,7 @@ snapshots: object.hasown@1.1.4: dependencies: define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-object-atoms: 1.1.1 object.map@1.0.1: @@ -12950,7 +12943,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -13192,9 +13185,9 @@ snapshots: dependencies: safe-buffer: 5.2.1 - react-clientside-effect@1.2.8(react@18.3.1): + react-clientside-effect@1.2.7(react@18.3.1): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.27.0 react: 18.3.1 react-dom@18.3.1(react@18.3.1): @@ -13203,17 +13196,17 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-focus-lock@2.13.6(@types/react@18.3.23)(react@18.3.1): + react-focus-lock@2.13.6(@types/react@18.3.20)(react@18.3.1): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.27.0 focus-lock: 1.3.6 prop-types: 15.8.1 react: 18.3.1 - react-clientside-effect: 1.2.8(react@18.3.1) - use-callback-ref: 1.3.3(@types/react@18.3.23)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.23)(react@18.3.1) + react-clientside-effect: 1.2.7(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@18.3.20)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.20)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.20 react-is@16.13.1: {} @@ -13241,7 +13234,7 @@ snapshots: react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.27.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -13332,7 +13325,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -13345,6 +13338,12 @@ snapshots: regenerate@1.4.2: {} + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.27.0 + regex-not@1.0.2: dependencies: extend-shallow: 3.0.2 @@ -13621,7 +13620,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.7.2: {} + semver@7.7.1: {} serialize-error@7.0.1: dependencies: @@ -13858,15 +13857,10 @@ snapshots: define-property: 0.2.5 object-copy: 0.1.0 - std-env@3.9.0: {} + std-env@3.8.1: {} stealthy-require@1.1.1: {} - stop-iteration-iterator@1.1.0: - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - stream-exhaust@1.0.2: {} stream-shift@1.0.3: {} @@ -13901,7 +13895,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -13918,7 +13912,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.23.9 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -13975,7 +13969,7 @@ snapshots: strip-literal@1.3.0: dependencies: - acorn: 8.15.0 + acorn: 8.14.1 sumchecker@3.0.1: dependencies: @@ -14033,7 +14027,7 @@ snapshots: terser@5.17.1: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.15.0 + acorn: 8.14.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -14157,12 +14151,12 @@ snapshots: dependencies: punycode: 2.3.1 - ts-jest@26.5.6(jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)))(typescript@4.9.5): + ts-jest@26.5.6(jest@26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 buffer-from: 1.1.2 fast-json-stable-stringify: 2.1.0 - jest: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest: 26.6.3(canvas@2.11.2)(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-util: 26.6.2 json5: 2.2.3 lodash: 4.17.21 @@ -14172,12 +14166,12 @@ snapshots: typescript: 4.9.5 yargs-parser: 20.2.9 - ts-jest@26.5.6(jest@26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)))(typescript@4.9.5): + ts-jest@26.5.6(jest@26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 buffer-from: 1.1.2 fast-json-stable-stringify: 2.1.0 - jest: 26.6.3(ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5)) + jest: 26.6.3(ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5)) jest-util: 26.6.2 json5: 2.2.3 lodash: 4.17.21 @@ -14187,15 +14181,15 @@ snapshots: typescript: 4.9.5 yargs-parser: 20.2.9 - ts-node@10.9.0(@types/node@22.15.30)(typescript@4.9.5): + ts-node@10.9.0(@types/node@22.13.17)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.30 - acorn: 8.15.0 + '@types/node': 22.13.17 + acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -14293,7 +14287,7 @@ snapshots: uc.micro@1.0.6: {} - ufo@1.6.1: {} + ufo@1.5.4: {} unbox-primitive@1.1.0: dependencies: @@ -14319,7 +14313,7 @@ snapshots: object.reduce: 1.0.1 undertaker-registry: 1.0.1 - undici-types@6.21.0: {} + undici-types@6.20.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -14357,9 +14351,9 @@ snapshots: upath@1.2.0: {} - update-browserslist-db@1.1.3(browserslist@4.25.0): + update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: - browserslist: 4.25.0 + browserslist: 4.24.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -14378,20 +14372,20 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - use-callback-ref@1.3.3(@types/react@18.3.23)(react@18.3.1): + use-callback-ref@1.3.3(@types/react@18.3.20)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.20 - use-sidecar@1.1.3(@types/react@18.3.23)(react@18.3.1): + use-sidecar@1.1.3(@types/react@18.3.20)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.20 use@3.1.1: {} @@ -14483,14 +14477,14 @@ snapshots: remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - vite-node@0.30.1(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1): + vite-node@0.30.1(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1): dependencies: cac: 6.7.14 debug: 4.3.4 mlly: 1.7.4 pathe: 1.1.2 picocolors: 1.1.1 - vite: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + vite: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) transitivePeerDependencies: - '@types/node' - less @@ -14500,14 +14494,14 @@ snapshots: - supports-color - terser - vite@3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1): + vite@3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1): dependencies: esbuild: 0.15.18 postcss: 8.4.21 resolve: 1.22.10 rollup: 2.79.2 optionalDependencies: - '@types/node': 22.15.30 + '@types/node': 22.13.17 fsevents: 2.3.3 less: 4.1.3 terser: 5.17.1 @@ -14516,13 +14510,13 @@ snapshots: dependencies: '@types/chai': 4.3.20 '@types/chai-subset': 1.3.6(@types/chai@4.3.20) - '@types/node': 22.15.30 + '@types/node': 22.13.17 '@vitest/expect': 0.30.1 '@vitest/runner': 0.30.1 '@vitest/snapshot': 0.30.1 '@vitest/spy': 0.30.1 '@vitest/utils': 0.30.1 - acorn: 8.15.0 + acorn: 8.14.1 acorn-walk: 8.3.4 cac: 6.7.14 chai: 4.5.0 @@ -14533,12 +14527,12 @@ snapshots: pathe: 1.1.2 picocolors: 1.1.1 source-map: 0.6.1 - std-env: 3.9.0 + std-env: 3.8.1 strip-literal: 1.3.0 tinybench: 2.9.0 tinypool: 0.4.0 - vite: 3.2.6(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) - vite-node: 0.30.1(@types/node@22.15.30)(less@4.1.3)(terser@5.17.1) + vite: 3.2.6(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) + vite-node: 0.30.1(@types/node@22.13.17)(less@4.1.3)(terser@5.17.1) why-is-node-running: 2.3.0 optionalDependencies: jsdom: 16.7.0(canvas@2.11.2) diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index a29aae6c2..bd51e8613 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -1 +1 @@ -[{"definitionName":"lockStepVersion","policyName":"vrenderMain","version":"1.0.18","nextBump":"patch"}] +[{"definitionName":"lockStepVersion","policyName":"vrenderMain","version":"1.0.19","nextBump":"patch"}] diff --git a/docs/package.json b/docs/package.json index bb2a6b425..9f181b512 100644 --- a/docs/package.json +++ b/docs/package.json @@ -13,7 +13,7 @@ "@visactor/vchart": "1.3.0", "@visactor/vutils": "1.0.6", "@visactor/vgrammar": "~0.5.7", - "@visactor/vrender": "workspace:1.0.18", + "@visactor/vrender": "workspace:1.0.19", "markdown-it": "^13.0.0", "highlight.js": "^11.8.0", "axios": "^1.4.0", diff --git a/packages/react-vrender-utils/CHANGELOG.json b/packages/react-vrender-utils/CHANGELOG.json index f0d5aa215..852828a94 100644 --- a/packages/react-vrender-utils/CHANGELOG.json +++ b/packages/react-vrender-utils/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/react-vrender-utils", "entries": [ + { + "version": "1.0.19", + "tag": "@visactor/react-vrender-utils_v1.0.19", + "date": "Thu, 23 Oct 2025 07:49:11 GMT", + "comments": {} + }, { "version": "1.0.18", "tag": "@visactor/react-vrender-utils_v1.0.18", diff --git a/packages/react-vrender-utils/CHANGELOG.md b/packages/react-vrender-utils/CHANGELOG.md index 756dad296..e37b4d112 100644 --- a/packages/react-vrender-utils/CHANGELOG.md +++ b/packages/react-vrender-utils/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/react-vrender-utils -This log was last generated on Mon, 13 Oct 2025 09:26:25 GMT and should not be manually modified. +This log was last generated on Thu, 23 Oct 2025 07:49:11 GMT and should not be manually modified. + +## 1.0.19 +Thu, 23 Oct 2025 07:49:11 GMT + +_Version update only_ ## 1.0.18 Mon, 13 Oct 2025 09:26:25 GMT diff --git a/packages/react-vrender-utils/package.json b/packages/react-vrender-utils/package.json index b911b7d32..c12f7f9d7 100644 --- a/packages/react-vrender-utils/package.json +++ b/packages/react-vrender-utils/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/react-vrender-utils", - "version": "1.0.18", + "version": "1.0.19", "description": "", "sideEffects": false, "main": "cjs/index.js", @@ -24,8 +24,8 @@ "react-dom": "^18.2.0" }, "dependencies": { - "@visactor/vrender": "workspace:1.0.18", - "@visactor/react-vrender": "workspace:1.0.18", + "@visactor/vrender": "workspace:1.0.19", + "@visactor/react-vrender": "workspace:1.0.19", "@visactor/vutils": "1.0.6", "react-reconciler": "^0.29.0", "tslib": "^2.3.1" diff --git a/packages/react-vrender/CHANGELOG.json b/packages/react-vrender/CHANGELOG.json index 54b6b433d..091a4cada 100644 --- a/packages/react-vrender/CHANGELOG.json +++ b/packages/react-vrender/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/react-vrender", "entries": [ + { + "version": "1.0.19", + "tag": "@visactor/react-vrender_v1.0.19", + "date": "Thu, 23 Oct 2025 07:49:11 GMT", + "comments": {} + }, { "version": "1.0.18", "tag": "@visactor/react-vrender_v1.0.18", diff --git a/packages/react-vrender/CHANGELOG.md b/packages/react-vrender/CHANGELOG.md index 158c1790a..fa40a16f4 100644 --- a/packages/react-vrender/CHANGELOG.md +++ b/packages/react-vrender/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/react-vrender -This log was last generated on Mon, 13 Oct 2025 09:26:25 GMT and should not be manually modified. +This log was last generated on Thu, 23 Oct 2025 07:49:11 GMT and should not be manually modified. + +## 1.0.19 +Thu, 23 Oct 2025 07:49:11 GMT + +_Version update only_ ## 1.0.18 Mon, 13 Oct 2025 09:26:25 GMT diff --git a/packages/react-vrender/package.json b/packages/react-vrender/package.json index 096cf8d7e..95db7aefa 100644 --- a/packages/react-vrender/package.json +++ b/packages/react-vrender/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/react-vrender", - "version": "1.0.18", + "version": "1.0.19", "description": "", "sideEffects": false, "main": "cjs/index.js", @@ -23,7 +23,7 @@ "react": "^18.2.0" }, "dependencies": { - "@visactor/vrender": "workspace:1.0.18", + "@visactor/vrender": "workspace:1.0.19", "@visactor/vutils": "1.0.6", "react-reconciler": "^0.29.0", "tslib": "^2.3.1" diff --git a/packages/vrender-animate/CHANGELOG.json b/packages/vrender-animate/CHANGELOG.json index 77f61effe..5e10168ef 100644 --- a/packages/vrender-animate/CHANGELOG.json +++ b/packages/vrender-animate/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/vrender-animate", "entries": [ + { + "version": "1.0.19", + "tag": "@visactor/vrender-animate_v1.0.19", + "date": "Thu, 23 Oct 2025 07:49:11 GMT", + "comments": {} + }, { "version": "1.0.18", "tag": "@visactor/vrender-animate_v1.0.18", diff --git a/packages/vrender-animate/CHANGELOG.md b/packages/vrender-animate/CHANGELOG.md index 44f0d67ef..d1ea10799 100644 --- a/packages/vrender-animate/CHANGELOG.md +++ b/packages/vrender-animate/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/vrender-animate -This log was last generated on Mon, 13 Oct 2025 09:26:25 GMT and should not be manually modified. +This log was last generated on Thu, 23 Oct 2025 07:49:11 GMT and should not be manually modified. + +## 1.0.19 +Thu, 23 Oct 2025 07:49:11 GMT + +_Version update only_ ## 1.0.18 Mon, 13 Oct 2025 09:26:25 GMT diff --git a/packages/vrender-animate/package.json b/packages/vrender-animate/package.json index 190da2305..af482a84e 100644 --- a/packages/vrender-animate/package.json +++ b/packages/vrender-animate/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vrender-animate", - "version": "1.0.18", + "version": "1.0.19", "description": "", "sideEffects": false, "main": "cjs/index.js", @@ -21,7 +21,7 @@ }, "dependencies": { "@visactor/vutils": "1.0.6", - "@visactor/vrender-core": "workspace:1.0.18" + "@visactor/vrender-core": "workspace:1.0.19" }, "devDependencies": { "@internal/bundler": "workspace:*", diff --git a/packages/vrender-animate/src/custom/morphing.ts b/packages/vrender-animate/src/custom/morphing.ts index e5b65ba64..a0efb9fdf 100644 --- a/packages/vrender-animate/src/custom/morphing.ts +++ b/packages/vrender-animate/src/custom/morphing.ts @@ -377,7 +377,7 @@ export const oneToMultiMorph = ( } const childGraphics: IGraphic[] = ( - animationConfig?.splitPath === 'clone' ? cloneGraphic : animationConfig?.splitPath ?? splitGraphic + animationConfig?.splitPath === 'clone' ? cloneGraphic : (animationConfig?.splitPath ?? splitGraphic) )(fromGraphic, validateToGraphics.length, false); const oldOnEnd = animationConfig?.onEnd; @@ -687,7 +687,7 @@ export const multiToOneMorph = ( } const childGraphics: IGraphic[] = ( - animationConfig?.splitPath === 'clone' ? cloneGraphic : animationConfig?.splitPath ?? splitGraphic + animationConfig?.splitPath === 'clone' ? cloneGraphic : (animationConfig?.splitPath ?? splitGraphic) )(toGraphic, validateFromGraphics.length, true); const toAttrs = toGraphic.attribute; diff --git a/packages/vrender-animate/src/step.ts b/packages/vrender-animate/src/step.ts index d7b9bc504..698e821e7 100644 --- a/packages/vrender-animate/src/step.ts +++ b/packages/vrender-animate/src/step.ts @@ -54,7 +54,7 @@ export class Step implements IStep { this.duration = duration; // 设置缓动函数 if (easing) { - this.easing = typeof easing === 'function' ? easing : Easing[easing] ?? Easing.linear; + this.easing = typeof easing === 'function' ? easing : (Easing[easing] ?? Easing.linear); } else { this.easing = Easing.linear; } diff --git a/packages/vrender-animate/src/timeline.ts b/packages/vrender-animate/src/timeline.ts index 64759264a..3100b73aa 100644 --- a/packages/vrender-animate/src/timeline.ts +++ b/packages/vrender-animate/src/timeline.ts @@ -14,7 +14,7 @@ export class DefaultTimeline extends EventEmitter implements ITimeline { protected tail: AnimateNode | null = null; protected animateMap: Map = new Map(); protected _animateCount: number = 0; - protected declare paused: boolean; + declare protected paused: boolean; // 添加必要的属性 protected _playSpeed: number = 1; diff --git a/packages/vrender-animate/src/utils/easing.ts b/packages/vrender-animate/src/utils/easing.ts index f50472f1d..bae5e0b19 100644 --- a/packages/vrender-animate/src/utils/easing.ts +++ b/packages/vrender-animate/src/utils/easing.ts @@ -242,10 +242,10 @@ export class Easing { return x === 0 ? 0 : x === 1 - ? 1 - : x < 0.5 - ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 - : (Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1; + ? 1 + : x < 0.5 + ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + : (Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1; }; static registerFunc(name: string, func: (t: number) => number) { (Easing as any)[name] = func; diff --git a/packages/vrender-components/CHANGELOG.json b/packages/vrender-components/CHANGELOG.json index 1e8e2d3fe..dc273ebac 100644 --- a/packages/vrender-components/CHANGELOG.json +++ b/packages/vrender-components/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/vrender-components", "entries": [ + { + "version": "1.0.19", + "tag": "@visactor/vrender-components_v1.0.19", + "date": "Thu, 23 Oct 2025 07:49:11 GMT", + "comments": {} + }, { "version": "1.0.18", "tag": "@visactor/vrender-components_v1.0.18", diff --git a/packages/vrender-components/CHANGELOG.md b/packages/vrender-components/CHANGELOG.md index 4c5bdbf8e..411f71dcc 100644 --- a/packages/vrender-components/CHANGELOG.md +++ b/packages/vrender-components/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/vrender-components -This log was last generated on Mon, 13 Oct 2025 09:26:25 GMT and should not be manually modified. +This log was last generated on Thu, 23 Oct 2025 07:49:11 GMT and should not be manually modified. + +## 1.0.19 +Thu, 23 Oct 2025 07:49:11 GMT + +_Version update only_ ## 1.0.18 Mon, 13 Oct 2025 09:26:25 GMT diff --git a/packages/vrender-components/__tests__/browser/examples/data-zoom-preview-set-state.ts b/packages/vrender-components/__tests__/browser/examples/data-zoom-preview-set-state.ts index badfcc219..39ade9d01 100644 --- a/packages/vrender-components/__tests__/browser/examples/data-zoom-preview-set-state.ts +++ b/packages/vrender-components/__tests__/browser/examples/data-zoom-preview-set-state.ts @@ -26,13 +26,17 @@ export function run() { height: 30 }, realTime: false, - brushSelect: false, + brushSelect: true, + middleHandlerStyle: { + visible: true + }, + showDetail: 'auto', updateStateCallback: (start, end) => { console.log('setCallback', start, end); } }); - // dataZoom.setStartAndEnd(0, 1); + dataZoom.setStartAndEnd(0, 1); dataZoom.setPreviewData(data); dataZoom.setPreviewPointsX(d => d.x); dataZoom.setPreviewPointsY(d => d.y); @@ -40,4 +44,5 @@ export function run() { dataZoom.setPreviewPointsY1(d => 265); const stage = render([dataZoom], 'main'); + console.log('stage', stage); } diff --git a/packages/vrender-components/__tests__/browser/examples/data-zoom.ts b/packages/vrender-components/__tests__/browser/examples/data-zoom.ts index d7165eb48..eae09c640 100644 --- a/packages/vrender-components/__tests__/browser/examples/data-zoom.ts +++ b/packages/vrender-components/__tests__/browser/examples/data-zoom.ts @@ -5,21 +5,18 @@ import render from '../../util/render'; import { DataZoom } from '../../../src'; export function run() { - console.log('RectCrosshair'); - - const dataZoom = new DataZoom({ + const dataZoomdisableTriggerEvent = new DataZoom({ start: 0.2, end: 0.5, + // maxSpan: 0.4, position: { x: 50, - y: 235 + y: 75 }, size: { width: 400, height: 30 }, - showDetail: false, - delayTime: 1000, // brushSelect: false, backgroundChartStyle: { line: { @@ -31,22 +28,25 @@ export function run() { }, middleHandlerStyle: { visible: true - } + }, + disableTriggerEvent: false, + showDetail: 'auto' }); - const dataZoomdisableTriggerEvent = new DataZoom({ + const dataZoom = new DataZoom({ start: 0.2, end: 0.5, - // maxSpan: 0.4, position: { x: 50, - y: 75 + y: 235 }, size: { width: 400, height: 30 }, - // brushSelect: false, + showDetail: 'auto', + delayTime: 100, + brushSelect: true, backgroundChartStyle: { line: { visible: false @@ -57,15 +57,14 @@ export function run() { }, middleHandlerStyle: { visible: true - }, - disableTriggerEvent: false + } }); + console.log('dataZoom', dataZoom); - vglobal.supportsPointerEvents = false; + // vglobal.supportsPointerEvents = false; - const stage = render([dataZoom, dataZoomdisableTriggerEvent], 'main'); + const stage = render([dataZoomdisableTriggerEvent, dataZoom], 'main'); stage.defaultLayer.scale(1.5, 1.5); - stage.x = 10; // stage.addEventListener('pointermove', e => { // dataZoom.setLocation({ diff --git a/packages/vrender-components/package.json b/packages/vrender-components/package.json index 9d3179970..f919bc825 100644 --- a/packages/vrender-components/package.json +++ b/packages/vrender-components/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vrender-components", - "version": "1.0.18", + "version": "1.0.19", "description": "components library for dp visualization", "sideEffects": false, "main": "cjs/index.js", @@ -27,9 +27,9 @@ "dependencies": { "@visactor/vutils": "1.0.6", "@visactor/vscale": "1.0.6", - "@visactor/vrender-core": "workspace:1.0.18", - "@visactor/vrender-kits": "workspace:1.0.18", - "@visactor/vrender-animate": "workspace:1.0.18" + "@visactor/vrender-core": "workspace:1.0.19", + "@visactor/vrender-kits": "workspace:1.0.19", + "@visactor/vrender-animate": "workspace:1.0.19" }, "devDependencies": { "@internal/bundler": "workspace:*", diff --git a/packages/vrender-components/src/axis/line.ts b/packages/vrender-components/src/axis/line.ts index 05637ab22..9f85ccbf9 100644 --- a/packages/vrender-components/src/axis/line.ts +++ b/packages/vrender-components/src/axis/line.ts @@ -241,8 +241,8 @@ export class LineAxis extends AxisBase { ? Math.min(bounds.x2 - baseX, bounds.width()) : 0 : bounds.x1 < baseX - ? Math.min(baseX - bounds.x1, bounds.width()) - : 0) + + ? Math.min(baseX - bounds.x1, bounds.width()) + : 0) + (layerCount - 1) * space; } else { labelLength = 0; @@ -552,8 +552,8 @@ export class LineAxis extends AxisBase { const verticalLimitLength = isVertical ? axisLength / labelShapes.length : !autoHide && !autoRotate - ? axisLength / labelShapes.length - : Infinity; + ? axisLength / labelShapes.length + : Infinity; autoLimitFunc(labelShapes, { limitLength, @@ -646,8 +646,8 @@ export class LineAxis extends AxisBase { let limitLength = limitSize; let titleHeight = 0; let titleSpacing = 0; - const axisLineWidth = line && line.visible ? line.style.lineWidth ?? 1 : 0; - const tickLength = tick && tick.visible ? tick.length ?? 4 : 0; + const axisLineWidth = line && line.visible ? (line.style.lineWidth ?? 1) : 0; + const tickLength = tick && tick.visible ? (tick.length ?? 4) : 0; if (title && title.visible && typeof title.text === 'string') { titleHeight = measureTextSize(title.text, title.textStyle, this.stage?.getTheme()?.text).height; const padding = normalizePadding(title.padding); diff --git a/packages/vrender-components/src/axis/tick-data/continuous.ts b/packages/vrender-components/src/axis/tick-data/continuous.ts index bd0683ead..a5d01e8d9 100644 --- a/packages/vrender-components/src/axis/tick-data/continuous.ts +++ b/packages/vrender-components/src/axis/tick-data/continuous.ts @@ -171,7 +171,7 @@ export const continuousTicks = (scale: ContinuousScale, op: ITickDataOpt): ITick ({ AABBBounds: bounds, value: samplingScaleTicks[i] - } as ILabelItem) + }) as ILabelItem ); } else { items = getCartesianLabelBounds(scale, scaleTicks, op as ICartesianTickDataOpt)?.map( @@ -179,7 +179,7 @@ export const continuousTicks = (scale: ContinuousScale, op: ITickDataOpt): ITick ({ AABBBounds: bounds, value: scaleTicks[i] - } as ILabelItem) + }) as ILabelItem ); } diff --git a/packages/vrender-components/src/axis/tick-data/util.ts b/packages/vrender-components/src/axis/tick-data/util.ts index f5cbbf980..6e12d2118 100644 --- a/packages/vrender-components/src/axis/tick-data/util.ts +++ b/packages/vrender-components/src/axis/tick-data/util.ts @@ -46,10 +46,10 @@ const calculateFlushPos = (basePosition: number, size: number, rangePosition: nu return rangePosition < basePosition ? Math.max(basePosition - size / 2, rangePosition) : rangePosition > basePosition - ? Math.min(basePosition - size / 2, rangePosition - size) - : rangePosition < otherEnd - ? rangePosition - : rangePosition - size; + ? Math.min(basePosition - size / 2, rangePosition - size) + : rangePosition < otherEnd + ? rangePosition + : rangePosition - size; }; export const getCartesianLabelBounds = (scale: IBaseScale, domain: any[], op: ICartesianTickDataOpt): AABBBounds[] => { diff --git a/packages/vrender-components/src/brush/brush.ts b/packages/vrender-components/src/brush/brush.ts index cdc5695d8..b71dee060 100644 --- a/packages/vrender-components/src/brush/brush.ts +++ b/packages/vrender-components/src/brush/brush.ts @@ -398,7 +398,7 @@ export class Brush extends AbstractComponent> { cursor: 'move', pickable: false, ...brushStyle, - opacity: hasMask ? brushStyle.opacity ?? 1 : 0 + opacity: hasMask ? (brushStyle.opacity ?? 1) : 0 }); brushMask.name = `brush-${Date.now()}`; // 用Date给mask唯一标记 this._operatingMask = brushMask; diff --git a/packages/vrender-components/src/data-zoom/data-zoom.ts b/packages/vrender-components/src/data-zoom/data-zoom.ts index 0c3de059a..d5a399cd4 100644 --- a/packages/vrender-components/src/data-zoom/data-zoom.ts +++ b/packages/vrender-components/src/data-zoom/data-zoom.ts @@ -1,636 +1,48 @@ -import type { FederatedPointerEvent, IArea, IGroup, ILine, IRect, ISymbol, INode } from '@visactor/vrender-core'; -// eslint-disable-next-line no-duplicate-imports -import { flatten_simplify, vglobal } from '@visactor/vrender-core'; -import type { IBoundsLike, IPointLike } from '@visactor/vutils'; -// eslint-disable-next-line no-duplicate-imports -import { Bounds, array, clamp, debounce, isFunction, isValid, merge, throttle } from '@visactor/vutils'; +import { type IGroup } from '@visactor/vrender-core'; +import { array, isFunction, isValid, merge } from '@visactor/vutils'; import { AbstractComponent } from '../core/base'; -import type { TagAttributes } from '../tag'; -// eslint-disable-next-line no-duplicate-imports -import { Tag } from '../tag'; -import { DEFAULT_DATA_ZOOM_ATTRIBUTES, DEFAULT_HANDLER_ATTR_MAP } from './config'; -import { DataZoomActiveTag } from './type'; -// eslint-disable-next-line no-duplicate-imports -import type { DataZoomAttributes } from './type'; +import { IDataZoomEvent, IDataZoomInteractiveEvent, type DataZoomAttributes } from './type'; import type { ComponentOptions } from '../interface'; +import { DataZoomRenderer, type DataZoomRendererAttrs } from './renderer'; +import { DataZoomInteraction, type InteractionAttributes } from './interaction'; import { loadDataZoomComponent } from './register'; -import { getEndTriggersOfDrag } from '../util/event'; +import { DEFAULT_DATA_ZOOM_ATTRIBUTES } from './config'; -const delayMap = { - debounce: debounce, - throttle: throttle -}; loadDataZoomComponent(); export class DataZoom extends AbstractComponent> { name = 'dataZoom'; static defaultAttributes = DEFAULT_DATA_ZOOM_ATTRIBUTES; - + /** 交互控制 */ + private _interaction: DataZoomInteraction; + /** 渲染控制 */ + private _renderer: DataZoomRenderer; + /** 共享变量: 容器 */ + private _container: IGroup; + /** 共享变量: 状态 */ + private _state: { start: number; end: number } = { start: 0, end: 1 }; + /** 共享变量: 布局 */ + private _layoutCacheFromConfig: any; + + /** 中间量 */ private _isHorizontal: boolean; - private _background!: IRect; - - private _container!: IGroup; - - /** 手柄 */ - private _startHandlerMask!: IRect; - private _startHandler!: ISymbol; - private _middleHandlerSymbol!: ISymbol; - private _middleHandlerRect!: IRect; - private _endHandlerMask!: IRect; - private _endHandler!: ISymbol; - private _selectedBackground!: IRect; - private _dragMask!: IRect; - private _startText!: Tag; - private _endText!: Tag; - private _startValue!: string | number; - private _endValue!: string | number; - private _showText!: boolean; - - /** 背景图表 */ - private _previewData: any[] = []; - private _previewGroup!: IGroup; - private _previewLine!: ILine; - private _previewArea!: IArea; - private _selectedPreviewGroupClip!: IGroup; - private _selectedPreviewGroup!: IGroup; - private _selectedPreviewLine!: ILine; - private _selectedPreviewArea!: IArea; - - /** 交互状态 */ - protected _activeTag!: DataZoomActiveTag; - protected _activeItem!: any; - protected _activeState = false; - protected _activeCache: { - startPos: IPointLike; - lastPos: IPointLike; - } = { - startPos: { x: 0, y: 0 }, - lastPos: { x: 0, y: 0 } - }; - protected _layoutCache: { - attPos: 'x' | 'y'; - attSize: 'width' | 'height'; - max: number; - } = { - attPos: 'x', - attSize: 'width', - max: 0 - }; - /** 起始状态 */ - readonly state = { - start: 0, - end: 1 - }; - protected _spanCache: number; - - /** 回调函数 */ - private _previewPointsX!: (datum: any) => number; - private _previewPointsY!: (datum: any) => number; - private _previewPointsX1!: (datum: any) => number; - private _previewPointsY1!: (datum: any) => number; - private _statePointToData: (state: number) => any = state => state; - private _layoutAttrFromConfig: any; // 用于缓存 - - setPropsFromAttrs() { - const { start, end, orient, previewData, previewPointsX, previewPointsY, previewPointsX1, previewPointsY1 } = this - .attribute as DataZoomAttributes; - start && (this.state.start = start); - end && (this.state.end = end); - const { width, height } = this.getLayoutAttrFromConfig(); - this._spanCache = this.state.end - this.state.start; - this._isHorizontal = orient === 'top' || orient === 'bottom'; - this._layoutCache.max = this._isHorizontal ? width : height; - this._layoutCache.attPos = this._isHorizontal ? 'x' : 'y'; - this._layoutCache.attSize = this._isHorizontal ? 'width' : 'height'; - previewData && (this._previewData = previewData); - isFunction(previewPointsX) && (this._previewPointsX = previewPointsX); - isFunction(previewPointsY) && (this._previewPointsY = previewPointsY); - isFunction(previewPointsX1) && (this._previewPointsX1 = previewPointsX1); - isFunction(previewPointsY1) && (this._previewPointsY1 = previewPointsY1); - } - constructor(attributes: DataZoomAttributes, options?: ComponentOptions) { super(options?.skipDefault ? attributes : merge({}, DataZoom.defaultAttributes, attributes)); - const { position, showDetail } = attributes; - // 这些属性在事件交互过程中会改变,所以不能在setAttrs里面动态更改 - this._activeCache.startPos = position; - this._activeCache.lastPos = position; - if (showDetail === 'auto') { - this._showText = false as boolean; - } else { - this._showText = showDetail as boolean; - } - this.setPropsFromAttrs(); - } - - setAttributes(params: Partial>, forceUpdateTag?: boolean): void { - super.setAttributes(params, forceUpdateTag); - this.setPropsFromAttrs(); - } - - protected bindEvents(): void { - if (this.attribute.disableTriggerEvent) { - this.setAttribute('childrenPickable', false); - return; - } - const { showDetail, brushSelect } = this.attribute as DataZoomAttributes; - // 拖拽开始 - if (this._startHandlerMask) { - this._startHandlerMask.addEventListener( - 'pointerdown', - (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'start') as unknown as EventListener - ); - } - if (this._endHandlerMask) { - this._endHandlerMask.addEventListener( - 'pointerdown', - (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'end') as unknown as EventListener - ); - } - if (this._middleHandlerSymbol) { - this._middleHandlerSymbol.addEventListener( - 'pointerdown', - (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'middleSymbol') as unknown as EventListener - ); - } - if (this._middleHandlerRect) { - this._middleHandlerRect.addEventListener( - 'pointerdown', - (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'middleRect') as unknown as EventListener - ); - } - - const selectedTag = brushSelect ? 'background' : 'middleRect'; - if (this._selectedBackground) { - this._selectedBackground.addEventListener( - 'pointerdown', - (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, selectedTag) as unknown as EventListener - ); - } - if (brushSelect && this._background) { - this._background.addEventListener( - 'pointerdown', - (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'background') as unknown as EventListener - ); - } - if (brushSelect && this._previewGroup) { - this._previewGroup.addEventListener( - 'pointerdown', - (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'background') as unknown as EventListener - ); - } - if (this._selectedPreviewGroup) { - this._selectedPreviewGroup.addEventListener( - 'pointerdown', - (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, selectedTag) as unknown as EventListener - ); - } - - // hover - if (showDetail === 'auto') { - (this as unknown as IGroup).addEventListener('pointerenter', this._onHandlerPointerEnter as EventListener); - (this as unknown as IGroup).addEventListener('pointerleave', this._onHandlerPointerLeave as EventListener); - } - - (vglobal.env === 'browser' ? vglobal : this.stage).addEventListener('touchmove', this._handleTouchMove, { - passive: false - }); - } - private _handleTouchMove = (e: TouchEvent) => { - if (this._activeState) { - /** - * https://developer.mozilla.org/zh-CN/docs/Web/CSS/overscroll-behavior - * 由于浏览器的overscroll-behavior属性,需要在move的时候阻止浏览器默认行为,否则会因为浏览器检测到scroll行为,阻止pointer事件, - * 抛出pointercancel事件,导致拖拽行为中断。 - */ - e.preventDefault(); - } - }; - - /** dragMask size边界处理 */ - protected dragMaskSize() { - const { position } = this.attribute as DataZoomAttributes; - const { attPos, max } = this._layoutCache; - if (this._activeCache.lastPos[attPos] - position[attPos] > max) { - return max + position[attPos] - this._activeCache.startPos[attPos]; - } else if (this._activeCache.lastPos[attPos] - position[attPos] < 0) { - return position[attPos] - this._activeCache.startPos[attPos]; - } - return this._activeCache.lastPos[attPos] - this._activeCache.startPos[attPos]; - } - - /** state 边界处理 */ - protected setStateAttr(start: number, end: number, shouldRender: boolean) { - const { zoomLock = false, minSpan = 0, maxSpan = 1 } = this.attribute as DataZoomAttributes; - const span = end - start; - if (span !== this._spanCache && (zoomLock || span < minSpan || span > maxSpan)) { - return; - } - this._spanCache = span; - this.state.start = start; - this.state.end = end; - shouldRender && this.setAttributes({ start, end }); - } - - private _clearDragEvents() { - const evtTarget = vglobal.env === 'browser' ? vglobal : this.stage; - const triggers = getEndTriggersOfDrag(); - - evtTarget.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true }); - triggers.forEach((trigger: string) => { - evtTarget.removeEventListener(trigger, this._onHandlerPointerUp); - }); - - (this as unknown as IGroup).removeEventListener('pointermove', this._onHandlerPointerMove, { - capture: true - }); - } - - /** - * 拖拽开始事件 - * @description 开启activeState + 通过tag判断事件在哪个元素上触发 并 更新交互坐标 - */ - private _onHandlerPointerDown = (e: FederatedPointerEvent, tag: string) => { - // 清除之前的事件,防止没有被清除掉 - this._clearDragEvents(); - if (tag === 'start') { - this._activeTag = DataZoomActiveTag.startHandler; - this._activeItem = this._startHandlerMask; - } else if (tag === 'end') { - this._activeTag = DataZoomActiveTag.endHandler; - this._activeItem = this._endHandlerMask; - } else if (tag === 'middleRect') { - this._activeTag = DataZoomActiveTag.middleHandler; - this._activeItem = this._middleHandlerRect; - } else if (tag === 'middleSymbol') { - this._activeTag = DataZoomActiveTag.middleHandler; - this._activeItem = this._middleHandlerSymbol; - } else if (tag === 'background') { - this._activeTag = DataZoomActiveTag.background; - this._activeItem = this._background; - } - this._activeState = true; - this._activeCache.startPos = this.eventPosToStagePos(e); - this._activeCache.lastPos = this.eventPosToStagePos(e); - const evtTarget = vglobal.env === 'browser' ? vglobal : this.stage; - const triggers = getEndTriggersOfDrag(); - - /** - * move的时候,需要通过 capture: true,能够在捕获截断被拦截, - */ - evtTarget.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true }); - (this as unknown as IGroup).addEventListener('pointermove', this._onHandlerPointerMove, { - capture: true - }); - - triggers.forEach((trigger: string) => { - evtTarget.addEventListener(trigger, this._onHandlerPointerUp); - }); - }; - - /** - * 拖拽进行事件 - * @description 分为以下四种情况: - * 1. 在背景 or 背景图表上拖拽 (activeTag === 'background'): 改变lastPos => dragMask的宽 or 高被改变 - * 2. 在middleHandler上拖拽 (activeTag === 'middleHandler'): 改变lastPos、start & end + 边界处理: 防止拖拽结果超出背景 => 所有handler的位置被改变 - * 3. 在startHandler上拖拽 (activeTag === 'startHandler'): 改变lastPos、start & end + 边界处理: startHandler和endHandler交换 => 所有handler的位置被改变 - * 4. 在endHandler上拖拽,同上 - */ - private _pointerMove = (e: FederatedPointerEvent) => { - const { start: startAttr, end: endAttr, brushSelect, realTime = true } = this.attribute as DataZoomAttributes; - const pos = this.eventPosToStagePos(e); - const { attPos, max } = this._layoutCache; - const dis = (pos[attPos] - this._activeCache.lastPos[attPos]) / max; - - let { start, end } = this.state; - // this._activeState= false; - if (this._activeState) { - // if (this._activeTag === DataZoomActiveTag.background) { - // } else - if (this._activeTag === DataZoomActiveTag.middleHandler) { - this.moveZoomWithMiddle((this.state.start + this.state.end) / 2 + dis); - } else if (this._activeTag === DataZoomActiveTag.startHandler) { - if (start + dis > end) { - start = end; - end = start + dis; - this._activeTag = DataZoomActiveTag.endHandler; - } else { - start = start + dis; - } - } else if (this._activeTag === DataZoomActiveTag.endHandler) { - if (end + dis < start) { - end = start; - start = end + dis; - this._activeTag = DataZoomActiveTag.startHandler; - } else { - end = end + dis; - } - } - this._activeCache.lastPos = pos; - brushSelect && this.renderDragMask(); - } - start = Math.min(Math.max(start, 0), 1); - end = Math.min(Math.max(end, 0), 1); - - // 避免attributes相同时, 重复渲染 - if (startAttr !== start || endAttr !== end) { - this.setStateAttr(start, end, true); - if (realTime) { - this._dispatchEvent('change', { - start, - end, - tag: this._activeTag - }); - } - } - }; - private _onHandlerPointerMove = - this.attribute.delayTime === 0 - ? this._pointerMove - : delayMap[this.attribute.delayType](this._pointerMove, this.attribute.delayTime); - - /** - * 拖拽结束事件 - * @description 关闭activeState + 边界情况处理: 防止拖拽后start和end过近 - */ - private _onHandlerPointerUp = (e: FederatedPointerEvent) => { - const { start, end, brushSelect, realTime = true } = this.attribute as DataZoomAttributes; - if (this._activeState) { - if (this._activeTag === DataZoomActiveTag.background) { - const pos = this.eventPosToStagePos(e); - this.backgroundDragZoom(this._activeCache.startPos, pos); - } - } - this._activeState = false; - - // dragMask不依赖于state更新 - brushSelect && this.renderDragMask(); - - // 此次dispatch不能被省略 - // 因为pointermove时, 已经将状态更新至最新, 所以在pointerup时, 必定start = state.start & end = state.end - // 而realTime = false时, 需要依赖这次dispatch来更新图表图元 - this._dispatchEvent('change', { - start: this.state.start, - end: this.state.end, - tag: this._activeTag - }); - this._clearDragEvents(); - }; - - /** - * 鼠标进入事件 - * @description 鼠标进入选中部分出现start和end文字 - */ - private _onHandlerPointerEnter(e: FederatedPointerEvent) { - this._showText = true; - this.renderText(); - } - - /** - * 鼠标移出事件 - * @description 鼠标移出选中部分不出现start和end文字 - */ - private _onHandlerPointerLeave(e: FederatedPointerEvent) { - this._showText = false; - this.renderText(); - } - - protected backgroundDragZoom(startPos: IPointLike, endPos: IPointLike) { - const { attPos, max } = this._layoutCache; - const { position } = this.attribute as DataZoomAttributes; - const startPosInComponent = startPos[attPos] - position[attPos]; - const endPosInComponent = endPos[attPos] - position[attPos]; - const start = Math.min(Math.max(Math.min(startPosInComponent, endPosInComponent) / max, 0), 1); - const end = Math.min(Math.max(Math.max(startPosInComponent, endPosInComponent) / max, 0), 1); - if (Math.abs(start - end) < 0.01) { - this.moveZoomWithMiddle(start); - } else { - this.setStateAttr(start, end, false); - } - } - - protected moveZoomWithMiddle(middle: number) { - const currentMiddle = (this.state.start + this.state.end) / 2; - let offset = middle - currentMiddle; - // 拖拽middleHandler时,限制在background范围内 - if (offset === 0) { - return; - } else if (offset > 0) { - if (this.state.end + offset > 1) { - offset = 1 - this.state.end; - } - } else if (offset < 0) { - if (this.state.start + offset < 0) { - offset = -this.state.start; - } - } - this.setStateAttr(this.state.start + offset, this.state.end + offset, false); - } - - protected renderDragMask() { - const { dragMaskStyle } = this.attribute as DataZoomAttributes; - const { position, width, height } = this.getLayoutAttrFromConfig(); - // drag部分 - if (this._isHorizontal) { - this._dragMask = this._container.createOrUpdateChild( - 'dragMask', - { - x: clamp( - this.dragMaskSize() < 0 ? this._activeCache.lastPos.x : this._activeCache.startPos.x, - position.x, - position.x + width - ), - y: position.y, - width: - (this._activeState && this._activeTag === DataZoomActiveTag.background && Math.abs(this.dragMaskSize())) || - 0, - height, - ...dragMaskStyle - }, - 'rect' - ) as IRect; - } else { - this._dragMask = this._container.createOrUpdateChild( - 'dragMask', - { - x: position.x, - y: clamp( - this.dragMaskSize() < 0 ? this._activeCache.lastPos.y : this._activeCache.startPos.y, - position.y, - position.y + height - ), - width, - height: - (this._activeState && this._activeTag === DataZoomActiveTag.background && Math.abs(this.dragMaskSize())) || - 0, - ...dragMaskStyle - }, - 'rect' - ) as IRect; - } - } - - /** - * 判断文字是否超出datazoom范围 - */ - protected isTextOverflow(componentBoundsLike: IBoundsLike, textBounds: IBoundsLike | null, layout: 'start' | 'end') { - if (!textBounds) { - return false; - } - if (this._isHorizontal) { - if (layout === 'start') { - if (textBounds.x1 < componentBoundsLike.x1) { - return true; - } - } else { - if (textBounds.x2 > componentBoundsLike.x2) { - return true; - } - } - } else { - if (layout === 'start') { - if (textBounds.y1 < componentBoundsLike.y1) { - return true; - } - } else { - if (textBounds.y2 > componentBoundsLike.y2) { - return true; - } - } - } - return false; - } - - protected setTextAttr(startTextBounds: IBoundsLike, endTextBounds: IBoundsLike) { - const { startTextStyle, endTextStyle } = this.attribute as DataZoomAttributes; - const { formatMethod: startTextFormat, ...restStartTextStyle } = startTextStyle; - const { formatMethod: endTextFormat, ...restEndTextStyle } = endTextStyle; - const { start, end } = this.state; - this._startValue = this._statePointToData(start); - this._endValue = this._statePointToData(end); - const { position, width, height } = this.getLayoutAttrFromConfig(); - - const startTextValue = startTextFormat ? startTextFormat(this._startValue) : this._startValue; - const endTextValue = endTextFormat ? endTextFormat(this._endValue) : this._endValue; - const componentBoundsLike = { - x1: position.x, - y1: position.y, - x2: position.x + width, - y2: position.y + height - }; - let startTextPosition: IPointLike; - let endTextPosition: IPointLike; - let startTextAlignStyle: any; - let endTextAlignStyle: any; - if (this._isHorizontal) { - startTextPosition = { - x: position.x + start * width, - y: position.y + height / 2 - }; - endTextPosition = { - x: position.x + end * width, - y: position.y + height / 2 - }; - startTextAlignStyle = { - textAlign: this.isTextOverflow(componentBoundsLike, startTextBounds, 'start') ? 'left' : 'right', - textBaseline: restStartTextStyle?.textStyle?.textBaseline ?? 'middle' - }; - endTextAlignStyle = { - textAlign: this.isTextOverflow(componentBoundsLike, endTextBounds, 'end') ? 'right' : 'left', - textBaseline: restEndTextStyle?.textStyle?.textBaseline ?? 'middle' - }; - } else { - startTextPosition = { - x: position.x + width / 2, - y: position.y + start * height - }; - endTextPosition = { - x: position.x + width / 2, - y: position.y + end * height - }; - startTextAlignStyle = { - textAlign: restStartTextStyle?.textStyle?.textAlign ?? 'center', - textBaseline: this.isTextOverflow(componentBoundsLike, startTextBounds, 'start') ? 'top' : 'bottom' - }; - endTextAlignStyle = { - textAlign: restEndTextStyle?.textStyle?.textAlign ?? 'center', - textBaseline: this.isTextOverflow(componentBoundsLike, endTextBounds, 'end') ? 'bottom' : 'top' - }; - } - - this._startText = this.maybeAddLabel( - this._container, - merge({}, restStartTextStyle, { - text: startTextValue, - x: startTextPosition.x, - y: startTextPosition.y, - visible: this._showText, - pickable: false, - childrenPickable: false, - textStyle: startTextAlignStyle - }), - `data-zoom-start-text-${position}` - ); - this._endText = this.maybeAddLabel( - this._container, - merge({}, restEndTextStyle, { - text: endTextValue, - x: endTextPosition.x, - y: endTextPosition.y, - visible: this._showText, - pickable: false, - childrenPickable: false, - textStyle: endTextAlignStyle - }), - `data-zoom-end-text-${position}` - ); - } - - protected renderText() { - let startTextBounds: IBoundsLike | null = null; - let endTextBounds: IBoundsLike | null = null; - - // 第一次绘制 - this.setTextAttr(startTextBounds, endTextBounds); - // 得到bounds - startTextBounds = this._startText.AABBBounds; - endTextBounds = this._endText.AABBBounds; - - // 第二次绘制: 将text限制在组件bounds内 - this.setTextAttr(startTextBounds, endTextBounds); - // 得到bounds - startTextBounds = this._startText.AABBBounds; - endTextBounds = this._endText.AABBBounds; - const { x1, x2, y1, y2 } = startTextBounds; - const { dx: startTextDx = 0, dy: startTextDy = 0 } = this.attribute.startTextStyle; - - // 第三次绘制: 避免startText和endText重叠, 如果重叠了, 对startText做位置调整(考虑到调整的最小化,只单独调整startText而不调整endText) - if (new Bounds().set(x1, y1, x2, y2).intersects(endTextBounds)) { - const direction = this.attribute.orient === 'bottom' || this.attribute.orient === 'right' ? -1 : 1; - - if (this._isHorizontal) { - const boundsYDiff = Math.abs(endTextBounds.y1 - endTextBounds.y2); // visible: false时, bounds可能是非法的 - this._startText.setAttribute('dy', startTextDy + direction * (Number.isFinite(boundsYDiff) ? boundsYDiff : 0)); - } else { - const boundsXDiff = Math.abs(endTextBounds.x1 - endTextBounds.x2); // visible: false时, bounds可能是非法的 - this._startText.setAttribute('dx', startTextDx + direction * (Number.isFinite(boundsXDiff) ? boundsXDiff : 0)); - } - } else { - if (this._isHorizontal) { - this._startText.setAttribute('dy', startTextDy); - } else { - this._startText.setAttribute('dx', startTextDx); - } - } + const { start, end, orient } = this.attribute as DataZoomAttributes; + this._isHorizontal = orient === 'top' || orient === 'bottom'; + start && (this._state.start = start); + end && (this._state.end = end); + this._renderer = new DataZoomRenderer(this._getRendererAttrs()); + this._interaction = new DataZoomInteraction(this._getInteractionAttrs()); } /** * 获取背景框中的位置和宽高 * @description 实际绘制的背景框中的高度或宽度 减去 中间手柄的高度或宽度 */ - protected getLayoutAttrFromConfig() { - if (this._layoutAttrFromConfig) { - return this._layoutAttrFromConfig; + getLayoutAttrFromConfig = () => { + if (this._layoutCacheFromConfig) { + return this._layoutCacheFromConfig; } const { position: positionConfig, @@ -690,546 +102,138 @@ export class DataZoom extends AbstractComponent> { } // stroke 需计入宽高, 否则dataZoom在画布边缘会被裁剪lineWidth / 2 - height += backgroundStyle.lineWidth / 2 ?? 1; - width += backgroundStyle.lineWidth / 2 ?? 1; + height += (backgroundStyle.lineWidth ?? 2) / 2; + width += (backgroundStyle.lineWidth ?? 2) / 2; - this._layoutAttrFromConfig = { + this._layoutCacheFromConfig = { position, width, height }; - return this._layoutAttrFromConfig; - } - - protected render() { - this._layoutAttrFromConfig = null; - const { - // start, - // end, - orient, - backgroundStyle, - backgroundChartStyle = {}, - selectedBackgroundStyle = {}, - selectedBackgroundChartStyle = {}, - middleHandlerStyle = {}, - startHandlerStyle = {}, - endHandlerStyle = {}, - brushSelect, - zoomLock - } = this.attribute as DataZoomAttributes; - const { start, end } = this.state; + return this._layoutCacheFromConfig; + }; - const { position, width, height } = this.getLayoutAttrFromConfig(); - const startHandlerMinSize = startHandlerStyle.triggerMinSize ?? 40; - const endHandlerMinSize = endHandlerStyle.triggerMinSize ?? 40; - const group = (this as unknown as IGroup).createOrUpdateChild('dataZoom-container', {}, 'group') as IGroup; - this._container = group; - this._background = group.createOrUpdateChild( - 'background', - { - x: position.x, - y: position.y, - width, - height, - cursor: brushSelect ? 'crosshair' : 'auto', - ...backgroundStyle, - pickable: zoomLock ? false : backgroundStyle.pickable ?? true + private _getRendererAttrs(): DataZoomRendererAttrs { + return { + attribute: this.attribute, + getLayoutAttrFromConfig: this.getLayoutAttrFromConfig, + setState: (state: { start: number; end: number }) => { + this._state = state; }, - 'rect' - ) as IRect; - - /** 背景图表 */ - backgroundChartStyle.line?.visible && this.setPreviewAttributes('line', group); - backgroundChartStyle.area?.visible && this.setPreviewAttributes('area', group); - - /** drag mask */ - brushSelect && this.renderDragMask(); - - /** 选中背景 */ - if (this._isHorizontal) { - // 选中部分 - this._selectedBackground = group.createOrUpdateChild( - 'selectedBackground', - { - x: position.x + start * width, - y: position.y, - width: (end - start) * width, - height: height, - cursor: brushSelect ? 'crosshair' : 'move', - ...selectedBackgroundStyle, - pickable: zoomLock ? false : (selectedBackgroundChartStyle as any).pickable ?? true - }, - 'rect' - ) as IRect; - } else { - // 选中部分 - this._selectedBackground = group.createOrUpdateChild( - 'selectedBackground', - { - x: position.x, - y: position.y + start * height, - width, - height: (end - start) * height, - cursor: brushSelect ? 'crosshair' : 'move', - ...selectedBackgroundStyle, - pickable: zoomLock ? false : selectedBackgroundStyle.pickable ?? true - }, - 'rect' - ) as IRect; - } - - /** 选中的背景图表 */ - selectedBackgroundChartStyle.line?.visible && this.setSelectedPreviewAttributes('line', group); - selectedBackgroundChartStyle.area?.visible && this.setSelectedPreviewAttributes('area', group); - - /** 左右 和 中间手柄 */ - if (this._isHorizontal) { - if (middleHandlerStyle.visible) { - const middleHandlerBackgroundSize = middleHandlerStyle.background?.size || 10; - this._middleHandlerRect = group.createOrUpdateChild( - 'middleHandlerRect', - { - x: position.x + start * width, - y: position.y - middleHandlerBackgroundSize, - width: (end - start) * width, - height: middleHandlerBackgroundSize, - ...middleHandlerStyle.background?.style, - pickable: zoomLock ? false : middleHandlerStyle.background?.style?.pickable ?? true - }, - 'rect' - ) as IRect; - this._middleHandlerSymbol = group.createOrUpdateChild( - 'middleHandlerSymbol', - { - x: position.x + ((start + end) / 2) * width, - y: position.y - middleHandlerBackgroundSize / 2, - strokeBoundsBuffer: 0, - angle: 0, - symbolType: middleHandlerStyle.icon?.symbolType ?? 'square', - ...middleHandlerStyle.icon, - pickable: zoomLock ? false : middleHandlerStyle.icon.pickable ?? true - }, - 'symbol' - ) as ISymbol; - } - this._startHandler = group.createOrUpdateChild( - 'startHandler', - { - x: position.x + start * width, - y: position.y + height / 2, - size: height, - symbolType: startHandlerStyle.symbolType ?? 'square', - ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any), - ...startHandlerStyle, - pickable: zoomLock ? false : startHandlerStyle.pickable ?? true - }, - 'symbol' - ) as ISymbol; - this._endHandler = group.createOrUpdateChild( - 'endHandler', - { - x: position.x + end * width, - y: position.y + height / 2, - size: height, - symbolType: endHandlerStyle.symbolType ?? 'square', - ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any), - ...endHandlerStyle, - pickable: zoomLock ? false : endHandlerStyle.pickable ?? true - }, - 'symbol' - ) as ISymbol; - - // 透明mask构造热区, 热区大小配置来自handler bounds - const startHandlerWidth = Math.max(this._startHandler.AABBBounds.width(), startHandlerMinSize); - const startHandlerHeight = Math.max(this._startHandler.AABBBounds.height(), startHandlerMinSize); - const endHandlerWidth = Math.max(this._endHandler.AABBBounds.width(), endHandlerMinSize); - const endHandlerHeight = Math.max(this._endHandler.AABBBounds.height(), endHandlerMinSize); - - this._startHandlerMask = group.createOrUpdateChild( - 'startHandlerMask', - { - x: position.x + start * width - startHandlerWidth / 2, - y: position.y + height / 2 - startHandlerHeight / 2, - width: startHandlerWidth, - height: startHandlerHeight, - fill: 'white', - fillOpacity: 0, - zIndex: 999, - ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any), - pickable: !zoomLock - }, - 'rect' - ) as IRect; - this._endHandlerMask = group.createOrUpdateChild( - 'endHandlerMask', - { - x: position.x + end * width - endHandlerWidth / 2, - y: position.y + height / 2 - endHandlerHeight / 2, - width: endHandlerWidth, - height: endHandlerHeight, - fill: 'white', - fillOpacity: 0, - zIndex: 999, - ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any), - pickable: !zoomLock - }, - 'rect' - ) as IRect; - } else { - if (middleHandlerStyle.visible) { - const middleHandlerBackgroundSize = middleHandlerStyle.background?.size || 10; - - this._middleHandlerRect = group.createOrUpdateChild( - 'middleHandlerRect', - { - x: orient === 'left' ? position.x - middleHandlerBackgroundSize : position.x + width, - y: position.y + start * height, - width: middleHandlerBackgroundSize, - height: (end - start) * height, - ...middleHandlerStyle.background?.style, - pickable: zoomLock ? false : middleHandlerStyle.background?.style?.pickable ?? true - }, - 'rect' - ) as IRect; - this._middleHandlerSymbol = group.createOrUpdateChild( - 'middleHandlerSymbol', - { - x: - orient === 'left' - ? position.x - middleHandlerBackgroundSize / 2 - : position.x + width + middleHandlerBackgroundSize / 2, - y: position.y + ((start + end) / 2) * height, - // size: height, - angle: 90 * (Math.PI / 180), - symbolType: middleHandlerStyle.icon?.symbolType ?? 'square', - strokeBoundsBuffer: 0, - ...middleHandlerStyle.icon, - pickable: zoomLock ? false : middleHandlerStyle.icon?.pickable ?? true - }, - 'symbol' - ) as ISymbol; - } - this._startHandler = group.createOrUpdateChild( - 'startHandler', - { - x: position.x + width / 2, - y: position.y + start * height, - size: width, - symbolType: startHandlerStyle.symbolType ?? 'square', - ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any), - ...startHandlerStyle, - pickable: zoomLock ? false : startHandlerStyle.pickable ?? true - }, - 'symbol' - ) as ISymbol; - - this._endHandler = group.createOrUpdateChild( - 'endHandler', - { - x: position.x + width / 2, - y: position.y + end * height, - size: width, - symbolType: endHandlerStyle.symbolType ?? 'square', - ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any), - ...endHandlerStyle, - pickable: zoomLock ? false : endHandlerStyle.pickable ?? true - }, - 'symbol' - ) as ISymbol; - - // 透明mask构造热区, 热区大小配置来自handler bounds - const startHandlerWidth = Math.max(this._startHandler.AABBBounds.width(), startHandlerMinSize); - const startHandlerHeight = Math.max(this._startHandler.AABBBounds.height(), startHandlerMinSize); - const endHandlerWidth = Math.max(this._endHandler.AABBBounds.width(), endHandlerMinSize); - const endHandlerHeight = Math.max(this._endHandler.AABBBounds.height(), endHandlerMinSize); - - this._startHandlerMask = group.createOrUpdateChild( - 'startHandlerMask', - { - x: position.x + width / 2 + startHandlerWidth / 2, - y: position.y + start * height - startHandlerHeight / 2, - width: endHandlerHeight, - height: endHandlerWidth, - fill: 'white', - fillOpacity: 0, - zIndex: 999, - ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any), - pickable: !zoomLock - }, - 'rect' - ) as IRect; - this._endHandlerMask = group.createOrUpdateChild( - 'endHandlerMask', - { - x: position.x + width / 2 + endHandlerWidth / 2, - y: position.y + end * height - endHandlerHeight / 2, - width: endHandlerHeight, - height: endHandlerWidth, - fill: 'white', - fillOpacity: 0, - zIndex: 999, - ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any), - pickable: !zoomLock - }, - 'rect' - ) as IRect; - } - - /** 左右文字 */ - if (this._showText) { - this.renderText(); - } + getState: () => this._state, + getContainer: () => this._container + }; } - computeBasePoints() { - const { orient } = this.attribute as DataZoomAttributes; - const { position, width, height } = this.getLayoutAttrFromConfig(); - let basePointStart: any; - let basePointEnd: any; - if (this._isHorizontal) { - basePointStart = [ - { - x: position.x, - y: position.y + height - } - ]; - basePointEnd = [ - { - x: position.x + width, - y: position.y + height - } - ]; - } else if (orient === 'left') { - basePointStart = [ - { - x: position.x + width, - y: position.y - } - ]; - basePointEnd = [ - { - x: position.x + width, - y: position.y + height - } - ]; - } else { - basePointStart = [ - { - x: position.x, - y: position.y + height - } - ]; - basePointEnd = [ - { - x: position.x, - y: position.y - } - ]; - } + private _getInteractionAttrs(): InteractionAttributes { return { - basePointStart, - basePointEnd + stage: this.stage, + attribute: this.attribute, + startHandlerMask: this._renderer.startHandlerMask, + endHandlerMask: this._renderer.endHandlerMask, + middleHandlerSymbol: this._renderer.middleHandlerSymbol, + middleHandlerRect: this._renderer.middleHandlerRect, + selectedBackground: this._renderer.selectedBackground, + background: this._renderer.background, + previewGroup: this._renderer.previewGroup, + selectedPreviewGroup: this._renderer.selectedPreviewGroup, + getLayoutAttrFromConfig: this.getLayoutAttrFromConfig, + setState: (state: { start: number; end: number }) => { + this._state = state; + }, + getState: () => this._state, + getGlobalTransMatrix: () => this.globalTransMatrix }; } - protected simplifyPoints(points: IPointLike[]) { - // 采样压缩率策略: 如果没做任何配置, 那么限制在niceCount内, 如果做了配置, 则按照配置计算 - const niceCount = 10000; // 经验值 - if (points.length > niceCount) { - const tolerance = this.attribute.tolerance ?? this._previewData.length / niceCount; - return flatten_simplify(points, tolerance, false); + bindEvents(): void { + if (this.attribute.disableTriggerEvent) { + this.setAttribute('childrenPickable', false); + return; } - return points; - } - - protected getPreviewLinePoints() { - let previewPoints = this._previewData.map(d => { - return { - x: this._previewPointsX && this._previewPointsX(d), - y: this._previewPointsY && this._previewPointsY(d) - }; + this._interaction.bindEvents(); + this._interaction.on(IDataZoomInteractiveEvent.stateUpdate, ({ shouldRender }) => { + if (shouldRender) { + this._renderer.renderDataZoom(true); + } }); - // 仅在有数据的时候增加base point, 以弥补背景图表两端的不连续缺口。不然的话没有数据时,会因为base point而仍然绘制图形 - if (previewPoints.length === 0) { - return previewPoints; - } - - // 采样 - previewPoints = this.simplifyPoints(previewPoints); - - const { basePointStart, basePointEnd } = this.computeBasePoints(); - return basePointStart.concat(previewPoints).concat(basePointEnd); - } - - protected getPreviewAreaPoints() { - let previewPoints: IPointLike[] = this._previewData.map(d => { - return { - x: this._previewPointsX && this._previewPointsX(d), - y: this._previewPointsY && this._previewPointsY(d), - x1: this._previewPointsX1 && this._previewPointsX1(d), - y1: this._previewPointsY1 && this._previewPointsY1(d) - }; + this._interaction.on(IDataZoomInteractiveEvent.dataZoomUpdate, ({ start, end, tag }) => { + this._dispatchEvent(IDataZoomEvent.dataZoomChange, { start, end, tag }); }); - // 仅在有数据的时候增加base point, 以弥补背景图表两端的不连续缺口。不然的话没有数据时,会因为base point而仍然绘制图形 - if (previewPoints.length === 0) { - return previewPoints; - } - - // 采样 - previewPoints = this.simplifyPoints(previewPoints); - - const { basePointStart, basePointEnd } = this.computeBasePoints(); - return basePointStart.concat(previewPoints).concat(basePointEnd); - } - - /** 使用callback绘制背景图表 (数据和数据映射从外部传进来) */ - protected setPreviewAttributes(type: 'line' | 'area', group: IGroup) { - if (!this._previewGroup) { - this._previewGroup = group.createOrUpdateChild('previewGroup', { pickable: false }, 'group') as IGroup; - } - if (type === 'line') { - this._previewLine = this._previewGroup.createOrUpdateChild('previewLine', {}, 'line') as ILine; - } else { - this._previewArea = this._previewGroup.createOrUpdateChild( - 'previewArea', - { curveType: 'basis' }, - 'area' - ) as IArea; - } - - const { backgroundChartStyle = {} } = this.attribute as DataZoomAttributes; - - type === 'line' && - this._previewLine.setAttributes({ - points: this.getPreviewLinePoints(), - curveType: 'basis', - pickable: false, - ...backgroundChartStyle.line + this._interaction.on(IDataZoomInteractiveEvent.maskUpdate, () => { + this._renderer.renderDragMask(); + }); + if (this.attribute.showDetail === 'auto') { + this._container.addEventListener('pointerenter', () => { + this._renderer.showText = true; + this._renderer.renderText(); }); - type === 'area' && - this._previewArea.setAttributes({ - points: this.getPreviewAreaPoints(), - curveType: 'basis', - pickable: false, - ...backgroundChartStyle.area + this._container.addEventListener('pointerleave', () => { + this._renderer.showText = false; + this._renderer.renderText(); }); - } - - /** 使用callback绘制选中的背景图表 (数据和数据映射从外部传进来) */ - protected setSelectedPreviewAttributes(type: 'area' | 'line', group: IGroup) { - if (!this._selectedPreviewGroupClip) { - this._selectedPreviewGroupClip = group.createOrUpdateChild( - 'selectedPreviewGroupClip', - { pickable: false }, - 'group' - ) as IGroup; - this._selectedPreviewGroup = this._selectedPreviewGroupClip.createOrUpdateChild( - 'selectedPreviewGroup', - {}, - 'group' - ) as IGroup; - } - - if (type === 'line') { - this._selectedPreviewLine = this._selectedPreviewGroup.createOrUpdateChild( - 'selectedPreviewLine', - {}, - 'line' - ) as ILine; - } else { - this._selectedPreviewArea = this._selectedPreviewGroup.createOrUpdateChild( - 'selectedPreviewArea', - { curveType: 'basis' }, - 'area' - ) as IArea; } + } - const { selectedBackgroundChartStyle = {} } = this.attribute as DataZoomAttributes; + setAttributes(params: Partial>, forceUpdateTag?: boolean): void { + const { start, end } = this.attribute as DataZoomAttributes; + start && (this._state.start = start); + end && (this._state.end = end); - const { start, end } = this.state; - const { position, width, height } = this.getLayoutAttrFromConfig(); - this._selectedPreviewGroupClip.setAttributes({ - x: this._isHorizontal ? position.x + start * width : position.x, - y: this._isHorizontal ? position.y : position.y + start * height, - width: this._isHorizontal ? (end - start) * width : width, - height: this._isHorizontal ? height : (end - start) * height, - clip: true, - pickable: false - } as any); - this._selectedPreviewGroup.setAttributes({ - x: -(this._isHorizontal ? position.x + start * width : position.x), - y: -(this._isHorizontal ? position.y : position.y + start * height), - width: this._isHorizontal ? (end - start) * width : width, - height: this._isHorizontal ? height : (end - start) * height, - pickable: false - } as any); - type === 'line' && - this._selectedPreviewLine.setAttributes({ - points: this.getPreviewLinePoints(), - curveType: 'basis', - pickable: false, - ...selectedBackgroundChartStyle.line - }); - type === 'area' && - this._selectedPreviewArea.setAttributes({ - points: this.getPreviewAreaPoints(), - curveType: 'basis', - pickable: false, - ...selectedBackgroundChartStyle.area - }); + this._renderer.setAttributes(this._getRendererAttrs()); + this._interaction.setAttributes(this._getInteractionAttrs()); + super.setAttributes(params, forceUpdateTag); } - protected maybeAddLabel(container: IGroup, attributes: TagAttributes, name: string): Tag { - let labelShape = (this as unknown as IGroup).find(node => node.name === name, true) as unknown as Tag; - if (labelShape) { - labelShape.setAttributes(attributes); - } else { - labelShape = new Tag(attributes); - labelShape.name = name; - } + render(): void { + this._layoutCacheFromConfig = null; + this._container = this.createOrUpdateChild('datazoom-container', {}, 'group') as IGroup; + this._renderer.renderDataZoom(); + this._interaction.setAttributes(this._getInteractionAttrs()); + } - container.add(labelShape as unknown as INode); - return labelShape; + release(all?: boolean): void { + /** + * 浏览器上的事件必须解绑,防止内存泄漏,场景树上的事件会自动解绑 + */ + super.release(all); + this._interaction.clearDragEvents(); } /** 外部重置组件的起始状态 */ setStartAndEnd(start?: number, end?: number) { - const { start: startAttr, end: endAttr } = this.attribute as DataZoomAttributes; - if (isValid(start) && isValid(end) && (start !== this.state.start || end !== this.state.end)) { - this.state.start = start; - this.state.end = end; - if (startAttr !== this.state.start || endAttr !== this.state.end) { - this.setStateAttr(start, end, true); - this._dispatchEvent('change', { - start, - end, - tag: this._activeTag - }); - } + const { start: startState, end: endState } = this._state; + if (isValid(start) && isValid(end) && (start !== startState || end !== endState)) { + this._state = { start, end }; + this._renderer.renderDataZoom(true); + this._dispatchEvent(IDataZoomEvent.dataZoomChange, { + start, + end + }); } } /** 外部更新背景图表的数据 */ setPreviewData(data: any[]) { - this._previewData = data; + this._renderer.previewData = data; } /** 外部更新手柄文字 */ setText(text: string, tag: 'start' | 'end') { if (tag === 'start') { - this._startText.setAttribute('text', text); + this._renderer.startText.setAttribute('text', text); } else { - this._endText.setAttribute('text', text); + this._renderer.endText.setAttribute('text', text); } } /** 外部获取起始点数据值 */ getStartValue() { - return this._startValue; + return this._renderer.startValue; } getEndTextValue() { - return this._endValue; + return this._renderer.endValue; } getMiddleHandlerSize() { @@ -1241,29 +245,18 @@ export class DataZoom extends AbstractComponent> { /** 外部传入数据映射 */ setPreviewPointsX(callback: (d: any) => number) { - isFunction(callback) && (this._previewPointsX = callback); + isFunction(callback) && (this._renderer.previewPointsX = callback); } setPreviewPointsY(callback: (d: any) => number) { - isFunction(callback) && (this._previewPointsY = callback); + isFunction(callback) && (this._renderer.previewPointsY = callback); } setPreviewPointsX1(callback: (d: any) => number) { - isFunction(callback) && (this._previewPointsX1 = callback); + isFunction(callback) && (this._renderer.previewPointsX1 = callback); } setPreviewPointsY1(callback: (d: any) => number) { - isFunction(callback) && (this._previewPointsY1 = callback); + isFunction(callback) && (this._renderer.previewPointsY1 = callback); } setStatePointToData(callback: (state: number) => any) { - isFunction(callback) && (this._statePointToData = callback); - } - - release(all?: boolean): void { - /** - * 浏览器上的事件必须解绑,防止内存泄漏,场景树上的事件会自动解绑 - */ - super.release(all); - (vglobal.env === 'browser' ? vglobal : this.stage).addEventListener('touchmove', this._handleTouchMove, { - passive: false - }); - this._clearDragEvents(); + isFunction(callback) && (this._renderer.statePointToData = callback); } } diff --git a/packages/vrender-components/src/data-zoom/interaction.ts b/packages/vrender-components/src/data-zoom/interaction.ts new file mode 100644 index 000000000..96258ac09 --- /dev/null +++ b/packages/vrender-components/src/data-zoom/interaction.ts @@ -0,0 +1,396 @@ +import { DataZoomActiveTag, IDataZoomInteractiveEvent, type DataZoomAttributes } from './type'; +import { getEndTriggersOfDrag } from '../util/event'; +import type { IPointLike, Dict, Matrix } from '@visactor/vutils'; +import { vglobal } from '@visactor/vrender-core'; +import type { FederatedPointerEvent, IGroup, IRect, ISymbol, IStage } from '@visactor/vrender-core'; +import { clamp, debounce, EventEmitter, throttle } from '@visactor/vutils'; +const delayMap = { + debounce: debounce, + throttle: throttle +}; +export interface InteractionAttributes { + stage: IStage; + attribute: Partial>; + startHandlerMask?: IRect; + endHandlerMask?: IRect; + middleHandlerSymbol?: ISymbol; + middleHandlerRect?: IRect; + selectedBackground?: IRect; + background?: IRect; + previewGroup?: IGroup; + selectedPreviewGroup?: IGroup; + getLayoutAttrFromConfig?: any; + getState: () => { start: number; end: number }; + setState: (state: { start: number; end: number }) => void; + getGlobalTransMatrix: () => Matrix; +} +export class DataZoomInteraction extends EventEmitter { + /** 上层透传 */ + stage: IStage; + attribute!: Partial>; + private _getLayoutAttrFromConfig: any; + private _getState: () => { start: number; end: number }; + private _setState: (state: { start: number; end: number }) => void; + private _getGlobalTransMatrix: () => Matrix; + + /** 图元 */ + private _startHandlerMask: IRect | undefined; + private _middleHandlerSymbol: ISymbol | undefined; + private _middleHandlerRect: IRect | undefined; + private _endHandlerMask: IRect | undefined; + private _background: IRect | undefined; + private _previewGroup: IGroup | undefined; + private _selectedPreviewGroup: IGroup | undefined; + private _selectedBackground: IRect | undefined; + + /** 交互 */ + private _activeTag!: DataZoomActiveTag; + private _activeItem!: any; + private _activeState = false; + private _activeCache: { + startPos: IPointLike; + lastPos: IPointLike; + } = { + startPos: { x: 0, y: 0 }, + lastPos: { x: 0, y: 0 } + }; + private _layoutCache: { + attPos: 'x' | 'y'; + attSize: 'width' | 'height'; + size: number; + } = { + attPos: 'x', + attSize: 'width', + size: 0 + }; + private _spanCache: number; + + private _onHandlerPointerMove: (e: FederatedPointerEvent) => void; + + constructor(props: InteractionAttributes) { + super(); + this._initAttrs(props); + } + + setAttributes(props: InteractionAttributes): void { + this._initAttrs(props); + this._onHandlerPointerMove = + (this.attribute?.delayTime ?? 0) === 0 + ? this._pointerMove + : delayMap[this.attribute?.delayType ?? 'debounce'](this._pointerMove, this.attribute?.delayTime ?? 0); + } + + private _initAttrs(props: InteractionAttributes) { + this.stage = props.stage; + this.attribute = props.attribute; + this._startHandlerMask = props.startHandlerMask; + this._endHandlerMask = props.endHandlerMask; + this._middleHandlerSymbol = props.middleHandlerSymbol; + this._middleHandlerRect = props.middleHandlerRect; + this._selectedBackground = props.selectedBackground; + this._background = props.background; + this._previewGroup = props.previewGroup; + this._selectedPreviewGroup = props.selectedPreviewGroup; + this._getLayoutAttrFromConfig = props.getLayoutAttrFromConfig; + this._getState = props.getState; + this._setState = props.setState; + + const { width, height } = this._getLayoutAttrFromConfig(); + this._spanCache = this._getState().end - this._getState().start; + const isHorizontal = this.attribute.orient === 'top' || this.attribute.orient === 'bottom'; + this._layoutCache.size = isHorizontal ? width : height; + this._layoutCache.attPos = isHorizontal ? 'x' : 'y'; + this._layoutCache.attSize = isHorizontal ? 'width' : 'height'; + this._getGlobalTransMatrix = props.getGlobalTransMatrix; + } + + clearDragEvents() { + const evtTarget = vglobal.env === 'browser' ? vglobal : this.stage; + const triggers = getEndTriggersOfDrag(); + + evtTarget.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true }); + triggers.forEach((trigger: string) => { + evtTarget.removeEventListener(trigger, this._onHandlerPointerUp); + }); + + (this as unknown as IGroup).off('pointermove', this._onHandlerPointerMove, { + capture: true + }); + } + + clearVGlobalEvents() { + (vglobal.env === 'browser' ? vglobal : this.stage).addEventListener('touchmove', this._handleTouchMove, { + passive: false + }); + } + + bindEvents(): void { + const { brushSelect } = this.attribute as DataZoomAttributes; + // 拖拽开始 + this._startHandlerMask?.addEventListener( + 'pointerdown', + (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'start') as unknown as EventListener + ); + this._endHandlerMask?.addEventListener( + 'pointerdown', + (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'end') as unknown as EventListener + ); + this._middleHandlerSymbol?.addEventListener( + 'pointerdown', + (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'middleSymbol') as unknown as EventListener + ); + this._middleHandlerRect?.addEventListener( + 'pointerdown', + (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'middleRect') as unknown as EventListener + ); + const selectedTag = brushSelect ? 'background' : 'middleRect'; + this._selectedBackground?.addEventListener( + 'pointerdown', + (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, selectedTag) as unknown as EventListener + ); + brushSelect && + this._background?.addEventListener( + 'pointerdown', + (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'background') as unknown as EventListener + ); + brushSelect && + this._previewGroup?.addEventListener( + 'pointerdown', + (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'background') as unknown as EventListener + ); + this._selectedPreviewGroup?.addEventListener( + 'pointerdown', + (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, selectedTag) as unknown as EventListener + ); + + (vglobal.env === 'browser' ? vglobal : this.stage).addEventListener('touchmove', this._handleTouchMove, { + passive: false + }); + } + private _handleTouchMove = (e: TouchEvent) => { + if (this._activeState) { + /** + * https://developer.mozilla.org/zh-CN/docs/Web/CSS/overscroll-behavior + * 由于浏览器的overscroll-behavior属性,需要在move的时候阻止浏览器默认行为,否则会因为浏览器检测到scroll行为,阻止pointer事件, + * 抛出pointercancel事件,导致拖拽行为中断。 + */ + e.preventDefault(); + } + }; + + /** + * 拖拽开始事件 + * @description 开启activeState + 通过tag判断事件在哪个元素上触发 并 更新交互坐标 + */ + private _onHandlerPointerDown = (e: FederatedPointerEvent, tag: string) => { + // 清除之前的事件,防止没有被清除掉 + this.clearDragEvents(); + if (tag === 'start') { + this._activeTag = DataZoomActiveTag.startHandler; + this._activeItem = this._startHandlerMask; + } else if (tag === 'end') { + this._activeTag = DataZoomActiveTag.endHandler; + this._activeItem = this._endHandlerMask; + } else if (tag === 'middleRect') { + this._activeTag = DataZoomActiveTag.middleHandler; + this._activeItem = this._middleHandlerRect; + } else if (tag === 'middleSymbol') { + this._activeTag = DataZoomActiveTag.middleHandler; + this._activeItem = this._middleHandlerSymbol; + } else if (tag === 'background') { + this._activeTag = DataZoomActiveTag.background; + this._activeItem = this._background; + } + this._activeState = true; + this._activeCache.startPos = this._eventPosToStagePos(e); + this._activeCache.lastPos = this._eventPosToStagePos(e); + const evtTarget = vglobal.env === 'browser' ? vglobal : this.stage; + const triggers = getEndTriggersOfDrag(); + + /** + * move的时候,需要通过 capture: true,能够在捕获截断被拦截, + */ + evtTarget.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true }); + (this as unknown as IGroup).on('pointermove', this._onHandlerPointerMove, { + capture: true + }); + + triggers.forEach((trigger: string) => { + evtTarget.addEventListener(trigger, this._onHandlerPointerUp); + }); + }; + + /** + * 拖拽进行事件 + * @description 分为以下四种情况: + * 1. 在背景 or 背景图表上拖拽 (activeTag === 'background'): 改变lastPos => only renderDragMask + * 2. 在middleHandler上拖拽 (activeTag === 'middleHandler'): 改变lastPos、start & end + 边界处理: 防止拖拽结果超出背景 => render + * 3. 在startHandler上拖拽 (activeTag === 'startHandler'): 改变lastPos、start & end + 边界处理: startHandler和endHandler交换 => render + * 4. 在endHandler上拖拽,同上 + */ + private _pointerMove = (e: FederatedPointerEvent) => { + const { brushSelect } = this.attribute as DataZoomAttributes; + const { position } = this._getLayoutAttrFromConfig(); + const pos = this._eventPosToStagePos(e); + + const { attPos, size, attSize } = this._layoutCache; + const dis = (pos[attPos] - this._activeCache.lastPos[attPos]) / size; + const statePos = (pos[attPos] - position[attPos]) / this._getLayoutAttrFromConfig()[attSize]; + + let { start, end } = this._getState(); + let shouldRender = true; + if (this._activeState) { + if (this._activeTag === DataZoomActiveTag.middleHandler) { + ({ start, end } = this._moveZoomWithMiddle(dis)); + } else if (this._activeTag === DataZoomActiveTag.startHandler) { + ({ start, end } = this._moveZoomWithHandler(statePos, 'start')); + } else if (this._activeTag === DataZoomActiveTag.endHandler) { + ({ start, end } = this._moveZoomWithHandler(statePos, 'end')); + } else if (this._activeTag === DataZoomActiveTag.background && brushSelect) { + ({ start, end } = this._moveZoomWithBackground(statePos)); + shouldRender = false; + this._dispatchEvent(IDataZoomInteractiveEvent.maskUpdate); + } + this._activeCache.lastPos = pos; + } + + // 避免attributes相同时, 重复渲染 + if (this._getState().start !== start || this._getState().end !== end) { + this._setStateAttr(start, end); + this._dispatchEvent(IDataZoomInteractiveEvent.stateUpdate, { + start: this._getState().start, + end: this._getState().end, + shouldRender, + tag: this._activeTag + }); + if (this.attribute.realTime) { + this._dispatchEvent(IDataZoomInteractiveEvent.dataZoomUpdate, { + start: this._getState().start, + end: this._getState().end, + shouldRender: true, + tag: this._activeTag + }); + } + } + }; + + /** state 边界处理 */ + private _setStateAttr(start: number, end: number) { + const { zoomLock = false, minSpan = 0, maxSpan = 1 } = this.attribute as DataZoomAttributes; + const span = end - start; + if (span !== this._spanCache && (zoomLock || span < minSpan || span > maxSpan)) { + return; + } + this._spanCache = span; + this._setState({ start, end }); + } + /** + * @description 拖拽middleHandler, 改变start和end + */ + private _moveZoomWithMiddle(dis: number) { + const { start: staetState, end: endState } = this._getState(); + // 拖拽middleHandler时,限制在background范围内 + if (dis > 0 && endState + dis > 1) { + dis = 1 - endState; + } else if (dis < 0 && staetState + dis < 0) { + dis = -staetState; + } + return { + start: clamp(staetState + dis, 0, 1), + end: clamp(endState + dis, 0, 1) + }; + } + + /** + * @description 拖拽startHandler/endHandler, 改变start和end + */ + private _moveZoomWithHandler(statePos: number, handler: 'start' | 'end') { + const { start, end } = this._getState(); + let newStart = start; + let newEnd = end; + if (handler === 'start') { + if (statePos > end) { + newStart = end; + newEnd = statePos; + this._activeTag = DataZoomActiveTag.endHandler; + } else { + newStart = statePos; + } + } else if (handler === 'end') { + if (statePos < start) { + newEnd = start; + newStart = statePos; + this._activeTag = DataZoomActiveTag.startHandler; + } else { + newEnd = statePos; + } + } + return { + start: clamp(newStart, 0, 1), + end: clamp(newEnd, 0, 1) + }; + } + + /** + * @description 拖拽背景, 改变start和end + */ + private _moveZoomWithBackground(statePos: number) { + const { position } = this._getLayoutAttrFromConfig(); + const { attSize } = this._layoutCache; + const startPos = + (this._activeCache.startPos[this._layoutCache.attPos] - position[this._layoutCache.attPos]) / + this._getLayoutAttrFromConfig()[attSize]; + const endPos = statePos; + let start = clamp(startPos, 0, 1); + let end = clamp(endPos, 0, 1); + if (start > end) { + [start, end] = [end, start]; + } + return { start, end }; + } + + /** + * 拖拽结束事件 + * @description 关闭activeState + 边界情况处理: 防止拖拽后start和end过近 + */ + private _onHandlerPointerUp = (e: FederatedPointerEvent) => { + if (this._activeState) { + // brush的时候, 只改变了state, 没有触发重新渲染, 在抬起鼠标时触发 + if (this._activeTag === DataZoomActiveTag.background) { + this._setStateAttr(this._getState().start, this._getState().end); + this._dispatchEvent(IDataZoomInteractiveEvent.stateUpdate, { + start: this._getState().start, + end: this._getState().end, + shouldRender: true, + tag: this._activeTag + }); + } + } + this._activeState = false; + // 此次dispatch不能被省略 + // 因为pointermove时, 已经将状态更新至最新, 所以在pointerup时, 必定start = state.start & end = state.end + // 而realTime = false时, 需要依赖这次dispatch来更新图表图元 + this._dispatchEvent(IDataZoomInteractiveEvent.dataZoomUpdate, { + start: this._getState().start, + end: this._getState().end, + shouldRender: true, + tag: this._activeTag + }); + + this.clearDragEvents(); + }; + + /** 事件系统坐标转换为stage坐标 */ + private _eventPosToStagePos(e: FederatedPointerEvent) { + const result = { x: 0, y: 0 }; + // 1. 外部坐标 -> 内部坐标 + const stagePoints = this.stage?.eventPointTransform(e as any) ?? { x: 0, y: 0 }; // updateSpec过程中交互的话, stage可能为空 + // 2. 内部坐标 -> 组件坐标 (比如: 给layer设置 scale / x / y) + this._getGlobalTransMatrix().transformPoint(stagePoints, result); + return result; + } + + protected _dispatchEvent(eventName: IDataZoomInteractiveEvent, details?: Dict) { + this.emit(eventName, details); + } +} diff --git a/packages/vrender-components/src/data-zoom/renderer.ts b/packages/vrender-components/src/data-zoom/renderer.ts new file mode 100644 index 000000000..7ac78e6cb --- /dev/null +++ b/packages/vrender-components/src/data-zoom/renderer.ts @@ -0,0 +1,833 @@ +import type { DataZoomAttributes } from './type'; +import type { IBoundsLike, IPointLike } from '@visactor/vutils'; +import { flatten_simplify } from '@visactor/vrender-core'; +// eslint-disable-next-line no-duplicate-imports +import type { IArea, IGroup, ILine, IRect, ISymbol, INode } from '@visactor/vrender-core'; +// eslint-disable-next-line no-duplicate-imports +import { Bounds, isFunction, merge } from '@visactor/vutils'; +import { Tag, type TagAttributes } from '../tag'; +import { DEFAULT_HANDLER_ATTR_MAP } from './config'; +import { isTextOverflow } from './utils'; +export interface DataZoomRendererAttrs { + attribute: Partial>; + getLayoutAttrFromConfig: any; + getState: () => { start: number; end: number }; + setState: (state: { start: number; end: number }) => void; + getContainer: () => IGroup; +} +export class DataZoomRenderer { + /** 上层透传 */ + attribute: Partial>; + private _getLayoutAttrFromConfig: any; + private _getState: () => { start: number; end: number }; + private _getContainer: () => IGroup; + + /** 中间变量 */ + private _isHorizontal: boolean; + + /** 手柄 */ + private _startHandlerMask!: IRect; + get startHandlerMask() { + return this._startHandlerMask; + } + private _startHandler!: ISymbol; + private _middleHandlerSymbol!: ISymbol; + get middleHandlerSymbol() { + return this._middleHandlerSymbol; + } + private _middleHandlerRect!: IRect; + get middleHandlerRect() { + return this._middleHandlerRect; + } + private _endHandlerMask!: IRect; + get endHandlerMask() { + return this._endHandlerMask; + } + private _endHandler!: ISymbol; + private _selectedBackground!: IRect; + get selectedBackground() { + return this._selectedBackground; + } + private _dragMask!: IRect; + get dragMask() { + return this._dragMask; + } + private _startText!: Tag; + get startText() { + return this._startText; + } + private _endText!: Tag; + get endText() { + return this._endText; + } + private _startValue!: string | number; + get startValue() { + return this._startValue; + } + private _endValue!: string | number; + get endValue() { + return this._endValue; + } + private _showText!: boolean; + set showText(showText: boolean) { + this._showText = showText; + } + + /** 背景图表 */ + private _background!: IRect; + get background() { + return this._background; + } + private _previewData: any[] = []; + set previewData(previewData: any[]) { + this._previewData = previewData; + } + private _previewGroup!: IGroup; + get previewGroup() { + return this._previewGroup; + } + private _previewLine!: ILine; + private _previewArea!: IArea; + private _selectedPreviewGroupClip!: IGroup; + private _selectedPreviewGroup!: IGroup; + get selectedPreviewGroup() { + return this._selectedPreviewGroup; + } + private _selectedPreviewLine!: ILine; + private _selectedPreviewArea!: IArea; + + /** 回调函数 */ + private _previewPointsX!: (datum: any) => number; + set previewPointsX(previewPointsX: (datum: any) => number) { + this._previewPointsX = previewPointsX; + } + private _previewPointsY!: (datum: any) => number; + set previewPointsY(previewPointsY: (datum: any) => number) { + this._previewPointsY = previewPointsY; + } + private _previewPointsX1!: (datum: any) => number; + set previewPointsX1(previewPointsX1: (datum: any) => number) { + this._previewPointsX1 = previewPointsX1; + } + private _previewPointsY1!: (datum: any) => number; + set previewPointsY1(previewPointsY1: (datum: any) => number) { + this._previewPointsY1 = previewPointsY1; + } + private _statePointToData: (state: number) => any = state => state; + set statePointToData(statePointToData: (state: number) => any) { + this._statePointToData = statePointToData; + } + + private _initAttrs(props: DataZoomRendererAttrs) { + this.attribute = props.attribute; + this._isHorizontal = this.attribute.orient === 'top' || this.attribute.orient === 'bottom'; + const { previewData, previewPointsX, previewPointsY, previewPointsX1, previewPointsY1 } = this + .attribute as DataZoomAttributes; + + previewData && (this._previewData = previewData); + isFunction(previewPointsX) && (this._previewPointsX = previewPointsX); + isFunction(previewPointsY) && (this._previewPointsY = previewPointsY); + isFunction(previewPointsX1) && (this._previewPointsX1 = previewPointsX1); + isFunction(previewPointsY1) && (this._previewPointsY1 = previewPointsY1); + this._getState = props.getState; + this._getLayoutAttrFromConfig = props.getLayoutAttrFromConfig; + this._getContainer = props.getContainer; + } + + constructor(props: DataZoomRendererAttrs) { + const { showDetail } = props.attribute as DataZoomAttributes; + this._showText = showDetail === 'auto' ? false : showDetail; + this._initAttrs(props); + } + + setAttributes(props: DataZoomRendererAttrs): void { + this._initAttrs(props); + } + + renderDataZoom(onlyStateChange: boolean = false) { + const { + backgroundChartStyle = {}, + selectedBackgroundChartStyle = {}, + brushSelect + } = this.attribute as DataZoomAttributes; + + this._renderBackground(); + + /** 背景图表 */ + backgroundChartStyle.line?.visible && !onlyStateChange && this._setPreviewAttributes('line', this._getContainer()); + backgroundChartStyle.area?.visible && !onlyStateChange && this._setPreviewAttributes('area', this._getContainer()); + + /** 背景选框 */ + brushSelect && this.renderDragMask(); + + /** 选中背景 */ + this._renderSelectedBackground(); + + /** 选中的背景图表 */ + selectedBackgroundChartStyle.line?.visible && this._setSelectedPreviewClipAttributes('line', this._getContainer()); + selectedBackgroundChartStyle.line?.visible && !onlyStateChange && this._setSelectedPreviewAttributes('line'); + + selectedBackgroundChartStyle.line?.visible && this._setSelectedPreviewClipAttributes('area', this._getContainer()); + selectedBackgroundChartStyle.area?.visible && !onlyStateChange && this._setSelectedPreviewAttributes('area'); + + /** 左右 和 中间手柄 */ + this._renderHandler(); + + /** 左右文字 */ + if (this._showText) { + this.renderText(); + } + } + + /** + * @description 渲染拖拽mask + */ + renderDragMask() { + const { dragMaskStyle } = this.attribute as DataZoomAttributes; + const { position, width, height } = this._getLayoutAttrFromConfig(); + const { start, end } = this._getState(); + if (this._isHorizontal) { + this._dragMask = this._getContainer().createOrUpdateChild( + 'dragMask', + { + x: position.x + start * width, + y: position.y, + width: (end - start) * width, + height: height, + ...dragMaskStyle + }, + 'rect' + ) as IRect; + } else { + this._dragMask = this._getContainer().createOrUpdateChild( + 'dragMask', + { + x: position.x, + y: position.y + start * height, + width, + height: (end - start) * height, + ...dragMaskStyle + }, + 'rect' + ) as IRect; + } + return { start, end }; + } + + /** + * @description 渲染背景 + */ + private _renderBackground() { + const { backgroundStyle, brushSelect, zoomLock } = this.attribute as DataZoomAttributes; + const { position, width, height } = this._getLayoutAttrFromConfig(); + const group = this._getContainer(); + this._background = group.createOrUpdateChild( + 'background', + { + x: position.x, + y: position.y, + width, + height, + cursor: brushSelect ? 'crosshair' : 'auto', + ...backgroundStyle, + pickable: zoomLock ? false : (backgroundStyle.pickable ?? true) + }, + 'rect' + ) as IRect; + } + /** + * @description 渲染手柄 + */ + private _renderHandler() { + const { + orient, + middleHandlerStyle = {}, + startHandlerStyle = {}, + endHandlerStyle = {}, + zoomLock + } = this.attribute as DataZoomAttributes; + const { start, end } = this._getState(); + + const { position, width, height } = this._getLayoutAttrFromConfig(); + const startHandlerMinSize = startHandlerStyle.triggerMinSize ?? 40; + const endHandlerMinSize = endHandlerStyle.triggerMinSize ?? 40; + + const group = this._getContainer(); + if (this._isHorizontal) { + if (middleHandlerStyle.visible) { + const middleHandlerBackgroundSize = middleHandlerStyle.background?.size || 10; + this._middleHandlerRect = group.createOrUpdateChild( + 'middleHandlerRect', + { + x: position.x + start * width, + y: position.y - middleHandlerBackgroundSize, + width: (end - start) * width, + height: middleHandlerBackgroundSize, + ...middleHandlerStyle.background?.style, + pickable: zoomLock ? false : (middleHandlerStyle.background?.style?.pickable ?? true) + }, + 'rect' + ) as IRect; + this._middleHandlerSymbol = group.createOrUpdateChild( + 'middleHandlerSymbol', + { + x: position.x + ((start + end) / 2) * width, + y: position.y - middleHandlerBackgroundSize / 2, + strokeBoundsBuffer: 0, + angle: 0, + symbolType: middleHandlerStyle.icon?.symbolType ?? 'square', + ...middleHandlerStyle.icon, + pickable: zoomLock ? false : (middleHandlerStyle.icon.pickable ?? true) + }, + 'symbol' + ) as ISymbol; + } + this._startHandler = group.createOrUpdateChild( + 'startHandler', + { + x: position.x + start * width, + y: position.y + height / 2, + size: height, + symbolType: startHandlerStyle.symbolType ?? 'square', + ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any), + ...startHandlerStyle, + pickable: zoomLock ? false : (startHandlerStyle.pickable ?? true) + }, + 'symbol' + ) as ISymbol; + this._endHandler = group.createOrUpdateChild( + 'endHandler', + { + x: position.x + end * width, + y: position.y + height / 2, + size: height, + symbolType: endHandlerStyle.symbolType ?? 'square', + ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any), + ...endHandlerStyle, + pickable: zoomLock ? false : (endHandlerStyle.pickable ?? true) + }, + 'symbol' + ) as ISymbol; + + // 透明mask构造热区, 热区大小配置来自handler bounds + const startHandlerWidth = Math.max(this._startHandler.AABBBounds.width(), startHandlerMinSize); + const startHandlerHeight = Math.max(this._startHandler.AABBBounds.height(), startHandlerMinSize); + const endHandlerWidth = Math.max(this._endHandler.AABBBounds.width(), endHandlerMinSize); + const endHandlerHeight = Math.max(this._endHandler.AABBBounds.height(), endHandlerMinSize); + + this._startHandlerMask = group.createOrUpdateChild( + 'startHandlerMask', + { + x: position.x + start * width - startHandlerWidth / 2, + y: position.y + height / 2 - startHandlerHeight / 2, + width: startHandlerWidth, + height: startHandlerHeight, + fill: 'white', + fillOpacity: 0, + zIndex: 999, + ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any), + pickable: !zoomLock + }, + 'rect' + ) as IRect; + this._endHandlerMask = group.createOrUpdateChild( + 'endHandlerMask', + { + x: position.x + end * width - endHandlerWidth / 2, + y: position.y + height / 2 - endHandlerHeight / 2, + width: endHandlerWidth, + height: endHandlerHeight, + fill: 'white', + fillOpacity: 0, + zIndex: 999, + ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any), + pickable: !zoomLock + }, + 'rect' + ) as IRect; + } else { + if (middleHandlerStyle.visible) { + const middleHandlerBackgroundSize = middleHandlerStyle.background?.size || 10; + + this._middleHandlerRect = group.createOrUpdateChild( + 'middleHandlerRect', + { + x: orient === 'left' ? position.x - middleHandlerBackgroundSize : position.x + width, + y: position.y + start * height, + width: middleHandlerBackgroundSize, + height: (end - start) * height, + ...middleHandlerStyle.background?.style, + pickable: zoomLock ? false : (middleHandlerStyle.background?.style?.pickable ?? true) + }, + 'rect' + ) as IRect; + this._middleHandlerSymbol = group.createOrUpdateChild( + 'middleHandlerSymbol', + { + x: + orient === 'left' + ? position.x - middleHandlerBackgroundSize / 2 + : position.x + width + middleHandlerBackgroundSize / 2, + y: position.y + ((start + end) / 2) * height, + // size: height, + angle: 90 * (Math.PI / 180), + symbolType: middleHandlerStyle.icon?.symbolType ?? 'square', + strokeBoundsBuffer: 0, + ...middleHandlerStyle.icon, + pickable: zoomLock ? false : (middleHandlerStyle.icon?.pickable ?? true) + }, + 'symbol' + ) as ISymbol; + } + this._startHandler = group.createOrUpdateChild( + 'startHandler', + { + x: position.x + width / 2, + y: position.y + start * height, + size: width, + symbolType: startHandlerStyle.symbolType ?? 'square', + ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any), + ...startHandlerStyle, + pickable: zoomLock ? false : (startHandlerStyle.pickable ?? true) + }, + 'symbol' + ) as ISymbol; + + this._endHandler = group.createOrUpdateChild( + 'endHandler', + { + x: position.x + width / 2, + y: position.y + end * height, + size: width, + symbolType: endHandlerStyle.symbolType ?? 'square', + ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any), + ...endHandlerStyle, + pickable: zoomLock ? false : (endHandlerStyle.pickable ?? true) + }, + 'symbol' + ) as ISymbol; + + // 透明mask构造热区, 热区大小配置来自handler bounds + const startHandlerWidth = Math.max(this._startHandler.AABBBounds.width(), startHandlerMinSize); + const startHandlerHeight = Math.max(this._startHandler.AABBBounds.height(), startHandlerMinSize); + const endHandlerWidth = Math.max(this._endHandler.AABBBounds.width(), endHandlerMinSize); + const endHandlerHeight = Math.max(this._endHandler.AABBBounds.height(), endHandlerMinSize); + + this._startHandlerMask = group.createOrUpdateChild( + 'startHandlerMask', + { + x: position.x + width / 2 + startHandlerWidth / 2, + y: position.y + start * height - startHandlerHeight / 2, + width: endHandlerHeight, + height: endHandlerWidth, + fill: 'white', + fillOpacity: 0, + zIndex: 999, + ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any), + pickable: !zoomLock + }, + 'rect' + ) as IRect; + this._endHandlerMask = group.createOrUpdateChild( + 'endHandlerMask', + { + x: position.x + width / 2 + endHandlerWidth / 2, + y: position.y + end * height - endHandlerHeight / 2, + width: endHandlerHeight, + height: endHandlerWidth, + fill: 'white', + fillOpacity: 0, + zIndex: 999, + ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any), + pickable: !zoomLock + }, + 'rect' + ) as IRect; + } + } + + /** + * @description 渲染选中背景 + */ + private _renderSelectedBackground() { + const { + selectedBackgroundStyle = {}, + selectedBackgroundChartStyle = {}, + brushSelect, + zoomLock + } = this.attribute as DataZoomAttributes; + const { start, end } = this._getState(); + + const { position, width, height } = this._getLayoutAttrFromConfig(); + + const group = this._getContainer(); + if (this._isHorizontal) { + // 选中部分 + this._selectedBackground = group.createOrUpdateChild( + 'selectedBackground', + { + x: position.x + start * width, + y: position.y, + width: (end - start) * width, + height: height, + cursor: brushSelect ? 'crosshair' : 'move', + ...selectedBackgroundStyle, + pickable: zoomLock ? false : ((selectedBackgroundChartStyle as any).pickable ?? true) + }, + 'rect' + ) as IRect; + } else { + // 选中部分 + this._selectedBackground = group.createOrUpdateChild( + 'selectedBackground', + { + x: position.x, + y: position.y + start * height, + width, + height: (end - start) * height, + cursor: brushSelect ? 'crosshair' : 'move', + ...selectedBackgroundStyle, + pickable: zoomLock ? false : (selectedBackgroundStyle.pickable ?? true) + }, + 'rect' + ) as IRect; + } + } + + // 使用callback绘制背景图表 (数据和数据映射从外部传进来) + private _setPreviewAttributes(type: 'line' | 'area', group: IGroup) { + if (!this._previewGroup) { + this._previewGroup = group.createOrUpdateChild('previewGroup', { pickable: false }, 'group') as IGroup; + } + if (type === 'line') { + this._previewLine = this._previewGroup.createOrUpdateChild('previewLine', {}, 'line') as ILine; + } else { + this._previewArea = this._previewGroup.createOrUpdateChild( + 'previewArea', + { curveType: 'basis' }, + 'area' + ) as IArea; + } + + const { backgroundChartStyle = {} } = this.attribute as DataZoomAttributes; + + type === 'line' && + this._previewLine.setAttributes({ + points: this._getPreviewLinePoints(), + curveType: 'basis', + pickable: false, + ...backgroundChartStyle.line + }); + type === 'area' && + this._previewArea.setAttributes({ + points: this._getPreviewAreaPoints(), + curveType: 'basis', + pickable: false, + ...backgroundChartStyle.area + }); + } + + // 使用callback绘制选中的背景图表 (数据和数据映射从外部传进来) + private _setSelectedPreviewClipAttributes(type: 'area' | 'line', group: IGroup) { + if (!this._selectedPreviewGroupClip) { + this._selectedPreviewGroupClip = group.createOrUpdateChild( + 'selectedPreviewGroupClip', + { pickable: false }, + 'group' + ) as IGroup; + this._selectedPreviewGroup = this._selectedPreviewGroupClip.createOrUpdateChild( + 'selectedPreviewGroup', + {}, + 'group' + ) as IGroup; + } + + const { start, end } = this._getState(); + const { position, width, height } = this._getLayoutAttrFromConfig(); + this._selectedPreviewGroupClip.setAttributes({ + x: this._isHorizontal ? position.x + start * width : position.x, + y: this._isHorizontal ? position.y : position.y + start * height, + width: this._isHorizontal ? (end - start) * width : width, + height: this._isHorizontal ? height : (end - start) * height, + clip: true, + pickable: false + } as any); + this._selectedPreviewGroup.setAttributes({ + x: -(this._isHorizontal ? position.x + start * width : position.x), + y: -(this._isHorizontal ? position.y : position.y + start * height), + width: this._isHorizontal ? (end - start) * width : width, + height: this._isHorizontal ? height : (end - start) * height, + pickable: false + } as any); + } + + private _setSelectedPreviewAttributes(type: 'line' | 'area') { + const { selectedBackgroundChartStyle = {} } = this.attribute as DataZoomAttributes; + if (type === 'line') { + this._selectedPreviewLine = this._selectedPreviewGroup.createOrUpdateChild( + 'selectedPreviewLine', + {}, + 'line' + ) as ILine; + } else { + this._selectedPreviewArea = this._selectedPreviewGroup.createOrUpdateChild( + 'selectedPreviewArea', + { curveType: 'basis' }, + 'area' + ) as IArea; + } + type === 'line' && + this._selectedPreviewLine.setAttributes({ + points: this._getPreviewLinePoints(), + curveType: 'basis', + pickable: false, + ...selectedBackgroundChartStyle.line + }); + type === 'area' && + this._selectedPreviewArea.setAttributes({ + points: this._getPreviewAreaPoints(), + curveType: 'basis', + pickable: false, + ...selectedBackgroundChartStyle.area + }); + } + + private _computeBasePoints() { + const { orient } = this.attribute as DataZoomAttributes; + const { position, width, height } = this._getLayoutAttrFromConfig(); + let basePointStart: any; + let basePointEnd: any; + if (this._isHorizontal) { + basePointStart = [ + { + x: position.x, + y: position.y + height + } + ]; + basePointEnd = [ + { + x: position.x + width, + y: position.y + height + } + ]; + } else if (orient === 'left') { + basePointStart = [ + { + x: position.x + width, + y: position.y + } + ]; + basePointEnd = [ + { + x: position.x + width, + y: position.y + height + } + ]; + } else { + basePointStart = [ + { + x: position.x, + y: position.y + height + } + ]; + basePointEnd = [ + { + x: position.x, + y: position.y + } + ]; + } + return { + basePointStart, + basePointEnd + }; + } + + private _simplifyPoints(points: IPointLike[]) { + // 采样压缩率策略: 如果没做任何配置, 那么限制在niceCount内, 如果做了配置, 则按照配置计算 + const niceCount = 10000; // 经验值 + if (points.length > niceCount) { + const tolerance = this.attribute.tolerance ?? this._previewData.length / niceCount; + return flatten_simplify(points, tolerance, false); + } + return points; + } + + private _getPreviewLinePoints() { + let previewPoints = this._previewData.map(d => { + return { + x: this._previewPointsX && this._previewPointsX(d), + y: this._previewPointsY && this._previewPointsY(d) + }; + }); + // 仅在有数据的时候增加base point, 以弥补背景图表两端的不连续缺口。不然的话没有数据时,会因为base point而仍然绘制图形 + if (previewPoints.length === 0) { + return previewPoints; + } + + // 采样 + previewPoints = this._simplifyPoints(previewPoints); + + const { basePointStart, basePointEnd } = this._computeBasePoints(); + return basePointStart.concat(previewPoints).concat(basePointEnd); + } + + private _getPreviewAreaPoints() { + let previewPoints: IPointLike[] = this._previewData.map(d => { + return { + x: this._previewPointsX && this._previewPointsX(d), + y: this._previewPointsY && this._previewPointsY(d), + x1: this._previewPointsX1 && this._previewPointsX1(d), + y1: this._previewPointsY1 && this._previewPointsY1(d) + }; + }); + // 仅在有数据的时候增加base point, 以弥补背景图表两端的不连续缺口。不然的话没有数据时,会因为base point而仍然绘制图形 + if (previewPoints.length === 0) { + return previewPoints; + } + + // 采样 + previewPoints = this._simplifyPoints(previewPoints); + + const { basePointStart, basePointEnd } = this._computeBasePoints(); + return basePointStart.concat(previewPoints).concat(basePointEnd); + } + + /** + * @description 渲染文本 + */ + renderText() { + let startTextBounds: IBoundsLike | null = null; + let endTextBounds: IBoundsLike | null = null; + + // 第一次绘制 + this._setTextAttr(startTextBounds, endTextBounds); + if (this._showText) { + // 得到bounds + startTextBounds = this._startText.AABBBounds; + endTextBounds = this._endText.AABBBounds; + + // 第二次绘制: 将text限制在组件bounds内 + this._setTextAttr(startTextBounds, endTextBounds); + // 得到bounds + startTextBounds = this._startText.AABBBounds; + endTextBounds = this._endText.AABBBounds; + const { x1, x2, y1, y2 } = startTextBounds; + const { dx: startTextDx = 0, dy: startTextDy = 0 } = this.attribute.startTextStyle; + + // 第三次绘制: 避免startText和endText重叠, 如果重叠了, 对startText做位置调整(考虑到调整的最小化,只单独调整startText而不调整endText) + if (new Bounds().set(x1, y1, x2, y2).intersects(endTextBounds)) { + const direction = this.attribute.orient === 'bottom' || this.attribute.orient === 'right' ? -1 : 1; + if (this._isHorizontal) { + this._startText.setAttribute('dy', startTextDy + direction * Math.abs(endTextBounds.y1 - endTextBounds.y2)); + } else { + this._startText.setAttribute('dx', startTextDx + direction * Math.abs(endTextBounds.x1 - endTextBounds.x2)); + } + } else { + if (this._isHorizontal) { + this._startText.setAttribute('dy', startTextDy); + } else { + this._startText.setAttribute('dx', startTextDx); + } + } + } + } + private _setTextAttr(startTextBounds: IBoundsLike, endTextBounds: IBoundsLike) { + const { startTextStyle, endTextStyle } = this.attribute as DataZoomAttributes; + const { formatMethod: startTextFormat, ...restStartTextStyle } = startTextStyle; + const { formatMethod: endTextFormat, ...restEndTextStyle } = endTextStyle; + const { start, end } = this._getState(); + this._startValue = this._statePointToData(start); + this._endValue = this._statePointToData(end); + const { position, width, height } = this._getLayoutAttrFromConfig(); + + const startTextValue = startTextFormat ? startTextFormat(this._startValue) : this._startValue; + const endTextValue = endTextFormat ? endTextFormat(this._endValue) : this._endValue; + const componentBoundsLike = { + x1: position.x, + y1: position.y, + x2: position.x + width, + y2: position.y + height + }; + let startTextPosition: IPointLike; + let endTextPosition: IPointLike; + let startTextAlignStyle: any; + let endTextAlignStyle: any; + if (this._isHorizontal) { + startTextPosition = { + x: position.x + start * width, + y: position.y + height / 2 + }; + endTextPosition = { + x: position.x + end * width, + y: position.y + height / 2 + }; + startTextAlignStyle = { + textAlign: isTextOverflow(componentBoundsLike, startTextBounds, 'start', this._isHorizontal) ? 'left' : 'right', + textBaseline: restStartTextStyle?.textStyle?.textBaseline ?? 'middle' + }; + endTextAlignStyle = { + textAlign: isTextOverflow(componentBoundsLike, endTextBounds, 'end', this._isHorizontal) ? 'right' : 'left', + textBaseline: restEndTextStyle?.textStyle?.textBaseline ?? 'middle' + }; + } else { + startTextPosition = { + x: position.x + width / 2, + y: position.y + start * height + }; + endTextPosition = { + x: position.x + width / 2, + y: position.y + end * height + }; + startTextAlignStyle = { + textAlign: restStartTextStyle?.textStyle?.textAlign ?? 'center', + textBaseline: isTextOverflow(componentBoundsLike, startTextBounds, 'start', this._isHorizontal) + ? 'top' + : 'bottom' + }; + endTextAlignStyle = { + textAlign: restEndTextStyle?.textStyle?.textAlign ?? 'center', + textBaseline: isTextOverflow(componentBoundsLike, endTextBounds, 'end', this._isHorizontal) ? 'bottom' : 'top' + }; + } + + this._startText = this._maybeAddLabel( + this._getContainer(), + merge({}, restStartTextStyle, { + text: startTextValue, + x: startTextPosition.x, + y: startTextPosition.y, + visible: this._showText, + pickable: false, + childrenPickable: false, + textStyle: startTextAlignStyle + }), + `data-zoom-start-text` + ); + this._endText = this._maybeAddLabel( + this._getContainer(), + merge({}, restEndTextStyle, { + text: endTextValue, + x: endTextPosition.x, + y: endTextPosition.y, + visible: this._showText, + pickable: false, + childrenPickable: false, + textStyle: endTextAlignStyle + }), + `data-zoom-end-text` + ); + } + private _maybeAddLabel(container: IGroup, attributes: TagAttributes, name: string): Tag { + let labelShape = container.find(node => node.name === name, true) as unknown as Tag; + if (labelShape) { + labelShape.setAttributes(attributes); + } else { + labelShape = new Tag(attributes); + labelShape.name = name; + container.add(labelShape as unknown as INode); + } + + return labelShape; + } +} diff --git a/packages/vrender-components/src/data-zoom/type.ts b/packages/vrender-components/src/data-zoom/type.ts index 17492712b..1d23d6815 100644 --- a/packages/vrender-components/src/data-zoom/type.ts +++ b/packages/vrender-components/src/data-zoom/type.ts @@ -221,3 +221,24 @@ export interface DataZoomAttributes extends IGroupGraphicAttribute { */ tolerance?: number; } + +/** + * 交互模块事件, datazoom内部监听 + * 由vrender-component层监听 + */ +export enum IDataZoomInteractiveEvent { + // 更新start和end + stateUpdate = 'stateUpdate', + // 更新dragMask + maskUpdate = 'maskUpdate', + // 更新dataZoom + dataZoomUpdate = 'dataZoomUpdate' +} + +/** + * vrender-components 对外抛出的事件 + * 由vchart层监听 + */ +export enum IDataZoomEvent { + dataZoomChange = 'dataZoomChange' +} diff --git a/packages/vrender-components/src/data-zoom/utils.ts b/packages/vrender-components/src/data-zoom/utils.ts new file mode 100644 index 000000000..408104000 --- /dev/null +++ b/packages/vrender-components/src/data-zoom/utils.ts @@ -0,0 +1,37 @@ +import type { IBoundsLike } from '@visactor/vutils'; + +/** + * 判断文字是否超出datazoom范围 + */ +export const isTextOverflow = ( + componentBoundsLike: IBoundsLike, + textBounds: IBoundsLike | null, + layout: 'start' | 'end', + isHorizontal: boolean +) => { + if (!textBounds) { + return false; + } + if (isHorizontal) { + if (layout === 'start') { + if (textBounds.x1 < componentBoundsLike.x1) { + return true; + } + } else { + if (textBounds.x2 > componentBoundsLike.x2) { + return true; + } + } + } else { + if (layout === 'start') { + if (textBounds.y1 < componentBoundsLike.y1) { + return true; + } + } else { + if (textBounds.y2 > componentBoundsLike.y2) { + return true; + } + } + } + return false; +}; diff --git a/packages/vrender-core/CHANGELOG.json b/packages/vrender-core/CHANGELOG.json index 2de1a2ab9..97985acde 100644 --- a/packages/vrender-core/CHANGELOG.json +++ b/packages/vrender-core/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/vrender-core", "entries": [ + { + "version": "1.0.19", + "tag": "@visactor/vrender-core_v1.0.19", + "date": "Thu, 23 Oct 2025 07:49:11 GMT", + "comments": {} + }, { "version": "1.0.18", "tag": "@visactor/vrender-core_v1.0.18", diff --git a/packages/vrender-core/CHANGELOG.md b/packages/vrender-core/CHANGELOG.md index eac07d168..a0619dfce 100644 --- a/packages/vrender-core/CHANGELOG.md +++ b/packages/vrender-core/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/vrender-core -This log was last generated on Mon, 13 Oct 2025 09:26:25 GMT and should not be manually modified. +This log was last generated on Thu, 23 Oct 2025 07:49:11 GMT and should not be manually modified. + +## 1.0.19 +Thu, 23 Oct 2025 07:49:11 GMT + +_Version update only_ ## 1.0.18 Mon, 13 Oct 2025 09:26:25 GMT diff --git a/packages/vrender-core/package.json b/packages/vrender-core/package.json index 015ae013f..898aabfba 100644 --- a/packages/vrender-core/package.json +++ b/packages/vrender-core/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vrender-core", - "version": "1.0.18", + "version": "1.0.19", "description": "", "sideEffects": [ "./src/modules.ts", diff --git a/packages/vrender-core/src/canvas/empty-context.ts b/packages/vrender-core/src/canvas/empty-context.ts index a143b94bd..14350ced7 100644 --- a/packages/vrender-core/src/canvas/empty-context.ts +++ b/packages/vrender-core/src/canvas/empty-context.ts @@ -50,8 +50,8 @@ export class EmptyContext2d implements IContext2d { declare path: CustomPath2D; declare canvas: null; declare stack: Matrix[]; - protected declare matrix: Matrix; - protected declare applyedMatrix?: Matrix; // 被应用的matrix + declare protected matrix: Matrix; + declare protected applyedMatrix?: Matrix; // 被应用的matrix // 属性代理 declare fillStyle: string | CanvasGradient | CanvasPattern; /** diff --git a/packages/vrender-core/src/common/polygon.ts b/packages/vrender-core/src/common/polygon.ts index 014c5a730..746586488 100644 --- a/packages/vrender-core/src/common/polygon.ts +++ b/packages/vrender-core/src/common/polygon.ts @@ -63,7 +63,7 @@ export function drawRoundedPolygon( const tan = Math.abs(Math.tan(angle)); // get config radius - let radius = Array.isArray(cornerRadius) ? cornerRadius[i % points.length] ?? 0 : cornerRadius; + let radius = Array.isArray(cornerRadius) ? (cornerRadius[i % points.length] ?? 0) : cornerRadius; let segment = radius / tan; //Check the segment diff --git a/packages/vrender-core/src/graphic/graphic.ts b/packages/vrender-core/src/graphic/graphic.ts index 810d1b2d3..fcb4bc904 100644 --- a/packages/vrender-core/src/graphic/graphic.ts +++ b/packages/vrender-core/src/graphic/graphic.ts @@ -259,29 +259,29 @@ export abstract class Graphic = Partial void>; // 富文本外部有align或者baseline的时候,需要对光标做偏移 - protected declare deltaX: number; - protected declare deltaY: number; + declare protected deltaX: number; + declare protected deltaY: number; // static splitText(text: string) { // // 😁这种emoji长度算两个,所以得处理一下 diff --git a/packages/vrender-core/src/render/contributions/render/base-render.ts b/packages/vrender-core/src/render/contributions/render/base-render.ts index 7e42261b6..c306a8f0d 100644 --- a/packages/vrender-core/src/render/contributions/render/base-render.ts +++ b/packages/vrender-core/src/render/contributions/render/base-render.ts @@ -29,7 +29,7 @@ export abstract class BaseRender { declare z: number; builtinContributions: IBaseRenderContribution[]; - protected declare graphicRenderContributions: IContributionProvider>; + declare protected graphicRenderContributions: IContributionProvider>; // declare renderContribitions: IContributionProvider> | null; diff --git a/packages/vrender-kits/CHANGELOG.json b/packages/vrender-kits/CHANGELOG.json index c3aa6d066..f6c831a8d 100644 --- a/packages/vrender-kits/CHANGELOG.json +++ b/packages/vrender-kits/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/vrender-kits", "entries": [ + { + "version": "1.0.19", + "tag": "@visactor/vrender-kits_v1.0.19", + "date": "Thu, 23 Oct 2025 07:49:11 GMT", + "comments": {} + }, { "version": "1.0.18", "tag": "@visactor/vrender-kits_v1.0.18", diff --git a/packages/vrender-kits/CHANGELOG.md b/packages/vrender-kits/CHANGELOG.md index 4c26648b3..87aeea994 100644 --- a/packages/vrender-kits/CHANGELOG.md +++ b/packages/vrender-kits/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/vrender-kits -This log was last generated on Mon, 13 Oct 2025 09:26:25 GMT and should not be manually modified. +This log was last generated on Thu, 23 Oct 2025 07:49:11 GMT and should not be manually modified. + +## 1.0.19 +Thu, 23 Oct 2025 07:49:11 GMT + +_Version update only_ ## 1.0.18 Mon, 13 Oct 2025 09:26:25 GMT diff --git a/packages/vrender-kits/package.json b/packages/vrender-kits/package.json index f0a9fe72e..7e1242331 100644 --- a/packages/vrender-kits/package.json +++ b/packages/vrender-kits/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vrender-kits", - "version": "1.0.18", + "version": "1.0.19", "description": "", "sideEffects": false, "main": "cjs/index.js", @@ -21,7 +21,7 @@ }, "dependencies": { "@visactor/vutils": "1.0.6", - "@visactor/vrender-core": "workspace:1.0.18", + "@visactor/vrender-core": "workspace:1.0.19", "@resvg/resvg-js": "2.4.1", "roughjs": "4.5.2", "gifuct-js": "2.1.2", diff --git a/packages/vrender/CHANGELOG.json b/packages/vrender/CHANGELOG.json index 188c4b98e..e21520afd 100644 --- a/packages/vrender/CHANGELOG.json +++ b/packages/vrender/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/vrender", "entries": [ + { + "version": "1.0.19", + "tag": "@visactor/vrender_v1.0.19", + "date": "Thu, 23 Oct 2025 07:49:11 GMT", + "comments": {} + }, { "version": "1.0.18", "tag": "@visactor/vrender_v1.0.18", diff --git a/packages/vrender/CHANGELOG.md b/packages/vrender/CHANGELOG.md index 4d9365179..f5396075c 100644 --- a/packages/vrender/CHANGELOG.md +++ b/packages/vrender/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/vrender -This log was last generated on Mon, 13 Oct 2025 09:26:25 GMT and should not be manually modified. +This log was last generated on Thu, 23 Oct 2025 07:49:11 GMT and should not be manually modified. + +## 1.0.19 +Thu, 23 Oct 2025 07:49:11 GMT + +_Version update only_ ## 1.0.18 Mon, 13 Oct 2025 09:26:25 GMT diff --git a/packages/vrender/__tests__/browser/src/pages/performance.ts b/packages/vrender/__tests__/browser/src/pages/performance.ts index daea0aab2..5045361f4 100644 --- a/packages/vrender/__tests__/browser/src/pages/performance.ts +++ b/packages/vrender/__tests__/browser/src/pages/performance.ts @@ -41,7 +41,10 @@ export const page = () => { addTest('state map', () => { class AAA { transitions: Map> = new Map(); - constructor(public from: string, public to: string) {} + constructor( + public from: string, + public to: string + ) {} /** * 注册默认的转换规则 */ diff --git a/packages/vrender/package.json b/packages/vrender/package.json index b16af8b2c..d053d4d1e 100644 --- a/packages/vrender/package.json +++ b/packages/vrender/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vrender", - "version": "1.0.18", + "version": "1.0.19", "description": "", "sideEffects": true, "main": "cjs/index.js", @@ -24,10 +24,10 @@ "test-watch": "cross-env DEBUG_MODE=1 jest --watch" }, "dependencies": { - "@visactor/vrender-core": "workspace:1.0.18", - "@visactor/vrender-kits": "workspace:1.0.18", - "@visactor/vrender-animate": "workspace:1.0.18", - "@visactor/vrender-components": "workspace:1.0.18" + "@visactor/vrender-core": "workspace:1.0.19", + "@visactor/vrender-kits": "workspace:1.0.19", + "@visactor/vrender-animate": "workspace:1.0.19", + "@visactor/vrender-components": "workspace:1.0.19" }, "devDependencies": { "@internal/bundler": "workspace:*", diff --git a/tools/bugserver-trigger/package.json b/tools/bugserver-trigger/package.json index 69b1dbdb6..fb27ff6bc 100644 --- a/tools/bugserver-trigger/package.json +++ b/tools/bugserver-trigger/package.json @@ -8,11 +8,11 @@ "ci": "ts-node --transpileOnly --skipProject ./scripts/trigger-test.ts" }, "dependencies": { - "@visactor/vrender": "workspace:1.0.18", - "@visactor/vrender-core": "workspace:1.0.18", - "@visactor/vrender-kits": "workspace:1.0.18", - "@visactor/vrender-components": "workspace:1.0.18", - "@visactor/vrender-animate": "workspace:1.0.18" + "@visactor/vrender": "workspace:1.0.19", + "@visactor/vrender-core": "workspace:1.0.19", + "@visactor/vrender-kits": "workspace:1.0.19", + "@visactor/vrender-components": "workspace:1.0.19", + "@visactor/vrender-animate": "workspace:1.0.19" }, "devDependencies": { "@rushstack/eslint-patch": "~1.1.4",