diff --git a/jeecgboot-vue3/package.json b/jeecgboot-vue3/package.json index 02b704215..9044d474c 100644 --- a/jeecgboot-vue3/package.json +++ b/jeecgboot-vue3/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@jeecg/online": "3.9.0-beta2", - "@jeecg/aiflow":"3.9.0-beta2", + "@jeecg/aiflow":"3.9.1-beta", "@logicflow/core": "^2.0.10", "@logicflow/extension": "^2.0.14", "@logicflow/vue-node-registry": "^1.0.12", @@ -63,6 +63,7 @@ "path-to-regexp": "^6.3.0", "pinia": "2.1.7", "print-js": "^1.6.0", + "pinyin-pro": "^3.27.0", "qs": "^6.14.0", "qrcode": "^1.5.4", "resize-observer-polyfill": "^1.5.1", @@ -103,6 +104,7 @@ "@types/nprogress": "^0.2.3", "@types/qrcode": "^1.5.5", "@types/qs": "^6.14.0", + "@types/pinyin": "^2.10.2", "@types/showdown": "^2.0.6", "@types/sortablejs": "^1.15.8", "@typescript-eslint/eslint-plugin": "^6.21.0", diff --git a/jeecgboot-vue3/pnpm-lock.yaml b/jeecgboot-vue3/pnpm-lock.yaml index 2d5b6d490..7800f8742 100644 --- a/jeecgboot-vue3/pnpm-lock.yaml +++ b/jeecgboot-vue3/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 7.2.1 '@ant-design/icons-vue': specifier: ^7.0.1 - version: 7.0.1(vue@3.5.25(typescript@5.9.3)) + version: 7.0.1(vue@3.5.27(typescript@5.9.3)) '@iconify/iconify': specifier: ^3.1.1 version: 3.1.1 @@ -25,16 +25,16 @@ importers: version: 3.9.0-beta2 '@logicflow/core': specifier: ^2.0.10 - version: 2.1.4 + version: 2.1.9 '@logicflow/extension': specifier: ^2.0.14 - version: 2.1.6(@logicflow/core@2.1.4)(@logicflow/vue-node-registry@1.1.5(@logicflow/core@2.1.4)(vue@3.5.25(typescript@5.9.3))) + version: 2.1.11(@logicflow/core@2.1.9)(@logicflow/vue-node-registry@1.1.10(@logicflow/core@2.1.9)(vue@3.5.27(typescript@5.9.3))) '@logicflow/vue-node-registry': specifier: ^1.0.12 - version: 1.1.5(@logicflow/core@2.1.4)(vue@3.5.25(typescript@5.9.3)) + version: 1.1.10(@logicflow/core@2.1.9)(vue@3.5.27(typescript@5.9.3)) '@tinymce/tinymce-vue': specifier: 4.0.7 - version: 4.0.7(vue@3.5.25(typescript@5.9.3)) + version: 4.0.7(vue@3.5.27(typescript@5.9.3)) '@traptitech/markdown-it-katex': specifier: ^3.6.0 version: 3.6.0 @@ -43,19 +43,19 @@ importers: version: 1.5.2 '@vue/shared': specifier: ^3.5.22 - version: 3.5.25 + version: 3.5.27 '@vueuse/core': specifier: ^10.11.1 - version: 10.11.1(vue@3.5.25(typescript@5.9.3)) + version: 10.11.1(vue@3.5.27(typescript@5.9.3)) '@zxcvbn-ts/core': specifier: ^3.0.4 version: 3.0.4 ant-design-vue: specifier: ^4.2.6 - version: 4.2.6(vue@3.5.25(typescript@5.9.3)) + version: 4.2.6(vue@3.5.27(typescript@5.9.3)) axios: specifier: ^1.12.2 - version: 1.13.2 + version: 1.13.2(debug@4.4.3) china-area-data: specifier: ^5.0.1 version: 5.0.1 @@ -85,7 +85,7 @@ importers: version: 5.6.0 emoji-mart-vue-fast: specifier: ^15.0.5 - version: 15.0.5(vue@3.5.25(typescript@5.9.3)) + version: 15.0.5(vue@3.5.27(typescript@5.9.3)) enquire.js: specifier: ^2.1.6 version: 2.1.6 @@ -100,7 +100,7 @@ importers: version: 7.2.0 lodash-es: specifier: ^4.17.21 - version: 4.17.21 + version: 4.17.22 lodash.get: specifier: ^4.4.2 version: 4.4.2 @@ -124,7 +124,10 @@ importers: version: 6.3.0 pinia: specifier: 2.1.7 - version: 2.1.7(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) + version: 2.1.7(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)) + pinyin-pro: + specifier: ^3.27.0 + version: 3.28.0 print-js: specifier: ^1.6.0 version: 1.6.0 @@ -133,7 +136,7 @@ importers: version: 1.5.4 qs: specifier: ^6.14.0 - version: 6.14.0 + version: 6.14.1 resize-observer-polyfill: specifier: ^1.5.1 version: 1.5.1 @@ -145,7 +148,7 @@ importers: version: 1.15.6 swagger-ui-dist: specifier: ^5.29.3 - version: 5.30.2 + version: 5.31.0 tinymce: specifier: 6.6.2 version: 6.6.2 @@ -154,16 +157,16 @@ importers: version: 3.11.2 vue: specifier: ^3.5.22 - version: 3.5.25(typescript@5.9.3) + version: 3.5.27(typescript@5.9.3) vue-cropper: specifier: ^0.6.5 version: 0.6.5 vue-cropperjs: specifier: ^5.0.0 - version: 5.0.0(vue@3.5.25(typescript@5.9.3)) + version: 5.0.0(vue@3.5.27(typescript@5.9.3)) vue-i18n: specifier: ^9.14.5 - version: 9.14.5(vue@3.5.25(typescript@5.9.3)) + version: 9.14.5(vue@3.5.27(typescript@5.9.3)) vue-infinite-scroll: specifier: ^2.0.2 version: 2.0.2 @@ -172,22 +175,22 @@ importers: version: 1.0.12 vue-router: specifier: ^4.5.1 - version: 4.6.3(vue@3.5.25(typescript@5.9.3)) + version: 4.6.4(vue@3.5.27(typescript@5.9.3)) vue-types: specifier: ^5.1.3 - version: 5.1.3(vue@3.5.25(typescript@5.9.3)) + version: 5.1.3(vue@3.5.27(typescript@5.9.3)) vuedraggable: specifier: ^4.1.0 - version: 4.1.0(vue@3.5.25(typescript@5.9.3)) + version: 4.1.0(vue@3.5.27(typescript@5.9.3)) vxe-pc-ui: specifier: 4.6.12 - version: 4.6.12(vue@3.5.25(typescript@5.9.3)) + version: 4.6.12(vue@3.5.27(typescript@5.9.3)) vxe-table: specifier: 4.13.31 - version: 4.13.31(vue@3.5.25(typescript@5.9.3)) + version: 4.13.31(vue@3.5.27(typescript@5.9.3)) vxe-table-plugin-antd: specifier: 4.0.8 - version: 4.0.8(vxe-table@4.13.31(vue@3.5.25(typescript@5.9.3))) + version: 4.0.8(vxe-table@4.13.31(vue@3.5.27(typescript@5.9.3))) xe-utils: specifier: 3.5.26 version: 3.5.26 @@ -197,19 +200,19 @@ importers: devDependencies: '@commitlint/cli': specifier: ^18.6.1 - version: 18.6.1(@types/node@20.19.25)(typescript@5.9.3) + version: 18.6.1(@types/node@20.19.30)(typescript@5.9.3) '@commitlint/config-conventional': specifier: ^18.6.3 version: 18.6.3 '@iconify/json': specifier: ^2.2.394 - version: 2.2.410 + version: 2.2.430 '@purge-icons/generated': specifier: ^0.10.0 version: 0.10.0 '@rys-fe/vite-plugin-theme': specifier: ^0.8.6 - version: 0.8.6(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 0.8.6(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) '@types/codemirror': specifier: ^5.60.16 version: 5.60.17 @@ -236,13 +239,16 @@ importers: version: 1.0.10 '@types/node': specifier: ^20.19.20 - version: 20.19.25 + version: 20.19.30 '@types/nprogress': specifier: ^0.2.3 version: 0.2.3 + '@types/pinyin': + specifier: ^2.10.2 + version: 2.10.2 '@types/qrcode': specifier: ^1.5.5 - version: 1.5.5 + version: 1.5.6 '@types/qs': specifier: ^6.14.0 version: 6.14.0 @@ -251,7 +257,7 @@ importers: version: 2.0.6 '@types/sortablejs': specifier: ^1.15.8 - version: 1.15.8 + version: 1.15.9 '@typescript-eslint/eslint-plugin': specifier: ^6.21.0 version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) @@ -260,25 +266,25 @@ importers: version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-vue': specifier: 5.2.4 - version: 5.2.4(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.25(typescript@5.9.3)) + version: 5.2.4(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))(vue@3.5.27(typescript@5.9.3)) '@vitejs/plugin-vue-jsx': specifier: 4.1.1 - version: 4.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.25(typescript@5.9.3)) + version: 4.1.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))(vue@3.5.27(typescript@5.9.3)) '@vue/compiler-sfc': specifier: ^3.5.22 - version: 3.5.25 + version: 3.5.27 '@vue/test-utils': specifier: ^2.4.6 version: 2.4.6 autoprefixer: specifier: ^10.4.21 - version: 10.4.21(postcss@8.5.6) + version: 10.4.23(postcss@8.5.6) big.js: specifier: ^6.2.2 version: 6.2.2 commitizen: specifier: ^4.3.1 - version: 4.3.1(@types/node@20.19.25)(typescript@5.9.3) + version: 4.3.1(@types/node@20.19.30)(typescript@5.9.3) conventional-changelog-cli: specifier: ^4.1.0 version: 4.1.0 @@ -293,7 +299,7 @@ importers: version: 1.12.0 dingtalk-jsapi: specifier: ^3.2.0 - version: 3.2.2 + version: 3.2.5 dotenv: specifier: ^16.6.1 version: 16.6.1 @@ -308,10 +314,10 @@ importers: version: 2.1.0 eslint-plugin-jest: specifier: ^27.9.0 - version: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)))(typescript@5.9.3) + version: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)))(typescript@5.9.3) eslint-plugin-prettier: specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) + version: 5.5.5(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.0) eslint-plugin-vue: specifier: ^9.33.0 version: 9.33.0(eslint@8.57.1) @@ -320,7 +326,7 @@ importers: version: 4.8.0 fs-extra: specifier: ^11.3.2 - version: 11.3.2 + version: 11.3.3 http-server: specifier: ^14.1.1 version: 14.1.1 @@ -329,16 +335,16 @@ importers: version: 8.0.3 inquirer: specifier: ^9.3.8 - version: 9.3.8(@types/node@20.19.25) + version: 9.3.8(@types/node@20.19.30) is-ci: specifier: ^3.0.1 version: 3.0.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + version: 29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) less: specifier: ^4.4.2 - version: 4.4.2 + version: 4.5.1 lint-staged: specifier: 15.2.2 version: 15.2.2 @@ -353,16 +359,16 @@ importers: version: 8.5.6 postcss-html: specifier: ^1.8.0 - version: 1.8.0 + version: 1.8.1 postcss-less: specifier: ^6.0.0 version: 6.0.0(postcss@8.5.6) prettier: specifier: ^3.6.2 - version: 3.6.2 + version: 3.8.0 pretty-quick: specifier: ^4.2.2 - version: 4.2.2(prettier@3.6.2) + version: 4.2.2(prettier@3.8.0) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -374,67 +380,67 @@ importers: version: 5.14.0(rollup@4.52.5) stylelint: specifier: ^16.25.0 - version: 16.26.0(typescript@5.9.3) + version: 16.26.1(typescript@5.9.3) stylelint-config-prettier: specifier: ^9.0.5 - version: 9.0.5(stylelint@16.26.0(typescript@5.9.3)) + version: 9.0.5(stylelint@16.26.1(typescript@5.9.3)) stylelint-config-recommended: specifier: ^14.0.1 - version: 14.0.1(stylelint@16.26.0(typescript@5.9.3)) + version: 14.0.1(stylelint@16.26.1(typescript@5.9.3)) stylelint-config-recommended-vue: specifier: ^1.6.1 - version: 1.6.1(postcss-html@1.8.0)(stylelint@16.26.0(typescript@5.9.3)) + version: 1.6.1(postcss-html@1.8.1)(stylelint@16.26.1(typescript@5.9.3)) stylelint-config-standard: specifier: ^36.0.1 - version: 36.0.1(stylelint@16.26.0(typescript@5.9.3)) + version: 36.0.1(stylelint@16.26.1(typescript@5.9.3)) stylelint-order: specifier: ^6.0.4 - version: 6.0.4(stylelint@16.26.0(typescript@5.9.3)) + version: 6.0.4(stylelint@16.26.1(typescript@5.9.3)) ts-jest: specifier: ^29.4.4 - version: 29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.6(@babel/core@7.28.6)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.6))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.19.25)(typescript@5.9.3) + version: 10.9.2(@types/node@20.19.30)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 unocss: specifier: ^0.58.9 - version: 0.58.9(postcss@8.5.6)(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 0.58.9(postcss@8.5.6)(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite: specifier: ^6.3.6 - version: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + version: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) vite-plugin-compression: specifier: ^0.5.1 - version: 0.5.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 0.5.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-html: specifier: ^3.2.2 - version: 3.2.2(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 3.2.2(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-mkcert: specifier: ^1.17.9 - version: 1.17.9(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 1.17.9(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-mock: specifier: ^2.9.8 - version: 2.9.8(mockjs@1.1.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 2.9.8(mockjs@1.1.0)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-optimize-persist: specifier: ^0.1.2 - version: 0.1.2(vite-plugin-package-config@0.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 0.1.2(vite-plugin-package-config@0.1.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)))(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-package-config: specifier: ^0.1.1 - version: 0.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 0.1.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-purge-icons: specifier: ^0.10.0 - version: 0.10.0(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 0.10.0(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-pwa: specifier: ^1.1.0 - version: 1.1.0(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) + version: 1.2.0(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) vite-plugin-qiankun: specifier: ^1.0.15 - version: 1.0.15(typescript@5.9.3)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 1.0.15(typescript@5.9.3)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-svg-icons: specifier: ^2.0.1 - version: 2.0.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + version: 2.0.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) vite-plugin-vue-setup-extend-plus: specifier: ^0.1.0 version: 0.1.0 @@ -451,17 +457,17 @@ importers: packages: '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, tarball: https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz} + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} '@ant-design/colors@6.0.0': - resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==, tarball: https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz} + resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} '@ant-design/colors@7.2.1': - resolution: {integrity: sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==, tarball: https://registry.npmmirror.com/@ant-design/colors/-/colors-7.2.1.tgz} + resolution: {integrity: sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==} '@ant-design/fast-color@2.0.6': - resolution: {integrity: sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==, tarball: https://registry.npmmirror.com/@ant-design/fast-color/-/fast-color-2.0.6.tgz} + resolution: {integrity: sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==} engines: {node: '>=8.x'} '@ant-design/icons-svg@4.4.2': @@ -482,7 +488,7 @@ packages: resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} '@antv/hierarchy@0.6.14': - resolution: {integrity: sha512-V3uknf7bhynOqQDw2sg+9r9DwZ9pc6k/EcqyTFdfXB1+ydr7urisP0MipIuimucvQKN+Qkd+d6w601r1UIroqQ==, tarball: https://registry.npmmirror.com/@antv/hierarchy/-/hierarchy-0.6.14.tgz} + resolution: {integrity: sha512-V3uknf7bhynOqQDw2sg+9r9DwZ9pc6k/EcqyTFdfXB1+ydr7urisP0MipIuimucvQKN+Qkd+d6w601r1UIroqQ==} '@apideck/better-ajv-errors@0.3.6': resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} @@ -490,58 +496,32 @@ packages: peerDependencies: ajv: '>=8' - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} engines: {node: '>=6.9.0'} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/compat-data@7.28.6': + resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==, tarball: https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.8.tgz} + '@babel/core@7.28.6': + resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.5': - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==, tarball: https://registry.npmmirror.com/@babel/core/-/core-7.26.10.tgz} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==, tarball: https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz} + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.0': - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==, tarball: https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.27.0': - resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==, tarball: https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-class-features-plugin@7.28.5': - resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -561,48 +541,26 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.25.9': - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==, tarball: https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz} - engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.28.5': resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==, tarball: https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==, tarball: https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz} + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.25.9': - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==, tarball: https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz} - engines: {node: '>=6.9.0'} - '@babel/helper-optimise-call-expression@7.27.1': resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==, tarball: https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.27.1': @@ -611,65 +569,38 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.26.5': - resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==, tarball: https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz} + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==, tarball: https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz} - engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==, tarball: https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz} + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.28.3': - resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.0': - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==, tarball: https://registry.npmmirror.com/@babel/helpers/-/helpers-7.27.0.tgz} + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.27.0.tgz} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.28.5.tgz} + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -697,8 +628,8 @@ packages: peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': - resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': + resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -730,20 +661,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.28.6': + resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@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 - - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -758,14 +683,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - 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.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -812,14 +731,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@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-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -836,14 +749,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.28.0': - resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + '@babel/plugin-transform-async-generator-functions@7.28.6': + resolution: {integrity: sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==} 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.28.6': + resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -854,32 +767,32 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.28.5': - resolution: {integrity: sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==} + '@babel/plugin-transform-block-scoping@7.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.27.1': - resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.28.3': - resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} + '@babel/plugin-transform-class-static-block@7.28.6': + resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.28.4': - resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} 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.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -890,8 +803,8 @@ packages: 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.28.6': + resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -902,8 +815,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.28.6': + resolution: {integrity: sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -914,14 +827,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-explicit-resource-management@7.28.0': - resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} + '@babel/plugin-transform-explicit-resource-management@7.28.6': + resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.28.5': - resolution: {integrity: sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==} + '@babel/plugin-transform-exponentiation-operator@7.28.6': + resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -944,8 +857,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.27.1': - resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + '@babel/plugin-transform-json-strings@7.28.6': + resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -956,8 +869,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.28.5': - resolution: {integrity: sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==} + '@babel/plugin-transform-logical-assignment-operators@7.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -974,8 +887,8 @@ packages: 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.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1004,20 +917,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': - resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.27.1': - resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.28.4': - resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1028,14 +941,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.27.1': - resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + '@babel/plugin-transform-optional-catch-binding@7.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.28.5': - resolution: {integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==} + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1046,14 +959,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.27.1': - resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.27.1': - resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1064,14 +977,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.28.4': - resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} + '@babel/plugin-transform-regenerator@7.28.6': + resolution: {integrity: sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regexp-modifiers@7.27.1': - resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + '@babel/plugin-transform-regexp-modifiers@7.28.6': + resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1088,8 +1001,8 @@ packages: 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.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1112,14 +1025,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.27.0': - resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.28.5': - resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1130,8 +1037,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.27.1': - resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + '@babel/plugin-transform-unicode-property-regex@7.28.6': + resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1142,14 +1049,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.27.1': - resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + '@babel/plugin-transform-unicode-sets-regex@7.28.6': + resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.28.5': - resolution: {integrity: sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==} + '@babel/preset-env@7.28.6': + resolution: {integrity: sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1165,42 +1072,30 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.27.0': - resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==, tarball: https://registry.npmmirror.com/@babel/template/-/template-7.27.0.tgz} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==, tarball: https://registry.npmmirror.com/@babel/traverse/-/traverse-7.27.0.tgz} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.28.5.tgz} + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@cacheable/memory@2.0.5': - resolution: {integrity: sha512-fkiAxCvssEyJZ5fxX4tcdZFRmW9JehSTGvvqmXn6rTzG5cH6V/3C4ad8yb01vOjp2xBydHkHrgpW0qeGtzt6VQ==, tarball: https://registry.npmmirror.com/@cacheable/memory/-/memory-2.0.5.tgz} + '@cacheable/memory@2.0.7': + resolution: {integrity: sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==} - '@cacheable/utils@2.3.1': - resolution: {integrity: sha512-38NJXjIr4W1Sghun8ju+uYWD8h2c61B4dKwfnQHVDFpAJ9oS28RpfqZQJ6Dgd3RceGkILDY9YT+72HJR3LoeSQ==, tarball: https://registry.npmmirror.com/@cacheable/utils/-/utils-2.3.1.tgz} + '@cacheable/utils@2.3.3': + resolution: {integrity: sha512-JsXDL70gQ+1Vc2W/KUFfkAJzgb4puKwwKehNLuB+HrNKWf91O736kGfxn4KujXCCSuh6mRRL4XEB0PkAFjWS0A==} '@commitlint/cli@18.6.1': resolution: {integrity: sha512-5IDE0a+lWGdkOvKH892HHAZgbAjcj1mT5QrfA/SVbLJV/BbBMGyKN0W5mhgjekPJJwEQdVNvhl9PwUacY58Usw==} @@ -1215,8 +1110,8 @@ packages: resolution: {integrity: sha512-05uiToBVfPhepcQWE1ZQBR/Io3+tb3gEotZjnI4tTzzPk16NffN6YABgwFQCLmzZefbDcmwWqJWc2XT47q7Znw==} engines: {node: '>=v18'} - '@commitlint/config-validator@19.8.0': - resolution: {integrity: sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==} + '@commitlint/config-validator@20.3.1': + resolution: {integrity: sha512-ErVLC/IsHhcvxCyh+FXo7jy12/nkQySjWXYgCoQbZLkFp4hysov8KS6CdxBB0cWjbZWjvNOKBMNoUVqkmGmahw==} engines: {node: '>=v18'} '@commitlint/ensure@18.6.1': @@ -1227,8 +1122,8 @@ packages: resolution: {integrity: sha512-7s37a+iWyJiGUeMFF6qBlyZciUkF8odSAnHijbD36YDctLhGKoYltdvuJ/AFfRm6cBLRtRk9cCVPdsEFtt/2rg==} engines: {node: '>=v18'} - '@commitlint/execute-rule@19.8.0': - resolution: {integrity: sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==} + '@commitlint/execute-rule@20.0.0': + resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} engines: {node: '>=v18'} '@commitlint/format@18.6.1': @@ -1247,8 +1142,8 @@ packages: resolution: {integrity: sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA==} engines: {node: '>=v18'} - '@commitlint/load@19.8.0': - resolution: {integrity: sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==} + '@commitlint/load@20.3.1': + resolution: {integrity: sha512-YDD9XA2XhgYgbjju8itZ/weIvOOobApDqwlPYCX5NLO/cPtw2UMO5Cmn44Ks8RQULUVI5fUT6roKvyxcoLbNmw==} engines: {node: '>=v18'} '@commitlint/message@18.6.1': @@ -1267,8 +1162,8 @@ packages: resolution: {integrity: sha512-ifRAQtHwK+Gj3Bxj/5chhc4L2LIc3s30lpsyW67yyjsETR6ctHAHRu1FSpt0KqahK5xESqoJ92v6XxoDRtjwEQ==} engines: {node: '>=v18'} - '@commitlint/resolve-extends@19.8.0': - resolution: {integrity: sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==} + '@commitlint/resolve-extends@20.3.1': + resolution: {integrity: sha512-iGTGeyaoDyHDEZNjD8rKeosjSNs8zYanmuowY4ful7kFI0dnY4b5QilVYaFQJ6IM27S57LAeH5sKSsOHy4bw5w==} engines: {node: '>=v18'} '@commitlint/rules@18.6.1': @@ -1287,8 +1182,8 @@ packages: resolution: {integrity: sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg==} engines: {node: '>=v18'} - '@commitlint/types@19.8.0': - resolution: {integrity: sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==} + '@commitlint/types@20.3.1': + resolution: {integrity: sha512-VmIFV/JkBRhDRRv7N5B7zEUkNZIx9Mp+8Pe65erz0rKycXLsi8Epcw0XJ+btSeRXgTzE7DyOyA9bkJ9mn/yqVQ==} engines: {node: '>=v18'} '@cspotcode/source-map-support@0.8.1': @@ -1296,24 +1191,28 @@ packages: engines: {node: '>=12'} '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==, tarball: https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz} + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-syntax-patches-for-csstree@1.0.25': + resolution: {integrity: sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==} + engines: {node: '>=18'} + '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==, tarball: https://registry.npmmirror.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz} + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} '@csstools/media-query-list-parser@4.0.3': - resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==, tarball: https://registry.npmmirror.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz} + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} engines: {node: '>=18'} peerDependencies: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 '@csstools/selector-specificity@5.0.0': - resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==, tarball: https://registry.npmmirror.com/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz} + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} engines: {node: '>=18'} peerDependencies: postcss-selector-parser: ^7.0.0 @@ -1323,7 +1222,7 @@ packages: engines: {node: '>=10'} '@dual-bundle/import-meta-resolve@4.2.1': - resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==, tarball: https://registry.npmmirror.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz} + resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} @@ -1331,68 +1230,134 @@ packages: '@emotion/unitless@0.8.1': resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} - '@esbuild/aix-ppc64@0.25.1': - resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.1': - resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.1': - resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.1': - resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.1': - resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.1': - resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.1': - resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.1': - resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.1': - resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.1': - resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.1': - resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1403,98 +1368,194 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.1': - resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.1': - resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.1': - resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.1': - resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.1': - resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.1': - resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.1': - resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.1': - resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.1': - resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.1': - resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.25.1': - resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.1': - resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.1': - resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.1': - resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.5.1': - resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': @@ -1530,17 +1591,17 @@ packages: resolution: {integrity: sha512-1nemfyD/OJzh9ALepH7YfuuP8BdEB24Skhd8DXWh0hzcOxImbb1ZizSZkpCzAwSZSGcJFmscIBaBQu+yLyWaxQ==} deprecated: no longer maintained, switch to modern iconify-icon web component - '@iconify/json@2.2.410': - resolution: {integrity: sha512-0IhW9Sfudf3cPQHoCwr2gJMMUUkLW01WIkGoP9PbwVKXl1I/KTRHtM9IchLufT8M86QHBWRcinApzkL60TH9vA==, tarball: https://registry.npmmirror.com/@iconify/json/-/json-2.2.410.tgz} + '@iconify/json@2.2.430': + resolution: {integrity: sha512-h6ZF1tqaY8qw+NzQSAxvZgrXkp0FvlVZbhaf4LIcwcia2ZpqqZWuwhrBlregXdpPUAqcn76Z0l1H0udGMycdsw==} '@iconify/types@2.0.0': - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==, tarball: https://registry.npmmirror.com/@iconify/types/-/types-2.0.0.tgz} + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} '@iconify/utils@2.3.0': resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==, tarball: https://registry.npmmirror.com/@inquirer/external-editor/-/external-editor-1.0.3.tgz} + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1548,20 +1609,20 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.11': - resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==, tarball: https://registry.npmmirror.com/@inquirer/figures/-/figures-1.0.11.tgz} + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} '@intlify/core-base@9.14.5': - resolution: {integrity: sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==, tarball: https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.14.5.tgz} + resolution: {integrity: sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==} engines: {node: '>= 16'} '@intlify/message-compiler@9.14.5': - resolution: {integrity: sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==, tarball: https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.14.5.tgz} + resolution: {integrity: sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==} engines: {node: '>= 16'} '@intlify/shared@9.14.5': - resolution: {integrity: sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==, tarball: https://registry.npmmirror.com/@intlify/shared/-/shared-9.14.5.tgz} + resolution: {integrity: sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==} engines: {node: '>= 16'} '@isaacs/balanced-match@4.0.1': @@ -1659,29 +1720,18 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, tarball: https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -1690,27 +1740,27 @@ packages: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} '@keyv/bigmap@1.3.0': - resolution: {integrity: sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==, tarball: https://registry.npmmirror.com/@keyv/bigmap/-/bigmap-1.3.0.tgz} + resolution: {integrity: sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==} engines: {node: '>= 18'} peerDependencies: keyv: ^5.5.4 '@keyv/serialize@1.1.1': - resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==, tarball: https://registry.npmmirror.com/@keyv/serialize/-/serialize-1.1.1.tgz} + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} - '@logicflow/core@2.1.4': - resolution: {integrity: sha512-cK+drgL57faFDUOb2Zn0vWDRtVJe6MswF3GwLb/Sn/9aVxiSIk+5Z6cpSdY+4iuTpxFDKj0DBpvMYEeeLPnzpg==, tarball: https://registry.npmmirror.com/@logicflow/core/-/core-2.1.4.tgz} + '@logicflow/core@2.1.9': + resolution: {integrity: sha512-MeI5xBdO7rU25AhisVixsMOVc38T9W7/XkFUdoHWyPYwFWF4eySGphbk1yM+Qz95HfAXZI96C+YX7pVyR1Rnjw==} - '@logicflow/extension@2.1.6': - resolution: {integrity: sha512-KbKkOjxN4GXHiqQNAatuHi8HAEjTvXvXWvpQUedChiSaIeAgospSAdovinRXQOkAQxLo5MpnR0KoYwNtp2R0NA==, tarball: https://registry.npmmirror.com/@logicflow/extension/-/extension-2.1.6.tgz} + '@logicflow/extension@2.1.11': + resolution: {integrity: sha512-oWioTf3MQCxQqiIF7z6VRhUwpCdmjfE9R9+4O59PurEHjlhum7sb2LHDOMool9DHB0qufpLcsgS+vk35Va+EPw==} peerDependencies: - '@logicflow/core': 2.1.4 - '@logicflow/vue-node-registry': 1.1.5 + '@logicflow/core': 2.1.9 + '@logicflow/vue-node-registry': 1.1.10 - '@logicflow/vue-node-registry@1.1.5': - resolution: {integrity: sha512-49m9Ba1XTzpUbad1CagedCxIeSzsS3rIFZjDfnagt1aOgVk8Clj3/oxJt8LYPd/IJ45VtrUqpl2Ak1gHnSUfsQ==, tarball: https://registry.npmmirror.com/@logicflow/vue-node-registry/-/vue-node-registry-1.1.5.tgz} + '@logicflow/vue-node-registry@1.1.10': + resolution: {integrity: sha512-ykKWb0DZ6RbQRGBHqkTkxsJxzyPSZgD5U2gQ4at8RISHHAOrkjAqCCEbm7vfIGbAPqC5GGvrnSTrJwmTT0pJxg==} peerDependencies: - '@logicflow/core': 2.1.4 + '@logicflow/core': 2.1.9 '@vue/composition-api': ^1.0.0-rc.10 vue: ^2.0.0 || >=3.0.0 peerDependenciesMeta: @@ -1737,11 +1787,11 @@ packages: engines: {node: '>=14'} '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==, tarball: https://registry.npmmirror.com/@pkgr/core/-/core-0.2.9.tgz} + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@polka/url@1.0.0-next.28': - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} '@purge-icons/core@0.10.0': resolution: {integrity: sha512-AtJbZv5Yy+vWX5v32DPTr+CW7AkSK8HJx52orDbrYt/9s4lGM2t4KKAmwaTQEH2HYr2HVh1mlqs54/S1s3WT1g==} @@ -1793,8 +1843,8 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -1836,56 +1886,67 @@ packages: resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.52.5': resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.52.5': resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.52.5': resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.52.5': resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.52.5': resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.52.5': resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.52.5': resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.52.5': resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.52.5': resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.52.5': resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openharmony-arm64@4.52.5': resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} @@ -1918,7 +1979,7 @@ packages: vite: '>=2.0.0-beta.49' '@scarf/scarf@1.4.0': - resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==, tarball: https://registry.npmmirror.com/@scarf/scarf/-/scarf-1.4.0.tgz} + resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} '@simonwep/pickr@1.8.2': resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==} @@ -1933,7 +1994,7 @@ packages: resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} '@sphinxxxx/color-conversion@2.2.2': - resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==, tarball: https://registry.npmmirror.com/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz} + resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==} '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} @@ -1950,8 +2011,8 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -1965,20 +2026,20 @@ packages: '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/codemirror@5.60.17': - resolution: {integrity: sha512-AZq2FIsUHVMlp7VSe2hTfl5w4pcUkoFkM3zVsRKsn1ca8CXRDYvnin04+HP2REkwsxemuHqvDofdlhUWNpbwfw==, tarball: https://registry.npmmirror.com/@types/codemirror/-/codemirror-5.60.17.tgz} + resolution: {integrity: sha512-AZq2FIsUHVMlp7VSe2hTfl5w4pcUkoFkM3zVsRKsn1ca8CXRDYvnin04+HP2REkwsxemuHqvDofdlhUWNpbwfw==} - '@types/conventional-commits-parser@5.0.1': - resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} + '@types/conventional-commits-parser@5.0.2': + resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==} '@types/crypto-js@4.2.2': resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} @@ -1986,9 +2047,6 @@ packages: '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==, tarball: https://registry.npmmirror.com/@types/estree/-/estree-1.0.7.tgz} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1999,7 +2057,7 @@ packages: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} '@types/inquirer@9.0.9': - resolution: {integrity: sha512-/mWx5136gts2Z2e5izdoRCo46lPp5TMs9R15GTSsgg/XnZyxDWVqoVU3R9lWnccKpqwsJLvRoxbCjoJtZB7DSw==, tarball: https://registry.npmmirror.com/@types/inquirer/-/inquirer-9.0.9.tgz} + resolution: {integrity: sha512-/mWx5136gts2Z2e5izdoRCo46lPp5TMs9R15GTSsgg/XnZyxDWVqoVU3R9lWnccKpqwsJLvRoxbCjoJtZB7DSw==} '@types/intro.js@5.1.5': resolution: {integrity: sha512-TT1d8ayz07svlBcoqh26sNpQaU6bBpdFcCC+IMZHp46NNX2mYAHAVefM3wCmQSd4UWhhObeMjFByw2IaPKOXlw==} @@ -2025,8 +2083,8 @@ packages: '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - '@types/lodash@4.17.16': - resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} + '@types/lodash@4.17.23': + resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} @@ -2035,10 +2093,10 @@ packages: resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==} '@types/node@14.18.63': - resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==, tarball: https://registry.npmmirror.com/@types/node/-/node-14.18.63.tgz} + resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - '@types/node@20.19.25': - resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==, tarball: https://registry.npmmirror.com/@types/node/-/node-20.19.25.tgz} + '@types/node@20.19.30': + resolution: {integrity: sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2046,23 +2104,26 @@ packages: '@types/nprogress@0.2.3': resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} - '@types/qrcode@1.5.5': - resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} + '@types/pinyin@2.10.2': + resolution: {integrity: sha512-jLzlRkaLRLg+lgYPjOuP3HX2cozUkhXls5GTXopsKuKJ9lDGlIAb88OoIztH6TbNUsoJnl/7e/kjaumA5IKKJg==} + + '@types/qrcode@1.5.6': + resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==, tarball: https://registry.npmmirror.com/@types/qs/-/qs-6.14.0.tgz} + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/showdown@2.0.6': resolution: {integrity: sha512-pTvD/0CIeqe4x23+YJWlX2gArHa8G0J0Oh6GKaVXV7TAeickpkkZiNOgFcFcmLQ5lB/K0qBJL1FtRYltBfbGCQ==} - '@types/sortablejs@1.15.8': - resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} + '@types/sortablejs@1.15.9': + resolution: {integrity: sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -2071,16 +2132,16 @@ packages: resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} '@types/tern@0.23.9': - resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==, tarball: https://registry.npmmirror.com/@types/tern/-/tern-0.23.9.tgz} + resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} '@types/through@0.0.33': - resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==, tarball: https://registry.npmmirror.com/@types/through/-/through-0.0.33.tgz} + resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} '@types/tinycolor2@1.4.6': resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, tarball: https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz} + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} @@ -2088,8 +2149,8 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -2269,14 +2330,14 @@ packages: resolution: {integrity: sha512-Gtxgt6Rjgopt6234ANpO0bBsSwtjZ23lBlVDHIy8Mi2NJqyoj1vgVWY0dri8/2LCZAWzQ6EnwRrUVViUZ0cvMA==} '@vitejs/plugin-vue-jsx@4.1.1': - resolution: {integrity: sha512-uMJqv/7u1zz/9NbWAD3XdjaY20tKTf17XVfQ9zq4wY1BjsB/PjpJPMe2xiG39QpP4ZdhYNhm4Hvo66uJrykNLA==, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.1.1.tgz} + resolution: {integrity: sha512-uMJqv/7u1zz/9NbWAD3XdjaY20tKTf17XVfQ9zq4wY1BjsB/PjpJPMe2xiG39QpP4ZdhYNhm4Hvo66uJrykNLA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 vue: ^3.0.0 '@vitejs/plugin-vue@5.2.4': - resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz} + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 @@ -2291,39 +2352,33 @@ packages: '@volar/typescript@1.11.1': resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} - '@vue/babel-helper-vue-transform-on@1.4.0': - resolution: {integrity: sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==, tarball: https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.4.0.tgz} + '@vue/babel-helper-vue-transform-on@1.5.0': + resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} - '@vue/babel-plugin-jsx@1.4.0': - resolution: {integrity: sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==, tarball: https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.4.0.tgz} + '@vue/babel-plugin-jsx@1.5.0': + resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} peerDependencies: '@babel/core': ^7.0.0-0 peerDependenciesMeta: '@babel/core': optional: true - '@vue/babel-plugin-resolve-type@1.4.0': - resolution: {integrity: sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==, tarball: https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.4.0.tgz} + '@vue/babel-plugin-resolve-type@1.5.0': + resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz} + '@vue/compiler-core@3.5.27': + resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} - '@vue/compiler-core@3.5.25': - resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.25.tgz} + '@vue/compiler-dom@3.5.27': + resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==} - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + '@vue/compiler-sfc@3.5.27': + resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==} - '@vue/compiler-dom@3.5.25': - resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==, tarball: https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.25.tgz} - - '@vue/compiler-sfc@3.5.25': - resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==, tarball: https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.25.tgz} - - '@vue/compiler-ssr@3.5.25': - resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==, tarball: https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.25.tgz} + '@vue/compiler-ssr@3.5.27': + resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==} '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -2336,25 +2391,22 @@ packages: typescript: optional: true - '@vue/reactivity@3.5.25': - resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==, tarball: https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.25.tgz} + '@vue/reactivity@3.5.27': + resolution: {integrity: sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==} - '@vue/runtime-core@3.5.25': - resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==, tarball: https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.25.tgz} + '@vue/runtime-core@3.5.27': + resolution: {integrity: sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==} - '@vue/runtime-dom@3.5.25': - resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==, tarball: https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.25.tgz} + '@vue/runtime-dom@3.5.27': + resolution: {integrity: sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==} - '@vue/server-renderer@3.5.25': - resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==, tarball: https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.25.tgz} + '@vue/server-renderer@3.5.27': + resolution: {integrity: sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==} peerDependencies: - vue: 3.5.25 + vue: 3.5.27 - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz} - - '@vue/shared@3.5.25': - resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.5.25.tgz} + '@vue/shared@3.5.27': + resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} @@ -2368,8 +2420,8 @@ packages: '@vueuse/shared@10.11.1': resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} - '@vxe-ui/core@4.2.8': - resolution: {integrity: sha512-foSytfJOfwIhw5G9sz6Swtdnlwa+FJNkewWkS3XLwXsCOd4mE4BAT7Zfh8PwoKP6EnvCIt96K9ic/IQAC7HksQ==} + '@vxe-ui/core@4.2.21': + resolution: {integrity: sha512-WcwKvNwovuAy+t0t40PwkDvMlCCOWCGSl19qmTq+NYn4GuMfItUsHwfdszO6UD90ozOMyPJzdxLwcfVijYpLng==} peerDependencies: vue: ^3.2.0 @@ -2393,8 +2445,8 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true @@ -2408,11 +2460,11 @@ packages: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, tarball: https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz} + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==, tarball: https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz} + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} ansi-regex@2.1.1: @@ -2423,12 +2475,12 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz} + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} engines: {node: '>=0.10.0'} ansi-styles@3.2.1: @@ -2443,8 +2495,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ant-design-vue@4.2.6: @@ -2509,7 +2561,7 @@ packages: engines: {node: '>=0.10.0'} astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, tarball: https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz} + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} async-function@1.0.0: @@ -2523,7 +2575,7 @@ packages: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz} + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} @@ -2534,8 +2586,8 @@ packages: engines: {node: '>= 4.5.0'} hasBin: true - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==, tarball: https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.21.tgz} + autoprefixer@10.4.23: + resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -2546,10 +2598,10 @@ packages: engines: {node: '>= 0.4'} axios@0.26.1: - resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==, tarball: https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz} + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} axios@1.13.2: - resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==, tarball: https://registry.npmmirror.com/axios/-/axios-1.13.2.tgz} + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} @@ -2583,10 +2635,10 @@ packages: babel-plugin-transform-runtime@6.23.0: resolution: {integrity: sha512-cpGMVC1vt/772y3jx1gwSaTitQVZuFDlllgreMsZ+rTYC6jlYXRyf5FQOgSnckOiA5QmzbXTyBY2A5AmZXF1fA==} - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0 || ^8.0.0-0 babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} @@ -2601,17 +2653,17 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} balanced-match@2.0.0: - resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==, tarball: https://registry.npmmirror.com/balanced-match/-/balanced-match-2.0.0.tgz} + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, tarball: https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz} + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} base@0.11.2: resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} engines: {node: '>=0.10.0'} - baseline-browser-mapping@2.8.31: - resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==} + baseline-browser-mapping@2.9.15: + resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==} hasBin: true basic-auth@2.0.1: @@ -2629,7 +2681,7 @@ packages: engines: {node: '>=8'} bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, tarball: https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz} + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -2637,11 +2689,11 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@2.3.2: resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} @@ -2651,18 +2703,13 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==, tarball: https://registry.npmmirror.com/browserslist/-/browserslist-4.24.4.tgz} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, tarball: https://registry.npmmirror.com/bs-logger/-/bs-logger-0.2.6.tgz} + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} bser@2.1.1: @@ -2672,7 +2719,7 @@ packages: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, tarball: https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz} + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} @@ -2682,8 +2729,8 @@ packages: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} - cacheable@2.2.0: - resolution: {integrity: sha512-LEJxRqfeomiiRd2t0uON6hxAtgOoWDfY3fugebbz+J3vDLO+SkdfFChQcOHTZhj9SYa9iwE9MGYNX72dKiOE4w==, tarball: https://registry.npmmirror.com/cacheable/-/cacheable-2.2.0.tgz} + cacheable@2.3.2: + resolution: {integrity: sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==} cachedir@2.3.0: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} @@ -2720,11 +2767,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001707: - resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==, tarball: https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz} - - caniuse-lite@1.0.30001757: - resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} + caniuse-lite@1.0.30001765: + resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==} chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} @@ -2742,8 +2786,8 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} char-regex@1.0.2: @@ -2751,10 +2795,10 @@ packages: engines: {node: '>=10'} chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, tarball: https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz} + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==, tarball: https://registry.npmmirror.com/chardet/-/chardet-2.1.1.tgz} + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} @@ -2762,9 +2806,9 @@ packages: cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - cheerio@1.0.0: - resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} - engines: {node: '>=18.17'} + cheerio@1.1.2: + resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==} + engines: {node: '>=20.18.1'} china-area-data@5.0.1: resolution: {integrity: sha512-BQDPpiv5Nn+018ekcJK2oSD9PAD+E1bvXB0wgabc//dFVS/KvRqCgg0QOEUt3vBkx9XzB5a9BmkJCEZDBxVjVw==} @@ -2785,7 +2829,7 @@ packages: engines: {node: '>=0.10.0'} classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==, tarball: https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz} + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} @@ -2800,7 +2844,7 @@ packages: engines: {node: '>=18'} cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, tarball: https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz} + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} cli-truncate@4.0.0: @@ -2808,11 +2852,11 @@ packages: engines: {node: '>=18'} cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==, tarball: https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz} + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==, tarball: https://registry.npmmirror.com/cli-width/-/cli-width-4.1.0.tgz} + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} clipboard@2.0.11: @@ -2826,7 +2870,7 @@ packages: engines: {node: '>=12'} clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, tarball: https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz} + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} clone@2.1.2: @@ -2838,10 +2882,10 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} codemirror@5.65.20: - resolution: {integrity: sha512-i5dLDDxwkFCbhjvL2pNjShsojoL3XHyDwsGv1jqETUoW+lzpBKKqNTUWgQwVAOa0tUm4BwekT455ujafi8payA==, tarball: https://registry.npmmirror.com/codemirror/-/codemirror-5.65.20.tgz} + resolution: {integrity: sha512-i5dLDDxwkFCbhjvL2pNjShsojoL3XHyDwsGv1jqETUoW+lzpBKKqNTUWgQwVAOa0tUm4BwekT455ujafi8payA==} - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} collection-visit@1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} @@ -2861,13 +2905,13 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==, tarball: https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz} + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz} + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} commander@10.0.1: @@ -2878,9 +2922,9 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} - commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} - engines: {node: '>=18'} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -2924,8 +2968,8 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - confbox@0.2.1: - resolution: {integrity: sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==} + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -3019,7 +3063,7 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} copy-anything@2.0.6: - resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==, tarball: https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz} + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} @@ -3032,8 +3076,8 @@ packages: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - core-js@3.41.0: - resolution: {integrity: sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==, tarball: https://registry.npmmirror.com/core-js/-/core-js-3.41.0.tgz} + core-js@3.47.0: + resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -3051,8 +3095,8 @@ packages: cosmiconfig: '>=8.2' typescript: '>=4' - cosmiconfig-typescript-loader@6.1.0: - resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + cosmiconfig-typescript-loader@6.2.0: + resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} engines: {node: '>=v18'} peerDependencies: '@types/node': '*' @@ -3069,7 +3113,7 @@ packages: optional: true cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==, tarball: https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz} + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -3119,14 +3163,14 @@ packages: engines: {node: '>=8'} css-functions-list@3.2.3: - resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==, tarball: https://registry.npmmirror.com/css-functions-list/-/css-functions-list-3.2.3.tgz} + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} engines: {node: '>=12 || >=16'} css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} @@ -3137,15 +3181,15 @@ packages: engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==, tarball: https://registry.npmmirror.com/css-tree/-/css-tree-3.1.0.tgz} + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, tarball: https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz} + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true @@ -3156,19 +3200,19 @@ packages: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} cz-conventional-changelog@3.3.0: resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} cz-git@1.12.0: - resolution: {integrity: sha512-LaZ+8whPPUOo6Y0Zy4nIbf6JOleV3ejp41sT6N4RPKiKKA+ICWf4ueeIlxIO8b6JtdlDxRzHH/EcRji07nDxcg==, tarball: https://registry.npmmirror.com/cz-git/-/cz-git-1.12.0.tgz} + resolution: {integrity: sha512-LaZ+8whPPUOo6Y0Zy4nIbf6JOleV3ejp41sT6N4RPKiKKA+ICWf4ueeIlxIO8b6JtdlDxRzHH/EcRji07nDxcg==} engines: {node: '>=v12.20.0'} czg@1.12.0: - resolution: {integrity: sha512-LGltcoZ5m7vhe3WNw16QXqd5WurnHegx9V15MwZJtFAU2AVCYLCqDbwxPUgZOnAcdzzooq33ONcU148HOQsjdA==, tarball: https://registry.npmmirror.com/czg/-/czg-1.12.0.tgz} + resolution: {integrity: sha512-LGltcoZ5m7vhe3WNw16QXqd5WurnHegx9V15MwZJtFAU2AVCYLCqDbwxPUgZOnAcdzzooq33ONcU148HOQsjdA==} engines: {node: '>=v12.20.0'} hasBin: true @@ -3193,7 +3237,7 @@ packages: engines: {node: '>= 0.4'} dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==, tarball: https://registry.npmmirror.com/dayjs/-/dayjs-1.11.19.tgz} + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -3215,17 +3259,8 @@ packages: supports-color: optional: true - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, tarball: https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz} + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -3248,8 +3283,8 @@ packages: dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + dedent@1.7.1: + resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -3264,14 +3299,14 @@ packages: engines: {node: '>=0.10.0'} defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, tarball: https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz} + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, tarball: https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz} + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} define-properties@1.2.1: @@ -3294,7 +3329,7 @@ packages: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, tarball: https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz} + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} delegate@3.2.0: @@ -3316,7 +3351,7 @@ packages: engines: {node: '>=8'} diff-match-patch@1.0.5: - resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==, tarball: https://registry.npmmirror.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz} + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} @@ -3329,8 +3364,8 @@ packages: dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - dingtalk-jsapi@3.2.2: - resolution: {integrity: sha512-FglWzvdMJosOkX8k2MVavX3MiDIE6vAmAHqVE0bvXRfh3El4DVqACQRw1UIyKi3UloUS07XQXGRAG6S12eehgg==, tarball: https://registry.npmmirror.com/dingtalk-jsapi/-/dingtalk-jsapi-3.2.2.tgz} + dingtalk-jsapi@3.2.5: + resolution: {integrity: sha512-GHtDTmilJQhr07GNarjlzhvgUkPWc0+52zbN2ToW+JzkydaOwmhiJCTO42+BI+onAlhdfLUbtUnGsjQNDTrM1w==} dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -3359,13 +3394,13 @@ packages: resolution: {integrity: sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA==} domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==, tarball: https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz} + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} domhandler@2.4.2: - resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==, tarball: https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz} + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} @@ -3376,7 +3411,7 @@ packages: engines: {node: '>= 4'} domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==, tarball: https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz} + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -3396,7 +3431,7 @@ packages: engines: {node: '>=12'} dotenv@16.6.1: - resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==, tarball: https://registry.npmmirror.com/dotenv/-/dotenv-16.6.1.tgz} + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} dunder-proto@1.0.1: @@ -3425,23 +3460,20 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.128: - resolution: {integrity: sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==, tarball: https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz} - - electron-to-chromium@1.5.260: - resolution: {integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} emoji-mart-vue-fast@15.0.5: - resolution: {integrity: sha512-wnxLor8ggpqshoOPwIc33MdOC3A1XFeDLgUwYLPtNPL8VeAtXJAVrnFq1CN5PeCYAFoLo4IufHQZ9CfHD4IZiw==, tarball: https://registry.npmmirror.com/emoji-mart-vue-fast/-/emoji-mart-vue-fast-15.0.5.tgz} + resolution: {integrity: sha512-wnxLor8ggpqshoOPwIc33MdOC3A1XFeDLgUwYLPtNPL8VeAtXJAVrnFq1CN5PeCYAFoLo4IufHQZ9CfHD4IZiw==} peerDependencies: vue: '>2.0.0' - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3457,24 +3489,32 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} - encoding-sniffer@0.2.0: - resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} enquire.js@2.1.6: resolution: {integrity: sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==} entities@1.1.2: - resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==, tarball: https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz} + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, tarball: https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz} + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + entities@7.0.0: + resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} + engines: {node: '>=0.12'} + env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, tarball: https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz} + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} environment@1.1.0: @@ -3485,11 +3525,11 @@ packages: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -3644,8 +3684,13 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.1: - resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true @@ -3669,7 +3714,7 @@ packages: engines: {node: '>=10'} eslint-config-prettier@9.1.2: - resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==, tarball: https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz} + resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -3692,8 +3737,8 @@ packages: jest: optional: true - eslint-plugin-prettier@5.5.4: - resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==, tarball: https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz} + eslint-plugin-prettier@5.5.5: + resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -3707,7 +3752,7 @@ packages: optional: true eslint-plugin-vue@9.33.0: - resolution: {integrity: sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==, tarball: https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz} + resolution: {integrity: sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -3743,8 +3788,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -3763,7 +3808,7 @@ packages: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, tarball: https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz} + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -3779,8 +3824,8 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -3806,8 +3851,8 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - exsolve@1.0.4: - resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -3829,7 +3874,7 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, tarball: https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz} + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} @@ -3841,21 +3886,21 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, tarball: https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz} + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 @@ -3867,8 +3912,8 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-entry-cache@11.1.1: - resolution: {integrity: sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==, tarball: https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-11.1.1.tgz} + file-entry-cache@11.1.2: + resolution: {integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==} file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} @@ -3915,14 +3960,14 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@6.1.19: - resolution: {integrity: sha512-l/K33newPTZMTGAnnzaiqSl6NnH7Namh8jBNjrgjprWxGmZUuxx/sJNIRaijOh3n7q7ESbhNZC+pvVZMFdeU4A==, tarball: https://registry.npmmirror.com/flat-cache/-/flat-cache-6.1.19.tgz} + flat-cache@6.1.20: + resolution: {integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==} flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -3943,26 +3988,26 @@ packages: engines: {node: '>=14'} form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==, tarball: https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz} + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, tarball: https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} fragment-cache@0.2.1: resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} engines: {node: '>=0.10.0'} fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz} + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.3.2: - resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.2.tgz} + fs-extra@11.3.3: + resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} engines: {node: '>=14.14'} fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz} + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} fs.realpath@1.0.0: @@ -3983,16 +4028,20 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, tarball: https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz} + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -4022,8 +4071,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} @@ -4052,8 +4101,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true glob@11.1.0: @@ -4078,7 +4127,7 @@ packages: engines: {node: '>=0.10.0'} global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==, tarball: https://registry.npmmirror.com/global-modules/-/global-modules-2.0.0.tgz} + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} engines: {node: '>=6'} global-prefix@1.0.2: @@ -4086,13 +4135,9 @@ packages: engines: {node: '>=0.10.0'} global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==, tarball: https://registry.npmmirror.com/global-prefix/-/global-prefix-3.0.0.tgz} + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, tarball: https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz} - engines: {node: '>=4'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -4110,7 +4155,7 @@ packages: engines: {node: '>=10'} globjoin@0.1.4: - resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==, tarball: https://registry.npmmirror.com/globjoin/-/globjoin-0.1.4.tgz} + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} good-listener@1.2.2: resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} @@ -4147,7 +4192,7 @@ packages: engines: {node: '>= 0.4'} has-flag@1.0.0: - resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz} + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} engines: {node: '>=0.10.0'} has-flag@3.0.0: @@ -4189,8 +4234,8 @@ packages: resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} engines: {node: '>=0.10.0'} - hashery@1.2.0: - resolution: {integrity: sha512-43XJKpwle72Ik5Zpam7MuzRWyNdwwdf6XHlh8wCj2PggvWf+v/Dm5B0dxGZOmddidgeO6Ofu9As/o231Ti/9PA==, tarball: https://registry.npmmirror.com/hashery/-/hashery-1.2.0.tgz} + hashery@1.4.0: + resolution: {integrity: sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==} engines: {node: '>=20'} hasown@2.0.2: @@ -4206,14 +4251,14 @@ packages: engines: {node: '>=12.0.0'} hoist-non-react-statics@2.5.5: - resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==, tarball: https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz} + resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==} homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} - hookified@1.13.0: - resolution: {integrity: sha512-6sPYUY8olshgM/1LDNW4QZQN0IqgKhtl/1C8koNZBJrKLBk3AZl6chQtNwpNztvfiApHMEwMHek5rv993PRbWw==, tarball: https://registry.npmmirror.com/hookified/-/hookified-1.13.0.tgz} + hookified@1.15.0: + resolution: {integrity: sha512-51w+ZZGt7Zw5q7rM3nC4t3aLn/xvKDETsXqMczndvwyVQhAHfUmUuFBRFcos8Iyebtk7OAE9dL26wFNzZVVOkw==} hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -4239,17 +4284,17 @@ packages: hasBin: true html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==, tarball: https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz} + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + htmlparser2@3.10.1: - resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==, tarball: https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz} + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==, tarball: https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.2.tgz} - - htmlparser2@9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} http-proxy@1.18.1: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} @@ -4274,29 +4319,29 @@ packages: hasBin: true iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz} + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.0.tgz} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, tarball: https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz} + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, tarball: https://registry.npmmirror.com/ignore/-/ignore-7.0.5.tgz} + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} image-size@0.5.5: @@ -4313,8 +4358,8 @@ packages: engines: {node: '>=8'} hasBin: true - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -4335,15 +4380,15 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==, tarball: https://registry.npmmirror.com/ini/-/ini-4.1.1.tgz} + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} inquirer@8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==, tarball: https://registry.npmmirror.com/inquirer/-/inquirer-8.2.5.tgz} + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} inquirer@9.3.8: - resolution: {integrity: sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==, tarball: https://registry.npmmirror.com/inquirer/-/inquirer-9.3.8.tgz} + resolution: {integrity: sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==} engines: {node: '>=18'} internal-slot@1.1.0: @@ -4416,7 +4461,7 @@ packages: engines: {node: '>= 0.4'} is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, tarball: https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz} + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true @@ -4444,16 +4489,16 @@ packages: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -4461,7 +4506,7 @@ packages: engines: {node: '>=0.10.0'} is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, tarball: https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz} + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} is-map@2.0.3: @@ -4471,6 +4516,10 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + 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'} @@ -4500,11 +4549,11 @@ packages: engines: {node: '>=0.10.0'} is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, tarball: https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz} + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} is-plain-object@3.0.1: - resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==, tarball: https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz} + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} engines: {node: '>=0.10.0'} is-plain-object@5.0.0: @@ -4552,7 +4601,7 @@ packages: engines: {node: '>= 0.4'} is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, tarball: https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz} + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} is-utf8@0.2.1: @@ -4571,14 +4620,14 @@ packages: engines: {node: '>= 0.4'} is-what@3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==, tarball: https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz} + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, tarball: https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz} + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} isarray@1.0.0: @@ -4618,8 +4667,8 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} jackspeak@3.4.3: @@ -4629,8 +4678,8 @@ packages: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} hasBin: true @@ -4767,10 +4816,6 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -4788,17 +4833,17 @@ packages: engines: {node: '>=14'} js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, tarball: https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz} + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==, tarball: https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.1.tgz} + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, tarball: https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsesc@3.1.0: @@ -4835,16 +4880,16 @@ packages: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, tarball: https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz} + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, tarball: https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz} + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, tarball: https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -4854,22 +4899,22 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} - katex@0.16.21: - resolution: {integrity: sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==} + katex@0.16.27: + resolution: {integrity: sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==} hasBin: true keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - keyv@5.5.4: - resolution: {integrity: sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==, tarball: https://registry.npmmirror.com/keyv/-/keyv-5.5.4.tgz} + keyv@5.5.5: + resolution: {integrity: sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==} kind-of@3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==, tarball: https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz} + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} engines: {node: '>=0.10.0'} kind-of@5.1.0: @@ -4885,13 +4930,13 @@ packages: engines: {node: '>=6'} known-css-properties@0.37.0: - resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==, tarball: https://registry.npmmirror.com/known-css-properties/-/known-css-properties-0.37.0.tgz} + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - less@4.4.2: - resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==, tarball: https://registry.npmmirror.com/less/-/less-4.4.2.tgz} + less@4.5.1: + resolution: {integrity: sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==} engines: {node: '>=14'} hasBin: true @@ -4934,8 +4979,8 @@ packages: resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} engines: {node: '>=4.0.0'} - local-pkg@1.1.1: - resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} locate-path@5.0.0: @@ -4950,8 +4995,8 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash-es@4.17.22: + resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -4976,7 +5021,7 @@ packages: resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, tarball: https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz} + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -4994,7 +5039,7 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, tarball: https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz} + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -5006,7 +5051,7 @@ packages: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, tarball: https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz} + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} log-update@6.1.0: @@ -5027,33 +5072,33 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} engines: {node: 20 || >=22} lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, tarball: https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz} + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - luxon@3.6.0: - resolution: {integrity: sha512-WE7p0p7W1xji9qxkLYsvcIxZyfP48GuFrWIBQZIsbjCyf65dG1rv4n83HcOyEyhvzxJCrUoObCRNFgRNIQ5KNA==} + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz} + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, tarball: https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz} + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} make-error@1.3.6: @@ -5090,7 +5135,7 @@ packages: engines: {node: '>= 0.4'} mathml-tag-names@2.1.3: - resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==, tarball: https://registry.npmmirror.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz} + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} @@ -5102,13 +5147,13 @@ packages: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==, tarball: https://registry.npmmirror.com/mdn-data/-/mdn-data-2.12.2.tgz} + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} medium-editor@5.23.3: - resolution: {integrity: sha512-he9/TdjX8f8MGdXGfCs8AllrYnqXJJvjNkDKmPg3aPW/uoIrlRqtkFthrwvmd+u4QyzEiadhCCM0EwTiRdUCJw==, tarball: https://registry.npmmirror.com/medium-editor/-/medium-editor-5.23.3.tgz} + resolution: {integrity: sha512-he9/TdjX8f8MGdXGfCs8AllrYnqXJJvjNkDKmPg3aPW/uoIrlRqtkFthrwvmd+u4QyzEiadhCCM0EwTiRdUCJw==} memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} @@ -5119,7 +5164,7 @@ packages: engines: {node: '>=16.10'} meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==, tarball: https://registry.npmmirror.com/meow/-/meow-13.2.0.tgz} + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} meow@8.1.2: @@ -5153,11 +5198,11 @@ packages: engines: {node: '>=8.6'} mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, tarball: https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz} + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, tarball: https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz} + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} mime@1.6.0: @@ -5222,32 +5267,32 @@ packages: resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} engines: {node: '>=0.10.0'} - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} mobx-preact@3.0.0: - resolution: {integrity: sha512-ijan/cBs3WmRye87E5+3JmoFBB00KDAwNA3pm7bMwYLPHBAXlN86aC3gdrXw8aKzM5RI8V3a993PphzPv6P4FA==, tarball: https://registry.npmmirror.com/mobx-preact/-/mobx-preact-3.0.0.tgz} + resolution: {integrity: sha512-ijan/cBs3WmRye87E5+3JmoFBB00KDAwNA3pm7bMwYLPHBAXlN86aC3gdrXw8aKzM5RI8V3a993PphzPv6P4FA==} peerDependencies: mobx: 5.x preact: '>=8' mobx-utils@5.6.2: - resolution: {integrity: sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==, tarball: https://registry.npmmirror.com/mobx-utils/-/mobx-utils-5.6.2.tgz} + resolution: {integrity: sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==} peerDependencies: mobx: ^4.13.1 || ^5.13.1 mobx@5.15.7: - resolution: {integrity: sha512-wyM3FghTkhmC+hQjyPGGFdpehrcX1KOXsDuERhfK2YbJemkUhEB+6wzEN639T21onxlfYBmriA1PFnvxTUhcKw==, tarball: https://registry.npmmirror.com/mobx/-/mobx-5.15.7.tgz} + resolution: {integrity: sha512-wyM3FghTkhmC+hQjyPGGFdpehrcX1KOXsDuERhfK2YbJemkUhEB+6wzEN639T21onxlfYBmriA1PFnvxTUhcKw==} mockjs@1.1.0: resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} hasBin: true mousetrap@1.6.5: - resolution: {integrity: sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==, tarball: https://registry.npmmirror.com/mousetrap/-/mousetrap-1.6.5.tgz} + resolution: {integrity: sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==} mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, tarball: https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz} + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} mrmime@2.0.1: @@ -5267,14 +5312,14 @@ packages: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, tarball: https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz} + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==, tarball: https://registry.npmmirror.com/mute-stream/-/mute-stream-1.0.0.tgz} + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz} + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -5320,9 +5365,6 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, tarball: https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz} - node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} @@ -5346,10 +5388,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, tarball: https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz} - engines: {node: '>=0.10.0'} - npm-run-all@4.1.5: resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} engines: {node: '>= 4'} @@ -5367,7 +5405,7 @@ packages: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, tarball: https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz} + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -5420,7 +5458,7 @@ packages: engines: {node: '>=18'} open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, tarball: https://registry.npmmirror.com/open/-/open-8.4.2.tgz} + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} opener@1.5.2: @@ -5432,7 +5470,7 @@ packages: engines: {node: '>= 0.8.0'} ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, tarball: https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz} + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} os-tmpdir@1.0.2: @@ -5474,8 +5512,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.5.0: - resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -5497,7 +5535,7 @@ packages: engines: {node: '>=16'} parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==, tarball: https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz} + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} parse-passwd@1.0.0: @@ -5510,8 +5548,8 @@ packages: parse5-parser-stream@7.1.2: resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -5580,7 +5618,7 @@ packages: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, tarball: https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz} + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -5589,15 +5627,11 @@ packages: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz} + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz} - engines: {node: '>=12'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz} + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} pidtree@0.3.1: @@ -5615,7 +5649,7 @@ packages: engines: {node: '>=4'} pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, tarball: https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz} + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} pinia@2.1.7: @@ -5630,6 +5664,9 @@ packages: typescript: optional: true + pinyin-pro@3.28.0: + resolution: {integrity: sha512-mMRty6RisoyYNphJrTo3pnvp3w8OMZBrXm9YSWkxhAfxKj1KZk2y8T2PDIZlDDRsvZ0No+Hz6FI4sZpA6Ey25g==} + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -5641,15 +5678,15 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-types@2.1.0: - resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} - portfinder@1.0.35: - resolution: {integrity: sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==} + portfinder@1.0.38: + resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==} engines: {node: '>= 10.12'} posix-character-classes@0.1.1: @@ -5660,8 +5697,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss-html@1.8.0: - resolution: {integrity: sha512-5mMeb1TgLWoRKxZ0Xh9RZDfwUUIqRrcxO2uXO+Ezl1N5lqpCiSU5Gk6+1kZediBfBHFtPCdopr2UZ2SgUsKcgQ==, tarball: https://registry.npmmirror.com/postcss-html/-/postcss-html-1.8.0.tgz} + postcss-html@1.8.1: + resolution: {integrity: sha512-OLF6P7qctfAWayOhLpcVnTGqVeJzu2W3WpIYelfz2+JV5oGxfkcEvweN9U4XpeqE0P98dcD9ssusGwlF0TK0uQ==} engines: {node: ^12 || >=14} postcss-less@6.0.0: @@ -5676,26 +5713,26 @@ packages: postcss: '>4 <9' postcss-resolve-nested-selector@0.1.6: - resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==, tarball: https://registry.npmmirror.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz} + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==, tarball: https://registry.npmmirror.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz} + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 postcss-safe-parser@7.0.1: - resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==, tarball: https://registry.npmmirror.com/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz} + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} engines: {node: '>=18.0'} peerDependencies: postcss: ^8.4.31 postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz} + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} postcss-sorting@8.0.2: @@ -5704,14 +5741,14 @@ packages: postcss: ^8.4.20 postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, tarball: https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz} + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} postcss@5.2.18: - resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==, tarball: https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz} + resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==} engines: {node: '>=0.12'} postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz} + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} posthtml-parser@0.2.1: @@ -5731,19 +5768,19 @@ packages: resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==} engines: {node: '>=0.10.0'} - preact@10.27.2: - resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==, tarball: https://registry.npmmirror.com/preact/-/preact-10.27.2.tgz} + preact@10.28.2: + resolution: {integrity: sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, tarball: https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, tarball: https://registry.npmmirror.com/prettier/-/prettier-3.6.2.tgz} + prettier@3.8.0: + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} engines: {node: '>=14'} hasBin: true @@ -5752,7 +5789,7 @@ packages: engines: {node: '>=6'} pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==, tarball: https://registry.npmmirror.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz} + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} pretty-format@29.7.0: @@ -5760,7 +5797,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} pretty-quick@4.2.2: - resolution: {integrity: sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==, tarball: https://registry.npmmirror.com/pretty-quick/-/pretty-quick-4.2.2.tgz} + resolution: {integrity: sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==} engines: {node: '>=14'} hasBin: true peerDependencies: @@ -5770,7 +5807,7 @@ packages: resolution: {integrity: sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==} promise-polyfill@7.1.2: - resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==, tarball: https://registry.npmmirror.com/promise-polyfill/-/promise-polyfill-7.1.2.tgz} + resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==} prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -5780,10 +5817,10 @@ packages: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, tarball: https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz} + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, tarball: https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz} + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} @@ -5796,8 +5833,8 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - qified@0.5.2: - resolution: {integrity: sha512-7gJ6mxcQb9vUBOtbKm5mDevbe2uRcOEVp1g4gb/Q+oLntB3HY8eBhOYRxFI2mlDFlY1e4DOSCptzxarXRvzxCA==, tarball: https://registry.npmmirror.com/qified/-/qified-0.5.2.tgz} + qified@0.6.0: + resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} engines: {node: '>=20'} qrcode@1.5.4: @@ -5805,8 +5842,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==, tarball: https://registry.npmmirror.com/qs/-/qs-6.14.0.tgz} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} quansync@0.2.11: @@ -5827,7 +5864,7 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} rangy@1.3.2: - resolution: {integrity: sha512-fS1C4MOyk8T+ZJZdLcgrukPWxkyDXa+Hd2Kj+Zg4wIK71yrWgmjzHubzPMY1G+WD9EgGxMp3fIL0zQ1ickmSWA==, tarball: https://registry.npmmirror.com/rangy/-/rangy-1.3.2.tgz} + resolution: {integrity: sha512-fS1C4MOyk8T+ZJZdLcgrukPWxkyDXa+Hd2Kj+Zg4wIK71yrWgmjzHubzPMY1G+WD9EgGxMp3fIL0zQ1ickmSWA==} react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -5878,9 +5915,6 @@ packages: regenerator-runtime@0.11.1: resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-not@1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} engines: {node: '>=0.10.0'} @@ -5960,8 +5994,8 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -5998,7 +6032,7 @@ packages: engines: {node: '>= 12'} rollup-plugin-visualizer@5.14.0: - resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==, tarball: https://registry.npmmirror.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz} + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -6021,18 +6055,18 @@ packages: hasBin: true run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==, tarball: https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz} + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} run-async@3.0.0: - resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==, tarball: https://registry.npmmirror.com/run-async/-/run-async-3.0.0.tgz} + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, tarball: https://registry.npmmirror.com/rxjs/-/rxjs-7.8.2.tgz} + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} @@ -6058,8 +6092,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, tarball: https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz} + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} scroll-into-view-if-needed@2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} @@ -6075,7 +6110,7 @@ packages: hasBin: true semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, tarball: https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz} + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.6.0: @@ -6083,13 +6118,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==, tarball: https://registry.npmmirror.com/semver/-/semver-7.7.3.tgz} + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true @@ -6134,8 +6164,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} showdown@2.1.0: @@ -6177,15 +6207,15 @@ packages: engines: {node: '>=8'} slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, tarball: https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz} + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} smob@1.5.0: @@ -6210,7 +6240,7 @@ packages: resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==} source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz} + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} source-map-resolve@0.5.3: @@ -6228,16 +6258,16 @@ packages: deprecated: See https://github.com/lydell/source-map-url#deprecated source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz} + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz} - engines: {node: '>= 8'} + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} @@ -6257,8 +6287,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} split-string@3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} @@ -6290,6 +6320,10 @@ packages: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -6307,11 +6341,11 @@ packages: engines: {node: '>=8'} string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, tarball: https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz} + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, tarball: https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz} + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} string.prototype.matchall@4.0.12: @@ -6342,15 +6376,15 @@ packages: engines: {node: '>=4'} strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz} + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} engines: {node: '>=0.10.0'} strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -6382,7 +6416,7 @@ packages: engines: {node: '>=8'} stylelint-config-html@1.1.0: - resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==, tarball: https://registry.npmmirror.com/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz} + resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} engines: {node: ^12 || >=14} peerDependencies: postcss-html: ^1.0.0 @@ -6396,7 +6430,7 @@ packages: stylelint: '>= 11.x < 15' stylelint-config-recommended-vue@1.6.1: - resolution: {integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==, tarball: https://registry.npmmirror.com/stylelint-config-recommended-vue/-/stylelint-config-recommended-vue-1.6.1.tgz} + resolution: {integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==} engines: {node: ^12 || >=14} peerDependencies: postcss-html: ^1.0.0 @@ -6419,8 +6453,8 @@ packages: peerDependencies: stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 - stylelint@16.26.0: - resolution: {integrity: sha512-Y/3AVBefrkqqapVYH3LBF5TSDZ1kw+0XpdKN2KchfuhMK6lQ85S4XOG4lIZLcrcS4PWBmvcY6eS2kCQFz0jukQ==, tarball: https://registry.npmmirror.com/stylelint/-/stylelint-16.26.0.tgz} + stylelint@16.26.1: + resolution: {integrity: sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==} engines: {node: '>=18.12.0'} hasBin: true @@ -6428,7 +6462,7 @@ packages: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz} + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} supports-color@3.2.3: @@ -6444,11 +6478,11 @@ packages: engines: {node: '>=8'} supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz} + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} supports-hyperlinks@3.2.0: - resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==, tarball: https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz} + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} supports-preserve-symlinks-flag@1.0.0: @@ -6459,22 +6493,22 @@ packages: resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==} svg-tags@1.0.0: - resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==, tarball: https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz} + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} svgo@2.8.0: resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} engines: {node: '>=10.13.0'} hasBin: true - swagger-ui-dist@5.30.2: - resolution: {integrity: sha512-HWCg1DTNE/Nmapt+0m2EPXFwNKNeKK4PwMjkwveN/zn1cV2Kxi9SURd+m0SpdcSgWEK/O64sf8bzXdtUhigtHA==, tarball: https://registry.npmmirror.com/swagger-ui-dist/-/swagger-ui-dist-5.30.2.tgz} + swagger-ui-dist@5.31.0: + resolution: {integrity: sha512-zSUTIck02fSga6rc0RZP3b7J7wgHXwLea8ZjgLA3Vgnb8QeOl3Wou2/j5QkzSGeoz6HusP/coYuJl33aQxQZpg==} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==, tarball: https://registry.npmmirror.com/synckit/-/synckit-0.11.11.tgz} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} table@6.9.0: - resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==, tarball: https://registry.npmmirror.com/table/-/table-6.9.0.tgz} + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} temp-dir@2.0.0: @@ -6493,8 +6527,8 @@ packages: resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} engines: {node: '>=10'} - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true @@ -6526,14 +6560,14 @@ packages: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==, tarball: https://registry.npmmirror.com/tinyexec/-/tinyexec-0.3.2.tgz} + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, tarball: https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz} + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinymce@5.10.9: @@ -6589,8 +6623,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-jest@29.4.5: - resolution: {integrity: sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==, tarball: https://registry.npmmirror.com/ts-jest/-/ts-jest-29.4.5.tgz} + ts-jest@29.4.6: + resolution: {integrity: sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6631,13 +6665,13 @@ packages: optional: true tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, tarball: https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz} + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} tslib@2.3.0: resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz} + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -6645,8 +6679,8 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tsx@4.19.3: - resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} hasBin: true @@ -6671,7 +6705,7 @@ packages: engines: {node: '>=10'} type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, tarball: https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz} + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} type-fest@0.6.0: @@ -6686,12 +6720,8 @@ packages: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} - type-fest@4.38.0: - resolution: {integrity: sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==} - engines: {node: '>=16'} - type-fest@4.41.0: - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, tarball: https://registry.npmmirror.com/type-fest/-/type-fest-4.41.0.tgz} + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} typed-array-buffer@1.0.3: @@ -6715,15 +6745,15 @@ packages: engines: {node: '>= 0.4'} typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, tarball: https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz} + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} @@ -6738,11 +6768,11 @@ packages: resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, tarball: https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz} + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@6.21.2: - resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} - engines: {node: '>=18.17'} + undici@7.18.2: + resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} + engines: {node: '>=20.18.1'} unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} @@ -6773,7 +6803,7 @@ packages: engines: {node: '>=8'} universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, tarball: https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz} + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} unocss@0.58.9: @@ -6800,14 +6830,8 @@ packages: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==, tarball: https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -6834,7 +6858,7 @@ packages: engines: {node: '>= 0.4.0'} uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==, tarball: https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz} + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true v8-compile-cache-lib@3.0.1: @@ -6848,14 +6872,14 @@ packages: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} vanilla-picker@2.12.3: - resolution: {integrity: sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==, tarball: https://registry.npmmirror.com/vanilla-picker/-/vanilla-picker-2.12.3.tgz} + resolution: {integrity: sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==} vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} vditor@3.11.2: - resolution: {integrity: sha512-8QguQQUPWbBFocnfQmWjz4jiykQnvsmCuhOomGIVVK7vc+dQq2h8w9qQQuEjUTZpnZT5fEdYbj4aLr1NGdAZaA==, tarball: https://registry.npmmirror.com/vditor/-/vditor-3.11.2.tgz} + resolution: {integrity: sha512-8QguQQUPWbBFocnfQmWjz4jiykQnvsmCuhOomGIVVK7vc+dQq2h8w9qQQuEjUTZpnZT5fEdYbj4aLr1NGdAZaA==} vite-plugin-compression@0.5.1: resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} @@ -6868,7 +6892,7 @@ packages: vite: '>=2.0.0' vite-plugin-mkcert@1.17.9: - resolution: {integrity: sha512-SwI7yqp2Cq4r2XItarnHRCj2uzHPqevbxFNMLpyN+LDXd5w1vmZeM4l5X/wCZoP4mjPQYN+9+4kmE6e3nPO5fg==, tarball: https://registry.npmmirror.com/vite-plugin-mkcert/-/vite-plugin-mkcert-1.17.9.tgz} + resolution: {integrity: sha512-SwI7yqp2Cq4r2XItarnHRCj2uzHPqevbxFNMLpyN+LDXd5w1vmZeM4l5X/wCZoP4mjPQYN+9+4kmE6e3nPO5fg==} engines: {node: '>=v16.7.0'} peerDependencies: vite: '>=3' @@ -6897,14 +6921,14 @@ packages: peerDependencies: vite: '>=2' - vite-plugin-pwa@1.1.0: - resolution: {integrity: sha512-VsSpdubPzXhHWVINcSx6uHRMpOHVHQcHsef1QgkOlEoaIDAlssFEW88LBq1a59BuokAhsh2kUDJbaX1bZv4Bjw==, tarball: https://registry.npmmirror.com/vite-plugin-pwa/-/vite-plugin-pwa-1.1.0.tgz} + vite-plugin-pwa@1.2.0: + resolution: {integrity: sha512-a2xld+SJshT9Lgcv8Ji4+srFJL4k/1bVbd1x06JIkvecpQkwkvCncD1+gSzcdm3s+owWLpMJerG3aN5jupJEVw==} engines: {node: '>=16.0.0'} peerDependencies: '@vite-pwa/assets-generator': ^1.0.0 vite: ^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - workbox-build: ^7.3.0 - workbox-window: ^7.3.0 + workbox-build: ^7.4.0 + workbox-window: ^7.4.0 peerDependenciesMeta: '@vite-pwa/assets-generator': optional: true @@ -6924,7 +6948,7 @@ packages: resolution: {integrity: sha512-pa27KIsHIBvBMv4xz9uB3UCfAuP2tr7PLlFhCS9vw+aXd326LEHsvhqd3hCQDOR5MjlQVyQH6vwuGr3u+KRiiw==} vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==, tarball: https://registry.npmmirror.com/vite/-/vite-6.4.1.tgz} + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -6963,8 +6987,8 @@ packages: yaml: optional: true - vue-component-type-helpers@2.2.8: - resolution: {integrity: sha512-4bjIsC284coDO9om4HPA62M7wfsTvcmZyzdfR0aUlFXqq4tXxM1APyXpNVxPC8QazKw9OhmZNHBVDA6ODaZsrA==} + vue-component-type-helpers@2.2.12: + resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==} vue-cropper@0.6.5: resolution: {integrity: sha512-lSvY6IpeA/Tv/iPZ/FOkMHVRBPSlm7t57nuHEZFBMRNOH8ElvfqVlnHGDOAMlvPhh9gHiddiQoASS+fY0MFX0g==} @@ -6975,7 +6999,7 @@ packages: vue: '>=3.0.0' vue-demi@0.14.10: - resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==, tarball: https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz} + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} engines: {node: '>=12'} hasBin: true peerDependencies: @@ -6992,8 +7016,9 @@ packages: eslint: '>=6.0.0' vue-i18n@9.14.5: - resolution: {integrity: sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==, tarball: https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.14.5.tgz} + resolution: {integrity: sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==} engines: {node: '>= 16'} + deprecated: v9 and v10 no longer supported. please migrate to v11. about maintenance status, see https://vue-i18n.intlify.dev/guide/maintenance.html peerDependencies: vue: ^3.0.0 @@ -7001,10 +7026,10 @@ packages: resolution: {integrity: sha512-n+YghR059YmciANGJh9SsNWRi1YZEBVlODtmnb/12zI+4R72QZSWd+EuZ5mW6auEo/yaJXgxzwsuhvALVnm73A==} vue-print-nb-jeecg@1.0.12: - resolution: {integrity: sha512-zlvD2qFY9wrfH3M+YCP91fe1ihVjwNFgycXX6zfC7Q1x6IHAPKvZhke599x86O/Ta4edCx+HoYchm72sANuyRw==} + resolution: {integrity: sha512-jHyWm6/TxB1iU2nHL7upQdHVdxb1SJQ9n3XKeYTaruFdbSphLo1vDtTunS2qVCjupk8lui7FlF5rxxSNr0zjZg==} - vue-router@4.6.3: - resolution: {integrity: sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg==, tarball: https://registry.npmmirror.com/vue-router/-/vue-router-4.6.3.tgz} + vue-router@4.6.4: + resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} peerDependencies: vue: ^3.5.0 @@ -7032,8 +7057,8 @@ packages: vue: optional: true - vue@3.5.25: - resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==, tarball: https://registry.npmmirror.com/vue/-/vue-3.5.25.tgz} + vue@3.5.27: + resolution: {integrity: sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -7063,7 +7088,7 @@ packages: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, tarball: https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz} + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -7104,8 +7129,8 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} which@1.3.1: @@ -7138,7 +7163,7 @@ packages: resolution: {integrity: sha512-0Fb8795zg/x23ISFkAc7lbWes6vbw34DGFIMw31cwuHPgDEC/5EYm6m/ZkylLX0EnEbbOyOCLjKgFS/Z5g0HeQ==} workbox-core@7.4.0: - resolution: {integrity: sha512-6BMfd8tYEnN4baG4emG9U0hdXM4gGuDU3ectXuVHnj71vwxTFI7WOpQJC4siTOlVtGqCUtj0ZQNsrvi6kZZTAQ==, tarball: https://registry.npmmirror.com/workbox-core/-/workbox-core-7.4.0.tgz} + resolution: {integrity: sha512-6BMfd8tYEnN4baG4emG9U0hdXM4gGuDU3ectXuVHnj71vwxTFI7WOpQJC4siTOlVtGqCUtj0ZQNsrvi6kZZTAQ==} workbox-expiration@7.4.0: resolution: {integrity: sha512-V50p4BxYhtA80eOvulu8xVfPBgZbkxJ1Jr8UUn0rvqjGhLDqKNtfrDfjJKnLz2U8fO2xGQJTx/SKXNTzHOjnHw==} @@ -7171,10 +7196,10 @@ packages: resolution: {integrity: sha512-ltU+Kr3qWR6BtbdlMnCjobZKzeV1hN+S6UvDywBrwM19TTyqA03X66dzw1tEIdJvQ4lYKkBFox6IAEhoSEZ8Xw==} workbox-window@7.4.0: - resolution: {integrity: sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==, tarball: https://registry.npmmirror.com/workbox-window/-/workbox-window-7.4.0.tgz} + resolution: {integrity: sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==} wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz} + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} wrap-ansi@7.0.0: @@ -7182,32 +7207,32 @@ packages: engines: {node: '>=10'} wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz} + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, tarball: https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz} + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==, tarball: https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz} + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} xe-utils@3.5.26: resolution: {integrity: sha512-u9R7RqWDumamToEelrCv2nVA2PBJSPPUubvmiMcuHeFxwbYeBsouoi/opejmr7AdPlSj92FifF7IKFzFrczU7w==} - xe-utils@3.7.8: - resolution: {integrity: sha512-V/k6B/ASYir6yLYhp62DnM17po9u1N9mou/rn4if5WoFCsAO49JpCiVpkDpwCv4zxGfWmhWgzmz4FytWF+pDVw==} + xe-utils@3.8.4: + resolution: {integrity: sha512-1X5k3nUcMatNo+99fZsHFrZ/WW4k4E6tT1ODO6wRncXOdq10QfVaqc70mFwOrHE/P1W8hDhbrnWXxSHwWY3rFQ==} xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, tarball: https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz} + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} xss@1.0.15: @@ -7223,7 +7248,7 @@ packages: engines: {node: '>=10'} yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, tarball: https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz} + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -7260,12 +7285,12 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} - yoctocolors-cjs@2.1.2: - resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==, tarball: https://registry.npmmirror.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} zrender@5.6.1: @@ -7275,8 +7300,8 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@ant-design/colors@6.0.0': dependencies: @@ -7288,19 +7313,19 @@ snapshots: '@ant-design/fast-color@2.0.6': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.28.6 '@ant-design/icons-svg@4.4.2': {} - '@ant-design/icons-vue@7.0.1(vue@3.5.25(typescript@5.9.3))': + '@ant-design/icons-vue@7.0.1(vue@3.5.27(typescript@5.9.3))': dependencies: '@ant-design/colors': 6.0.0 '@ant-design/icons-svg': 4.4.2 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) '@antfu/install-pkg@1.1.0': dependencies: - package-manager-detector: 1.5.0 + package-manager-detector: 1.6.0 tinyexec: 1.0.2 '@antfu/utils@0.7.10': {} @@ -7316,928 +7341,781 @@ snapshots: jsonpointer: 5.0.1 leven: 3.1.0 - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.28.6': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.8': {} + '@babel/compat-data@7.28.6': {} - '@babel/compat-data@7.28.5': {} - - '@babel/core@7.26.10': + '@babel/core@7.28.6': dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@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 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.27.0': + '@babel/generator@7.28.6': dependencies: - '@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/generator@7.28.5': - dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.25.9': - dependencies: - '@babel/types': 7.27.0 - '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/helper-compilation-targets@7.27.0': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@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-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.28.6 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.0 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@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.26.10) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.27.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.10) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.26.10)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.26.10)': + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3 lodash.debounce: 4.0.8 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.25.9': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.25.9': - dependencies: - '@babel/types': 7.27.0 - '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/helper-plugin-utils@7.26.5': {} + '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-plugin-utils@7.27.1': {} - - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.26.10)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.5 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@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-replace-supers@7.27.1(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-identifier@7.28.5': {} - '@babel/helper-validator-option@7.25.9': {} - '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.28.3': + '@babel/helper-wrap-function@7.28.6': dependencies: - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helpers@7.27.0': + '@babel/helpers@7.28.6': dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 - '@babel/parser@7.27.0': + '@babel/parser@7.28.6': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.6 - '@babel/parser@7.28.5': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/types': 7.28.5 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.26.10)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-async-generator-functions@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.26.10) - '@babel/traverse': 7.28.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.6) + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@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.26.10) + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.26.10)': + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.26.10)': + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.4(@babel/core@7.26.10)': + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.10) - '@babel/traverse': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.26.10)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.26.10)': + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.26.10) + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.28.5(@babel/core@7.26.10)': + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/core': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.26.10)': + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.26.10)': + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.26.10) - '@babel/traverse': 7.28.5 + '@babel/core': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.6) + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.26.10)': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.26.10)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.26.10)': + '@babel/plugin-transform-regenerator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.26.10)': + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@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.26.10) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.28.5(@babel/core@7.26.10)': + '@babel/preset-env@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/compat-data': 7.28.5 - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/compat-data': 7.28.6 + '@babel/core': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.26.10) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.26.10) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.26.10) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.26.10) - '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.26.10) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.26.10) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.26.10) - '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.26.10) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.26.10) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.26.10) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.26.10) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.26.10) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.26.10) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.26.10) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.26.10) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.26.10) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.6) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.6) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.6) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-async-generator-functions': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.6) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.6) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-regenerator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.28.6) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.6) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.6) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.6) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.6) core-js-compat: 3.47.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.5 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/types': 7.28.6 esutils: 2.0.3 - '@babel/preset-typescript@7.28.5(@babel/core@7.26.10)': + '@babel/preset-typescript@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.26.10) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/runtime@7.27.0': - dependencies: - regenerator-runtime: 0.14.1 + '@babel/runtime@7.28.6': {} - '@babel/template@7.27.0': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - '@babel/template@7.27.2': + '@babel/traverse@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - - '@babel/traverse@7.27.0': - dependencies: - '@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.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.27.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@babel/types@7.28.5': + '@babel/types@7.28.6': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 '@bcoe/v8-coverage@0.2.3': {} - '@cacheable/memory@2.0.5': + '@cacheable/memory@2.0.7': dependencies: - '@cacheable/utils': 2.3.1 - '@keyv/bigmap': 1.3.0(keyv@5.5.4) - hookified: 1.13.0 - keyv: 5.5.4 + '@cacheable/utils': 2.3.3 + '@keyv/bigmap': 1.3.0(keyv@5.5.5) + hookified: 1.15.0 + keyv: 5.5.5 - '@cacheable/utils@2.3.1': + '@cacheable/utils@2.3.3': dependencies: - hashery: 1.2.0 - keyv: 5.5.4 + hashery: 1.4.0 + keyv: 5.5.5 - '@commitlint/cli@18.6.1(@types/node@20.19.25)(typescript@5.9.3)': + '@commitlint/cli@18.6.1(@types/node@20.19.30)(typescript@5.9.3)': dependencies: '@commitlint/format': 18.6.1 '@commitlint/lint': 18.6.1 - '@commitlint/load': 18.6.1(@types/node@20.19.25)(typescript@5.9.3) + '@commitlint/load': 18.6.1(@types/node@20.19.30)(typescript@5.9.3) '@commitlint/read': 18.6.1 '@commitlint/types': 18.6.1 execa: 5.1.1 @@ -8259,9 +8137,9 @@ snapshots: '@commitlint/types': 18.6.1 ajv: 8.17.1 - '@commitlint/config-validator@19.8.0': + '@commitlint/config-validator@20.3.1': dependencies: - '@commitlint/types': 19.8.0 + '@commitlint/types': 20.3.1 ajv: 8.17.1 optional: true @@ -8276,7 +8154,7 @@ snapshots: '@commitlint/execute-rule@18.6.1': {} - '@commitlint/execute-rule@19.8.0': + '@commitlint/execute-rule@20.0.0': optional: true '@commitlint/format@18.6.1': @@ -8296,7 +8174,7 @@ snapshots: '@commitlint/rules': 18.6.1 '@commitlint/types': 18.6.1 - '@commitlint/load@18.6.1(@types/node@20.19.25)(typescript@5.9.3)': + '@commitlint/load@18.6.1(@types/node@20.19.30)(typescript@5.9.3)': dependencies: '@commitlint/config-validator': 18.6.1 '@commitlint/execute-rule': 18.6.1 @@ -8304,7 +8182,7 @@ snapshots: '@commitlint/types': 18.6.1 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.9.3) - cosmiconfig-typescript-loader: 5.1.0(@types/node@20.19.25)(cosmiconfig@8.3.6(typescript@5.9.3))(typescript@5.9.3) + cosmiconfig-typescript-loader: 5.1.0(@types/node@20.19.30)(cosmiconfig@8.3.6(typescript@5.9.3))(typescript@5.9.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -8313,15 +8191,15 @@ snapshots: - '@types/node' - typescript - '@commitlint/load@19.8.0(@types/node@20.19.25)(typescript@5.9.3)': + '@commitlint/load@20.3.1(@types/node@20.19.30)(typescript@5.9.3)': dependencies: - '@commitlint/config-validator': 19.8.0 - '@commitlint/execute-rule': 19.8.0 - '@commitlint/resolve-extends': 19.8.0 - '@commitlint/types': 19.8.0 - chalk: 5.4.1 + '@commitlint/config-validator': 20.3.1 + '@commitlint/execute-rule': 20.0.0 + '@commitlint/resolve-extends': 20.3.1 + '@commitlint/types': 20.3.1 + chalk: 5.6.2 cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@20.19.25)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.2.0(@types/node@20.19.30)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -8354,12 +8232,12 @@ snapshots: resolve-from: 5.0.0 resolve-global: 1.0.0 - '@commitlint/resolve-extends@19.8.0': + '@commitlint/resolve-extends@20.3.1': dependencies: - '@commitlint/config-validator': 19.8.0 - '@commitlint/types': 19.8.0 + '@commitlint/config-validator': 20.3.1 + '@commitlint/types': 20.3.1 global-directory: 4.0.1 - import-meta-resolve: 4.1.0 + import-meta-resolve: 4.2.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 optional: true @@ -8382,10 +8260,10 @@ snapshots: dependencies: chalk: 4.1.2 - '@commitlint/types@19.8.0': + '@commitlint/types@20.3.1': dependencies: - '@types/conventional-commits-parser': 5.0.1 - chalk: 5.4.1 + '@types/conventional-commits-parser': 5.0.2 + chalk: 5.6.2 optional: true '@cspotcode/source-map-support@0.8.1': @@ -8396,6 +8274,8 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-syntax-patches-for-csstree@1.0.25': {} + '@csstools/css-tokenizer@3.0.4': {} '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -8403,9 +8283,9 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.1)': dependencies: - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 '@ctrl/tinycolor@3.6.1': {} @@ -8415,100 +8295,181 @@ snapshots: '@emotion/unitless@0.8.1': {} - '@esbuild/aix-ppc64@0.25.1': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.1': + '@esbuild/aix-ppc64@0.27.2': optional: true - '@esbuild/android-arm@0.25.1': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-x64@0.25.1': + '@esbuild/android-arm64@0.27.2': optional: true - '@esbuild/darwin-arm64@0.25.1': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.1': + '@esbuild/android-arm@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.25.1': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.1': + '@esbuild/android-x64@0.27.2': optional: true - '@esbuild/linux-arm64@0.25.1': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.1': + '@esbuild/darwin-arm64@0.27.2': optional: true - '@esbuild/linux-ia32@0.25.1': + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.2': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.2': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.2': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.2': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.2': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.2': optional: true '@esbuild/linux-loong64@0.14.54': optional: true - '@esbuild/linux-loong64@0.25.1': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.1': + '@esbuild/linux-loong64@0.27.2': optional: true - '@esbuild/linux-ppc64@0.25.1': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.1': + '@esbuild/linux-mips64el@0.27.2': optional: true - '@esbuild/linux-s390x@0.25.1': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-x64@0.25.1': + '@esbuild/linux-ppc64@0.27.2': optional: true - '@esbuild/netbsd-arm64@0.25.1': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.1': + '@esbuild/linux-riscv64@0.27.2': optional: true - '@esbuild/openbsd-arm64@0.25.1': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.1': + '@esbuild/linux-s390x@0.27.2': optional: true - '@esbuild/sunos-x64@0.25.1': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.1': + '@esbuild/linux-x64@0.27.2': optional: true - '@esbuild/win32-ia32@0.25.1': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/win32-x64@0.25.1': + '@esbuild/netbsd-arm64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.5.1(eslint@8.57.1)': + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.2': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.2': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.2': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.2': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.2': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.2': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.2': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.2': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.4.0 + debug: 4.4.3 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -8519,7 +8480,7 @@ snapshots: '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.0 + debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -8540,7 +8501,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify/json@2.2.410': + '@iconify/json@2.2.430': dependencies: '@iconify/types': 2.0.0 pathe: 2.0.3 @@ -8555,19 +8516,19 @@ snapshots: debug: 4.4.3 globals: 15.15.0 kolorist: 1.8.0 - local-pkg: 1.1.1 - mlly: 1.7.4 + local-pkg: 1.1.2 + mlly: 1.8.0 transitivePeerDependencies: - supports-color - '@inquirer/external-editor@1.0.3(@types/node@20.19.25)': + '@inquirer/external-editor@1.0.3(@types/node@20.19.30)': dependencies: chardet: 2.1.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 - '@inquirer/figures@1.0.11': {} + '@inquirer/figures@1.0.15': {} '@intlify/core-base@9.14.5': dependencies: @@ -8591,7 +8552,7 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -8601,7 +8562,7 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} @@ -8613,27 +8574,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8658,7 +8619,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -8676,7 +8637,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.19.25 + '@types/node': 20.19.30 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -8697,10 +8658,10 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.19.25 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 20.19.30 chalk: 4.1.2 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -8708,7 +8669,7 @@ snapshots: istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 jest-message-util: 29.7.0 jest-util: 29.7.0 jest-worker: 29.7.0 @@ -8725,7 +8686,7 @@ snapshots: '@jest/source-map@29.6.3': dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -8734,7 +8695,7 @@ snapshots: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 '@jest/test-sequencer@29.7.0': dependencies: @@ -8745,9 +8706,9 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -8768,8 +8729,8 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.19.25 - '@types/yargs': 17.0.33 + '@types/node': 20.19.30 + '@types/yargs': 17.0.35 chalk: 4.1.2 '@jridgewell/gen-mapping@0.3.13': @@ -8777,30 +8738,20 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/gen-mapping@0.3.8': + '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -8809,46 +8760,46 @@ snapshots: '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 - '@keyv/bigmap@1.3.0(keyv@5.5.4)': + '@keyv/bigmap@1.3.0(keyv@5.5.5)': dependencies: - hashery: 1.2.0 - hookified: 1.13.0 - keyv: 5.5.4 + hashery: 1.4.0 + hookified: 1.15.0 + keyv: 5.5.5 '@keyv/serialize@1.1.1': {} - '@logicflow/core@2.1.4': + '@logicflow/core@2.1.9': dependencies: classnames: 2.5.1 - lodash-es: 4.17.21 + lodash-es: 4.17.22 mobx: 5.15.7 - mobx-preact: 3.0.0(mobx@5.15.7)(preact@10.27.2) + mobx-preact: 3.0.0(mobx@5.15.7)(preact@10.28.2) mobx-utils: 5.6.2(mobx@5.15.7) mousetrap: 1.6.5 - preact: 10.27.2 + preact: 10.28.2 uuid: 9.0.1 - '@logicflow/extension@2.1.6(@logicflow/core@2.1.4)(@logicflow/vue-node-registry@1.1.5(@logicflow/core@2.1.4)(vue@3.5.25(typescript@5.9.3)))': + '@logicflow/extension@2.1.11(@logicflow/core@2.1.9)(@logicflow/vue-node-registry@1.1.10(@logicflow/core@2.1.9)(vue@3.5.27(typescript@5.9.3)))': dependencies: '@antv/hierarchy': 0.6.14 - '@logicflow/core': 2.1.4 - '@logicflow/vue-node-registry': 1.1.5(@logicflow/core@2.1.4)(vue@3.5.25(typescript@5.9.3)) + '@logicflow/core': 2.1.9 + '@logicflow/vue-node-registry': 1.1.10(@logicflow/core@2.1.9)(vue@3.5.27(typescript@5.9.3)) classnames: 2.5.1 - lodash-es: 4.17.21 + lodash-es: 4.17.22 medium-editor: 5.23.3 mobx: 5.15.7 - preact: 10.27.2 + preact: 10.28.2 rangy: 1.3.2 vanilla-picker: 2.12.3 - '@logicflow/vue-node-registry@1.1.5(@logicflow/core@2.1.4)(vue@3.5.25(typescript@5.9.3))': + '@logicflow/vue-node-registry@1.1.10(@logicflow/core@2.1.9)(vue@3.5.27(typescript@5.9.3))': dependencies: - '@logicflow/core': 2.1.4 - lodash-es: 4.17.21 - vue: 3.5.25(typescript@5.9.3) - vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3)) + '@logicflow/core': 2.1.9 + lodash-es: 4.17.22 + vue: 3.5.27(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.27(typescript@5.9.3)) '@nodelib/fs.scandir@2.1.5': dependencies: @@ -8860,7 +8811,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@one-ini/wasm@0.1.1': {} @@ -8869,13 +8820,13 @@ snapshots: '@pkgr/core@0.2.9': {} - '@polka/url@1.0.0-next.28': {} + '@polka/url@1.0.0-next.29': {} '@purge-icons/core@0.10.0': dependencies: '@iconify/iconify': 2.1.2 - axios: 0.26.1(debug@4.4.0) - debug: 4.4.0 + axios: 0.26.1(debug@4.4.3) + debug: 4.4.3 fast-glob: 3.3.3 fs-extra: 10.1.0 transitivePeerDependencies: @@ -8886,10 +8837,10 @@ snapshots: dependencies: '@iconify/iconify': 3.1.1 - '@rollup/plugin-babel@5.3.1(@babel/core@7.26.10)(@types/babel__core@7.20.5)(rollup@2.79.2)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.28.6)(@types/babel__core@7.20.5)(rollup@2.79.2)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 '@rollup/pluginutils': 3.1.0(rollup@2.79.2) rollup: 2.79.2 optionalDependencies: @@ -8899,11 +8850,11 @@ snapshots: '@rollup/plugin-node-resolve@15.3.1(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) + '@rollup/pluginutils': 5.3.0(rollup@2.79.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 optionalDependencies: rollup: 2.79.2 @@ -8917,7 +8868,7 @@ snapshots: dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 - terser: 5.39.0 + terser: 5.46.0 optionalDependencies: rollup: 2.79.2 @@ -8933,7 +8884,7 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.4(rollup@2.79.2)': + '@rollup/pluginutils@5.3.0(rollup@2.79.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 @@ -8941,7 +8892,7 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/pluginutils@5.1.4(rollup@4.52.5)': + '@rollup/pluginutils@5.3.0(rollup@4.52.5)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 @@ -9015,17 +8966,17 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true - '@rys-fe/vite-plugin-theme@0.8.6(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))': + '@rys-fe/vite-plugin-theme@0.8.6(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))': dependencies: '@types/node': 14.18.63 '@types/tinycolor2': 1.4.6 chalk: 4.1.2 clean-css: 5.3.3 - debug: 4.4.0 + debug: 4.4.3 esbuild: 0.11.23 esbuild-plugin-alias: 0.1.2 tinycolor2: 1.6.0 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - supports-color @@ -9033,7 +8984,7 @@ snapshots: '@simonwep/pickr@1.8.2': dependencies: - core-js: 3.41.0 + core-js: 3.47.0 nanopop: 2.4.2 '@sinclair/typebox@0.27.8': {} @@ -9055,18 +9006,18 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.12 - '@tinymce/tinymce-vue@4.0.7(vue@3.5.25(typescript@5.9.3))': + '@tinymce/tinymce-vue@4.0.7(vue@3.5.27(typescript@5.9.3))': dependencies: tinymce: 5.10.9 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) '@traptitech/markdown-it-katex@3.6.0': dependencies: - katex: 0.16.21 + katex: 0.16.27 '@trysound/sax@0.2.0': {} - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -9076,50 +9027,48 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@types/babel__generator': 7.6.8 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 + '@types/babel__traverse': 7.28.0 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.6 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - '@types/babel__traverse@7.20.7': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.6 '@types/codemirror@5.60.17': dependencies: '@types/tern': 0.23.9 - '@types/conventional-commits-parser@5.0.1': + '@types/conventional-commits-parser@5.0.2': dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 optional: true '@types/crypto-js@4.2.2': {} '@types/estree@0.0.39': {} - '@types/estree@1.0.7': {} - '@types/estree@1.0.8': {} '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.19.25 + '@types/node': 20.19.30 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 '@types/inquirer@9.0.9': dependencies: @@ -9147,13 +9096,13 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 '@types/lodash-es@4.17.12': dependencies: - '@types/lodash': 4.17.16 + '@types/lodash': 4.17.23 - '@types/lodash@4.17.16': {} + '@types/lodash@4.17.23': {} '@types/minimist@1.2.5': {} @@ -9161,7 +9110,7 @@ snapshots: '@types/node@14.18.63': {} - '@types/node@20.19.25': + '@types/node@20.19.30': dependencies: undici-types: 6.21.0 @@ -9169,33 +9118,35 @@ snapshots: '@types/nprogress@0.2.3': {} - '@types/qrcode@1.5.5': + '@types/pinyin@2.10.2': {} + + '@types/qrcode@1.5.6': dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 '@types/qs@6.14.0': {} '@types/resolve@1.20.2': {} - '@types/semver@7.7.0': {} + '@types/semver@7.7.1': {} '@types/showdown@2.0.6': {} - '@types/sortablejs@1.15.8': {} + '@types/sortablejs@1.15.9': {} '@types/stack-utils@2.0.3': {} '@types/svgo@2.6.4': dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 '@types/tern@0.23.9': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/through@0.0.33': dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 '@types/tinycolor2@1.4.6': {} @@ -9205,24 +9156,24 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.33': + '@types/yargs@17.0.35': dependencies: '@types/yargs-parser': 21.0.3 '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0 + debug: 4.4.3 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - semver: 7.7.1 + semver: 7.7.3 ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -9235,7 +9186,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0 + debug: 4.4.3 eslint: 8.57.1 optionalDependencies: typescript: 5.9.3 @@ -9256,7 +9207,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - debug: 4.4.0 + debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: @@ -9272,10 +9223,10 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.4.0 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.7.1 + semver: 7.7.3 tsutils: 3.21.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -9286,11 +9237,11 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.0 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.7.1 + semver: 7.7.3 ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -9299,29 +9250,29 @@ snapshots: '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3) eslint: 8.57.1 eslint-scope: 5.1.1 - semver: 7.7.1 + semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) eslint: 8.57.1 - semver: 7.7.1 + semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript @@ -9338,20 +9289,20 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@unocss/astro@0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))': + '@unocss/astro@0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))': dependencies: '@unocss/core': 0.58.9 '@unocss/reset': 0.58.9 - '@unocss/vite': 0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + '@unocss/vite': 0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) optionalDependencies: - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - rollup '@unocss/cli@0.58.9(rollup@4.52.5)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) '@unocss/config': 0.58.9 '@unocss/core': 0.58.9 '@unocss/preset-uno': 0.58.9 @@ -9450,9 +9401,9 @@ snapshots: '@unocss/transformer-attributify-jsx-babel@0.58.9': dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/preset-typescript': 7.28.5(@babel/core@7.26.10) + '@babel/core': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.6) '@unocss/core': 0.58.9 transitivePeerDependencies: - supports-color @@ -9475,10 +9426,10 @@ snapshots: dependencies: '@unocss/core': 0.58.9 - '@unocss/vite@0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))': + '@unocss/vite@0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) '@unocss/config': 0.58.9 '@unocss/core': 0.58.9 '@unocss/inspector': 0.58.9 @@ -9487,26 +9438,26 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.3 magic-string: 0.30.21 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - rollup '@vant/area-data@1.5.2': {} - '@vitejs/plugin-vue-jsx@4.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.25(typescript@5.9.3))': + '@vitejs/plugin-vue-jsx@4.1.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))(vue@3.5.27(typescript@5.9.3))': dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) - '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.26.10) - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) - vue: 3.5.25(typescript@5.9.3) + '@babel/core': 7.28.6 + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.6) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) + vue: 3.5.27(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.25(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))(vue@3.5.27(typescript@5.9.3))': dependencies: - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) - vue: 3.5.25(typescript@5.9.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) + vue: 3.5.27(typescript@5.9.3) '@volar/language-core@1.11.1': dependencies: @@ -9521,77 +9472,64 @@ snapshots: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 - '@vue/babel-helper-vue-transform-on@1.4.0': {} + '@vue/babel-helper-vue-transform-on@1.5.0': {} - '@vue/babel-plugin-jsx@1.4.0(@babel/core@7.26.10)': + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.6)': dependencies: - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - '@vue/babel-helper-vue-transform-on': 1.4.0 - '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.26.10) - '@vue/shared': 3.5.25 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.6) + '@vue/shared': 3.5.27 optionalDependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@1.4.0(@babel/core@7.26.10)': + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.6)': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/parser': 7.27.0 - '@vue/compiler-sfc': 3.5.25 + '@babel/code-frame': 7.28.6 + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/parser': 7.28.6 + '@vue/compiler-sfc': 3.5.27 transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.5.13': + '@vue/compiler-core@3.5.27': dependencies: - '@babel/parser': 7.27.0 - '@vue/shared': 3.5.13 - entities: 4.5.0 + '@babel/parser': 7.28.6 + '@vue/shared': 3.5.27 + entities: 7.0.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-core@3.5.25': + '@vue/compiler-dom@3.5.27': dependencies: - '@babel/parser': 7.28.5 - '@vue/shared': 3.5.25 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 + '@vue/compiler-core': 3.5.27 + '@vue/shared': 3.5.27 - '@vue/compiler-dom@3.5.13': + '@vue/compiler-sfc@3.5.27': dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/compiler-dom@3.5.25': - dependencies: - '@vue/compiler-core': 3.5.25 - '@vue/shared': 3.5.25 - - '@vue/compiler-sfc@3.5.25': - dependencies: - '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.25 - '@vue/compiler-dom': 3.5.25 - '@vue/compiler-ssr': 3.5.25 - '@vue/shared': 3.5.25 + '@babel/parser': 7.28.6 + '@vue/compiler-core': 3.5.27 + '@vue/compiler-dom': 3.5.27 + '@vue/compiler-ssr': 3.5.27 + '@vue/shared': 3.5.27 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.25': + '@vue/compiler-ssr@3.5.27': dependencies: - '@vue/compiler-dom': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/compiler-dom': 3.5.27 + '@vue/shared': 3.5.27 '@vue/devtools-api@6.6.4': {} @@ -9599,8 +9537,8 @@ snapshots: dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.25 + '@vue/compiler-dom': 3.5.27 + '@vue/shared': 3.5.27 computeds: 0.0.1 minimatch: 9.0.5 muggle-string: 0.3.1 @@ -9609,61 +9547,59 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@vue/reactivity@3.5.25': + '@vue/reactivity@3.5.27': dependencies: - '@vue/shared': 3.5.25 + '@vue/shared': 3.5.27 - '@vue/runtime-core@3.5.25': + '@vue/runtime-core@3.5.27': dependencies: - '@vue/reactivity': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/reactivity': 3.5.27 + '@vue/shared': 3.5.27 - '@vue/runtime-dom@3.5.25': + '@vue/runtime-dom@3.5.27': dependencies: - '@vue/reactivity': 3.5.25 - '@vue/runtime-core': 3.5.25 - '@vue/shared': 3.5.25 - csstype: 3.1.3 + '@vue/reactivity': 3.5.27 + '@vue/runtime-core': 3.5.27 + '@vue/shared': 3.5.27 + csstype: 3.2.3 - '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@5.9.3))': + '@vue/server-renderer@3.5.27(vue@3.5.27(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.25 - '@vue/shared': 3.5.25 - vue: 3.5.25(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.27 + '@vue/shared': 3.5.27 + vue: 3.5.27(typescript@5.9.3) - '@vue/shared@3.5.13': {} - - '@vue/shared@3.5.25': {} + '@vue/shared@3.5.27': {} '@vue/test-utils@2.4.6': dependencies: js-beautify: 1.15.4 - vue-component-type-helpers: 2.2.8 + vue-component-type-helpers: 2.2.12 - '@vueuse/core@10.11.1(vue@3.5.25(typescript@5.9.3))': + '@vueuse/core@10.11.1(vue@3.5.27(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.25(typescript@5.9.3)) - vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3)) + '@vueuse/shared': 10.11.1(vue@3.5.27(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.27(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/metadata@10.11.1': {} - '@vueuse/shared@10.11.1(vue@3.5.25(typescript@5.9.3))': + '@vueuse/shared@10.11.1(vue@3.5.27(typescript@5.9.3))': dependencies: - vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.27(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vxe-ui/core@4.2.8(vue@3.5.25(typescript@5.9.3))': + '@vxe-ui/core@4.2.21(vue@3.5.27(typescript@5.9.3))': dependencies: dom-zindex: 1.0.6 - vue: 3.5.25(typescript@5.9.3) - xe-utils: 3.7.8 + vue: 3.5.27(typescript@5.9.3) + xe-utils: 3.8.4 '@zxcvbn-ts/core@3.0.4': dependencies: @@ -9676,15 +9612,15 @@ snapshots: abbrev@2.0.0: {} - acorn-jsx@5.3.2(acorn@8.14.1): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn-walk@8.3.4: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 - acorn@8.14.1: {} + acorn@8.15.0: {} add-stream@1.0.0: {} @@ -9698,7 +9634,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -9706,7 +9642,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.0.0: + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -9714,7 +9650,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} ansi-styles@2.2.1: {} @@ -9728,32 +9664,32 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} - ant-design-vue@4.2.6(vue@3.5.25(typescript@5.9.3)): + ant-design-vue@4.2.6(vue@3.5.27(typescript@5.9.3)): dependencies: '@ant-design/colors': 6.0.0 - '@ant-design/icons-vue': 7.0.1(vue@3.5.25(typescript@5.9.3)) - '@babel/runtime': 7.27.0 + '@ant-design/icons-vue': 7.0.1(vue@3.5.27(typescript@5.9.3)) + '@babel/runtime': 7.28.6 '@ctrl/tinycolor': 3.6.1 '@emotion/hash': 0.9.2 '@emotion/unitless': 0.8.1 '@simonwep/pickr': 1.8.2 array-tree-filter: 2.1.0 async-validator: 4.2.5 - csstype: 3.1.3 + csstype: 3.2.3 dayjs: 1.11.19 dom-align: 1.12.4 dom-scroll-into-view: 2.0.1 lodash: 4.17.21 - lodash-es: 4.17.21 + lodash-es: 4.17.22 resize-observer-polyfill: 1.5.1 scroll-into-view-if-needed: 2.2.31 shallow-equal: 1.2.1 stylis: 4.3.6 throttle-debounce: 5.0.2 - vue: 3.5.25(typescript@5.9.3) - vue-types: 3.0.2(vue@3.5.25(typescript@5.9.3)) + vue: 3.5.27(typescript@5.9.3) + vue-types: 3.0.2(vue@3.5.27(typescript@5.9.3)) warning: 4.0.3 anymatch@3.1.3: @@ -9793,7 +9729,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -9816,12 +9752,11 @@ snapshots: atob@2.1.2: {} - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.23(postcss@8.5.6): dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 - fraction.js: 4.3.7 - normalize-range: 0.1.2 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001765 + fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -9830,35 +9765,27 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@0.26.1(debug@4.4.0): + axios@0.26.1(debug@4.4.3): dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - transitivePeerDependencies: - - debug - - axios@1.13.2: - dependencies: - follow-redirects: 1.15.9(debug@4.4.0) - form-data: 4.0.5 - proxy-from-env: 1.1.0 + follow-redirects: 1.15.11(debug@4.4.3) transitivePeerDependencies: - debug axios@1.13.2(debug@4.4.3): dependencies: - follow-redirects: 1.15.9(debug@4.4.3) + follow-redirects: 1.15.11(debug@4.4.3) form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - babel-jest@29.7.0(@babel/core@7.26.10): + babel-jest@29.7.0(@babel/core@7.28.6): dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.26.10) + babel-preset-jest: 29.6.3(@babel/core@7.28.6) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -9867,7 +9794,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -9877,32 +9804,32 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.7 + '@types/babel__traverse': 7.28.0 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.26.10): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.6): dependencies: - '@babel/compat-data': 7.28.5 - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.26.10) + '@babel/compat-data': 7.28.6 + '@babel/core': 7.28.6 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.26.10): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.6): dependencies: - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.26.10) + '@babel/core': 7.28.6 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.26.10): + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.6): dependencies: - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.26.10) + '@babel/core': 7.28.6 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) transitivePeerDependencies: - supports-color @@ -9910,30 +9837,30 @@ snapshots: dependencies: babel-runtime: 6.26.0 - babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.10): + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.6): dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.10) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) + '@babel/core': 7.28.6 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.6) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.6) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.6) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.6) - babel-preset-jest@29.6.3(@babel/core@7.26.10): + babel-preset-jest@29.6.3(@babel/core@7.28.6): dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.6) babel-runtime@6.26.0: dependencies: @@ -9956,7 +9883,7 @@ snapshots: mixin-deep: 1.3.2 pascalcase: 0.1.1 - baseline-browser-mapping@2.8.31: {} + baseline-browser-mapping@2.9.15: {} basic-auth@2.0.1: dependencies: @@ -9978,12 +9905,12 @@ snapshots: boolbase@1.0.0: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -10006,20 +9933,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.4: + browserslist@4.28.1: dependencies: - caniuse-lite: 1.0.30001707 - electron-to-chromium: 1.5.128 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) - - browserslist@4.28.0: - dependencies: - baseline-browser-mapping: 2.8.31 - caniuse-lite: 1.0.30001757 - electron-to-chromium: 1.5.260 + baseline-browser-mapping: 2.9.15 + caniuse-lite: 1.0.30001765 + electron-to-chromium: 1.5.267 node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) + update-browserslist-db: 1.2.3(browserslist@4.28.1) bs-logger@0.2.6: dependencies: @@ -10050,13 +9970,13 @@ snapshots: union-value: 1.0.1 unset-value: 1.0.0 - cacheable@2.2.0: + cacheable@2.3.2: dependencies: - '@cacheable/memory': 2.0.5 - '@cacheable/utils': 2.3.1 - hookified: 1.13.0 - keyv: 5.5.4 - qified: 0.5.2 + '@cacheable/memory': 2.0.7 + '@cacheable/utils': 2.3.3 + hookified: 1.15.0 + keyv: 5.5.5 + qified: 0.6.0 cachedir@2.3.0: {} @@ -10094,9 +10014,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001707: {} - - caniuse-lite@1.0.30001757: {} + caniuse-lite@1.0.30001765: {} chalk@1.1.3: dependencies: @@ -10119,7 +10037,7 @@ snapshots: chalk@5.3.0: {} - chalk@5.4.1: + chalk@5.6.2: optional: true char-regex@1.0.2: {} @@ -10133,24 +10051,24 @@ snapshots: cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 + css-select: 5.2.2 + css-what: 6.2.2 domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - cheerio@1.0.0: + cheerio@1.1.2: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.2.2 - encoding-sniffer: 0.2.0 - htmlparser2: 9.1.0 - parse5: 7.2.1 + encoding-sniffer: 0.2.1 + htmlparser2: 10.0.0 + parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 6.21.2 + undici: 7.18.2 whatwg-mimetype: 4.0.0 china-area-data@5.0.1: {} @@ -10229,7 +10147,7 @@ snapshots: codemirror@5.65.20: {} - collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.3: {} collection-visit@1.0.0: dependencies: @@ -10260,7 +10178,7 @@ snapshots: commander@11.1.0: {} - commander@13.1.0: {} + commander@14.0.2: {} commander@2.20.3: {} @@ -10270,10 +10188,10 @@ snapshots: commander@9.5.0: {} - commitizen@4.3.1(@types/node@20.19.25)(typescript@5.9.3): + commitizen@4.3.1(@types/node@20.19.30)(typescript@5.9.3): dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@20.19.25)(typescript@5.9.3) + cz-conventional-changelog: 3.3.0(@types/node@20.19.30)(typescript@5.9.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -10307,7 +10225,7 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.1: {} + confbox@0.2.2: {} config-chain@1.1.13: dependencies: @@ -10381,7 +10299,7 @@ snapshots: handlebars: 4.7.8 json-stringify-safe: 5.0.1 meow: 12.1.1 - semver: 7.7.1 + semver: 7.7.3 split2: 4.2.0 conventional-changelog@5.1.0: @@ -10419,11 +10337,11 @@ snapshots: core-js-compat@3.47.0: dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 core-js@2.6.12: {} - core-js@3.41.0: {} + core-js@3.47.0: {} cors@2.8.5: dependencies: @@ -10432,25 +10350,25 @@ snapshots: corser@2.0.1: {} - cosmiconfig-typescript-loader@5.1.0(@types/node@20.19.25)(cosmiconfig@8.3.6(typescript@5.9.3))(typescript@5.9.3): + cosmiconfig-typescript-loader@5.1.0(@types/node@20.19.30)(cosmiconfig@8.3.6(typescript@5.9.3))(typescript@5.9.3): dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 cosmiconfig: 8.3.6(typescript@5.9.3) jiti: 1.21.7 typescript: 5.9.3 - cosmiconfig-typescript-loader@6.1.0(@types/node@20.19.25)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + cosmiconfig-typescript-loader@6.2.0(@types/node@20.19.30)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 cosmiconfig: 9.0.0(typescript@5.9.3) - jiti: 2.4.2 + jiti: 2.6.1 typescript: 5.9.3 optional: true cosmiconfig@8.3.6(typescript@5.9.3): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -10460,18 +10378,18 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 5.9.3 - create-jest@29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)): + create-jest@29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -10484,7 +10402,7 @@ snapshots: cron-parser@4.9.0: dependencies: - luxon: 3.6.0 + luxon: 3.7.2 cropperjs@1.6.2: {} @@ -10523,15 +10441,15 @@ snapshots: css-select@4.3.0: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 4.3.1 domutils: 2.8.0 nth-check: 2.1.1 - css-select@5.1.0: + css-select@5.2.2: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 5.0.3 domutils: 3.2.2 nth-check: 2.1.1 @@ -10551,7 +10469,7 @@ snapshots: mdn-data: 2.12.2 source-map-js: 1.2.1 - css-what@6.1.0: {} + css-what@6.2.2: {} cssesc@3.0.0: {} @@ -10561,18 +10479,18 @@ snapshots: dependencies: css-tree: 1.1.3 - csstype@3.1.3: {} + csstype@3.2.3: {} - cz-conventional-changelog@3.3.0(@types/node@20.19.25)(typescript@5.9.3): + cz-conventional-changelog@3.3.0(@types/node@20.19.30)(typescript@5.9.3): dependencies: chalk: 2.4.2 - commitizen: 4.3.1(@types/node@20.19.25)(typescript@5.9.3) + commitizen: 4.3.1(@types/node@20.19.30)(typescript@5.9.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.8.0(@types/node@20.19.25)(typescript@5.9.3) + '@commitlint/load': 20.3.1(@types/node@20.19.30)(typescript@5.9.3) transitivePeerDependencies: - '@types/node' - typescript @@ -10615,10 +10533,6 @@ snapshots: dependencies: ms: 2.1.2 - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -10634,7 +10548,7 @@ snapshots: dedent@0.7.0: {} - dedent@1.5.3: {} + dedent@1.7.1: {} deep-is@0.1.4: {} @@ -10693,7 +10607,7 @@ snapshots: dijkstrajs@1.0.3: {} - dingtalk-jsapi@3.2.2: + dingtalk-jsapi@3.2.5: dependencies: promise-polyfill: 7.1.2 @@ -10794,27 +10708,25 @@ snapshots: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 - semver: 7.7.1 + semver: 7.7.3 ee-first@1.1.1: {} ejs@3.1.10: dependencies: - jake: 10.9.2 + jake: 10.9.4 - electron-to-chromium@1.5.128: {} - - electron-to-chromium@1.5.260: {} + electron-to-chromium@1.5.267: {} emittery@0.13.1: {} - emoji-mart-vue-fast@15.0.5(vue@3.5.25(typescript@5.9.3)): + emoji-mart-vue-fast@15.0.5(vue@3.5.27(typescript@5.9.3)): dependencies: - '@babel/runtime': 7.27.0 - core-js: 3.41.0 - vue: 3.5.25(typescript@5.9.3) + '@babel/runtime': 7.28.6 + core-js: 3.47.0 + vue: 3.5.27(typescript@5.9.3) - emoji-regex@10.4.0: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -10824,7 +10736,7 @@ snapshots: encodeurl@1.0.2: {} - encoding-sniffer@0.2.0: + encoding-sniffer@0.2.1: dependencies: iconv-lite: 0.6.3 whatwg-encoding: 3.1.1 @@ -10837,6 +10749,10 @@ snapshots: entities@4.5.0: {} + entities@6.0.1: {} + + entities@7.0.0: {} + env-paths@2.2.1: {} environment@1.1.0: {} @@ -10846,11 +10762,11 @@ snapshots: prr: 1.0.1 optional: true - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.9: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -10879,7 +10795,9 @@ 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 @@ -10894,6 +10812,7 @@ 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 @@ -10902,7 +10821,7 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 es-define-property@1.0.1: {} @@ -11013,33 +10932,63 @@ snapshots: esbuild-windows-64: 0.14.54 esbuild-windows-arm64: 0.14.54 - esbuild@0.25.1: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.1 - '@esbuild/android-arm': 0.25.1 - '@esbuild/android-arm64': 0.25.1 - '@esbuild/android-x64': 0.25.1 - '@esbuild/darwin-arm64': 0.25.1 - '@esbuild/darwin-x64': 0.25.1 - '@esbuild/freebsd-arm64': 0.25.1 - '@esbuild/freebsd-x64': 0.25.1 - '@esbuild/linux-arm': 0.25.1 - '@esbuild/linux-arm64': 0.25.1 - '@esbuild/linux-ia32': 0.25.1 - '@esbuild/linux-loong64': 0.25.1 - '@esbuild/linux-mips64el': 0.25.1 - '@esbuild/linux-ppc64': 0.25.1 - '@esbuild/linux-riscv64': 0.25.1 - '@esbuild/linux-s390x': 0.25.1 - '@esbuild/linux-x64': 0.25.1 - '@esbuild/netbsd-arm64': 0.25.1 - '@esbuild/netbsd-x64': 0.25.1 - '@esbuild/openbsd-arm64': 0.25.1 - '@esbuild/openbsd-x64': 0.25.1 - '@esbuild/sunos-x64': 0.25.1 - '@esbuild/win32-arm64': 0.25.1 - '@esbuild/win32-ia32': 0.25.1 - '@esbuild/win32-x64': 0.25.1 + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 escalade@3.2.0: {} @@ -11057,35 +11006,35 @@ snapshots: eslint-define-config@2.1.0: {} - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)))(typescript@5.9.3): + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)))(typescript@5.9.3): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3) eslint: 8.57.1 optionalDependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - jest: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + jest: 29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-prettier@5.5.4(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.0): dependencies: eslint: 8.57.1 - prettier: 3.6.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 + prettier: 3.8.0 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 optionalDependencies: eslint-config-prettier: 9.1.2(eslint@8.57.1) eslint-plugin-vue@9.33.0(eslint@8.57.1): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) eslint: 8.57.1 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.7.1 + semver: 7.7.3 vue-eslint-parser: 9.4.3(eslint@8.57.1) xml-name-validator: 4.0.0 transitivePeerDependencies: @@ -11105,8 +11054,8 @@ snapshots: eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 @@ -11116,13 +11065,13 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.3 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -11134,7 +11083,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 + js-yaml: 4.1.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -11148,17 +11097,17 @@ snapshots: esno@4.8.0: dependencies: - tsx: 4.19.3 + tsx: 4.21.0 espree@9.6.1: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -11182,7 +11131,7 @@ snapshots: eventemitter3@4.0.7: {} - eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} execa@5.1.1: dependencies: @@ -11234,7 +11183,7 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - exsolve@1.0.4: {} + exsolve@1.0.8: {} extend-shallow@2.0.1: dependencies: @@ -11280,11 +11229,11 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.6: {} + fast-uri@3.1.0: {} fastest-levenshtein@1.0.16: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -11292,10 +11241,6 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -11304,9 +11249,9 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@11.1.1: + file-entry-cache@11.1.2: dependencies: - flat-cache: 6.1.19 + flat-cache: 6.1.20 file-entry-cache@6.0.1: dependencies: @@ -11374,19 +11319,15 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 - flat-cache@6.1.19: + flat-cache@6.1.20: dependencies: - cacheable: 2.2.0 + cacheable: 2.3.2 flatted: 3.3.3 - hookified: 1.13.0 + hookified: 1.15.0 flatted@3.3.3: {} - follow-redirects@1.15.9(debug@4.4.0): - optionalDependencies: - debug: 4.4.0 - - follow-redirects@1.15.9(debug@4.4.3): + follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: debug: 4.4.3 @@ -11409,7 +11350,7 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} fragment-cache@0.2.1: dependencies: @@ -11418,20 +11359,20 @@ snapshots: fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@11.3.2: + fs-extra@11.3.3: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs.realpath@1.0.0: {} @@ -11452,11 +11393,13 @@ snapshots: functions-have-names@1.2.3: {} + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} - get-east-asian-width@1.3.0: {} + get-east-asian-width@1.4.0: {} get-intrinsic@1.3.0: dependencies: @@ -11490,7 +11433,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.10.0: + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -11513,7 +11456,7 @@ snapshots: git-semver-tags@7.0.1: dependencies: meow: 12.1.1 - semver: 7.7.1 + semver: 7.7.3 glob-parent@5.1.2: dependencies: @@ -11523,7 +11466,7 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.4.5: + glob@10.5.0: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 @@ -11583,8 +11526,6 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@11.12.0: {} - globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -11677,9 +11618,9 @@ snapshots: is-number: 3.0.0 kind-of: 4.0.0 - hashery@1.2.0: + hashery@1.4.0: dependencies: - hookified: 1.13.0 + hookified: 1.15.0 hasown@2.0.2: dependencies: @@ -11695,7 +11636,7 @@ snapshots: dependencies: parse-passwd: 1.0.0 - hookified@1.13.0: {} + hookified@1.15.0: {} hosted-git-info@2.8.9: {} @@ -11721,10 +11662,17 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.39.0 + terser: 5.46.0 html-tags@3.3.1: {} + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + htmlparser2@3.10.1: dependencies: domelementtype: 1.3.1 @@ -11741,17 +11689,10 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 - htmlparser2@9.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - http-proxy@1.18.1: dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.9(debug@4.4.0) + follow-redirects: 1.15.11(debug@4.4.3) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -11767,7 +11708,7 @@ snapshots: mime: 1.6.0 minimist: 1.2.8 opener: 1.5.2 - portfinder: 1.0.35 + portfinder: 1.0.38 secure-compare: 3.0.1 union: 0.5.0 url-join: 4.0.1 @@ -11789,7 +11730,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.0: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -11813,7 +11754,7 @@ snapshots: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - import-meta-resolve@4.1.0: + import-meta-resolve@4.2.0: optional: true imurmurhash@0.1.4: {} @@ -11850,10 +11791,10 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 - inquirer@9.3.8(@types/node@20.19.25): + inquirer@9.3.8(@types/node@20.19.30): dependencies: - '@inquirer/external-editor': 1.0.3(@types/node@20.19.25) - '@inquirer/figures': 1.0.11 + '@inquirer/external-editor': 1.0.3(@types/node@20.19.30) + '@inquirer/figures': 1.0.15 ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 1.0.0 @@ -11863,7 +11804,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 transitivePeerDependencies: - '@types/node' @@ -11963,15 +11904,16 @@ snapshots: is-fullwidth-code-point@4.0.0: {} - is-fullwidth-code-point@5.0.0: + is-fullwidth-code-point@5.1.0: dependencies: - get-east-asian-width: 1.3.0 + get-east-asian-width: 1.4.0 is-generator-fn@2.1.0: {} - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -11986,6 +11928,8 @@ snapshots: is-module@1.0.0: {} + is-negative-zero@2.0.3: {} + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -12049,7 +11993,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 is-unicode-supported@0.1.0: {} @@ -12090,8 +12034,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 + '@babel/core': 7.28.6 + '@babel/parser': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -12100,11 +12044,11 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 + '@babel/core': 7.28.6 + '@babel/parser': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -12116,13 +12060,13 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.0 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -12137,12 +12081,11 @@ snapshots: dependencies: '@isaacs/cliui': 8.0.2 - jake@10.9.2: + jake@10.9.4: dependencies: async: 3.2.6 - chalk: 4.1.2 filelist: 1.0.4 - minimatch: 3.1.2 + picocolors: 1.1.1 jest-changed-files@29.7.0: dependencies: @@ -12156,10 +12099,10 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.3 + dedent: 1.7.1 is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -12176,16 +12119,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)): + jest-cli@29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + create-jest: 29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -12195,12 +12138,12 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)): + jest-config@29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)): dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.10) + babel-jest: 29.7.0(@babel/core@7.28.6) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -12220,8 +12163,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 20.19.25 - ts-node: 10.9.2(@types/node@20.19.25)(typescript@5.9.3) + '@types/node': 20.19.30 + ts-node: 10.9.2(@types/node@20.19.30)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -12250,7 +12193,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -12260,7 +12203,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.19.25 + '@types/node': 20.19.30 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -12286,7 +12229,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.28.6 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -12299,7 +12242,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -12323,7 +12266,7 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.10 + resolve: 1.22.11 resolve.exports: 2.0.3 slash: 3.0.0 @@ -12334,7 +12277,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -12362,10 +12305,10 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 chalk: 4.1.2 cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 glob: 7.2.3 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 @@ -12382,15 +12325,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.27.0 + '@babel/core': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6) + '@babel/types': 7.28.6 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.6) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -12401,14 +12344,14 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.1 + semver: 7.7.3 transitivePeerDependencies: - supports-color jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12427,7 +12370,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.25 + '@types/node': 20.19.30 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -12436,17 +12379,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)): + jest@29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + jest-cli: 29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -12455,9 +12398,6 @@ snapshots: jiti@1.21.7: {} - jiti@2.4.2: - optional: true - jiti@2.6.1: optional: true @@ -12467,7 +12407,7 @@ snapshots: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 - glob: 10.4.5 + glob: 10.5.0 js-cookie: 3.0.5 nopt: 7.2.1 @@ -12477,12 +12417,12 @@ snapshots: js-tokens@9.0.1: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -12512,7 +12452,7 @@ snapshots: json5@2.2.3: {} - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -12522,7 +12462,7 @@ snapshots: jsonpointer@5.0.1: {} - katex@0.16.21: + katex@0.16.27: dependencies: commander: 8.3.0 @@ -12530,7 +12470,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - keyv@5.5.4: + keyv@5.5.5: dependencies: '@keyv/serialize': 1.1.1 @@ -12552,7 +12492,7 @@ snapshots: kolorist@1.8.0: {} - less@4.4.2: + less@4.5.1: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 @@ -12602,10 +12542,10 @@ snapshots: dependencies: cli-truncate: 4.0.0 colorette: 2.0.20 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 log-update: 6.1.0 rfdc: 1.4.1 - wrap-ansi: 9.0.0 + wrap-ansi: 9.0.2 load-json-file@4.0.0: dependencies: @@ -12620,10 +12560,10 @@ snapshots: emojis-list: 3.0.0 json5: 1.0.2 - local-pkg@1.1.1: + local-pkg@1.1.2: dependencies: - mlly: 1.7.4 - pkg-types: 2.1.0 + mlly: 1.8.0 + pkg-types: 2.3.0 quansync: 0.2.11 locate-path@5.0.0: @@ -12638,7 +12578,7 @@ snapshots: dependencies: p-locate: 6.0.0 - lodash-es@4.17.21: {} + lodash-es@4.17.22: {} lodash.camelcase@4.3.0: {} @@ -12681,11 +12621,11 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.0.0 + ansi-escapes: 7.2.0 cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 longest@2.0.1: {} @@ -12699,7 +12639,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.2: {} + lru-cache@11.2.4: {} lru-cache@5.1.1: dependencies: @@ -12709,7 +12649,7 @@ snapshots: dependencies: yallist: 4.0.0 - luxon@3.6.0: {} + luxon@3.7.2: {} magic-string@0.25.9: dependencies: @@ -12727,7 +12667,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.3 make-error@1.3.6: {} @@ -12856,23 +12796,23 @@ snapshots: minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.1: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.3: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist-options@4.1.0: dependencies: @@ -12891,18 +12831,18 @@ snapshots: for-in: 1.0.2 is-extendable: 1.0.1 - mlly@1.7.4: + mlly@1.8.0: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.1 + ufo: 1.6.3 - mobx-preact@3.0.0(mobx@5.15.7)(preact@10.27.2): + mobx-preact@3.0.0(mobx@5.15.7)(preact@10.28.2): dependencies: hoist-non-react-statics: 2.5.5 mobx: 5.15.7 - preact: 10.27.2 + preact: 10.28.2 mobx-utils@5.6.2(mobx@5.15.7): dependencies: @@ -12912,7 +12852,7 @@ snapshots: mockjs@1.1.0: dependencies: - commander: 13.1.0 + commander: 14.0.2 mousetrap@1.6.5: {} @@ -12957,7 +12897,7 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.4.1 + sax: 1.4.4 optional: true neo-async@2.6.2: {} @@ -12982,8 +12922,6 @@ snapshots: node-int64@0.4.0: {} - node-releases@2.0.19: {} - node-releases@2.0.27: {} nopt@7.2.1: @@ -12993,7 +12931,7 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.10 + resolve: 1.22.11 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -13001,19 +12939,17 @@ snapshots: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.16.1 - semver: 7.7.1 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.1 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - npm-run-all@4.1.5: dependencies: ansi-styles: 3.2.1 @@ -13023,7 +12959,7 @@ snapshots: minimatch: 3.1.2 pidtree: 0.3.1 read-pkg: 3.0.0 - shell-quote: 1.8.2 + shell-quote: 1.8.3 string.prototype.padend: 3.1.6 npm-run-path@4.0.1: @@ -13073,7 +13009,7 @@ snapshots: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 - ufo: 1.6.1 + ufo: 1.6.3 on-finished@2.3.0: dependencies: @@ -13142,7 +13078,7 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 p-locate@4.1.0: dependencies: @@ -13160,7 +13096,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.5.0: {} + package-manager-detector@1.6.0: {} param-case@3.0.4: dependencies: @@ -13173,20 +13109,20 @@ snapshots: parse-json@4.0.0: dependencies: - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-better-errors: 1.0.2 parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 + '@babel/code-frame': 7.28.6 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-json@7.1.1: dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 + '@babel/code-frame': 7.28.6 + error-ex: 1.3.4 json-parse-even-better-errors: 3.0.2 lines-and-columns: 2.0.4 type-fest: 3.13.1 @@ -13198,15 +13134,15 @@ snapshots: parse5-htmlparser2-tree-adapter@7.1.0: dependencies: domhandler: 5.0.3 - parse5: 7.2.1 + parse5: 7.3.0 parse5-parser-stream@7.1.2: dependencies: - parse5: 7.2.1 + parse5: 7.3.0 - parse5@7.2.1: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.1 parseurl@1.3.3: {} @@ -13240,7 +13176,7 @@ snapshots: path-scurry@2.0.1: dependencies: - lru-cache: 11.2.2 + lru-cache: 11.2.4 minipass: 7.1.2 path-to-regexp@6.3.0: {} @@ -13263,8 +13199,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pidtree@0.3.1: {} @@ -13276,14 +13210,16 @@ snapshots: pify@4.0.1: optional: true - pinia@2.1.7(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)): + pinia@2.1.7(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.25(typescript@5.9.3) - vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3)) + vue: 3.5.27(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.27(typescript@5.9.3)) optionalDependencies: typescript: 5.9.3 + pinyin-pro@3.28.0: {} + pirates@4.0.7: {} pkg-dir@4.2.0: @@ -13293,21 +13229,21 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 + mlly: 1.8.0 pathe: 2.0.3 - pkg-types@2.1.0: + pkg-types@2.3.0: dependencies: - confbox: 0.2.1 - exsolve: 1.0.4 + confbox: 0.2.2 + exsolve: 1.0.8 pathe: 2.0.3 pngjs@5.0.0: {} - portfinder@1.0.35: + portfinder@1.0.38: dependencies: async: 3.2.6 - debug: 4.4.0 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -13315,7 +13251,7 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-html@1.8.0: + postcss-html@1.8.1: dependencies: htmlparser2: 8.0.2 js-tokens: 9.0.1 @@ -13345,7 +13281,7 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -13392,15 +13328,15 @@ snapshots: posthtml-parser: 0.2.1 posthtml-render: 1.4.0 - preact@10.27.2: {} + preact@10.28.2: {} prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 - prettier@3.6.2: {} + prettier@3.8.0: {} pretty-bytes@5.6.0: {} @@ -13412,14 +13348,14 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-quick@4.2.2(prettier@3.6.2): + pretty-quick@4.2.2(prettier@3.8.0): dependencies: '@pkgr/core': 0.2.9 ignore: 7.0.5 mri: 1.2.0 picocolors: 1.1.1 - picomatch: 4.0.2 - prettier: 3.6.2 + picomatch: 4.0.3 + prettier: 3.8.0 tinyexec: 0.3.2 tslib: 2.8.1 @@ -13445,9 +13381,9 @@ snapshots: pure-rand@6.1.0: {} - qified@0.5.2: + qified@0.6.0: dependencies: - hookified: 1.13.0 + hookified: 1.15.0 qrcode@1.5.4: dependencies: @@ -13455,7 +13391,7 @@ snapshots: pngjs: 5.0.0 yargs: 15.4.1 - qs@6.14.0: + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -13482,7 +13418,7 @@ snapshots: dependencies: find-up: 6.3.0 read-pkg: 8.1.0 - type-fest: 4.38.0 + type-fest: 4.41.0 read-pkg-up@7.0.1: dependencies: @@ -13508,7 +13444,7 @@ snapshots: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 parse-json: 7.1.1 - type-fest: 4.38.0 + type-fest: 4.41.0 readable-stream@3.6.2: dependencies: @@ -13529,7 +13465,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -13544,8 +13480,6 @@ snapshots: regenerator-runtime@0.11.1: {} - regenerator-runtime@0.14.1: {} - regex-not@1.0.2: dependencies: extend-shallow: 3.0.2 @@ -13614,7 +13548,7 @@ snapshots: resolve.exports@2.0.3: {} - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 @@ -13642,7 +13576,7 @@ snapshots: rimraf@5.0.10: dependencies: - glob: 10.4.5 + glob: 10.5.0 rollup-plugin-purge-icons@0.10.0: dependencies: @@ -13656,7 +13590,7 @@ snapshots: dependencies: open: 8.4.2 picomatch: 4.0.3 - source-map: 0.7.4 + source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: rollup: 4.52.5 @@ -13734,7 +13668,7 @@ snapshots: safer-buffer@2.1.2: {} - sax@1.4.1: + sax@1.4.4: optional: true scroll-into-view-if-needed@2.2.31: @@ -13753,8 +13687,6 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.7.1: {} - semver@7.7.3: {} serialize-javascript@6.0.2: @@ -13806,7 +13738,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.2: {} + shell-quote@1.8.3: {} showdown@2.1.0: dependencies: @@ -13846,7 +13778,7 @@ snapshots: sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.28 + '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 @@ -13862,13 +13794,13 @@ snapshots: slice-ansi@5.0.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 is-fullwidth-code-point: 4.0.0 - slice-ansi@7.1.0: + slice-ansi@7.1.2: dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 smob@1.5.0: {} @@ -13925,7 +13857,7 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} + source-map@0.7.6: {} source-map@0.8.0-beta.0: dependencies: @@ -13936,16 +13868,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 + spdx-license-ids: 3.0.22 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 + spdx-license-ids: 3.0.22 - spdx-license-ids@3.0.21: {} + spdx-license-ids@3.0.22: {} split-string@3.1.0: dependencies: @@ -13972,6 +13904,11 @@ snapshots: statuses@1.5.0: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + strict-uri-encode@1.1.0: {} string-argv@0.3.2: {} @@ -13991,20 +13928,20 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string-width@7.2.0: dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 + emoji-regex: 10.6.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -14019,7 +13956,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 string.prototype.trim@1.2.10: @@ -14028,7 +13965,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -14063,9 +14000,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -14083,44 +14020,45 @@ snapshots: strip-json-comments@3.1.1: {} - stylelint-config-html@1.1.0(postcss-html@1.8.0)(stylelint@16.26.0(typescript@5.9.3)): + stylelint-config-html@1.1.0(postcss-html@1.8.1)(stylelint@16.26.1(typescript@5.9.3)): dependencies: - postcss-html: 1.8.0 - stylelint: 16.26.0(typescript@5.9.3) + postcss-html: 1.8.1 + stylelint: 16.26.1(typescript@5.9.3) - stylelint-config-prettier@9.0.5(stylelint@16.26.0(typescript@5.9.3)): + stylelint-config-prettier@9.0.5(stylelint@16.26.1(typescript@5.9.3)): dependencies: - stylelint: 16.26.0(typescript@5.9.3) + stylelint: 16.26.1(typescript@5.9.3) - stylelint-config-recommended-vue@1.6.1(postcss-html@1.8.0)(stylelint@16.26.0(typescript@5.9.3)): + stylelint-config-recommended-vue@1.6.1(postcss-html@1.8.1)(stylelint@16.26.1(typescript@5.9.3)): dependencies: - postcss-html: 1.8.0 - semver: 7.7.1 - stylelint: 16.26.0(typescript@5.9.3) - stylelint-config-html: 1.1.0(postcss-html@1.8.0)(stylelint@16.26.0(typescript@5.9.3)) - stylelint-config-recommended: 14.0.1(stylelint@16.26.0(typescript@5.9.3)) + postcss-html: 1.8.1 + semver: 7.7.3 + stylelint: 16.26.1(typescript@5.9.3) + stylelint-config-html: 1.1.0(postcss-html@1.8.1)(stylelint@16.26.1(typescript@5.9.3)) + stylelint-config-recommended: 14.0.1(stylelint@16.26.1(typescript@5.9.3)) - stylelint-config-recommended@14.0.1(stylelint@16.26.0(typescript@5.9.3)): + stylelint-config-recommended@14.0.1(stylelint@16.26.1(typescript@5.9.3)): dependencies: - stylelint: 16.26.0(typescript@5.9.3) + stylelint: 16.26.1(typescript@5.9.3) - stylelint-config-standard@36.0.1(stylelint@16.26.0(typescript@5.9.3)): + stylelint-config-standard@36.0.1(stylelint@16.26.1(typescript@5.9.3)): dependencies: - stylelint: 16.26.0(typescript@5.9.3) - stylelint-config-recommended: 14.0.1(stylelint@16.26.0(typescript@5.9.3)) + stylelint: 16.26.1(typescript@5.9.3) + stylelint-config-recommended: 14.0.1(stylelint@16.26.1(typescript@5.9.3)) - stylelint-order@6.0.4(stylelint@16.26.0(typescript@5.9.3)): + stylelint-order@6.0.4(stylelint@16.26.1(typescript@5.9.3)): dependencies: postcss: 8.5.6 postcss-sorting: 8.0.2(postcss@8.5.6) - stylelint: 16.26.0(typescript@5.9.3) + stylelint: 16.26.1(typescript@5.9.3) - stylelint@16.26.0(typescript@5.9.3): + stylelint@16.26.1(typescript@5.9.3): dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-syntax-patches-for-csstree': 1.0.25 '@csstools/css-tokenizer': 3.0.4 '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) '@dual-bundle/import-meta-resolve': 4.2.1 balanced-match: 2.0.0 colord: 2.9.3 @@ -14130,7 +14068,7 @@ snapshots: debug: 4.4.3 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 11.1.1 + file-entry-cache: 11.1.2 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 @@ -14147,7 +14085,7 @@ snapshots: postcss: 8.5.6 postcss-resolve-nested-selector: 0.1.6 postcss-safe-parser: 7.0.1(postcss@8.5.6) - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 @@ -14216,11 +14154,11 @@ snapshots: picocolors: 1.1.1 stable: 0.1.8 - swagger-ui-dist@5.30.2: + swagger-ui-dist@5.31.0: dependencies: '@scarf/scarf': 1.4.0 - synckit@0.11.11: + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -14247,10 +14185,10 @@ snapshots: type-fest: 0.16.0 unique-string: 2.0.0 - terser@5.39.0: + terser@5.46.0: dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -14327,7 +14265,7 @@ snapshots: dependencies: gopd: 1.2.0 typedarray.prototype.slice: 1.0.5 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 trim-newlines@3.0.1: {} @@ -14335,12 +14273,12 @@ snapshots: dependencies: typescript: 5.9.3 - ts-jest@29.4.5(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.6(@babel/core@7.28.6)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.6))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + jest: 29.7.0(@types/node@20.19.30)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -14349,21 +14287,21 @@ snapshots: typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.28.6 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.10) + babel-jest: 29.7.0(@babel/core@7.28.6) jest-util: 29.7.0 - ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3): + ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.19.25 - acorn: 8.14.1 + '@types/node': 20.19.30 + acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -14384,10 +14322,10 @@ snapshots: tslib: 1.14.1 typescript: 5.9.3 - tsx@4.19.3: + tsx@4.21.0: dependencies: - esbuild: 0.25.1 - get-tsconfig: 4.10.0 + esbuild: 0.27.2 + get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -14411,8 +14349,6 @@ snapshots: type-fest@3.13.1: {} - type-fest@4.38.0: {} - type-fest@4.41.0: {} typed-array-buffer@1.0.3: @@ -14452,7 +14388,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.1 es-errors: 1.3.0 get-proto: 1.0.1 math-intrinsics: 1.1.0 @@ -14463,7 +14399,7 @@ snapshots: uc.micro@2.1.0: {} - ufo@1.6.1: {} + ufo@1.6.3: {} uglify-js@3.19.3: optional: true @@ -14483,7 +14419,7 @@ snapshots: undici-types@6.21.0: {} - undici@6.21.2: {} + undici@7.18.2: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -14505,7 +14441,7 @@ snapshots: union@0.5.0: dependencies: - qs: 6.14.0 + qs: 6.14.1 unique-string@2.0.0: dependencies: @@ -14513,9 +14449,9 @@ snapshots: universalify@2.0.1: {} - unocss@0.58.9(postcss@8.5.6)(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + unocss@0.58.9(postcss@8.5.6)(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: - '@unocss/astro': 0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + '@unocss/astro': 0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) '@unocss/cli': 0.58.9(rollup@4.52.5) '@unocss/core': 0.58.9 '@unocss/extractor-arbitrary-variants': 0.58.9 @@ -14534,9 +14470,9 @@ snapshots: '@unocss/transformer-compile-class': 0.58.9 '@unocss/transformer-directives': 0.58.9 '@unocss/transformer-variant-group': 0.58.9 - '@unocss/vite': 0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + '@unocss/vite': 0.58.9(rollup@4.52.5)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) optionalDependencies: - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - postcss - rollup @@ -14551,15 +14487,9 @@ snapshots: upath@1.2.0: {} - update-browserslist-db@1.1.3(browserslist@4.24.4): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - update-browserslist-db@1.1.4(browserslist@4.28.0): - dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -14583,7 +14513,7 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -14602,16 +14532,16 @@ snapshots: dependencies: diff-match-patch: 1.0.5 - vite-plugin-compression@0.5.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-compression@0.5.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: chalk: 4.1.2 - debug: 4.4.0 + debug: 4.4.3 fs-extra: 10.1.0 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - supports-color - vite-plugin-html@3.2.2(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-html@3.2.2(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: '@rollup/pluginutils': 4.2.1 colorette: 2.0.20 @@ -14625,139 +14555,139 @@ snapshots: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) - vite-plugin-mkcert@1.17.9(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-mkcert@1.17.9(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: axios: 1.13.2(debug@4.4.3) debug: 4.4.3 picocolors: 1.1.1 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - supports-color - vite-plugin-mock@2.9.8(mockjs@1.1.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-mock@2.9.8(mockjs@1.1.0)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: '@types/mockjs': 1.0.10 chalk: 4.1.2 chokidar: 3.6.0 connect: 3.7.0 - debug: 4.4.0 + debug: 4.4.3 esbuild: 0.14.54 fast-glob: 3.3.3 mockjs: 1.1.0 path-to-regexp: 6.3.0 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - supports-color - vite-plugin-optimize-persist@0.1.2(vite-plugin-package-config@0.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-optimize-persist@0.1.2(vite-plugin-package-config@0.1.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)))(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: - debug: 4.4.0 + debug: 4.4.3 fs-extra: 10.1.0 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) - vite-plugin-package-config: 0.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) + vite-plugin-package-config: 0.1.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)) transitivePeerDependencies: - supports-color - vite-plugin-package-config@0.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-package-config@0.1.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: - debug: 4.4.0 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + debug: 4.4.3 + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - supports-color - vite-plugin-purge-icons@0.10.0(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-purge-icons@0.10.0(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: '@purge-icons/core': 0.10.0 '@purge-icons/generated': 0.10.0 rollup-plugin-purge-icons: 0.10.0 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - encoding - supports-color - vite-plugin-pwa@1.1.0(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): + vite-plugin-pwa@1.2.0(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): dependencies: - debug: 4.4.0 + debug: 4.4.3 pretty-bytes: 6.1.1 tinyglobby: 0.2.15 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) workbox-build: 7.4.0(@types/babel__core@7.20.5) workbox-window: 7.4.0 transitivePeerDependencies: - supports-color - vite-plugin-qiankun@1.0.15(typescript@5.9.3)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-qiankun@1.0.15(typescript@5.9.3)(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: - cheerio: 1.0.0 + cheerio: 1.1.2 typescript: 5.9.3 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) - vite-plugin-svg-icons@2.0.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3)): + vite-plugin-svg-icons@2.0.1(vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0)): dependencies: '@types/svgo': 2.6.4 cors: 2.8.5 - debug: 4.4.0 + debug: 4.4.3 etag: 1.8.1 fs-extra: 10.1.0 pathe: 0.2.0 svg-baker: 1.7.0 svgo: 2.8.0 - vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3) + vite: 6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0) transitivePeerDependencies: - supports-color vite-plugin-vue-setup-extend-plus@0.1.0: {} - vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(terser@5.39.0)(tsx@4.19.3): + vite@6.4.1(@types/node@20.19.30)(jiti@2.6.1)(less@4.5.1)(terser@5.46.0)(tsx@4.21.0): dependencies: - esbuild: 0.25.1 - fdir: 6.5.0(picomatch@4.0.2) - picomatch: 4.0.2 + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.52.5 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 20.19.25 + '@types/node': 20.19.30 fsevents: 2.3.3 jiti: 2.6.1 - less: 4.4.2 - terser: 5.39.0 - tsx: 4.19.3 + less: 4.5.1 + terser: 5.46.0 + tsx: 4.21.0 - vue-component-type-helpers@2.2.8: {} + vue-component-type-helpers@2.2.12: {} vue-cropper@0.6.5: {} - vue-cropperjs@5.0.0(vue@3.5.25(typescript@5.9.3)): + vue-cropperjs@5.0.0(vue@3.5.27(typescript@5.9.3)): dependencies: cropperjs: 1.6.2 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) - vue-demi@0.14.10(vue@3.5.25(typescript@5.9.3)): + vue-demi@0.14.10(vue@3.5.27(typescript@5.9.3)): dependencies: - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) vue-eslint-parser@9.4.3(eslint@8.57.1): dependencies: - debug: 4.4.0 + debug: 4.4.3 eslint: 8.57.1 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.6.0 + esquery: 1.7.0 lodash: 4.17.21 - semver: 7.7.1 + semver: 7.7.3 transitivePeerDependencies: - supports-color - vue-i18n@9.14.5(vue@3.5.25(typescript@5.9.3)): + vue-i18n@9.14.5(vue@3.5.27(typescript@5.9.3)): dependencies: '@intlify/core-base': 9.14.5 '@intlify/shared': 9.14.5 '@vue/devtools-api': 6.6.4 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) vue-infinite-scroll@2.0.2: {} @@ -14765,10 +14695,10 @@ snapshots: dependencies: babel-plugin-transform-runtime: 6.23.0 - vue-router@4.6.3(vue@3.5.25(typescript@5.9.3)): + vue-router@4.6.4(vue@3.5.27(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) vue-template-compiler@2.7.16: dependencies: @@ -14779,48 +14709,48 @@ snapshots: dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.27(typescript@5.9.3) - semver: 7.7.1 + semver: 7.7.3 typescript: 5.9.3 - vue-types@3.0.2(vue@3.5.25(typescript@5.9.3)): + vue-types@3.0.2(vue@3.5.27(typescript@5.9.3)): dependencies: is-plain-object: 3.0.1 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) - vue-types@5.1.3(vue@3.5.25(typescript@5.9.3)): + vue-types@5.1.3(vue@3.5.27(typescript@5.9.3)): dependencies: is-plain-object: 5.0.0 optionalDependencies: - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) - vue@3.5.25(typescript@5.9.3): + vue@3.5.27(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.25 - '@vue/compiler-sfc': 3.5.25 - '@vue/runtime-dom': 3.5.25 - '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@5.9.3)) - '@vue/shared': 3.5.25 + '@vue/compiler-dom': 3.5.27 + '@vue/compiler-sfc': 3.5.27 + '@vue/runtime-dom': 3.5.27 + '@vue/server-renderer': 3.5.27(vue@3.5.27(typescript@5.9.3)) + '@vue/shared': 3.5.27 optionalDependencies: typescript: 5.9.3 - vuedraggable@4.1.0(vue@3.5.25(typescript@5.9.3)): + vuedraggable@4.1.0(vue@3.5.27(typescript@5.9.3)): dependencies: sortablejs: 1.14.0 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.27(typescript@5.9.3) - vxe-pc-ui@4.6.12(vue@3.5.25(typescript@5.9.3)): + vxe-pc-ui@4.6.12(vue@3.5.27(typescript@5.9.3)): dependencies: - '@vxe-ui/core': 4.2.8(vue@3.5.25(typescript@5.9.3)) + '@vxe-ui/core': 4.2.21(vue@3.5.27(typescript@5.9.3)) transitivePeerDependencies: - vue - vxe-table-plugin-antd@4.0.8(vxe-table@4.13.31(vue@3.5.25(typescript@5.9.3))): + vxe-table-plugin-antd@4.0.8(vxe-table@4.13.31(vue@3.5.27(typescript@5.9.3))): dependencies: - vxe-table: 4.13.31(vue@3.5.25(typescript@5.9.3)) + vxe-table: 4.13.31(vue@3.5.27(typescript@5.9.3)) - vxe-table@4.13.31(vue@3.5.25(typescript@5.9.3)): + vxe-table@4.13.31(vue@3.5.27(typescript@5.9.3)): dependencies: - vxe-pc-ui: 4.6.12(vue@3.5.25(typescript@5.9.3)) + vxe-pc-ui: 4.6.12(vue@3.5.27(typescript@5.9.3)) transitivePeerDependencies: - vue @@ -14877,13 +14807,13 @@ snapshots: is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-regex: 1.2.1 is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 which-collection@1.0.2: dependencies: @@ -14894,7 +14824,7 @@ snapshots: which-module@2.0.1: {} - which-typed-array@1.1.19: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -14928,10 +14858,10 @@ snapshots: workbox-build@7.4.0(@types/babel__core@7.20.5): dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) - '@babel/core': 7.26.10 - '@babel/preset-env': 7.28.5(@babel/core@7.26.10) - '@babel/runtime': 7.27.0 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.10)(@types/babel__core@7.20.5)(rollup@2.79.2) + '@babel/core': 7.28.6 + '@babel/preset-env': 7.28.6(@babel/core@7.28.6) + '@babel/runtime': 7.28.6 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.28.6)(@types/babel__core@7.20.5)(rollup@2.79.2) '@rollup/plugin-node-resolve': 15.3.1(rollup@2.79.2) '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) '@rollup/plugin-terser': 0.4.4(rollup@2.79.2) @@ -15043,15 +14973,15 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} @@ -15067,7 +14997,7 @@ snapshots: xe-utils@3.5.26: {} - xe-utils@3.7.8: {} + xe-utils@3.8.4: {} xml-name-validator@4.0.0: {} @@ -15123,9 +15053,9 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.2.1: {} + yocto-queue@1.2.2: {} - yoctocolors-cjs@2.1.2: {} + yoctocolors-cjs@2.1.3: {} zrender@5.6.1: dependencies: diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/alignment.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/alignment.svg new file mode 100644 index 000000000..08b66e3e8 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/alignment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/arrow-left.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/arrow-left.svg new file mode 100644 index 000000000..b55538b66 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/arrow-right.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/arrow-right.svg new file mode 100644 index 000000000..1aadb00a5 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/barcode.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/barcode.svg new file mode 100644 index 000000000..655b3ef9b --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/barcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/bold.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/bold.svg new file mode 100644 index 000000000..80728d0c0 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/catalog.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/catalog.svg new file mode 100644 index 000000000..90d45c2df --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/catalog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/cellcolor.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/cellcolor.svg new file mode 100644 index 000000000..4a44be17d --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/cellcolor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/center.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/center.svg new file mode 100644 index 000000000..28dc13c5e --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/chart.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/chart.svg new file mode 100644 index 000000000..8705b7665 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/close.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/close.svg new file mode 100644 index 000000000..e5b1c23a6 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/color.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/color.svg new file mode 100644 index 000000000..2b84e88b4 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/download.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/download.svg new file mode 100644 index 000000000..1c7ea4ac7 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/exit-fullscreen.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/exit-fullscreen.svg new file mode 100644 index 000000000..7999e25d9 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/exit-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/format.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/format.svg new file mode 100644 index 000000000..aae6e6b90 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/format.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/highlight.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/highlight.svg new file mode 100644 index 000000000..c4b2e8b57 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/highlight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/hyperlink.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/hyperlink.svg new file mode 100644 index 000000000..45090f6f9 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/hyperlink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/image.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/image.svg new file mode 100644 index 000000000..7b4367828 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/italic.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/italic.svg new file mode 100644 index 000000000..73b2af523 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/italic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/left.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/left.svg new file mode 100644 index 000000000..b41d2b21f --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-dot-dot.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-dot-dot.svg new file mode 100644 index 000000000..30ab5ac80 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-dot-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-dot.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-dot.svg new file mode 100644 index 000000000..1958671e8 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-large-gap.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-large-gap.svg new file mode 100644 index 000000000..2e38e6041 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-large-gap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-small-gap.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-small-gap.svg new file mode 100644 index 000000000..88d6082f4 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dash-small-gap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dot.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dot.svg new file mode 100644 index 000000000..c08b5645d --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/line-double.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-double.svg new file mode 100644 index 000000000..2efe69f45 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-double.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/line-single.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-single.svg new file mode 100644 index 000000000..453d4faa4 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-single.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/line-wavy.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-wavy.svg new file mode 100644 index 000000000..bc0f47c85 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/line-wavy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/list.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/list.svg new file mode 100644 index 000000000..564897c6d --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/option.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/option.svg new file mode 100644 index 000000000..53b6caeb3 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/option.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/page-break.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/page-break.svg new file mode 100644 index 000000000..c40ec93c3 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/page-break.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/page-mode.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/page-mode.svg new file mode 100644 index 000000000..516f3a8b3 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/page-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/page-scale-add.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/page-scale-add.svg new file mode 100644 index 000000000..bcfa9a3d3 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/page-scale-add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/page-scale-minus.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/page-scale-minus.svg new file mode 100644 index 000000000..f85bf77b7 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/page-scale-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/painter.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/painter.svg new file mode 100644 index 000000000..a865d1d4c --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/painter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-direction.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-direction.svg new file mode 100644 index 000000000..ee90234fb --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-direction.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-margin.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-margin.svg new file mode 100644 index 000000000..6188f36e6 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-margin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-size.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-size.svg new file mode 100644 index 000000000..205a6aab9 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/paper-size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/preview.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/preview.svg new file mode 100644 index 000000000..9e36cb13c --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/preview.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/print.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/print.svg new file mode 100644 index 000000000..5ee44a0df --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/print.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/qrcode.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/qrcode.svg new file mode 100644 index 000000000..36775060e --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/qrcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/redo.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/redo.svg new file mode 100644 index 000000000..fc8833183 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/redo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/request-fullscreen.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/request-fullscreen.svg new file mode 100644 index 000000000..cf47c4a6a --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/request-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/right.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/right.svg new file mode 100644 index 000000000..eca464395 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/row-margin.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/row-margin.svg new file mode 100644 index 000000000..97f2baa05 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/row-margin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/save.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/save.svg new file mode 100644 index 000000000..0d0fb13ec --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/search.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/search.svg new file mode 100644 index 000000000..9d515dc7e --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/separator.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/separator.svg new file mode 100644 index 000000000..58225e9b5 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/separator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/size-add.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/size-add.svg new file mode 100644 index 000000000..aa1073c7c --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/size-add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/size-minus.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/size-minus.svg new file mode 100644 index 000000000..7bfa9588c --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/size-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/strikeout.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/strikeout.svg new file mode 100644 index 000000000..c2c83ca90 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/strikeout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/subscript.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/subscript.svg new file mode 100644 index 000000000..9ec06b7b8 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/subscript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/superscript.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/superscript.svg new file mode 100644 index 000000000..053bd3e92 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/superscript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/table.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/table.svg new file mode 100644 index 000000000..6a9eb22f9 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/table.svg @@ -0,0 +1,14 @@ + + + 编组 10 + + + + + + + + + + + diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/title.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/title.svg new file mode 100644 index 000000000..c13132005 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/title.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/underline.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/underline.svg new file mode 100644 index 000000000..dcd81b08e --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/underline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/undo.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/undo.svg new file mode 100644 index 000000000..820f8529d --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/undo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/upload.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/upload.svg new file mode 100644 index 000000000..7e2f5187e --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/assets/images/wordtpl/images/watermark.svg b/jeecgboot-vue3/src/assets/images/wordtpl/images/watermark.svg new file mode 100644 index 000000000..68de56583 --- /dev/null +++ b/jeecgboot-vue3/src/assets/images/wordtpl/images/watermark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jeecgboot-vue3/src/components/Description/src/useDescription.ts b/jeecgboot-vue3/src/components/Description/src/useDescription.ts index d1037d065..d1b3241fb 100644 --- a/jeecgboot-vue3/src/components/Description/src/useDescription.ts +++ b/jeecgboot-vue3/src/components/Description/src/useDescription.ts @@ -1,5 +1,5 @@ import type { DescriptionProps, DescInstance, UseDescReturnType } from './typing'; -import { ref, getCurrentInstance, unref } from 'vue'; +import { ref, getCurrentInstance, unref, onUnmounted } from 'vue'; import { isProdMode } from '/@/utils/env'; export function useDescription(props?: Partial): UseDescReturnType { @@ -10,9 +10,14 @@ export function useDescription(props?: Partial): UseDescReturn const loaded = ref(false); function register(instance: DescInstance) { - if (unref(loaded) && isProdMode()) { - return; - } + // update-begin--author:liaozhiyang---date:20251223---for:【pull/9125】在抽屉中配置destroy-on-close,再次打开未正确渲染 + isProdMode() && + onUnmounted(() => { + desc.value = null; + loaded.value = false; + }); + if (unref(loaded) && isProdMode() && instance === unref(desc)) return; + // update-end--author:liaozhiyang---date:20251223---for:【pull/9125】在抽屉中配置destroy-on-close,再次打开未正确渲染 desc.value = instance; props && instance.setDescProps(props); loaded.value = true; diff --git a/jeecgboot-vue3/src/components/Form/src/jeecg/components/JInput.vue b/jeecgboot-vue3/src/components/Form/src/jeecg/components/JInput.vue index 66cb1715d..dbb1d3989 100644 --- a/jeecgboot-vue3/src/components/Form/src/jeecg/components/JInput.vue +++ b/jeecgboot-vue3/src/components/Form/src/jeecg/components/JInput.vue @@ -17,6 +17,8 @@ type: propTypes.string.def(JInputTypeEnum.JINPUT_QUERY_LIKE), placeholder: propTypes.string.def(''), trim: propTypes.bool.def(false), + class: propTypes.string, + style: propTypes.object, }, emits: ['change', 'update:value'], setup(props, { emit }) { diff --git a/jeecgboot-vue3/src/components/Form/src/jeecg/components/JSearchSelect.vue b/jeecgboot-vue3/src/components/Form/src/jeecg/components/JSearchSelect.vue index 1e6cbed97..3d1a5042e 100644 --- a/jeecgboot-vue3/src/components/Form/src/jeecg/components/JSearchSelect.vue +++ b/jeecgboot-vue3/src/components/Form/src/jeecg/components/JSearchSelect.vue @@ -43,7 +43,9 @@ - {{ d?.text }} + + {{ d?.text || d?.label }} + @@ -91,6 +93,10 @@ type: Boolean, default: false }, + useDicColor: { + type: Boolean, + default: false, + }, }, emits: ['change', 'update:value'], setup(props, { emit, refs }) { @@ -534,4 +540,15 @@ }); - + diff --git a/jeecgboot-vue3/src/components/Form/src/jeecg/components/JSelectMultiple.vue b/jeecgboot-vue3/src/components/Form/src/jeecg/components/JSelectMultiple.vue index e69064f7d..558a0fc58 100644 --- a/jeecgboot-vue3/src/components/Form/src/jeecg/components/JSelectMultiple.vue +++ b/jeecgboot-vue3/src/components/Form/src/jeecg/components/JSelectMultiple.vue @@ -10,9 +10,11 @@ allowClear :getPopupContainer="getParentContainer" > - - {{ item.text || item.label }} - + + + diff --git a/jeecgboot-vue3/src/components/jeecg/JVxeTable/src/components/cells/JVxeInputCell.vue b/jeecgboot-vue3/src/components/jeecg/JVxeTable/src/components/cells/JVxeInputCell.vue index cb9869495..499150de3 100644 --- a/jeecgboot-vue3/src/components/jeecg/JVxeTable/src/components/cells/JVxeInputCell.vue +++ b/jeecgboot-vue3/src/components/jeecg/JVxeTable/src/components/cells/JVxeInputCell.vue @@ -3,7 +3,7 @@ + + diff --git a/jeecgboot-vue3/src/components/wordtpl/canvas-editor.js b/jeecgboot-vue3/src/components/wordtpl/canvas-editor.js new file mode 100644 index 000000000..b902dbcce --- /dev/null +++ b/jeecgboot-vue3/src/components/wordtpl/canvas-editor.js @@ -0,0 +1,20683 @@ +(function(){"use strict";try{if(typeof document!="undefined"){var e=document.createElement("style");e.id="canvas-editor-style",e.appendChild(document.createTextNode('.ce-select-control-popup{max-width:160px;min-width:69px;max-height:225px;position:absolute;z-index:1;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;box-shadow:0 2px 12px #0000001a;box-sizing:border-box;margin:5px 0;overflow-y:auto}.ce-select-control-popup ul{list-style:none;padding:3px 0;margin:0;box-sizing:border-box}.ce-select-control-popup ul li{font-size:13px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#666;height:36px;line-height:36px;box-sizing:border-box;cursor:pointer}.ce-select-control-popup ul li:hover{background-color:#eef2fd}.ce-select-control-popup ul li.active{color:var(--COLOR-HOVER, #5175f4);font-weight:700}.ce-date-container{display:none;width:300px;overflow:hidden;left:0;right:0;position:absolute;z-index:1;color:#606266;background:#ffffff;border-radius:4px;padding:10px;user-select:none;border:1px solid #e4e7ed;box-shadow:0 2px 12px #0000001a}.ce-date-container.active{display:block}.ce-date-wrap{display:none}.ce-date-wrap.active{display:block}.ce-date-title{display:flex;justify-content:center;align-items:center;text-align:center;color:#606266;font-size:16px}.ce-date-title>span{display:inline-block}.ce-date-title>span:not(.ce-date-title__now){font-family:cursive;cursor:pointer}.ce-date-title>span:not(.ce-date-title__now):hover{color:#5175f4}.ce-date-title .ce-date-title__pre-year,.ce-date-title .ce-date-title__pre-month{width:15%}.ce-date-title .ce-date-title__now{width:40%}.ce-date-title .ce-date-title__next-year,.ce-date-title .ce-date-title__next-month{width:15%}.ce-date-week{width:100%;display:flex;justify-content:center;margin-top:15px;padding-bottom:5px;border-bottom:1px solid #e4e7ed}.ce-date-week>span{list-style:none;width:calc(100%/7);text-align:center;color:#606266;font-size:14px}.ce-date-day{width:100%;display:flex;flex-wrap:wrap;align-items:center;margin-top:5px}.ce-date-day>div{width:calc(100%/7);height:40px;text-align:center;color:#606266;font-size:14px;cursor:pointer;line-height:40px;border-radius:4px}.ce-date-day>div:hover{color:#5175f4;opacity:.8}.ce-date-day>div.active{color:#5175f4;font-weight:700}.ce-date-day>div.disable{color:#c0c4cc}.ce-date-day>div.select{color:#fff;background-color:#5175f4}.ce-time-wrap{display:none;padding:10px;height:286px}.ce-time-wrap ::-webkit-scrollbar{width:0}.ce-time-wrap.active{display:flex}.ce-time-wrap li{list-style:none}.ce-time-wrap>li{width:33.3%;height:100%;text-align:center}.ce-time-wrap>li>span{transform:translateY(-5px);display:inline-block}.ce-time-wrap>li>ol{height:calc(100% - 20px);overflow-y:auto;border:1px solid #e2e2e2;position:relative}.ce-time-wrap>li:first-child>ol{border-right:0}.ce-time-wrap>li:last-child>ol{border-left:0}.ce-time-wrap>li>ol>li{line-height:30px;cursor:pointer;transition:all .3s}.ce-time-wrap>li>ol>li:hover{background-color:#eaeaea}.ce-time-wrap>li>ol>li.active{color:#fff;background:#5175F4}.ce-date-menu{width:100%;height:28px;display:flex;justify-content:flex-end;align-items:center;padding-top:10px;position:relative;border-top:1px solid #e4e7ed}.ce-date-menu button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;appearance:none;text-align:center;box-sizing:border-box;outline:none;transition:.1s;font-weight:500;user-select:none;padding:7px 15px;font-size:12px;border-radius:3px;margin:0 0 0 10px}.ce-date-menu button:hover{color:#5175f4;border-color:#5175f4}.ce-date-menu button.ce-date-menu__time{border:1px solid transparent;position:absolute;left:0;margin-left:0}.ce-date-menu button.ce-date-menu__time:hover{color:#5175f4}.ce-block-item{position:absolute;z-index:0;overflow:hidden;border-radius:8px;background-color:#fff;border:1px solid rgb(235 236 240)}.ce-table-tool__row{position:absolute;width:12px;border-radius:6.5px;overflow:hidden;background-color:#e2e6ed}.ce-table-tool__row .ce-table-tool__row__item{width:100%;position:relative}.ce-table-tool__row .ce-table-tool__row__item:after{content:"";position:absolute;bottom:0;left:2px;width:8px;height:1px;background-color:#c0c6cf}.ce-table-tool__row .ce-table-tool__row__item:last-child:after{display:none}.ce-table-tool__quick__add{width:16px;height:16px;position:absolute;border-radius:50%;background-color:#e2e6ed;cursor:pointer}.ce-table-tool__quick__add:after{content:"+";color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-55%)}.ce-table-tool__select{width:16px;height:18px;position:absolute;border-radius:3px;cursor:pointer}.ce-table-tool__select:hover{background-color:#e2e6ed}.ce-table-tool__select:after{content:":::";color:#aaaaab;position:absolute;top:50%;left:50%;transform:translate(-75%,-50%) rotate(-90deg)}.ce-table-tool__col{position:absolute;height:12px;border-radius:6.5px;overflow:hidden;background-color:#e2e6ed;display:flex}.ce-table-tool__col .ce-table-tool__col__item{height:100%;position:relative}.ce-table-tool__col .ce-table-tool__col__item:after{content:"";position:absolute;top:2px;left:-1px;width:1px;height:8px;z-index:1;background-color:#c0c6cf}.ce-table-tool__col .ce-table-tool__col__item:first-child:after{display:none}.ce-table-tool__row .ce-table-tool__row__item.active,.ce-table-tool__col .ce-table-tool__col__item.active{background-color:#c4d7fa}.ce-table-tool__col .ce-table-tool__anchor{right:-5px;width:10px;height:12px;z-index:9;position:absolute;cursor:col-resize}.ce-table-tool__row .ce-table-tool__anchor{bottom:-5px;left:0;width:12px;height:10px;z-index:9;position:absolute;cursor:row-resize}.ce-table-anchor__line{z-index:9;position:absolute;border:1px dotted #000000}.ce-table-tool__border{position:absolute;z-index:1;background:transparent;pointer-events:none}.ce-table-tool__border__row{position:absolute;cursor:row-resize;pointer-events:auto}.ce-table-tool__border__col{position:absolute;cursor:col-resize;pointer-events:auto}.ce-resizer-selection{position:absolute;border:1px solid;pointer-events:none}.ce-resizer-selection .resizer-handle{position:absolute;z-index:9;width:10px;height:10px;box-shadow:0 1px 4px #0000004d;border-radius:5px;border:2px solid #ffffff;box-sizing:border-box;pointer-events:initial}.ce-resizer-selection .handle-0{cursor:nw-resize}.ce-resizer-selection .handle-1{cursor:n-resize}.ce-resizer-selection .handle-2{cursor:ne-resize}.ce-resizer-selection .handle-3{cursor:e-resize}.ce-resizer-selection .handle-4{cursor:se-resize}.ce-resizer-selection .handle-5{cursor:s-resize}.ce-resizer-selection .handle-6{cursor:sw-resize}.ce-resizer-selection .handle-7{cursor:w-resize}.ce-resizer-size-view{display:flex;align-items:center;height:20px;white-space:nowrap;position:absolute;z-index:9;top:-30px;left:0;opacity:.9;background-color:#000;padding:0 5px;border-radius:4px}.ce-resizer-size-view span{color:#fff;font-size:12px}.ce-resizer-image{position:absolute;opacity:.5}.ce-image-previewer{position:fixed;left:0;top:0;z-index:1000;width:100%;height:100%;overflow:hidden;background:#f2f4f7;display:flex;align-items:center;justify-content:center;animation:previewerAnimation .3s}@keyframes previewerAnimation{0%{opacity:.1}to{opacity:1}}.ce-image-previewer .image-close{width:24px;height:24px;display:inline-block;position:absolute;right:50px;top:30px;z-index:99;cursor:pointer;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIzLjk3IDdsMS40MTUgMS40MTQtNy43NzkgNy43NzggNy43NzkgNy43NzktMS40MTQgMS40MTQtNy43NzktNy43NzktNy43NzggNy43NzlMNyAyMy45N2w3Ljc3OC03Ljc3OUw3IDguNDE0IDguNDE0IDdsNy43NzggNy43NzhMMjMuOTcxIDd6IiBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=) no-repeat;background-size:100% 100%;transition:all .3s;border-radius:50%}.ce-image-previewer .image-close:hover{background-color:#e2e6ed}.ce-image-previewer .ce-image-container{position:relative}.ce-image-previewer .ce-image-container img{cursor:move;position:relative}.ce-image-previewer .ce-image-menu{height:50px;position:absolute;bottom:50px;z-index:99;display:flex;align-items:center;justify-content:center}.ce-image-previewer .ce-image-menu i{width:32px;height:32px;margin:0 8px;cursor:pointer;display:inline-block;background-repeat:no-repeat;background-size:100% 100%;transition:all .3s;border-radius:50%}.ce-image-previewer .ce-image-menu i:hover{background-color:#e2e6ed}.ce-image-previewer .ce-image-menu i.zoom-in{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDE0di00aDJ2NGg0djJoLTR2NGgtMnYtNGgtNHYtMmg0em04Ljc0OSAxMC4xNjNBMTEuOTUyIDExLjk1MiAwIDAxMTUgMjdDOC4zNzMgMjcgMyAyMS42MjcgMyAxNVM4LjM3MyAzIDE1IDNzMTIgNS4zNzMgMTIgMTJjMCAyLjk1NC0xLjA2NyA1LjY1OC0yLjgzNyA3Ljc0OWw0LjkwOCA0LjkwOC0xLjQxNCAxLjQxNC00LjkwOC00LjkwOHpNMTUgMjVjNS41MjMgMCAxMC00LjQ3NyAxMC0xMFMyMC41MjMgNSAxNSA1IDUgOS40NzcgNSAxNXM0LjQ3NyAxMCAxMCAxMHoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.zoom-out{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIyLjc0OSAyNC4xNjNBMTEuOTUyIDExLjk1MiAwIDAxMTUgMjdDOC4zNzMgMjcgMyAyMS42MjcgMyAxNVM4LjM3MyAzIDE1IDNzMTIgNS4zNzMgMTIgMTJjMCAyLjk1NC0xLjA2NyA1LjY1OC0yLjgzNyA3Ljc0OWw0LjkwOCA0LjkwOC0xLjQxNCAxLjQxNC00LjkwOC00LjkwOHpNMTUgMjVjNS41MjMgMCAxMC00LjQ3NyAxMC0xMFMyMC41MjMgNSAxNSA1IDUgOS40NzcgNSAxNXM0LjQ3NyAxMCAxMCAxMHptLTUtMTFoMTB2MkgxMHYtMnoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.rotate{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTYgNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyYTExLjk3IDExLjk3IDAgMDEtNCA4Ljk0NFYyM2gtLjg2QTkuOTY4IDkuOTY4IDAgMDAyNiAxNmMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwUzYgMTAuNDc3IDYgMTZjMCA1LjE4NSAzLjk0NyA5LjQ0OSA5IDkuOTV2Mi4wMDlDOC44NCAyNy40NTEgNCAyMi4yOTEgNCAxNiA0IDkuMzczIDkuMzczIDQgMTYgNHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik0xOS44NzkgMjcuMzI4bDEuNzY3LTYuNzE3IDQuOTUgNC45NXoiLz48L2c+PC9zdmc+)}.ce-image-previewer .ce-image-menu i.original-size{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgNGgyNHYyNEg0VjR6bTIgMnYyMGgyMFY2SDZ6bTQgNWgydjEwaC0yVjExem01IDJoMnYyaC0ydi0yem0wIDRoMnYyaC0ydi0yem01LTZoMnYxMGgtMlYxMXoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.image-download{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAxNXYzLjVoMTVWMTVIMjF2NUgzdi01aDEuNXptOC4yMzItMTEuMjI2djkuMTk2bDQuMDUtNC4wNSAxLjA2IDEuMDYtNS44MzQgNS44MzQtNS44MzMtNS44MzMgMS4wNi0xLjA2IDMuOTk4IDMuOTk2VjMuNzc0aDEuNXoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-contextmenu-container{z-index:9;position:fixed;display:none;padding:4px;overflow-x:hidden;overflow-y:auto;background:#fff;box-shadow:0 2px 12px #38383833;border:1px solid #e2e6ed;border-radius:2px}.ce-contextmenu-content{display:flex;flex-direction:column}.ce-contextmenu-content .ce-contextmenu-sub-item:after{position:absolute;content:"";width:16px;height:16px;right:12px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDE2djE2SDB6Ii8+PGcgZmlsbD0iIzc2N0M4NSI+PHBhdGggZD0iTTcgMTIuMjQzbC0uNzA3LS43MDcgNC4yNDMtNC4yNDMuNzA3LjcwN3oiLz48cGF0aCBkPSJNNi4yOTMgNC40NjRMNyAzLjc1NyAxMS4yNDMgOGwtLjcwNy43MDd6Ii8+PC9nPjwvZz48L3N2Zz4=)}.ce-contextmenu-content .ce-contextmenu-item{min-width:140px;padding:0 32px 0 16px;height:30px;display:flex;align-items:center;white-space:nowrap;box-sizing:border-box;cursor:pointer}.ce-contextmenu-content .ce-contextmenu-item.hover{background:rgba(25,55,88,.04)}.ce-contextmenu-content .ce-contextmenu-item span{max-width:300px;font-size:12px;color:#3d4757;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ce-contextmenu-content .ce-contextmenu-item span.ce-shortcut{color:#767c85;height:30px;flex:1;text-align:right;line-height:30px;margin-left:20px}.ce-contextmenu-content .ce-contextmenu-item i{width:16px;height:16px;vertical-align:middle;display:inline-block;background-repeat:no-repeat;background-size:100% 100%;flex-shrink:0;margin-right:8px}.ce-contextmenu-divider{background-color:#e2e6ed;margin:4px 16px;height:1px}.ce-contextmenu-print{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiA0aC0xVjJINXYySDRWMmExIDEgMCAwMTEtMWg2YTEgMSAwIDAxMSAxdjJ6bTAgNXY0YTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY5aDF2NGg2VjloMXoiLz48cGF0aCBkPSJNMTIgMTJ2LTFoMlY1SDJ2NmgydjFIMmExIDEgMCAwMS0xLTFWNWExIDEgMCAwMTEtMWgxMmExIDEgMCAwMTEgMXY2YTEgMSAwIDAxLTEgMWgtMnoiLz48cGF0aCBkPSJNMyA4aDEwdjFIM3ptOC0yaDJ2MWgtMnoiLz48L2c+PC9zdmc+)}.ce-contextmenu-image{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLlm77lsYJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3Qwe2ZpbGw6IzNkNDc1N308L3N0eWxlPjxnIGlkPSJfeDMwXzAt5YWs5YWxX3gyRl8wMuW3peWFt+agj194MkZf5o+S5YWl5Zu+54mHLTE2cHgtIj48ZyBpZD0iR3JvdXAtMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPjxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZSIgY2xhc3M9InN0MCIgZD0iTTEgMGgxMmMuNiAwIDEgLjQgMSAxdjExYzAgLjYtLjQgMS0xIDFIMWMtLjYgMC0xLS40LTEtMVYxYzAtLjYuNC0xIDEtMXptMCAxdjExaDEyVjFIMXoiLz48Y2lyY2xlIGlkPSLmpK3lnIblvaIiIGNsYXNzPSJzdDAiIGN4PSIxMCIgY3k9IjQiIHI9IjEiLz48cGF0aCBpZD0iUGF0aCIgY2xhc3M9InN0MCIgZD0iTTguNSAxMS4ybC00LTQuMUwxIDEwLjdWOS4yYzEuNy0xLjYgMi43LTIuNSAzLTIuOC40LS41LjctLjQgMSAwTDguNSAxMCAxMSA3LjNjLjQtLjUuNi0uNSAxLS4xbDIgMi44djEuNWwtMi41LTMuNC0zIDMuMXoiLz48L2c+PC9nPjwvc3ZnPg==)}.ce-contextmenu-image-change{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDQpIiBmaWxsPSIjM0Q0NzU3Ij48Y2lyY2xlIGZpbGwtcnVsZT0ibm9uemVybyIgY3g9IjMiIGN5PSIxIiByPSIxIi8+PHBhdGggZD0iTTcuNDczIDguMjIzTDMuNDcgNC4xMDcgMCA3LjY2N3YtMS41QzEuNzE1IDQuNiAyLjcwNyAzLjY2NCAyLjk3NSAzLjM1OGMuNDAyLS40NTcuNjUxLS4zOSAxLjA0MiAwTDcuNDczIDcgOS45NiA0LjM0OWMuNDE0LS40NjIuNjItLjQ2MiAxLjAxMS0uMDcxTDEzIDcuMDZ2MS41bC0yLjUxLTMuNDEtMy4wMTcgMy4wNzJ6Ii8+PC9nPjxwYXRoIGQ9Ik02IDEuNUgxLjV2MTJoMTN2LTRWMTNhLjUuNSAwIDAxLS41LjVIMmEuNS41IDAgMDEtLjUtLjVWMmEuNS41IDAgMDEuNS0uNWg0em04LjUgOFY2bC0uNS41aDFsLS41LS41djMuNXpNNiAxLjVoNEw5LjUgMXYxbC41LS41SDZ6IiBzdHJva2U9IiMzRDQ3NTciLz48cGF0aCBkPSJNMTMuMDg1IDEuMzE2bC0zLjgxNCA0YTEgMSAwIDAwMS40NTggMS4zNjhsMy44MTUtNGExIDEgMCAxMC0xLjQ1OS0xLjM2OHoiIGZpbGw9IiMzRDQ3NTciIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-insert-row-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik04LjUgNS41aDZ2NGgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNCA3djFoMlY3em0tMyAuNUw0IDV2NXpNMSAxaDEydjFIMXptMCAxMmgxMnYxSDF6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-top-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNOCA1SDd2M2gxem0tLjUtM0wxMCA1SDV6Ii8+PHJlY3Qgc3Ryb2tlPSIjM0Q0NzU3IiB4PSIxLjUiIHk9IjEwLjUiIHdpZHRoPSIxMiIgaGVpZ2h0PSIzIiByeD0iMSIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-insert-bottom-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNyAxMWgxVjhIN3ptLjUgM0w1IDExaDV6Ii8+PHJlY3Qgc3Ryb2tlPSIjM0Q0NzU3IiB4PSIxLjUiIHk9IjIuNSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjMiIHJ4PSIxIi8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-left-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMTEgN3YxaDNWN3ptLTMgLjVMMTEgNXY1eiIvPjxyZWN0IHN0cm9rZT0iIzNENDc1NyIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNCA3LjUpIiB4PSItMiIgeT0iNiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjMiIHJ4PSIxIi8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-right-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNSA4VjdIMnYxem0zLS41TDUgMTBWNXoiLz48cmVjdCBzdHJva2U9IiMzRDQ3NTciIHRyYW5zZm9ybT0icm90YXRlKDkwIDEyIDcuNSkiIHg9IjYiIHk9IjYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIzIiByeD0iMSIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-row-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik04LjUgNi41aDZ2MmgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMiAxMmgxMXYxSDJ6TTIgMmgxMXYxSDJ6bS42MyAzTDcgOS4zNWwtLjYzNS42NUwyIDUuNjN6Ii8+PHBhdGggZmlsbD0iIzNENDc1NyIgZD0iTTIgOS4zNjNMNi4zNTUgNSA3IDUuNzA3IDIuNjk1IDEweiIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik04LjUgNS41aDZ2NGgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMSAxM2gxMnYxSDF6TTEgMWgxMnYxSDF6bTAgNGgxdjFIMXptMSAxaDF2MUgyem0xIDFoMXYxSDN6bTEtMWgxdjFINHptMS0xaDF2MUg1ek00IDhoMXYxSDR6TTIgOGgxdjFIMnptMyAxaDF2MUg1ek0xIDloMXYxSDF6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-delete-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik01LjUgNy41di02aDR2NnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMTMgMTVWM2gxdjEyek0xIDE1VjNoMXYxMnptNCAwdi0xaDF2MXptMS0xdi0xaDF2MXptMS0xdi0xaDF2MXptLTEtMXYtMWgxdjF6bS0xLTF2LTFoMXYxem0zIDF2LTFoMXYxem0wIDJ2LTFoMXYxem0xLTN2LTFoMXYxem0wIDR2LTFoMXYxeiIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-table{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgMTNoLTF2LTNIMnYzSDF2LTNhMSAxIDAgMDExLTFoMTFhMSAxIDAgMDExIDF2M3oiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik01LjYyNSAyTDEwIDYuMzc1IDkuMzc1IDcgNSAyLjYyNXoiLz48cGF0aCBkPSJNNSA2LjM3NUw5LjM3NSAybC42MjUuNjI1TDUuNjI1IDd6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-merge-cell{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNiAxdjFIMnYxMWg0djFIMmExIDEgMCAwMS0xLTFWMmExIDEgMCAwMTEtMWg0em0zIDBoNGExIDEgMCAwMTEgMXYxMWExIDEgMCAwMS0xIDFIOXYtMWg0VjJIOVYxeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTYgMWgxdjRINnptMiAwaDF2NEg4eiIvPjxwYXRoIGQ9Ik04IDcuNUwxMCA2djN6bS0xIDBMNSA2djN6Ii8+PHBhdGggZD0iTTkgN2gzdjFIOXpNMyA3aDN2MUgzeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTggMTBoMXY0SDh6bS0yIDBoMXY0SDZ6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-merge-cancel-cell{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNiAxdjFIMnYxMWg0djFIMmExIDEgMCAwMS0xLTFWMmExIDEgMCAwMTEtMWg0em0zIDBoNGExIDEgMCAwMTEgMXYxMWExIDEgMCAwMS0xIDFIOXYtMWg0VjJIOVYxeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTYgMWgxdjRINnptMiAwaDF2NEg4eiIvPjxwYXRoIGQ9Ik0zIDcuNUw1IDZ2M3ptOSAwTDEwIDZ2M3oiLz48cGF0aCBkPSJNNCA3aDN2MUg0em00IDBoM3YxSDh6Ii8+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOCAxMGgxdjRIOHptLTIgMGgxdjRINnoiLz48L2c+PC9zdmc+)}.ce-contextmenu-vertical-align{background-image:url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMiAxM2gxMnYxSDJ6bTAtM2g4djFIMnptMC0zaDEydjFIMnptMC02aDEydjFIMnptMCAzaDh2MUgyeiIgZmlsbD0iIzNkNDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-top{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTggOEg3djZoMXptLS41LTNMMTAgOEg1ek0yIDNoMTF2MUgyeiIgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-middle{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOCAxMkg3djNoMXptLS41LTNsMi41IDNINXpNNyAzaDFWMEg3em0uNSAzTDUgM2g1ek0yIDdoMTF2MUgyeiIgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-bottom{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgOWgxVjNIN3ptLjUgM0w1IDloNXpNMiAxM2gxMXYxSDJ6IiBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ce-contextmenu-border-all{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iIzNENDc1NyIvPjxwYXRoIGZpbGw9IiMzRDQ3NTciIGQ9Ik0zIDhoMTF2MUgzeiIvPjxwYXRoIGZpbGw9IiMzRDQ3NTciIGQ9Ik05IDN2MTFIOFYzeiIvPjwvc3ZnPg==)}.ce-contextmenu-border-empty{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMyAzaC0xVjJoMWExIDEgMCAwMTEgMXYxaC0xVjN6bS0zLTF2MUg4LjV2MmgtMVYzSDZWMmg0ek00IDJ2MUgzdjFIMlYzYTEgMSAwIDAxMS0xaDF6TTIgNmgxdjEuNWgydjFIM1YxMEgyVjZ6bTAgNmgxdjFoMXYxSDNhMSAxIDAgMDEtMS0xdi0xem00IDJ2LTFoMS41di0yaDF2MkgxMHYxSDZ6bTYgMHYtMWgxdi0xaDF2MWExIDEgMCAwMS0xIDFoLTF6bTItNGgtMVY4LjVoLTJ2LTFoMlY2aDF2NHpNOC41IDcuNXYtMWgtMXYxaC0xdjFoMXYxaDF2LTFoMXYtMWgtMXoiIGZpbGw9IiNBQUFDQjAiLz48L3N2Zz4=)}.ce-contextmenu-border-external{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iIzNENDc1NyIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOSA1VjNIOHYyaDF6bTAgOXYtMkg4djJoMXpNNSA4SDN2MWgyVjh6bTkgMGgtMnYxaDJWOHpNOSA3djFoMXYxSDl2MUg4VjlIN1Y4aDFWN2gxeiIgZmlsbD0iI0FBQUNCMCIvPjwvc3ZnPg==)}.ce-contextmenu-border-td{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgZD0iTTguNSAyLjUgdjYgaC02Ii8+PC9zdmc+)}.ce-contextmenu-border-td-top{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMi41IDMgaDEyIi8+PC9zdmc+)}.ce-contextmenu-border-td-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMyAzIHYxMSIvPjwvc3ZnPg==)}.ce-contextmenu-border-td-bottom{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMi41IDE0IGgxMiIvPjwvc3ZnPg==)}.ce-contextmenu-border-td-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTQgMyB2MTEiLz48L3N2Zz4=)}.ce-contextmenu-border-td-forward{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIgLz48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik0xNCAzIGwtMTEgMTEiIC8+PC9zdmc+)}.ce-contextmenu-border-td-back{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIgLz48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik0zIDMgbDExIDExIiAvPjwvc3ZnPg==)}.ce-hyperlink-popup{background:#fff;box-shadow:0 2px 12px #626b8433;border-radius:2px;color:#3d4757;padding:12px 16px;position:absolute;z-index:1;text-align:center;display:none}.ce-hyperlink-popup a{min-width:100px;max-width:300px;font-size:12px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;text-decoration:none;border-bottom-width:1px;border-bottom-style:solid;color:#00f}.ce-zone-indicator>div{padding:3px 6px;color:#000;font-size:12px;background:rgb(218 231 252);position:absolute;transform-origin:0 0}.ce-zone-indicator-border__top,.ce-zone-indicator-border__bottom,.ce-zone-indicator-border__left,.ce-zone-indicator-border__right{display:block;position:absolute;z-index:0}.ce-zone-indicator-border__top{border-top:2px dashed rgb(238,238,238)}.ce-zone-indicator-border__bottom{border-top:2px dashed rgb(238,238,238);width:100%}.ce-zone-indicator-border__left{border-left:2px dashed rgb(238,238,238)}.ce-zone-indicator-border__right{border-right:2px dashed rgb(238,238,238)}.ce-zone-tip{display:none;align-items:center;height:30px;white-space:nowrap;position:fixed;opacity:.9;background-color:#000;padding:0 5px;border-radius:4px;z-index:9;transition:all .3s;outline:none;user-select:none;pointer-events:none;transform:translate(10px,10px)}.ce-zone-tip.show{display:flex}.ce-zone-tip span{color:#fff;font-size:12px}.ce-inputarea{width:100px;height:30px;min-width:0;min-height:0;margin:0;padding:0;left:0;right:0;letter-spacing:0;font-size:12px;position:absolute;z-index:-1;outline:none;resize:none;border:none;overflow:hidden;color:transparent;user-select:none;caret-color:transparent;background-color:transparent}.ce-cursor{width:1px;height:20px;left:0;right:0;position:absolute;outline:none;background-color:#000;pointer-events:none}.ce-cursor.ce-cursor--animation{animation-duration:1s;animation-iteration-count:infinite;animation-name:cursorAnimation}@keyframes cursorAnimation{0%{opacity:1}13%{opacity:0}50%{opacity:0}63%{opacity:1}to{opacity:1}}.ce-float-image{position:absolute;opacity:.5;pointer-events:none}')),document.head.appendChild(e)}}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})(); +var index = ""; +const version = "0.9.94"; +var MaxHeightRatio; +(function(MaxHeightRatio2) { + MaxHeightRatio2["HALF"] = "half"; + MaxHeightRatio2["ONE_THIRD"] = "one-third"; + MaxHeightRatio2["QUARTER"] = "quarter"; +})(MaxHeightRatio || (MaxHeightRatio = {})); +var NumberType; +(function(NumberType2) { + NumberType2["ARABIC"] = "arabic"; + NumberType2["CHINESE"] = "chinese"; +})(NumberType || (NumberType = {})); +var ImageDisplay; +(function(ImageDisplay2) { + ImageDisplay2["INLINE"] = "inline"; + ImageDisplay2["BLOCK"] = "block"; + ImageDisplay2["SURROUND"] = "surround"; + ImageDisplay2["FLOAT_TOP"] = "float-top"; + ImageDisplay2["FLOAT_BOTTOM"] = "float-bottom"; +})(ImageDisplay || (ImageDisplay = {})); +var LocationPosition; +(function(LocationPosition2) { + LocationPosition2["BEFORE"] = "before"; + LocationPosition2["AFTER"] = "after"; +})(LocationPosition || (LocationPosition = {})); +const ZERO = "\u200B"; +const WRAP = "\n"; +const NBSP = " "; +const NON_BREAKING_SPACE = " "; +const PUNCTUATION_LIST = [ + "\xB7", + "\u3001", + ":", + "\uFF1A", + ",", + "\uFF0C", + ".", + "\u3002", + ";", + "\uFF1B", + "?", + "\uFF1F", + "!", + "\uFF01" +]; +const maxHeightRadioMapping = { + [MaxHeightRatio.HALF]: 1 / 2, + [MaxHeightRatio.ONE_THIRD]: 1 / 3, + [MaxHeightRatio.QUARTER]: 1 / 4 +}; +const LETTER_CLASS = { + ENGLISH: "A-Za-z", + SPANISH: "A-Za-z\xC1\xC9\xCD\xD3\xDA\xE1\xE9\xED\xF3\xFA\xD1\xF1\xDC\xFC", + FRENCH: "A-Za-z\xC0\xC2\xC7\xE0\xE2\xE7\xC9\xE9\xC8\xE8\xCA\xEA\xCB\xEB\xCE\xEE\xCF\xEF\xD4\xF4\xD9\xF9\xDB\xFB\u0178\xFF", + GERMAN: "A-Za-z\xC4\xE4\xD6\xF6\xDC\xFC\xDF", + RUSSIAN: "\u0410-\u042F\u0430-\u044F\u0401\u0451", + PORTUGUESE: "A-Za-z\xC1\xC9\xCD\xD3\xDA\xE1\xE9\xED\xF3\xFA\xC3\xD5\xE3\xF5\xC7\xE7", + ITALIAN: "A-Za-z\xC0\xE0\xC8\xE8\xC9\xE9\xCC\xEC\xCD\xED\xCE\xEE\xD3\xF3\xD2\xF2\xD9\xF9", + DUTCH: "A-Za-z\xC0\xE0\xC1\xE1\xC2\xE2\xC4\xE4\xC8\xE8\xC9\xE9\xCA\xEA\xCB\xEB\xCC\xEC\xCD\xED\xCE\xEE\xCF\xEF\xD3\xF3\xD2\xF2\xD4\xF4\xD6\xF6\xD9\xF9\xDB\xFB\xDC\xFC", + SWEDISH: "A-Za-z\xC5\xE5\xC4\xE4\xD6\xF6", + GREEK: "\u0391\u03B1\u0392\u03B2\u0393\u03B3\u0394\u03B4\u0395\u03B5\u0396\u03B6\u0397\u03B7\u0398\u03B8\u0399\u03B9\u039A\u03BA\u039B\u03BB\u039C\u03BC\u039D\u03BD\u039E\u03BE\u039F\u03BF\u03A0\u03C0\u03A1\u03C1\u03A3\u03C3\u03C2\u03A4\u03C4\u03A5\u03C5\u03A6\u03C6\u03A7\u03C7\u03A8\u03C8\u03A9\u03C9" +}; +const METRICS_BASIS_TEXT = "\u65E5"; +var RowFlex; +(function(RowFlex2) { + RowFlex2["LEFT"] = "left"; + RowFlex2["CENTER"] = "center"; + RowFlex2["RIGHT"] = "right"; + RowFlex2["ALIGNMENT"] = "alignment"; + RowFlex2["JUSTIFY"] = "justify"; +})(RowFlex || (RowFlex = {})); +const NUMBER_LIKE_REG = /[0-9.]/; +const SURROGATE_PAIR_REG = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; +const EMOJI_REG = /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; +const UNICODE_SYMBOL_REG = new RegExp(`${EMOJI_REG.source}|${SURROGATE_PAIR_REG.source}`, "g"); +const PUNCTUATION_REG = /[、,。?!;:……「」“”‘’*()【】〔〕〖〗〘〙〚〛《》———﹝﹞–—\\/·.,!?;:`~<>()[\]{}'"|]/; +const START_LINE_BREAK_REG = new RegExp(`^[${ZERO} +]`); +function debounce(func, delay) { + let timer; + return function(...args) { + if (timer) { + window.clearTimeout(timer); + } + timer = window.setTimeout(() => { + func.apply(this, args); + }, delay); + }; +} +function throttle(func, delay) { + let lastExecTime = 0; + let timer; + return function(...args) { + const currentTime = Date.now(); + if (currentTime - lastExecTime >= delay) { + window.clearTimeout(timer); + func.apply(this, args); + lastExecTime = currentTime; + } else { + window.clearTimeout(timer); + timer = window.setTimeout(() => { + func.apply(this, args); + lastExecTime = currentTime; + }, delay); + } + }; +} +function deepCloneOmitKeys(obj, omitKeys) { + if (!obj || typeof obj !== "object") { + return obj; + } + let newObj = {}; + if (Array.isArray(obj)) { + newObj = obj.map((item) => deepCloneOmitKeys(item, omitKeys)); + } else { + Object.keys(obj).forEach((key) => { + if (omitKeys.includes(key)) + return; + return newObj[key] = deepCloneOmitKeys(obj[key], omitKeys); + }); + } + return newObj; +} +function deepClone(obj) { + if (!obj || typeof obj !== "object") { + return obj; + } + let newObj = {}; + if (Array.isArray(obj)) { + newObj = obj.map((item) => deepClone(item)); + } else { + Object.keys(obj).forEach((key) => { + return newObj[key] = deepClone(obj[key]); + }); + } + return newObj; +} +function isBody(node) { + return node && node.nodeType === 1 && node.tagName.toLowerCase() === "body"; +} +function findParent(node, filterFn, includeSelf) { + if (node && !isBody(node)) { + node = includeSelf ? node : node.parentNode; + while (node) { + if (!filterFn || filterFn(node) || isBody(node)) { + return filterFn && !filterFn(node) && isBody(node) ? null : node; + } + node = node.parentNode; + } + } + return null; +} +function getUUID() { + function S4() { + return ((1 + Math.random()) * 65536 | 0).toString(16).substring(1); + } + return S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4(); +} +function splitText(text) { + const data2 = []; + if (Intl.Segmenter) { + const segmenter = new Intl.Segmenter(); + const segments = segmenter.segment(text); + for (const { segment } of segments) { + data2.push(segment); + } + } else { + const symbolMap = /* @__PURE__ */ new Map(); + for (const match of text.matchAll(UNICODE_SYMBOL_REG)) { + symbolMap.set(match.index, match[0]); + } + let t = 0; + while (t < text.length) { + const symbol = symbolMap.get(t); + if (symbol) { + data2.push(symbol); + t += symbol.length; + } else { + data2.push(text[t]); + t++; + } + } + } + return data2; +} +function downloadFile(href, fileName) { + const a = document.createElement("a"); + a.href = href; + a.download = fileName; + a.click(); +} +function threeClick$1(dom, fn) { + nClickEvent(3, dom, fn); +} +function nClickEvent(n, dom, fn) { + let count = 0; + let lastTime = 0; + const handler = function(evt) { + const currentTime = new Date().getTime(); + count = currentTime - lastTime < 300 ? count + 1 : 0; + lastTime = new Date().getTime(); + if (count >= n - 1) { + fn(evt); + count = 0; + } + }; + dom.addEventListener("click", handler); +} +function isObject(type) { + return Object.prototype.toString.call(type) === "[object Object]"; +} +function isArray(type) { + return Array.isArray(type); +} +function mergeObject(source, target) { + if (isObject(source) && isObject(target)) { + const objectTarget = target; + for (const [key, val] of Object.entries(source)) { + if (!objectTarget[key]) { + objectTarget[key] = val; + } else { + objectTarget[key] = mergeObject(val, objectTarget[key]); + } + } + } else if (isArray(source) && isArray(target)) { + target.push(...source); + } + return target; +} +function nextTick(fn) { + setTimeout(() => { + fn(); + }, 0); +} +function convertNumberToChinese(num) { + const chineseNum = [ + "\u96F6", + "\u4E00", + "\u4E8C", + "\u4E09", + "\u56DB", + "\u4E94", + "\u516D", + "\u4E03", + "\u516B", + "\u4E5D" + ]; + const chineseUnit = [ + "", + "\u5341", + "\u767E", + "\u5343", + "\u4E07", + "\u5341", + "\u767E", + "\u5343", + "\u4EBF", + "\u5341", + "\u767E", + "\u5343", + "\u4E07", + "\u5341", + "\u767E", + "\u5343", + "\u4EBF" + ]; + if (!num || isNaN(num)) + return "\u96F6"; + const numStr = num.toString().split(""); + let result = ""; + for (let i = 0; i < numStr.length; i++) { + const desIndex = numStr.length - 1 - i; + result = `${chineseUnit[i]}${result}`; + result = `${chineseNum[Number(numStr[desIndex])]}${result}`; + } + result = result.replace(/零(千|百|十)/g, "\u96F6").replace(/十零/g, "\u5341"); + result = result.replace(/零+/g, "\u96F6"); + result = result.replace(/零亿/g, "\u4EBF").replace(/零万/g, "\u4E07"); + result = result.replace(/亿万/g, "\u4EBF"); + result = result.replace(/零+$/, ""); + result = result.replace(/^一十/g, "\u5341"); + return result; +} +function cloneProperty(properties, sourceElement, targetElement) { + for (let i = 0; i < properties.length; i++) { + const property = properties[i]; + const value = sourceElement[property]; + if (value !== void 0) { + targetElement[property] = value; + } else { + delete targetElement[property]; + } + } +} +function pickObject(object, pickKeys) { + const newObject = {}; + for (const key in object) { + if (pickKeys.includes(key)) { + newObject[key] = object[key]; + } + } + return newObject; +} +function omitObject(object, omitKeys) { + const newObject = {}; + for (const key in object) { + if (!omitKeys.includes(key)) { + newObject[key] = object[key]; + } + } + return newObject; +} +function convertStringToBase64(input2) { + const encoder = new TextEncoder(); + const data2 = encoder.encode(input2); + const charArray = Array.from(data2, (byte) => String.fromCharCode(byte)); + const base64 = window.btoa(charArray.join("")); + return base64; +} +function findScrollContainer(element) { + let parent = element.parentElement; + while (parent) { + const style = window.getComputedStyle(parent); + const overflowY = style.getPropertyValue("overflow-y"); + if (parent.scrollHeight > parent.clientHeight && (overflowY === "auto" || overflowY === "scroll")) { + return parent; + } + parent = parent.parentElement; + } + return document.documentElement; +} +function isArrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + return !arr1.some((item) => !arr2.includes(item)); +} +function isObjectEqual(obj1, obj2) { + if (!isObject(obj1) || !isObject(obj2)) + return false; + const obj1Keys = Object.keys(obj1); + const obj2Keys = Object.keys(obj2); + if (obj1Keys.length !== obj2Keys.length) { + return false; + } + return !obj1Keys.some((key) => obj2[key] !== obj1[key]); +} +function isRectIntersect(rect1, rect2) { + const rect1Left = rect1.x; + const rect1Right = rect1.x + rect1.width; + const rect1Top = rect1.y; + const rect1Bottom = rect1.y + rect1.height; + const rect2Left = rect2.x; + const rect2Right = rect2.x + rect2.width; + const rect2Top = rect2.y; + const rect2Bottom = rect2.y + rect2.height; + if (rect1Left > rect2Right || rect1Right < rect2Left || rect1Top > rect2Bottom || rect1Bottom < rect2Top) { + return false; + } + return true; +} +const CURSOR_AGENT_OFFSET_HEIGHT = 12; +const defaultCursorOption = { + width: 1, + color: "#000000", + dragWidth: 2, + dragColor: "#0000FF" +}; +const EDITOR_COMPONENT = "editor-component"; +const EDITOR_PREFIX = "ce"; +const EDITOR_CLIPBOARD = `${EDITOR_PREFIX}-clipboard`; +var MoveDirection; +(function(MoveDirection2) { + MoveDirection2["UP"] = "top"; + MoveDirection2["DOWN"] = "down"; + MoveDirection2["LEFT"] = "left"; + MoveDirection2["RIGHT"] = "right"; +})(MoveDirection || (MoveDirection = {})); +var ElementType; +(function(ElementType2) { + ElementType2["TEXT"] = "text"; + ElementType2["IMAGE"] = "image"; + ElementType2["TABLE"] = "table"; + ElementType2["HYPERLINK"] = "hyperlink"; + ElementType2["SUPERSCRIPT"] = "superscript"; + ElementType2["SUBSCRIPT"] = "subscript"; + ElementType2["SEPARATOR"] = "separator"; + ElementType2["PAGE_BREAK"] = "pageBreak"; + ElementType2["CONTROL"] = "control"; + ElementType2["CHECKBOX"] = "checkbox"; + ElementType2["RADIO"] = "radio"; + ElementType2["LATEX"] = "latex"; + ElementType2["TAB"] = "tab"; + ElementType2["DATE"] = "date"; + ElementType2["BLOCK"] = "block"; + ElementType2["TITLE"] = "title"; + ElementType2["LIST"] = "list"; +})(ElementType || (ElementType = {})); +const EDITOR_ELEMENT_STYLE_ATTR = [ + "bold", + "color", + "highlight", + "font", + "size", + "italic", + "underline", + "strikeout", + "textDecoration" +]; +const EDITOR_ROW_ATTR = ["rowFlex", "rowMargin"]; +const EDITOR_ELEMENT_COPY_ATTR = [ + "type", + "font", + "size", + "bold", + "color", + "italic", + "highlight", + "underline", + "strikeout", + "rowFlex", + "url", + "hyperlinkId", + "dateId", + "dateFormat", + "groupIds", + "rowMargin", + "textDecoration" +]; +const EDITOR_ELEMENT_ZIP_ATTR = [ + "type", + "font", + "size", + "bold", + "color", + "lineWidth", + "italic", + "highlight", + "underline", + "strikeout", + "rowFlex", + "rowMargin", + "dashArray", + "trList", + "borderType", + "width", + "height", + "url", + "colgroup", + "valueList", + "control", + "checkbox", + "radio", + "dateFormat", + "block", + "level", + "title", + "listType", + "listStyle", + "listWrap", + "groupIds", + "conceptId", + "imgDisplay", + "imgFloatPosition", + "textDecoration", + "extension", + "externalId" +]; +const TABLE_TD_ZIP_ATTR = [ + "conceptId", + "extension", + "externalId", + "verticalAlign", + "backgroundColor", + "borderTypes", + "slashTypes" +]; +const TABLE_CONTEXT_ATTR = [ + "tdId", + "trId", + "tableId" +]; +const TITLE_CONTEXT_ATTR = [ + "level", + "titleId", + "title" +]; +const LIST_CONTEXT_ATTR = [ + "listId", + "listType", + "listStyle" +]; +const CONTROL_CONTEXT_ATTR = [ + "control", + "controlId", + "controlComponent" +]; +const CONTROL_STYLE_ATTR = [ + "font", + "size", + "bold", + "highlight", + "italic", + "strikeout" +]; +const EDITOR_ELEMENT_CONTEXT_ATTR = [ + ...TABLE_CONTEXT_ATTR, + ...TITLE_CONTEXT_ATTR, + ...LIST_CONTEXT_ATTR +]; +const TEXTLIKE_ELEMENT_TYPE = [ + ElementType.TEXT, + ElementType.HYPERLINK, + ElementType.SUBSCRIPT, + ElementType.SUPERSCRIPT, + ElementType.CONTROL, + ElementType.DATE +]; +const IMAGE_ELEMENT_TYPE = [ + ElementType.IMAGE, + ElementType.LATEX +]; +const BLOCK_ELEMENT_TYPE = [ + ElementType.BLOCK, + ElementType.PAGE_BREAK, + ElementType.SEPARATOR, + ElementType.TABLE +]; +const INLINE_NODE_NAME = ["HR", "TABLE", "UL", "OL"]; +const VIRTUAL_ELEMENT_TYPE = [ + ElementType.TITLE, + ElementType.LIST +]; +class ImageParticle { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.container = draw.getContainer(); + this.imageCache = /* @__PURE__ */ new Map(); + this.floatImageContainer = null; + this.floatImage = null; + } + createFloatImage(element) { + const { scale } = this.options; + let floatImageContainer = this.floatImageContainer; + let floatImage = this.floatImage; + if (!floatImageContainer) { + floatImageContainer = document.createElement("div"); + floatImageContainer.classList.add(`${EDITOR_PREFIX}-float-image`); + this.container.append(floatImageContainer); + this.floatImageContainer = floatImageContainer; + } + if (!floatImage) { + floatImage = document.createElement("img"); + floatImageContainer.append(floatImage); + this.floatImage = floatImage; + } + floatImageContainer.style.display = "none"; + floatImage.style.width = `${element.width * scale}px`; + floatImage.style.height = `${element.height * scale}px`; + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const preY = this.draw.getPageNo() * (height + pageGap); + const imgFloatPosition = element.imgFloatPosition; + floatImageContainer.style.left = `${imgFloatPosition.x}px`; + floatImageContainer.style.top = `${preY + imgFloatPosition.y}px`; + floatImage.src = element.value; + } + dragFloatImage(movementX, movementY) { + if (!this.floatImageContainer) + return; + this.floatImageContainer.style.display = "block"; + const x = parseFloat(this.floatImageContainer.style.left) + movementX; + const y = parseFloat(this.floatImageContainer.style.top) + movementY; + this.floatImageContainer.style.left = `${x}px`; + this.floatImageContainer.style.top = `${y}px`; + } + destroyFloatImage() { + if (this.floatImageContainer) { + this.floatImageContainer.style.display = "none"; + } + } + addImageObserver(promise) { + this.draw.getImageObserver().add(promise); + } + getFallbackImage(width, height) { + const tileSize = 8; + const x = (width - Math.ceil(width / tileSize) * tileSize) / 2; + const y = (height - Math.ceil(height / tileSize) * tileSize) / 2; + const svg = ` + + + + + + + + `; + const fallbackImage = new Image(); + fallbackImage.src = `data:image/svg+xml;base64,${convertStringToBase64(svg)}`; + return fallbackImage; + } + render(ctx, element, x, y) { + const { scale } = this.options; + const width = element.width * scale; + const height = element.height * scale; + if (this.imageCache.has(element.id)) { + const img = this.imageCache.get(element.id); + ctx.drawImage(img, x, y, width, height); + } else { + const imageLoadPromise = new Promise((resolve, reject) => { + const img = new Image(); + img.setAttribute("crossOrigin", "Anonymous"); + img.src = element.value; + img.onload = () => { + this.imageCache.set(element.id, img); + resolve(element); + if (element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) { + this.draw.render({ + isCompute: false, + isSetCursor: false, + isSubmitHistory: false + }); + } else { + ctx.drawImage(img, x, y, width, height); + } + }; + img.onerror = (error) => { + const fallbackImage = this.getFallbackImage(width, height); + fallbackImage.onload = () => { + ctx.drawImage(fallbackImage, x, y, width, height); + this.imageCache.set(element.id, fallbackImage); + }; + reject(error); + }; + }); + this.addImageObserver(imageLoadPromise); + } + } +} +const ordR = "R".charCodeAt(0); +function HERSHEY(i) { + if (data[i] == null) { + compile(i); + } + return data[i]; +} +function compile(i) { + const entry = raw[i]; + if (entry == null) { + return; + } + const bound = entry.substring(3, 5); + const xmin = 1 * bound.charCodeAt(0) - ordR; + const xmax = 1 * bound.charCodeAt(1) - ordR; + const content = entry.substring(5); + const polylines = [[]]; + let ymin = Infinity; + let ymax = -Infinity; + let zmin = Infinity; + let zmax = -Infinity; + let j = 0; + while (j < content.length) { + const digit = content.substring(j, j + 2); + if (digit == " R") { + polylines.push([]); + } else { + const x = digit.charCodeAt(0) - ordR - xmin; + const y = digit.charCodeAt(1) - ordR; + ymin = Math.min(y, ymin); + ymax = Math.max(y, ymax); + zmin = Math.min(x, zmin); + zmax = Math.max(x, zmax); + polylines[polylines.length - 1].push([x, y]); + } + j += 2; + } + data[i] = { + w: xmax - xmin, + xmin: zmin, + xmax: zmax, + ymin, + ymax, + polylines + }; +} +const data = {}; +const raw = { + 1: " 9MWRMNV RRMVV RPSTS", + 2: " 16MWOMOV ROMSMUNUPSQ ROQSQURUUSVOV", + 3: " 11MXVNTMRMPNOPOSPURVTVVU", + 4: " 12MWOMOV ROMRMTNUPUSTURVOV", + 5: " 12MWOMOV ROMUM ROQSQ ROVUV", + 6: " 9MVOMOV ROMUM ROQSQ", + 7: " 15MXVNTMRMPNOPOSPURVTVVUVR RSRVR", + 8: " 9MWOMOV RUMUV ROQUQ", + 9: " 3PTRMRV", + 10: " 7NUSMSTRVPVOTOS", + 11: " 9MWOMOV RUMOS RQQUV", + 12: " 6MVOMOV ROVUV", + 13: " 12LXNMNV RNMRV RVMRV RVMVV", + 14: " 9MWOMOV ROMUV RUMUV", + 15: " 14MXRMPNOPOSPURVSVUUVSVPUNSMRM", + 16: " 10MWOMOV ROMSMUNUQSROR", + 17: " 17MXRMPNOPOSPURVSVUUVSVPUNSMRM RSTVW", + 18: " 13MWOMOV ROMSMUNUQSROR RRRUV", + 19: " 13MWUNSMQMONOOPPTRUSUUSVQVOU", + 20: " 6MWRMRV RNMVM", + 21: " 9MXOMOSPURVSVUUVSVM", + 22: " 6MWNMRV RVMRV", + 23: " 12LXNMPV RRMPV RRMTV RVMTV", + 24: " 6MWOMUV RUMOV", + 25: " 7MWNMRQRV RVMRQ", + 26: " 9MWUMOV ROMUM ROVUV", + 27: " 9MWRMNV RRMVV RPSTS", + 28: " 16MWOMOV ROMSMUNUPSQ ROQSQURUUSVOV", + 29: " 6MVOMOV ROMUM", + 30: " 9MWRMNV RRMVV RNVVV", + 31: " 12MWOMOV ROMUM ROQSQ ROVUV", + 32: " 9MWUMOV ROMUM ROVUV", + 33: " 9MWOMOV RUMUV ROQUQ", + 34: " 20MXRMPNOPOSPURVSVUUVSVPUNSMRM RQQTR RTQQR", + 35: " 3PTRMRV", + 36: " 9MWOMOV RUMOS RQQUV", + 37: " 6MWRMNV RRMVV", + 38: " 12LXNMNV RNMRV RVMRV RVMVV", + 39: " 9MWOMOV ROMUV RUMUV", + 40: " 12MWOMUM RPQTR RTQPR ROVUV", + 41: " 14MXRMPNOPOSPURVSVUUVSVPUNSMRM", + 42: " 9MWOMOV RUMUV ROMUM", + 43: " 10MWOMOV ROMSMUNUQSROR", + 44: " 10MWOMRQOV ROMUM ROVUV", + 45: " 6MWRMRV RNMVM", + 46: " 15MWNONNOMPMQNRPRV RVOVNUMTMSNRP", + 47: " 13LXRMRV RPONPNSPTTTVSVPTOPO", + 48: " 6MWOMUV RUMOV", + 49: " 12LXRMRV RNOOPOSQTSTUSUPVO", + 50: " 13MXOVQVOROPPNRMSMUNVPVRTVVV", + 200: " 12MWRMPNOPOSPURVTUUSUPTNRM", + 201: " 4MWPORMRV", + 202: " 9MWONQMSMUNUPTROVUV", + 203: " 15MWONQMSMUNUPSQ RRQSQURUUSVQVOU", + 204: " 7MWSMSV RSMNSVS", + 205: " 14MWPMOQQPRPTQUSTURVQVOU RPMTM", + 206: " 14MWTMRMPNOPOSPURVTUUSTQRPPQOS", + 207: " 6MWUMQV ROMUM", + 208: " 19MWQMONOPQQSQUPUNSMQM RQQOROUQVSVUUURSQ", + 209: " 14MWUPTRRSPROPPNRMTNUPUSTURVPV", + 210: " 6PURURVSVSURU", + 211: " 7PUSVRVRUSUSWRY", + 212: " 12PURPRQSQSPRP RRURVSVSURU", + 213: " 13PURPRQSQSPRP RSVRVRUSUSWRY", + 214: " 12PURMRR RSMSR RRURVSVSURU", + 215: " 17NWPNRMSMUNUPRQRRSRSQUP RRURVSVSURU", + 216: " 3PTRMRQ", + 217: " 6NVPMPQ RTMTQ", + 218: " 10NVQMPNPPQQSQTPTNSMQM", + 219: " 16MWUNSMQMONOPQQTRUSUUSVQVOU RRLRW", + 220: " 3MWVLNW", + 221: " 7OVTLRNQPQSRUTW", + 222: " 7NUPLRNSPSSRUPW", + 223: " 3PTRLRW", + 224: " 3LXNRVR", + 225: " 6LXRNRV RNRVR", + 226: " 6LXNPVP RNTVT", + 227: " 6MWOOUU RUOOU", + 228: " 9MWRORU ROPUT RUPOT", + 229: " 6PURQRRSRSQRQ", + 230: " 7PUSMRORQSQSPRP", + 231: " 7PUSNRNRMSMSORQ", + 232: " 7LXSOVRSU RNRVR", + 233: " 12MXRLPW RULSW ROPVP ROSVS", + 234: " 21LXVRURTSSURVOVNUNSORRQSPSNRMPMONOPQSSUUVVV", + 235: " 20LXNNOQOSNV RVNUQUSVV RNNQOSOVN RNVQUSUVV", + 501: " 9I[RFJ[ RRFZ[ RMTWT", + 502: " 24G\\KFK[ RKFTFWGXHYJYLXNWOTP RKPTPWQXRYTYWXYWZT[K[", + 503: " 19H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZV", + 504: " 16G\\KFK[ RKFRFUGWIXKYNYSXVWXUZR[K[", + 505: " 12H[LFL[ RLFYF RLPTP RL[Y[", + 506: " 9HZLFL[ RLFYF RLPTP", + 507: " 23H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZVZS RUSZS", + 508: " 9G]KFK[ RYFY[ RKPYP", + 509: " 3NVRFR[", + 510: " 11JZVFVVUYTZR[P[NZMYLVLT", + 511: " 9G\\KFK[ RYFKT RPOY[", + 512: " 6HYLFL[ RL[X[", + 513: " 12F^JFJ[ RJFR[ RZFR[ RZFZ[", + 514: " 9G]KFK[ RKFY[ RYFY[", + 515: " 22G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF", + 516: " 14G\\KFK[ RKFTFWGXHYJYMXOWPTQKQ", + 517: " 25G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF RSWY]", + 518: " 17G\\KFK[ RKFTFWGXHYJYLXNWOTPKP RRPY[", + 519: " 21H\\YIWGTFPFMGKIKKLMMNOOUQWRXSYUYXWZT[P[MZKX", + 520: " 6JZRFR[ RKFYF", + 521: " 11G]KFKULXNZQ[S[VZXXYUYF", + 522: " 6I[JFR[ RZFR[", + 523: " 12F^HFM[ RRFM[ RRFW[ R\\FW[", + 524: " 6H\\KFY[ RYFK[", + 525: " 7I[JFRPR[ RZFRP", + 526: " 9H\\YFK[ RKFYF RK[Y[", + 527: " 9I[RFJ[ RRFZ[ RMTWT", + 528: " 24G\\KFK[ RKFTFWGXHYJYLXNWOTP RKPTPWQXRYTYWXYWZT[K[", + 529: " 6HYLFL[ RLFXF", + 530: " 9I[RFJ[ RRFZ[ RJ[Z[", + 531: " 12H[LFL[ RLFYF RLPTP RL[Y[", + 532: " 9H\\YFK[ RKFYF RK[Y[", + 533: " 9G]KFK[ RYFY[ RKPYP", + 534: " 25G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF ROPUP", + 535: " 3NVRFR[", + 536: " 9G\\KFK[ RYFKT RPOY[", + 537: " 6I[RFJ[ RRFZ[", + 538: " 12F^JFJ[ RJFR[ RZFR[ RZFZ[", + 539: " 9G]KFK[ RKFY[ RYFY[", + 540: " 9I[KFYF ROPUP RK[Y[", + 541: " 22G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF", + 542: " 9G]KFK[ RYFY[ RKFYF", + 543: " 14G\\KFK[ RKFTFWGXHYJYMXOWPTQKQ", + 544: " 10I[KFRPK[ RKFYF RK[Y[", + 545: " 6JZRFR[ RKFYF", + 546: " 19I[KKKILGMFOFPGQIRMR[ RYKYIXGWFUFTGSIRM", + 547: " 21H\\RFR[ RPKMLLMKOKRLTMUPVTVWUXTYRYOXMWLTKPK", + 548: " 6H\\KFY[ RK[YF", + 549: " 18G]RFR[ RILJLKMLQMSNTQUSUVTWSXQYMZL[L", + 550: " 17H\\K[O[LTKPKLLINGQFSFVGXIYLYPXTU[Y[", + 551: " 20G[G[IZLWOSSLVFV[UXSUQSNQLQKRKTLVNXQZT[Y[", + 552: " 41F]SHTITLSPRSQUOXMZK[J[IZIWJRKOLMNJPHRGUFXFZG[I[KZMYNWOTP RSPTPWQXRYTYWXYWZU[R[PZOX", + 553: " 24H\\TLTMUNWNYMZKZIYGWFTFQGOIMLLNKRKVLYMZO[Q[TZVXWV", + 554: " 35G^TFRGQIPMOSNVMXKZI[G[FZFXGWIWKXMZP[S[VZXXZT[O[KZHYGWFTFRHRJSMUPWRZT\\U", + 555: " 28H\\VJVKWLYLZKZIYGVFRFOGNINLONPOSPPPMQLRKTKWLYMZP[S[VZXXYV", + 556: " 28H\\RLPLNKMINGQFTFXG[G]F RXGVNTTRXPZN[L[JZIXIVJULUNV RQPZP", + 557: " 29G^G[IZMVPQQNRJRGQFPFOGNINLONQOUOXNYMZKZQYVXXVZS[O[LZJXIVIT", + 558: " 38F^MMKLJJJIKGMFNFPGQIQKPONULYJ[H[GZGX RMRVOXN[L]J^H^G]F\\FZHXLVRUWUZV[W[YZZY\\V", + 559: " 25IZWVUTSQROQLQIRGSFUFVGWIWLVQTVSXQZO[M[KZJXJVKUMUOV", + 560: " 25JYT^R[PVOPOJPGRFTFUGVJVMURR[PaOdNfLgKfKdLaN^P\\SZWX", + 561: " 39F^MMKLJJJIKGMFNFPGQIQKPONULYJ[H[GZGX R^I^G]F\\FZGXIVLTNROPO RROSQSXTZU[V[XZYY[V", + 562: " 29I\\MRORSQVOXMYKYHXFVFUGTISNRSQVPXNZL[J[IZIXJWLWNXQZT[V[YZ[X", + 563: " 45@aEMCLBJBICGEFFFHGIIIKHPGTE[ RGTJLLHMGOFPFRGSISKRPQTO[ RQTTLVHWGYFZF\\G]I]K\\PZWZZ[[\\[^Z_YaV", + 564: " 32E]JMHLGJGIHGJFKFMGNINKMPLTJ[ RLTOLQHRGTFVFXGYIYKXPVWVZW[X[ZZ[Y]V", + 565: " 29H]TFQGOIMLLNKRKVLYMZO[Q[TZVXXUYSZOZKYHXGVFTFRHRKSNUQWSZU\\V", + 566: " 31F_SHTITLSPRSQUOXMZK[J[IZIWJRKOLMNJPHRGUFZF\\G]H^J^M]O\\PZQWQUPTO", + 567: " 32H^ULTNSOQPOPNNNLOIQGTFWFYGZIZMYPWSSWPYNZK[I[HZHXIWKWMXPZS[V[YZ[X", + 568: " 38F_SHTITLSPRSQUOXMZK[J[IZIWJRKOLMNJPHRGUFYF[G\\H]J]M\\O[PYQVQSPTQUSUXVZX[ZZ[Y]V", + 569: " 28H\\H[JZLXOTQQSMTJTGSFRFQGPIPKQMSOVQXSYUYWXYWZT[P[MZKXJVJT", + 570: " 25H[RLPLNKMINGQFTFXG[G]F RXGVNTTRXPZN[L[JZIXIVJULUNV", + 571: " 33E]JMHLGJGIHGJFKFMGNINKMOLRKVKXLZN[P[RZSYUUXMZF RXMWQVWVZW[X[ZZ[Y]V", + 572: " 32F]KMILHJHIIGKFLFNGOIOKNOMRLVLYM[O[QZTWVTXPYMZIZGYFXFWGVIVKWNYP[Q", + 573: " 25C_HMFLEJEIFGHFIFKGLILLK[ RUFK[ RUFS[ RaF_G\\JYNVTS[", + 574: " 36F^NLLLKKKILGNFPFRGSISLQUQXRZT[V[XZYXYVXUVU R]I]G\\FZFXGVITLPUNXLZJ[H[GZGX", + 575: " 38F]KMILHJHIIGKFLFNGOIOKNOMRLVLXMZN[P[RZTXVUWSYM R[FYMVWT]RbPfNgMfMdNaP^S[VY[V", + 576: " 40H]ULTNSOQPOPNNNLOIQGTFWFYGZIZMYPWTTWPZN[K[JZJXKWNWPXQYR[R^QaPcNfLgKfKdLaN^Q[TYZV", + 583: " 9I[JFR[ RZFR[ RJFZF", + 601: " 18I\\XMX[ RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", + 602: " 18H[LFL[ RLPNNPMSMUNWPXSXUWXUZS[P[NZLX", + 603: " 15I[XPVNTMQMONMPLSLUMXOZQ[T[VZXX", + 604: " 18I\\XFX[ RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", + 605: " 18I[LSXSXQWOVNTMQMONMPLSLUMXOZQ[T[VZXX", + 606: " 9MYWFUFSGRJR[ ROMVM", + 607: " 23I\\XMX]W`VaTbQbOa RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", + 608: " 11I\\MFM[ RMQPNRMUMWNXQX[", + 609: " 9NVQFRGSFREQF RRMR[", + 610: " 12MWRFSGTFSERF RSMS^RaPbNb", + 611: " 9IZMFM[ RWMMW RQSX[", + 612: " 3NVRFR[", + 613: " 19CaGMG[ RGQJNLMOMQNRQR[ RRQUNWMZM\\N]Q][", + 614: " 11I\\MMM[ RMQPNRMUMWNXQX[", + 615: " 18I\\QMONMPLSLUMXOZQ[T[VZXXYUYSXPVNTMQM", + 616: " 18H[LMLb RLPNNPMSMUNWPXSXUWXUZS[P[NZLX", + 617: " 18I\\XMXb RXPVNTMQMONMPLSLUMXOZQ[T[VZXX", + 618: " 9KXOMO[ ROSPPRNTMWM", + 619: " 18J[XPWNTMQMNNMPNRPSUTWUXWXXWZT[Q[NZMX", + 620: " 9MYRFRWSZU[W[ ROMVM", + 621: " 11I\\MMMWNZP[S[UZXW RXMX[", + 622: " 6JZLMR[ RXMR[", + 623: " 12G]JMN[ RRMN[ RRMV[ RZMV[", + 624: " 6J[MMX[ RXMM[", + 625: " 10JZLMR[ RXMR[P_NaLbKb", + 626: " 9J[XMM[ RMMXM RM[X[", + 627: " 24H]QMONMPLRKUKXLZN[P[RZUWWTYPZM RQMSMTNUPWXXZY[Z[", + 628: " 31I\\UFSGQIOMNPMTLZKb RUFWFYHYKXMWNUORO RROTPVRWTWWVYUZS[Q[OZNYMV", + 629: " 17I\\JPLNNMOMQNROSRSVR[ RZMYPXRR[P_Ob", + 630: " 24I[TMQMONMPLSLVMYNZP[R[TZVXWUWRVOTMRKQIQGRFTFVGXI", + 631: " 19JZWOVNTMQMONOPPRSS RSSOTMVMXNZP[S[UZWX", + 632: " 23JYTFRGQHQIRJUKXK RXKTMQONRMUMWNYP[S]T_TaSbQbP`", + 633: " 19H\\IQJOLMNMONOPNTL[ RNTPPRNTMVMXOXRWWTb", + 634: " 27G\\HQIOKMMMNNNPMUMXNZO[Q[SZUWVUWRXMXJWGUFSFRHRJSMUPWRZT", + 635: " 9LWRMPTOXOZP[R[TYUW", + 636: " 19I[OMK[ RYNXMWMUNQROSNS RNSPTQUSZT[U[VZ", + 637: " 9JZKFMFOGPHX[ RRML[", + 638: " 21H]OMIb RNQMVMYO[Q[SZUXWT RYMWTVXVZW[Y[[Y\\W", + 639: " 14I[LMOMNSMXL[ RYMXPWRUURXOZL[", + 640: " 29JZTFRGQHQIRJUKXK RUKRLPMOOOQQSTTVT RTTPUNVMXMZO\\S^T_TaRbPb", + 641: " 18J[RMPNNPMSMVNYOZQ[S[UZWXXUXRWOVNTMRM", + 642: " 13G]PML[ RUMVSWXX[ RIPKNNM[M", + 643: " 19I[MSMVNYOZQ[S[UZWXXUXRWOVNTMRMPNNPMSIb", + 644: " 18I][MQMONMPLSLVMYNZP[R[TZVXWUWRVOUNSM", + 645: " 8H\\SMP[ RJPLNOMZM", + 646: " 16H\\IQJOLMNMONOPMVMYO[Q[TZVXXTYPYM", + 647: " 21G]ONMOKQJTJWKYLZN[Q[TZWXYUZRZOXMVMTORSPXMb", + 648: " 14I[KMMMOOU`WbYb RZMYOWRM]K`Jb", + 649: " 20F]VFNb RGQHOJMLMMNMPLULXMZO[Q[TZVXXUZP[M", + 650: " 23F]NMLNJQITIWJZK[M[OZQW RRSQWRZS[U[WZYWZTZQYNXM", + 651: " 22L\\UUTSRRPRNSMTLVLXMZO[Q[SZTXVRUWUZV[W[YZZY\\V", + 652: " 23M[MVOSRNSLTITGSFQGPIOMNTNZO[P[RZTXUUURVVWWYW[V", + 653: " 14MXTTTSSRQROSNTMVMXNZP[S[VYXV", + 654: " 24L\\UUTSRRPRNSMTLVLXMZO[Q[SZTXZF RVRUWUZV[W[YZZY\\V", + 655: " 17NXOYQXRWSUSSRRQROSNUNXOZQ[S[UZVYXV", + 656: " 24OWOVSQUNVLWIWGVFTGSIQQNZKaJdJfKgMfNcOZP[R[TZUYWV", + 657: " 28L[UUTSRRPRNSMTLVLXMZO[Q[SZTY RVRTYPdOfMgLfLdMaP^S\\U[XY[V", + 658: " 29M\\MVOSRNSLTITGSFQGPIOMNSM[ RM[NXOVQSSRURVSVUUXUZV[W[YZZY\\V", + 659: " 16PWSMSNTNTMSM RPVRRPXPZQ[R[TZUYWV", + 660: " 20PWSMSNTNTMSM RPVRRLdKfIgHfHdIaL^O\\Q[TYWV", + 661: " 33M[MVOSRNSLTITGSFQGPIOMNSM[ RM[NXOVQSSRURVSVUTVQV RQVSWTZU[V[XZYY[V", + 662: " 18OWOVQSTNULVIVGUFSGRIQMPTPZQ[R[TZUYWV", + 663: " 33E^EVGSIRJSJTIXH[ RIXJVLSNRPRQSQTPXO[ RPXQVSSURWRXSXUWXWZX[Y[[Z\\Y^V", + 664: " 23J\\JVLSNROSOTNXM[ RNXOVQSSRURVSVUUXUZV[W[YZZY\\V", + 665: " 23LZRRPRNSMTLVLXMZO[Q[SZTYUWUUTSRRQSQURWTXWXYWZV", + 666: " 24KZKVMSNQMUGg RMUNSPRRRTSUUUWTYSZQ[ RMZO[R[UZWYZV", + 667: " 27L[UUTSRRPRNSMTLVLXMZO[Q[SZ RVRUUSZPaOdOfPgRfScS\\U[XY[V", + 668: " 15MZMVOSPQPSSSTTTVSYSZT[U[WZXYZV", + 669: " 16NYNVPSQQQSSVTXTZR[ RNZP[T[VZWYYV", + 670: " 16OXOVQSSO RVFPXPZQ[S[UZVYXV RPNWN", + 671: " 19L[LVNRLXLZM[O[QZSXUU RVRTXTZU[V[XZYY[V", + 672: " 17L[LVNRMWMZN[O[RZTXUUUR RURVVWWYW[V", + 673: " 25I^LRJTIWIYJ[L[NZPX RRRPXPZQ[S[UZWXXUXR RXRYVZW\\W^V", + 674: " 20JZJVLSNRPRQSQZR[U[XYZV RWSVRTRSSOZN[L[KZ", + 675: " 23L[LVNRLXLZM[O[QZSXUU RVRPdOfMgLfLdMaP^S\\U[XY[V", + 676: " 23LZLVNSPRRRTTTVSXQZN[P\\Q^QaPdOfMgLfLdMaP^S\\WYZV", + 677: " 22J\\K[NZQXSVUSWOXKXIWGUFSGRHQJPOPTQXRZT[V[XZYY", + 683: " 26I[WUWRVOUNSMQMONMPLSLVMYNZP[R[TZVXWUXPXKWHVGTFRFPGNI", + 684: " 16JZWNUMRMPNNPMSMVNYOZQ[T[VZ RMTUT", + 685: " 23J[TFRGPJOLNOMTMXNZO[Q[SZUWVUWRXMXIWGVFTF RNPWP", + 686: " 21H\\VFNb RQMNNLPKSKVLXNZQ[S[VZXXYUYRXPVNSMQM", + 687: " 16I[XOWNTMQMNNMOLQLSMUOWSZT\\T^S_Q_", + 700: " 18H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF", + 701: " 5H\\NJPISFS[", + 702: " 15H\\LKLJMHNGPFTFVGWHXJXLWNUQK[Y[", + 703: " 16H\\MFXFRNUNWOXPYSYUXXVZS[P[MZLYKW", + 704: " 7H\\UFKTZT RUFU[", + 705: " 18H\\WFMFLOMNPMSMVNXPYSYUXXVZS[P[MZLYKW", + 706: " 24H\\XIWGTFRFOGMJLOLTMXOZR[S[VZXXYUYTXQVOSNRNOOMQLT", + 707: " 6H\\YFO[ RKFYF", + 708: " 30H\\PFMGLILKMMONSOVPXRYTYWXYWZT[P[MZLYKWKTLRNPQOUNWMXKXIWGTFPF", + 709: " 24H\\XMWPURRSQSNRLPKMKLLINGQFRFUGWIXMXRWWUZR[P[MZLX", + 710: " 6MWRYQZR[SZRY", + 711: " 9MWSZR[QZRYSZS\\R^Q_", + 712: " 12MWRMQNROSNRM RRYQZR[SZRY", + 713: " 15MWRMQNROSNRM RSZR[QZRYSZS\\R^Q_", + 714: " 9MWRFRT RRYQZR[SZRY", + 715: " 21I[LKLJMHNGPFTFVGWHXJXLWNVORQRT RRYQZR[SZRY", + 716: " 3NVRFRM", + 717: " 6JZNFNM RVFVM", + 718: " 14KYQFOGNINKOMQNSNUMVKVIUGSFQF", + 719: " 27H\\PBP_ RTBT_ RYIWGTFPFMGKIKKLMMNOOUQWRXSYUYXWZT[P[MZKX", + 720: " 3G][BIb", + 721: " 11KYVBTDRGPKOPOTPYR]T`Vb", + 722: " 11KYNBPDRGTKUPUTTYR]P`Nb", + 723: " 3NVRBRb", + 724: " 3E_IR[R", + 725: " 6E_RIR[ RIR[R", + 726: " 6E_IO[O RIU[U", + 727: " 6G]KKYY RYKKY", + 728: " 9JZRLRX RMOWU RWOMU", + 729: " 6MWRQQRRSSRRQ", + 730: " 8MWSFRGQIQKRLSKRJ", + 731: " 8MWRHQGRFSGSIRKQL", + 732: " 9E_UMXP[RXTUW RIR[R", + 733: " 12H]SBLb RYBRb RLOZO RKUYU", + 734: " 35E_\\O\\N[MZMYNXPVUTXRZP[L[JZIYHWHUISJRQNRMSKSIRGPFNGMIMKNNPQUXWZY[[[\\Z\\Y", + 735: " 28G]IIJKKOKUJYI[ R[IZKYOYUZY[[ RIIKJOKUKYJ[I RI[KZOYUYYZ[[", + 737: " 6KYOBO[ RUBU[", + 738: " 6F^RBR[ RI[[[", + 739: " 4F^[BI[[[", + 740: " 18E_RIQJRKSJRI RIYHZI[JZIY R[YZZ[[\\Z[Y", + 741: " 33F^RHNLKPJSJUKWMXOXQWRU RRHVLYPZSZUYWWXUXSWRU RRUQYP\\ RRUSYT\\ RP\\T\\", + 742: " 26F^RNQKPINHMHKIJKJOKRLTNWR\\ RRNSKTIVHWHYIZKZOYRXTVWR\\", + 743: " 20F^RGPJLOIR RRGTJXO[R RIRLUPZR] R[RXUTZR]", + 744: " 48F^RTTWVXXXZW[U[SZQXPVPSQ RSQUOVMVKUISHQHOINKNMOOQQ RQQNPLPJQISIUJWLXNXPWRT RRTQYP\\ RRTSYT\\ RP\\T\\", + 745: " 55F^RRR[Q\\ RRVQ\\ RRIQHOHNINKONRR RRISHUHVIVKUNRR RRRNOLNJNIOIQJR RRRVOXNZN[O[QZR RRRNULVJVIUISJR RRRVUXVZV[U[SZR", + 746: " 55F^ISJSLTMVMXLZ RISIRJQLQMRNTNWMYLZ RRGPIOLOOQUQXPZR\\ RRGTIULUOSUSXTZR\\ R[S[RZQXQWRVTVWWYXZ R[SZSXTWVWXXZ RKVYV", + 750: " 18PSSRRSQSPRPQQPRPSQSSRUQV RQQQRRRRQQQ", + 751: " 16PTQPPQPSQTSTTSTQSPQP RRQQRRSSRRQ", + 752: " 9NVPOTU RTOPU RNRVR", + 753: " 28MWRKQMOPMR RRKSMUPWR RRMOQ RRMUQ RROPQ RROTQ RQQSQ RMRWR", + 754: " 26MWMRMQNOONQMSMUNVOWQWR RPNTN ROOUO RNPVP RNQVQ RMRWR", + 755: " 14LRLFLRRRLF RLIPQ RLLOR RLOMQ", + 756: " 10MWRKQMOPMR RRKSMUPWR", + 757: " 11MWWRWQVOUNSMQMONNOMQMR", + 758: " 13G]]R]P\\MZJWHTGPGMHJJHMGPGR", + 759: " 11MWMRMSNUOVQWSWUVVUWSWR", + 760: " 7LXLPNRQSSSVRXP", + 761: " 6RURUTTURTPRO", + 762: " 7RVRRUPVNVLUKTK", + 763: " 7NRRROPNNNLOKPK", + 764: " 21MWWHVGTFQFOGNHMJMLNNOOUSVTWVWXVZU[S\\P\\N[MZ", + 765: " 21G]IWHVGTGQHOINKMMMONPOTUUVWWYW[V\\U]S]P\\N[M", + 766: " 31G]RRTUUVWWYW[V\\U]S]Q\\O[NYMWMUNTOPUOVMWKWIVHUGSGQHOINKMMMONPORR", + 767: " 22H\\KFK[ RHF[FQP[Z RZV[Y\\[ RZVZY RWYZY RWYZZ\\[", + 768: " 30KYUARBPCNELHKLKRLUNWQXSXVWXUYR RKPLMNKQJSJVKXMYPYVXZV]T_R`Oa", + 796: " 3>f>RfR", + 797: " 3D`D``D", + 798: " 3RRR>Rf", + 799: " 3D`DD``", + 800: " 3D`DR`R", + 801: " 3F^FY^K", + 802: " 3KYK^YF", + 803: " 3RRRDR`", + 804: " 3KYKFY^", + 805: " 3F^FK^Y", + 806: " 3KYKRYR", + 807: " 3MWMWWM", + 808: " 3RRRKRY", + 809: " 3MWMMWW", + 810: " 8GRRGPGMHJJHMGPGR", + 811: " 8GRGRGTHWJZM\\P]R]", + 812: " 8R]R]T]W\\ZZ\\W]T]R", + 813: " 8R]]R]P\\MZJWHTGRG", + 814: " 9D`DOGQKSPTTTYS]Q`O", + 815: " 9PUUDSGQKPPPTQYS]U`", + 816: " 9OTODQGSKTPTTSYQ]O`", + 817: " 9D`DUGSKQPPTPYQ]S`U", + 818: " 5KYRJYNKVRZ", + 819: " 5JZJRNKVYZR", + 820: " 5KYKVKNYVYN", + 821: " 5JZLXJPZTXL", + 822: " 23JZJ]L]O\\Q[TXUVVSVOULTJSIQIPJOLNONSOVPXS[U\\X]Z]", + 823: " 23I]]Z]X\\U[SXPVOSNONLOJPIQISJTLUOVSVVUXT[Q\\O]L]J", + 824: " 23JZZGXGUHSIPLONNQNUOXPZQ[S[TZUXVUVQUNTLQIOHLGJG", + 825: " 23G[GJGLHOIQLTNUQVUVXUZT[S[QZPXOUNQNNOLPISHUGXGZ", + 826: " 21E[EPFRHTJUMVQVUUXSZP[NZLWLSMQNNPLSKVKYL\\M^", + 827: " 19EYETHVKWPWSVVTXQYNYLXKVKSLPNNQMTMYN\\P_", + 828: " 26OUQOOQOSQUSUUSUQSOQO RQPPQPSQTSTTSTQSPQP RRQQRRSSRRQ", + 829: " 11RWRMSMUNVOWQWSVUUVSWRW", + 830: " 9D`DRJR RORUR RZR`R", + 831: " 5D`DUDO`O`U", + 832: " 6JZRDJR RRDZR", + 833: " 9D`DR`R RJYZY RP`T`", + 834: " 9D`DR`R RDRRb R`RRb", + 840: " 18KYQKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK", + 841: " 6LXLLLXXXXLLL", + 842: " 5KYRJKVYVRJ", + 843: " 6LXRHLRR\\XRRH", + 844: " 12JZRIPOJOOSMYRUWYUSZOTORI", + 845: " 6KYRKRY RKRYR", + 846: " 6MWMMWW RWMMW", + 847: " 9MWRLRX RMOWU RWOMU", + 850: " 35NVQNOONQNSOUQVSVUUVSVQUOSNQN ROQOS RPPPT RQOQU RRORU RSOSU RTPTT RUQUS", + 851: " 27NVNNNVVVVNNN ROOOU RPOPU RQOQU RRORU RSOSU RTOTU RUOUU", + 852: " 17MWRLMUWURL RROOT RROUT RRRQT RRRST", + 853: " 17LULRUWUMLR RORTU RORTO RRRTS RRRTQ", + 854: " 17MWRXWOMORX RRUUP RRUOP RRRSP RRRQP", + 855: " 17OXXROMOWXR RURPO RURPU RRRPQ RRRPS", + 856: " 22LXRLNWXPLPVWRL RRRRL RRRLP RRRNW RRRVW RRRXP", + 857: " 11RYRKRY RRKYNRQ RSMVNSO", + 860: " 13MWRLRX ROOUO RMUOWQXSXUWWU", + 861: " 11LXRLRX RLQMOWOXQ RPWTW", + 862: " 14KYMNWX RWNMX ROLLOKQ RULXOYQ", + 863: " 18I[NII[ RVI[[ RMM[[ RWMI[ RNIVI RMMWM", + 864: " 21I[RGRV RMJWP RWJMP RIVL\\ R[VX\\ RIV[V RL\\X\\", + 865: " 11G[MJSV RKPSL RG\\[\\[RG\\", + 866: " 14LXPLPPLPLTPTPXTXTTXTXPTPTLPL", + 867: " 32KYYPXNVLSKQKNLLNKQKSLVNXQYSYVXXVYT RYPWNUMSMQNPOOQOSPUQVSWUWWVYT", + 868: " 10KYRJKVYVRJ RRZYNKNRZ", + 869: " 34G]PIPGQFSFTGTI RGZHXJVKTLPLKMJOIUIWJXKXPYTZV\\X]Z RGZ]Z RQZP[Q\\S\\T[SZ", + 870: " 64JZRMRS RRSQ\\ RRSS\\ RQ\\S\\ RRMQJPHNG RQJNG RRMSJTHVG RSJVG RRMNKLKJM RPLLLJM RRMVKXKZM RTLXLZM RRMPNOOOR RRMPOOR RRMTNUOUR RRMTOUR", + 871: " 94JZRIRK RRNRP RRSRU RRYQ\\ RRYS\\ RQ\\S\\ RRGQIPJ RRGSITJ RPJRITJ RRKPNNOMN RRKTNVOWN RNOPORNTOVO RRPPSNTLTKRKSLT RRPTSVTXTYRYSXT RNTPTRSTTVT RRUPXOYMZLZKYJWJYLZ RRUTXUYWZXZYYZWZYXZ RMZOZRYUZWZ", + 872: " 40JZRYQ\\ RRYS\\ RQ\\S\\ RRYUZXZZXZUYTWTYRZOYMWLUMVJUHSGQGOHNJOMMLKMJOKRMTKTJUJXLZOZRY", + 873: " 32JZRYQ\\ RRYS\\ RQ\\S\\ RRYVXVVXUXRZQZLYIXHVHTGPGNHLHKIJLJQLRLUNVNXRY", + 874: " 15I[IPKR RLKNP RRGRO RXKVP R[PYR", + 899: " 6QSRQQRRSSRRQ", + 900: " 10PTQPPQPSQTSTTSTQSPQP", + 901: " 14NVQNOONQNSOUQVSVUUVSVQUOSNQN", + 902: " 18MWQMONNOMQMSNUOVQWSWUVVUWSWQVOUNSMQM", + 903: " 18KYQKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK", + 904: " 22G]PGMHJJHMGPGTHWJZM\\P]T]W\\ZZ\\W]T]P\\MZJWHTGPG", + 905: " 34AcPALBJCGEEGCJBLAPATBXCZE]G_JaLbPcTcXbZa]__]aZbXcTcPbLaJ_G]EZCXBTAPA", + 906: " 34fRAPCMDJDGCEA>H@JAMAZB]D_G`M`PaRc RRATCWDZD]C_AfHdJcMcZb]`_]`W`TaRc", + 909: " 33AcRAPCMDJDGCEABGAKAPBTDXG\\L`Rc RRATCWDZD]C_AbGcKcPbT`X]\\X`Rc RBHbH", + 997: " 3MWMXWX", + 998: " 3JZJZZZ", + 999: " 3JZJ]Z]", + 1001: " 18KYRKMX RRNVX RRKWX ROTTT RKXPX RTXYX", + 1002: " 35JZNKNX ROKOX RLKSKVLWNVPSQ RSKULVNUPSQ ROQSQVRWTWUVWSXLX RSQURVTVUUWSX", + 1003: " 24KYVLWKWOVLTKQKOLNMMPMSNVOWQXTXVWWU RQKOMNPNSOVQX", + 1004: " 26JZNKNX ROKOX RLKSKVLWMXPXSWVVWSXLX RSKULVMWPWSVVUWSX", + 1005: " 22JYNKNX ROKOX RSOSS RLKVKVOUK ROQSQ RLXVXVTUX", + 1006: " 20JXNKNX ROKOX RSOSS RLKVKVOUK ROQSQ RLXQX", + 1007: " 36K[VLWKWOVLTKQKOLNMMPMSNVOWQXTXVW RQKOMNPNSOVQX RTXUWVU RVSVX RWSWX RTSYS", + 1008: " 27J[NKNX ROKOX RVKVX RWKWX RLKQK RTKYK ROQVQ RLXQX RTXYX", + 1009: " 12NWRKRX RSKSX RPKUK RPXUX", + 1010: " 19LXSKSURWQX RTKTUSWQXPXNWMUNTOUNV RQKVK", + 1011: " 27JZNKNX ROKOX RWKOS RQQVX RRQWX RLKQK RTKYK RLXQX RTXYX", + 1012: " 14KXOKOX RPKPX RMKRK RMXWXWTVX", + 1013: " 30I\\MKMX RNNRX RNKRU RWKRX RWKWX RXKXX RKKNK RWKZK RKXOX RUXZX", + 1014: " 21JZNKNX ROMVX ROKVV RVKVX RLKOK RTKXK RLXPX", + 1015: " 32KZQKOLNMMPMSNVOWQXTXVWWVXSXPWMVLTKQK RQKOMNPNSOVQX RTXVVWSWPVMTK", + 1016: " 25JYNKNX ROKOX RLKSKVLWNWOVQSROR RSKULVNVOUQSR RLXQX", + 1017: " 47KZQKOLNMMPMSNVOWQXTXVWWVXSXPWMVLTKQK RQKOMNPNSOVQX RTXVVWSWPVMTK RPWPUQTSTTUUZV[W[XZ RTUUXVZW[", + 1018: " 37JZNKNX ROKOX RLKSKVLWNWOVQSROR RSKULVNVOUQSR RLXQX RSRTSUWVXWXXW RSRUSVWWX", + 1019: " 32KZVMWKWOVMULSKQKOLNMNOOPQQTRVSWT RNNOOQPTQVRWSWVVWTXRXPWOVNTNXOV", + 1020: " 16KZRKRX RSKSX RNKMOMKXKXOWK RPXUX", + 1021: " 20J[NKNUOWQXTXVWWUWK ROKOUPWQX RLKQK RUKYK", + 1022: " 15KYMKRX RNKRU RWKRX RKKPK RTKYK", + 1023: " 24I[LKOX RMKOT RRKOX RRKUX RSKUT RXKUX RJKOK RVKZK", + 1024: " 21KZNKVX ROKWX RWKNX RLKQK RTKYK RLXQX RTXYX", + 1025: " 20LYNKRRRX ROKSR RWKSRSX RLKQK RTKYK RPXUX", + 1026: " 16LYVKNX RWKOX ROKNONKWK RNXWXWTVX", + 1027: " 18KYRKMX RRNVX RRKWX ROTTT RKXPX RTXYX", + 1028: " 35JZNKNX ROKOX RLKSKVLWNVPSQ RSKULVNUPSQ ROQSQVRWTWUVWSXLX RSQURVTVUUWSX", + 1029: " 14KXOKOX RPKPX RMKWKWOVK RMXRX", + 1030: " 15KYRKLX RRMWX RRKXX RMWVW RLXXX", + 1031: " 22JYNKNX ROKOX RSOSS RLKVKVOUK ROQSQ RLXVXVTUX", + 1032: " 16LYVKNX RWKOX ROKNONKWK RNXWXWTVX", + 1033: " 27J[NKNX ROKOX RVKVX RWKWX RLKQK RTKYK ROQVQ RLXQX RTXYX", + 1034: " 44KZQKOLNMMPMSNVOWQXTXVWWVXSXPWMVLTKQK RQKOMNPNSOVQX RTXVVWSWPVMTK RQOQT RTOTT RQQTQ RQRTR", + 1035: " 12NWRKRX RSKSX RPKUK RPXUX", + 1036: " 27JZNKNX ROKOX RWKOS RQQVX RRQWX RLKQK RTKYK RLXQX RTXYX", + 1037: " 15KYRKMX RRNVX RRKWX RKXPX RTXYX", + 1038: " 30I\\MKMX RNNRX RNKRU RWKRX RWKWX RXKXX RKKNK RWKZK RKXOX RUXZX", + 1039: " 21JZNKNX ROMVX ROKVV RVKVX RLKOK RTKXK RLXPX", + 1040: " 36JZMJLM RXJWM RPPOS RUPTS RMVLY RXVWY RMKWK RMLWL RPQTQ RPRTR RMWWW RMXWX", + 1041: " 32KZQKOLNMMPMSNVOWQXTXVWWVXSXPWMVLTKQK RQKOMNPNSOVQX RTXVVWSWPVMTK", + 1042: " 21J[NKNX ROKOX RVKVX RWKWX RLKYK RLXQX RTXYX", + 1043: " 25JYNKNX ROKOX RLKSKVLWNWOVQSROR RSKULVNVOUQSR RLXQX", + 1044: " 20K[MKRQ RNKSQMX RMKWKXOVK RNWWW RMXWXXTVX", + 1045: " 16KZRKRX RSKSX RNKMOMKXKXOWK RPXUX", + 1046: " 33KZMONLOKPKQLRORX RXOWLVKUKTLSOSX RMONMOLPLQMRO RXOWMVLULTMSO RPXUX", + 1047: " 40KZRKRX RSKSX RQNNOMQMRNTQUTUWTXRXQWOTNQN RQNOONQNROTQU RTUVTWRWQVOTN RPKUK RPXUX", + 1048: " 21KZNKVX ROKWX RWKNX RLKQK RTKYK RLXQX RTXYX", + 1049: " 33J[RKRX RSKSX RLPMONOOSQU RTUVSWOXOYP RMONROTQUTUVTWRXO RPKUK RPXUX", + 1050: " 35KZMVNXQXMRMONMOLQKTKVLWMXOXRTXWXXV ROUNRNOOMQK RTKVMWOWRVU RNWPW RUWWW", + 1051: " 18KYTKKX RSMTX RTKUX RNTTT RIXNX RRXWX", + 1052: " 34JYPKLX RQKMX RNKUKWLWNVPSQ RUKVLVNUPSQ ROQRQTRUSUUTWQXJX RRQTSTUSWQX", + 1053: " 25KXVLWLXKWNVLTKRKPLOMNOMRMUNWPXRXTWUU RRKPMOONRNVPX", + 1054: " 26JYPKLX RQKMX RNKTKVLWNWQVTUVTWQXJX RTKULVNVQUTTVSWQX", + 1055: " 22JYPKLX RQKMX RSORS RNKXKWNWK ROQRQ RJXTXUUSX", + 1056: " 20JXPKLX RQKMX RSORS RNKXKWNWK ROQRQ RJXOX", + 1057: " 33KYVLWLXKWNVLTKRKPLOMNOMRMUNWPXRXTWUVVS RRKPMOONRNVPX RRXTVUS RSSXS", + 1058: " 27J[PKLX RQKMX RXKTX RYKUX RNKSK RVK[K ROQVQ RJXOX RRXWX", + 1059: " 12NWTKPX RUKQX RRKWK RNXSX", + 1060: " 19LXUKRUQWPX RVKSURWPXOXMWLUMTNUMV RSKXK", + 1061: " 27JZPKLX RQKMX RYKOR RRPTX RSPUX RNKSK RVK[K RJXOX RRXWX", + 1062: " 14KXQKMX RRKNX ROKTK RKXUXVUTX", + 1063: " 30I\\OKKX ROMPX RPKQV RYKPX RYKUX RZKVX RMKPK RYK\\K RIXMX RSXXX", + 1064: " 21JZPKLX RPKTX RQKTU RXKTX RNKQK RVKZK RJXNX", + 1065: " 32KYRKPLOMNOMRMUNWPXRXTWUVVTWQWNVLTKRK RRKPMOONRNVPX RRXTVUTVQVMTK", + 1066: " 24JYPKLX RQKMX RNKUKWLXMXOWQTROR RUKWMWOVQTR RJXOX", + 1067: " 46KYRKPLOMNOMRMUNWPXRXTWUVVTWQWNVLTKRK RRKPMOONRNVPX RRXTVUTVQVMTK ROWOVPUQURVRZS[T[UZ RRVSZT[", + 1068: " 35JZPKLX RQKMX RNKUKWLXMXOWQTROR RUKWMWOVQTR RSRTWUXVXWW RSRTSUWVX RJXOX", + 1069: " 28KZWLXLYKXNWLUKRKPLOMOOPPUSVT RONPOURVSVVUWSXPXNWMULXMWNW", + 1070: " 16KZTKPX RUKQX RPKNNOKZKYNYK RNXSX", + 1071: " 20J[PKMUMWOXSXUWVUYK RQKNUNWOX RNKSK RWK[K", + 1072: " 15KYOKPX RPKQV RYKPX RMKRK RVK[K", + 1073: " 24I[NKMX ROKNV RTKMX RTKSX RUKTV RZKSX RLKQK RXK\\K", + 1074: " 21KZPKTX RQKUX RYKLX RNKSK RVK[K RJXOX RRXWX", + 1075: " 20LYPKRQPX RQKSQ RYKSQQX RNKSK RVK[K RNXSX", + 1076: " 16LYXKLX RYKMX RQKONPKYK RLXUXVUTX", + 1101: " 32LZQOPPPQOQOPQOTOVQVWWXXX RTOUQUWWX RURRSPTOUOWPXSXTWUU RRSPUPWQX", + 1102: " 29JYNKNX ROKOX RORPPROTOVPWRWUVWTXRXPWOU RTOUPVRVUUWTX RLKOK", + 1103: " 24LXVQUQURVRVQUPSOQOOPNRNUOWQXSXUWVV RQOPPOROUPWQX", + 1104: " 32L[VKVX RWKWX RVRUPSOQOOPNRNUOWQXSXUWVU RQOPPOROUPWQX RTKWK RVXYX", + 1105: " 26LXOSVSVRUPSOQOOPNRNUOWQXSXUWVV RUSUQSO RQOPPOROUPWQX", + 1106: " 20LWTKULUMVMVLTKRKPMPX RRKQMQX RNOSO RNXSX", + 1107: " 42LYQOOQOSQUSUUSUQSOQO RQOPQPSQU RSUTSTQSO RTPUOVO RPTOUOXPYTYVZ ROWPXTXVYV[T\\P\\N[NYPX", + 1108: " 28J[NKNX ROKOX RORPPROTOVPWRWX RTOUPVRVX RLKOK RLXQX RTXYX", + 1109: " 18NWRKRLSLSKRK RRORX RSOSX RPOSO RPXUX", + 1110: " 23NWSKSLTLTKSK RSOSZR\\ RTOTZR\\P\\O[OZPZP[O[ RQOTO", + 1111: " 27JZNKNX ROKOX RWOOU RRSVX RSSWX RLKOK RTOYO RLXQX RTXYX", + 1112: " 12NWRKRX RSKSX RPKSK RPXUX", + 1113: " 44F_JOJX RKOKX RKRLPNOPORPSRSX RPOQPRRRX RSRTPVOXOZP[R[X RXOYPZRZX RHOKO RHXMX RPXUX RXX]X", + 1114: " 28J[NONX ROOOX RORPPROTOVPWRWX RTOUPVRVX RLOOO RLXQX RTXYX", + 1115: " 28LYQOOPNRNUOWQXTXVWWUWRVPTOQO RQOPPOROUPWQX RTXUWVUVRUPTO", + 1116: " 32JYNON\\ ROOO\\ RORPPROTOVPWRWUVWTXRXPWOU RTOUPVRVUUWTX RLOOO RL\\Q\\", + 1117: " 29KYUOU\\ RVOV\\ RURTPROPONPMRMUNWPXRXTWUU RPOOPNRNUOWPX RS\\X\\", + 1118: " 22KXOOOX RPOPX RPRQPSOUOVPVQUQUPVP RMOPO RMXRX", + 1119: " 26LYTOUPUQVQVPTOQOOPORQSTTVU ROQQRTSVTVWTXQXOWOVPVPWQX", + 1120: " 14LWPKPVRXTXUWUV RQKQVRX RNOTO", + 1121: " 28J[NONUOWQXSXUWVU ROOOUPWQX RVOVX RWOWX RLOOO RTOWO RVXYX", + 1122: " 15KYNORX ROORV RVORX RLOQO RTOXO", + 1123: " 24I[LOOX RMOOU RROOX RROUX RSOUU RXOUX RJOOO RVOZO", + 1124: " 21KYNOUX ROOVX RVONX RLOQO RTOXO RLXPX RSXXX", + 1125: " 23KYNORX ROORV RVORXP[N\\M\\L[LZMZM[L[ RLOQO RTOXO", + 1126: " 16LXUONX RVOOX ROONQNOVO RNXVXVVUX", + 1127: " 32K[QOOPNQMSMUNWPXQXSWUUWRXO RQOOQNSNUOWPX RQOSOUPWWXX RSOTPVWXXYX", + 1128: " 40KXRKPMOOMUK\\ RQLPNNTL\\ RRKTKVLVNUPRQ RTKULUNTPRQ RRQTRUTUVTWRXQXOWNT RRQSRTTTVRX", + 1129: " 19KYLQNOPORPSSSXR\\ RLQNPPPRQSS RWOVRSXQ\\", + 1130: " 39KYSOQOOPNQMSMUNWPXRXTWUVVTVRUPRNQLQKRJTJUKVM RQOOQNSNVPX RRXTVUTUQSO RQLRKTKVM", + 1131: " 27LXVPTOQOOPOQPRRS RQOPPPQRS RRSOTNUNWPXSXUW RRSPTOUOWPX", + 1132: " 28LWRKQLQMSNVNVMSNPOOPNRNTOVPWRXSYS[R\\P\\O[ RSNQOPPOROTPVRX", + 1133: " 26IYJRKPLONOOPOQMX RMONPNQLX ROQPPROTOVPVRS\\ RTOUPURR\\", + 1134: " 35IYJSKQLPNPOQOVPX RMPNQNUOWPXQXSWTVUTVQVNULTKRKQLQNRPURWS RQXSVTTUQUNTK", + 1135: " 13NWROPVPWQXSXUWVU RSOQVQWRX", + 1136: " 26KYOOLX RPOMX RUOVPWPVOTORQOR RORPSRWTXVWWU RORQSSWTX", + 1137: " 15LXLKNKPLWX RNKOLVX RRPMX RRPNX", + 1138: " 26KZOOK\\ RPOL\\ RNUNWOXQXSWTV RVOTVTWUXWXXWYU RWOUVUWVX", + 1139: " 19JYNOMX ROONUMX RVRVOWOVRTUQWNXMX RLOOO", + 1140: " 36MXRKQLQMSNVN RTNQOPPPRRSUS RTNROQPQRRS RSSPTOUOWQXSYTZT[S\\Q\\ RSSQTPUPWQX", + 1141: " 28KXQOOPNQMSMUNWPXRXTWUVVTVRUPSOQO RQOOQNSNVPX RRXTVUTUQSO", + 1142: " 20IZPPMX RPPNX RTPSX RTPTX RKQMOXO RKQMPXP", + 1143: " 29JXSOQOOPNQMSJ\\ RQOOQNSK\\ RSOUPVRVTUVTWRXPXNWMU RSOUQUTTVRX", + 1144: " 28K[YOQOOPNQMSMUNWPXRXTWUVVTVRUPYP RQOOQNSNVPX RRXTVUTUQSO", + 1145: " 14KZSPQX RSPRX RMQOOXO RMQOPXP", + 1146: " 24JXKRLPMOOOPPPROUOWPX RNOOPORNUNWPXQXSWUUVRVOUOVP", + 1147: " 35KZOPNQMSMUNWPXRXUWWUXRXPWOUOTPSRRUO\\ RMUNVPWRWUVWTXR RXQWPUPSR RRUQXP\\", + 1148: " 17KXMONOPPS[T\\ RNOOPR[T\\U\\ RVOTRNYL\\", + 1149: " 28I[TKQ\\ RUKP\\ RJRKPLONOOPOVPWSWUVWT RMONPNTOWPXSXUWWTXRYO", + 1150: " 36JZNPPPPONPMQLSLUMWNXPXQWRUSR RLUNWPWRU RRRRWSXUXWVXTXRWPVOVPWP RRUSWUWWV", + 1151: " 32KZVOTVTWUXWXXWYU RWOUVUWVX RUSUQSOQOOPNQMSMUNWPXRXTV RQOOQNSNVPX", + 1152: " 32JXOKMR RPKNRNVPX RNROPQOSOUPVRVTUVTWRXPXNWMUMR RSOUQUTTVRX RMKPK", + 1153: " 22KXUPUQVQUPSOQOOPNQMSMUNWPXRXTWUV RQOOQNSNVPX", + 1154: " 35KZWKTVTWUXWXXWYU RXKUVUWVX RUSUQSOQOOPNQMSMUNWPXRXTV RQOOQNSNVPX RUKXK", + 1155: " 23KWNURTTSURUPSOQOOPNQMSMUNWPXRXTWUV RQOOQNSNVPX", + 1156: " 23MXWKXLXKVKTLSNPYO[N\\ RVKULTNQYP[N\\L\\L[M\\ RPOVO", + 1157: " 34KYVOTVSYR[ RWOUVTYR[P\\M\\L[M[N\\ RUSUQSOQOOPNQMSMUNWPXRXTV RQOOQNSNVPX", + 1158: " 29KZPKLX RQKMX ROQPPROTOVPVRUUUWVX RTOUPURTUTWUXWXXWYU RNKQK", + 1159: " 26MWSKSLTLTKSK RNROPPOROSPSRRURWSX RQORPRRQUQWRXTXUWVU", + 1160: " 26MWTKTLULUKTK RORPPQOSOTPTRRYQ[O\\M\\M[N\\ RROSPSRQYP[O\\", + 1161: " 32KXPKLX RQKMX RVPUQVQVPUOTORQPROR RORPSQWRXTXUWVU RORQSRWSX RNKQK", + 1162: " 16NVSKPVPWQXSXTWUU RTKQVQWRX RQKTK", + 1163: " 46F^GRHPIOKOLPLQJX RJOKPKQIX RLQMPOOQOSPSQQX RQORPRQPX RSQTPVOXOZPZRYUYWZX RXOYPYRXUXWYX[X\\W]U", + 1164: " 33J[KRLPMOOOPPPQNX RNOOPOQMX RPQQPSOUOWPWRVUVWWX RUOVPVRUUUWVXXXYWZU", + 1165: " 28KXQOOPNQMSMUNWPXRXTWUVVTVRUPSOQO RQOOQNSNVPX RRXTVUTUQSO", + 1166: " 35JYKRLPMOOOPPPQM\\ RNOOPOQL\\ RPQROTOVPWRWTVVUWSXQXOVOT RTOVQVTUVSX RJ\\O\\", + 1167: " 28KYVOR\\ RWOS\\ RUSUQSOQOOPNQMSMUNWPXRXTV RQOOQNSNVPX RP\\U\\", + 1168: " 22LXMRNPOOQORPRQPX RPOQPQQOX RRQSPUOVOWPWQVQWP", + 1169: " 24LYVPVQWQVPTOQOOPORQSTTVU ROQQRTSVTVWTXQXOWNVOVOW", + 1170: " 16NWSKPVPWQXSXTWUU RTKQVQWRX RPOUO", + 1171: " 33IZJRKPLONOOPORNUNWOX RMONPNRMUMWOXQXSWTV RVOTVTWUXWXXWYU RWOUVUWVX", + 1172: " 24JXKRLPMOOOPPPROUOWPX RNOOPORNUNWPXQXSWUUVRVOUOVP", + 1173: " 37H\\IRJPKOMONPNRMUMWNX RLOMPMRLULWNXOXQWRV RTORVRWTX RUOSVSWTXUXWWYUZRZOYOZP", + 1174: " 38JZMRNPPOROSPSR RQORPRRQUPWNXMXLWLVMVLW RXPWQXQXPWOVOTPSRRURWSX RQUQWRXTXVWWU", + 1175: " 35IYJRKPLONOOPORNUNWOX RMONPNRMUMWOXQXSWTV RVOTVSYR[ RWOUVTYR[P\\M\\L[M[N\\", + 1176: " 27KYWOWPVQNVMWMX RNQOOROUQ ROPRPUQVQ RNVOVRWUW ROVRXUXVV", + 1177: " 39H[RKSLSMTMTLRKOKMLLNLX ROKNLMNMX RXKYLYMZMZLXKVKTMTX RVKUMUX RJOWO RJXOX RRXWX", + 1178: " 29J[UKVLWLWKQKOLNNNX RQKPLONOX RVOVX RWOWX RLOWO RLXQX RTXYX", + 1179: " 27J[WKQKOLNNNX RQKPLONOX RUKVLVX RWKWX RLOVO RLXQX RTXYX", + 1180: " 48F_PKQLQMRMRLPKMKKLJNJX RMKLLKNKX RYKZL[L[KUKSLRNRX RUKTLSNSX RZOZX R[O[X RHO[O RHXMX RPXUX RXX]X", + 1181: " 46F_PKQLQMRMRLPKMKKLJNJX RMKLLKNKX R[KUKSLRNRX RUKTLSNSX RYKZLZX R[K[X RHOZO RHXMX RPXUX RXX]X", + 1182: " 12NWRORX RSOSX RPOSO RPXUX", + 1184: " 21LXVPTOROPPOQNSNUOWQXSXUW RROPQOSOVQX ROSSS", + 1185: " 35LYSKQLPMOONRNUOWPXRXTWUVVTWQWNVLUKSK RSKQMPOOSOVPX RRXTVUTVPVMUK ROQVQ", + 1186: " 34KZTKQ\\ RUKP\\ RQONPMRMUNWQXTXWWXUXRWPTOQO RQOOPNRNUOWQX RTXVWWUWRVPTO", + 1187: " 22LXUPVRVQUPSOQOOPNRNTOVRX RQOOQOTPVRXSYS[R\\P\\", + 1191: " 45I[VKWLXLVKSKQLPMOOLYK[J\\ RSKQMPOMYL[J\\H\\H[I\\ RZK[L[KYKWLVNSYR[Q\\ RYKXLWNTYS[Q\\O\\O[P\\ RLOYO", + 1192: " 38IZVKWLXLXKSKQLPMOOLYK[J\\ RSKQMPOMYL[J\\H\\H[I\\ RVOTVTWUXWXXWYU RWOUVUWVX RLOWO", + 1193: " 38IZVKWL RXKSKQLPMOOLYK[J\\ RSKQMPOMYL[J\\H\\H[I\\ RWKTVTWUXWXXWYU RXKUVUWVX RLOVO", + 1194: " 63F^SKTLTM RULSKPKNLMMLOIYH[G\\ RPKNMMOJYI[G\\E\\E[F\\ RZK[L\\L\\KWKUL RTMSOPYO[N\\ RWKUMTOQYP[N\\L\\L[M\\ RZOXVXWYX[X\\W]U R[OYVYWZX RIO[O", + 1195: " 63F^SKTLTM RULSKPKNLMMLOIYH[G\\ RPKNMMOJYI[G\\E\\E[F\\ RZK[L R\\KWKUL RTMSOPYO[N\\ RWKUMTOQYP[N\\L\\L[M\\ R[KXVXWYX[X\\W]U R\\KYVYWZX RIOZO", + 1196: " 20MWNROPPOROSPSRRURWSX RQORPRRQUQWRXTXUWVU", + 1200: " 28LYQKOLNONTOWQXTXVWWTWOVLTKQK RQKPLOOOTPWQX RTXUWVTVOULTK", + 1201: " 10LYPNSKSX RRLRX ROXVX", + 1202: " 35LYOMONNNNMOLQKTKVLWNVPTQQROSNUNX RTKULVNUPTQ RNWOVPVSWVWWV RPVSXVXWVWU", + 1203: " 39LYOMONNNNMOLQKTKVLWNVPTQ RTKULVNUPTQ RRQTQVRWTWUVWTXQXOWNVNUOUOV RTQURVTVUUWTX", + 1204: " 13LYSMSX RTKTX RTKMTXT RQXVX", + 1205: " 33LYOKNQ ROKVK ROLSLVK RNQOPQOTOVPWRWUVWTXQXOWNVNUOUOV RTOUPVRVUUWTX", + 1206: " 36LYVMVNWNWMVLTKRKPLOMNPNUOWQXTXVWWUWSVQTPQPNR RRKPMOPOUPWQX RTXUWVUVSUQTP", + 1207: " 22LYNKNO RVMRTPX RWKTQQX RNMPKRKUM RNMPLRLUMVM", + 1208: " 51LYQKOLNNOPQQTQVPWNVLTKQK RQKPLONPPQQ RTQUPVNULTK RQQORNTNUOWQXTXVWWUWTVRTQ RQQPROTOUPWQX RTXUWVUVTURTQ", + 1209: " 36LYOVOUNUNVOWQXSXUWVVWSWNVLTKQKOLNNNPORQSTSWQ RSXUVVSVNULTK RQKPLONOPPRQS", + 1210: " 6NVRVQWRXSWRV", + 1211: " 8NVSWRXQWRVSWSYQ[", + 1212: " 12NVROQPRQSPRO RRVQWRXSWRV", + 1213: " 14NVROQPRQSPRO RSWRXQWRVSWSYQ[", + 1214: " 15NVRKQLRSSLRK RRLRO RRVQWRXSWRV", + 1215: " 29LYNNONOONONNOLQKTKVLWNWOVQSRRSRTST RTKVMVPUQSR RRWRXSXSWRW", + 1216: " 6OVRKRP RSKRP", + 1217: " 12LXOKOP RPKOP RUKUP RVKUP", + 1218: " 10MWQKPLPNQOSOTNTLSKQK", + 1219: " 9MWRJRP ROKUO RUKOO", + 1220: " 3KZXHM\\", + 1221: " 16MWUHSJQMPPPTQWSZU\\ RSJRLQPQTRXSZ", + 1222: " 16MWOHQJSMTPTTSWQZO\\ RQJRLSPSTRXQZ", + 1223: " 12MWPHP\\ RQHQ\\ RPHUH RP\\U\\", + 1224: " 12MWSHS\\ RTHT\\ ROHTH RO\\T\\", + 1225: " 38LWSHQIPJPLRNSP RQIPL RSNRQ RPJQLSNSPRQPRRSSTSVQXPZ RRSSV RPXQ[ RSTRVPXPZQ[S\\", + 1226: " 38MXQHSITJTLRNQP RSITL RQNRQ RTJSLQNQPRQTRRSQTQVSXTZ RRSQV RTXS[ RQTRVTXTZS[Q\\", + 1227: " 4MWTHPRT\\", + 1228: " 4MWPHTRP\\", + 1229: " 3OURHR\\", + 1230: " 6MWPHP\\ RTHT\\", + 1231: " 3I[LRXR", + 1232: " 6I[RLRX RLRXR", + 1233: " 9JZRMRX RMRWR RMXWX", + 1234: " 9JZRMRX RMMWM RMRWR", + 1235: " 6JZMMWW RWMMW", + 1236: " 6NVRQQRRSSRRQ", + 1237: " 15I[RLQMRNSMRL RLRXR RRVQWRXSWRV", + 1238: " 6I[LPXP RLTXT", + 1239: " 9I[WLMX RLPXP RLTXT", + 1240: " 9I[LNXN RLRXR RLVXV", + 1241: " 4JZWLMRWX", + 1242: " 4JZMLWRMX", + 1243: " 10JZWKMOWS RMTWT RMXWX", + 1244: " 10JZMKWOMS RMTWT RMXWX", + 1245: " 21H[YUWUUTTSRPQOONNNLOKQKRLTNUOUQTRSTPUOWNYN", + 1246: " 16JZLTLRMPOPUSWSXR RLRMQOQUTWTXRXP", + 1247: " 8JZMSRPWS RMSRQWS", + 1248: " 7NVSKPO RSKTLPO", + 1249: " 7NVQKTO RQKPLTO", + 1250: " 14LXNKOMQNSNUMVK RNKONQOSOUNVK", + 1251: " 8NVSLRMQLRKSLSNQP", + 1252: " 8NVSKQMQORPSORNQO", + 1253: " 8NVQLRMSLRKQLQNSP", + 1254: " 8NVQKSMSORPQORNSO", + 1256: " 11JZWMQMONNOMQMSNUOVQWWW", + 1257: " 11JZMMMSNUOVQWSWUVVUWSWM", + 1258: " 11JZMMSMUNVOWQWSVUUVSWMW", + 1259: " 11JZMWMQNOONQMSMUNVOWQWW", + 1260: " 14JZWMQMONNOMQMSNUOVQWWW RMRUR", + 1261: " 13I[TOUPXRUTTU RUPWRUT RLRWR", + 1262: " 13MWRMRX ROPPORLTOUP RPORMTO", + 1263: " 13I[POOPLROTPU ROPMROT RMRXR", + 1264: " 13MWRLRW ROTPURXTUUT RPURWTU", + 1265: " 37KYVSUPSOQOOPNQMSMUNWPXRXTWUVVTWQWNVLTKQKPLQLRK RQOOQNSNVPX RRXTVUTVQVNULTK", + 1266: " 15JZLKRX RMKRV RXKRX RLKXK RNLWL", + 1267: " 10G[IOLORW RKORX R[FRX", + 1268: " 26I[XIXJYJYIXHVHTJSLROQUPYO[ RUITKSORUQXPZN\\L\\K[KZLZL[", + 1269: " 40I[XIXJYJYIXHVHTJSLROQUPYO[ RUITKSORUQXPZN\\L\\K[KZLZL[ RQNOONQNSOUQVSVUUVSVQUOSNQN", + 1270: " 26H\\ZRYTWUVUTTSSQPPONNMNKOJQJRKTMUNUPTQSSPTOVNWNYOZQZR", + 1271: " 26JZXKLX ROKPLPNOOMOLNLLMKOKSLVLXK RUTTUTWUXWXXWXUWTUT", + 1272: " 41J[YPXPXQYQYPXOWOVPUTTVSWQXOXMWLVLTMSORRPSNSLRKPKOLONPQUWWXXXYW ROXMVMTOR RONPPVWWX", + 1273: " 29J[UPSOQOPQPRQTSTUS RUOUSVTXTYRYQXNVLSKRKOLMNLQLRMUOWRXSXVW", + 1274: " 34KZQHQ\\ RTHT\\ RWLVLVMWMWLUKPKNLNNOPVSWT RNNOOVRWTWVVWTXQXOWNVNUOUOVNV", + 1275: " 12KYRKN\\ RVKR\\ RNQWQ RMVVV", + 1276: " 40LXTLSLSMTMTLSKQKPLPNQPTRUS RPNQOTQUSUUSW RQPOROTPVSXTY ROTPUSWTYT[S\\Q\\P[PZQZQ[P[", + 1277: " 29LXRKQLRMSLRK RRMRQ RRQQSRVSSRQ RRVR\\ RPOONNOOPPOTOUNVOUPTO", + 1278: " 42LXRMSLRKQLRMRQQRSURV RRQSRQURVRZQ[R\\S[RZ RPOONNOOPPOTOUNVOUPTO RPXOWNXOYPXTXUWVXUYTX", + 1279: " 12LYVKVX RNKVK RQQVQ RNXVX", + 1281: " 24H\\QKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK RRQQRRSSRRQ", + 1282: " 33LYQKPLPMQN RTKULUMTN RRNPOOQORPTRUSUUTVRVQUOSNRN RRURY RSUSY ROWVW", + 1283: " 23LYRKPLONOOPQRRSRUQVOVNULSKRK RRRRX RSRSX ROUVU", + 1284: " 24H\\QKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK RRKRY RKRYR", + 1285: " 25JYRRPQOQMRLTLUMWOXPXRWSUSTRR RWMRR RRMWMWR RRMVNWR", + 1286: " 25JZLLMKOKQLRNRPQRPSNT ROKPLQNQQPS RVKUX RWKTX RNTXT", + 1287: " 27JYNKNU ROKNR RNROPQOSOUPVQVTTVTXUYVYWX RSOUQUTTV RLKOK", + 1288: " 27LYONRKRQ RVNSKSQ RRQPROTOUPWRXSXUWVUVTURSQ RRTRUSUSTRT", + 1289: " 27JZRKRY RMKMPNRPSTSVRWPWK RLMMKNM RQMRKSM RVMWKXM ROVUV", + 1290: " 27JYNKNX ROKOX RLKSKVLWNWOVQSROR RSKULVNVOUQSR RLXVXVUUX", + 1291: " 20LYWKTKQLONNQNSOVQXTYWY RWKTLRNQQQSRVTXWY", + 1292: " 23JZRRPQOQMRLTLUMWOXPXRWSUSTRR RSLQQ RWMRR RXQSS", + 1293: " 12KYPMTW RTMPW RMPWT RWPMT", + 1294: " 34J[OUMULVLXMYOYPXPVNTMRMONMOLQKTKVLWMXOXRWTUVUXVYXYYXYVXUVU RNMPLULWM", + 1295: " 34J[OOMOLNLLMKOKPLPNNPMRMUNWOXQYTYVXWWXUXRWPUNULVKXKYLYNXOVO RNWPXUXWW", + 1401: " 21F^KHK\\ RLHL\\ RXHX\\ RYHY\\ RHH\\H RH\\O\\ RU\\\\\\", + 1402: " 20H]KHRQJ\\ RJHQQ RJHYHZMXH RK[X[ RJ\\Y\\ZWX\\", + 1403: " 20KYVBTDRGPKOPOTPYR]T`Vb RTDRHQKPPPTQYR\\T`", + 1404: " 20KYNBPDRGTKUPUTTYR]P`Nb RPDRHSKTPTTSYR\\P`", + 1405: " 12KYOBOb RPBPb ROBVB RObVb", + 1406: " 12KYTBTb RUBUb RNBUB RNbUb", + 1407: " 40KYTBRCQDPFPHQJRKSMSOQQ RRCQEQGRISJTLTNSPORSTTVTXSZR[Q]Q_Ra RQSSUSWRYQZP\\P^Q`RaTb", + 1408: " 40KYPBRCSDTFTHSJRKQMQOSQ RRCSESGRIQJPLPNQPURQTPVPXQZR[S]S_Ra RSSQUQWRYSZT\\T^S`RaPb", + 1409: " 24KYU@RCPFOIOLPOSVTYT\\S_Ra RRCQEPHPKQNTUUXU[T^RaOd", + 1410: " 24KYO@RCTFUIULTOQVPYP\\Q_Ra RRCSETHTKSNPUOXO[P^RaUd", + 1411: " 13AXCRGRR` RGSRa RFSRb RX:Rb", + 1412: " 32F^[CZD[E\\D\\C[BYBWCUETGSJRNPZO^N` RVDUFTJRVQZP]O_MaKbIbHaH`I_J`Ia", + 2001: " 18H\\RFK[ RRFY[ RRIX[ RMUVU RI[O[ RU[[[", + 2002: " 45G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUP RUFWGXHYJYLXNWOUP RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[", + 2003: " 32G\\XIYLYFXIVGSFQFNGLIKKJNJSKVLXNZQ[S[VZXXYV RQFOGMILKKNKSLVMXOZQ[", + 2004: " 30G]LFL[ RMFM[ RIFSFVGXIYKZNZSYVXXVZS[I[ RSFUGWIXKYNYSXVWXUZS[", + 2005: " 22G\\LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[Y[YUX[", + 2006: " 20G[LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[P[", + 2007: " 40G^XIYLYFXIVGSFQFNGLIKKJNJSKVLXNZQ[S[VZXX RQFOGMILKKNKSLVMXOZQ[ RXSX[ RYSY[ RUS\\S", + 2008: " 27F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RLPXP RH[O[ RU[\\[", + 2009: " 12MXRFR[ RSFS[ ROFVF RO[V[", + 2010: " 20KZUFUWTZR[P[NZMXMVNUOVNW RTFTWSZR[ RQFXF", + 2011: " 27F\\KFK[ RLFL[ RYFLS RQOY[ RPOX[ RHFOF RUF[F RH[O[ RU[[[", + 2012: " 14I[NFN[ ROFO[ RKFRF RK[Z[ZUY[", + 2013: " 30F_KFK[ RLFRX RKFR[ RYFR[ RYFY[ RZFZ[ RHFLF RYF]F RH[N[ RV[][", + 2014: " 21G^LFL[ RMFYY RMHY[ RYFY[ RIFMF RVF\\F RI[O[", + 2015: " 44G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF", + 2016: " 29G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[P[", + 2017: " 64G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF RNYNXOVQURUTVUXV_W`Y`Z^Z] RUXV\\W^X_Y_Z^", + 2018: " 45G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUPMP RUFWGXHYJYLXNWOUP RI[P[ RRPTQURXYYZZZ[Y RTQUSWZX[Z[[Y[X", + 2019: " 34H\\XIYFYLXIVGSFPFMGKIKKLMMNOOUQWRYT RKKMMONUPWQXRYTYXWZT[Q[NZLXKUK[LX", + 2020: " 16I\\RFR[ RSFS[ RLFKLKFZFZLYF RO[V[", + 2021: " 23F^KFKULXNZQ[S[VZXXYUYF RLFLUMXOZQ[ RHFOF RVF\\F", + 2022: " 15H\\KFR[ RLFRX RYFR[ RIFOF RUF[F", + 2023: " 24F^JFN[ RKFNV RRFN[ RRFV[ RSFVV RZFV[ RGFNF RWF]F", + 2024: " 21H\\KFX[ RLFY[ RYFK[ RIFOF RUF[F RI[O[ RU[[[", + 2025: " 20H]KFRQR[ RLFSQS[ RZFSQ RIFOF RVF\\F RO[V[", + 2026: " 16H\\XFK[ RYFL[ RLFKLKFYF RK[Y[YUX[", + 2027: " 18H\\RFK[ RRFY[ RRIX[ RMUVU RI[O[ RU[[[", + 2028: " 45G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUP RUFWGXHYJYLXNWOUP RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[", + 2029: " 14I[NFN[ ROFO[ RKFZFZLYF RK[R[", + 2030: " 15H\\RFJ[ RRFZ[ RRIY[ RKZYZ RJ[Z[", + 2031: " 22G\\LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[Y[YUX[", + 2032: " 16H\\XFK[ RYFL[ RLFKLKFYF RK[Y[YUX[", + 2033: " 27F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RLPXP RH[O[ RU[\\[", + 2034: " 56G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF ROMOT RUMUT ROPUP ROQUQ", + 2035: " 12MXRFR[ RSFS[ ROFVF RO[V[", + 2036: " 27F\\KFK[ RLFL[ RYFLS RQOY[ RPOX[ RHFOF RUF[F RH[O[ RU[[[", + 2037: " 15H\\RFK[ RRFY[ RRIX[ RI[O[ RU[[[", + 2038: " 30F_KFK[ RLFRX RKFR[ RYFR[ RYFY[ RZFZ[ RHFLF RYF]F RH[N[ RV[][", + 2039: " 21G^LFL[ RMFYY RMHY[ RYFY[ RIFMF RVF\\F RI[O[", + 2040: " 36G]KEJJ RZEYJ RONNS RVNUS RKWJ\\ RZWY\\ RKGYG RKHYH ROPUP ROQUQ RKYYY RKZYZ", + 2041: " 44G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF", + 2042: " 21F^KFK[ RLFL[ RXFX[ RYFY[ RHF\\F RH[O[ RU[\\[", + 2043: " 29G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[P[", + 2044: " 20H]KFRPJ[ RJFQP RJFYFZLXF RKZXZ RJ[Y[ZUX[", + 2045: " 16I\\RFR[ RSFS[ RLFKLKFZFZLYF RO[V[", + 2046: " 33I\\KKKILGMFOFPGQIRMR[ RKIMGOGQI RZKZIYGXFVFUGTISMS[ RZIXGVGTI RO[V[", + 2047: " 48H]RFR[ RSFS[ RPKMLLMKOKRLTMUPVUVXUYTZRZOYMXLUKPK RPKNLMMLOLRMTNUPV RUVWUXTYRYOXMWLUK ROFVF RO[V[", + 2048: " 21H\\KFX[ RLFY[ RYFK[ RIFOF RUF[F RI[O[ RU[[[", + 2049: " 41G^RFR[ RSFS[ RIMJLLMMQNSOTQU RJLKMLQMSNTQUTUWTXSYQZM[L RTUVTWSXQYM[L\\M ROFVF RO[V[", + 2050: " 43G]JXK[O[MWKSJPJLKIMGPFTFWGYIZLZPYSWWU[Y[ZX RMWLTKPKLLINGPF RTFVGXIYLYPXTWW RKZNZ RVZYZ", + 2051: " 18H\\UFH[ RUFV[ RTHU[ RLUUU RF[L[ RR[X[", + 2052: " 41F^OFI[ RPFJ[ RLFWFZG[I[KZNYOVP RWFYGZIZKYNXOVP RMPVPXQYSYUXXVZR[F[ RVPWQXSXUWXUZR[", + 2053: " 34H]ZH[H\\F[L[JZHYGWFTFQGOIMLLOKSKVLYMZP[S[UZWXXV RTFRGPINLMOLSLVMYNZP[", + 2054: " 30F]OFI[ RPFJ[ RLFUFXGYHZKZOYSWWUYSZO[F[ RUFWGXHYKYOXSVWTYRZO[", + 2055: " 22F]OFI[ RPFJ[ RTLRT RLF[FZLZF RMPSP RF[U[WVT[", + 2056: " 20F\\OFI[ RPFJ[ RTLRT RLF[FZLZF RMPSP RF[M[", + 2057: " 42H^ZH[H\\F[L[JZHYGWFTFQGOIMLLOKSKVLYMZP[R[UZWXYT RTFRGPINLMOLSLVMYNZP[ RR[TZVXXT RUT\\T", + 2058: " 27E_NFH[ ROFI[ R[FU[ R\\FV[ RKFRF RXF_F RLPXP RE[L[ RR[Y[", + 2059: " 12LYUFO[ RVFP[ RRFYF RL[S[", + 2060: " 21I[XFSWRYQZO[M[KZJXJVKULVKW RWFRWQYO[ RTF[F", + 2061: " 27F]OFI[ RPFJ[ R]FLS RSOW[ RROV[ RLFSF RYF_F RF[M[ RS[Y[", + 2062: " 14H\\QFK[ RRFL[ RNFUF RH[W[YUV[", + 2063: " 30E`NFH[ RNFO[ ROFPY R\\FO[ R\\FV[ R]FW[ RKFOF R\\F`F RE[K[ RS[Z[", + 2064: " 21F_OFI[ ROFVX ROIV[ R\\FV[ RLFOF RYF_F RF[L[", + 2065: " 42G]SFPGNILLKOJSJVKYLZN[Q[TZVXXUYRZNZKYHXGVFSF RSFQGOIMLLOKSKVLYN[ RQ[SZUXWUXRYNYKXHVF", + 2066: " 27F]OFI[ RPFJ[ RLFXF[G\\I\\K[NYPUQMQ RXFZG[I[KZNXPUQ RF[M[", + 2067: " 61G]SFPGNILLKOJSJVKYLZN[Q[TZVXXUYRZNZKYHXGVFSF RSFQGOIMLLOKSKVLYN[ RQ[SZUXWUXRYNYKXHVF RLYLXMVOUPURVSXS_T`V`W^W] RSXT^U_V_W^", + 2068: " 42F^OFI[ RPFJ[ RLFWFZG[I[KZNYOVPMP RWFYGZIZKYNXOVP RRPTQURVZW[Y[ZYZX RURWYXZYZZY RF[M[", + 2069: " 35G^ZH[H\\F[L[JZHYGVFRFOGMIMKNMONVRXT RMKOMVQWRXTXWWYVZS[O[LZKYJWJUI[JYKY", + 2070: " 16H]UFO[ RVFP[ ROFLLNF]F\\L\\F RL[S[", + 2071: " 25F_NFKQJUJXKZN[R[UZWXXU\\F ROFLQKUKXLZN[ RKFRF RYF_F", + 2072: " 15H\\NFO[ ROFPY R\\FO[ RLFRF RXF^F", + 2073: " 24E_MFK[ RNFLY RUFK[ RUFS[ RVFTY R]FS[ RJFQF RZF`F", + 2074: " 21G]NFU[ ROFV[ R\\FH[ RLFRF RXF^F RF[L[ RR[X[", + 2075: " 20H]NFRPO[ ROFSPP[ R]FSP RLFRF RYF_F RL[S[", + 2076: " 16G][FH[ R\\FI[ ROFLLNF\\F RH[V[XUU[", + 2077: " 46H\\KILKXWYYY[ RLLXX RKIKKLMXYY[ RPPLTKVKXLZK[ RKVMZ RLTLVMXMZK[ RSSXN RVIVLWNYNYLWKVI RVIWLYN", + 2101: " 39I]NONPMPMONNPMTMVNWOXQXXYZZ[ RWOWXXZZ[[[ RWQVRPSMTLVLXMZP[S[UZWX RPSNTMVMXNZP[", + 2102: " 33G\\LFL[ RMFM[ RMPONQMSMVNXPYSYUXXVZS[Q[OZMX RSMUNWPXSXUWXUZS[ RIFMF", + 2103: " 28H[WPVQWRXQXPVNTMQMNNLPKSKULXNZQ[S[VZXX RQMONMPLSLUMXOZQ[", + 2104: " 36H]WFW[ RXFX[ RWPUNSMQMNNLPKSKULXNZQ[S[UZWX RQMONMPLSLUMXOZQ[ RTFXF RW[[[", + 2105: " 31H[LSXSXQWOVNTMQMNNLPKSKULXNZQ[S[VZXX RWSWPVN RQMONMPLSLUMXOZQ[", + 2106: " 22KXUGTHUIVHVGUFSFQGPIP[ RSFRGQIQ[ RMMUM RM[T[", + 2107: " 60I\\QMONNOMQMSNUOVQWSWUVVUWSWQVOUNSMQM RONNPNTOV RUVVTVPUN RVOWNYMYNWN RNUMVLXLYM[P\\U\\X]Y^ RLYMZP[U[X\\Y^Y_XaUbObLaK_K^L\\O[", + 2108: " 28G]LFL[ RMFM[ RMPONRMTMWNXPX[ RTMVNWPW[ RIFMF RI[P[ RT[[[", + 2109: " 18MXRFQGRHSGRF RRMR[ RSMS[ ROMSM RO[V[", + 2110: " 25MXSFRGSHTGSF RTMT_SaQbObNaN`O_P`Oa RSMS_RaQb RPMTM", + 2111: " 27G\\LFL[ RMFM[ RWMMW RRSX[ RQSW[ RIFMF RTMZM RI[P[ RT[Z[", + 2112: " 12MXRFR[ RSFS[ ROFSF RO[V[", + 2113: " 44BcGMG[ RHMH[ RHPJNMMOMRNSPS[ ROMQNRPR[ RSPUNXMZM]N^P^[ RZM\\N]P][ RDMHM RD[K[ RO[V[ RZ[a[", + 2114: " 28G]LML[ RMMM[ RMPONRMTMWNXPX[ RTMVNWPW[ RIMMM RI[P[ RT[[[", + 2115: " 36H\\QMNNLPKSKULXNZQ[S[VZXXYUYSXPVNSMQM RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM", + 2116: " 36G\\LMLb RMMMb RMPONQMSMVNXPYSYUXXVZS[Q[OZMX RSMUNWPXSXUWXUZS[ RIMMM RIbPb", + 2117: " 33H\\WMWb RXMXb RWPUNSMQMNNLPKSKULXNZQ[S[UZWX RQMONMPLSLUMXOZQ[ RTb[b", + 2118: " 23IZNMN[ ROMO[ ROSPPRNTMWMXNXOWPVOWN RKMOM RK[R[", + 2119: " 32J[WOXMXQWOVNTMPMNNMOMQNRPSUUWVXW RMPNQPRUTWUXVXYWZU[Q[OZNYMWM[NY", + 2120: " 16KZPFPWQZS[U[WZXX RQFQWRZS[ RMMUM", + 2121: " 28G]LMLXMZP[R[UZWX RMMMXNZP[ RWMW[ RXMX[ RIMMM RTMXM RW[[[", + 2122: " 15I[LMR[ RMMRY RXMR[ RJMPM RTMZM", + 2123: " 24F^JMN[ RKMNX RRMN[ RRMV[ RSMVX RZMV[ RGMNM RWM]M", + 2124: " 21H\\LMW[ RMMX[ RXML[ RJMPM RTMZM RJ[P[ RT[Z[", + 2125: " 22H[LMR[ RMMRY RXMR[P_NaLbKbJaK`La RJMPM RTMZM", + 2126: " 16I[WML[ RXMM[ RMMLQLMXM RL[X[XWW[", + 2127: " 40G^QMNNLPKRJUJXKZN[P[RZUWWTYPZM RQMONMPLRKUKXLZN[ RQMSMUNVPXXYZZ[ RSMTNUPWXXZZ[[[", + 2128: " 57G\\TFQGOIMMLPKTJZIb RTFRGPINMMPLTKZJb RTFVFXGYHYKXMWNTOPO RVFXHXKWMVNTO RPOTPVRWTWWVYUZR[P[NZMYLV RPOSPURVTVWUYTZR[", + 2129: " 28H\\IPKNMMOMQNROSRSVRZOb RJOLNPNRO RZMYPXRSYP^Nb RYMXPWRSY", + 2130: " 44I\\VNTMRMONMQLTLWMYNZP[R[UZWWXTXQWOSJRHRFSEUEWFYH RRMPNNQMTMXNZ RR[TZVWWTWPVNTKSISGTFVFYH", + 2131: " 32I[XPVNTMPMNNNPPRSS RPMONOPQRSS RSSNTLVLXMZP[S[UZWX RSSOTMVMXNZP[", + 2132: " 31I[TFRGQHQIRJUKZKZJWKSMPOMRLULWMYP[S]T_TaSbQbPa RULQONRMUMWNYP[", + 2133: " 32G]HQIOKMNMONOPNTL[ RMMNNNPMTK[ RNTPPRNTMVMXNYOYRXWUb RVMXOXRWWTb", + 2134: " 44F]GQHOJMMMNNNPMUMXNZO[ RLMMNMPLULXMZO[Q[SZUXWUXRYMYIXGVFTFRHRJSMUPWRZT RSZUWVUWRXMXIWGVF", + 2135: " 15LXRMPTOXOZP[S[UYVW RSMQTPXPZQ[", + 2136: " 29H\\NMJ[ ROMK[ RXMYNZNYMWMUNQROSMS ROSQTSZT[ ROSPTRZS[U[WZYW", + 2137: " 23H\\KFMFOGPHQJWXXZY[ RMFOHPJVXWZY[Z[ RRMJ[ RRMK[", + 2138: " 28F]MMGb RNMHb RMPLVLYN[P[RZTXVU RXMUXUZV[Y[[Y\\W RYMVXVZW[", + 2139: " 24H\\NML[ ROMNSMXL[ RYMXQVU RZMYPXRVUTWQYOZL[ RKMOM", + 2140: " 45IZTFRGQHQIRJUKXK RUKQLOMNONQPSSTVT RUKRLPMOOOQQSST RSTOUMVLXLZN\\S^T_TaRbPb RSTPUNVMXMZO\\S^", + 2141: " 32I[RMONMQLTLWMYNZP[R[UZWWXTXQWOVNTMRM RRMPNNQMTMXNZ RR[TZVWWTWPVN", + 2142: " 22G]PNL[ RPNM[ RVNV[ RVNW[ RIPKNNM[M RIPKONN[N", + 2143: " 31H[LVMYNZP[R[UZWWXTXQWOVNTMRMONMQLTHb RR[TZVWWTWPVN RRMPNNQMTIb", + 2144: " 35H][MQMNNLQKTKWLYMZO[Q[TZVWWTWQVOUNSM RQMONMQLTLXMZ RQ[SZUWVTVPUN RUN[N", + 2145: " 16H\\SNP[ RSNQ[ RJPLNOMZM RJPLOONZN", + 2146: " 31H\\IQJOLMOMPNPPNVNYP[ RNMONOPMVMYNZP[Q[TZVXXUYRYOXMWNXOYR RXUYO", + 2147: " 37G]ONMOKQJTJWKYLZN[Q[TZWXYUZRZOXMVMTORSPXMb RJWLYNZQZTYWWYU RZOXNVNTPRSPYNb", + 2148: " 23I[KMMMONPPU_VaWb RMMNNOPT_UaWbYb RZMYOWRM]K`Jb", + 2149: " 34F]UFOb RVFNb RGQHOJMMMNNNPMUMXOZRZTYWVYS RLMMNMPLULXMZO[R[TZVXXUYS[M", + 2150: " 44F]JQLOONNMLNJQITIWJZK[M[OZQWRT RIWJYKZMZOYQW RQTQWRZS[U[WZYWZTZQYNXMWNYOZQ RQWRYSZUZWYYW", + 2151: " 39H]XMVTUXUZV[Y[[Y\\W RYMWTVXVZW[ RVTVQUNSMQMNNLQKTKWLYMZO[Q[SZUWVT RQMONMQLTLXMZ", + 2152: " 36H[PFLSLVMYNZ RQFMS RMSNPPNRMTMVNWOXQXTWWUZR[P[NZMWMS RVNWPWTVWTZR[ RMFQF", + 2153: " 25I[WPWQXQXPWNUMRMONMQLTLWMYNZP[R[UZWW RRMPNNQMTMXNZ", + 2154: " 42H]ZFVTUXUZV[Y[[Y\\W R[FWTVXVZW[ RVTVQUNSMQMNNLQKTKWLYMZO[Q[SZUWVT RQMONMQLTLXMZ RWF[F", + 2155: " 26I[MVQUTTWRXPWNUMRMONMQLTLWMYNZP[R[UZWX RRMPNNQMTMXNZ", + 2156: " 35KZZGYHZI[H[GZFXFVGUHTJSMP[O_Na RXFVHUJTNRWQ[P^O`NaLbJbIaI`J_K`Ja ROMYM", + 2157: " 43H\\YMU[T^RaObLbJaI`I_J^K_J` RXMT[S^QaOb RVTVQUNSMQMNNLQKTKWLYMZO[Q[SZUWVT RQMONMQLTLXMZ", + 2158: " 31H]PFJ[ RQFK[ RMTOPQNSMUMWNXOXQVWVZW[ RUMWOWQUWUZV[Y[[Y\\W RMFQF", + 2159: " 26LYUFTGUHVGUF RMQNOPMSMTNTQRWRZS[ RRMSNSQQWQZR[U[WYXW", + 2160: " 32LYVFUGVHWGVF RNQOOQMTMUNUQR[Q^P`OaMbKbJaJ`K_L`Ka RSMTNTQQ[P^O`Mb", + 2161: " 34H\\PFJ[ RQFK[ RXNWOXPYOYNXMWMUNQROSMS ROSQTSZT[ ROSPTRZS[U[WZYW RMFQF", + 2162: " 18MYUFQTPXPZQ[T[VYWW RVFRTQXQZR[ RRFVF", + 2163: " 52AbBQCOEMHMINIPHTF[ RGMHNHPGTE[ RHTJPLNNMPMRNSOSQP[ RPMRORQO[ RRTTPVNXMZM\\N]O]Q[W[Z\\[ RZM\\O\\QZWZZ[[^[`YaW", + 2164: " 37F]GQHOJMMMNNNPMTK[ RLMMNMPLTJ[ RMTOPQNSMUMWNXOXQVWVZW[ RUMWOWQUWUZV[Y[[Y\\W", + 2165: " 32I[RMONMQLTLWMYNZP[R[UZWWXTXQWOVNTMRM RRMPNNQMTMXNZ RR[TZVWWTWPVN", + 2166: " 42G\\HQIOKMNMONOPNTJb RMMNNNPMTIb RNTOQQNSMUMWNXOYQYTXWVZS[Q[OZNWNT RWNXPXTWWUZS[ RFbMb", + 2167: " 33H\\XMRb RYMSb RVTVQUNSMQMNNLQKTKWLYMZO[Q[SZUWVT RQMONMQLTLXMZ RObVb", + 2168: " 26IZJQKOMMPMQNQPPTN[ ROMPNPPOTM[ RPTRPTNVMXMYNYOXPWOXN", + 2169: " 28J[XOXPYPYOXNUMRMONNONQORVVWW RNPOQVUWVWYVZS[P[MZLYLXMXMY", + 2170: " 18KYTFPTOXOZP[S[UYVW RUFQTPXPZQ[ RNMWM", + 2171: " 37F]GQHOJMMMNNNQLWLYN[ RLMMNMQKWKYLZN[P[RZTXVT RXMVTUXUZV[Y[[Y\\W RYMWTVXVZW[", + 2172: " 26H\\IQJOLMOMPNPQNWNYP[ RNMONOQMWMYNZP[Q[TZVXXUYQYMXMYO", + 2173: " 41C`DQEOGMJMKNKQIWIYK[ RIMJNJQHWHYIZK[M[OZQXRV RTMRVRYSZU[W[YZ[X\\V]R]M\\M]O RUMSVSYU[", + 2174: " 42H\\KQMNOMRMSOSR RQMRORRQVPXNZL[K[JZJYKXLYKZ RQVQYR[U[WZYW RYNXOYPZOZNYMXMVNTPSRRVRYS[", + 2175: " 41G\\HQIOKMNMONOQMWMYO[ RMMNNNQLWLYMZO[Q[SZUXWT RZMV[U^SaPbMbKaJ`J_K^L_K` RYMU[T^RaPb", + 2176: " 31H\\YMXOVQNWLYK[ RLQMOOMRMVO RMOONRNVOXO RLYNYRZUZWY RNYR[U[WYXW", + 2177: " 43G^VGUHVIWHWGUFRFOGMILLL[ RRFPGNIMLM[ R\\G[H\\I]H]G\\FZFXGWIW[ RZFYGXIX[ RIM[M RI[P[ RT[[[", + 2178: " 33G]WGVHWIXHWGUFRFOGMILLL[ RRFPGNIMLM[ RWMW[ RXMX[ RIMXM RI[P[ RT[[[", + 2179: " 35G]VGUHVIWHWGUF RXFRFOGMILLL[ RRFPGNIMLM[ RWHW[ RXFX[ RIMWM RI[P[ RT[[[", + 2180: " 54BcRGQHRISHRGPFMFJGHIGLG[ RMFKGIIHLH[ R]G\\H]I^H]G[FXFUGSIRLR[ RXFVGTISLS[ R]M][ R^M^[ RDM^M RD[K[ RO[V[ RZ[a[", + 2181: " 56BcRGQHRISHRGPFMFJGHIGLG[ RMFKGIIHLH[ R\\G[H\\I]H]G[F R^FXFUGSIRLR[ RXFVGTISLS[ R]H][ R^F^[ RDM]M RD[K[ RO[V[ RZ[a[", + 2182: " 12MXRMR[ RSMS[ ROMSM RO[V[", + 2184: " 25IZWNUMRMONMPLSLVMYNZQ[T[VZ RRMPNNPMSMVNYOZQ[ RMTUT", + 2185: " 43I\\TFQGOJNLMOLTLXMZO[Q[TZVWWUXRYMYIXGVFTF RTFRGPJOLNOMTMXNZO[ RQ[SZUWVUWRXMXIWGVF RNPWP", + 2186: " 42G]UFOb RVFNb RQMMNKPJSJVKXMZP[S[WZYXZUZRYPWNTMQM RQMNNLPKSKVLXNZP[ RS[VZXXYUYRXPVNTM", + 2187: " 27I[TMVNXPXOWNTMQMNNMOLQLSMUOWSZ RQMONNOMQMSNUSZT\\T^S_Q_", + 2190: " 45G]LMKNJPJRKUOYP[ RJRKTOXP[P]O`MbLbKaJ_J\\KXMTOQRNTMVMYNZPZTYXWZU[T[SZSXTWUXTY RVMXNYPYTXXWZ", + 2191: " 69E_YGXHYIZHYGWFTFQGOINKMNLRJ[I_Ha RTFRGPIOKNNLWK[J^I`HaFbDbCaC`D_E`Da R_G^H_I`H`G_F]F[GZHYJXMU[T_Sa R]F[HZJYNWWV[U^T`SaQbObNaN`O_P`Oa RIM^M", + 2192: " 52F^[GZH[I\\H[GXFUFRGPIOKNNMRK[J_Ia RUFSGQIPKONMWL[K^J`IaGbEbDaD`E_F`Ea RYMWTVXVZW[Z[\\Y]W RZMXTWXWZX[ RJMZM", + 2193: " 54F^YGXHYIZHZGXF R\\FUFRGPIOKNNMRK[J_Ia RUFSGQIPKONMWL[K^J`IaGbEbDaD`E_F`Ea R[FWTVXVZW[Z[\\Y]W R\\FXTWXWZX[ RJMYM", + 2194: " 86@cTGSHTIUHTGRFOFLGJIIKHNGRE[D_Ca ROFMGKIJKINGWF[E^D`CaAb?b>a>`?_@`?a R`G_H`IaH`G]FZFWGUITKSNRRP[O_Na RZFXGVIUKTNRWQ[P^O`NaLbJbIaI`J_K`Ja R^M\\T[X[Z\\[_[aYbW R_M]T\\X\\Z][ RDM_M", + 2195: " 88@cTGSHTIUHTGRFOFLGJIIKHNGRE[D_Ca ROFMGKIJKINGWF[E^D`CaAb?b>a>`?_@`?a R^G]H^I_H_G]F RaFZFWGUITKSNRRP[O_Na RZFXGVIUKTNRWQ[P^O`NaLbJbIaI`J_K`Ja R`F\\T[X[Z\\[_[aYbW RaF]T\\X\\Z][ RDM^M", + 2196: " 20LYMQNOPMSMTNTQRWRZS[ RRMSNSQQWQZR[U[WYXW", + 2200: " 40H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF RQFOGNHMJLOLRMWNYOZQ[ RS[UZVYWWXRXOWJVHUGSF", + 2201: " 11H\\NJPISFS[ RRGR[ RN[W[", + 2202: " 45H\\LJMKLLKKKJLHMGPFTFWGXHYJYLXNUPPRNSLUKXK[ RTFVGWHXJXLWNTPPR RKYLXNXSZVZXYYX RNXS[W[XZYXYV", + 2203: " 47H\\LJMKLLKKKJLHMGPFTFWGXIXLWNTOQO RTFVGWIWLVNTO RTOVPXRYTYWXYWZT[P[MZLYKWKVLUMVLW RWQXTXWWYVZT[", + 2204: " 13H\\THT[ RUFU[ RUFJUZU RQ[X[", + 2205: " 39H\\MFKP RKPMNPMSMVNXPYSYUXXVZS[P[MZLYKWKVLUMVLW RSMUNWPXSXUWXUZS[ RMFWF RMGRGWF", + 2206: " 48H\\WIVJWKXJXIWGUFRFOGMILKKOKULXNZQ[S[VZXXYUYTXQVOSNRNOOMQLT RRFPGNIMKLOLUMXOZQ[ RS[UZWXXUXTWQUOSN", + 2207: " 31H\\KFKL RKJLHNFPFUIWIXHYF RLHNGPGUI RYFYIXLTQSSRVR[ RXLSQRSQVQ[", + 2208: " 63H\\PFMGLILLMNPOTOWNXLXIWGTFPF RPFNGMIMLNNPO RTOVNWLWIVGTF RPOMPLQKSKWLYMZP[T[WZXYYWYSXQWPTO RPONPMQLSLWMYNZP[ RT[VZWYXWXSWQVPTO", + 2209: " 48H\\XMWPURRSQSNRLPKMKLLINGQFSFVGXIYLYRXVWXUZR[O[MZLXLWMVNWMX RQSORMPLMLLMIOGQF RSFUGWIXLXRWVVXTZR[", + 2210: " 6MWRYQZR[SZRY", + 2211: " 8MWR[QZRYSZS\\R^Q_", + 2212: " 12MWRMQNROSNRM RRYQZR[SZRY", + 2213: " 14MWRMQNROSNRM RR[QZRYSZS\\R^Q_", + 2214: " 15MWRFQHRTSHRF RRHRN RRYQZR[SZRY", + 2215: " 32I[MJNKMLLKLJMHNGPFSFVGWHXJXLWNVORQRT RSFUGVHWJWLVNTP RRYQZR[SZRY", + 2216: " 6NVRFQM RSFQM", + 2217: " 12JZNFMM ROFMM RVFUM RWFUM", + 2218: " 14KYQFOGNINKOMQNSNUMVKVIUGSFQF", + 2219: " 9JZRFRR RMIWO RWIMO", + 2220: " 3G][BIb", + 2221: " 20KYVBTDRGPKOPOTPYR]T`Vb RTDRHQKPPPTQYR\\T`", + 2222: " 20KYNBPDRGTKUPUTTYR]P`Nb RPDRHSKTPTTSYR\\P`", + 2223: " 12KYOBOb RPBPb ROBVB RObVb", + 2224: " 12KYTBTb RUBUb RNBUB RNbUb", + 2225: " 40KYTBRCQDPFPHQJRKSMSOQQ RRCQEQGRISJTLTNSPORSTTVTXSZR[Q]Q_Ra RQSSUSWRYQZP\\P^Q`RaTb", + 2226: " 40KYPBRCSDTFTHSJRKQMQOSQ RRCSESGRIQJPLPNQPURQTPVPXQZR[S]S_Ra RSSQUQWRYSZT\\T^S`RaPb", + 2227: " 4KYUBNRUb", + 2228: " 4KYOBVROb", + 2229: " 3NVRBRb", + 2230: " 6KYOBOb RUBUb", + 2231: " 3E_IR[R", + 2232: " 6E_RIR[ RIR[R", + 2233: " 9F^RJR[ RJRZR RJ[Z[", + 2234: " 9F^RJR[ RJJZJ RJRZR", + 2235: " 6G]KKYY RYKKY", + 2236: " 6MWRQQRRSSRRQ", + 2237: " 15E_RIQJRKSJRI RIR[R RRYQZR[SZRY", + 2238: " 6E_IO[O RIU[U", + 2239: " 9E_YIK[ RIO[O RIU[U", + 2240: " 9E_IM[M RIR[R RIW[W", + 2241: " 4F^ZIJRZ[", + 2242: " 4F^JIZRJ[", + 2243: " 10F^ZFJMZT RJVZV RJ[Z[", + 2244: " 10F^JFZMJT RJVZV RJ[Z[", + 2245: " 21F_[WYWWVUTRPQOONMNKOJQJSKUMVOVQURTUPWNYM[M", + 2246: " 24F^IUISJPLONOPPTSVTXTZS[Q RISJQLPNPPQTTVUXUZT[Q[O", + 2247: " 8G]JTROZT RJTRPZT", + 2248: " 7LXTFOL RTFUGOL", + 2249: " 7LXPFUL RPFOGUL", + 2250: " 18H\\KFLHNJQKSKVJXHYF RKFLINKQLSLVKXIYF", + 2251: " 8MWRHQGRFSGSIRKQL", + 2252: " 8MWSFRGQIQKRLSKRJ", + 2253: " 8MWRHSGRFQGQIRKSL", + 2254: " 8MWQFRGSISKRLQKRJ", + 2255: " 10E[HMLMRY RKMR[ R[BR[", + 2256: " 13F^ZJSJOKMLKNJQJSKVMXOYSZZZ", + 2257: " 13F^JJJQKULWNYQZSZVYXWYUZQZJ", + 2258: " 13F^JJQJUKWLYNZQZSYVWXUYQZJZ", + 2259: " 13F^JZJSKOLMNKQJSJVKXMYOZSZZ", + 2260: " 16F^ZJSJOKMLKNJQJSKVMXOYSZZZ RJRVR", + 2261: " 11E_XP[RXT RUMZRUW RIRZR", + 2262: " 11JZPLRITL RMORJWO RRJR[", + 2263: " 11E_LPIRLT ROMJROW RJR[R", + 2264: " 11JZPXR[TX RMURZWU RRIRZ", + 2265: " 44I\\XRWOVNTMRMONMQLTLWMYNZP[R[UZWXXUYPYKXHWGUFRFPGOHOIPIPH RRMPNNQMTMXNZ RR[TZVXWUXPXKWHUF", + 2266: " 15H\\JFR[ RKFRY RZFR[ RJFZF RKGYG", + 2267: " 10AbDMIMRY RHNR[ Rb:R[", + 2268: " 32F^[CZD[E\\D\\C[BYBWCUETGSJRNPZO^N` RVDUFTJRVQZP]O_MaKbIbHaH`I_J`Ia", + 2269: " 50F^[CZD[E\\D\\C[BYBWCUETGSJRNPZO^N` RVDUFTJRVQZP]O_MaKbIbHaH`I_J`Ia RQKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK", + 2270: " 26F_\\S[UYVWVUUTTQPPONNLNJOIQISJULVNVPUQTTPUOWNYN[O\\Q\\S", + 2271: " 32F^[FI[ RNFPHPJOLMMKMIKIIJGLFNFPGSHVHYG[F RWTUUTWTYV[X[ZZ[X[VYTWT", + 2272: " 49F_[NZO[P\\O\\N[MZMYNXPVUTXRZP[M[JZIXIUJSPORMSKSIRGPFNGMIMKNNPQUXWZZ[[[\\Z\\Y RM[KZJXJUKSMQ RMKNMVXXZZ[", + 2273: " 56E`WNVLTKQKOLNMMPMSNUPVSVUUVS RQKOMNPNSOUPV RWKVSVUXVZV\\T]Q]O\\L[JYHWGTFQFNGLHJJILHOHRIUJWLYNZQ[T[WZYYZX RXKWSWUXV", + 2274: " 42H\\PBP_ RTBT_ RXIWJXKYJYIWGTFPFMGKIKKLMMNOOUQWRYT RKKMMONUPWQXRYTYXWZT[P[MZKXKWLVMWLX", + 2275: " 12H]SFLb RYFRb RLQZQ RKWYW", + 2276: " 46JZUITJUKVJVIUGSFQFOGNINKOMQOVR ROMTPVRWTWVVXTZ RPNNPMRMTNVPXU[ RNVSYU[V]V_UaSbQbOaN_N^O]P^O_", + 2277: " 30JZRFQHRJSHRF RRFRb RRQQTRbSTRQ RLMNNPMNLLM RLMXM RTMVNXMVLTM", + 2278: " 56JZRFQHRJSHRF RRFRT RRPQRSVRXQVSRRP RRTRb RR^Q`RbS`R^ RLMNNPMNLLM RLMXM RTMVNXMVLTM RL[N\\P[NZL[ RL[X[ RT[V\\X[VZT[", + 2279: " 12I\\XFX[ RKFXF RPPXP RK[X[", + 2281: " 38E`QFNGKIILHOHRIUKXNZQ[T[WZZX\\U]R]O\\LZIWGTFQF RROQPQQRRSRTQTPSORO RRPRQSQSPRP", + 2282: " 45J[PFNGOIQJ RPFOGOI RUFWGVITJ RUFVGVI RQJOKNLMNMQNSOTQUTUVTWSXQXNWLVKTJQJ RRUR[ RSUS[ RNXWX", + 2283: " 27I\\RFOGMILLLMMPORRSSSVRXPYMYLXIVGSFRF RRSR[ RSSS[ RNWWW", + 2284: " 28D`PFMGJIHLGOGSHVJYM[P\\T\\W[ZY\\V]S]O\\LZIWGTFPF RRFR\\ RGQ]Q", + 2285: " 31G`PMMNKPJSJTKWMYPZQZTYVWWTWSVPTNQMPM R]GWG[HUN R]G]M\\IVO R\\HVN", + 2286: " 28F\\IIJGLFOFQGRIRLQOPQNSKU ROFPGQIQMPPNS RVFT[ RWFS[ RKUYU", + 2287: " 30I\\MFMU RNFMQ RMQNOONQMTMWNXPXRWTUV RTMVNWPWRTXTZU[W[YY RKFNF", + 2288: " 44I\\RNOOMQLTLUMXOZR[S[VZXXYUYTXQVOSNRN RRHNJRFRN RSHWJSFSN RRSQTQURVSVTUTTSSRS RRTRUSUSTRT", + 2289: " 37G^QHRFR[ RTHSFS[ RJHKFKMLPNRQSRS RMHLFLNMQ R[HZFZMYPWRTSSS RXHYFYNXQ RNWWW", + 2290: " 31G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[Y[YVX[", + 2291: " 24H[YGUGQHNJLMKPKSLVNYQ[U\\Y\\ RYGVHSJQMPPPSQVSYV[Y\\", + 2292: " 27F_OQMQKRJSIUIWJYKZM[O[QZRYSWSURSQROQ RSHPQ RZJRR R\\QST", + 2293: " 12H\\OKUY RUKOY RKOYU RYOKU", + 2294: " 48F^NVLUKUIVHXHYI[K\\L\\N[OYOXNVKRJOJMKJMHPGTGWHYJZMZOYRVVUXUYV[X\\Y\\[[\\Y\\X[VYUXUVV RJMKKMIPHTHWIYKZM", + 2295: " 48F^NMLNKNIMHKHJIHKGLGNHOJOKNMKQJTJVKYM[P\\T\\W[YYZVZTYQVMUKUJVHXGYG[H\\J\\K[MYNXNVM RJVKXMZP[T[WZYXZV", + 2301: " 40F_JMILIJJHLGNGPHQIRKSP RIJKHMHOIPJQLRPR[ R[M\\L\\J[HYGWGUHTISKRP R\\JZHXHVIUJTLSPS[", + 2302: " 51F^IGJKKMMOPPTPWOYMZK[G RIGJJKLMNPOTOWNYLZJ[G RPONPMQLSLVMXOZQ[S[UZWXXVXSWQVPTO RPPNQMSMVNY RVYWVWSVQTP", + 2303: " 30F^MJMV RNKNU RVKVU RWJWV RIGKIMJPKTKWJYI[G RIYKWMVPUTUWVYW[Y", + 2304: " 48F^[ILIJJILINJPLQNQPPQNQLPJ[J RIMJOKPMQ RQMPKOJMI RIXXXZW[U[SZQXPVPTQSSSUTWIW R[TZRYQWP RSTTVUWWX", + 2305: " 48F]OUMTLTJUIWIXJZL[M[OZPXPWOUJPINIKJILHOGSGWHYJZLZOYRVUUWUYV[X[YZZX RMSKPJNJKKILH RSGVHXJYLYOXRVU", + 2306: " 48G_HKKHMKMV RJILLLV RMKPHRKRU ROIQLQU RRKUHWKW[ RTIVLV[ RWKZH[J\\M\\P[SZUXWUYP[ RYIZJ[M[PZSYUWWTYP[", + 2307: " 41F^ISMSLRKOKMLJNHQGSGVHXJYMYOXRWS[S RITOTMRLOLMMJOHQG RSGUHWJXMXOWRUT[T RKXYX RKYYY", + 2308: " 30F_GLJIMLMX RIJLMLX RMLPISLSX ROJRMRX RSLVIYLYW[Y RUJXMXXZZ]W", + 2309: " 33G]ZIJY RZIWJQJ RXKUKQJ RZIYLYR RXKXNYR RQRJR RPSMSJR RQRQY RPSPVQY", + 2310: " 33F^HOJKOU RJMOWRPWPZO[M[KZIXHWHUITKTMUPVRWUWXUZ RWHVIUKUMWQXTXWWYUZ", + 2311: " 36F^IOLLPN RKMOORLUN RQMTOWLYN RVMXO[L RIULRPT RKSOURRUT RQSTUWRYT RVSXU[R", + 2312: " 48F^JHNJPLQOQRPUNWJY RJHMIOJQLRO RRRQUOWMXJY RZHWIUJSLRO RRRSUUWWXZY RZHVJTLSOSRTUVWZY RIP[P RIQ[Q", + 2317: " 12NVQQQSSSSQQQ RQQSS RSQQS", + 2318: " 18JZMPQRTTVVWYW[V]U^ RMQST RMRPSTUVWWY", + 2319: " 18JZWKVMTOPQMR RSPMS RUFVGWIWKVNTPQRMT", + 2320: " 36H\\SMONLPKRKTLVNWQWUVXTYRYPXNVMSM RXNSM RVMQNLP RONKR RLVQW RNWSVXT RUVYR", + 2321: " 36H\\SMONLPKRKTLVNWQWUVXTYRYPXNVMSM RXNSM RVMQNLP RONKR RLVQW RNWSVXT RUVYR", + 2322: " 34J[SMPNNPMRMTNVPWRWUVWTXRXPWNUMSM ROPUM RNRVN RMTWO RNUXP ROVWR RPWVT", + 2323: " 18JZOGO^ RUFU] RMNWL RMOWM RMWWU RMXWV", + 2324: " 18JZNFNX RVLV^ RNNVL RNOVM RNWVU RNXVV", + 2325: " 25JZNBNW RNNQLTLVMWOWQVSSUQVNW RNNQMTMVN RUMVOVQUSSU", + 2326: " 18E_HIHL R\\I\\L RHI\\I RHJ\\J RHK\\K RHL\\L", + 2327: " 18JZMNMQ RWNWQ RMNWN RMOWO RMPWP RMQWQ", + 2328: " 49JZMLWX RMLONQOTOVNWMWKUKUMTO RONTO RQOWM RVKVN RULWL RWXUVSUPUNVMWMYOYOWPU RUVPU RSUMW RNVNY RMXOX", + 2329: " 26JZPOOMOKMKMMNNPOSOUNWL RNKNN RMLOL RMMSO RPOUN RWLWY", + 2330: " 86A^GfHfIeIdHcGcFdFfGhIiKiNhPfQdR`RUQ;Q4R/S-U,V,X-Y/Y3X6W8U;P?JCHEFHEJDNDREVGYJ[N\\R\\V[XZZW[T[PZMYKWITHPHMIKKJNJRKUMW RGdGeHeHdGd RU;Q?LCIFGIFKENERFVGXJ[ RR\\U[WZYWZTZPYMXKVITH", + 2331: "103EfNSOUQVSVUUVSVQUOSNQNOONPMSMVNYP[S\\V\\Y[[Y\\W]T]P\\MZJXIUHRHOIMJKLIOHSHXI]KaMcPeTfYf]e`cba RKLJNIRIXJ\\L`NbQdUeYe]d_cba RPOTO ROPUP RNQVQ RNRVR RNSVS ROTUT RPUTU RaLaNcNcLaL RbLbN RaMcM RaVaXcXcVaV RbVbX RaWcW", + 2332: " 30D`H@Hd RM@Md RW@Wd R\\@\\d RMMWK RMNWL RMOWM RMWWU RMXWV RMYWW", + 2367: " 12NVQQQSSSSQQQ RQQSS RSQQS", + 2368: " 18JZMPQRTTVVWYW[V]U^ RMQST RMRPSTUVWWY", + 2369: " 18JZWKVMTOPQMR RSPMS RUFVGWIWKVNTPQRMT", + 2370: " 32H\\PMMNLOKQKSLUMVPWTWWVXUYSYQXOWNTMPM RMNLPLSMUNVPW RWVXTXQWOVNTM", + 2371: " 36H\\SMONLPKRKTLVNWQWUVXTYRYPXNVMSM RXNSM RVMQNLP RONKR RLVQW RNWSVXT RUVYR", + 2372: " 34J[SMPNNPMRMTNVPWRWUVWTXRXPWNUMSM ROPUM RNRVN RMTWO RNUXP ROVWR RPWVT", + 2373: " 18JZOGO^ RUFU] RMNWL RMOWM RMWWU RMXWV", + 2374: " 18JZNFNX RVLV^ RNNVL RNOVM RNWVU RNXVV", + 2375: " 25JZNBNW RNNQLTLVMWOWQVSSUQVNW RNNQMTMVN RUMVOVQUSSU", + 2376: " 18E_HIHL R\\I\\L RHI\\I RHJ\\J RHK\\K RHL\\L", + 2377: " 18JZMNMQ RWNWQ RMNWN RMOWO RMPWP RMQWQ", + 2378: " 36JZQCVMRTRU RULQS RTITKPRRUUY RW\\UYSXQXOYN[N]O_Ra RW\\UZSYOYO]P_Ra RSXPZN]", + 2379: " 26JZPOOMOKMKMMNNPOSOUNWL RNKNN RMLOL RMMSO RPOUN RWLSY", + 2380: " 86A^GfHfIeIdHcGcFdFfGhIiKiNhPfQdR`RUQ;Q4R/S-U,V,X-Y/Y3X6W8U;P?JCHEFHEJDNDREVGYJ[N\\R\\V[XZZW[T[PZMYKWITHPHMIKKJNJRKUMW RGdGeHeHdGd RU;Q?LCIFGIFKENERFVGXJ[ RR\\U[WZYWZTZPYMXKVITH", + 2381: " 89IjNQOOQNSNUOVQVSUUSVQVOUNTMQMNNKPISHWH[I^K`NaRaW`[_]]`ZcVfQiMk RWHZI]K_N`R`W_[^]\\`YcTgQi RPOTO ROPUP RNQVQ RNRVR RNSVS ROTUT RPUTU ReLeNgNgLeL RfLfN ReMgM ReVeXgXgVeV RfVfX ReWgW", + 2382: " 85D`H>Hf RI>If RM>Mf RQBSBSDQDQAR?T>W>Y?[A\\D\\I[LYNWOUOSNRLQNOQNROSQVRXSVUUWUYV[X\\[\\`[cYeWfTfReQcQ`S`SbQb RRBRD RQCSC RY?ZA[D[IZLYN RRLRNPQNRPSRVRX RYVZX[[[`ZcYe RR`Rb RQaSa", + 2401: " 21AcHBHb RIBIb R[B[b R\\B\\b RDB`B RDbMb RWb`b", + 2402: " 23BaGBQPFb RFBPP REBPQ REB\\B^I[B RGa\\a RFb\\b^[[b", + 2403: " 28I[X+U1R8P=OANFMNMVN^OcPgRlUsXy RU1S6Q": 2242, + "~": 2246, + "@": 2273, + "\\": 804 + }[x]; +} +const CONFIG = { + SUB_SUP_SCALE: 0.5, + SQRT_MAG_SCALE: 0.5, + FRAC_SCALE: 0.85, + LINE_SPACING: 0.5, + FRAC_SPACING: 0.4 +}; +function tokenize(str) { + str = str.replace(/\n/g, " "); + let i = 0; + const tokens = []; + let curr = ""; + while (i < str.length) { + if (str[i] == " ") { + if (curr.length) { + tokens.push(curr); + curr = ""; + } + } else if (str[i] == "\\") { + if (curr.length == 1 && curr[0] == "\\") { + curr += str[i]; + tokens.push(curr); + curr = ""; + } else { + if (curr.length) { + tokens.push(curr); + } + curr = str[i]; + } + } else if (/[A-Za-z0-9\.]/.test(str[i])) { + curr += str[i]; + } else { + if (curr.length && curr != "\\") { + tokens.push(curr); + curr = ""; + } + curr += str[i]; + tokens.push(curr); + curr = ""; + } + i++; + } + if (curr.length) + tokens.push(curr); + return tokens; +} +function parseAtom(x) { + return { + type: SYMB[x] ? "symb" : "char", + mode: "math", + text: x, + chld: [], + bbox: null + }; +} +function parse(tokens) { + let i = 0; + let expr = { + type: "node", + text: "", + mode: "math", + chld: [], + bbox: null + }; + function takeOpt() { + if (tokens[i] != "[") { + return null; + } + let lvl = 0; + let j = i; + while (j < tokens.length) { + if (tokens[j] == "[") { + lvl++; + } else if (tokens[j] == "]") { + lvl--; + if (!lvl) { + break; + } + } + j++; + } + const ret = parse(tokens.slice(i + 1, j)); + i = j; + return ret; + } + function takeN(n) { + let j = i; + let j0 = j; + let lvl = 0; + let cnt = 0; + const ret = []; + while (j < tokens.length) { + if (tokens[j] == "{") { + if (!lvl) { + j0 = j; + } + lvl++; + } else if (tokens[j] == "}") { + lvl--; + if (!lvl) { + ret.push(parse(tokens.slice(j0 + 1, j))); + cnt++; + if (cnt == n) { + break; + } + } + } else { + if (lvl == 0) { + ret.push(parseAtom(tokens[j])); + cnt++; + if (cnt == n) { + break; + } + } + } + j++; + } + i = j; + return ret; + } + for (i = 0; i < tokens.length; i++) { + const s = SYMB[tokens[i]]; + const e = { + type: "", + text: tokens[i], + mode: "math", + chld: [], + bbox: null + }; + if (s) { + if (s.arity) { + i++; + e.type = "func"; + let opt = null; + if (s.flags.opt) { + opt = takeOpt(); + if (opt) + i++; + } + const chld = takeN(s.arity); + e.chld = chld; + if (opt) { + e.chld.push(opt); + } + } else { + e.type = "symb"; + } + } else { + if (tokens[i] == "{") { + e.type = "node"; + e.text = ""; + e.chld = takeN(1); + } else { + e.type = "char"; + } + } + expr.chld.push(e); + } + if (expr.chld.length == 1) { + expr = expr.chld[0]; + } + return expr; +} +function environments(exprs) { + let i = 0; + while (i < exprs.length) { + if (exprs[i].text == "\\begin") { + let j; + for (j = i; j < exprs.length; j++) { + if (exprs[j].text == "\\end") { + break; + } + } + const es = exprs.splice(i + 1, j - (i + 1)); + environments(es); + exprs[i].text = exprs[i].chld[0].text; + exprs[i].chld = es; + exprs.splice(i + 1, 1); + } + i++; + } +} +function transform(expr, sclx, scly, x, y, notFirst) { + if (scly == null) { + scly = sclx; + } + if (!expr.bbox) + return; + if (notFirst) { + expr.bbox.x *= sclx; + expr.bbox.y *= scly; + } + expr.bbox.w *= sclx; + expr.bbox.h *= scly; + for (let i = 0; i < expr.chld.length; i++) { + transform(expr.chld[i], sclx, scly, 0, 0, true); + } + expr.bbox.x += x; + expr.bbox.y += y; +} +function computeBbox(exprs) { + let xmin = Infinity; + let xmax = -Infinity; + let ymin = Infinity; + let ymax = -Infinity; + for (let i = 0; i < exprs.length; i++) { + if (!exprs[i].bbox) { + continue; + } + xmin = Math.min(xmin, exprs[i].bbox.x); + ymin = Math.min(ymin, exprs[i].bbox.y); + xmax = Math.max(xmax, exprs[i].bbox.x + exprs[i].bbox.w); + ymax = Math.max(ymax, exprs[i].bbox.y + exprs[i].bbox.h); + } + return { x: xmin, y: ymin, w: xmax - xmin, h: ymax - ymin }; +} +function group(exprs) { + if (!exprs.length) { + return null; + } + const bbox = computeBbox(exprs); + for (let i = 0; i < exprs.length; i++) { + if (!exprs[i].bbox) { + continue; + } + exprs[i].bbox.x -= bbox.x; + exprs[i].bbox.y -= bbox.y; + } + const expr = { + type: "node", + text: "", + mode: "math", + chld: exprs, + bbox + }; + return expr; +} +function align(exprs, alignment = "center") { + for (let i = 0; i < exprs.length; i++) { + if (exprs[i].text == "^" || exprs[i].text == "'") { + let h = 0; + let j = i; + while (j > 0 && (exprs[j].text == "^" || exprs[j].text == "_" || exprs[j].text == "'")) { + j--; + } + h = exprs[j].bbox.y; + if (exprs[i].text == "'") { + exprs[i].bbox.y = h; + } else { + transform(exprs[i], CONFIG.SUB_SUP_SCALE, null, 0, 0); + if (SYMB[exprs[j].text] && SYMB[exprs[j].text].flags.big) { + exprs[i].bbox.y = h - exprs[i].bbox.h; + } else if (exprs[j].text == "\\int") { + exprs[i].bbox.y = h; + } else { + exprs[i].bbox.y = h - exprs[i].bbox.h / 2; + } + } + } else if (exprs[i].text == "_") { + let h = 1; + let j = i; + while (j > 0 && (exprs[j].text == "^" || exprs[j].text == "_" || exprs[j].text == "'")) { + j--; + } + h = exprs[j].bbox.y + exprs[j].bbox.h; + transform(exprs[i], CONFIG.SUB_SUP_SCALE, null, 0, 0); + if (SYMB[exprs[j].text] && SYMB[exprs[j].text].flags.big) { + exprs[i].bbox.y = h; + } else if (exprs[j].text == "\\int") { + exprs[i].bbox.y = h - exprs[i].bbox.h; + } else { + exprs[i].bbox.y = h - exprs[i].bbox.h / 2; + } + } + } + function searchHigh(i, l, r, dir, lvl0) { + let j = i; + let lvl = lvl0; + let ymin = Infinity; + let ymax = -Infinity; + while (dir > 0 ? j < exprs.length : j >= 0) { + if (exprs[j].text == l) { + lvl++; + } else if (exprs[j].text == r) { + lvl--; + if (lvl == 0) { + break; + } + } else if (exprs[j].text == "^" || exprs[j].text == "_") + ; + else if (exprs[j].bbox) { + ymin = Math.min(ymin, exprs[j].bbox.y); + ymax = Math.max(ymax, exprs[j].bbox.y + exprs[j].bbox.h); + } + j += dir; + } + return [ymin, ymax]; + } + for (let i = 0; i < exprs.length; i++) { + if (exprs[i].text == "\\left") { + const [ymin, ymax] = searchHigh(i, "\\left", "\\right", 1, 0); + if (ymin != Infinity && ymax != -Infinity) { + exprs[i].bbox.y = ymin; + transform(exprs[i], 1, (ymax - ymin) / exprs[i].bbox.h, 0, 0); + } + } else if (exprs[i].text == "\\right") { + const [ymin, ymax] = searchHigh(i, "\\right", "\\left", -1, 0); + if (ymin != Infinity && ymax != -Infinity) { + exprs[i].bbox.y = ymin; + transform(exprs[i], 1, (ymax - ymin) / exprs[i].bbox.h, 0, 0); + } + } else if (exprs[i].text == "\\middle") { + const [lmin, lmax] = searchHigh(i, "\\right", "\\left", -1, 1); + const [rmin, rmax] = searchHigh(i, "\\left", "\\right", 1, 1); + const ymin = Math.min(lmin, rmin); + const ymax = Math.max(lmax, rmax); + if (ymin != Infinity && ymax != -Infinity) { + exprs[i].bbox.y = ymin; + transform(exprs[i], 1, (ymax - ymin) / exprs[i].bbox.h, 0, 0); + } + } + } + if (!exprs.some((x) => x.text == "&" || x.text == "\\\\")) { + return; + } + const rows = []; + let row = []; + let cell = []; + for (let i = 0; i < exprs.length; i++) { + if (exprs[i].text == "&") { + row.push(cell); + cell = []; + } else if (exprs[i].text == "\\\\") { + if (cell.length) { + row.push(cell); + cell = []; + } + rows.push(row); + row = []; + } else { + cell.push(exprs[i]); + } + } + if (cell.length) { + row.push(cell); + } + if (row.length) { + rows.push(row); + } + const colws = []; + const erows = []; + for (let i = 0; i < rows.length; i++) { + const erow = []; + for (let j = 0; j < rows[i].length; j++) { + const e = group(rows[i][j]); + if (e) { + colws[j] = colws[j] || 0; + colws[j] = Math.max(e.bbox.w + 1, colws[j]); + } + erow[j] = e; + } + erows.push(erow); + } + const ybds = []; + for (let i = 0; i < erows.length; i++) { + let ymin = Infinity; + let ymax = -Infinity; + for (let j = 0; j < erows[i].length; j++) { + if (!erows[i][j]) { + continue; + } + ymin = Math.min(ymin, erows[i][j].bbox.y); + ymax = Math.max(ymax, erows[i][j].bbox.y + erows[i][j].bbox.h); + } + ybds.push([ymin, ymax]); + } + for (let i = 0; i < ybds.length; i++) { + if (ybds[i][0] == Infinity || ybds[i][1] == Infinity) { + ybds[i][0] = i == 0 ? 0 : ybds[i - 1][1]; + ybds[i][1] = ybds[i][0] + 2; + } + } + for (let i = 1; i < erows.length; i++) { + const shft = ybds[i - 1][1] - ybds[i][0] + CONFIG.LINE_SPACING; + for (let j = 0; j < erows[i].length; j++) { + if (erows[i][j]) { + erows[i][j].bbox.y += shft; + } + } + ybds[i][0] += shft; + ybds[i][1] += shft; + } + exprs.splice(0, exprs.length); + for (let i = 0; i < erows.length; i++) { + let dx = 0; + for (let j = 0; j < erows[i].length; j++) { + const e = erows[i][j]; + if (!e) { + dx += colws[j]; + continue; + } + e.bbox.x += dx; + dx += colws[j] - e.bbox.w; + if (alignment == "center") { + e.bbox.x += (colws[j] - e.bbox.w) / 2; + } else if (alignment == "left") + ; + else if (alignment == "right") { + e.bbox.x += colws[j] - e.bbox.w; + } else if (alignment == "equation") { + if (j != erows[i].length - 1) { + e.bbox.x += colws[j] - e.bbox.w; + } + } + exprs.push(e); + } + } +} +function plan(expr, mode = "math") { + var _a, _b, _c; + const tmd = (_a = { + "\\text": "text", + "\\mathnormal": "math", + "\\mathrm": "rm", + "\\mathit": "it", + "\\mathbf": "bf", + "\\mathsf": "sf", + "\\mathtt": "tt", + "\\mathfrak": "frak", + "\\mathcal": "cal", + "\\mathbb": "bb", + "\\mathscr": "scr", + "\\rm": "rm", + "\\it": "it", + "\\bf": "bf", + "\\sf": "tt", + "\\tt": "tt", + "\\frak": "frak", + "\\cal": "cal", + "\\bb": "bb", + "\\scr": "scr" + }[expr.text]) != null ? _a : mode; + if (!expr.chld.length) { + if (SYMB[expr.text]) { + if (SYMB[expr.text].flags.big) { + if (expr.text == "\\lim") { + expr.bbox = { x: 0, y: 0, w: 3.5, h: 2 }; + } else { + expr.bbox = { x: 0, y: -0.5, w: 3, h: 3 }; + } + } else if (SYMB[expr.text].flags.txt) { + let w = 0; + for (let i = 1; i < expr.text.length; i++) { + w += HERSHEY(asciiMap(expr.text[i], "text")).w; + } + w /= 16; + expr.bbox = { x: 0, y: 0, w, h: 2 }; + } else if (SYMB[expr.text].glyph) { + let w = HERSHEY(SYMB[expr.text].glyph).w; + w /= 16; + if (expr.text == "\\int" || expr.text == "\\oint") { + expr.bbox = { x: 0, y: -1.5, w, h: 5 }; + } else { + expr.bbox = { x: 0, y: 0, w, h: 2 }; + } + } else { + expr.bbox = { x: 0, y: 0, w: 1, h: 2 }; + } + } else { + let w = 0; + for (let i = 0; i < expr.text.length; i++) { + if (!HERSHEY(asciiMap(expr.text[i], tmd))) { + continue; + } + if (tmd == "tt") { + w += 16; + } else { + w += HERSHEY(asciiMap(expr.text[i], tmd)).w; + } + } + w /= 16; + expr.bbox = { x: 0, y: 0, w, h: 2 }; + } + expr.mode = tmd; + return; + } + if (expr.text == "\\frac") { + const a = expr.chld[0]; + const b = expr.chld[1]; + const s = CONFIG.FRAC_SCALE; + plan(a); + plan(b); + a.bbox.x = 0; + a.bbox.y = 0; + b.bbox.x = 0; + b.bbox.y = 0; + const mw = Math.max(a.bbox.w, b.bbox.w) * s; + transform(a, s, null, (mw - a.bbox.w * s) / 2, 0); + transform( + b, + s, + null, + (mw - b.bbox.w * s) / 2, + a.bbox.h + CONFIG.FRAC_SPACING + ); + expr.bbox = { + x: 0, + y: -a.bbox.h + 1 - CONFIG.FRAC_SPACING / 2, + w: mw, + h: a.bbox.h + b.bbox.h + CONFIG.FRAC_SPACING + }; + } else if (expr.text == "\\binom") { + const a = expr.chld[0]; + const b = expr.chld[1]; + plan(a); + plan(b); + a.bbox.x = 0; + a.bbox.y = 0; + b.bbox.x = 0; + b.bbox.y = 0; + const mw = Math.max(a.bbox.w, b.bbox.w); + transform(a, 1, null, (mw - a.bbox.w) / 2 + 1, 0); + transform(b, 1, null, (mw - b.bbox.w) / 2 + 1, a.bbox.h); + expr.bbox = { x: 0, y: -a.bbox.h + 1, w: mw + 2, h: a.bbox.h + b.bbox.h }; + } else if (expr.text == "\\sqrt") { + const e = expr.chld[0]; + plan(e); + const f = expr.chld[1]; + let pl = 0; + if (f) { + plan(f); + pl = Math.max(f.bbox.w * CONFIG.SQRT_MAG_SCALE - 0.5, 0); + transform(f, CONFIG.SQRT_MAG_SCALE, null, 0, 0.5); + } + transform(e, 1, null, 1 + pl, 0.5); + expr.bbox = { + x: 0, + y: 2 - e.bbox.h - 0.5, + w: e.bbox.w + 1 + pl, + h: e.bbox.h + 0.5 + }; + } else if (SYMB[expr.text] && SYMB[expr.text].flags.hat) { + const e = expr.chld[0]; + plan(e); + const y0 = e.bbox.y - 0.5; + e.bbox.y = 0.5; + expr.bbox = { x: 0, y: y0, w: e.bbox.w, h: e.bbox.h + 0.5 }; + } else if (SYMB[expr.text] && SYMB[expr.text].flags.mat) { + const e = expr.chld[0]; + plan(e); + expr.bbox = { x: 0, y: 0, w: e.bbox.w, h: e.bbox.h + 0.5 }; + } else { + let dx = 0; + let dy = 0; + let mh = 1; + for (let i = 0; i < expr.chld.length; i++) { + const c = expr.chld[i]; + const spac = (_b = { + "\\quad": 2, + "\\,": 2 * 3 / 18, + "\\:": 2 * 4 / 18, + "\\;": 2 * 5 / 18, + "\\!": 2 * -3 / 18 + }[c.text]) != null ? _b : null; + if (c.text == "\\\\") { + dy += mh; + dx = 0; + mh = 1; + continue; + } else if (c.text == "&") { + continue; + } else if (spac != null) { + dx += spac; + continue; + } else { + plan(c, tmd); + transform(c, 1, null, dx, dy); + if (c.text == "^" || c.text == "_" || c.text == "'") { + let j = i; + while (j > 0 && (expr.chld[j].text == "^" || expr.chld[j].text == "_" || expr.chld[j].text == "'")) { + j--; + } + const wasBig = SYMB[expr.chld[j].text] && SYMB[expr.chld[j].text].flags.big; + if (c.text == "'") { + let k = j + 1; + let nth = 0; + while (k < i) { + if (expr.chld[k].text == "'") { + nth++; + } + k++; + } + c.bbox.x = expr.chld[j].bbox.x + expr.chld[j].bbox.w + c.bbox.w * nth; + dx = Math.max(dx, c.bbox.x + c.bbox.w); + } else { + if (wasBig) { + const ex = expr.chld[j].bbox.x + (expr.chld[j].bbox.w - c.bbox.w * CONFIG.SUB_SUP_SCALE) / 2; + c.bbox.x = ex; + dx = Math.max(dx, expr.chld[j].bbox.x + expr.chld[j].bbox.w + (c.bbox.w * CONFIG.SUB_SUP_SCALE - expr.chld[j].bbox.w) / 2); + } else { + c.bbox.x = expr.chld[j].bbox.x + expr.chld[j].bbox.w; + dx = Math.max(dx, c.bbox.x + c.bbox.w * CONFIG.SUB_SUP_SCALE); + } + } + } else { + dx += c.bbox.w; + } + if (mode == "text") { + dx += 1; + } + mh = Math.max(c.bbox.y + c.bbox.h - dy, mh); + } + } + dy += mh; + const m2s = { + bmatrix: ["[", "]"], + pmatrix: ["(", ")"], + Bmatrix: ["\\{", "\\}"], + cases: ["\\{"] + }; + const alt = (_c = { + bmatrix: "center", + pmatrix: "center", + Bmatrix: "center", + cases: "left", + matrix: "center", + aligned: "equation" + }[expr.text]) != null ? _c : "left"; + const hasLp = !!m2s[expr.text]; + const hasRp = !!m2s[expr.text] && m2s[expr.text].length > 1; + align(expr.chld, alt); + const bb = computeBbox(expr.chld); + if (expr.text == "\\text") { + bb.x -= 1; + bb.w += 2; + } + for (let i = 0; i < expr.chld.length; i++) { + transform(expr.chld[i], 1, null, -bb.x + (hasLp ? 1.5 : 0), -bb.y); + } + expr.bbox = { + x: 0, + y: 0, + w: bb.w + 1.5 * Number(hasLp) + 1.5 * Number(hasRp), + h: bb.h + }; + if (hasLp) { + expr.chld.unshift({ + type: "symb", + text: m2s[expr.text][0], + mode: expr.mode, + chld: [], + bbox: { x: 0, y: 0, w: 1, h: bb.h } + }); + } + if (hasRp) { + expr.chld.push({ + type: "symb", + text: m2s[expr.text][1], + mode: expr.mode, + chld: [], + bbox: { x: bb.w + 2, y: 0, w: 1, h: bb.h } + }); + } + if (hasLp || hasRp || expr.text == "matrix") { + expr.type = "node"; + expr.text = ""; + expr.bbox.y -= (expr.bbox.h - 2) / 2; + } + } +} +function flatten(expr) { + function flat(expr2, dx, dy) { + const ff = []; + if (expr2.bbox) { + dx += expr2.bbox.x; + dy += expr2.bbox.y; + if (expr2.text == "\\frac") { + const h = expr2.chld[1].bbox.y - (expr2.chld[0].bbox.y + expr2.chld[0].bbox.h); + const e = { + type: "symb", + mode: expr2.mode, + text: "\\bar", + bbox: { + x: dx, + y: dy + (expr2.chld[1].bbox.y - h / 2) - h / 2, + w: expr2.bbox.w, + h + }, + chld: [] + }; + ff.push(e); + } else if (expr2.text == "\\sqrt") { + const h = expr2.chld[0].bbox.y; + const xx = Math.max(0, expr2.chld[0].bbox.x - expr2.chld[0].bbox.h / 2); + const e = { + type: "symb", + mode: expr2.mode, + text: "\\sqrt", + bbox: { + x: dx + xx, + y: dy + h / 2, + w: expr2.chld[0].bbox.x - xx, + h: expr2.bbox.h - h / 2 + }, + chld: [] + }; + ff.push(e); + ff.push({ + type: "symb", + text: "\\bar", + mode: expr2.mode, + bbox: { + x: dx + expr2.chld[0].bbox.x, + y: dy, + w: expr2.bbox.w - expr2.chld[0].bbox.x, + h + }, + chld: [] + }); + } else if (expr2.text == "\\binom") { + const w = Math.min(expr2.chld[0].bbox.x, expr2.chld[1].bbox.x); + const e = { + type: "symb", + mode: expr2.mode, + text: "(", + bbox: { + x: dx, + y: dy, + w, + h: expr2.bbox.h + }, + chld: [] + }; + ff.push(e); + ff.push({ + type: "symb", + text: ")", + mode: expr2.mode, + bbox: { + x: dx + expr2.bbox.w - w, + y: dy, + w, + h: expr2.bbox.h + }, + chld: [] + }); + } else if (SYMB[expr2.text] && SYMB[expr2.text].flags.hat) { + const h = expr2.chld[0].bbox.y; + const e = { + type: "symb", + mode: expr2.mode, + text: expr2.text, + bbox: { + x: dx, + y: dy, + w: expr2.bbox.w, + h + }, + chld: [] + }; + ff.push(e); + } else if (SYMB[expr2.text] && SYMB[expr2.text].flags.mat) { + const h = expr2.chld[0].bbox.h; + const e = { + type: "symb", + text: expr2.text, + mode: expr2.mode, + bbox: { + x: dx, + y: dy + h, + w: expr2.bbox.w, + h: expr2.bbox.h - h + }, + chld: [] + }; + ff.push(e); + } else if (expr2.type != "node" && expr2.text != "^" && expr2.text != "_") { + const e = { + type: expr2.type == "func" ? "symb" : expr2.type, + text: expr2.text, + mode: expr2.mode, + bbox: { + x: dx, + y: dy, + w: expr2.bbox.w, + h: expr2.bbox.h + }, + chld: [] + }; + ff.push(e); + } + } + for (let i = 0; i < expr2.chld.length; i++) { + const f2 = flat(expr2.chld[i], dx, dy); + ff.push(...f2); + } + return ff; + } + const f = flat(expr, -expr.bbox.x, -expr.bbox.y); + expr.type = "node"; + expr.text = ""; + expr.chld = f; +} +function render(expr) { + const o = []; + for (let i = 0; i < expr.chld.length; i++) { + const e = expr.chld[i]; + let s = e.bbox.h / 2; + let isSmallHat = false; + if (SYMB[e.text] && SYMB[e.text].flags.hat && !SYMB[e.text].flags.xfl && !SYMB[e.text].flags.yfl) { + s *= 4; + isSmallHat = true; + } + if (SYMB[e.text] && SYMB[e.text].glyph) { + const d = HERSHEY(SYMB[e.text].glyph); + for (let j = 0; j < d.polylines.length; j++) { + const l = []; + for (let k = 0; k < d.polylines[j].length; k++) { + let x = d.polylines[j][k][0]; + let y = d.polylines[j][k][1]; + if (SYMB[e.text].flags.xfl) { + x = (x - d.xmin) / Math.max(d.xmax - d.xmin, 1) * e.bbox.w; + x += e.bbox.x; + } else if (d.w / 16 * s > e.bbox.w) { + x = x / Math.max(d.w, 1) * e.bbox.w; + x += e.bbox.x; + } else { + x = x / 16 * s; + const p = (e.bbox.w - d.w / 16 * s) / 2; + x += e.bbox.x + p; + } + if (SYMB[e.text].flags.yfl) { + y = (y - d.ymin) / Math.max(d.ymax - d.ymin, 1) * e.bbox.h; + y += e.bbox.y; + } else { + y = y / 16 * s; + if (isSmallHat) { + const p = (d.ymax + d.ymin) / 2; + y -= p / 16 * s; + } + y += e.bbox.y + e.bbox.h / 2; + } + l.push([x, y]); + } + o.push(l); + } + } else if (SYMB[e.text] && SYMB[e.text].flags.txt || e.type == "char") { + let x0 = e.bbox.x; + const isVerb = !!(SYMB[e.text] && SYMB[e.text].flags.txt); + for (let n = Number(isVerb); n < e.text.length; n++) { + const d = HERSHEY(asciiMap(e.text[n], isVerb ? "text" : e.mode)); + if (!d) { + console.warn("unmapped character: " + e.text[n]); + continue; + } + for (let j = 0; j < d.polylines.length; j++) { + const l = []; + for (let k = 0; k < d.polylines[j].length; k++) { + let x = d.polylines[j][k][0]; + let y = d.polylines[j][k][1]; + x /= 16; + y /= 16; + x *= s; + y *= s; + if (e.mode == "tt") { + if (d.w > 16) { + x *= 16 / d.w; + } else { + x += (16 - d.w) / 2 / 16; + } + } + x += x0; + y += e.bbox.y + e.bbox.h / 2; + l.push([x, y]); + } + o.push(l); + } + if (e.mode == "tt") { + x0 += s; + } else { + x0 += d.w / 16 * s; + } + } + } + } + return o; +} +function nf(x) { + return Math.round(x * 100) / 100; +} +class LaTexUtils { + constructor(latex) { + this._latex = latex; + this._tokens = tokenize(latex); + this._tree = parse(this._tokens); + environments(this._tree.chld); + plan(this._tree); + flatten(this._tree); + this._polylines = render(this._tree); + } + resolveScale(opt) { + var _a, _b, _c, _d; + if (opt == void 0) { + return [16, 16, 16, 16]; + } + let sclx = (_a = opt.SCALE_X) != null ? _a : 16; + let scly = (_b = opt.SCALE_Y) != null ? _b : 16; + if (opt.MIN_CHAR_H != void 0) { + let mh = 0; + for (let i = 0; i < this._tree.chld.length; i++) { + const c = this._tree.chld[i]; + if (c.type == "char" || SYMB[c.text] && (SYMB[c.text].flags.txt || !Object.keys(SYMB[c.text].flags).length)) { + mh = Math.min(c.bbox.h, mh); + } + } + const s = Math.max(1, opt.MIN_CHAR_H / mh); + sclx *= s; + scly *= s; + } + if (opt.MAX_W != void 0) { + const s0 = sclx; + sclx = Math.min(sclx, opt.MAX_W / this._tree.bbox.w); + scly *= sclx / s0; + } + if (opt.MAX_H != void 0) { + const s0 = scly; + scly = Math.min(scly, opt.MAX_H / this._tree.bbox.h); + sclx *= scly / s0; + } + const px = (_c = opt.MARGIN_X) != null ? _c : sclx; + const py = (_d = opt.MARGIN_Y) != null ? _d : scly; + return [px, py, sclx, scly]; + } + polylines(opt) { + if (!opt) + opt = {}; + const polylines = []; + const [px, py, sclx, scly] = this.resolveScale(opt); + for (let i = 0; i < this._polylines.length; i++) { + polylines.push([]); + for (let j = 0; j < this._polylines[i].length; j++) { + const [x, y] = this._polylines[i][j]; + polylines[polylines.length - 1].push([px + x * sclx, py + y * scly]); + } + } + return polylines; + } + pathd(opt) { + if (!opt) + opt = {}; + let d = ""; + const [px, py, sclx, scly] = this.resolveScale(opt); + for (let i = 0; i < this._polylines.length; i++) { + for (let j = 0; j < this._polylines[i].length; j++) { + const [x, y] = this._polylines[i][j]; + d += !j ? "M" : "L"; + d += `${nf(px + x * sclx)} ${nf(py + y * scly)}`; + } + } + return d; + } + svg(opt) { + var _a, _b; + if (!opt) + opt = {}; + const [px, py, sclx, scly] = this.resolveScale(opt); + const w = nf(this._tree.bbox.w * sclx + px * 2); + const h = nf(this._tree.bbox.h * scly + py * 2); + let o = ``; + if (opt.BG_COLOR) { + o += ``; + } + o += ``; + o += ``; + return { + svg: `data:image/svg+xml;base64,${window.btoa(o)}`, + width: Math.ceil(w), + height: Math.ceil(h) + }; + } + pdf(opt) { + var _a; + if (!opt) + opt = {}; + const [px, py, sclx, scly] = this.resolveScale(opt); + const width = nf(this._tree.bbox.w * sclx + px * 2); + const height = nf(this._tree.bbox.h * scly + py * 2); + let head = `%PDF-1.1 +%%\xA5\xB1\xEB +1 0 obj +<< /Type /Catalog +/Pages 2 0 R +>>endobj + 2 0 obj +<< /Type /Pages +/Kids [3 0 R] +/Count 1 +/MediaBox [0 0 ${width} ${height}] +>> +endobj + 3 0 obj +<< /Type /Page +/Parent 2 0 R +/Resources +<< /Font +<< /F1 +<< /Type /Font + /Subtype /Type1 +/BaseFont /Times-Roman +>> +>> +>> +/Contents [`; + let pdf = ""; + let count = 4; + for (let i = 0; i < this._polylines.length; i++) { + pdf += `${count} 0 obj +<< /Length 0 >> + stream + 1 j 1 J ${(_a = opt.STROKE_W) != null ? _a : 1} w +`; + for (let j = 0; j < this._polylines[i].length; j++) { + const [x, y] = this._polylines[i][j]; + pdf += `${nf(px + x * sclx)} ${nf(height - (py + y * scly))} ${j ? "l" : "m"} `; + } + pdf += "\nS\nendstream\nendobj\n"; + head += `${count} 0 R `; + count++; + } + head += "]\n>>\nendobj\n"; + pdf += "\ntrailer\n<< /Root 1 0 R \n /Size 0\n >>startxref\n\n%%EOF\n"; + return head + pdf; + } + boxes(opt) { + if (!opt) + opt = {}; + const [px, py, sclx, scly] = this.resolveScale(opt); + const bs = []; + for (let i = 0; i < this._tree.chld.length; i++) { + const { x, y, w, h } = this._tree.chld[i].bbox; + bs.push({ x: px + x * sclx, y: py + y * scly, w: w * sclx, h: h * scly }); + } + return bs; + } + box(opt) { + if (!opt) + opt = {}; + const [px, py, sclx, scly] = this.resolveScale(opt); + return { + x: px + this._tree.bbox.x * sclx, + y: py + this._tree.bbox.y * scly, + w: this._tree.bbox.w * sclx, + h: this._tree.bbox.h * scly + }; + } +} +class LaTexParticle extends ImageParticle { + static convertLaTextToSVG(laTex) { + return new LaTexUtils(laTex).svg({ + SCALE_X: 10, + SCALE_Y: 10, + MARGIN_X: 0, + MARGIN_Y: 0 + }); + } + render(ctx, element, x, y) { + const { scale } = this.options; + const width = element.width * scale; + const height = element.height * scale; + if (this.imageCache.has(element.value)) { + const img = this.imageCache.get(element.value); + ctx.drawImage(img, x, y, width, height); + } else { + const laTexLoadPromise = new Promise((resolve, reject) => { + const img = new Image(); + img.src = element.laTexSVG; + img.onload = () => { + ctx.drawImage(img, x, y, width, height); + this.imageCache.set(element.value, img); + resolve(element); + }; + img.onerror = (error) => { + reject(error); + }; + }); + this.addImageObserver(laTexLoadPromise); + } + } +} +var ListType; +(function(ListType2) { + ListType2["UL"] = "ul"; + ListType2["OL"] = "ol"; +})(ListType || (ListType = {})); +var UlStyle; +(function(UlStyle2) { + UlStyle2["DISC"] = "disc"; + UlStyle2["CIRCLE"] = "circle"; + UlStyle2["SQUARE"] = "square"; + UlStyle2["CHECKBOX"] = "checkbox"; +})(UlStyle || (UlStyle = {})); +var OlStyle; +(function(OlStyle2) { + OlStyle2["DECIMAL"] = "decimal"; +})(OlStyle || (OlStyle = {})); +var ListStyle; +(function(ListStyle2) { + ListStyle2["DISC"] = "disc"; + ListStyle2["CIRCLE"] = "circle"; + ListStyle2["SQUARE"] = "square"; + ListStyle2["DECIMAL"] = "decimal"; + ListStyle2["CHECKBOX"] = "checkbox"; +})(ListStyle || (ListStyle = {})); +const ulStyleMapping = { + [UlStyle.DISC]: "\u2022", + [UlStyle.CIRCLE]: "\u25E6", + [UlStyle.SQUARE]: "\u25AB\uFE0E", + [UlStyle.CHECKBOX]: "\u2611\uFE0F" +}; +const listTypeElementMapping = { + [ListType.OL]: "ol", + [ListType.UL]: "ul" +}; +const listStyleCSSMapping = { + [ListStyle.DISC]: "disc", + [ListStyle.CIRCLE]: "circle", + [ListStyle.SQUARE]: "square", + [ListStyle.DECIMAL]: "decimal", + [ListStyle.CHECKBOX]: "checkbox" +}; +var TitleLevel; +(function(TitleLevel2) { + TitleLevel2["FIRST"] = "first"; + TitleLevel2["SECOND"] = "second"; + TitleLevel2["THIRD"] = "third"; + TitleLevel2["FOURTH"] = "fourth"; + TitleLevel2["FIFTH"] = "fifth"; + TitleLevel2["SIXTH"] = "sixth"; +})(TitleLevel || (TitleLevel = {})); +const defaultTitleOption = { + defaultFirstSize: 26, + defaultSecondSize: 24, + defaultThirdSize: 22, + defaultFourthSize: 20, + defaultFifthSize: 18, + defaultSixthSize: 16 +}; +const titleSizeMapping = { + [TitleLevel.FIRST]: "defaultFirstSize", + [TitleLevel.SECOND]: "defaultSecondSize", + [TitleLevel.THIRD]: "defaultThirdSize", + [TitleLevel.FOURTH]: "defaultFourthSize", + [TitleLevel.FIFTH]: "defaultFifthSize", + [TitleLevel.SIXTH]: "defaultSixthSize" +}; +const titleOrderNumberMapping = { + [TitleLevel.FIRST]: 1, + [TitleLevel.SECOND]: 2, + [TitleLevel.THIRD]: 3, + [TitleLevel.FOURTH]: 4, + [TitleLevel.FIFTH]: 5, + [TitleLevel.SIXTH]: 6 +}; +const titleNodeNameMapping = { + H1: TitleLevel.FIRST, + H2: TitleLevel.SECOND, + H3: TitleLevel.THIRD, + H4: TitleLevel.FOURTH, + H5: TitleLevel.FIFTH, + H6: TitleLevel.SIXTH +}; +var ControlType; +(function(ControlType2) { + ControlType2["TEXT"] = "text"; + ControlType2["SELECT"] = "select"; + ControlType2["CHECKBOX"] = "checkbox"; + ControlType2["RADIO"] = "radio"; + ControlType2["DATE"] = "date"; +})(ControlType || (ControlType = {})); +var ControlComponent; +(function(ControlComponent2) { + ControlComponent2["PREFIX"] = "prefix"; + ControlComponent2["POSTFIX"] = "postfix"; + ControlComponent2["PLACEHOLDER"] = "placeholder"; + ControlComponent2["VALUE"] = "value"; + ControlComponent2["CHECKBOX"] = "checkbox"; + ControlComponent2["RADIO"] = "radio"; +})(ControlComponent || (ControlComponent = {})); +var ControlIndentation; +(function(ControlIndentation2) { + ControlIndentation2["ROW_START"] = "rowStart"; + ControlIndentation2["VALUE_START"] = "valueStart"; +})(ControlIndentation || (ControlIndentation = {})); +var BackgroundSize; +(function(BackgroundSize2) { + BackgroundSize2["CONTAIN"] = "contain"; + BackgroundSize2["COVER"] = "cover"; +})(BackgroundSize || (BackgroundSize = {})); +var BackgroundRepeat; +(function(BackgroundRepeat2) { + BackgroundRepeat2["REPEAT"] = "repeat"; + BackgroundRepeat2["NO_REPEAT"] = "no-repeat"; + BackgroundRepeat2["REPEAT_X"] = "repeat-x"; + BackgroundRepeat2["REPEAT_Y"] = "repeat-y"; +})(BackgroundRepeat || (BackgroundRepeat = {})); +const defaultBackground = { + color: "#FFFFFF", + image: "", + size: BackgroundSize.COVER, + repeat: BackgroundRepeat.NO_REPEAT, + applyPageNumbers: [] +}; +var VerticalAlign; +(function(VerticalAlign2) { + VerticalAlign2["TOP"] = "top"; + VerticalAlign2["MIDDLE"] = "middle"; + VerticalAlign2["BOTTOM"] = "bottom"; +})(VerticalAlign || (VerticalAlign = {})); +const defaultCheckboxOption = { + width: 14, + height: 14, + gap: 5, + lineWidth: 1, + fillStyle: "#5175f4", + strokeStyle: "#ffffff", + verticalAlign: VerticalAlign.BOTTOM +}; +const defaultControlOption = { + placeholderColor: "#9c9b9b", + bracketColor: "#000000", + prefix: "{", + postfix: "}", + borderWidth: 1, + borderColor: "#000000", + activeBackgroundColor: "" +}; +const defaultFooterOption = { + bottom: 30, + maxHeightRadio: MaxHeightRatio.HALF, + disabled: false, + editable: true +}; +const defaultGroupOption = { + opacity: 0.1, + backgroundColor: "#E99D00", + activeOpacity: 0.5, + activeBackgroundColor: "#E99D00", + disabled: false +}; +const defaultHeaderOption = { + top: 30, + maxHeightRadio: MaxHeightRatio.HALF, + disabled: false, + editable: true +}; +const defaultLineBreak = { + disabled: true, + color: "#CCCCCC", + lineWidth: 1.5 +}; +const defaultPageBreakOption = { + font: "Microsoft YaHei", + fontSize: 12, + lineDash: [3, 1] +}; +const FORMAT_PLACEHOLDER = { + PAGE_NO: "{pageNo}", + PAGE_COUNT: "{pageCount}" +}; +const defaultPageNumberOption = { + bottom: 60, + size: 12, + font: "Microsoft YaHei", + color: "#000000", + rowFlex: RowFlex.CENTER, + format: FORMAT_PLACEHOLDER.PAGE_NO, + numberType: NumberType.ARABIC, + disabled: false, + startPageNo: 1, + fromPageNo: 0, + maxPageNo: null +}; +const defaultPlaceholderOption = { + data: "", + color: "#DCDFE6", + opacity: 1, + size: 16, + font: "Microsoft YaHei" +}; +const defaultRadioOption = { + width: 14, + height: 14, + gap: 5, + lineWidth: 1, + fillStyle: "#5175f4", + strokeStyle: "#000000", + verticalAlign: VerticalAlign.BOTTOM +}; +const defaultSeparatorOption = { + lineWidth: 1, + strokeStyle: "#000000" +}; +const defaultTableOption = { + tdPadding: [0, 5, 5, 5], + defaultTrMinHeight: 42, + defaultColMinWidth: 40 +}; +const defaultWatermarkOption = { + data: "", + color: "#AEB5C0", + opacity: 0.3, + size: 200, + font: "Microsoft YaHei", + repeat: false, + gap: [10, 10] +}; +const defaultZoneOption = { + tipDisabled: true +}; +var LineNumberType; +(function(LineNumberType2) { + LineNumberType2["PAGE"] = "page"; + LineNumberType2["CONTINUITY"] = "continuity"; +})(LineNumberType || (LineNumberType = {})); +const defaultLineNumberOption = { + size: 12, + font: "Microsoft YaHei", + color: "#000000", + disabled: true, + right: 20, + type: LineNumberType.CONTINUITY +}; +const defaultPageBorderOption = { + color: "#000000", + lineWidth: 1, + padding: [0, 5, 0, 5], + disabled: true +}; +var EditorComponent; +(function(EditorComponent2) { + EditorComponent2["COMPONENT"] = "component"; + EditorComponent2["MENU"] = "menu"; + EditorComponent2["MAIN"] = "main"; + EditorComponent2["FOOTER"] = "footer"; + EditorComponent2["CONTEXTMENU"] = "contextmenu"; + EditorComponent2["POPUP"] = "popup"; + EditorComponent2["CATALOG"] = "catalog"; + EditorComponent2["COMMENT"] = "comment"; +})(EditorComponent || (EditorComponent = {})); +var EditorContext; +(function(EditorContext2) { + EditorContext2["PAGE"] = "page"; + EditorContext2["TABLE"] = "table"; +})(EditorContext || (EditorContext = {})); +var EditorMode; +(function(EditorMode2) { + EditorMode2["EDIT"] = "edit"; + EditorMode2["CLEAN"] = "clean"; + EditorMode2["READONLY"] = "readonly"; + EditorMode2["FORM"] = "form"; + EditorMode2["PRINT"] = "print"; + EditorMode2["DESIGN"] = "design"; +})(EditorMode || (EditorMode = {})); +var EditorZone; +(function(EditorZone2) { + EditorZone2["HEADER"] = "header"; + EditorZone2["MAIN"] = "main"; + EditorZone2["FOOTER"] = "footer"; +})(EditorZone || (EditorZone = {})); +var PageMode; +(function(PageMode2) { + PageMode2["PAGING"] = "paging"; + PageMode2["CONTINUITY"] = "continuity"; +})(PageMode || (PageMode = {})); +var PaperDirection; +(function(PaperDirection2) { + PaperDirection2["VERTICAL"] = "vertical"; + PaperDirection2["HORIZONTAL"] = "horizontal"; +})(PaperDirection || (PaperDirection = {})); +var WordBreak; +(function(WordBreak2) { + WordBreak2["BREAK_ALL"] = "break-all"; + WordBreak2["BREAK_WORD"] = "break-word"; +})(WordBreak || (WordBreak = {})); +var RenderMode; +(function(RenderMode2) { + RenderMode2["SPEED"] = "speed"; + RenderMode2["COMPATIBILITY"] = "compatibility"; +})(RenderMode || (RenderMode = {})); +function mergeOption(options = {}) { + const tableOptions = { + ...defaultTableOption, + ...options.table + }; + const headerOptions = { + ...defaultHeaderOption, + ...options.header + }; + const footerOptions = { + ...defaultFooterOption, + ...options.footer + }; + const pageNumberOptions = { + ...defaultPageNumberOption, + ...options.pageNumber + }; + const waterMarkOptions = { + ...defaultWatermarkOption, + ...options.watermark + }; + const controlOptions = { + ...defaultControlOption, + ...options.control + }; + const checkboxOptions = { + ...defaultCheckboxOption, + ...options.checkbox + }; + const radioOptions = { + ...defaultRadioOption, + ...options.radio + }; + const cursorOptions = { + ...defaultCursorOption, + ...options.cursor + }; + const titleOptions = { + ...defaultTitleOption, + ...options.title + }; + const placeholderOptions = { + ...defaultPlaceholderOption, + ...options.placeholder + }; + const groupOptions = { + ...defaultGroupOption, + ...options.group + }; + const pageBreakOptions = { + ...defaultPageBreakOption, + ...options.pageBreak + }; + const zoneOptions = { + ...defaultZoneOption, + ...options.zone + }; + const backgroundOptions = { + ...defaultBackground, + ...options.background + }; + const lineBreakOptions = { + ...defaultLineBreak, + ...options.lineBreak + }; + const separatorOptions = { + ...defaultSeparatorOption, + ...options.separator + }; + const lineNumberOptions = { + ...defaultLineNumberOption, + ...options.lineNumber + }; + const pageBorderOptions = { + ...defaultPageBorderOption, + ...options.pageBorder + }; + return { + mode: EditorMode.EDIT, + defaultType: "TEXT", + defaultColor: "#000000", + defaultFont: "Microsoft YaHei", + defaultSize: 16, + minSize: 5, + maxSize: 72, + defaultRowMargin: 1, + defaultBasicRowMarginHeight: 8, + defaultTabWidth: 32, + width: 794, + height: 1123, + scale: 1, + pageGap: 20, + underlineColor: "#000000", + strikeoutColor: "#FF0000", + rangeAlpha: 0.6, + rangeColor: "#AECBFA", + rangeMinWidth: 5, + searchMatchAlpha: 0.6, + searchMatchColor: "#FFFF00", + searchNavigateMatchColor: "#AAD280", + highlightAlpha: 0.6, + resizerColor: "#4182D9", + resizerSize: 5, + marginIndicatorSize: 35, + marginIndicatorColor: "#BABABA", + margins: [100, 120, 100, 120], + pageMode: PageMode.PAGING, + renderMode: RenderMode.SPEED, + defaultHyperlinkColor: "#0000FF", + paperDirection: PaperDirection.VERTICAL, + inactiveAlpha: 0.6, + historyMaxRecordCount: 100, + wordBreak: WordBreak.BREAK_WORD, + printPixelRatio: 3, + maskMargin: [0, 0, 0, 0], + letterClass: [LETTER_CLASS.ENGLISH], + contextMenuDisableKeys: [], + scrollContainerSelector: "", + ...options, + table: tableOptions, + header: headerOptions, + footer: footerOptions, + pageNumber: pageNumberOptions, + watermark: waterMarkOptions, + control: controlOptions, + checkbox: checkboxOptions, + radio: radioOptions, + cursor: cursorOptions, + title: titleOptions, + placeholder: placeholderOptions, + group: groupOptions, + pageBreak: pageBreakOptions, + zone: zoneOptions, + background: backgroundOptions, + lineBreak: lineBreakOptions, + separator: separatorOptions, + lineNumber: lineNumberOptions, + pageBorder: pageBorderOptions + }; +} +function unzipElementList(elementList) { + const result = []; + for (let v = 0; v < elementList.length; v++) { + const valueItem = elementList[v]; + const textList = splitText(valueItem.value); + for (let d = 0; d < textList.length; d++) { + result.push({ ...valueItem, value: textList[d] }); + } + } + return result; +} +function formatElementList(elementList, options) { + const { isHandleFirstElement = true, isForceCompensation = false, editorOptions } = options; + const startElement = elementList[0]; + if (isForceCompensation || isHandleFirstElement && (startElement == null ? void 0 : startElement.type) !== ElementType.LIST && ((startElement == null ? void 0 : startElement.type) && startElement.type !== ElementType.TEXT || !START_LINE_BREAK_REG.test(startElement == null ? void 0 : startElement.value))) { + elementList.unshift({ + value: ZERO + }); + } + let i = 0; + while (i < elementList.length) { + let el = elementList[i]; + if (el.type === ElementType.TITLE) { + elementList.splice(i, 1); + const valueList = el.valueList || []; + formatElementList(valueList, { + ...options, + isHandleFirstElement: false, + isForceCompensation: false + }); + if (valueList.length) { + const titleId = getUUID(); + const titleOptions = editorOptions.title; + for (let v = 0; v < valueList.length; v++) { + const value = valueList[v]; + value.title = el.title; + if (el.level) { + value.titleId = titleId; + value.level = el.level; + } + if (isTextLikeElement(value)) { + if (!value.size) { + value.size = titleOptions[titleSizeMapping[value.level]]; + } + if (value.bold === void 0) { + value.bold = true; + } + } + elementList.splice(i, 0, value); + i++; + } + } + i--; + } else if (el.type === ElementType.LIST) { + elementList.splice(i, 1); + const valueList = el.valueList || []; + formatElementList(valueList, { + ...options, + isHandleFirstElement: true, + isForceCompensation: false + }); + if (valueList.length) { + const listId = getUUID(); + for (let v = 0; v < valueList.length; v++) { + const value = valueList[v]; + value.listId = listId; + value.listType = el.listType; + value.listStyle = el.listStyle; + elementList.splice(i, 0, value); + i++; + } + } + i--; + } else if (el.type === ElementType.TABLE) { + const tableId = getUUID(); + el.id = tableId; + if (el.trList) { + const { defaultTrMinHeight } = editorOptions.table; + for (let t = 0; t < el.trList.length; t++) { + const tr = el.trList[t]; + const trId = getUUID(); + tr.id = trId; + if (!tr.minHeight || tr.minHeight < defaultTrMinHeight) { + tr.minHeight = defaultTrMinHeight; + } + if (tr.height < tr.minHeight) { + tr.height = tr.minHeight; + } + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const tdId = getUUID(); + td.id = tdId; + formatElementList(td.value, { + ...options, + isHandleFirstElement: true, + isForceCompensation: true + }); + for (let v = 0; v < td.value.length; v++) { + const value = td.value[v]; + value.tdId = tdId; + value.trId = trId; + value.tableId = tableId; + } + } + } + } + } else if (el.type === ElementType.HYPERLINK) { + elementList.splice(i, 1); + const valueList = unzipElementList(el.valueList || []); + if (valueList.length) { + const hyperlinkId = getUUID(); + for (let v = 0; v < valueList.length; v++) { + const value = valueList[v]; + value.type = el.type; + value.url = el.url; + value.hyperlinkId = hyperlinkId; + elementList.splice(i, 0, value); + i++; + } + } + i--; + } else if (el.type === ElementType.DATE) { + elementList.splice(i, 1); + const valueList = unzipElementList(el.valueList || []); + if (valueList.length) { + const dateId = getUUID(); + for (let v = 0; v < valueList.length; v++) { + const value = valueList[v]; + value.type = el.type; + value.dateFormat = el.dateFormat; + value.dateId = dateId; + elementList.splice(i, 0, value); + i++; + } + } + i--; + } else if (el.type === ElementType.CONTROL) { + if (!el.control) { + i++; + continue; + } + const { prefix, postfix, value, placeholder, code, type, valueSets } = el.control; + const { editorOptions: { control: controlOption, checkbox: checkboxOption, radio: radioOption } } = options; + const controlId = getUUID(); + elementList.splice(i, 1); + const controlContext = pickObject(el, [ + ...EDITOR_ELEMENT_CONTEXT_ATTR, + ...EDITOR_ROW_ATTR + ]); + const controlDefaultStyle = pickObject(el.control, CONTROL_STYLE_ATTR); + const thePrePostfixArg = { + ...controlDefaultStyle, + color: editorOptions.control.bracketColor + }; + const prefixStrList = splitText(prefix || controlOption.prefix); + for (let p = 0; p < prefixStrList.length; p++) { + const value2 = prefixStrList[p]; + elementList.splice(i, 0, { + ...controlContext, + ...thePrePostfixArg, + controlId, + value: value2, + type: el.type, + control: el.control, + controlComponent: ControlComponent.PREFIX + }); + i++; + } + if (value && value.length || type === ControlType.CHECKBOX || type === ControlType.RADIO || type === ControlType.SELECT && code && (!value || !value.length)) { + let valueList = value || []; + if (type === ControlType.CHECKBOX) { + const codeList = code ? code.split(",") : []; + if (Array.isArray(valueSets) && valueSets.length) { + const valueStyleList = valueList.reduce((pre, cur) => pre.concat(cur.value.split("").map((v) => ({ ...cur, value: v }))), []); + let valueStyleIndex = 0; + for (let v = 0; v < valueSets.length; v++) { + const valueSet = valueSets[v]; + elementList.splice(i, 0, { + ...controlContext, + ...controlDefaultStyle, + controlId, + value: "", + type: el.type, + control: el.control, + controlComponent: ControlComponent.CHECKBOX, + checkbox: { + code: valueSet.code, + value: codeList.includes(valueSet.code) + } + }); + i++; + const valueStrList = splitText(valueSet.value); + for (let e = 0; e < valueStrList.length; e++) { + const value2 = valueStrList[e]; + const isLastLetter = e === valueStrList.length - 1; + elementList.splice(i, 0, { + ...controlContext, + ...controlDefaultStyle, + ...valueStyleList[valueStyleIndex], + controlId, + value: value2 === "\n" ? ZERO : value2, + letterSpacing: isLastLetter ? checkboxOption.gap : 0, + control: el.control, + controlComponent: ControlComponent.VALUE + }); + valueStyleIndex++; + i++; + } + } + } + } else if (type === ControlType.RADIO) { + if (Array.isArray(valueSets) && valueSets.length) { + const valueStyleList = valueList.reduce((pre, cur) => pre.concat(cur.value.split("").map((v) => ({ ...cur, value: v }))), []); + let valueStyleIndex = 0; + for (let v = 0; v < valueSets.length; v++) { + const valueSet = valueSets[v]; + elementList.splice(i, 0, { + ...controlContext, + ...controlDefaultStyle, + controlId, + value: "", + type: el.type, + control: el.control, + controlComponent: ControlComponent.RADIO, + radio: { + code: valueSet.code, + value: code === valueSet.code + } + }); + i++; + const valueStrList = splitText(valueSet.value); + for (let e = 0; e < valueStrList.length; e++) { + const value2 = valueStrList[e]; + const isLastLetter = e === valueStrList.length - 1; + elementList.splice(i, 0, { + ...controlContext, + ...controlDefaultStyle, + ...valueStyleList[valueStyleIndex], + controlId, + value: value2 === "\n" ? ZERO : value2, + letterSpacing: isLastLetter ? radioOption.gap : 0, + control: el.control, + controlComponent: ControlComponent.VALUE + }); + valueStyleIndex++; + i++; + } + } + } + } else { + if (!value || !value.length) { + if (Array.isArray(valueSets) && valueSets.length) { + const valueSet = valueSets.find((v) => v.code === code); + if (valueSet) { + valueList = [ + { + value: valueSet.value + } + ]; + } + } + } + formatElementList(valueList, { + ...options, + isHandleFirstElement: false, + isForceCompensation: false + }); + for (let v = 0; v < valueList.length; v++) { + const element = valueList[v]; + const value2 = element.value; + elementList.splice(i, 0, { + ...controlContext, + ...controlDefaultStyle, + ...element, + controlId, + value: value2 === "\n" ? ZERO : value2, + type: element.type || ElementType.TEXT, + control: el.control, + controlComponent: ControlComponent.VALUE + }); + i++; + } + } + } else if (placeholder) { + const thePlaceholderArgs = { + ...controlDefaultStyle, + color: editorOptions.control.placeholderColor + }; + const placeholderStrList = splitText(placeholder); + for (let p = 0; p < placeholderStrList.length; p++) { + const value2 = placeholderStrList[p]; + elementList.splice(i, 0, { + ...controlContext, + ...thePlaceholderArgs, + controlId, + value: value2 === "\n" ? ZERO : value2, + type: el.type, + control: el.control, + controlComponent: ControlComponent.PLACEHOLDER + }); + i++; + } + } + const postfixStrList = splitText(postfix || controlOption.postfix); + for (let p = 0; p < postfixStrList.length; p++) { + const value2 = postfixStrList[p]; + elementList.splice(i, 0, { + ...controlContext, + ...thePrePostfixArg, + controlId, + value: value2, + type: el.type, + control: el.control, + controlComponent: ControlComponent.POSTFIX + }); + i++; + } + i--; + } else if ((!el.type || TEXTLIKE_ELEMENT_TYPE.includes(el.type)) && el.value.length > 1) { + elementList.splice(i, 1); + const valueList = splitText(el.value); + for (let v = 0; v < valueList.length; v++) { + elementList.splice(i + v, 0, { ...el, value: valueList[v] }); + } + el = elementList[i]; + } + if (el.value === "\n" || el.value == "\r\n") { + el.value = ZERO; + } + if (el.type === ElementType.IMAGE || el.type === ElementType.BLOCK) { + el.id = getUUID(); + } + if (el.type === ElementType.LATEX) { + const { svg, width, height } = LaTexParticle.convertLaTextToSVG(el.value); + el.width = el.width || width; + el.height = el.height || height; + el.laTexSVG = svg; + el.id = getUUID(); + } + i++; + } +} +function isSameElementExceptValue(source, target) { + const sourceKeys = Object.keys(source); + const targetKeys = Object.keys(target); + if (sourceKeys.length !== targetKeys.length) + return false; + for (let s = 0; s < sourceKeys.length; s++) { + const key = sourceKeys[s]; + if (key === "value") + continue; + if (key === "groupIds" && Array.isArray(source[key]) && Array.isArray(target[key]) && isArrayEqual(source[key], target[key])) { + continue; + } + if (source[key] !== target[key]) { + return false; + } + } + return true; +} +function pickElementAttr(payload, option = {}) { + const { extraPickAttrs } = option; + const zipAttrs = EDITOR_ELEMENT_ZIP_ATTR; + if (extraPickAttrs) { + zipAttrs.push(...extraPickAttrs); + } + const element = { + value: payload.value === ZERO ? ` +` : payload.value + }; + zipAttrs.forEach((attr) => { + const value = payload[attr]; + if (value !== void 0) { + element[attr] = value; + } + }); + return element; +} +function zipElementList(payload, options = {}) { + const { extraPickAttrs } = options; + const elementList = deepClone(payload); + const zipElementListData = []; + let e = 0; + while (e < elementList.length) { + let element = elementList[e]; + if (e === 0 && element.value === ZERO && !element.listId && (!element.type || element.type === ElementType.TEXT)) { + e++; + continue; + } + if (element.titleId && element.level) { + const titleId = element.titleId; + if (titleId) { + const level = element.level; + const titleElement = { + type: ElementType.TITLE, + title: element.title, + value: "", + level + }; + const valueList = []; + while (e < elementList.length) { + const titleE = elementList[e]; + if (titleId !== titleE.titleId) { + e--; + break; + } + delete titleE.level; + delete titleE.title; + valueList.push(titleE); + e++; + } + titleElement.valueList = zipElementList(valueList, options); + element = titleElement; + } + } else if (element.listId && element.listType) { + const listId = element.listId; + if (listId) { + const listType = element.listType; + const listStyle = element.listStyle; + const listElement = { + type: ElementType.LIST, + value: "", + listId, + listType, + listStyle + }; + const valueList = []; + while (e < elementList.length) { + const listE = elementList[e]; + if (listId !== listE.listId) { + e--; + break; + } + delete listE.listType; + delete listE.listStyle; + valueList.push(listE); + e++; + } + listElement.valueList = zipElementList(valueList, options); + element = listElement; + } + } else if (element.type === ElementType.TABLE) { + if (element.pagingId) { + let tableIndex = e + 1; + let combineCount = 0; + while (tableIndex < elementList.length) { + const nextElement = elementList[tableIndex]; + if (nextElement.pagingId === element.pagingId) { + element.height += nextElement.height; + element.trList.push(...nextElement.trList); + tableIndex++; + combineCount++; + } else { + break; + } + } + e += combineCount; + } + if (element.trList) { + for (let t = 0; t < element.trList.length; t++) { + const tr = element.trList[t]; + delete tr.id; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const zipTd = { + colspan: td.colspan, + rowspan: td.rowspan, + value: zipElementList(td.value, options) + }; + TABLE_TD_ZIP_ATTR.forEach((attr) => { + const value = td[attr]; + if (value !== void 0) { + zipTd[attr] = value; + } + }); + tr.tdList[d] = zipTd; + } + } + } + } else if (element.type === ElementType.HYPERLINK) { + const hyperlinkId = element.hyperlinkId; + if (hyperlinkId) { + const hyperlinkElement = { + type: ElementType.HYPERLINK, + value: "", + url: element.url + }; + const valueList = []; + while (e < elementList.length) { + const hyperlinkE = elementList[e]; + if (hyperlinkId !== hyperlinkE.hyperlinkId) { + e--; + break; + } + delete hyperlinkE.type; + delete hyperlinkE.url; + valueList.push(hyperlinkE); + e++; + } + hyperlinkElement.valueList = zipElementList(valueList, options); + element = hyperlinkElement; + } + } else if (element.type === ElementType.DATE) { + const dateId = element.dateId; + if (dateId) { + const dateElement = { + type: ElementType.DATE, + value: "", + dateFormat: element.dateFormat + }; + const valueList = []; + while (e < elementList.length) { + const dateE = elementList[e]; + if (dateId !== dateE.dateId) { + e--; + break; + } + delete dateE.type; + delete dateE.dateFormat; + valueList.push(dateE); + e++; + } + dateElement.valueList = zipElementList(valueList, options); + element = dateElement; + } + } else if (element.controlId) { + const controlId = element.controlId; + if (controlId) { + const controlDefaultStyle = pickObject(element, CONTROL_STYLE_ATTR); + const control = { + ...element.control, + ...controlDefaultStyle + }; + const controlElement = { + ...pickObject(element, EDITOR_ROW_ATTR), + type: ElementType.CONTROL, + value: "", + control, + controlId + }; + const valueList = []; + while (e < elementList.length) { + const controlE = elementList[e]; + if (controlId !== controlE.controlId) { + e--; + break; + } + if (controlE.controlComponent === ControlComponent.VALUE) { + delete controlE.control; + delete controlE.controlId; + valueList.push(controlE); + } + e++; + } + controlElement.control.value = zipElementList(valueList, options); + element = pickElementAttr(controlElement, { extraPickAttrs }); + } + } + const pickElement = pickElementAttr(element, { extraPickAttrs }); + if (!element.type || element.type === ElementType.TEXT || element.type === ElementType.SUBSCRIPT || element.type === ElementType.SUPERSCRIPT) { + while (e < elementList.length) { + const nextElement = elementList[e + 1]; + e++; + if (nextElement && isSameElementExceptValue(pickElement, pickElementAttr(nextElement, { extraPickAttrs }))) { + const nextValue = nextElement.value === ZERO ? "\n" : nextElement.value; + pickElement.value += nextValue; + } else { + break; + } + } + } else { + e++; + } + zipElementListData.push(pickElement); + } + return zipElementListData; +} +function convertTextAlignToRowFlex(node) { + const textAlign = window.getComputedStyle(node).textAlign; + switch (textAlign) { + case "left": + case "start": + return RowFlex.LEFT; + case "center": + return RowFlex.CENTER; + case "right": + case "end": + return RowFlex.RIGHT; + case "justify": + return RowFlex.ALIGNMENT; + case "justify-all": + return RowFlex.JUSTIFY; + default: + return RowFlex.LEFT; + } +} +function convertRowFlexToTextAlign(rowFlex) { + return rowFlex === RowFlex.ALIGNMENT ? "justify" : rowFlex; +} +function convertRowFlexToJustifyContent(rowFlex) { + switch (rowFlex) { + case RowFlex.LEFT: + return "flex-start"; + case RowFlex.CENTER: + return "center"; + case RowFlex.RIGHT: + return "flex-end"; + case RowFlex.ALIGNMENT: + case RowFlex.JUSTIFY: + return "space-between"; + default: + return "flex-start"; + } +} +function isTextLikeElement(element) { + return !element.type || TEXTLIKE_ELEMENT_TYPE.includes(element.type); +} +function getAnchorElement(elementList, anchorIndex) { + const anchorElement = elementList[anchorIndex]; + if (!anchorElement) + return null; + const anchorNextElement = elementList[anchorIndex + 1]; + return !anchorElement.listId && anchorElement.value === ZERO && anchorNextElement && anchorNextElement.value !== ZERO ? anchorNextElement : anchorElement; +} +function formatElementContext(sourceElementList, formatElementList2, anchorIndex, options) { + var _a, _b, _c; + let copyElement = getAnchorElement(sourceElementList, anchorIndex); + if (!copyElement) + return; + const { isBreakWhenWrap = false, editorOptions } = options || {}; + const { mode } = editorOptions || {}; + if (mode !== EditorMode.DESIGN && ((_a = copyElement.title) == null ? void 0 : _a.disabled)) { + copyElement = omitObject(copyElement, TITLE_CONTEXT_ATTR); + } + let isBreakWarped = false; + for (let e = 0; e < formatElementList2.length; e++) { + const targetElement = formatElementList2[e]; + if (isBreakWhenWrap && !copyElement.listId && START_LINE_BREAK_REG.test(targetElement.value)) { + isBreakWarped = true; + } + if (isBreakWarped || !copyElement.listId && targetElement.type === ElementType.LIST) { + const cloneAttr2 = [...TABLE_CONTEXT_ATTR, ...EDITOR_ROW_ATTR]; + cloneProperty(cloneAttr2, copyElement, targetElement); + (_b = targetElement.valueList) == null ? void 0 : _b.forEach((valueItem) => { + cloneProperty(cloneAttr2, copyElement, valueItem); + }); + continue; + } + if ((_c = targetElement.valueList) == null ? void 0 : _c.length) { + formatElementContext(sourceElementList, targetElement.valueList, anchorIndex, options); + } + const cloneAttr = [...EDITOR_ELEMENT_CONTEXT_ATTR]; + if (!getIsBlockElement(targetElement)) { + cloneAttr.push(...EDITOR_ROW_ATTR); + } + cloneProperty(cloneAttr, copyElement, targetElement); + } +} +function convertElementToDom(element, options) { + let tagName = "span"; + if (element.type === ElementType.SUPERSCRIPT) { + tagName = "sup"; + } else if (element.type === ElementType.SUBSCRIPT) { + tagName = "sub"; + } + const dom = document.createElement(tagName); + dom.style.fontFamily = element.font || options.defaultFont; + if (element.rowFlex) { + dom.style.textAlign = convertRowFlexToTextAlign(element.rowFlex); + } + if (element.color) { + dom.style.color = element.color; + } + if (element.bold) { + dom.style.fontWeight = "600"; + } + if (element.italic) { + dom.style.fontStyle = "italic"; + } + dom.style.fontSize = `${element.size || options.defaultSize}px`; + if (element.highlight) { + dom.style.backgroundColor = element.highlight; + } + if (element.underline) { + dom.style.textDecoration = "underline"; + } + if (element.strikeout) { + dom.style.textDecoration += " line-through"; + } + dom.innerText = element.value.replace(new RegExp(`${ZERO}`, "g"), "\n"); + return dom; +} +function splitListElement(elementList) { + let curListIndex = 0; + const listElementListMap = /* @__PURE__ */ new Map(); + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (e === 0) { + if (element.checkbox) + continue; + element.value = element.value.replace(START_LINE_BREAK_REG, ""); + } + if (element.listWrap) { + const listElementList = listElementListMap.get(curListIndex) || []; + listElementList.push(element); + listElementListMap.set(curListIndex, listElementList); + } else { + const valueList = element.value.split("\n"); + for (let c = 0; c < valueList.length; c++) { + if (c > 0) { + curListIndex += 1; + } + const value = valueList[c]; + const listElementList = listElementListMap.get(curListIndex) || []; + listElementList.push({ + ...element, + value + }); + listElementListMap.set(curListIndex, listElementList); + } + } + } + return listElementListMap; +} +function groupElementListByRowFlex(elementList) { + var _a; + const elementListGroupList = []; + if (!elementList.length) + return elementListGroupList; + let currentRowFlex = ((_a = elementList[0]) == null ? void 0 : _a.rowFlex) || null; + elementListGroupList.push({ + rowFlex: currentRowFlex, + data: [elementList[0]] + }); + for (let e = 1; e < elementList.length; e++) { + const element = elementList[e]; + const rowFlex = element.rowFlex || null; + if (currentRowFlex === rowFlex && !getIsBlockElement(element) && !getIsBlockElement(elementList[e - 1])) { + const lastElementListGroup = elementListGroupList[elementListGroupList.length - 1]; + lastElementListGroup.data.push(element); + } else { + elementListGroupList.push({ + rowFlex, + data: [element] + }); + currentRowFlex = rowFlex; + } + } + for (let g = 0; g < elementListGroupList.length; g++) { + const elementListGroup = elementListGroupList[g]; + elementListGroup.data = zipElementList(elementListGroup.data); + } + return elementListGroupList; +} +function createDomFromElementList(elementList, options) { + const editorOptions = mergeOption(options); + function buildDom(payload) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i; + const clipboardDom2 = document.createElement("div"); + for (let e = 0; e < payload.length; e++) { + const element = payload[e]; + if (element.type === ElementType.TABLE) { + const tableDom = document.createElement("table"); + tableDom.setAttribute("cellSpacing", "0"); + tableDom.setAttribute("cellpadding", "0"); + tableDom.setAttribute("border", "0"); + const borderStyle = "1px solid #000000"; + if (!element.borderType || element.borderType === TableBorder.ALL) { + tableDom.style.borderTop = borderStyle; + tableDom.style.borderLeft = borderStyle; + } else if (element.borderType === TableBorder.EXTERNAL) { + tableDom.style.border = borderStyle; + } + tableDom.style.width = `${element.width}px`; + const colgroupDom = document.createElement("colgroup"); + for (let c = 0; c < element.colgroup.length; c++) { + const colgroup = element.colgroup[c]; + const colDom = document.createElement("col"); + colDom.setAttribute("width", `${colgroup.width}`); + colgroupDom.append(colDom); + } + tableDom.append(colgroupDom); + const trList = element.trList; + for (let t = 0; t < trList.length; t++) { + const trDom = document.createElement("tr"); + const tr = trList[t]; + trDom.style.height = `${tr.height}px`; + for (let d = 0; d < tr.tdList.length; d++) { + const tdDom = document.createElement("td"); + if (!element.borderType || element.borderType === TableBorder.ALL) { + tdDom.style.borderBottom = tdDom.style.borderRight = "1px solid"; + } + const td = tr.tdList[d]; + tdDom.colSpan = td.colspan; + tdDom.rowSpan = td.rowspan; + tdDom.style.verticalAlign = td.verticalAlign || "top"; + if ((_a = td.borderTypes) == null ? void 0 : _a.includes(TdBorder.TOP)) { + tdDom.style.borderTop = borderStyle; + } + if ((_b = td.borderTypes) == null ? void 0 : _b.includes(TdBorder.RIGHT)) { + tdDom.style.borderRight = borderStyle; + } + if ((_c = td.borderTypes) == null ? void 0 : _c.includes(TdBorder.BOTTOM)) { + tdDom.style.borderBottom = borderStyle; + } + if ((_d = td.borderTypes) == null ? void 0 : _d.includes(TdBorder.LEFT)) { + tdDom.style.borderLeft = borderStyle; + } + const childDom = createDomFromElementList(td.value, options); + tdDom.innerHTML = childDom.innerHTML; + if (td.backgroundColor) { + tdDom.style.backgroundColor = td.backgroundColor; + } + trDom.append(tdDom); + } + tableDom.append(trDom); + } + clipboardDom2.append(tableDom); + } else if (element.type === ElementType.HYPERLINK) { + const a = document.createElement("a"); + a.innerText = element.valueList.map((v) => v.value).join(""); + if (element.url) { + a.href = element.url; + } + clipboardDom2.append(a); + } else if (element.type === ElementType.TITLE) { + const h = document.createElement(`h${titleOrderNumberMapping[element.level]}`); + const childDom = buildDom(element.valueList); + h.innerHTML = childDom.innerHTML; + clipboardDom2.append(h); + } else if (element.type === ElementType.LIST) { + const list = document.createElement(listTypeElementMapping[element.listType]); + if (element.listStyle) { + list.style.listStyleType = listStyleCSSMapping[element.listStyle]; + } + const zipList = zipElementList(element.valueList); + const listElementListMap = splitListElement(zipList); + listElementListMap.forEach((listElementList) => { + const li = document.createElement("li"); + const childDom = buildDom(listElementList); + li.innerHTML = childDom.innerHTML; + list.append(li); + }); + clipboardDom2.append(list); + } else if (element.type === ElementType.IMAGE) { + const img = document.createElement("img"); + if (element.value) { + img.src = element.value; + img.width = element.width; + img.height = element.height; + } + clipboardDom2.append(img); + } else if (element.type === ElementType.SEPARATOR) { + const hr = document.createElement("hr"); + clipboardDom2.append(hr); + } else if (element.type === ElementType.CHECKBOX) { + const checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + if ((_e = element.checkbox) == null ? void 0 : _e.value) { + checkbox.setAttribute("checked", "true"); + } + clipboardDom2.append(checkbox); + } else if (element.type === ElementType.RADIO) { + const radio = document.createElement("input"); + radio.type = "radio"; + if ((_f = element.radio) == null ? void 0 : _f.value) { + radio.setAttribute("checked", "true"); + } + clipboardDom2.append(radio); + } else if (element.type === ElementType.TAB) { + const tab2 = document.createElement("span"); + tab2.innerHTML = `${NON_BREAKING_SPACE}${NON_BREAKING_SPACE}`; + clipboardDom2.append(tab2); + } else if (element.type === ElementType.CONTROL) { + const controlElement = document.createElement("span"); + const childDom = buildDom(((_g = element.control) == null ? void 0 : _g.value) || []); + controlElement.innerHTML = childDom.innerHTML; + clipboardDom2.append(controlElement); + } else if (!element.type || element.type === ElementType.LATEX || TEXTLIKE_ELEMENT_TYPE.includes(element.type)) { + let text = ""; + if (element.type === ElementType.DATE) { + text = ((_h = element.valueList) == null ? void 0 : _h.map((v) => v.value).join("")) || ""; + } else { + text = element.value; + } + if (!text) + continue; + const dom = convertElementToDom(element, editorOptions); + if (((_i = payload[e - 1]) == null ? void 0 : _i.type) === ElementType.TITLE) { + text = text.replace(/^\n/, ""); + } + dom.innerText = text.replace(new RegExp(`${ZERO}`, "g"), "\n"); + clipboardDom2.append(dom); + } + } + return clipboardDom2; + } + const clipboardDom = document.createElement("div"); + const groupElementList = groupElementListByRowFlex(elementList); + for (let g = 0; g < groupElementList.length; g++) { + const elementGroupRowFlex = groupElementList[g]; + const isDefaultRowFlex = !elementGroupRowFlex.rowFlex || elementGroupRowFlex.rowFlex === RowFlex.LEFT; + const rowFlexDom = document.createElement("div"); + if (!isDefaultRowFlex) { + const firstElement = elementGroupRowFlex.data[0]; + if (getIsBlockElement(firstElement)) { + rowFlexDom.style.display = "flex"; + rowFlexDom.style.justifyContent = convertRowFlexToJustifyContent(firstElement.rowFlex); + } else { + rowFlexDom.style.textAlign = convertRowFlexToTextAlign(elementGroupRowFlex.rowFlex); + } + } + rowFlexDom.innerHTML = buildDom(elementGroupRowFlex.data).innerHTML; + if (!isDefaultRowFlex) { + clipboardDom.append(rowFlexDom); + } else { + rowFlexDom.childNodes.forEach((child) => { + clipboardDom.append(child.cloneNode(true)); + }); + } + } + return clipboardDom; +} +function convertTextNodeToElement(textNode) { + if (!textNode || textNode.nodeType !== 3) + return null; + const parentNode = textNode.parentNode; + const anchorNode = parentNode.nodeName === "FONT" ? parentNode.parentNode : parentNode; + const rowFlex = convertTextAlignToRowFlex(anchorNode); + const value = textNode.textContent; + const style = window.getComputedStyle(anchorNode); + if (!value || anchorNode.nodeName === "STYLE") + return null; + const element = { + value, + color: style.color, + bold: Number(style.fontWeight) > 500, + italic: style.fontStyle.includes("italic"), + size: Math.floor(parseFloat(style.fontSize)) + }; + if (anchorNode.nodeName === "SUB" || style.verticalAlign === "sub") { + element.type = ElementType.SUBSCRIPT; + } else if (anchorNode.nodeName === "SUP" || style.verticalAlign === "super") { + element.type = ElementType.SUPERSCRIPT; + } + if (rowFlex !== RowFlex.LEFT) { + element.rowFlex = rowFlex; + } + if (style.backgroundColor !== "rgba(0, 0, 0, 0)") { + element.highlight = style.backgroundColor; + } + if (style.textDecorationLine.includes("underline")) { + element.underline = true; + } + if (style.textDecorationLine.includes("line-through")) { + element.strikeout = true; + } + return element; +} +function getElementListByHTML(htmlText, options) { + const elementList = []; + function findTextNode(dom) { + if (dom.nodeType === 3) { + const element = convertTextNodeToElement(dom); + if (element) { + elementList.push(element); + } + } else if (dom.nodeType === 1) { + const childNodes = dom.childNodes; + for (let n = 0; n < childNodes.length; n++) { + const node = childNodes[n]; + if (node.nodeName === "BR") { + elementList.push({ + value: "\n" + }); + } else if (node.nodeName === "A") { + const aElement = node; + const value = aElement.innerText; + if (value) { + elementList.push({ + type: ElementType.HYPERLINK, + value: "", + valueList: [ + { + value + } + ], + url: aElement.href + }); + } + } else if (/H[1-6]/.test(node.nodeName)) { + const hElement = node; + const valueList = getElementListByHTML(replaceHTMLElementTag(hElement, "div").outerHTML, options); + elementList.push({ + value: "", + type: ElementType.TITLE, + level: titleNodeNameMapping[node.nodeName], + valueList + }); + if (node.nextSibling && !INLINE_NODE_NAME.includes(node.nextSibling.nodeName)) { + elementList.push({ + value: "\n" + }); + } + } else if (node.nodeName === "UL" || node.nodeName === "OL") { + const listNode = node; + const listElement = { + value: "", + type: ElementType.LIST, + valueList: [] + }; + if (node.nodeName === "OL") { + listElement.listType = ListType.OL; + } else { + listElement.listType = ListType.UL; + listElement.listStyle = listNode.style.listStyleType; + } + listNode.querySelectorAll("li").forEach((li) => { + const liValueList = getElementListByHTML(li.innerHTML, options); + liValueList.forEach((list) => { + if (list.value === "\n") { + list.listWrap = true; + } + }); + liValueList.unshift({ + value: "\n" + }); + listElement.valueList.push(...liValueList); + }); + elementList.push(listElement); + } else if (node.nodeName === "HR") { + elementList.push({ + value: "\n", + type: ElementType.SEPARATOR + }); + } else if (node.nodeName === "IMG") { + const { src, width, height } = node; + if (src && width && height) { + elementList.push({ + width, + height, + value: src, + type: ElementType.IMAGE + }); + } + } else if (node.nodeName === "TABLE") { + const tableElement = node; + const element = { + type: ElementType.TABLE, + value: "\n", + colgroup: [], + trList: [] + }; + tableElement.querySelectorAll("tr").forEach((trElement) => { + const trHeightStr = window.getComputedStyle(trElement).height.replace("px", ""); + const tr = { + height: Number(trHeightStr), + tdList: [] + }; + trElement.querySelectorAll("th,td").forEach((tdElement) => { + const tableCell = tdElement; + const valueList = getElementListByHTML(tableCell.innerHTML, options); + const td = { + colspan: tableCell.colSpan, + rowspan: tableCell.rowSpan, + value: valueList + }; + if (tableCell.style.backgroundColor) { + td.backgroundColor = tableCell.style.backgroundColor; + } + tr.tdList.push(td); + }); + element.trList.push(tr); + }); + if (element.trList.length) { + const tdCount = element.trList[0].tdList.reduce((pre, cur) => pre + cur.colspan, 0); + const width = Math.ceil(options.innerWidth / tdCount); + for (let i = 0; i < tdCount; i++) { + element.colgroup.push({ + width + }); + } + elementList.push(element); + } + } else if (node.nodeName === "INPUT" && node.type === ControlComponent.CHECKBOX) { + elementList.push({ + type: ElementType.CHECKBOX, + value: "", + checkbox: { + value: node.checked + } + }); + } else if (node.nodeName === "INPUT" && node.type === ControlComponent.RADIO) { + elementList.push({ + type: ElementType.RADIO, + value: "", + radio: { + value: node.checked + } + }); + } else { + findTextNode(node); + if (node.nodeType === 1 && n !== childNodes.length - 1) { + const display = window.getComputedStyle(node).display; + if (display === "block") { + elementList.push({ + value: "\n" + }); + } + } + } + } + } + } + const clipboardDom = document.createElement("div"); + clipboardDom.innerHTML = htmlText; + document.body.appendChild(clipboardDom); + const deleteNodes = []; + clipboardDom.childNodes.forEach((child) => { + var _a; + if (child.nodeType !== 1 && !((_a = child.textContent) == null ? void 0 : _a.trim())) { + deleteNodes.push(child); + } + }); + deleteNodes.forEach((node) => node.remove()); + findTextNode(clipboardDom); + clipboardDom.remove(); + return elementList; +} +function getTextFromElementList(elementList) { + function buildText(payload) { + var _a, _b, _c, _d, _e; + let text = ""; + for (let e = 0; e < payload.length; e++) { + const element = payload[e]; + if (element.type === ElementType.TABLE) { + text += ` +`; + const trList = element.trList; + for (let t = 0; t < trList.length; t++) { + const tr = trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const tdText = buildText(zipElementList(td.value)); + const isFirst = d === 0; + const isLast = tr.tdList.length - 1 === d; + text += `${!isFirst ? ` ` : ``}${tdText}${isLast ? ` +` : ``}`; + } + } + } else if (element.type === ElementType.TAB) { + text += ` `; + } else if (element.type === ElementType.HYPERLINK) { + text += element.valueList.map((v) => v.value).join(""); + } else if (element.type === ElementType.TITLE) { + text += `${buildText(zipElementList(element.valueList))}`; + } else if (element.type === ElementType.LIST) { + const zipList = zipElementList(element.valueList); + const listElementListMap = splitListElement(zipList); + let ulListStyleText = ""; + if (element.listType === ListType.UL) { + ulListStyleText = ulStyleMapping[element.listStyle]; + } + listElementListMap.forEach((listElementList, listIndex) => { + const isLast = listElementListMap.size - 1 === listIndex; + text += ` +${ulListStyleText || `${listIndex + 1}.`}${buildText(listElementList)}${isLast ? ` +` : ``}`; + }); + } else if (element.type === ElementType.CHECKBOX) { + text += ((_a = element.checkbox) == null ? void 0 : _a.value) ? `\u2611` : `\u25A1`; + } else if (element.type === ElementType.RADIO) { + text += ((_b = element.radio) == null ? void 0 : _b.value) ? `\u2609` : `\u25CB`; + } else if (!element.type || element.type === ElementType.LATEX || TEXTLIKE_ELEMENT_TYPE.includes(element.type)) { + let textLike = ""; + if (element.type === ElementType.CONTROL) { + textLike = ((_d = (_c = element.control.value) == null ? void 0 : _c[0]) == null ? void 0 : _d.value) || ""; + } else if (element.type === ElementType.DATE) { + textLike = ((_e = element.valueList) == null ? void 0 : _e.map((v) => v.value).join("")) || ""; + } else { + textLike = element.value; + } + text += textLike.replace(new RegExp(`${ZERO}`, "g"), "\n"); + } + } + return text; + } + return buildText(zipElementList(elementList)); +} +function getSlimCloneElementList(elementList) { + return deepCloneOmitKeys(elementList, [ + "metrics", + "style" + ]); +} +function getIsBlockElement(element) { + return !!(element == null ? void 0 : element.type) && (BLOCK_ELEMENT_TYPE.includes(element.type) || element.imgDisplay === ImageDisplay.INLINE); +} +function replaceHTMLElementTag(oldDom, tagName) { + const newDom = document.createElement(tagName); + for (let i = 0; i < oldDom.attributes.length; i++) { + const attr = oldDom.attributes[i]; + newDom.setAttribute(attr.name, attr.value); + } + newDom.innerHTML = oldDom.innerHTML; + return newDom; +} +function pickSurroundElementList(elementList) { + const surroundElementList = []; + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (element.imgDisplay === ImageDisplay.SURROUND) { + surroundElementList.push(element); + } + } + return surroundElementList; +} +function deleteSurroundElementList(elementList, pageNo) { + var _a; + for (let s = elementList.length - 1; s >= 0; s--) { + const surroundElement = elementList[s]; + if (((_a = surroundElement.imgFloatPosition) == null ? void 0 : _a.pageNo) === pageNo) { + elementList.splice(s, 1); + } + } +} +function setClipboardData(data2) { + localStorage.setItem(EDITOR_CLIPBOARD, JSON.stringify({ + text: data2.text, + elementList: data2.elementList + })); +} +function getClipboardData() { + const clipboardText = localStorage.getItem(EDITOR_CLIPBOARD); + return clipboardText ? JSON.parse(clipboardText) : null; +} +function removeClipboardData() { + localStorage.removeItem(EDITOR_CLIPBOARD); +} +function writeClipboardItem(text, html, elementList) { + if (!text && !html && !elementList.length) + return; + const plainText = new Blob([text], { type: "text/plain" }); + const htmlText = new Blob([html], { type: "text/html" }); + if (window.ClipboardItem) { + const item = new ClipboardItem({ + [plainText.type]: plainText, + [htmlText.type]: htmlText + }); + window.navigator.clipboard.write([item]); + } else { + const fakeElement = document.createElement("div"); + fakeElement.setAttribute("contenteditable", "true"); + fakeElement.innerHTML = html; + document.body.append(fakeElement); + const selection = window.getSelection(); + const range = document.createRange(); + const br = document.createElement("span"); + br.innerText = "\n"; + fakeElement.append(br); + range.selectNodeContents(fakeElement); + selection == null ? void 0 : selection.removeAllRanges(); + selection == null ? void 0 : selection.addRange(range); + document.execCommand("copy"); + fakeElement.remove(); + } + setClipboardData({ text, elementList }); +} +function writeElementList(elementList, options) { + const clipboardDom = createDomFromElementList(elementList, options); + document.body.append(clipboardDom); + const text = clipboardDom.innerText; + clipboardDom.remove(); + const html = clipboardDom.innerHTML; + if (!text && !html && !elementList.length) + return; + writeClipboardItem(text, html, zipElementList(elementList)); +} +function getIsClipboardContainFile(clipboardData) { + let isFile = false; + for (let i = 0; i < clipboardData.items.length; i++) { + const item = clipboardData.items[i]; + if (item.kind === "file") { + isFile = true; + break; + } + } + return isFile; +} +function pasteElement(host, elementList) { + const draw = host.getDraw(); + if (draw.isReadonly() || draw.isDisabled()) + return; + const rangeManager = draw.getRange(); + const { startIndex } = rangeManager.getRange(); + const originalElementList = draw.getElementList(); + if (~startIndex && !rangeManager.getIsSelectAll()) { + const anchorElement = originalElementList[startIndex]; + if ((anchorElement == null ? void 0 : anchorElement.titleId) || (anchorElement == null ? void 0 : anchorElement.listId)) { + let start = 0; + while (start < elementList.length) { + const pasteElement2 = elementList[start]; + if (anchorElement.titleId && /^\n/.test(pasteElement2.value)) { + break; + } + if (VIRTUAL_ELEMENT_TYPE.includes(pasteElement2.type)) { + elementList.splice(start, 1); + if (pasteElement2.valueList) { + for (let v = 0; v < pasteElement2.valueList.length; v++) { + const element = pasteElement2.valueList[v]; + if (element.value === ZERO || element.value === "\n") { + continue; + } + elementList.splice(start, 0, element); + start++; + } + } + start--; + } + start++; + } + } + formatElementContext(originalElementList, elementList, startIndex, { + isBreakWhenWrap: true, + editorOptions: draw.getOptions() + }); + } + draw.insertElementList(elementList); +} +function pasteHTML(host, htmlText) { + const draw = host.getDraw(); + if (draw.isReadonly() || draw.isDisabled()) + return; + const elementList = getElementListByHTML(htmlText, { + innerWidth: draw.getOriginalInnerWidth() + }); + pasteElement(host, elementList); +} +function pasteImage(host, file) { + const draw = host.getDraw(); + if (draw.isReadonly() || draw.isDisabled()) + return; + const rangeManager = draw.getRange(); + const { startIndex } = rangeManager.getRange(); + const elementList = draw.getElementList(); + const fileReader = new FileReader(); + fileReader.readAsDataURL(file); + fileReader.onload = () => { + const image = new Image(); + const value = fileReader.result; + image.src = value; + image.onload = () => { + const imageElement = { + value, + type: ElementType.IMAGE, + width: image.width, + height: image.height + }; + if (~startIndex) { + formatElementContext(elementList, [imageElement], startIndex, { + editorOptions: draw.getOptions() + }); + } + draw.insertElementList([imageElement]); + }; + }; +} +function pasteByEvent(host, evt) { + const draw = host.getDraw(); + if (draw.isReadonly() || draw.isDisabled()) + return; + const clipboardData = evt.clipboardData; + if (!clipboardData) + return; + const { paste } = draw.getOverride(); + if (paste) { + const overrideResult = paste(evt); + if ((overrideResult == null ? void 0 : overrideResult.preventDefault) !== false) + return; + } + if (!getIsClipboardContainFile(clipboardData)) { + const clipboardText = clipboardData.getData("text"); + const editorClipboardData = getClipboardData(); + if (clipboardText === (editorClipboardData == null ? void 0 : editorClipboardData.text)) { + pasteElement(host, editorClipboardData.elementList); + return; + } + } + removeClipboardData(); + let isHTML = false; + for (let i = 0; i < clipboardData.items.length; i++) { + const item = clipboardData.items[i]; + if (item.type === "text/html") { + isHTML = true; + break; + } + } + for (let i = 0; i < clipboardData.items.length; i++) { + const item = clipboardData.items[i]; + if (item.kind === "string") { + if (item.type === "text/plain" && !isHTML) { + item.getAsString((plainText) => { + host.input(plainText); + }); + break; + } + if (item.type === "text/html" && isHTML) { + item.getAsString((htmlText) => { + pasteHTML(host, htmlText); + }); + break; + } + } else if (item.kind === "file") { + if (item.type.includes("image")) { + const file = item.getAsFile(); + if (file) { + pasteImage(host, file); + } + } + } + } +} +async function pasteByApi(host, options) { + const draw = host.getDraw(); + if (draw.isReadonly() || draw.isDisabled()) + return; + const { paste } = draw.getOverride(); + if (paste) { + const overrideResult = paste(); + if ((overrideResult == null ? void 0 : overrideResult.preventDefault) !== false) + return; + } + const clipboardText = await navigator.clipboard.readText(); + const editorClipboardData = getClipboardData(); + if (clipboardText === (editorClipboardData == null ? void 0 : editorClipboardData.text)) { + pasteElement(host, editorClipboardData.elementList); + return; + } + removeClipboardData(); + if (options == null ? void 0 : options.isPlainText) { + if (clipboardText) { + host.input(clipboardText); + } + } else { + const clipboardData = await navigator.clipboard.read(); + let isHTML = false; + for (const item of clipboardData) { + if (item.types.includes("text/html")) { + isHTML = true; + break; + } + } + for (const item of clipboardData) { + if (item.types.includes("text/plain") && !isHTML) { + const textBlob = await item.getType("text/plain"); + const text = await textBlob.text(); + if (text) { + host.input(text); + } + } else if (item.types.includes("text/html") && isHTML) { + const htmlTextBlob = await item.getType("text/html"); + const htmlText = await htmlTextBlob.text(); + if (htmlText) { + pasteHTML(host, htmlText); + } + } else if (item.types.some((type) => type.startsWith("image/"))) { + const type = item.types.find((type2) => type2.startsWith("image/")); + const imageBlob = await item.getType(type); + pasteImage(host, imageBlob); + } + } + } +} +class CursorAgent { + constructor(draw, canvasEvent) { + this.draw = draw; + this.container = draw.getContainer(); + this.canvasEvent = canvasEvent; + const agentCursorDom = document.createElement("textarea"); + agentCursorDom.autocomplete = "off"; + agentCursorDom.classList.add(`${EDITOR_PREFIX}-inputarea`); + agentCursorDom.innerText = ""; + this.container.append(agentCursorDom); + this.agentCursorDom = agentCursorDom; + agentCursorDom.onkeydown = (evt) => this._keyDown(evt); + agentCursorDom.oninput = debounce(this._input.bind(this), 0); + agentCursorDom.onpaste = (evt) => this._paste(evt); + agentCursorDom.addEventListener("compositionstart", this._compositionstart.bind(this)); + agentCursorDom.addEventListener("compositionend", this._compositionend.bind(this)); + } + getAgentCursorDom() { + return this.agentCursorDom; + } + _keyDown(evt) { + this.canvasEvent.keydown(evt); + } + _input(evt) { + const data2 = evt.data; + if (!data2) + return; + this.canvasEvent.input(data2); + } + _paste(evt) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + const clipboardData = evt.clipboardData; + if (!clipboardData) + return; + pasteByEvent(this.canvasEvent, evt); + evt.preventDefault(); + } + _compositionstart() { + this.canvasEvent.compositionstart(); + } + _compositionend(evt) { + this.canvasEvent.compositionend(evt); + } +} +class Cursor { + constructor(draw, canvasEvent) { + this.ANIMATION_CLASS = `${EDITOR_PREFIX}-cursor--animation`; + this.draw = draw; + this.container = draw.getContainer(); + this.position = draw.getPosition(); + this.options = draw.getOptions(); + this.cursorDom = document.createElement("div"); + this.cursorDom.classList.add(`${EDITOR_PREFIX}-cursor`); + this.container.append(this.cursorDom); + this.cursorAgent = new CursorAgent(draw, canvasEvent); + this.blinkTimeout = null; + } + getCursorDom() { + return this.cursorDom; + } + getAgentDom() { + return this.cursorAgent.getAgentCursorDom(); + } + getAgentIsActive() { + return this.getAgentDom() === document.activeElement; + } + getAgentDomValue() { + return this.getAgentDom().value; + } + clearAgentDomValue() { + this.getAgentDom().value = ""; + } + _blinkStart() { + this.cursorDom.classList.add(this.ANIMATION_CLASS); + } + _blinkStop() { + this.cursorDom.classList.remove(this.ANIMATION_CLASS); + } + _setBlinkTimeout() { + this._clearBlinkTimeout(); + this.blinkTimeout = window.setTimeout(() => { + this._blinkStart(); + }, 500); + } + _clearBlinkTimeout() { + if (this.blinkTimeout) { + this._blinkStop(); + window.clearTimeout(this.blinkTimeout); + this.blinkTimeout = null; + } + } + drawCursor(payload) { + let cursorPosition = this.position.getCursorPosition(); + if (!cursorPosition) + return; + const { scale, cursor } = this.options; + const { color, width, isShow = true, isBlink = true, isFocus = true, hitLineStartIndex } = { ...cursor, ...payload }; + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + if (hitLineStartIndex) { + const positionList = this.position.getPositionList(); + cursorPosition = positionList[hitLineStartIndex]; + } + const { metrics, coordinate: { leftTop, rightTop }, ascent, pageNo } = cursorPosition; + const zoneManager = this.draw.getZone(); + const curPageNo = zoneManager.isMainActive() ? pageNo : this.draw.getPageNo(); + const preY = curPageNo * (height + pageGap); + const defaultOffsetHeight = CURSOR_AGENT_OFFSET_HEIGHT * scale; + const increaseHeight = Math.min(metrics.height / 4, defaultOffsetHeight); + const cursorHeight = metrics.height + increaseHeight * 2; + const agentCursorDom = this.cursorAgent.getAgentCursorDom(); + if (isFocus) { + setTimeout(() => { + if (document.activeElement !== agentCursorDom) { + agentCursorDom.focus(); + agentCursorDom.setSelectionRange(0, 0); + } + }); + } + const descent = metrics.boundingBoxDescent < 0 ? 0 : metrics.boundingBoxDescent; + const cursorTop = leftTop[1] + ascent + descent - (cursorHeight - increaseHeight) + preY; + const cursorLeft = hitLineStartIndex ? leftTop[0] : rightTop[0]; + agentCursorDom.style.left = `${cursorLeft}px`; + agentCursorDom.style.top = `${cursorTop + cursorHeight - defaultOffsetHeight}px`; + if (!isShow) { + this.recoveryCursor(); + return; + } + const isReadonly = this.draw.isReadonly(); + this.cursorDom.style.width = `${width * scale}px`; + this.cursorDom.style.backgroundColor = color; + this.cursorDom.style.left = `${cursorLeft}px`; + this.cursorDom.style.top = `${cursorTop}px`; + this.cursorDom.style.display = isReadonly ? "none" : "block"; + this.cursorDom.style.height = `${cursorHeight}px`; + if (isBlink) { + this._setBlinkTimeout(); + } else { + this._clearBlinkTimeout(); + } + } + recoveryCursor() { + this.cursorDom.style.display = "none"; + this._clearBlinkTimeout(); + } + moveCursorToVisible(payload) { + const { cursorPosition, direction } = payload; + if (!cursorPosition || !direction) + return; + const { pageNo, coordinate: { leftTop, leftBottom } } = cursorPosition; + const prePageY = pageNo * (this.draw.getHeight() + this.draw.getPageGap()) + this.container.getBoundingClientRect().top; + const isUp = direction === MoveDirection.UP; + const x = leftBottom[0]; + const y = isUp ? leftTop[1] + prePageY : leftBottom[1] + prePageY; + const scrollContainer = findScrollContainer(this.container); + const rect = { + left: 0, + right: 0, + top: 0, + bottom: 0 + }; + if (scrollContainer === document.documentElement) { + rect.right = window.innerWidth; + rect.bottom = window.innerHeight; + } else { + const { left: left2, right: right2, top, bottom } = scrollContainer.getBoundingClientRect(); + rect.left = left2; + rect.right = right2; + rect.top = top; + rect.bottom = bottom; + } + const { maskMargin } = this.options; + rect.top += maskMargin[0]; + rect.bottom -= maskMargin[2]; + if (!(x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom)) { + const { scrollLeft, scrollTop } = scrollContainer; + isUp ? scrollContainer.scroll(scrollLeft, scrollTop - (rect.top - y)) : scrollContainer.scroll(scrollLeft, scrollTop + y - rect.bottom); + } + } +} +var MouseEventButton; +(function(MouseEventButton2) { + MouseEventButton2[MouseEventButton2["LEFT"] = 0] = "LEFT"; + MouseEventButton2[MouseEventButton2["CENTER"] = 1] = "CENTER"; + MouseEventButton2[MouseEventButton2["RIGHT"] = 2] = "RIGHT"; +})(MouseEventButton || (MouseEventButton = {})); +const isApple = typeof navigator !== "undefined" && /Mac OS X/.test(navigator.userAgent); +const isIOS = typeof navigator !== "undefined" && /iPad|iPhone/.test(navigator.userAgent); +function isMod(evt) { + return isApple ? evt.metaKey : evt.ctrlKey; +} +var KeyMap; +(function(KeyMap2) { + KeyMap2["Delete"] = "Delete"; + KeyMap2["Backspace"] = "Backspace"; + KeyMap2["Enter"] = "Enter"; + KeyMap2["Left"] = "ArrowLeft"; + KeyMap2["Right"] = "ArrowRight"; + KeyMap2["Up"] = "ArrowUp"; + KeyMap2["Down"] = "ArrowDown"; + KeyMap2["ESC"] = "Escape"; + KeyMap2["TAB"] = "Tab"; + KeyMap2["META"] = "Meta"; + KeyMap2["LEFT_BRACKET"] = "["; + KeyMap2["RIGHT_BRACKET"] = "]"; + KeyMap2["COMMA"] = ","; + KeyMap2["PERIOD"] = "."; + KeyMap2["LEFT_ANGLE_BRACKET"] = "<"; + KeyMap2["RIGHT_ANGLE_BRACKET"] = ">"; + KeyMap2["EQUAL"] = "="; + KeyMap2["MINUS"] = "-"; + KeyMap2["PLUS"] = "+"; + KeyMap2["A"] = "a"; + KeyMap2["B"] = "b"; + KeyMap2["C"] = "c"; + KeyMap2["D"] = "d"; + KeyMap2["E"] = "e"; + KeyMap2["F"] = "f"; + KeyMap2["G"] = "g"; + KeyMap2["H"] = "h"; + KeyMap2["I"] = "i"; + KeyMap2["J"] = "j"; + KeyMap2["K"] = "k"; + KeyMap2["L"] = "l"; + KeyMap2["M"] = "m"; + KeyMap2["N"] = "n"; + KeyMap2["O"] = "o"; + KeyMap2["P"] = "p"; + KeyMap2["Q"] = "q"; + KeyMap2["R"] = "r"; + KeyMap2["S"] = "s"; + KeyMap2["T"] = "t"; + KeyMap2["U"] = "u"; + KeyMap2["V"] = "v"; + KeyMap2["W"] = "w"; + KeyMap2["X"] = "x"; + KeyMap2["Y"] = "y"; + KeyMap2["Z"] = "z"; + KeyMap2["A_UPPERCASE"] = "A"; + KeyMap2["B_UPPERCASE"] = "B"; + KeyMap2["C_UPPERCASE"] = "C"; + KeyMap2["D_UPPERCASE"] = "D"; + KeyMap2["E_UPPERCASE"] = "E"; + KeyMap2["F_UPPERCASE"] = "F"; + KeyMap2["G_UPPERCASE"] = "G"; + KeyMap2["H_UPPERCASE"] = "H"; + KeyMap2["I_UPPERCASE"] = "I"; + KeyMap2["J_UPPERCASE"] = "J"; + KeyMap2["K_UPPERCASE"] = "K"; + KeyMap2["L_UPPERCASE"] = "L"; + KeyMap2["M_UPPERCASE"] = "M"; + KeyMap2["N_UPPERCASE"] = "N"; + KeyMap2["O_UPPERCASE"] = "O"; + KeyMap2["P_UPPERCASE"] = "P"; + KeyMap2["Q_UPPERCASE"] = "Q"; + KeyMap2["R_UPPERCASE"] = "R"; + KeyMap2["S_UPPERCASE"] = "S"; + KeyMap2["T_UPPERCASE"] = "T"; + KeyMap2["U_UPPERCASE"] = "U"; + KeyMap2["V_UPPERCASE"] = "V"; + KeyMap2["W_UPPERCASE"] = "W"; + KeyMap2["X_UPPERCASE"] = "X"; + KeyMap2["Y_UPPERCASE"] = "Y"; + KeyMap2["Z_UPPERCASE"] = "Z"; + KeyMap2["ZERO"] = "0"; + KeyMap2["ONE"] = "1"; + KeyMap2["TWO"] = "2"; + KeyMap2["THREE"] = "3"; + KeyMap2["FOUR"] = "4"; + KeyMap2["FIVE"] = "5"; + KeyMap2["SIX"] = "6"; + KeyMap2["SEVEN"] = "7"; + KeyMap2["EIGHT"] = "8"; + KeyMap2["NINE"] = "9"; +})(KeyMap || (KeyMap = {})); +class CheckboxControl { + constructor(element, control) { + this.element = element; + this.control = control; + } + setElement(element) { + this.element = element; + } + getElement() { + return this.element; + } + getCode() { + var _a; + return ((_a = this.element.control) == null ? void 0 : _a.code) || null; + } + getValue() { + const elementList = this.control.getElementList(); + const { startIndex } = this.control.getRange(); + const startElement = elementList[startIndex]; + const data2 = []; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + break; + } + if (preElement.controlComponent === ControlComponent.VALUE) { + data2.unshift(preElement); + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) { + break; + } + if (nextElement.controlComponent === ControlComponent.VALUE) { + data2.push(nextElement); + } + nextIndex++; + } + return data2; + } + setValue() { + return -1; + } + setSelect(codes, context = {}, options = {}) { + if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return; + } + const { control } = this.element; + const elementList = context.elementList || this.control.getElementList(); + const { startIndex } = context.range || this.control.getRange(); + const startElement = elementList[startIndex]; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + break; + } + if (preElement.controlComponent === ControlComponent.CHECKBOX) { + const checkbox = preElement.checkbox; + checkbox.value = codes.includes(checkbox.code); + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) { + break; + } + if (nextElement.controlComponent === ControlComponent.CHECKBOX) { + const checkbox = nextElement.checkbox; + checkbox.value = codes.includes(checkbox.code); + } + nextIndex++; + } + control.code = codes.join(","); + this.control.repaintControl({ + curIndex: startIndex, + isSetCursor: false + }); + } + keydown(evt) { + if (this.control.getIsDisabledControl()) { + return null; + } + const range = this.control.getRange(); + this.control.shrinkBoundary(); + const { startIndex, endIndex } = range; + if (evt.key === KeyMap.Backspace || evt.key === KeyMap.Delete) { + return this.control.removeControl(startIndex); + } + return endIndex; + } + cut() { + return -1; + } +} +class RadioControl extends CheckboxControl { + setSelect(codes, context = {}, options = {}) { + if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return; + } + const { control } = this.element; + const elementList = context.elementList || this.control.getElementList(); + const { startIndex } = context.range || this.control.getRange(); + const startElement = elementList[startIndex]; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + break; + } + if (preElement.controlComponent === ControlComponent.RADIO) { + const radio = preElement.radio; + radio.value = codes.includes(radio.code); + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) { + break; + } + if (nextElement.controlComponent === ControlComponent.RADIO) { + const radio = nextElement.radio; + radio.value = codes.includes(radio.code); + } + nextIndex++; + } + control.code = codes.join(","); + this.control.repaintControl({ + curIndex: startIndex, + isSetCursor: false + }); + } +} +function setRangeCache(host) { + const draw = host.getDraw(); + const position = draw.getPosition(); + const rangeManager = draw.getRange(); + host.isAllowDrag = true; + host.cacheRange = deepClone(rangeManager.getRange()); + host.cacheElementList = draw.getElementList(); + host.cachePositionList = position.getPositionList(); + host.cachePositionContext = position.getPositionContext(); +} +function hitCheckbox(element, draw) { + const { checkbox, control } = element; + if (!control) { + draw.getCheckboxParticle().setSelect(element); + } else { + const codes = (control == null ? void 0 : control.code) ? control.code.split(",") : []; + if (checkbox == null ? void 0 : checkbox.value) { + const codeIndex = codes.findIndex((c) => c === checkbox.code); + codes.splice(codeIndex, 1); + } else { + if (checkbox == null ? void 0 : checkbox.code) { + codes.push(checkbox.code); + } + } + const activeControl = draw.getControl().getActiveControl(); + if (activeControl instanceof CheckboxControl) { + activeControl.setSelect(codes); + } + } +} +function hitRadio(element, draw) { + const { radio, control } = element; + if (!control) { + draw.getRadioParticle().setSelect(element); + } else { + const codes = (radio == null ? void 0 : radio.code) ? [radio.code] : []; + const activeControl = draw.getControl().getActiveControl(); + if (activeControl instanceof RadioControl) { + activeControl.setSelect(codes); + } + } +} +function mousedown(evt, host) { + var _a, _b; + if (evt.button === MouseEventButton.RIGHT) + return; + const draw = host.getDraw(); + const isReadonly = draw.isReadonly(); + const rangeManager = draw.getRange(); + const position = draw.getPosition(); + if (!host.isAllowDrag) { + const range = rangeManager.getRange(); + if (!isReadonly && range.startIndex !== range.endIndex) { + const isPointInRange = rangeManager.getIsPointInRange(evt.offsetX, evt.offsetY); + if (isPointInRange) { + setRangeCache(host); + return; + } + } + } + const target = evt.target; + const pageIndex = target.dataset.index; + if (pageIndex) { + draw.setPageNo(Number(pageIndex)); + } + host.isAllowSelection = true; + const oldPositionContext = deepClone(position.getPositionContext()); + const positionResult = position.adjustPositionContext({ + x: evt.offsetX, + y: evt.offsetY + }); + if (!positionResult) + return; + const { index: index2, isDirectHit, isCheckbox, isRadio, isImage, isTable, tdValueIndex, hitLineStartIndex } = positionResult; + host.mouseDownStartPosition = { + ...positionResult, + index: isTable ? tdValueIndex : index2, + x: evt.offsetX, + y: evt.offsetY + }; + const elementList = draw.getElementList(); + const positionList = position.getPositionList(); + const curIndex = isTable ? tdValueIndex : index2; + const curElement = elementList[curIndex]; + const isDirectHitImage = !!(isDirectHit && isImage); + const isDirectHitCheckbox = !!(isDirectHit && isCheckbox); + const isDirectHitRadio = !!(isDirectHit && isRadio); + if (~index2) { + let startIndex = curIndex; + let endIndex = curIndex; + if (evt.shiftKey) { + const { startIndex: oldStartIndex } = rangeManager.getRange(); + if (~oldStartIndex) { + const newPositionContext = position.getPositionContext(); + if (newPositionContext.tdId === oldPositionContext.tdId) { + if (curIndex > oldStartIndex) { + startIndex = oldStartIndex; + } else { + endIndex = oldStartIndex; + } + } + } + } + rangeManager.setRange(startIndex, endIndex); + position.setCursorPosition(positionList[curIndex]); + if (isDirectHitCheckbox && !isReadonly) { + hitCheckbox(curElement, draw); + } else if (isDirectHitRadio && !isReadonly) { + hitRadio(curElement, draw); + } else if (curElement.controlComponent === ControlComponent.VALUE && (((_a = curElement.control) == null ? void 0 : _a.type) === ControlType.CHECKBOX || ((_b = curElement.control) == null ? void 0 : _b.type) === ControlType.RADIO)) { + let preIndex = curIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlComponent === ControlComponent.CHECKBOX) { + hitCheckbox(preElement, draw); + break; + } else if (preElement.controlComponent === ControlComponent.RADIO) { + hitRadio(preElement, draw); + break; + } + preIndex--; + } + } else { + draw.render({ + curIndex, + isCompute: false, + isSubmitHistory: false, + isSetCursor: !isDirectHitImage && !isDirectHitCheckbox && !isDirectHitRadio + }); + } + if (hitLineStartIndex) { + host.getDraw().getCursor().drawCursor({ + hitLineStartIndex + }); + } + } + const previewer = draw.getPreviewer(); + previewer.clearResizer(); + if (isDirectHitImage) { + const previewerDrawOption = { + dragDisable: isReadonly || !curElement.controlId && draw.getMode() === EditorMode.FORM + }; + if (curElement.type === ElementType.LATEX) { + previewerDrawOption.mime = "svg"; + previewerDrawOption.srcKey = "laTexSVG"; + } + previewer.drawResizer(curElement, positionList[curIndex], previewerDrawOption); + draw.getCursor().drawCursor({ + isShow: false + }); + setRangeCache(host); + if (curElement.imgDisplay === ImageDisplay.SURROUND || curElement.imgDisplay === ImageDisplay.FLOAT_TOP || curElement.imgDisplay === ImageDisplay.FLOAT_BOTTOM) { + draw.getImageParticle().createFloatImage(curElement); + } + } + const tableTool = draw.getTableTool(); + tableTool.dispose(); + if (isTable && !isReadonly && draw.getMode() !== EditorMode.FORM) { + tableTool.render(); + } + const hyperlinkParticle = draw.getHyperlinkParticle(); + hyperlinkParticle.clearHyperlinkPopup(); + if (curElement.type === ElementType.HYPERLINK) { + if (isMod(evt)) { + hyperlinkParticle.openHyperlink(curElement); + } else { + hyperlinkParticle.drawHyperlinkPopup(curElement, positionList[curIndex]); + } + } + const dateParticle = draw.getDateParticle(); + dateParticle.clearDatePicker(); + if (curElement.type === ElementType.DATE && !isReadonly) { + dateParticle.renderDatePicker(curElement, positionList[curIndex]); + } +} +function createDragId(element) { + const dragId = getUUID(); + Reflect.set(element, "dragId", dragId); + return dragId; +} +function getElementIndexByDragId(dragId, elementList) { + return elementList.findIndex((el) => el.dragId === dragId); +} +function moveImgPosition(element, evt, host) { + const draw = host.getDraw(); + if (element.imgDisplay === ImageDisplay.SURROUND || element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) { + const moveX = evt.offsetX - host.mouseDownStartPosition.x; + const moveY = evt.offsetY - host.mouseDownStartPosition.y; + const imgFloatPosition = element.imgFloatPosition; + element.imgFloatPosition = { + x: imgFloatPosition.x + moveX, + y: imgFloatPosition.y + moveY, + pageNo: draw.getPageNo() + }; + } + draw.getImageParticle().destroyFloatImage(); +} +function mouseup(evt, host) { + var _a, _b, _c, _d; + if (host.isAllowDrop) { + const draw = host.getDraw(); + if (draw.isReadonly() || draw.isDisabled()) { + host.mousedown(evt); + return; + } + const position = draw.getPosition(); + const positionList = position.getPositionList(); + const positionContext = position.getPositionContext(); + const rangeManager = draw.getRange(); + const cacheRange = host.cacheRange; + const cacheElementList = host.cacheElementList; + const cachePositionList = host.cachePositionList; + const range = rangeManager.getRange(); + const isCacheRangeCollapsed = cacheRange.startIndex === cacheRange.endIndex; + const cacheStartIndex = isCacheRangeCollapsed ? cacheRange.startIndex - 1 : cacheRange.startIndex; + const cacheEndIndex = cacheRange.endIndex; + if (range.startIndex >= cacheStartIndex && range.endIndex <= cacheEndIndex && ((_a = host.cachePositionContext) == null ? void 0 : _a.tdId) === positionContext.tdId) { + draw.clearSideEffect(); + let isSubmitHistory = false; + let isCompute = false; + if (isCacheRangeCollapsed) { + const dragElement = cacheElementList[cacheEndIndex]; + if (dragElement.type === ElementType.IMAGE || dragElement.type === ElementType.LATEX) { + moveImgPosition(dragElement, evt, host); + if (dragElement.imgDisplay === ImageDisplay.SURROUND || dragElement.imgDisplay === ImageDisplay.FLOAT_TOP || dragElement.imgDisplay === ImageDisplay.FLOAT_BOTTOM) { + draw.getPreviewer().drawResizer(dragElement); + isSubmitHistory = true; + } else { + const cachePosition = cachePositionList[cacheEndIndex]; + draw.getPreviewer().drawResizer(dragElement, cachePosition); + } + isCompute = dragElement.imgDisplay === ImageDisplay.SURROUND; + } + } + rangeManager.replaceRange({ + ...cacheRange + }); + draw.render({ + isCompute, + isSubmitHistory, + isSetCursor: false + }); + return; + } + const dragElementList = cacheElementList.slice(cacheStartIndex + 1, cacheEndIndex + 1); + const isContainControl = dragElementList.find((element) => element.controlId); + if (isContainControl) { + const cacheStartElement2 = cacheElementList[cacheStartIndex + 1]; + const cacheEndElement2 = cacheElementList[cacheEndIndex]; + const isAllowDragControl = (!cacheStartElement2.controlId || cacheStartElement2.controlComponent === ControlComponent.PREFIX) && (!cacheEndElement2.controlId || cacheEndElement2.controlComponent === ControlComponent.POSTFIX) || cacheStartElement2.controlId === cacheEndElement2.controlId && cacheStartElement2.controlComponent === ControlComponent.PREFIX && cacheEndElement2.controlComponent === ControlComponent.POSTFIX || ((_b = cacheStartElement2.control) == null ? void 0 : _b.type) === ControlType.TEXT && cacheStartElement2.controlComponent === ControlComponent.VALUE && ((_c = cacheEndElement2.control) == null ? void 0 : _c.type) === ControlType.TEXT && cacheEndElement2.controlComponent === ControlComponent.VALUE; + if (!isAllowDragControl) { + draw.render({ + curIndex: range.startIndex, + isCompute: false, + isSubmitHistory: false + }); + return; + } + } + const control = draw.getControl(); + const elementList = draw.getElementList(); + const isOmitControlAttr = !isContainControl || !!elementList[range.startIndex].controlId || !control.getIsElementListContainFullControl(dragElementList); + const editorOptions = draw.getOptions(); + const replaceElementList = dragElementList.map((el) => { + if (!el.type || el.type === ElementType.TEXT) { + const newElement = { + value: el.value + }; + const copyAttr = EDITOR_ELEMENT_STYLE_ATTR; + if (!isOmitControlAttr) { + copyAttr.push(...CONTROL_CONTEXT_ATTR); + } + copyAttr.forEach((attr) => { + const value = el[attr]; + if (value !== void 0) { + newElement[attr] = value; + } + }); + return newElement; + } else { + let newElement = deepClone(el); + if (isOmitControlAttr) { + newElement = omitObject(newElement, CONTROL_CONTEXT_ATTR); + } + formatElementList([newElement], { + isHandleFirstElement: false, + editorOptions + }); + return newElement; + } + }); + formatElementContext(elementList, replaceElementList, range.startIndex, { + editorOptions: draw.getOptions() + }); + const cacheStartElement = cacheElementList[cacheStartIndex]; + const cacheStartPosition = cachePositionList[cacheStartIndex]; + const cacheRangeStartId = createDragId(cacheElementList[cacheStartIndex]); + const cacheRangeEndId = createDragId(cacheElementList[cacheEndIndex]); + const replaceLength = replaceElementList.length; + let rangeStart = range.startIndex; + let rangeEnd = rangeStart + replaceLength; + const activeControl = control.getActiveControl(); + if (activeControl && cacheElementList[rangeStart].controlComponent !== ControlComponent.POSTFIX) { + rangeEnd = activeControl.setValue(replaceElementList); + rangeStart = rangeEnd - replaceLength; + } else { + draw.spliceElementList(elementList, rangeStart + 1, 0, ...replaceElementList); + } + if (!~rangeEnd) { + draw.render({ + isSetCursor: false + }); + return; + } + const rangeStartId = createDragId(elementList[rangeStart]); + const rangeEndId = createDragId(elementList[rangeEnd]); + const cacheRangeStartIndex = getElementIndexByDragId(cacheRangeStartId, cacheElementList); + const cacheRangeEndIndex = getElementIndexByDragId(cacheRangeEndId, cacheElementList); + const cacheEndElement = cacheElementList[cacheRangeEndIndex]; + if (cacheEndElement.controlId && cacheEndElement.controlComponent !== ControlComponent.POSTFIX) { + rangeManager.replaceRange({ + ...cacheRange, + startIndex: cacheRangeStartIndex, + endIndex: cacheRangeEndIndex + }); + (_d = control.getActiveControl()) == null ? void 0 : _d.cut(); + } else { + draw.spliceElementList(cacheElementList, cacheRangeStartIndex + 1, cacheRangeEndIndex - cacheRangeStartIndex); + } + const startElement = elementList[range.startIndex]; + const startPosition = positionList[range.startIndex]; + let positionContextIndex = positionContext.index; + if (positionContextIndex) { + if (startElement.tableId && !cacheStartElement.tableId) { + if (cacheStartPosition.index < positionContextIndex) { + positionContextIndex -= replaceLength; + } + } else if (!startElement.tableId && cacheStartElement.tableId) { + if (startPosition.index < positionContextIndex) { + positionContextIndex += replaceLength; + } + } + position.setPositionContext({ + ...positionContext, + index: positionContextIndex + }); + } + const rangeStartIndex = getElementIndexByDragId(rangeStartId, elementList); + const rangeEndIndex = getElementIndexByDragId(rangeEndId, elementList); + rangeManager.setRange(isCacheRangeCollapsed ? rangeEndIndex : rangeStartIndex, rangeEndIndex, range.tableId, range.startTdIndex, range.endTdIndex, range.startTrIndex, range.endTrIndex); + draw.clearSideEffect(); + let imgElement = null; + if (isCacheRangeCollapsed) { + const elementList2 = draw.getElementList(); + const dragElement = elementList2[rangeEndIndex]; + if (dragElement.type === ElementType.IMAGE || dragElement.type === ElementType.LATEX) { + moveImgPosition(dragElement, evt, host); + imgElement = dragElement; + } + } + draw.render({ + isSetCursor: false + }); + if (imgElement) { + if (imgElement.imgDisplay === ImageDisplay.SURROUND || imgElement.imgDisplay === ImageDisplay.FLOAT_TOP || imgElement.imgDisplay === ImageDisplay.FLOAT_BOTTOM) { + draw.getPreviewer().drawResizer(imgElement); + } else { + const dragPositionList = position.getPositionList(); + const dragPosition = dragPositionList[rangeEndIndex]; + draw.getPreviewer().drawResizer(imgElement, dragPosition); + } + } + } else if (host.isAllowDrag) { + host.mousedown(evt); + } +} +function mouseleave(evt, host) { + const draw = host.getDraw(); + const pageContainer = draw.getPageContainer(); + const { x, y, width, height } = pageContainer.getBoundingClientRect(); + if (evt.x >= x && evt.x <= x + width && evt.y >= y && evt.y <= y + height) { + return; + } + host.setIsAllowSelection(false); +} +function mousemove(evt, host) { + var _a; + const draw = host.getDraw(); + if (host.isAllowDrag) { + const x = evt.offsetX; + const y = evt.offsetY; + const { startIndex: startIndex2, endIndex: endIndex2 } = host.cacheRange; + const positionList = host.cachePositionList; + for (let p = startIndex2 + 1; p <= endIndex2; p++) { + const { coordinate: { leftTop, rightBottom } } = positionList[p]; + if (x >= leftTop[0] && x <= rightBottom[0] && y >= leftTop[1] && y <= rightBottom[1]) { + return; + } + } + const cacheStartIndex = (_a = host.cacheRange) == null ? void 0 : _a.startIndex; + if (cacheStartIndex) { + const dragElement = host.cacheElementList[cacheStartIndex]; + if ((dragElement == null ? void 0 : dragElement.type) === ElementType.IMAGE && (dragElement.imgDisplay === ImageDisplay.SURROUND || dragElement.imgDisplay === ImageDisplay.FLOAT_TOP || dragElement.imgDisplay === ImageDisplay.FLOAT_BOTTOM)) { + draw.getPreviewer().clearResizer(); + draw.getImageParticle().dragFloatImage(evt.movementX, evt.movementY); + } + } + host.dragover(evt); + host.isAllowDrop = true; + return; + } + if (!host.isAllowSelection || !host.mouseDownStartPosition) + return; + const target = evt.target; + const pageIndex = target.dataset.index; + if (pageIndex) { + draw.setPageNo(Number(pageIndex)); + } + const position = draw.getPosition(); + const positionResult = position.getPositionByXY({ + x: evt.offsetX, + y: evt.offsetY + }); + if (!~positionResult.index) + return; + const { index: index2, isTable, tdValueIndex, tdIndex, trIndex, tableId } = positionResult; + const { index: startIndex, isTable: startIsTable, tdIndex: startTdIndex, trIndex: startTrIndex, tableId: startTableId } = host.mouseDownStartPosition; + const endIndex = isTable ? tdValueIndex : index2; + const rangeManager = draw.getRange(); + if (isTable && startIsTable && (tdIndex !== startTdIndex || trIndex !== startTrIndex)) { + rangeManager.setRange(endIndex, endIndex, tableId, startTdIndex, tdIndex, startTrIndex, trIndex); + } else { + let end = ~endIndex ? endIndex : 0; + if ((startIsTable || isTable) && startTableId !== tableId) + return; + let start = startIndex; + if (start > end) { + [start, end] = [end, start]; + } + if (start === end) + return; + const elementList = draw.getElementList(); + const startElement = elementList[start + 1]; + const endElement = elementList[end]; + if ((startElement == null ? void 0 : startElement.controlComponent) === ControlComponent.PLACEHOLDER && (endElement == null ? void 0 : endElement.controlComponent) === ControlComponent.PLACEHOLDER && startElement.controlId === endElement.controlId) { + return; + } + rangeManager.setRange(start, end); + } + draw.render({ + isSubmitHistory: false, + isSetCursor: false, + isCompute: false + }); +} +function backspace(evt, host) { + const draw = host.getDraw(); + if (draw.isReadonly()) + return; + const rangeManager = draw.getRange(); + if (!rangeManager.getIsCanInput()) + return; + const { startIndex, endIndex, isCrossRowCol } = rangeManager.getRange(); + const control = draw.getControl(); + let curIndex; + if (isCrossRowCol) { + const rowCol = draw.getTableParticle().getRangeRowCol(); + if (!rowCol) + return; + let isDeleted = false; + for (let r = 0; r < rowCol.length; r++) { + const row = rowCol[r]; + for (let c = 0; c < row.length; c++) { + const col = row[c]; + if (col.value.length > 1) { + draw.spliceElementList(col.value, 1, col.value.length - 1); + isDeleted = true; + } + } + } + curIndex = isDeleted ? 0 : null; + } else if (control.getActiveControl() && control.getIsRangeCanCaptureEvent()) { + curIndex = control.keydown(evt); + } else { + const position = draw.getPosition(); + const cursorPosition = position.getCursorPosition(); + if (!cursorPosition) + return; + const { index: index2 } = cursorPosition; + const isCollapsed = rangeManager.getIsCollapsed(); + const elementList = draw.getElementList(); + if (isCollapsed && index2 === 0) { + const firstElement = elementList[index2]; + if (firstElement.value === ZERO) { + if (firstElement.listId) { + draw.getListParticle().unsetList(); + } + evt.preventDefault(); + return; + } + } + const startElement = elementList[startIndex]; + if (isCollapsed && startElement.rowFlex && startElement.value === ZERO) { + const rowFlexElementList = rangeManager.getRangeRowElementList(); + if (rowFlexElementList) { + const preElement = elementList[startIndex - 1]; + rowFlexElementList.forEach((element) => { + element.rowFlex = preElement == null ? void 0 : preElement.rowFlex; + }); + } + } + if (!isCollapsed) { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + } else { + draw.spliceElementList(elementList, index2, 1); + } + curIndex = isCollapsed ? index2 - 1 : startIndex; + } + draw.getGlobalEvent().setCanvasEventAbility(); + if (curIndex === null) { + rangeManager.setRange(startIndex, startIndex); + draw.render({ + curIndex: startIndex, + isSubmitHistory: false + }); + } else { + rangeManager.setRange(curIndex, curIndex); + draw.render({ + curIndex + }); + } +} +function del(evt, host) { + var _a; + const draw = host.getDraw(); + if (draw.isReadonly()) + return; + const rangeManager = draw.getRange(); + if (!rangeManager.getIsCanInput()) + return; + const { startIndex, endIndex, isCrossRowCol } = rangeManager.getRange(); + const elementList = draw.getElementList(); + const control = draw.getControl(); + let curIndex; + if (isCrossRowCol) { + const rowCol = draw.getTableParticle().getRangeRowCol(); + if (!rowCol) + return; + let isDeleted = false; + for (let r = 0; r < rowCol.length; r++) { + const row = rowCol[r]; + for (let c = 0; c < row.length; c++) { + const col = row[c]; + if (col.value.length > 1) { + draw.spliceElementList(col.value, 1, col.value.length - 1); + isDeleted = true; + } + } + } + curIndex = isDeleted ? 0 : null; + } else if (control.getActiveControl() && control.getIsRangeWithinControl()) { + curIndex = control.keydown(evt); + } else if ((_a = elementList[endIndex + 1]) == null ? void 0 : _a.controlId) { + curIndex = control.removeControl(endIndex + 1); + } else { + const position = draw.getPosition(); + const cursorPosition = position.getCursorPosition(); + if (!cursorPosition) + return; + const { index: index2 } = cursorPosition; + const positionContext = position.getPositionContext(); + if (positionContext.isDirectHit && positionContext.isImage) { + draw.spliceElementList(elementList, index2, 1); + curIndex = index2 - 1; + } else { + const isCollapsed = rangeManager.getIsCollapsed(); + if (!isCollapsed) { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + } else { + if (!elementList[index2 + 1]) + return; + draw.spliceElementList(elementList, index2 + 1, 1); + } + curIndex = isCollapsed ? index2 : startIndex; + } + } + draw.getGlobalEvent().setCanvasEventAbility(); + if (curIndex === null) { + rangeManager.setRange(startIndex, startIndex); + draw.render({ + curIndex: startIndex, + isSubmitHistory: false + }); + } else { + rangeManager.setRange(curIndex, curIndex); + draw.render({ + curIndex + }); + } +} +function enter(evt, host) { + var _a, _b; + const draw = host.getDraw(); + if (draw.isReadonly()) + return; + const rangeManager = draw.getRange(); + if (!rangeManager.getIsCanInput()) + return; + const { startIndex, endIndex } = rangeManager.getRange(); + const isCollapsed = rangeManager.getIsCollapsed(); + const elementList = draw.getElementList(); + const startElement = elementList[startIndex]; + const endElement = elementList[endIndex]; + if (isCollapsed && endElement.listId && endElement.value === ZERO && ((_a = elementList[endIndex + 1]) == null ? void 0 : _a.listId) !== endElement.listId) { + draw.getListParticle().unsetList(); + return; + } + const enterText = { + value: ZERO + }; + if (evt.shiftKey && startElement.listId) { + enterText.listWrap = true; + } + formatElementContext(elementList, [enterText], startIndex, { + isBreakWhenWrap: true, + editorOptions: draw.getOptions() + }); + if (!(endElement.titleId && endElement.titleId !== ((_b = elementList[endIndex + 1]) == null ? void 0 : _b.titleId))) { + const copyElement = getAnchorElement(elementList, endIndex); + if (copyElement) { + const copyAttr = [...EDITOR_ROW_ATTR]; + if (copyElement.controlComponent !== ControlComponent.POSTFIX) { + copyAttr.push(...EDITOR_ELEMENT_STYLE_ATTR); + } + copyAttr.forEach((attr) => { + const value = copyElement[attr]; + if (value !== void 0) { + enterText[attr] = value; + } + }); + } + } + const control = draw.getControl(); + const activeControl = control.getActiveControl(); + let curIndex; + if (activeControl && control.getIsRangeWithinControl()) { + curIndex = control.setValue([enterText]); + } else { + const position = draw.getPosition(); + const cursorPosition = position.getCursorPosition(); + if (!cursorPosition) + return; + const { index: index2 } = cursorPosition; + if (isCollapsed) { + draw.spliceElementList(elementList, index2 + 1, 0, enterText); + } else { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex, enterText); + } + curIndex = index2 + 1; + } + if (~curIndex) { + rangeManager.setRange(curIndex, curIndex); + draw.render({ curIndex }); + } + evt.preventDefault(); +} +function left(evt, host) { + var _a, _b; + const draw = host.getDraw(); + const isReadonly = draw.isReadonly(); + if (isReadonly) + return; + const position = draw.getPosition(); + const cursorPosition = position.getCursorPosition(); + if (!cursorPosition) + return; + const positionContext = position.getPositionContext(); + const { index: index2 } = cursorPosition; + if (index2 <= 0 && !positionContext.isTable) + return; + const rangeManager = draw.getRange(); + const { startIndex, endIndex } = rangeManager.getRange(); + const isCollapsed = rangeManager.getIsCollapsed(); + const elementList = draw.getElementList(); + const control = draw.getControl(); + if (draw.getMode() === EditorMode.FORM && control.getActiveControl() && ((_a = elementList[index2]) == null ? void 0 : _a.controlComponent) === ControlComponent.PREFIX) { + control.initNextControl({ + direction: MoveDirection.UP + }); + return; + } + let moveCount = 1; + if (isMod(evt)) { + const LETTER_REG = draw.getLetterReg(); + const moveStartIndex = evt.shiftKey && !isCollapsed && startIndex === (cursorPosition == null ? void 0 : cursorPosition.index) ? endIndex : startIndex; + if (LETTER_REG.test((_b = elementList[moveStartIndex]) == null ? void 0 : _b.value)) { + let i = moveStartIndex - 1; + while (i > 0) { + const element = elementList[i]; + if (!LETTER_REG.test(element.value)) { + break; + } + moveCount++; + i--; + } + } + } + const curIndex = startIndex - moveCount; + let anchorStartIndex = curIndex; + let anchorEndIndex = curIndex; + if (evt.shiftKey && cursorPosition) { + if (startIndex !== endIndex) { + if (startIndex === cursorPosition.index) { + anchorStartIndex = startIndex; + anchorEndIndex = endIndex - moveCount; + } else { + anchorStartIndex = curIndex; + anchorEndIndex = endIndex; + } + } else { + anchorEndIndex = endIndex; + } + } + if (!evt.shiftKey) { + const element = elementList[startIndex]; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + const lastTrIndex = trList.length - 1; + const lastTr = trList[lastTrIndex]; + const lastTdIndex = lastTr.tdList.length - 1; + const lastTd = lastTr.tdList[lastTdIndex]; + position.setPositionContext({ + isTable: true, + index: startIndex, + trIndex: lastTrIndex, + tdIndex: lastTdIndex, + tdId: lastTd.id, + trId: lastTr.id, + tableId: element.id + }); + anchorStartIndex = lastTd.value.length - 1; + anchorEndIndex = anchorStartIndex; + draw.getTableTool().render(); + } else if (element.tableId) { + if (startIndex === 0) { + const originalElementList = draw.getOriginalElementList(); + const trList = originalElementList[positionContext.index].trList; + outer: + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + if (tr.id !== element.trId) + continue; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + if (td.id !== element.tdId) + continue; + if (r === 0 && d === 0) { + position.setPositionContext({ + isTable: false + }); + anchorStartIndex = positionContext.index - 1; + anchorEndIndex = anchorStartIndex; + draw.getTableTool().dispose(); + } else { + let preTrIndex = r; + let preTdIndex = d - 1; + if (preTdIndex < 0) { + preTrIndex = r - 1; + preTdIndex = trList[preTrIndex].tdList.length - 1; + } + const preTr = trList[preTrIndex]; + const preTd = preTr.tdList[preTdIndex]; + position.setPositionContext({ + isTable: true, + index: positionContext.index, + trIndex: preTrIndex, + tdIndex: preTdIndex, + tdId: preTd.id, + trId: preTr.id, + tableId: element.id + }); + anchorStartIndex = preTd.value.length - 1; + anchorEndIndex = anchorStartIndex; + draw.getTableTool().render(); + } + break outer; + } + } + } + } + } + if (!~anchorStartIndex || !~anchorEndIndex) + return; + rangeManager.setRange(anchorStartIndex, anchorEndIndex); + const isAnchorCollapsed = anchorStartIndex === anchorEndIndex; + draw.render({ + curIndex: isAnchorCollapsed ? anchorStartIndex : void 0, + isSetCursor: isAnchorCollapsed, + isSubmitHistory: false, + isCompute: false + }); + evt.preventDefault(); +} +function right(evt, host) { + var _a, _b; + const draw = host.getDraw(); + const isReadonly = draw.isReadonly(); + if (isReadonly) + return; + const position = draw.getPosition(); + const cursorPosition = position.getCursorPosition(); + if (!cursorPosition) + return; + const { index: index2 } = cursorPosition; + const positionList = position.getPositionList(); + const positionContext = position.getPositionContext(); + if (index2 > positionList.length - 1 && !positionContext.isTable) + return; + const rangeManager = draw.getRange(); + const { startIndex, endIndex } = rangeManager.getRange(); + const isCollapsed = rangeManager.getIsCollapsed(); + let elementList = draw.getElementList(); + const control = draw.getControl(); + if (draw.getMode() === EditorMode.FORM && control.getActiveControl() && ((_a = elementList[index2 + 1]) == null ? void 0 : _a.controlComponent) === ControlComponent.POSTFIX) { + control.initNextControl({ + direction: MoveDirection.DOWN + }); + return; + } + let moveCount = 1; + if (isMod(evt)) { + const LETTER_REG = draw.getLetterReg(); + const moveStartIndex = evt.shiftKey && !isCollapsed && startIndex === (cursorPosition == null ? void 0 : cursorPosition.index) ? endIndex : startIndex; + if (LETTER_REG.test((_b = elementList[moveStartIndex + 1]) == null ? void 0 : _b.value)) { + let i = moveStartIndex + 2; + while (i < elementList.length) { + const element = elementList[i]; + if (!LETTER_REG.test(element.value)) { + break; + } + moveCount++; + i++; + } + } + } + const curIndex = endIndex + moveCount; + let anchorStartIndex = curIndex; + let anchorEndIndex = curIndex; + if (evt.shiftKey && cursorPosition) { + if (startIndex !== endIndex) { + if (startIndex === cursorPosition.index) { + anchorStartIndex = startIndex; + anchorEndIndex = curIndex; + } else { + anchorStartIndex = startIndex + moveCount; + anchorEndIndex = endIndex; + } + } else { + anchorStartIndex = startIndex; + } + } + if (!evt.shiftKey) { + const element = elementList[endIndex]; + const nextElement = elementList[endIndex + 1]; + if ((nextElement == null ? void 0 : nextElement.type) === ElementType.TABLE) { + const trList = nextElement.trList; + const nextTr = trList[0]; + const nextTd = nextTr.tdList[0]; + position.setPositionContext({ + isTable: true, + index: endIndex + 1, + trIndex: 0, + tdIndex: 0, + tdId: nextTd.id, + trId: nextTr.id, + tableId: nextElement.id + }); + anchorStartIndex = 0; + anchorEndIndex = 0; + draw.getTableTool().render(); + } else if (element.tableId) { + if (!nextElement) { + const originalElementList = draw.getOriginalElementList(); + const trList = originalElementList[positionContext.index].trList; + outer: + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + if (tr.id !== element.trId) + continue; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + if (td.id !== element.tdId) + continue; + if (r === trList.length - 1 && d === tdList.length - 1) { + position.setPositionContext({ + isTable: false + }); + anchorStartIndex = positionContext.index; + anchorEndIndex = anchorStartIndex; + elementList = draw.getElementList(); + draw.getTableTool().dispose(); + } else { + let nextTrIndex = r; + let nextTdIndex = d + 1; + if (nextTdIndex > tdList.length - 1) { + nextTrIndex = r + 1; + nextTdIndex = 0; + } + const preTr = trList[nextTrIndex]; + const preTd = preTr.tdList[nextTdIndex]; + position.setPositionContext({ + isTable: true, + index: positionContext.index, + trIndex: nextTrIndex, + tdIndex: nextTdIndex, + tdId: preTd.id, + trId: preTr.id, + tableId: element.id + }); + anchorStartIndex = 0; + anchorEndIndex = anchorStartIndex; + draw.getTableTool().render(); + } + break outer; + } + } + } + } + } + const maxElementListIndex = elementList.length - 1; + if (anchorStartIndex > maxElementListIndex || anchorEndIndex > maxElementListIndex) { + return; + } + rangeManager.setRange(anchorStartIndex, anchorEndIndex); + const isAnchorCollapsed = anchorStartIndex === anchorEndIndex; + draw.render({ + curIndex: isAnchorCollapsed ? anchorStartIndex : void 0, + isSetCursor: isAnchorCollapsed, + isSubmitHistory: false, + isCompute: false + }); + evt.preventDefault(); +} +function tab(evt, host) { + const draw = host.getDraw(); + const isReadonly = draw.isReadonly(); + if (isReadonly) + return; + evt.preventDefault(); + const control = draw.getControl(); + const activeControl = control.getActiveControl(); + if (activeControl && control.getIsRangeWithinControl()) { + control.initNextControl({ + direction: evt.shiftKey ? MoveDirection.UP : MoveDirection.DOWN + }); + } else { + const tabElement = { + type: ElementType.TAB, + value: "" + }; + const rangeManager = draw.getRange(); + const { startIndex } = rangeManager.getRange(); + const elementList = draw.getElementList(); + formatElementContext(elementList, [tabElement], startIndex, { + editorOptions: draw.getOptions() + }); + draw.insertElementList([tabElement]); + } +} +function getNextPositionIndex(payload) { + const { positionList, index: index2, isUp, rowNo, cursorX } = payload; + let nextIndex = -1; + const probablePosition = []; + if (isUp) { + let p = index2 - 1; + while (p >= 0) { + const position = positionList[p]; + p--; + if (position.rowNo === rowNo) + continue; + if (probablePosition[0] && probablePosition[0].rowNo !== position.rowNo) { + break; + } + probablePosition.unshift(position); + } + } else { + let p = index2 + 1; + while (p < positionList.length) { + const position = positionList[p]; + p++; + if (position.rowNo === rowNo) + continue; + if (probablePosition[0] && probablePosition[0].rowNo !== position.rowNo) { + break; + } + probablePosition.push(position); + } + } + for (let p = 0; p < probablePosition.length; p++) { + const nextPosition = probablePosition[p]; + const { coordinate: { leftTop: [nextLeftX], rightTop: [nextRightX] } } = nextPosition; + if (p === probablePosition.length - 1) { + nextIndex = nextPosition.index; + } + if (cursorX < nextLeftX || cursorX > nextRightX) + continue; + nextIndex = nextPosition.index; + break; + } + return nextIndex; +} +function updown(evt, host) { + const draw = host.getDraw(); + const isReadonly = draw.isReadonly(); + if (isReadonly) + return; + const position = draw.getPosition(); + const cursorPosition = position.getCursorPosition(); + if (!cursorPosition) + return; + const rangeManager = draw.getRange(); + const { startIndex, endIndex } = rangeManager.getRange(); + let positionList = position.getPositionList(); + const isUp = evt.key === KeyMap.Up; + let anchorStartIndex = -1; + let anchorEndIndex = -1; + const positionContext = position.getPositionContext(); + if (!evt.shiftKey && positionContext.isTable && (isUp && cursorPosition.rowIndex === 0 || !isUp && cursorPosition.rowIndex === draw.getRowCount() - 1)) { + const { index: index2, trIndex, tdIndex, tableId } = positionContext; + if (isUp) { + if (trIndex === 0) { + position.setPositionContext({ + isTable: false + }); + anchorStartIndex = index2 - 1; + anchorEndIndex = anchorStartIndex; + draw.getTableTool().dispose(); + } else { + let preTrIndex = -1; + let preTdIndex = -1; + const originalElementList = draw.getOriginalElementList(); + const trList = originalElementList[index2].trList; + const curTdColIndex = trList[trIndex].tdList[tdIndex].colIndex; + outer: + for (let r = trIndex - 1; r >= 0; r--) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + if (td.colIndex === curTdColIndex || td.colIndex + td.colspan - 1 >= curTdColIndex && td.colIndex <= curTdColIndex) { + preTrIndex = r; + preTdIndex = d; + break outer; + } + } + } + if (!~preTrIndex || !~preTdIndex) + return; + const preTr = trList[preTrIndex]; + const preTd = preTr.tdList[preTdIndex]; + position.setPositionContext({ + isTable: true, + index: index2, + trIndex: preTrIndex, + tdIndex: preTdIndex, + tdId: preTr.id, + trId: preTd.id, + tableId + }); + anchorStartIndex = preTd.value.length - 1; + anchorEndIndex = anchorStartIndex; + draw.getTableTool().render(); + } + } else { + const originalElementList = draw.getOriginalElementList(); + const trList = originalElementList[index2].trList; + if (trIndex === trList.length - 1) { + position.setPositionContext({ + isTable: false + }); + anchorStartIndex = index2; + anchorEndIndex = anchorStartIndex; + draw.getTableTool().dispose(); + } else { + let nexTrIndex = -1; + let nextTdIndex = -1; + const curTdColIndex = trList[trIndex].tdList[tdIndex].colIndex; + outer: + for (let r = trIndex + 1; r < trList.length; r++) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + if (td.colIndex === curTdColIndex || td.colIndex + td.colspan - 1 >= curTdColIndex && td.colIndex <= curTdColIndex) { + nexTrIndex = r; + nextTdIndex = d; + break outer; + } + } + } + if (!~nexTrIndex || !~nextTdIndex) + return; + const nextTr = trList[nexTrIndex]; + const nextTd = nextTr.tdList[nextTdIndex]; + position.setPositionContext({ + isTable: true, + index: index2, + trIndex: nexTrIndex, + tdIndex: nextTdIndex, + tdId: nextTr.id, + trId: nextTd.id, + tableId + }); + anchorStartIndex = nextTd.value.length - 1; + anchorEndIndex = anchorStartIndex; + draw.getTableTool().render(); + } + } + } else { + let anchorPosition = cursorPosition; + if (evt.shiftKey) { + if (startIndex === cursorPosition.index) { + anchorPosition = positionList[endIndex]; + } else { + anchorPosition = positionList[startIndex]; + } + } + const { index: index2, rowNo, rowIndex, coordinate: { rightTop: [curRightX] } } = anchorPosition; + if (isUp && rowIndex === 0 || !isUp && rowIndex === draw.getRowCount() - 1) { + return; + } + const nextIndex = getNextPositionIndex({ + positionList, + index: index2, + rowNo, + isUp, + cursorX: curRightX + }); + if (nextIndex < 0) + return; + anchorStartIndex = nextIndex; + anchorEndIndex = nextIndex; + if (evt.shiftKey) { + if (startIndex !== endIndex) { + if (startIndex === cursorPosition.index) { + anchorStartIndex = startIndex; + } else { + anchorEndIndex = endIndex; + } + } else { + if (isUp) { + anchorEndIndex = endIndex; + } else { + anchorStartIndex = startIndex; + } + } + } + const elementList = draw.getElementList(); + const nextElement = elementList[nextIndex]; + if (nextElement.type === ElementType.TABLE) { + const { scale } = draw.getOptions(); + const margins = draw.getMargins(); + const trList = nextElement.trList; + let trIndex = -1; + let tdIndex = -1; + let tdPositionIndex = -1; + if (isUp) { + outer: + for (let r = trList.length - 1; r >= 0; r--) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + const tdX = td.x * scale + margins[3]; + const tdWidth = td.width * scale; + if (curRightX >= tdX && curRightX <= tdX + tdWidth) { + const tdPositionList = td.positionList; + const lastPosition = tdPositionList[tdPositionList.length - 1]; + const nextPositionIndex = getNextPositionIndex({ + positionList: tdPositionList, + index: lastPosition.index + 1, + rowNo: lastPosition.rowNo - 1, + isUp, + cursorX: curRightX + }) || lastPosition.index; + trIndex = r; + tdIndex = d; + tdPositionIndex = nextPositionIndex; + break outer; + } + } + } + } else { + outer: + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + const tdX = td.x * scale + margins[3]; + const tdWidth = td.width * scale; + if (curRightX >= tdX && curRightX <= tdX + tdWidth) { + const tdPositionList = td.positionList; + const nextPositionIndex = getNextPositionIndex({ + positionList: tdPositionList, + index: -1, + rowNo: -1, + isUp, + cursorX: curRightX + }) || 0; + trIndex = r; + tdIndex = d; + tdPositionIndex = nextPositionIndex; + break outer; + } + } + } + } + if (~trIndex && ~tdIndex && ~tdPositionIndex) { + const nextTr = trList[trIndex]; + const nextTd = nextTr.tdList[tdIndex]; + position.setPositionContext({ + isTable: true, + index: nextIndex, + trIndex, + tdIndex, + tdId: nextTd.id, + trId: nextTr.id, + tableId: nextElement.id + }); + anchorStartIndex = tdPositionIndex; + anchorEndIndex = anchorStartIndex; + positionList = position.getPositionList(); + draw.getTableTool().render(); + } + } + } + if (!~anchorStartIndex || !~anchorEndIndex) + return; + if (anchorStartIndex > anchorEndIndex) { + [anchorStartIndex, anchorEndIndex] = [anchorEndIndex, anchorStartIndex]; + } + rangeManager.setRange(anchorStartIndex, anchorEndIndex); + const isCollapsed = anchorStartIndex === anchorEndIndex; + draw.render({ + curIndex: isCollapsed ? anchorStartIndex : void 0, + isSetCursor: isCollapsed, + isSubmitHistory: false, + isCompute: false + }); + draw.getCursor().moveCursorToVisible({ + cursorPosition: positionList[isUp ? anchorStartIndex : anchorEndIndex], + direction: isUp ? MoveDirection.UP : MoveDirection.DOWN + }); +} +function keydown(evt, host) { + if (host.isComposing) + return; + const draw = host.getDraw(); + if (evt.key === KeyMap.Backspace) { + backspace(evt, host); + } else if (evt.key === KeyMap.Delete) { + del(evt, host); + } else if (evt.key === KeyMap.Enter) { + enter(evt, host); + } else if (evt.key === KeyMap.Left) { + left(evt, host); + } else if (evt.key === KeyMap.Right) { + right(evt, host); + } else if (evt.key === KeyMap.Up || evt.key === KeyMap.Down) { + updown(evt, host); + } else if (isMod(evt) && evt.key === KeyMap.Z) { + if (draw.isReadonly() && draw.getMode() !== EditorMode.FORM) + return; + draw.getHistoryManager().undo(); + evt.preventDefault(); + } else if (isMod(evt) && evt.key === KeyMap.Y) { + if (draw.isReadonly() && draw.getMode() !== EditorMode.FORM) + return; + draw.getHistoryManager().redo(); + evt.preventDefault(); + } else if (isMod(evt) && evt.key === KeyMap.C) { + host.copy(); + evt.preventDefault(); + } else if (isMod(evt) && evt.key === KeyMap.X) { + host.cut(); + evt.preventDefault(); + } else if (isMod(evt) && evt.key === KeyMap.A) { + host.selectAll(); + evt.preventDefault(); + } else if (isMod(evt) && evt.key === KeyMap.S) { + if (draw.isReadonly()) + return; + const listener = draw.getListener(); + if (listener.saved) { + listener.saved(draw.getValue()); + } + const eventBus = draw.getEventBus(); + if (eventBus.isSubscribe("saved")) { + eventBus.emit("saved", draw.getValue()); + } + evt.preventDefault(); + } else if (evt.key === KeyMap.ESC) { + host.clearPainterStyle(); + const zoneManager = draw.getZone(); + if (!zoneManager.isMainActive()) { + zoneManager.setZone(EditorZone.MAIN); + } + evt.preventDefault(); + } else if (evt.key === KeyMap.TAB) { + tab(evt, host); + } +} +function input(data2, host) { + var _a; + const draw = host.getDraw(); + if (draw.isReadonly() || draw.isDisabled()) + return; + const position = draw.getPosition(); + const cursorPosition = position.getCursorPosition(); + if (!data2 || !cursorPosition) + return; + const isComposing = host.isComposing; + if (isComposing && ((_a = host.compositionInfo) == null ? void 0 : _a.value) === data2) + return; + const rangeManager = draw.getRange(); + if (!rangeManager.getIsCanInput()) + return; + removeComposingInput(host); + if (!isComposing) { + const cursor = draw.getCursor(); + cursor.clearAgentDomValue(); + } + const { TEXT, HYPERLINK, SUBSCRIPT, SUPERSCRIPT, DATE } = ElementType; + const text = data2.replaceAll(` +`, ZERO); + const { startIndex, endIndex } = rangeManager.getRange(); + const elementList = draw.getElementList(); + const copyElement = getAnchorElement(elementList, endIndex); + if (!copyElement) + return; + const isDesignMode = draw.isDesignMode(); + const inputData = splitText(text).map((value) => { + var _a2, _b; + const newElement = { + value + }; + if (isDesignMode || !((_a2 = copyElement.title) == null ? void 0 : _a2.disabled) && !((_b = copyElement.control) == null ? void 0 : _b.disabled)) { + const nextElement = elementList[endIndex + 1]; + if (!copyElement.type || copyElement.type === TEXT || copyElement.type === HYPERLINK && (nextElement == null ? void 0 : nextElement.type) === HYPERLINK || copyElement.type === DATE && (nextElement == null ? void 0 : nextElement.type) === DATE || copyElement.type === SUBSCRIPT && (nextElement == null ? void 0 : nextElement.type) === SUBSCRIPT || copyElement.type === SUPERSCRIPT && (nextElement == null ? void 0 : nextElement.type) === SUPERSCRIPT) { + EDITOR_ELEMENT_COPY_ATTR.forEach((attr) => { + if (attr === "groupIds" && !(nextElement == null ? void 0 : nextElement.groupIds)) + return; + const value2 = copyElement[attr]; + if (value2 !== void 0) { + newElement[attr] = value2; + } + }); + } + if (isComposing) { + newElement.underline = true; + } + } + return newElement; + }); + const control = draw.getControl(); + let curIndex; + if (control.getActiveControl() && control.getIsRangeWithinControl()) { + curIndex = control.setValue(inputData); + } else { + const start = startIndex + 1; + if (startIndex !== endIndex) { + draw.spliceElementList(elementList, start, endIndex - startIndex); + } + formatElementContext(elementList, inputData, startIndex, { + editorOptions: draw.getOptions() + }); + draw.spliceElementList(elementList, start, 0, ...inputData); + curIndex = startIndex + inputData.length; + } + if (~curIndex) { + rangeManager.setRange(curIndex, curIndex); + draw.render({ + curIndex, + isSubmitHistory: !isComposing + }); + } + if (isComposing) { + host.compositionInfo = { + elementList, + value: text, + startIndex: curIndex - inputData.length, + endIndex: curIndex + }; + } +} +function removeComposingInput(host) { + if (!host.compositionInfo) + return; + const { elementList, startIndex, endIndex } = host.compositionInfo; + elementList.splice(startIndex + 1, endIndex - startIndex); + const rangeManager = host.getDraw().getRange(); + rangeManager.setRange(startIndex, startIndex); + host.compositionInfo = null; +} +function cut(host) { + const draw = host.getDraw(); + const rangeManager = draw.getRange(); + const { startIndex, endIndex } = rangeManager.getRange(); + if (!~startIndex && !~startIndex) + return; + if (draw.isReadonly() || !rangeManager.getIsCanInput()) + return; + const elementList = draw.getElementList(); + let start = startIndex; + let end = endIndex; + if (startIndex === endIndex) { + const position = draw.getPosition(); + const positionList = position.getPositionList(); + const startPosition = positionList[startIndex]; + const curRowNo = startPosition.rowNo; + const curPageNo = startPosition.pageNo; + const cutElementIndexList = []; + for (let p = 0; p < positionList.length; p++) { + const position2 = positionList[p]; + if (position2.pageNo > curPageNo) + break; + if (position2.pageNo === curPageNo && position2.rowNo === curRowNo) { + cutElementIndexList.push(p); + } + } + const firstElementIndex = cutElementIndexList[0] - 1; + start = firstElementIndex < 0 ? 0 : firstElementIndex; + end = cutElementIndexList[cutElementIndexList.length - 1]; + } + const options = draw.getOptions(); + writeElementList(elementList.slice(start + 1, end + 1), options); + const control = draw.getControl(); + let curIndex; + if (control.getActiveControl() && control.getIsRangeWithinControl()) { + curIndex = control.cut(); + } else { + draw.spliceElementList(elementList, start + 1, end - start); + curIndex = start; + } + rangeManager.setRange(curIndex, curIndex); + draw.render({ curIndex }); +} +function copy(host) { + const draw = host.getDraw(); + const { copy: copy2 } = draw.getOverride(); + if (copy2) { + const overrideResult = copy2(); + if ((overrideResult == null ? void 0 : overrideResult.preventDefault) !== false) + return; + } + const rangeManager = draw.getRange(); + let copyElementList = null; + const range = rangeManager.getRange(); + if (range.isCrossRowCol) { + const tableElement = rangeManager.getRangeTableElement(); + if (!tableElement) + return; + const rowCol = draw.getTableParticle().getRangeRowCol(); + if (!rowCol) + return; + const copyTableElement = { + type: ElementType.TABLE, + value: "", + colgroup: [], + trList: [] + }; + const firstRow = rowCol[0]; + const colStartIndex = firstRow[0].colIndex; + const lastCol = firstRow[firstRow.length - 1]; + const colEndIndex = lastCol.colIndex + lastCol.colspan - 1; + for (let c = colStartIndex; c <= colEndIndex; c++) { + copyTableElement.colgroup.push(tableElement.colgroup[c]); + } + for (let r = 0; r < rowCol.length; r++) { + const row = rowCol[r]; + const tr = tableElement.trList[row[0].rowIndex]; + const coptTr = { + tdList: [], + height: tr.height, + minHeight: tr.minHeight + }; + for (let c = 0; c < row.length; c++) { + coptTr.tdList.push(row[c]); + } + copyTableElement.trList.push(coptTr); + } + copyElementList = zipElementList([copyTableElement]); + } else { + copyElementList = rangeManager.getIsCollapsed() ? rangeManager.getRangeRowElementList() : rangeManager.getSelectionElementList(); + } + if (!(copyElementList == null ? void 0 : copyElementList.length)) + return; + writeElementList(copyElementList, draw.getOptions()); +} +function drop(evt, host) { + var _a, _b; + const draw = host.getDraw(); + const { drop: drop2 } = draw.getOverride(); + if (drop2) { + const overrideResult = drop2(evt); + if ((overrideResult == null ? void 0 : overrideResult.preventDefault) !== false) + return; + } + evt.preventDefault(); + const data2 = (_a = evt.dataTransfer) == null ? void 0 : _a.getData("text"); + if (data2) { + host.input(data2); + } else { + const files = (_b = evt.dataTransfer) == null ? void 0 : _b.files; + if (!files) + return; + for (let i = 0; i < files.length; i++) { + const file = files[i]; + if (file.type.startsWith("image")) { + pasteImage(host, file); + } + } + } +} +function getWordRangeBySegmenter(host) { + var _a; + if (!Intl.Segmenter) + return null; + const draw = host.getDraw(); + const cursorPosition = draw.getPosition().getCursorPosition(); + if (!cursorPosition) + return null; + const rangeManager = draw.getRange(); + const paragraphInfo = rangeManager.getRangeParagraphInfo(); + if (!paragraphInfo) + return null; + const paragraphText = ((_a = paragraphInfo == null ? void 0 : paragraphInfo.elementList) == null ? void 0 : _a.map((e) => !e.type || e.type !== ElementType.CONTROL && TEXTLIKE_ELEMENT_TYPE.includes(e.type) ? e.value : ZERO).join("")) || ""; + if (!paragraphText) + return null; + const cursorStartIndex = cursorPosition.index; + const offset = paragraphInfo.startIndex; + const segmenter = new Intl.Segmenter(void 0, { granularity: "word" }); + const segments = segmenter.segment(paragraphText); + let startIndex = -1; + let endIndex = -1; + for (const { segment, index: index2, isWordLike } of segments) { + const realSegmentStartIndex = index2 + offset; + if (isWordLike && cursorStartIndex >= realSegmentStartIndex && cursorStartIndex < realSegmentStartIndex + segment.length) { + startIndex = realSegmentStartIndex - 1; + endIndex = startIndex + segment.length; + break; + } + } + return ~startIndex && ~endIndex ? { startIndex, endIndex } : null; +} +function getWordRangeByCursor(host) { + const draw = host.getDraw(); + const cursorPosition = draw.getPosition().getCursorPosition(); + if (!cursorPosition) + return null; + const { value, index: index2 } = cursorPosition; + const LETTER_REG = draw.getLetterReg(); + let upCount = 0; + let downCount = 0; + const isNumber = NUMBER_LIKE_REG.test(value); + if (isNumber || LETTER_REG.test(value)) { + const elementList = draw.getElementList(); + let upStartIndex = index2 - 1; + while (upStartIndex > 0) { + const value2 = elementList[upStartIndex].value; + if (isNumber && NUMBER_LIKE_REG.test(value2) || !isNumber && LETTER_REG.test(value2)) { + upCount++; + upStartIndex--; + } else { + break; + } + } + let downStartIndex = index2 + 1; + while (downStartIndex < elementList.length) { + const value2 = elementList[downStartIndex].value; + if (isNumber && NUMBER_LIKE_REG.test(value2) || !isNumber && LETTER_REG.test(value2)) { + downCount++; + downStartIndex++; + } else { + break; + } + } + } + const startIndex = index2 - upCount - 1; + if (startIndex < 0) + return null; + return { + startIndex, + endIndex: index2 + downCount + }; +} +function dblclick(host, evt) { + const draw = host.getDraw(); + const position = draw.getPosition(); + const positionContext = position.getPositionByXY({ + x: evt.offsetX, + y: evt.offsetY + }); + if (positionContext.isImage && positionContext.isDirectHit) { + draw.getPreviewer().render(); + return; + } + if (draw.getIsPagingMode()) { + if (!~positionContext.index && positionContext.zone) { + draw.getZone().setZone(positionContext.zone); + draw.clearSideEffect(); + position.setPositionContext({ + isTable: false + }); + return; + } + } + if ((positionContext.isCheckbox || positionContext.isRadio) && positionContext.isDirectHit) { + return; + } + const rangeManager = draw.getRange(); + const segmenterRange = getWordRangeBySegmenter(host) || getWordRangeByCursor(host); + if (!segmenterRange) + return; + rangeManager.setRange(segmenterRange.startIndex, segmenterRange.endIndex); + draw.render({ + isSubmitHistory: false, + isSetCursor: false, + isCompute: false + }); + rangeManager.setRangeStyle(); +} +function threeClick(host) { + var _a, _b; + const draw = host.getDraw(); + const position = draw.getPosition(); + const cursorPosition = position.getCursorPosition(); + if (!cursorPosition) + return; + const { index: index2 } = cursorPosition; + const elementList = draw.getElementList(); + let upCount = 0; + let downCount = 0; + let upStartIndex = index2 - 1; + while (upStartIndex > 0) { + const element = elementList[upStartIndex]; + const preElement = elementList[upStartIndex - 1]; + if (element.value === ZERO && !element.listWrap || element.listId !== (preElement == null ? void 0 : preElement.listId) || element.titleId !== (preElement == null ? void 0 : preElement.titleId)) { + break; + } + upCount++; + upStartIndex--; + } + let downStartIndex = index2 + 1; + while (downStartIndex < elementList.length) { + const element = elementList[downStartIndex]; + const nextElement = elementList[downStartIndex + 1]; + if (element.value === ZERO && !element.listWrap || element.listId !== (nextElement == null ? void 0 : nextElement.listId) || element.titleId !== (nextElement == null ? void 0 : nextElement.titleId)) { + break; + } + downCount++; + downStartIndex++; + } + const rangeManager = draw.getRange(); + let newStartIndex = index2 - upCount - 1; + if (((_a = elementList[newStartIndex]) == null ? void 0 : _a.value) !== ZERO) { + newStartIndex -= 1; + } + if (newStartIndex < 0) + return; + let newEndIndex = index2 + downCount + 1; + if (((_b = elementList[newEndIndex]) == null ? void 0 : _b.value) === ZERO || newEndIndex > elementList.length - 1) { + newEndIndex -= 1; + } + rangeManager.setRange(newStartIndex, newEndIndex); + draw.render({ + isSubmitHistory: false, + isSetCursor: false, + isCompute: false + }); +} +var click = { + dblclick, + threeClick +}; +function compositionstart(host) { + host.isComposing = true; +} +function compositionend(host, evt) { + host.isComposing = false; + const draw = host.getDraw(); + if (!evt.data) { + removeComposingInput(host); + const rangeManager = draw.getRange(); + const { endIndex: curIndex } = rangeManager.getRange(); + draw.render({ + curIndex, + isSubmitHistory: false + }); + } else { + setTimeout(() => { + if (host.compositionInfo) { + input(evt.data, host); + } + }, 1); + } + const cursor = draw.getCursor(); + cursor.clearAgentDomValue(); +} +var composition = { + compositionstart, + compositionend +}; +function dragover(evt, host) { + const draw = host.getDraw(); + const isReadonly = draw.isReadonly(); + if (isReadonly) + return; + evt.preventDefault(); + const pageContainer = draw.getPageContainer(); + const editorRegion = findParent(evt.target, (node) => node === pageContainer, true); + if (!editorRegion) + return; + const target = evt.target; + const pageIndex = target.dataset.index; + if (pageIndex) { + draw.setPageNo(Number(pageIndex)); + } + const position = draw.getPosition(); + const positionContext = position.adjustPositionContext({ + x: evt.offsetX, + y: evt.offsetY + }); + if (!positionContext) + return; + const { isTable, tdValueIndex, index: index2 } = positionContext; + const positionList = position.getPositionList(); + const curIndex = isTable ? tdValueIndex : index2; + if (~index2) { + const rangeManager = draw.getRange(); + rangeManager.setRange(curIndex, curIndex); + position.setCursorPosition(positionList[curIndex]); + } + const cursor = draw.getCursor(); + const { cursor: { dragColor, dragWidth } } = draw.getOptions(); + cursor.drawCursor({ + width: dragWidth, + color: dragColor, + isBlink: false + }); +} +var drag = { + dragover +}; +class CanvasEvent { + constructor(draw) { + this.draw = draw; + this.pageContainer = draw.getPageContainer(); + this.pageList = draw.getPageList(); + this.range = this.draw.getRange(); + this.position = this.draw.getPosition(); + this.isAllowSelection = false; + this.isComposing = false; + this.compositionInfo = null; + this.isAllowDrag = false; + this.isAllowDrop = false; + this.cacheRange = null; + this.cacheElementList = null; + this.cachePositionList = null; + this.cachePositionContext = null; + this.mouseDownStartPosition = null; + } + getDraw() { + return this.draw; + } + register() { + this.pageContainer.addEventListener("click", this.click.bind(this)); + this.pageContainer.addEventListener("mousedown", this.mousedown.bind(this)); + this.pageContainer.addEventListener("mouseup", this.mouseup.bind(this)); + this.pageContainer.addEventListener("mouseleave", this.mouseleave.bind(this)); + this.pageContainer.addEventListener("mousemove", this.mousemove.bind(this)); + this.pageContainer.addEventListener("dblclick", this.dblclick.bind(this)); + this.pageContainer.addEventListener("dragover", this.dragover.bind(this)); + this.pageContainer.addEventListener("drop", this.drop.bind(this)); + threeClick$1(this.pageContainer, this.threeClick.bind(this)); + } + setIsAllowSelection(payload) { + this.isAllowSelection = payload; + if (!payload) { + this.applyPainterStyle(); + } + } + setIsAllowDrag(payload) { + this.isAllowDrag = payload; + this.isAllowDrop = payload; + } + clearPainterStyle() { + this.pageList.forEach((p) => { + p.style.cursor = "text"; + }); + this.draw.setPainterStyle(null); + } + applyPainterStyle() { + const painterStyle = this.draw.getPainterStyle(); + if (!painterStyle) + return; + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelection(); + if (!selection) + return; + const painterStyleKeys = Object.keys(painterStyle); + selection.forEach((s) => { + painterStyleKeys.forEach((pKey) => { + const key = pKey; + s[key] = painterStyle[key]; + }); + }); + this.draw.render({ isSetCursor: false }); + const painterOptions = this.draw.getPainterOptions(); + if (!painterOptions || !painterOptions.isDblclick) { + this.clearPainterStyle(); + } + } + selectAll() { + const position = this.position.getPositionList(); + this.range.setRange(0, position.length - 1); + this.draw.render({ + isSubmitHistory: false, + isSetCursor: false, + isCompute: false + }); + } + mousemove(evt) { + mousemove(evt, this); + } + mousedown(evt) { + mousedown(evt, this); + } + click() { + if (isIOS && !this.draw.isReadonly()) { + this.draw.getCursor().getAgentDom().focus(); + } + } + mouseup(evt) { + mouseup(evt, this); + } + mouseleave(evt) { + mouseleave(evt, this); + } + keydown(evt) { + keydown(evt, this); + } + dblclick(evt) { + click.dblclick(this, evt); + } + threeClick() { + click.threeClick(this); + } + input(data2) { + input(data2, this); + } + cut() { + cut(this); + } + copy() { + copy(this); + } + compositionstart() { + composition.compositionstart(this); + } + compositionend(evt) { + composition.compositionend(this, evt); + } + drop(evt) { + drop(evt, this); + } + dragover(evt) { + drag.dragover(evt, this); + } +} +class GlobalEvent { + constructor(draw, canvasEvent) { + this.clearSideEffect = (evt) => { + if (!this.cursor) + return; + const target = (evt == null ? void 0 : evt.composedPath()[0]) || evt.target; + const pageList = this.draw.getPageList(); + const innerEditorDom = findParent(target, (node) => pageList.includes(node), true); + if (innerEditorDom) { + this.setRangeStyle(); + return; + } + const outerEditorDom = findParent(target, (node) => !!node && node.nodeType === 1 && !!node.getAttribute(EDITOR_COMPONENT), true); + if (outerEditorDom) { + this.setRangeStyle(); + this.watchCursorActive(); + return; + } + this.cursor.recoveryCursor(); + this.range.recoveryRangeStyle(); + this.previewer.clearResizer(); + this.tableTool.dispose(); + this.hyperlinkParticle.clearHyperlinkPopup(); + this.control.destroyControl(); + this.dateParticle.clearDatePicker(); + this.imageParticle.destroyFloatImage(); + }; + this.setCanvasEventAbility = () => { + this.canvasEvent.setIsAllowDrag(false); + this.canvasEvent.setIsAllowSelection(false); + }; + this.setRangeStyle = () => { + this.range.setRangeStyle(); + }; + this.setPageScale = (evt) => { + if (!evt.ctrlKey) + return; + evt.preventDefault(); + const { scale } = this.options; + if (evt.deltaY < 0) { + const nextScale = scale * 10 + 1; + if (nextScale <= 30) { + this.draw.setPageScale(nextScale / 10); + } + } else { + const nextScale = scale * 10 - 1; + if (nextScale >= 5) { + this.draw.setPageScale(nextScale / 10); + } + } + }; + this._handleVisibilityChange = () => { + if (document.visibilityState === "visible") { + const range = this.range.getRange(); + const isSetCursor = !!~range.startIndex && !!~range.endIndex && range.startIndex === range.endIndex; + this.range.replaceRange(range); + this.draw.render({ + isSetCursor, + isCompute: false, + isSubmitHistory: false, + curIndex: range.startIndex + }); + } + }; + this._handleDprChange = () => { + this.draw.setPageDevicePixel(); + }; + this.draw = draw; + this.options = draw.getOptions(); + this.canvasEvent = canvasEvent; + this.cursor = null; + this.range = draw.getRange(); + this.previewer = draw.getPreviewer(); + this.tableTool = draw.getTableTool(); + this.hyperlinkParticle = draw.getHyperlinkParticle(); + this.dateParticle = draw.getDateParticle(); + this.imageParticle = draw.getImageParticle(); + this.control = draw.getControl(); + this.dprMediaQueryList = window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`); + } + register() { + this.cursor = this.draw.getCursor(); + this.addEvent(); + } + addEvent() { + window.addEventListener("blur", this.clearSideEffect); + document.addEventListener("keyup", this.setRangeStyle); + document.addEventListener("click", this.clearSideEffect); + document.addEventListener("mouseup", this.setCanvasEventAbility); + document.addEventListener("wheel", this.setPageScale, { passive: false }); + document.addEventListener("visibilitychange", this._handleVisibilityChange); + this.dprMediaQueryList.addEventListener("change", this._handleDprChange); + } + removeEvent() { + window.removeEventListener("blur", this.clearSideEffect); + document.removeEventListener("keyup", this.setRangeStyle); + document.removeEventListener("click", this.clearSideEffect); + document.removeEventListener("mouseup", this.setCanvasEventAbility); + document.removeEventListener("wheel", this.setPageScale); + document.removeEventListener("visibilitychange", this._handleVisibilityChange); + this.dprMediaQueryList.removeEventListener("change", this._handleDprChange); + } + watchCursorActive() { + if (!this.range.getIsCollapsed()) + return; + setTimeout(() => { + var _a, _b; + if (!((_a = this.cursor) == null ? void 0 : _a.getAgentIsActive())) { + (_b = this.cursor) == null ? void 0 : _b.drawCursor({ + isFocus: false, + isBlink: false + }); + } + }); + } +} +class HistoryManager { + constructor(draw) { + this.undoStack = []; + this.redoStack = []; + this.maxRecordCount = draw.getOptions().historyMaxRecordCount + 1; + } + undo() { + if (this.undoStack.length > 1) { + const pop = this.undoStack.pop(); + this.redoStack.push(pop); + if (this.undoStack.length) { + this.undoStack[this.undoStack.length - 1](); + } + } + } + redo() { + if (this.redoStack.length) { + const pop = this.redoStack.pop(); + this.undoStack.push(pop); + pop(); + } + } + execute(fn) { + this.undoStack.push(fn); + if (this.redoStack.length) { + this.redoStack = []; + } + while (this.undoStack.length > this.maxRecordCount) { + this.undoStack.shift(); + } + } + isCanUndo() { + return this.undoStack.length > 1; + } + isCanRedo() { + return !!this.redoStack.length; + } + isStackEmpty() { + return !this.undoStack.length && !this.redoStack.length; + } + recovery() { + this.undoStack = []; + this.redoStack = []; + } + popUndo() { + return this.undoStack.pop(); + } +} +class Position { + constructor(draw) { + this.positionList = []; + this.floatPositionList = []; + this.cursorPosition = null; + this.positionContext = { + isTable: false, + isControl: false + }; + this.draw = draw; + this.eventBus = draw.getEventBus(); + this.options = draw.getOptions(); + } + getFloatPositionList() { + return this.floatPositionList; + } + getTablePositionList(sourceElementList) { + const { index: index2, trIndex, tdIndex } = this.positionContext; + return sourceElementList[index2].trList[trIndex].tdList[tdIndex].positionList || []; + } + getPositionList() { + return this.positionContext.isTable ? this.getTablePositionList(this.draw.getOriginalElementList()) : this.getOriginalPositionList(); + } + getMainPositionList() { + return this.positionContext.isTable ? this.getTablePositionList(this.draw.getOriginalMainElementList()) : this.positionList; + } + getOriginalPositionList() { + const zoneManager = this.draw.getZone(); + if (zoneManager.isHeaderActive()) { + const header = this.draw.getHeader(); + return header.getPositionList(); + } + if (zoneManager.isFooterActive()) { + const footer = this.draw.getFooter(); + return footer.getPositionList(); + } + return this.positionList; + } + getOriginalMainPositionList() { + return this.positionList; + } + getSelectionPositionList() { + const { startIndex, endIndex } = this.draw.getRange().getRange(); + if (startIndex === endIndex) + return null; + const positionList = this.getPositionList(); + return positionList.slice(startIndex + 1, endIndex + 1); + } + setPositionList(payload) { + this.positionList = payload; + } + setFloatPositionList(payload) { + this.floatPositionList = payload; + } + computePageRowPosition(payload) { + const { positionList, rowList, pageNo, startX, startY, startRowIndex, startIndex, innerWidth, zone: zone2 } = payload; + const { scale, table: { tdPadding } } = this.options; + let x = startX; + let y = startY; + let index2 = startIndex; + for (let i = 0; i < rowList.length; i++) { + const curRow = rowList[i]; + if (!curRow.isSurround) { + const curRowWidth = curRow.width + (curRow.offsetX || 0); + if (curRow.rowFlex === RowFlex.CENTER) { + x += (innerWidth - curRowWidth) / 2; + } else if (curRow.rowFlex === RowFlex.RIGHT) { + x += innerWidth - curRowWidth; + } + } + x += curRow.offsetX || 0; + const tablePreX = x; + const tablePreY = y; + for (let j = 0; j < curRow.elementList.length; j++) { + const element = curRow.elementList[j]; + const metrics = element.metrics; + const offsetY = element.imgDisplay !== ImageDisplay.INLINE && element.type === ElementType.IMAGE || element.type === ElementType.LATEX ? curRow.ascent - metrics.height : curRow.ascent; + if (element.left) { + x += element.left; + } + const positionItem = { + pageNo, + index: index2, + value: element.value, + rowIndex: startRowIndex + i, + rowNo: i, + metrics, + left: element.left || 0, + ascent: offsetY, + lineHeight: curRow.height, + isFirstLetter: j === 0, + isLastLetter: j === curRow.elementList.length - 1, + coordinate: { + leftTop: [x, y], + leftBottom: [x, y + curRow.height], + rightTop: [x + metrics.width, y], + rightBottom: [x + metrics.width, y + curRow.height] + } + }; + if (element.imgDisplay === ImageDisplay.SURROUND || element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) { + const prePosition = positionList[positionList.length - 1]; + if (prePosition) { + positionItem.metrics = prePosition.metrics; + positionItem.coordinate = prePosition.coordinate; + } + if (!element.imgFloatPosition) { + element.imgFloatPosition = { + x, + y, + pageNo + }; + } + this.floatPositionList.push({ + pageNo, + element, + position: positionItem, + isTable: payload.isTable, + index: payload.index, + tdIndex: payload.tdIndex, + trIndex: payload.trIndex, + tdValueIndex: index2, + zone: zone2 + }); + } + positionList.push(positionItem); + index2++; + x += metrics.width; + if (element.type === ElementType.TABLE) { + const tdPaddingWidth = tdPadding[1] + tdPadding[3]; + const tdPaddingHeight = tdPadding[0] + tdPadding[2]; + for (let t = 0; t < element.trList.length; t++) { + const tr = element.trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + td.positionList = []; + const rowList2 = td.rowList; + const drawRowResult = this.computePageRowPosition({ + positionList: td.positionList, + rowList: rowList2, + pageNo, + startRowIndex: 0, + startIndex: 0, + startX: (td.x + tdPadding[3]) * scale + tablePreX, + startY: (td.y + tdPadding[0]) * scale + tablePreY, + innerWidth: (td.width - tdPaddingWidth) * scale, + isTable: true, + index: index2 - 1, + tdIndex: d, + trIndex: t, + zone: zone2 + }); + if (td.verticalAlign === VerticalAlign.MIDDLE || td.verticalAlign === VerticalAlign.BOTTOM) { + const rowsHeight = rowList2.reduce((pre, cur) => pre + cur.height, 0); + const blankHeight = (td.height - tdPaddingHeight) * scale - rowsHeight; + const offsetHeight = td.verticalAlign === VerticalAlign.MIDDLE ? blankHeight / 2 : blankHeight; + if (Math.floor(offsetHeight) > 0) { + td.positionList.forEach((tdPosition) => { + const { coordinate: { leftTop, leftBottom, rightBottom, rightTop } } = tdPosition; + leftTop[1] += offsetHeight; + leftBottom[1] += offsetHeight; + rightBottom[1] += offsetHeight; + rightTop[1] += offsetHeight; + }); + } + } + x = drawRowResult.x; + y = drawRowResult.y; + } + } + x = tablePreX; + y = tablePreY; + } + } + x = startX; + y += curRow.height; + } + return { x, y, index: index2 }; + } + computePositionList() { + var _a; + this.positionList = []; + const innerWidth = this.draw.getInnerWidth(); + const pageRowList = this.draw.getPageRowList(); + const margins = this.draw.getMargins(); + const startX = margins[3]; + const header = this.draw.getHeader(); + const extraHeight = header.getExtraHeight(); + const startY = margins[0] + extraHeight; + let startRowIndex = 0; + for (let i = 0; i < pageRowList.length; i++) { + const rowList = pageRowList[i]; + const startIndex = (_a = rowList[0]) == null ? void 0 : _a.startIndex; + this.computePageRowPosition({ + positionList: this.positionList, + rowList, + pageNo: i, + startRowIndex, + startIndex, + startX, + startY, + innerWidth + }); + startRowIndex += rowList.length; + } + } + computeRowPosition(payload) { + const { row, innerWidth } = payload; + const positionList = []; + this.computePageRowPosition({ + positionList, + innerWidth, + rowList: [deepClone(row)], + pageNo: 0, + startX: 0, + startY: 0, + startIndex: 0, + startRowIndex: 0 + }); + return positionList; + } + setCursorPosition(position) { + this.cursorPosition = position; + } + getCursorPosition() { + return this.cursorPosition; + } + getPositionContext() { + return this.positionContext; + } + setPositionContext(payload) { + this.eventBus.emit("positionContextChange", { + value: payload, + oldValue: this.positionContext + }); + this.positionContext = payload; + } + getPositionByXY(payload) { + var _a, _b, _c, _d, _e; + const { x, y, isTable } = payload; + let { elementList, positionList } = payload; + if (!elementList) { + elementList = this.draw.getOriginalElementList(); + } + if (!positionList) { + positionList = this.getOriginalPositionList(); + } + const zoneManager = this.draw.getZone(); + const curPageNo = (_a = payload.pageNo) != null ? _a : this.draw.getPageNo(); + const isMainActive = zoneManager.isMainActive(); + const positionNo = isMainActive ? curPageNo : 0; + if (!isTable) { + const floatTopPosition = this.getFloatPositionByXY({ + ...payload, + imgDisplays: [ImageDisplay.FLOAT_TOP, ImageDisplay.SURROUND] + }); + if (floatTopPosition) + return floatTopPosition; + } + for (let j = 0; j < positionList.length; j++) { + const { index: index2, pageNo, left: left2, isFirstLetter, coordinate: { leftTop, rightTop, leftBottom } } = positionList[j]; + if (positionNo !== pageNo) + continue; + if (pageNo > positionNo) + break; + if (leftTop[0] - left2 <= x && rightTop[0] >= x && leftTop[1] <= y && leftBottom[1] >= y) { + let curPositionIndex2 = j; + const element = elementList[j]; + if (element.type === ElementType.TABLE) { + for (let t = 0; t < element.trList.length; t++) { + const tr = element.trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const tablePosition = this.getPositionByXY({ + x, + y, + td, + pageNo: curPageNo, + tablePosition: positionList[j], + isTable: true, + elementList: td.value, + positionList: td.positionList + }); + if (~tablePosition.index) { + const { index: tdValueIndex, hitLineStartIndex: hitLineStartIndex3 } = tablePosition; + const tdValueElement = td.value[tdValueIndex]; + return { + index: index2, + isCheckbox: tablePosition.isCheckbox || tdValueElement.type === ElementType.CHECKBOX || tdValueElement.controlComponent === ControlComponent.CHECKBOX, + isRadio: tdValueElement.type === ElementType.RADIO || tdValueElement.controlComponent === ControlComponent.RADIO, + isControl: !!tdValueElement.controlId, + isImage: tablePosition.isImage, + isDirectHit: tablePosition.isDirectHit, + isTable: true, + tdIndex: d, + trIndex: t, + tdValueIndex, + tdId: td.id, + trId: tr.id, + tableId: element.id, + hitLineStartIndex: hitLineStartIndex3 + }; + } + } + } + } + if (element.type === ElementType.IMAGE || element.type === ElementType.LATEX) { + return { + index: curPositionIndex2, + isDirectHit: true, + isImage: true + }; + } + if (element.type === ElementType.CHECKBOX || element.controlComponent === ControlComponent.CHECKBOX) { + return { + index: curPositionIndex2, + isDirectHit: true, + isCheckbox: true + }; + } + if (element.type === ElementType.RADIO || element.controlComponent === ControlComponent.RADIO) { + return { + index: curPositionIndex2, + isDirectHit: true, + isRadio: true + }; + } + let hitLineStartIndex2; + if (elementList[index2].value !== ZERO) { + const valueWidth = rightTop[0] - leftTop[0]; + if (x < leftTop[0] + valueWidth / 2) { + curPositionIndex2 = j - 1; + if (isFirstLetter) { + hitLineStartIndex2 = j; + } + } + } + return { + isDirectHit: true, + hitLineStartIndex: hitLineStartIndex2, + index: curPositionIndex2, + isControl: !!element.controlId + }; + } + } + if (!isTable) { + const floatBottomPosition = this.getFloatPositionByXY({ + ...payload, + imgDisplays: [ImageDisplay.FLOAT_BOTTOM] + }); + if (floatBottomPosition) + return floatBottomPosition; + } + let isLastArea = false; + let curPositionIndex = -1; + let hitLineStartIndex; + if (isTable) { + const { scale } = this.options; + const { td, tablePosition } = payload; + if (td && tablePosition) { + const { leftTop } = tablePosition.coordinate; + const tdX = td.x * scale + leftTop[0]; + const tdY = td.y * scale + leftTop[1]; + const tdWidth = td.width * scale; + const tdHeight = td.height * scale; + if (!(tdX < x && x < tdX + tdWidth && tdY < y && y < tdY + tdHeight)) { + return { + index: curPositionIndex + }; + } + } + } + const lastLetterList = positionList.filter((p) => p.isLastLetter && p.pageNo === positionNo); + for (let j = 0; j < lastLetterList.length; j++) { + const { index: index2, rowNo, coordinate: { leftTop, leftBottom } } = lastLetterList[j]; + if (y > leftTop[1] && y <= leftBottom[1]) { + const headIndex = positionList.findIndex((p) => p.pageNo === positionNo && p.rowNo === rowNo); + const headElement = elementList[headIndex]; + const headPosition = positionList[headIndex]; + const headStartX = headElement.listStyle === ListStyle.CHECKBOX ? this.options.margins[3] : headPosition.coordinate.leftTop[0]; + if (x < headStartX) { + if (~headIndex) { + if (headPosition.value === ZERO) { + curPositionIndex = headIndex; + } else { + curPositionIndex = headIndex - 1; + hitLineStartIndex = headIndex; + } + } else { + curPositionIndex = index2; + } + } else { + if (headElement.listStyle === ListStyle.CHECKBOX && x < leftTop[0]) { + return { + index: headIndex, + isDirectHit: true, + isCheckbox: true + }; + } + curPositionIndex = index2; + } + isLastArea = true; + break; + } + } + if (!isLastArea) { + const header = this.draw.getHeader(); + const headerHeight = header.getHeight(); + const headerBottomY = header.getHeaderTop() + headerHeight; + const footer = this.draw.getFooter(); + const pageHeight = this.draw.getHeight(); + const footerTopY = pageHeight - (footer.getFooterBottom() + footer.getHeight()); + if (isMainActive) { + if (y < headerBottomY) { + return { + index: -1, + zone: EditorZone.HEADER + }; + } + if (y > footerTopY) { + return { + index: -1, + zone: EditorZone.FOOTER + }; + } + } else { + if (y <= footerTopY && y >= headerBottomY) { + return { + index: -1, + zone: EditorZone.MAIN + }; + } + } + const margins = this.draw.getMargins(); + if (y <= margins[1]) { + for (let p = 0; p < positionList.length; p++) { + const position = positionList[p]; + if (position.pageNo !== positionNo || position.rowNo !== 0) + continue; + const { leftTop, rightTop } = position.coordinate; + if (x <= margins[3] || x >= leftTop[0] && x <= rightTop[0] || ((_b = positionList[p + 1]) == null ? void 0 : _b.rowNo) !== 0) { + return { + index: position.index + }; + } + } + } else { + const lastLetter = lastLetterList[lastLetterList.length - 1]; + if (lastLetter) { + const lastRowNo = lastLetter.rowNo; + for (let p = 0; p < positionList.length; p++) { + const position = positionList[p]; + if (position.pageNo !== positionNo || position.rowNo !== lastRowNo) { + continue; + } + const { leftTop, rightTop } = position.coordinate; + if (x <= margins[3] || x >= leftTop[0] && x <= rightTop[0] || ((_c = positionList[p + 1]) == null ? void 0 : _c.rowNo) !== lastRowNo) { + return { + index: position.index + }; + } + } + } + } + return { + index: ((_d = lastLetterList[lastLetterList.length - 1]) == null ? void 0 : _d.index) || positionList.length - 1 + }; + } + return { + hitLineStartIndex, + index: curPositionIndex, + isControl: !!((_e = elementList[curPositionIndex]) == null ? void 0 : _e.controlId) + }; + } + getFloatPositionByXY(payload) { + var _a; + const { x, y } = payload; + const currentPageNo = (_a = payload.pageNo) != null ? _a : this.draw.getPageNo(); + const currentZone = this.draw.getZone().getZone(); + for (let f = 0; f < this.floatPositionList.length; f++) { + const { position, element, isTable, index: index2, trIndex, tdIndex, tdValueIndex, zone: floatElementZone, pageNo } = this.floatPositionList[f]; + if (currentPageNo === pageNo && element.type === ElementType.IMAGE && element.imgDisplay && payload.imgDisplays.includes(element.imgDisplay) && (!floatElementZone || floatElementZone === currentZone)) { + const imgFloatPosition = element.imgFloatPosition; + if (x >= imgFloatPosition.x && x <= imgFloatPosition.x + element.width && y >= imgFloatPosition.y && y <= imgFloatPosition.y + element.height) { + if (isTable) { + return { + index: index2, + isDirectHit: true, + isImage: true, + isTable, + trIndex, + tdIndex, + tdValueIndex, + tdId: element.tdId, + trId: element.trId, + tableId: element.tableId + }; + } + return { + index: position.index, + isDirectHit: true, + isImage: true + }; + } + } + } + } + adjustPositionContext(payload) { + const positionResult = this.getPositionByXY(payload); + if (!~positionResult.index) + return null; + if (positionResult.isControl && this.draw.getMode() !== EditorMode.READONLY) { + const { index: index22, isTable: isTable2, trIndex: trIndex2, tdIndex: tdIndex2, tdValueIndex } = positionResult; + const control = this.draw.getControl(); + const { newIndex } = control.moveCursor({ + index: index22, + isTable: isTable2, + trIndex: trIndex2, + tdIndex: tdIndex2, + tdValueIndex + }); + if (isTable2) { + positionResult.tdValueIndex = newIndex; + } else { + positionResult.index = newIndex; + } + } + const { index: index2, isCheckbox, isRadio, isControl, isImage, isDirectHit, isTable, trIndex, tdIndex, tdId, trId, tableId } = positionResult; + this.setPositionContext({ + isTable: isTable || false, + isCheckbox: isCheckbox || false, + isRadio: isRadio || false, + isControl: isControl || false, + isImage: isImage || false, + isDirectHit: isDirectHit || false, + index: index2, + trIndex, + tdIndex, + tdId, + trId, + tableId + }); + return positionResult; + } + setSurroundPosition(payload) { + var _a; + const { pageNo, row, rowElement, rowElementRect, surroundElementList, availableWidth } = payload; + let x = rowElementRect.x; + let rowIncreaseWidth = 0; + if (surroundElementList.length && !getIsBlockElement(rowElement) && !((_a = rowElement.control) == null ? void 0 : _a.minWidth)) { + for (let s = 0; s < surroundElementList.length; s++) { + const surroundElement = surroundElementList[s]; + const floatPosition = surroundElement.imgFloatPosition; + if (floatPosition.pageNo !== pageNo) + continue; + const surroundRect = { + ...floatPosition, + width: surroundElement.width, + height: surroundElement.height + }; + if (isRectIntersect(rowElementRect, surroundRect)) { + row.isSurround = true; + const translateX = surroundRect.width + surroundRect.x - rowElementRect.x; + rowElement.left = translateX; + row.width += translateX; + rowIncreaseWidth += translateX; + x = surroundRect.x + surroundRect.width; + if (row.width + rowElement.metrics.width > availableWidth) { + rowElement.left = 0; + row.width -= rowIncreaseWidth; + break; + } + } + } + } + return { x, rowIncreaseWidth }; + } +} +class RangeManager { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.listener = draw.getListener(); + this.eventBus = draw.getEventBus(); + this.position = draw.getPosition(); + this.historyManager = draw.getHistoryManager(); + this.range = { + startIndex: -1, + endIndex: -1 + }; + } + getRange() { + return this.range; + } + clearRange() { + this.setRange(-1, -1); + } + getIsCollapsed() { + const { startIndex, endIndex } = this.range; + return startIndex === endIndex; + } + getSelection() { + const { startIndex, endIndex } = this.range; + if (startIndex === endIndex) + return null; + const elementList = this.draw.getElementList(); + return elementList.slice(startIndex + 1, endIndex + 1); + } + getSelectionElementList() { + if (this.range.isCrossRowCol) { + const rowCol = this.draw.getTableParticle().getRangeRowCol(); + if (!rowCol) + return null; + const elementList = []; + for (let r = 0; r < rowCol.length; r++) { + const row = rowCol[r]; + for (let c = 0; c < row.length; c++) { + const col = row[c]; + elementList.push(...col.value); + } + } + return elementList; + } + return this.getSelection(); + } + getTextLikeSelection() { + const selection = this.getSelection(); + if (!selection) + return null; + return selection.filter((s) => !s.type || TEXTLIKE_ELEMENT_TYPE.includes(s.type)); + } + getTextLikeSelectionElementList() { + const selection = this.getSelectionElementList(); + if (!selection) + return null; + return selection.filter((s) => !s.type || TEXTLIKE_ELEMENT_TYPE.includes(s.type)); + } + getRangeRow() { + const { startIndex, endIndex } = this.range; + if (!~startIndex && !~endIndex) + return null; + const positionList = this.position.getPositionList(); + const rangeRow = /* @__PURE__ */ new Map(); + for (let p = startIndex; p < endIndex + 1; p++) { + const { pageNo, rowNo } = positionList[p]; + const rowSet = rangeRow.get(pageNo); + if (!rowSet) { + rangeRow.set(pageNo, /* @__PURE__ */ new Set([rowNo])); + } else { + if (!rowSet.has(rowNo)) { + rowSet.add(rowNo); + } + } + } + return rangeRow; + } + getRangeRowElementList() { + const { startIndex, endIndex, isCrossRowCol } = this.range; + if (!~startIndex && !~endIndex) + return null; + if (isCrossRowCol) { + return this.getSelectionElementList(); + } + const rangeRow = this.getRangeRow(); + if (!rangeRow) + return null; + const positionList = this.position.getPositionList(); + const elementList = this.draw.getElementList(); + const rowElementList = []; + for (let p = 0; p < positionList.length; p++) { + const position = positionList[p]; + const rowSet = rangeRow.get(position.pageNo); + if (!rowSet) + continue; + if (rowSet.has(position.rowNo)) { + rowElementList.push(elementList[p]); + } + } + return rowElementList; + } + getRangeParagraph() { + const { startIndex, endIndex } = this.range; + if (!~startIndex && !~endIndex) + return null; + const positionList = this.position.getPositionList(); + const elementList = this.draw.getElementList(); + const rangeRow = /* @__PURE__ */ new Map(); + let start = startIndex; + while (start >= 0) { + const { pageNo, rowNo } = positionList[start]; + let rowArray = rangeRow.get(pageNo); + if (!rowArray) { + rowArray = []; + rangeRow.set(pageNo, rowArray); + } + if (!rowArray.includes(rowNo)) { + rowArray.unshift(rowNo); + } + const element = elementList[start]; + const preElement = elementList[start - 1]; + if (element.value === ZERO && !element.listWrap || element.listId !== (preElement == null ? void 0 : preElement.listId) || element.titleId !== (preElement == null ? void 0 : preElement.titleId)) { + break; + } + start--; + } + const isCollapsed = startIndex === endIndex; + if (!isCollapsed) { + let middle = startIndex + 1; + while (middle < endIndex) { + const { pageNo, rowNo } = positionList[middle]; + let rowArray = rangeRow.get(pageNo); + if (!rowArray) { + rowArray = []; + rangeRow.set(pageNo, rowArray); + } + if (!rowArray.includes(rowNo)) { + rowArray.push(rowNo); + } + middle++; + } + } + let end = endIndex; + if (isCollapsed && elementList[startIndex].value === ZERO) { + end += 1; + } + while (end < positionList.length) { + const element = elementList[end]; + const nextElement = elementList[end + 1]; + if (element.value === ZERO && !element.listWrap || element.listId !== (nextElement == null ? void 0 : nextElement.listId) || element.titleId !== (nextElement == null ? void 0 : nextElement.titleId)) { + break; + } + const { pageNo, rowNo } = positionList[end]; + let rowArray = rangeRow.get(pageNo); + if (!rowArray) { + rowArray = []; + rangeRow.set(pageNo, rowArray); + } + if (!rowArray.includes(rowNo)) { + rowArray.push(rowNo); + } + end++; + } + return rangeRow; + } + getRangeParagraphInfo() { + const { startIndex, endIndex } = this.range; + if (!~startIndex && !~endIndex) + return null; + let startPositionIndex = -1; + const rangeElementList = []; + const rangeRow = this.getRangeParagraph(); + if (!rangeRow) + return null; + const elementList = this.draw.getElementList(); + const positionList = this.position.getPositionList(); + for (let p = 0; p < positionList.length; p++) { + const position = positionList[p]; + const rowArray = rangeRow.get(position.pageNo); + if (!rowArray) + continue; + if (rowArray.includes(position.rowNo)) { + if (!~startPositionIndex) { + startPositionIndex = position.index; + } + rangeElementList.push(elementList[p]); + } + } + if (!rangeElementList.length) + return null; + return { + elementList: rangeElementList, + startIndex: startPositionIndex + }; + } + getRangeParagraphElementList() { + var _a; + return ((_a = this.getRangeParagraphInfo()) == null ? void 0 : _a.elementList) || null; + } + getRangeTableElement() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return null; + const originalElementList = this.draw.getOriginalElementList(); + return originalElementList[positionContext.index]; + } + getIsSelectAll() { + const elementList = this.draw.getElementList(); + const { startIndex, endIndex } = this.range; + return startIndex === 0 && elementList.length - 1 === endIndex && !this.position.getPositionContext().isTable; + } + getIsPointInRange(x, y) { + const { startIndex, endIndex } = this.range; + const positionList = this.position.getPositionList(); + for (let p = startIndex + 1; p <= endIndex; p++) { + const position = positionList[p]; + if (!position) + break; + const { coordinate: { leftTop, rightBottom } } = positionList[p]; + if (x >= leftTop[0] && x <= rightBottom[0] && y >= leftTop[1] && y <= rightBottom[1]) { + return true; + } + } + return false; + } + getKeywordRangeList(payload) { + const searchMatchList = this.draw.getSearch().getMatchList(payload, this.draw.getOriginalElementList()); + const searchRangeMap = /* @__PURE__ */ new Map(); + for (const searchMatch of searchMatchList) { + const searchRange = searchRangeMap.get(searchMatch.groupId); + if (searchRange) { + searchRange.endIndex += 1; + } else { + const { type, groupId, tableId, index: index2, tdIndex, trIndex } = searchMatch; + const range = { + startIndex: index2 - 1, + endIndex: index2 + }; + if (type === EditorContext.TABLE) { + range.tableId = tableId; + range.startTdIndex = tdIndex; + range.endTdIndex = tdIndex; + range.startTrIndex = trIndex; + range.endTrIndex = trIndex; + } + searchRangeMap.set(groupId, range); + } + } + const rangeList = []; + searchRangeMap.forEach((searchRange) => { + rangeList.push(searchRange); + }); + return rangeList; + } + getIsCanInput() { + const { startIndex, endIndex } = this.getRange(); + if (!~startIndex && !~endIndex) + return false; + if (startIndex === endIndex) + return true; + const elementList = this.draw.getElementList(); + const startElement = elementList[startIndex]; + const endElement = elementList[endIndex]; + return !startElement.controlId && !endElement.controlId || (!startElement.controlId || startElement.controlComponent === ControlComponent.POSTFIX) && (!endElement.controlId || endElement.controlComponent === ControlComponent.POSTFIX) || !!startElement.controlId && endElement.controlId === startElement.controlId && endElement.controlComponent !== ControlComponent.POSTFIX; + } + setRange(startIndex, endIndex, tableId, startTdIndex, endTdIndex, startTrIndex, endTrIndex) { + this.range.startIndex = startIndex; + this.range.endIndex = endIndex; + this.range.tableId = tableId; + this.range.startTdIndex = startTdIndex; + this.range.endTdIndex = endTdIndex; + this.range.startTrIndex = startTrIndex; + this.range.endTrIndex = endTrIndex; + this.range.isCrossRowCol = !!(startTdIndex || endTdIndex || startTrIndex || endTrIndex); + this.range.zone = this.draw.getZone().getZone(); + const control = this.draw.getControl(); + if (~startIndex && ~endIndex) { + const elementList = this.draw.getElementList(); + const element = elementList[startIndex]; + if (element == null ? void 0 : element.controlId) { + control.initControl(); + return; + } + } + control.destroyControl(); + } + replaceRange(range) { + this.setRange(range.startIndex, range.endIndex, range.tableId, range.startTdIndex, range.endTdIndex, range.startTrIndex, range.endTrIndex); + } + setRangeStyle() { + var _a, _b; + const rangeStyleChangeListener = this.listener.rangeStyleChange; + const isSubscribeRangeStyleChange = this.eventBus.isSubscribe("rangeStyleChange"); + if (!rangeStyleChangeListener && !isSubscribeRangeStyleChange) + return; + const { startIndex, endIndex, isCrossRowCol } = this.range; + if (!~startIndex && !~endIndex) + return; + let curElement; + if (isCrossRowCol) { + const originalElementList = this.draw.getOriginalElementList(); + const positionContext = this.position.getPositionContext(); + curElement = originalElementList[positionContext.index]; + } else { + const index2 = ~endIndex ? endIndex : 0; + const elementList = this.draw.getElementList(); + curElement = getAnchorElement(elementList, index2); + } + if (!curElement) + return; + const curElementList = this.getSelection() || [curElement]; + const type = curElement.type || ElementType.TEXT; + const font = curElement.font || this.options.defaultFont; + const size = curElement.size || this.options.defaultSize; + const bold = !~curElementList.findIndex((el) => !el.bold); + const italic = !~curElementList.findIndex((el) => !el.italic); + const underline = !~curElementList.findIndex((el) => { + var _a2; + return !el.underline && !((_a2 = el.control) == null ? void 0 : _a2.underline); + }); + const strikeout = !~curElementList.findIndex((el) => !el.strikeout); + const color = curElement.color || null; + const highlight = curElement.highlight || null; + const rowFlex = curElement.rowFlex || null; + const rowMargin = (_a = curElement.rowMargin) != null ? _a : this.options.defaultRowMargin; + const dashArray = curElement.dashArray || []; + const level = curElement.level || null; + const listType = curElement.listType || null; + const listStyle = curElement.listStyle || null; + const textDecoration = underline ? curElement.textDecoration || null : null; + const painter = !!this.draw.getPainterStyle(); + const undo = this.historyManager.isCanUndo(); + const redo = this.historyManager.isCanRedo(); + const groupIds = curElement.groupIds || null; + const extension = (_b = curElement.extension) != null ? _b : null; + const rangeStyle = { + type, + undo, + redo, + painter, + font, + size, + bold, + italic, + underline, + strikeout, + color, + highlight, + rowFlex, + rowMargin, + dashArray, + level, + listType, + listStyle, + groupIds, + textDecoration, + extension + }; + if (rangeStyleChangeListener) { + rangeStyleChangeListener(rangeStyle); + } + if (isSubscribeRangeStyleChange) { + this.eventBus.emit("rangeStyleChange", rangeStyle); + } + } + recoveryRangeStyle() { + const rangeStyleChangeListener = this.listener.rangeStyleChange; + const isSubscribeRangeStyleChange = this.eventBus.isSubscribe("rangeStyleChange"); + if (!rangeStyleChangeListener && !isSubscribeRangeStyleChange) + return; + const font = this.options.defaultFont; + const size = this.options.defaultSize; + const rowMargin = this.options.defaultRowMargin; + const painter = !!this.draw.getPainterStyle(); + const undo = this.historyManager.isCanUndo(); + const redo = this.historyManager.isCanRedo(); + const rangeStyle = { + type: null, + undo, + redo, + painter, + font, + size, + bold: false, + italic: false, + underline: false, + strikeout: false, + color: null, + highlight: null, + rowFlex: null, + rowMargin, + dashArray: [], + level: null, + listType: null, + listStyle: null, + groupIds: null, + textDecoration: null, + extension: null + }; + if (rangeStyleChangeListener) { + rangeStyleChangeListener(rangeStyle); + } + if (isSubscribeRangeStyleChange) { + this.eventBus.emit("rangeStyleChange", rangeStyle); + } + } + shrinkBoundary(context = {}) { + const elementList = context.elementList || this.draw.getElementList(); + const range = context.range || this.getRange(); + const { startIndex, endIndex } = range; + if (!~startIndex && !~endIndex) + return; + const startElement = elementList[startIndex]; + const endElement = elementList[endIndex]; + if (startIndex === endIndex) { + if (startElement.controlComponent === ControlComponent.PLACEHOLDER) { + let index2 = startIndex - 1; + while (index2 > 0) { + const preElement = elementList[index2]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + range.startIndex = index2; + range.endIndex = index2; + break; + } + index2--; + } + } + } else { + if (startElement.controlComponent === ControlComponent.PLACEHOLDER || endElement.controlComponent === ControlComponent.PLACEHOLDER) { + let index2 = endIndex - 1; + while (index2 > 0) { + const preElement = elementList[index2]; + if (preElement.controlId !== endElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + range.startIndex = index2; + range.endIndex = index2; + return; + } + index2--; + } + } + if (startElement.controlComponent === ControlComponent.PREFIX) { + let index2 = startIndex + 1; + while (index2 < elementList.length) { + const nextElement = elementList[index2]; + if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.VALUE) { + range.startIndex = index2 - 1; + break; + } else if (nextElement.controlComponent === ControlComponent.PLACEHOLDER) { + range.startIndex = index2 - 1; + range.endIndex = index2 - 1; + return; + } + index2++; + } + } + if (endElement.controlComponent !== ControlComponent.VALUE) { + let index2 = startIndex - 1; + while (index2 > 0) { + const preElement = elementList[index2]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.VALUE) { + range.startIndex = index2; + break; + } else if (preElement.controlComponent === ControlComponent.PLACEHOLDER) { + range.startIndex = index2; + range.endIndex = index2; + return; + } + index2--; + } + } + } + } + render(ctx, x, y, width, height) { + ctx.save(); + ctx.globalAlpha = this.options.rangeAlpha; + ctx.fillStyle = this.options.rangeColor; + ctx.fillRect(x, y, width, height); + ctx.restore(); + } + toString() { + const selection = this.getTextLikeSelection(); + if (!selection) + return ""; + return selection.map((s) => s.value).join("").replace(new RegExp(ZERO, "g"), ""); + } +} +class Background { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.imageCache = /* @__PURE__ */ new Map(); + } + _renderBackgroundColor(ctx, color, width, height) { + ctx.save(); + ctx.fillStyle = color; + ctx.fillRect(0, 0, width, height); + ctx.restore(); + } + _drawImage(ctx, imageElement, width, height) { + const { background, scale } = this.options; + if (background.size === BackgroundSize.CONTAIN) { + const imageWidth = imageElement.width * scale; + const imageHeight = imageElement.height * scale; + if (!background.repeat || background.repeat === BackgroundRepeat.NO_REPEAT) { + ctx.drawImage(imageElement, 0, 0, imageWidth, imageHeight); + } else { + let startX = 0; + let startY = 0; + const repeatXCount = background.repeat === BackgroundRepeat.REPEAT || background.repeat === BackgroundRepeat.REPEAT_X ? Math.ceil(width * scale / imageWidth) : 1; + const repeatYCount = background.repeat === BackgroundRepeat.REPEAT || background.repeat === BackgroundRepeat.REPEAT_Y ? Math.ceil(height * scale / imageHeight) : 1; + for (let x = 0; x < repeatXCount; x++) { + for (let y = 0; y < repeatYCount; y++) { + ctx.drawImage(imageElement, startX, startY, imageWidth, imageHeight); + startY += imageHeight; + } + startY = 0; + startX += imageWidth; + } + } + } else { + ctx.drawImage(imageElement, 0, 0, width * scale, height * scale); + } + } + _renderBackgroundImage(ctx, width, height) { + const { background } = this.options; + const imageElementCache = this.imageCache.get(background.image); + if (imageElementCache) { + this._drawImage(ctx, imageElementCache, width, height); + } else { + const img = new Image(); + img.setAttribute("crossOrigin", "Anonymous"); + img.src = background.image; + img.onload = () => { + this.imageCache.set(background.image, img); + this._drawImage(ctx, img, width, height); + this.draw.render({ + isCompute: false, + isSubmitHistory: false + }); + }; + } + } + render(ctx, pageNo) { + const { background: { image, color, applyPageNumbers } } = this.options; + if (image && (!(applyPageNumbers == null ? void 0 : applyPageNumbers.length) || applyPageNumbers.includes(pageNo))) { + const { width, height } = this.options; + this._renderBackgroundImage(ctx, width, height); + } else { + const width = this.draw.getCanvasWidth(pageNo); + const height = this.draw.getCanvasHeight(pageNo); + this._renderBackgroundColor(ctx, color, width, height); + } + } +} +class AbstractRichText { + constructor() { + this.fillRect = this.clearFillInfo(); + } + clearFillInfo() { + this.fillColor = void 0; + this.fillDecorationStyle = void 0; + this.fillRect = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + return this.fillRect; + } + recordFillInfo(ctx, x, y, width, height, color, decorationStyle) { + const isFirstRecord = !this.fillRect.width; + if (!isFirstRecord && (this.fillColor !== color || this.fillDecorationStyle !== decorationStyle)) { + this.render(ctx); + this.clearFillInfo(); + this.recordFillInfo(ctx, x, y, width, height, color, decorationStyle); + return; + } + if (isFirstRecord) { + this.fillRect.x = x; + this.fillRect.y = y; + } + if (height && this.fillRect.height < height) { + this.fillRect.height = height; + } + this.fillRect.width += width; + this.fillColor = color; + this.fillDecorationStyle = decorationStyle; + } +} +class Highlight extends AbstractRichText { + constructor(draw) { + super(); + this.options = draw.getOptions(); + } + render(ctx) { + if (!this.fillRect.width) + return; + const { highlightAlpha } = this.options; + const { x, y, width, height } = this.fillRect; + ctx.save(); + ctx.globalAlpha = highlightAlpha; + ctx.fillStyle = this.fillColor; + ctx.fillRect(x, y, width, height); + ctx.restore(); + this.clearFillInfo(); + } +} +class Margin { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + } + render(ctx, pageNo) { + const { marginIndicatorColor, pageMode } = this.options; + const width = this.draw.getWidth(); + const height = pageMode === PageMode.CONTINUITY ? this.draw.getCanvasHeight(pageNo) : this.draw.getHeight(); + const margins = this.draw.getMargins(); + const marginIndicatorSize = this.draw.getMarginIndicatorSize(); + ctx.save(); + ctx.translate(0.5, 0.5); + ctx.strokeStyle = marginIndicatorColor; + ctx.beginPath(); + const leftTopPoint = [margins[3], margins[0]]; + const rightTopPoint = [width - margins[1], margins[0]]; + const leftBottomPoint = [margins[3], height - margins[2]]; + const rightBottomPoint = [ + width - margins[1], + height - margins[2] + ]; + ctx.moveTo(leftTopPoint[0] - marginIndicatorSize, leftTopPoint[1]); + ctx.lineTo(...leftTopPoint); + ctx.lineTo(leftTopPoint[0], leftTopPoint[1] - marginIndicatorSize); + ctx.moveTo(rightTopPoint[0] + marginIndicatorSize, rightTopPoint[1]); + ctx.lineTo(...rightTopPoint); + ctx.lineTo(rightTopPoint[0], rightTopPoint[1] - marginIndicatorSize); + ctx.moveTo(leftBottomPoint[0] - marginIndicatorSize, leftBottomPoint[1]); + ctx.lineTo(...leftBottomPoint); + ctx.lineTo(leftBottomPoint[0], leftBottomPoint[1] + marginIndicatorSize); + ctx.moveTo(rightBottomPoint[0] + marginIndicatorSize, rightBottomPoint[1]); + ctx.lineTo(...rightBottomPoint); + ctx.lineTo(rightBottomPoint[0], rightBottomPoint[1] + marginIndicatorSize); + ctx.stroke(); + ctx.restore(); + } +} +class Search { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.position = draw.getPosition(); + this.searchNavigateIndex = null; + this.searchKeyword = null; + this.searchMatchList = []; + } + getSearchKeyword() { + return this.searchKeyword; + } + setSearchKeyword(payload) { + this.searchKeyword = payload; + this.searchNavigateIndex = null; + } + searchNavigatePre() { + if (!this.searchMatchList.length || !this.searchKeyword) + return null; + if (this.searchNavigateIndex === null) { + this.searchNavigateIndex = 0; + } else { + let index2 = this.searchNavigateIndex - 1; + let isExistPre = false; + const searchNavigateId = this.searchMatchList[this.searchNavigateIndex].groupId; + while (index2 >= 0) { + const match = this.searchMatchList[index2]; + if (searchNavigateId !== match.groupId) { + isExistPre = true; + this.searchNavigateIndex = index2 - (this.searchKeyword.length - 1); + break; + } + index2--; + } + if (!isExistPre) { + const lastSearchMatch = this.searchMatchList[this.searchMatchList.length - 1]; + if (lastSearchMatch.groupId === searchNavigateId) + return null; + this.searchNavigateIndex = this.searchMatchList.length - 1 - (this.searchKeyword.length - 1); + } + } + return this.searchNavigateIndex; + } + searchNavigateNext() { + if (!this.searchMatchList.length || !this.searchKeyword) + return null; + if (this.searchNavigateIndex === null) { + this.searchNavigateIndex = 0; + } else { + let index2 = this.searchNavigateIndex + 1; + let isExistNext = false; + const searchNavigateId = this.searchMatchList[this.searchNavigateIndex].groupId; + while (index2 < this.searchMatchList.length) { + const match = this.searchMatchList[index2]; + if (searchNavigateId !== match.groupId) { + isExistNext = true; + this.searchNavigateIndex = index2; + break; + } + index2++; + } + if (!isExistNext) { + const firstSearchMatch = this.searchMatchList[0]; + if (firstSearchMatch.groupId === searchNavigateId) + return null; + this.searchNavigateIndex = 0; + } + } + return this.searchNavigateIndex; + } + searchNavigateScrollIntoView(position) { + const { coordinate: { leftTop, leftBottom, rightTop }, pageNo } = position; + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const preY = pageNo * (height + pageGap); + const anchor = document.createElement("div"); + anchor.style.position = "absolute"; + const ANCHOR_OVERFLOW_SIZE = 50; + anchor.style.width = `${rightTop[0] - leftTop[0] + ANCHOR_OVERFLOW_SIZE}px`; + anchor.style.height = `${leftBottom[1] - leftTop[1] + ANCHOR_OVERFLOW_SIZE}px`; + anchor.style.left = `${leftTop[0]}px`; + anchor.style.top = `${leftTop[1] + preY}px`; + this.draw.getContainer().append(anchor); + anchor.scrollIntoView(false); + anchor.remove(); + } + getSearchNavigateIndexList() { + if (this.searchNavigateIndex === null || !this.searchKeyword) + return []; + return new Array(this.searchKeyword.length).fill(this.searchNavigateIndex).map((navigate, index2) => navigate + index2); + } + getSearchMatchList() { + return this.searchMatchList; + } + getSearchNavigateInfo() { + if (!this.searchKeyword || !this.searchMatchList.length) + return null; + const index2 = this.searchNavigateIndex !== null ? this.searchNavigateIndex / this.searchKeyword.length + 1 : 0; + let count = 0; + let groupId = null; + for (let s = 0; s < this.searchMatchList.length; s++) { + const match = this.searchMatchList[s]; + if (groupId === match.groupId) + continue; + groupId = match.groupId; + count += 1; + } + return { + index: index2, + count + }; + } + getMatchList(payload, originalElementList) { + const keyword = payload.toLocaleLowerCase(); + const searchMatchList = []; + const elementListGroup = []; + const originalElementListLength = originalElementList.length; + const tableIndexList = []; + for (let e = 0; e < originalElementListLength; e++) { + const element = originalElementList[e]; + if (element.type === ElementType.TABLE) { + tableIndexList.push(e); + } + } + let i = 0; + let elementIndex = 0; + while (elementIndex < originalElementListLength - 1) { + const endIndex = tableIndexList.length ? tableIndexList[i] : originalElementListLength; + const pageElement = originalElementList.slice(elementIndex, endIndex); + if (pageElement.length) { + elementListGroup.push({ + index: elementIndex, + type: EditorContext.PAGE, + elementList: pageElement + }); + } + const tableElement = originalElementList[endIndex]; + if (tableElement) { + elementListGroup.push({ + index: endIndex, + type: EditorContext.TABLE, + elementList: [tableElement] + }); + } + elementIndex = endIndex + 1; + i++; + } + function searchClosure(payload2, type, elementList, restArgs) { + if (!payload2) + return; + const text = elementList.map((e) => !e.type || TEXTLIKE_ELEMENT_TYPE.includes(e.type) && e.controlComponent !== ControlComponent.CHECKBOX ? e.value : ZERO).filter(Boolean).join("").toLocaleLowerCase(); + const matchStartIndexList = []; + let index2 = text.indexOf(payload2); + while (index2 !== -1) { + matchStartIndexList.push(index2); + index2 = text.indexOf(payload2, index2 + payload2.length); + } + for (let m = 0; m < matchStartIndexList.length; m++) { + const startIndex = matchStartIndexList[m]; + const groupId = getUUID(); + for (let i2 = 0; i2 < payload2.length; i2++) { + const index22 = startIndex + i2 + ((restArgs == null ? void 0 : restArgs.startIndex) || 0); + searchMatchList.push({ + type, + index: index22, + groupId, + ...restArgs + }); + } + } + } + for (let e = 0; e < elementListGroup.length; e++) { + const group2 = elementListGroup[e]; + if (group2.type === EditorContext.TABLE) { + const tableElement = group2.elementList[0]; + for (let t = 0; t < tableElement.trList.length; t++) { + const tr = tableElement.trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const restArgs = { + tableId: tableElement.id, + tableIndex: group2.index, + trIndex: t, + tdIndex: d, + tdId: td.id + }; + searchClosure(keyword, group2.type, td.value, restArgs); + } + } + } else { + searchClosure(keyword, group2.type, group2.elementList, { + startIndex: group2.index + }); + } + } + return searchMatchList; + } + compute(payload) { + this.searchMatchList = this.getMatchList(payload, this.draw.getOriginalElementList()); + } + render(ctx, pageIndex) { + var _a, _b; + if (!this.searchMatchList || !this.searchMatchList.length || !this.searchKeyword) { + return; + } + const { searchMatchAlpha, searchMatchColor, searchNavigateMatchColor } = this.options; + const positionList = this.position.getOriginalPositionList(); + const elementList = this.draw.getOriginalElementList(); + ctx.save(); + ctx.globalAlpha = searchMatchAlpha; + for (let s = 0; s < this.searchMatchList.length; s++) { + const searchMatch = this.searchMatchList[s]; + let position = null; + if (searchMatch.type === EditorContext.TABLE) { + const { tableIndex, trIndex, tdIndex, index: index2 } = searchMatch; + position = (_b = (_a = elementList[tableIndex]) == null ? void 0 : _a.trList[trIndex].tdList[tdIndex]) == null ? void 0 : _b.positionList[index2]; + } else { + position = positionList[searchMatch.index]; + } + if (!position) + continue; + const { coordinate: { leftTop, leftBottom, rightTop }, pageNo } = position; + if (pageNo !== pageIndex) + continue; + const searchMatchIndexList = this.getSearchNavigateIndexList(); + if (searchMatchIndexList.includes(s)) { + ctx.fillStyle = searchNavigateMatchColor; + const preSearchMatch = this.searchMatchList[s - 1]; + if (!preSearchMatch || preSearchMatch.groupId !== searchMatch.groupId) { + this.searchNavigateScrollIntoView(position); + } + } else { + ctx.fillStyle = searchMatchColor; + } + const x = leftTop[0]; + const y = leftTop[1]; + const width = rightTop[0] - leftTop[0]; + const height = leftBottom[1] - leftTop[1]; + ctx.fillRect(x, y, width, height); + } + ctx.restore(); + } +} +class Strikeout extends AbstractRichText { + constructor(draw) { + super(); + this.options = draw.getOptions(); + } + render(ctx) { + if (!this.fillRect.width) + return; + const { scale, strikeoutColor } = this.options; + const { x, y, width } = this.fillRect; + ctx.save(); + ctx.lineWidth = scale; + ctx.strokeStyle = strikeoutColor; + const adjustY = y + 0.5; + ctx.beginPath(); + ctx.moveTo(x, adjustY); + ctx.lineTo(x + width, adjustY); + ctx.stroke(); + ctx.restore(); + this.clearFillInfo(); + } +} +var TextDecorationStyle; +(function(TextDecorationStyle2) { + TextDecorationStyle2["SOLID"] = "solid"; + TextDecorationStyle2["DOUBLE"] = "double"; + TextDecorationStyle2["DASHED"] = "dashed"; + TextDecorationStyle2["DOTTED"] = "dotted"; + TextDecorationStyle2["WAVY"] = "wavy"; +})(TextDecorationStyle || (TextDecorationStyle = {})); +var DashType; +(function(DashType2) { + DashType2["SOLID"] = "solid"; + DashType2["DASHED"] = "dashed"; + DashType2["DOTTED"] = "dotted"; +})(DashType || (DashType = {})); +class Underline extends AbstractRichText { + constructor(draw) { + super(); + this.options = draw.getOptions(); + } + _drawLine(ctx, startX, startY, width, dashType) { + const endX = startX + width; + ctx.beginPath(); + switch (dashType) { + case DashType.DASHED: + ctx.setLineDash([3, 1]); + break; + case DashType.DOTTED: + ctx.setLineDash([1, 1]); + break; + } + ctx.moveTo(startX, startY); + ctx.lineTo(endX, startY); + ctx.stroke(); + } + _drawDouble(ctx, startX, startY, width) { + const SPACING = 3; + const endX = startX + width; + const endY = startY + SPACING * this.options.scale; + ctx.beginPath(); + ctx.moveTo(startX, startY); + ctx.lineTo(endX, startY); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(startX, endY); + ctx.lineTo(endX, endY); + ctx.stroke(); + } + _drawWave(ctx, startX, startY, width) { + const { scale } = this.options; + const AMPLITUDE = 1.2 * scale; + const FREQUENCY = 1 / scale; + const adjustY = startY + 2 * AMPLITUDE; + ctx.beginPath(); + for (let x = 0; x < width; x++) { + const y = AMPLITUDE * Math.sin(FREQUENCY * x); + ctx.lineTo(startX + x, adjustY + y); + } + ctx.stroke(); + } + render(ctx) { + if (!this.fillRect.width) + return; + const { underlineColor, scale } = this.options; + const { x, y, width } = this.fillRect; + ctx.save(); + ctx.strokeStyle = this.fillColor || underlineColor; + ctx.lineWidth = scale; + const adjustY = Math.floor(y + 2 * ctx.lineWidth) + 0.5; + switch (this.fillDecorationStyle) { + case TextDecorationStyle.WAVY: + this._drawWave(ctx, x, adjustY, width); + break; + case TextDecorationStyle.DOUBLE: + this._drawDouble(ctx, x, adjustY, width); + break; + case TextDecorationStyle.DASHED: + this._drawLine(ctx, x, adjustY, width, DashType.DASHED); + break; + case TextDecorationStyle.DOTTED: + this._drawLine(ctx, x, adjustY, width, DashType.DOTTED); + break; + default: + this._drawLine(ctx, x, adjustY, width); + break; + } + ctx.restore(); + this.clearFillInfo(); + } +} +class TextParticle { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.ctx = draw.getCtx(); + this.curX = -1; + this.curY = -1; + this.text = ""; + this.curStyle = ""; + this.cacheMeasureText = /* @__PURE__ */ new Map(); + } + measureBasisWord(ctx, font) { + ctx.save(); + ctx.font = font; + const textMetrics = this.measureText(ctx, { + value: METRICS_BASIS_TEXT + }); + ctx.restore(); + return textMetrics; + } + measureWord(ctx, elementList, curIndex) { + const LETTER_REG = this.draw.getLetterReg(); + let width = 0; + let endElement = elementList[curIndex]; + let i = curIndex; + while (i < elementList.length) { + const element = elementList[i]; + if (element.type && element.type !== ElementType.TEXT || !LETTER_REG.test(element.value)) { + endElement = element; + break; + } + width += this.measureText(ctx, element).width; + i++; + } + return { + width, + endElement + }; + } + measurePunctuationWidth(ctx, element) { + if (!element || !PUNCTUATION_LIST.includes(element.value)) + return 0; + return this.measureText(ctx, element).width; + } + measureText(ctx, element) { + if (element.width) { + const textMetrics2 = ctx.measureText(element.value); + return { + width: element.width, + actualBoundingBoxAscent: textMetrics2.actualBoundingBoxAscent, + actualBoundingBoxDescent: textMetrics2.actualBoundingBoxDescent, + actualBoundingBoxLeft: textMetrics2.actualBoundingBoxLeft, + actualBoundingBoxRight: textMetrics2.actualBoundingBoxRight, + fontBoundingBoxAscent: textMetrics2.fontBoundingBoxAscent, + fontBoundingBoxDescent: textMetrics2.fontBoundingBoxDescent + }; + } + const id = `${element.value}${ctx.font}`; + const cacheTextMetrics = this.cacheMeasureText.get(id); + if (cacheTextMetrics) { + return cacheTextMetrics; + } + const textMetrics = ctx.measureText(element.value); + this.cacheMeasureText.set(id, textMetrics); + return textMetrics; + } + complete() { + this._render(); + this.text = ""; + } + record(ctx, element, x, y) { + this.ctx = ctx; + if (this.options.renderMode === RenderMode.COMPATIBILITY) { + this._setCurXY(x, y); + this.text = element.value; + this.curStyle = element.style; + this.curColor = element.color; + this.complete(); + return; + } + if (!this.text) { + this._setCurXY(x, y); + } + if (this.curStyle && element.style !== this.curStyle || element.color !== this.curColor) { + this.complete(); + this._setCurXY(x, y); + } + this.text += element.value; + this.curStyle = element.style; + this.curColor = element.color; + } + _setCurXY(x, y) { + this.curX = x; + this.curY = y; + } + _render() { + if (!this.text || !~this.curX || !~this.curX) + return; + this.ctx.save(); + this.ctx.font = this.curStyle; + this.ctx.fillStyle = this.curColor || this.options.defaultColor; + this.ctx.fillText(this.text, this.curX, this.curY); + this.ctx.restore(); + } +} +class PageNumber { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + } + render(ctx, pageNo) { + const { scale, pageMode, pageNumber: { size, font, color, rowFlex, numberType, format, startPageNo, fromPageNo } } = this.options; + if (pageNo < fromPageNo) + return; + let text = format; + const pageNoReg = new RegExp(FORMAT_PLACEHOLDER.PAGE_NO); + if (pageNoReg.test(text)) { + const realPageNo = pageNo + startPageNo - fromPageNo; + const pageNoText = numberType === NumberType.CHINESE ? convertNumberToChinese(realPageNo) : `${realPageNo}`; + text = text.replace(pageNoReg, pageNoText); + } + const pageCountReg = new RegExp(FORMAT_PLACEHOLDER.PAGE_COUNT); + if (pageCountReg.test(text)) { + const pageCount = this.draw.getPageCount() - fromPageNo; + const pageCountText = numberType === NumberType.CHINESE ? convertNumberToChinese(pageCount) : `${pageCount}`; + text = text.replace(pageCountReg, pageCountText); + } + const width = this.draw.getWidth(); + const height = pageMode === PageMode.CONTINUITY ? this.draw.getCanvasHeight(pageNo) : this.draw.getHeight(); + const pageNumberBottom = this.draw.getPageNumberBottom(); + const y = height - pageNumberBottom; + ctx.save(); + ctx.fillStyle = color; + ctx.font = `${size * scale}px ${font}`; + let x = 0; + const margins = this.draw.getMargins(); + const { width: textWidth } = ctx.measureText(text); + if (rowFlex === RowFlex.CENTER) { + x = (width - textWidth) / 2; + } else if (rowFlex === RowFlex.RIGHT) { + x = width - textWidth - margins[1]; + } else { + x = margins[3]; + } + ctx.fillText(text, x, y); + ctx.restore(); + } +} +class ScrollObserver { + constructor(draw) { + this._observer = debounce(() => { + const { intersectionPageNo, visiblePageNoList } = this.getPageVisibleInfo(); + this.draw.setIntersectionPageNo(intersectionPageNo); + this.draw.setVisiblePageNoList(visiblePageNoList); + }, 150); + this.draw = draw; + this.options = draw.getOptions(); + this.scrollContainer = this.getScrollContainer(); + setTimeout(() => { + if (!window.scrollY) { + this._observer(); + } + }); + this._addEvent(); + } + getScrollContainer() { + return this.options.scrollContainerSelector ? document.querySelector(this.options.scrollContainerSelector) || document : document; + } + _addEvent() { + this.scrollContainer.addEventListener("scroll", this._observer); + } + removeEvent() { + this.scrollContainer.removeEventListener("scroll", this._observer); + } + getElementVisibleInfo(element) { + const rect = element.getBoundingClientRect(); + const viewHeight = this.scrollContainer === document ? Math.max(document.documentElement.clientHeight, window.innerHeight) : this.scrollContainer.clientHeight; + const visibleHeight = Math.min(rect.bottom, viewHeight) - Math.max(rect.top, 0); + return { + intersectionHeight: visibleHeight > 0 ? visibleHeight : 0 + }; + } + getPageVisibleInfo() { + const pageList = this.draw.getPageList(); + const visiblePageNoList = []; + let intersectionPageNo = 0; + let intersectionMaxHeight = 0; + for (let i = 0; i < pageList.length; i++) { + const curPage = pageList[i]; + const { intersectionHeight } = this.getElementVisibleInfo(curPage); + if (intersectionMaxHeight && !intersectionHeight) + break; + if (intersectionHeight) { + visiblePageNoList.push(i); + } + if (intersectionHeight > intersectionMaxHeight) { + intersectionMaxHeight = intersectionHeight; + intersectionPageNo = i; + } + } + return { + intersectionPageNo, + visiblePageNoList + }; + } +} +class SelectionObserver { + constructor(draw) { + this.step = 5; + this.thresholdPoints = [70, 40, 10, 20]; + this._mousedown = () => { + this.isMousedown = true; + this.clientWidth = this.selectionContainer instanceof Document ? document.documentElement.clientWidth : this.selectionContainer.clientWidth; + this.clientHeight = this.selectionContainer instanceof Document ? document.documentElement.clientHeight : this.selectionContainer.clientHeight; + if (!(this.selectionContainer instanceof Document)) { + const rect = this.selectionContainer.getBoundingClientRect(); + this.containerRect = rect; + } + }; + this._mouseup = () => { + this.isMousedown = false; + this._stopMove(); + }; + this._mousemove = (evt) => { + if (!this.isMousedown || this.rangeManager.getIsCollapsed()) + return; + let { x, y } = evt; + if (this.containerRect) { + x = x - this.containerRect.x; + y = y - this.containerRect.y; + } + if (y < this.thresholdPoints[0]) { + this._startMove(MoveDirection.UP); + } else if (this.clientHeight - y <= this.thresholdPoints[1]) { + this._startMove(MoveDirection.DOWN); + } else if (x < this.thresholdPoints[2]) { + this._startMove(MoveDirection.LEFT); + } else if (this.clientWidth - x < this.thresholdPoints[3]) { + this._startMove(MoveDirection.RIGHT); + } else { + this._stopMove(); + } + }; + this.rangeManager = draw.getRange(); + const { scrollContainerSelector } = draw.getOptions(); + this.selectionContainer = scrollContainerSelector ? document.querySelector(scrollContainerSelector) || document : document; + this.requestAnimationFrameId = null; + this.isMousedown = false; + this.isMoving = false; + this.clientWidth = 0; + this.clientHeight = 0; + this.containerRect = null; + this._addEvent(); + } + _addEvent() { + const container = this.selectionContainer; + container.addEventListener("mousedown", this._mousedown); + container.addEventListener("mousemove", this._mousemove); + container.addEventListener("mouseup", this._mouseup); + document.addEventListener("mouseleave", this._mouseup); + } + removeEvent() { + const container = this.selectionContainer; + container.removeEventListener("mousedown", this._mousedown); + container.removeEventListener("mousemove", this._mousemove); + container.removeEventListener("mouseup", this._mouseup); + document.removeEventListener("mouseleave", this._mouseup); + } + _move(direction) { + const container = this.selectionContainer instanceof Document ? window : this.selectionContainer; + const x = this.selectionContainer instanceof Document ? window.scrollX : container.scrollLeft; + const y = this.selectionContainer instanceof Document ? window.scrollY : container.scrollTop; + if (direction === MoveDirection.DOWN) { + container.scrollTo(x, y + this.step); + } else if (direction === MoveDirection.UP) { + container.scrollTo(x, y - this.step); + } else if (direction === MoveDirection.LEFT) { + container.scrollTo(x - this.step, y); + } else { + container.scrollTo(x + this.step, y); + } + this.requestAnimationFrameId = window.requestAnimationFrame(this._move.bind(this, direction)); + } + _startMove(direction) { + if (this.isMoving) + return; + this.isMoving = true; + this._move(direction); + } + _stopMove() { + if (this.requestAnimationFrameId) { + window.cancelAnimationFrame(this.requestAnimationFrameId); + this.requestAnimationFrameId = null; + this.isMoving = false; + } + } +} +var TableBorder; +(function(TableBorder2) { + TableBorder2["ALL"] = "all"; + TableBorder2["EMPTY"] = "empty"; + TableBorder2["EXTERNAL"] = "external"; +})(TableBorder || (TableBorder = {})); +var TdBorder; +(function(TdBorder2) { + TdBorder2["TOP"] = "top"; + TdBorder2["RIGHT"] = "right"; + TdBorder2["BOTTOM"] = "bottom"; + TdBorder2["LEFT"] = "left"; +})(TdBorder || (TdBorder = {})); +var TdSlash; +(function(TdSlash2) { + TdSlash2["FORWARD"] = "forward"; + TdSlash2["BACK"] = "back"; +})(TdSlash || (TdSlash = {})); +class TableParticle { + constructor(draw) { + this.draw = draw; + this.range = draw.getRange(); + this.options = draw.getOptions(); + } + getTrListGroupByCol(payload) { + var _a; + const trList = deepClone(payload); + for (let t = 0; t < payload.length; t++) { + const tr = trList[t]; + for (let d = tr.tdList.length - 1; d >= 0; d--) { + const td = tr.tdList[d]; + const { rowspan, rowIndex, colIndex } = td; + const curRowIndex = rowIndex + rowspan - 1; + if (curRowIndex !== d) { + const changeTd = tr.tdList.splice(d, 1)[0]; + (_a = trList[curRowIndex]) == null ? void 0 : _a.tdList.splice(colIndex, 0, changeTd); + } + } + } + return trList; + } + getRangeRowCol() { + const { isTable, index: index2, trIndex, tdIndex } = this.draw.getPosition().getPositionContext(); + if (!isTable) + return null; + const { isCrossRowCol, startTdIndex, endTdIndex, startTrIndex, endTrIndex } = this.range.getRange(); + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const curTrList = element.trList; + if (!isCrossRowCol) { + return [[curTrList[trIndex].tdList[tdIndex]]]; + } + let startTd = curTrList[startTrIndex].tdList[startTdIndex]; + let endTd = curTrList[endTrIndex].tdList[endTdIndex]; + if (startTd.x > endTd.x || startTd.y > endTd.y) { + [startTd, endTd] = [endTd, startTd]; + } + const startColIndex = startTd.colIndex; + const endColIndex = endTd.colIndex + (endTd.colspan - 1); + const startRowIndex = startTd.rowIndex; + const endRowIndex = endTd.rowIndex + (endTd.rowspan - 1); + const rowCol = []; + for (let t = 0; t < curTrList.length; t++) { + const tr = curTrList[t]; + const tdList = []; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const tdColIndex = td.colIndex; + const tdRowIndex = td.rowIndex; + if (tdColIndex >= startColIndex && tdColIndex <= endColIndex && tdRowIndex >= startRowIndex && tdRowIndex <= endRowIndex) { + tdList.push(td); + } + } + if (tdList.length) { + rowCol.push(tdList); + } + } + return rowCol.length ? rowCol : null; + } + _drawOuterBorder(payload) { + const { ctx, startX, startY, width, height, isDrawFullBorder } = payload; + ctx.beginPath(); + const x = Math.round(startX); + const y = Math.round(startY); + ctx.translate(0.5, 0.5); + if (isDrawFullBorder) { + ctx.rect(x, y, width, height); + } else { + ctx.moveTo(x, y + height); + ctx.lineTo(x, y); + ctx.lineTo(x + width, y); + } + ctx.stroke(); + ctx.translate(-0.5, -0.5); + } + _drawSlash(ctx, td, startX, startY) { + var _a, _b; + const { scale } = this.options; + ctx.save(); + const width = td.width * scale; + const height = td.height * scale; + const x = Math.round(td.x * scale + startX); + const y = Math.round(td.y * scale + startY); + if ((_a = td.slashTypes) == null ? void 0 : _a.includes(TdSlash.FORWARD)) { + ctx.moveTo(x + width, y); + ctx.lineTo(x, y + height); + } + if ((_b = td.slashTypes) == null ? void 0 : _b.includes(TdSlash.BACK)) { + ctx.moveTo(x, y); + ctx.lineTo(x + width, y + height); + } + ctx.stroke(); + ctx.restore(); + } + _drawBorder(ctx, element, startX, startY) { + var _a, _b, _c, _d, _e, _f; + const { colgroup, trList, borderType } = element; + if (!colgroup || !trList) + return; + const { scale } = this.options; + const tableWidth = element.width * scale; + const tableHeight = element.height * scale; + const isEmptyBorderType = borderType === TableBorder.EMPTY; + const isExternalBorderType = borderType === TableBorder.EXTERNAL; + ctx.save(); + ctx.lineWidth = scale; + if (!isEmptyBorderType) { + this._drawOuterBorder({ + ctx, + startX, + startY, + width: tableWidth, + height: tableHeight, + isDrawFullBorder: isExternalBorderType + }); + } + for (let t = 0; t < trList.length; t++) { + const tr = trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + if ((_a = td.slashTypes) == null ? void 0 : _a.length) { + this._drawSlash(ctx, td, startX, startY); + } + if (!((_b = td.borderTypes) == null ? void 0 : _b.length) && (isEmptyBorderType || isExternalBorderType)) { + continue; + } + const width = td.width * scale; + const height = td.height * scale; + const x = Math.round(td.x * scale + startX + width); + const y = Math.round(td.y * scale + startY); + ctx.translate(0.5, 0.5); + ctx.beginPath(); + if ((_c = td.borderTypes) == null ? void 0 : _c.includes(TdBorder.TOP)) { + ctx.moveTo(x - width, y); + ctx.lineTo(x, y); + ctx.stroke(); + } + if ((_d = td.borderTypes) == null ? void 0 : _d.includes(TdBorder.RIGHT)) { + ctx.moveTo(x, y); + ctx.lineTo(x, y + height); + ctx.stroke(); + } + if ((_e = td.borderTypes) == null ? void 0 : _e.includes(TdBorder.BOTTOM)) { + ctx.moveTo(x, y + height); + ctx.lineTo(x - width, y + height); + ctx.stroke(); + } + if ((_f = td.borderTypes) == null ? void 0 : _f.includes(TdBorder.LEFT)) { + ctx.moveTo(x - width, y); + ctx.lineTo(x - width, y + height); + ctx.stroke(); + } + if (!isEmptyBorderType && !isExternalBorderType) { + ctx.moveTo(x, y); + ctx.lineTo(x, y + height); + ctx.lineTo(x - width, y + height); + ctx.stroke(); + } + ctx.translate(-0.5, -0.5); + } + } + ctx.restore(); + } + _drawBackgroundColor(ctx, element, startX, startY) { + const { trList } = element; + if (!trList) + return; + const { scale } = this.options; + for (let t = 0; t < trList.length; t++) { + const tr = trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + if (!td.backgroundColor) + continue; + ctx.save(); + const width = td.width * scale; + const height = td.height * scale; + const x = Math.round(td.x * scale + startX); + const y = Math.round(td.y * scale + startY); + ctx.fillStyle = td.backgroundColor; + ctx.fillRect(x, y, width, height); + ctx.restore(); + } + } + } + getTableWidth(element) { + return element.colgroup.reduce((pre, cur) => pre + cur.width, 0); + } + getTableHeight(element) { + const trList = element.trList; + if (!(trList == null ? void 0 : trList.length)) + return 0; + return this.getTdListByColIndex(trList, 0).reduce((pre, cur) => pre + cur.height, 0); + } + getRowCountByColIndex(trList, colIndex) { + return this.getTdListByColIndex(trList, colIndex).reduce((pre, cur) => pre + cur.rowspan, 0); + } + getTdListByColIndex(trList, colIndex) { + const data2 = []; + for (let r = 0; r < trList.length; r++) { + const tdList = trList[r].tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + const min = td.colIndex; + const max = min + td.colspan - 1; + if (colIndex >= min && colIndex <= max) { + data2.push(td); + } + } + } + return data2; + } + computeRowColInfo(element) { + const { colgroup, trList } = element; + if (!colgroup || !trList) + return; + let preX = 0; + for (let t = 0; t < trList.length; t++) { + const tr = trList[t]; + const isLastTr = trList.length - 1 === t; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + let colIndex = 0; + if (trList.length > 1 && t !== 0) { + const preTd = tr.tdList[d - 1]; + const start = preTd ? preTd.colIndex + preTd.colspan : d; + for (let c = start; c < colgroup.length; c++) { + const rowCount = this.getRowCountByColIndex(trList.slice(0, t), c); + if (rowCount === t) { + colIndex = c; + let preColWidth = 0; + for (let preC = 0; preC < c; preC++) { + preColWidth += colgroup[preC].width; + } + preX = preColWidth; + break; + } + } + } else { + const preTd = tr.tdList[d - 1]; + if (preTd) { + colIndex = preTd.colIndex + preTd.colspan; + } + } + let width = 0; + for (let col = 0; col < td.colspan; col++) { + width += colgroup[col + colIndex].width; + } + let height = 0; + for (let row = 0; row < td.rowspan; row++) { + const curTr = trList[row + t] || trList[t]; + height += curTr.height; + } + const isLastRowTd = tr.tdList.length - 1 === d; + let isLastColTd = isLastTr; + if (!isLastColTd) { + if (td.rowspan > 1) { + const nextTrLength = trList.length - 1 - t; + isLastColTd = td.rowspan - 1 === nextTrLength; + } + } + const isLastTd = isLastTr && isLastRowTd; + td.isLastRowTd = isLastRowTd; + td.isLastColTd = isLastColTd; + td.isLastTd = isLastTd; + td.x = preX; + let preY = 0; + for (let preR = 0; preR < t; preR++) { + const preTdList = trList[preR].tdList; + for (let preD = 0; preD < preTdList.length; preD++) { + const td2 = preTdList[preD]; + if (colIndex >= td2.colIndex && colIndex < td2.colIndex + td2.colspan) { + preY += td2.height; + break; + } + } + } + td.y = preY; + td.width = width; + td.height = height; + td.rowIndex = t; + td.colIndex = colIndex; + td.trIndex = t; + td.tdIndex = d; + preX += width; + if (isLastRowTd && !isLastTd) { + preX = 0; + } + } + } + } + drawRange(ctx, element, startX, startY) { + const { scale, rangeAlpha, rangeColor } = this.options; + const { type, trList } = element; + if (!trList || type !== ElementType.TABLE) + return; + const { isCrossRowCol, startTdIndex, endTdIndex, startTrIndex, endTrIndex } = this.range.getRange(); + if (!isCrossRowCol) + return; + let startTd = trList[startTrIndex].tdList[startTdIndex]; + let endTd = trList[endTrIndex].tdList[endTdIndex]; + if (startTd.x > endTd.x || startTd.y > endTd.y) { + [startTd, endTd] = [endTd, startTd]; + } + const startColIndex = startTd.colIndex; + const endColIndex = endTd.colIndex + (endTd.colspan - 1); + const startRowIndex = startTd.rowIndex; + const endRowIndex = endTd.rowIndex + (endTd.rowspan - 1); + ctx.save(); + for (let t = 0; t < trList.length; t++) { + const tr = trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const tdColIndex = td.colIndex; + const tdRowIndex = td.rowIndex; + if (tdColIndex >= startColIndex && tdColIndex <= endColIndex && tdRowIndex >= startRowIndex && tdRowIndex <= endRowIndex) { + const x = td.x * scale; + const y = td.y * scale; + const width = td.width * scale; + const height = td.height * scale; + ctx.globalAlpha = rangeAlpha; + ctx.fillStyle = rangeColor; + ctx.fillRect(x + startX, y + startY, width, height); + } + } + } + ctx.restore(); + } + render(ctx, element, startX, startY) { + this._drawBackgroundColor(ctx, element, startX, startY); + this._drawBorder(ctx, element, startX, startY); + } +} +var TableOrder; +(function(TableOrder2) { + TableOrder2["ROW"] = "row"; + TableOrder2["COL"] = "col"; +})(TableOrder || (TableOrder = {})); +class TableTool { + constructor(draw) { + this.MIN_TD_WIDTH = 20; + this.ROW_COL_OFFSET = 18; + this.ROW_COL_QUICK_WIDTH = 16; + this.ROW_COL_QUICK_OFFSET = 5; + this.ROW_COL_QUICK_POSITION = this.ROW_COL_OFFSET + (this.ROW_COL_OFFSET - this.ROW_COL_QUICK_WIDTH) / 2; + this.BORDER_VALUE = 4; + this.TABLE_SELECT_OFFSET = 20; + this.draw = draw; + this.canvas = draw.getPage(); + this.options = draw.getOptions(); + this.position = draw.getPosition(); + this.container = draw.getContainer(); + this.toolRowContainer = null; + this.toolRowAddBtn = null; + this.toolColAddBtn = null; + this.toolTableSelectBtn = null; + this.toolColContainer = null; + this.toolBorderContainer = null; + this.anchorLine = null; + this.mousedownX = 0; + this.mousedownY = 0; + } + dispose() { + var _a, _b, _c, _d, _e, _f; + (_a = this.toolRowContainer) == null ? void 0 : _a.remove(); + (_b = this.toolRowAddBtn) == null ? void 0 : _b.remove(); + (_c = this.toolColAddBtn) == null ? void 0 : _c.remove(); + (_d = this.toolTableSelectBtn) == null ? void 0 : _d.remove(); + (_e = this.toolColContainer) == null ? void 0 : _e.remove(); + (_f = this.toolBorderContainer) == null ? void 0 : _f.remove(); + this.toolRowContainer = null; + this.toolRowAddBtn = null; + this.toolColAddBtn = null; + this.toolTableSelectBtn = null; + this.toolColContainer = null; + this.toolBorderContainer = null; + } + render() { + const { isTable, index: index2, trIndex, tdIndex } = this.position.getPositionContext(); + if (!isTable) + return; + this.dispose(); + const { scale } = this.options; + const elementList = this.draw.getOriginalElementList(); + const positionList = this.position.getOriginalPositionList(); + const element = elementList[index2]; + const position = positionList[index2]; + const { colgroup, trList } = element; + const { coordinate: { leftTop } } = position; + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const prePageHeight = this.draw.getPageNo() * (height + pageGap); + const tableX = leftTop[0]; + const tableY = leftTop[1] + prePageHeight; + const td = element.trList[trIndex].tdList[tdIndex]; + const rowIndex = td.rowIndex; + const colIndex = td.colIndex; + const tableHeight = element.height * scale; + const tableWidth = element.width * scale; + const tableSelectBtn = document.createElement("div"); + tableSelectBtn.classList.add(`${EDITOR_PREFIX}-table-tool__select`); + tableSelectBtn.style.height = `${tableHeight * scale}`; + tableSelectBtn.style.left = `${tableX}px`; + tableSelectBtn.style.top = `${tableY}px`; + tableSelectBtn.style.transform = `translate(-${this.TABLE_SELECT_OFFSET * scale}px, ${-this.TABLE_SELECT_OFFSET * scale}px)`; + tableSelectBtn.onclick = () => { + this.draw.getTableOperate().tableSelectAll(); + }; + this.container.append(tableSelectBtn); + this.toolTableSelectBtn = tableSelectBtn; + const rowHeightList = trList.map((tr) => tr.height); + const rowContainer = document.createElement("div"); + rowContainer.classList.add(`${EDITOR_PREFIX}-table-tool__row`); + rowContainer.style.transform = `translateX(-${this.ROW_COL_OFFSET * scale}px)`; + for (let r = 0; r < rowHeightList.length; r++) { + const rowHeight = rowHeightList[r] * scale; + const rowItem = document.createElement("div"); + rowItem.classList.add(`${EDITOR_PREFIX}-table-tool__row__item`); + if (r === rowIndex) { + rowItem.classList.add("active"); + } + const rowItemAnchor = document.createElement("div"); + rowItemAnchor.classList.add(`${EDITOR_PREFIX}-table-tool__anchor`); + rowItemAnchor.onmousedown = (evt) => { + this._mousedown({ + evt, + element, + index: r, + order: TableOrder.ROW + }); + }; + rowItem.append(rowItemAnchor); + rowItem.style.height = `${rowHeight}px`; + rowContainer.append(rowItem); + } + rowContainer.style.left = `${tableX}px`; + rowContainer.style.top = `${tableY}px`; + this.container.append(rowContainer); + this.toolRowContainer = rowContainer; + const rowAddBtn = document.createElement("div"); + rowAddBtn.classList.add(`${EDITOR_PREFIX}-table-tool__quick__add`); + rowAddBtn.style.height = `${tableHeight * scale}`; + rowAddBtn.style.left = `${tableX}px`; + rowAddBtn.style.top = `${tableY + tableHeight}px`; + rowAddBtn.style.transform = `translate(-${this.ROW_COL_QUICK_POSITION * scale}px, ${this.ROW_COL_QUICK_OFFSET * scale}px)`; + rowAddBtn.onclick = () => { + this.position.setPositionContext({ + index: index2, + isTable: true, + trIndex: trList.length - 1, + tdIndex: 0 + }); + this.draw.getTableOperate().insertTableBottomRow(); + }; + this.container.append(rowAddBtn); + this.toolRowAddBtn = rowAddBtn; + const colWidthList = colgroup.map((col) => col.width); + const colContainer = document.createElement("div"); + colContainer.classList.add(`${EDITOR_PREFIX}-table-tool__col`); + colContainer.style.transform = `translateY(-${this.ROW_COL_OFFSET * scale}px)`; + for (let c = 0; c < colWidthList.length; c++) { + const colWidth = colWidthList[c] * scale; + const colItem = document.createElement("div"); + colItem.classList.add(`${EDITOR_PREFIX}-table-tool__col__item`); + if (c === colIndex) { + colItem.classList.add("active"); + } + const colItemAnchor = document.createElement("div"); + colItemAnchor.classList.add(`${EDITOR_PREFIX}-table-tool__anchor`); + colItemAnchor.onmousedown = (evt) => { + this._mousedown({ + evt, + element, + index: c, + order: TableOrder.COL + }); + }; + colItem.append(colItemAnchor); + colItem.style.width = `${colWidth}px`; + colContainer.append(colItem); + } + colContainer.style.left = `${tableX}px`; + colContainer.style.top = `${tableY}px`; + this.container.append(colContainer); + this.toolColContainer = colContainer; + const colAddBtn = document.createElement("div"); + colAddBtn.classList.add(`${EDITOR_PREFIX}-table-tool__quick__add`); + colAddBtn.style.height = `${tableHeight * scale}`; + colAddBtn.style.left = `${tableX + tableWidth}px`; + colAddBtn.style.top = `${tableY}px`; + colAddBtn.style.transform = `translate(${this.ROW_COL_QUICK_OFFSET * scale}px, -${this.ROW_COL_QUICK_POSITION * scale}px)`; + colAddBtn.onclick = () => { + this.position.setPositionContext({ + index: index2, + isTable: true, + trIndex: 0, + tdIndex: trList[0].tdList.length - 1 || 0 + }); + this.draw.getTableOperate().insertTableRightCol(); + }; + this.container.append(colAddBtn); + this.toolColAddBtn = colAddBtn; + const borderContainer = document.createElement("div"); + borderContainer.classList.add(`${EDITOR_PREFIX}-table-tool__border`); + borderContainer.style.height = `${tableHeight}px`; + borderContainer.style.width = `${tableWidth}px`; + borderContainer.style.left = `${tableX}px`; + borderContainer.style.top = `${tableY}px`; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td2 = tr.tdList[d]; + const rowBorder = document.createElement("div"); + rowBorder.classList.add(`${EDITOR_PREFIX}-table-tool__border__row`); + rowBorder.style.width = `${td2.width * scale}px`; + rowBorder.style.height = `${this.BORDER_VALUE}px`; + rowBorder.style.top = `${(td2.y + td2.height) * scale - this.BORDER_VALUE / 2}px`; + rowBorder.style.left = `${td2.x * scale}px`; + rowBorder.onmousedown = (evt) => { + this._mousedown({ + evt, + element, + index: td2.rowIndex + td2.rowspan - 1, + order: TableOrder.ROW + }); + }; + borderContainer.appendChild(rowBorder); + const colBorder = document.createElement("div"); + colBorder.classList.add(`${EDITOR_PREFIX}-table-tool__border__col`); + colBorder.style.width = `${this.BORDER_VALUE}px`; + colBorder.style.height = `${td2.height * scale}px`; + colBorder.style.top = `${td2.y * scale}px`; + colBorder.style.left = `${(td2.x + td2.width) * scale - this.BORDER_VALUE / 2}px`; + colBorder.onmousedown = (evt) => { + this._mousedown({ + evt, + element, + index: td2.colIndex + td2.colspan - 1, + order: TableOrder.COL + }); + }; + borderContainer.appendChild(colBorder); + } + } + this.container.append(borderContainer); + this.toolBorderContainer = borderContainer; + } + _mousedown(payload) { + const { evt, index: index2, order, element } = payload; + this.canvas = this.draw.getPage(); + const { scale } = this.options; + const width = this.draw.getWidth(); + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const prePageHeight = this.draw.getPageNo() * (height + pageGap); + this.mousedownX = evt.x; + this.mousedownY = evt.y; + const target = evt.target; + const canvasRect = this.canvas.getBoundingClientRect(); + const cursor = window.getComputedStyle(target).cursor; + document.body.style.cursor = cursor; + this.canvas.style.cursor = cursor; + let startX = 0; + let startY = 0; + const anchorLine = document.createElement("div"); + anchorLine.classList.add(`${EDITOR_PREFIX}-table-anchor__line`); + if (order === TableOrder.ROW) { + anchorLine.classList.add(`${EDITOR_PREFIX}-table-anchor__line__row`); + anchorLine.style.width = `${width}px`; + startX = 0; + startY = prePageHeight + this.mousedownY - canvasRect.top; + } else { + anchorLine.classList.add(`${EDITOR_PREFIX}-table-anchor__line__col`); + anchorLine.style.height = `${height}px`; + startX = this.mousedownX - canvasRect.left; + startY = prePageHeight; + } + anchorLine.style.left = `${startX}px`; + anchorLine.style.top = `${startY}px`; + this.container.append(anchorLine); + this.anchorLine = anchorLine; + let dx = 0; + let dy = 0; + const mousemoveFn = (evt2) => { + const movePosition = this._mousemove(evt2, order, startX, startY); + if (movePosition) { + dx = movePosition.dx; + dy = movePosition.dy; + } + }; + document.addEventListener("mousemove", mousemoveFn); + document.addEventListener("mouseup", () => { + var _a; + let isChangeSize = false; + if (order === TableOrder.ROW) { + const trList = element.trList; + const tr = trList[index2] || trList[index2 - 1]; + const { defaultTrMinHeight } = this.options.table; + if (dy < 0 && tr.height + dy < defaultTrMinHeight) { + dy = defaultTrMinHeight - tr.height; + } + if (dy) { + tr.height += dy; + tr.minHeight = tr.height; + isChangeSize = true; + } + } else { + const { colgroup } = element; + if (colgroup && dx) { + const innerWidth = this.draw.getInnerWidth(); + const curColWidth = colgroup[index2].width; + if (dx < 0 && curColWidth + dx < this.MIN_TD_WIDTH) { + dx = this.MIN_TD_WIDTH - curColWidth; + } + const nextColWidth = (_a = colgroup[index2 + 1]) == null ? void 0 : _a.width; + if (dx > 0 && nextColWidth && nextColWidth - dx < this.MIN_TD_WIDTH) { + dx = nextColWidth - this.MIN_TD_WIDTH; + } + const moveColWidth = curColWidth + dx; + if (index2 === colgroup.length - 1) { + let moveTableWidth = 0; + for (let c = 0; c < colgroup.length; c++) { + const group2 = colgroup[c]; + if (c === index2 + 1) { + moveTableWidth -= dx; + } + if (c === index2) { + moveTableWidth += moveColWidth; + } + if (c !== index2) { + moveTableWidth += group2.width; + } + } + if (moveTableWidth > innerWidth) { + const tableWidth = element.width; + dx = innerWidth - tableWidth; + } + } + if (dx) { + if (colgroup.length - 1 !== index2) { + colgroup[index2 + 1].width -= dx / scale; + } + colgroup[index2].width += dx / scale; + isChangeSize = true; + } + } + } + if (isChangeSize) { + this.draw.render({ isSetCursor: false }); + } + anchorLine.remove(); + document.removeEventListener("mousemove", mousemoveFn); + document.body.style.cursor = ""; + this.canvas.style.cursor = "text"; + }, { + once: true + }); + evt.preventDefault(); + } + _mousemove(evt, tableOrder, startX, startY) { + if (!this.anchorLine) + return null; + const dx = evt.x - this.mousedownX; + const dy = evt.y - this.mousedownY; + if (tableOrder === TableOrder.ROW) { + this.anchorLine.style.top = `${startY + dy}px`; + } else { + this.anchorLine.style.left = `${startX + dx}px`; + } + evt.preventDefault(); + return { dx, dy }; + } +} +class HyperlinkParticle { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.container = draw.getContainer(); + const { hyperlinkPopupContainer, hyperlinkDom } = this._createHyperlinkPopupDom(); + this.hyperlinkDom = hyperlinkDom; + this.hyperlinkPopupContainer = hyperlinkPopupContainer; + } + _createHyperlinkPopupDom() { + const hyperlinkPopupContainer = document.createElement("div"); + hyperlinkPopupContainer.classList.add(`${EDITOR_PREFIX}-hyperlink-popup`); + const hyperlinkDom = document.createElement("a"); + hyperlinkDom.target = "_blank"; + hyperlinkDom.rel = "noopener"; + hyperlinkPopupContainer.append(hyperlinkDom); + this.container.append(hyperlinkPopupContainer); + return { hyperlinkPopupContainer, hyperlinkDom }; + } + drawHyperlinkPopup(element, position) { + const { coordinate: { leftTop: [left2, top] }, lineHeight } = position; + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const preY = this.draw.getPageNo() * (height + pageGap); + this.hyperlinkPopupContainer.style.display = "block"; + this.hyperlinkPopupContainer.style.left = `${left2}px`; + this.hyperlinkPopupContainer.style.top = `${top + preY + lineHeight}px`; + const url = element.url || "#"; + this.hyperlinkDom.href = url; + this.hyperlinkDom.title = url; + this.hyperlinkDom.innerText = url; + } + clearHyperlinkPopup() { + this.hyperlinkPopupContainer.style.display = "none"; + } + openHyperlink(element) { + const newTab = window.open(element.url, "_blank"); + if (newTab) { + newTab.opener = null; + } + } + render(ctx, element, x, y) { + ctx.save(); + ctx.font = element.style; + if (!element.color) { + element.color = this.options.defaultHyperlinkColor; + } + ctx.fillStyle = element.color; + if (element.underline === void 0) { + element.underline = true; + } + ctx.fillText(element.value, x, y); + ctx.restore(); + } +} +class Header { + constructor(draw, data2) { + this.draw = draw; + this.position = draw.getPosition(); + this.options = draw.getOptions(); + this.elementList = data2 || []; + this.rowList = []; + this.positionList = []; + } + getRowList() { + return this.rowList; + } + setElementList(elementList) { + this.elementList = elementList; + } + getElementList() { + return this.elementList; + } + getPositionList() { + return this.positionList; + } + compute() { + this.recovery(); + this._computeRowList(); + this._computePositionList(); + } + recovery() { + this.rowList = []; + this.positionList = []; + } + _computeRowList() { + const innerWidth = this.draw.getInnerWidth(); + const margins = this.draw.getMargins(); + const surroundElementList = pickSurroundElementList(this.elementList); + this.rowList = this.draw.computeRowList({ + startX: margins[3], + startY: this.getHeaderTop(), + innerWidth, + elementList: this.elementList, + surroundElementList + }); + } + _computePositionList() { + const headerTop = this.getHeaderTop(); + const innerWidth = this.draw.getInnerWidth(); + const margins = this.draw.getMargins(); + const startX = margins[3]; + const startY = headerTop; + this.position.computePageRowPosition({ + positionList: this.positionList, + rowList: this.rowList, + pageNo: 0, + startRowIndex: 0, + startIndex: 0, + startX, + startY, + innerWidth, + zone: EditorZone.HEADER + }); + } + getHeaderTop() { + const { header: { top, disabled }, scale } = this.options; + if (disabled) + return 0; + return Math.floor(top * scale); + } + getMaxHeight() { + const { header: { maxHeightRadio } } = this.options; + const height = this.draw.getHeight(); + return Math.floor(height * maxHeightRadioMapping[maxHeightRadio]); + } + getHeight() { + const maxHeight = this.getMaxHeight(); + const rowHeight = this.getRowHeight(); + return rowHeight > maxHeight ? maxHeight : rowHeight; + } + getRowHeight() { + return this.rowList.reduce((pre, cur) => pre + cur.height, 0); + } + getExtraHeight() { + const margins = this.draw.getMargins(); + const headerHeight = this.getHeight(); + const headerTop = this.getHeaderTop(); + const extraHeight = headerTop + headerHeight - margins[0]; + return extraHeight <= 0 ? 0 : extraHeight; + } + render(ctx, pageNo) { + ctx.globalAlpha = 1; + const innerWidth = this.draw.getInnerWidth(); + const maxHeight = this.getMaxHeight(); + const rowList = []; + let curRowHeight = 0; + for (let r = 0; r < this.rowList.length; r++) { + const row = this.rowList[r]; + if (curRowHeight + row.height > maxHeight) { + break; + } + rowList.push(row); + curRowHeight += row.height; + } + this.draw.drawRow(ctx, { + elementList: this.elementList, + positionList: this.positionList, + rowList, + pageNo, + startIndex: 0, + innerWidth, + zone: EditorZone.HEADER + }); + } +} +class SuperscriptParticle { + getOffsetY(element) { + return -element.metrics.height / 2; + } + render(ctx, element, x, y) { + ctx.save(); + ctx.font = element.style; + if (element.color) { + ctx.fillStyle = element.color; + } + ctx.fillText(element.value, x, y + this.getOffsetY(element)); + ctx.restore(); + } +} +class SubscriptParticle { + getOffsetY(element) { + return element.metrics.height / 2; + } + render(ctx, element, x, y) { + ctx.save(); + ctx.font = element.style; + if (element.color) { + ctx.fillStyle = element.color; + } + ctx.fillText(element.value, x, y + this.getOffsetY(element)); + ctx.restore(); + } +} +class SeparatorParticle { + constructor(draw) { + this.options = draw.getOptions(); + } + render(ctx, element, x, y) { + var _a; + ctx.save(); + const { scale, separator: { lineWidth, strokeStyle } } = this.options; + ctx.lineWidth = (element.lineWidth || lineWidth) * scale; + ctx.strokeStyle = element.color || strokeStyle; + if ((_a = element.dashArray) == null ? void 0 : _a.length) { + ctx.setLineDash(element.dashArray); + } + const offsetY = Math.round(y); + ctx.translate(0, ctx.lineWidth / 2); + ctx.beginPath(); + ctx.moveTo(x, offsetY); + ctx.lineTo(x + element.width * scale, offsetY); + ctx.stroke(); + ctx.restore(); + } +} +class PageBreakParticle { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.i18n = draw.getI18n(); + } + render(ctx, element, x, y) { + const { pageBreak: { font, fontSize, lineDash } } = this.options; + const displayName = this.i18n.t("pageBreak.displayName"); + const { scale, defaultRowMargin } = this.options; + const size = fontSize * scale; + const elementWidth = element.width * scale; + const offsetY = this.draw.getDefaultBasicRowMarginHeight() * defaultRowMargin; + ctx.save(); + ctx.font = `${size}px ${font}`; + const textMeasure = ctx.measureText(displayName); + const halfX = (elementWidth - textMeasure.width) / 2; + ctx.setLineDash(lineDash); + ctx.translate(0, 0.5 + offsetY); + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + halfX, y); + ctx.moveTo(x + halfX + textMeasure.width, y); + ctx.lineTo(x + elementWidth, y); + ctx.stroke(); + ctx.fillText(displayName, x + halfX, y + textMeasure.actualBoundingBoxAscent - size / 2); + ctx.restore(); + } +} +class Watermark { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + } + render(ctx) { + const { watermark: { data: data2, opacity, font, size, color, repeat, gap }, scale } = this.options; + const width = this.draw.getWidth(); + const height = this.draw.getHeight(); + ctx.save(); + ctx.globalAlpha = opacity; + ctx.font = `${size * scale}px ${font}`; + const measureText = ctx.measureText(data2); + if (repeat) { + const dpr = this.draw.getPagePixelRatio(); + const temporaryCanvas = document.createElement("canvas"); + const temporaryCtx = temporaryCanvas.getContext("2d"); + const textWidth = measureText.width; + const textHeight = measureText.actualBoundingBoxAscent + measureText.actualBoundingBoxDescent; + const diagonalLength = Math.sqrt(Math.pow(textWidth, 2) + Math.pow(textHeight, 2)); + const patternWidth = diagonalLength + 2 * gap[0] * scale; + const patternHeight = diagonalLength + 2 * gap[1] * scale; + temporaryCanvas.width = patternWidth; + temporaryCanvas.height = patternHeight; + temporaryCanvas.style.width = `${patternWidth * dpr}px`; + temporaryCanvas.style.height = `${patternHeight * dpr}px`; + temporaryCtx.translate(patternWidth / 2, patternHeight / 2); + temporaryCtx.rotate(-45 * Math.PI / 180); + temporaryCtx.translate(-patternWidth / 2, -patternHeight / 2); + temporaryCtx.font = `${size * scale}px ${font}`; + temporaryCtx.fillStyle = color; + temporaryCtx.fillText(data2, (patternWidth - textWidth) / 2, (patternHeight - textHeight) / 2 + measureText.actualBoundingBoxAscent); + const pattern = ctx.createPattern(temporaryCanvas, "repeat"); + if (pattern) { + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, width, height); + } + } else { + const x = width / 2; + const y = height / 2; + ctx.fillStyle = color; + ctx.translate(x, y); + ctx.rotate(-45 * Math.PI / 180); + ctx.fillText(data2, -measureText.width / 2, measureText.actualBoundingBoxAscent - size / 2); + } + ctx.restore(); + } +} +class ControlSearch { + constructor(control) { + this.draw = control.getDraw(); + this.options = this.draw.getOptions(); + this.highlightList = []; + this.highlightMatchResult = []; + } + getHighlightMatchResult() { + return this.highlightMatchResult; + } + getHighlightList() { + return this.highlightList; + } + setHighlightList(payload) { + this.highlightList = payload; + } + computeHighlightList() { + const search = this.draw.getSearch(); + const computeHighlight = (elementList, restArgs) => { + let i = 0; + while (i < elementList.length) { + const element = elementList[i]; + i++; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const restArgs2 = { + tableId: element.id, + tableIndex: i - 1, + trIndex: r, + tdIndex: d, + tdId: td.id + }; + computeHighlight(td.value, restArgs2); + } + } + } + const currentControl = element == null ? void 0 : element.control; + if (!currentControl) + continue; + const highlightIndex = this.highlightList.findIndex((highlight2) => highlight2.id === element.controlId || currentControl.conceptId && currentControl.conceptId === highlight2.conceptId); + if (!~highlightIndex) + continue; + const startIndex = i; + let newEndIndex = i; + while (newEndIndex < elementList.length) { + const nextElement = elementList[newEndIndex]; + if (nextElement.controlId !== element.controlId) + break; + newEndIndex++; + } + i = newEndIndex; + const controlElementList = elementList.slice(startIndex, newEndIndex).map((element2) => element2.controlComponent === ControlComponent.VALUE ? element2 : { value: ZERO }); + const highlight = this.highlightList[highlightIndex]; + const { ruleList } = highlight; + for (let r = 0; r < ruleList.length; r++) { + const rule = ruleList[r]; + const searchResult = search.getMatchList(rule.keyword, controlElementList); + this.highlightMatchResult.push(...searchResult.map((result) => ({ + ...result, + ...rule, + ...restArgs, + index: result.index + startIndex + }))); + } + } + }; + this.highlightMatchResult = []; + computeHighlight(this.draw.getOriginalMainElementList()); + } + renderHighlightList(ctx, pageIndex) { + var _a, _b, _c; + if (!((_a = this.highlightMatchResult) == null ? void 0 : _a.length)) + return; + const { searchMatchAlpha, searchMatchColor } = this.options; + const positionList = this.draw.getPosition().getOriginalPositionList(); + const elementList = this.draw.getOriginalElementList(); + ctx.save(); + for (let s = 0; s < this.highlightMatchResult.length; s++) { + const searchMatch = this.highlightMatchResult[s]; + let position = null; + if (searchMatch.tableId) { + const { tableIndex, trIndex, tdIndex, index: index2 } = searchMatch; + position = (_c = (_b = elementList[tableIndex]) == null ? void 0 : _b.trList[trIndex].tdList[tdIndex]) == null ? void 0 : _c.positionList[index2]; + } else { + position = positionList[searchMatch.index]; + } + if (!position) + continue; + const { coordinate: { leftTop, leftBottom, rightTop }, pageNo } = position; + if (pageNo !== pageIndex) + continue; + ctx.fillStyle = searchMatch.backgroundColor || searchMatchColor; + ctx.globalAlpha = searchMatch.alpha || searchMatchAlpha; + const x = leftTop[0]; + const y = leftTop[1]; + const width = rightTop[0] - leftTop[0]; + const height = leftBottom[1] - leftTop[1]; + ctx.fillRect(x, y, width, height); + } + ctx.restore(); + } +} +class ControlBorder { + constructor(draw) { + this.borderRect = this.clearBorderInfo(); + this.options = draw.getOptions(); + } + clearBorderInfo() { + this.borderRect = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + return this.borderRect; + } + recordBorderInfo(x, y, width, height) { + const isFirstRecord = !this.borderRect.width; + if (isFirstRecord) { + this.borderRect.x = x; + this.borderRect.y = y; + this.borderRect.height = height; + } + this.borderRect.width += width; + } + render(ctx) { + if (!this.borderRect.width) + return; + const { scale, control: { borderWidth, borderColor } } = this.options; + const { x, y, width, height } = this.borderRect; + ctx.save(); + ctx.translate(0, 1 * scale); + ctx.lineWidth = borderWidth * scale; + ctx.strokeStyle = borderColor; + ctx.beginPath(); + ctx.rect(x, y, width, height); + ctx.stroke(); + ctx.restore(); + this.clearBorderInfo(); + } +} +class SelectControl { + constructor(element, control) { + this.options = control.getDraw().getOptions(); + this.element = element; + this.control = control; + this.isPopup = false; + this.selectDom = null; + } + setElement(element) { + this.element = element; + } + getElement() { + return this.element; + } + getIsPopup() { + return this.isPopup; + } + getCode() { + var _a; + return ((_a = this.element.control) == null ? void 0 : _a.code) || null; + } + getValue(context = {}) { + const elementList = context.elementList || this.control.getElementList(); + const { startIndex } = context.range || this.control.getRange(); + const startElement = elementList[startIndex]; + const data2 = []; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + break; + } + if (preElement.controlComponent === ControlComponent.VALUE) { + data2.unshift(preElement); + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) { + break; + } + if (nextElement.controlComponent === ControlComponent.VALUE) { + data2.push(nextElement); + } + nextIndex++; + } + return data2; + } + setValue() { + return -1; + } + keydown(evt) { + if (this.control.getIsDisabledControl()) { + return null; + } + const elementList = this.control.getElementList(); + const range = this.control.getRange(); + this.control.shrinkBoundary(); + const { startIndex, endIndex } = range; + const startElement = elementList[startIndex]; + const endElement = elementList[endIndex]; + if (evt.key === KeyMap.Backspace) { + if (startIndex !== endIndex) { + return this.clearSelect(); + } else { + if (startElement.controlComponent === ControlComponent.PREFIX || endElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) { + return this.control.removeControl(startIndex); + } else { + return this.clearSelect(); + } + } + } else if (evt.key === KeyMap.Delete) { + if (startIndex !== endIndex) { + return this.clearSelect(); + } else { + const endNextElement = elementList[endIndex + 1]; + if (startElement.controlComponent === ControlComponent.PREFIX && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) { + return this.control.removeControl(startIndex); + } else { + return this.clearSelect(); + } + } + } + return endIndex; + } + cut() { + if (this.control.getIsDisabledControl()) { + return -1; + } + this.control.shrinkBoundary(); + const { startIndex, endIndex } = this.control.getRange(); + if (startIndex === endIndex) { + return startIndex; + } + return this.clearSelect(); + } + clearSelect(context = {}, options = {}) { + const { isIgnoreDisabledRule = false, isAddPlaceholder = true } = options; + if (!isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return -1; + } + const elementList = context.elementList || this.control.getElementList(); + const { startIndex } = context.range || this.control.getRange(); + const startElement = elementList[startIndex]; + let leftIndex = -1; + let rightIndex = -1; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + leftIndex = preIndex; + break; + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) { + rightIndex = nextIndex - 1; + break; + } + nextIndex++; + } + if (!~leftIndex || !~rightIndex) + return -1; + const draw = this.control.getDraw(); + draw.spliceElementList(elementList, leftIndex + 1, rightIndex - leftIndex); + if (isAddPlaceholder) { + this.control.addPlaceholder(preIndex, context); + } + this.element.control.code = null; + return preIndex; + } + setSelect(code, context = {}, options = {}) { + if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return; + } + const elementList = context.elementList || this.control.getElementList(); + const range = context.range || this.control.getRange(); + const control = this.element.control; + const oldCode = control.code; + if (code === oldCode) { + this.control.repaintControl({ + curIndex: range.startIndex, + isCompute: false, + isSubmitHistory: false + }); + this.destroy(); + return; + } + const valueSets = control.valueSets; + if (!Array.isArray(valueSets) || !valueSets.length) + return; + const valueSet = valueSets.find((v) => v.code === code); + if (!valueSet) + return; + const valueElement = this.getValue(context)[0]; + const styleElement = valueElement ? pickObject(valueElement, EDITOR_ELEMENT_STYLE_ATTR) : pickObject(elementList[range.startIndex], CONTROL_STYLE_ATTR); + const prefixIndex = this.clearSelect(context, { + isAddPlaceholder: false + }); + if (!~prefixIndex) + return; + if (!oldCode) { + this.control.removePlaceholder(prefixIndex, context); + } + const propertyElement = omitObject(elementList[prefixIndex], EDITOR_ELEMENT_STYLE_ATTR); + const start = prefixIndex + 1; + const data2 = splitText(valueSet.value); + const draw = this.control.getDraw(); + for (let i = 0; i < data2.length; i++) { + const newElement = { + ...styleElement, + ...propertyElement, + type: ElementType.TEXT, + value: data2[i], + controlComponent: ControlComponent.VALUE + }; + formatElementContext(elementList, [newElement], prefixIndex, { + editorOptions: this.options + }); + draw.spliceElementList(elementList, start + i, 0, newElement); + } + control.code = code; + if (!context.range) { + const newIndex = start + data2.length - 1; + this.control.repaintControl({ + curIndex: newIndex + }); + this.destroy(); + } + } + _createSelectPopupDom() { + const control = this.element.control; + const valueSets = control.valueSets; + if (!Array.isArray(valueSets) || !valueSets.length) + return; + const position = this.control.getPosition(); + if (!position) + return; + const selectPopupContainer = document.createElement("div"); + selectPopupContainer.classList.add(`${EDITOR_PREFIX}-select-control-popup`); + selectPopupContainer.setAttribute(EDITOR_COMPONENT, EditorComponent.POPUP); + const ul = document.createElement("ul"); + for (let v = 0; v < valueSets.length; v++) { + const valueSet = valueSets[v]; + const li = document.createElement("li"); + const code = this.getCode(); + if (code === valueSet.code) { + li.classList.add("active"); + } + li.onclick = () => { + this.setSelect(valueSet.code); + }; + li.append(document.createTextNode(valueSet.value)); + ul.append(li); + } + selectPopupContainer.append(ul); + const { coordinate: { leftTop: [left2, top] }, lineHeight } = position; + const preY = this.control.getPreY(); + selectPopupContainer.style.left = `${left2}px`; + selectPopupContainer.style.top = `${top + preY + lineHeight}px`; + const container = this.control.getContainer(); + container.append(selectPopupContainer); + this.selectDom = selectPopupContainer; + } + awake() { + var _a; + if (this.isPopup || this.control.getIsDisabledControl()) + return; + const { startIndex } = this.control.getRange(); + const elementList = this.control.getElementList(); + if (((_a = elementList[startIndex + 1]) == null ? void 0 : _a.controlId) !== this.element.controlId) { + return; + } + this._createSelectPopupDom(); + this.isPopup = true; + } + destroy() { + var _a; + if (!this.isPopup) + return; + (_a = this.selectDom) == null ? void 0 : _a.remove(); + this.isPopup = false; + } +} +class TextControl { + constructor(element, control) { + this.options = control.getDraw().getOptions(); + this.element = element; + this.control = control; + } + setElement(element) { + this.element = element; + } + getElement() { + return this.element; + } + getValue(context = {}) { + const elementList = context.elementList || this.control.getElementList(); + const { startIndex } = context.range || this.control.getRange(); + const startElement = elementList[startIndex]; + const data2 = []; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + break; + } + if (preElement.controlComponent === ControlComponent.VALUE) { + data2.unshift(preElement); + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) { + break; + } + if (nextElement.controlComponent === ControlComponent.VALUE) { + data2.push(nextElement); + } + nextIndex++; + } + return data2; + } + setValue(data2, context = {}, options = {}) { + if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return -1; + } + const elementList = context.elementList || this.control.getElementList(); + const range = context.range || this.control.getRange(); + this.control.shrinkBoundary(context); + const { startIndex, endIndex } = range; + const draw = this.control.getDraw(); + if (startIndex !== endIndex) { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + } else { + this.control.removePlaceholder(startIndex, context); + } + const startElement = elementList[startIndex]; + const anchorElement = startElement.type && !TEXTLIKE_ELEMENT_TYPE.includes(startElement.type) || startElement.controlComponent === ControlComponent.PREFIX ? pickObject(startElement, [ + "control", + "controlId", + ...CONTROL_STYLE_ATTR + ]) : omitObject(startElement, ["type"]); + const start = range.startIndex + 1; + for (let i = 0; i < data2.length; i++) { + const newElement = { + ...anchorElement, + ...data2[i], + controlComponent: ControlComponent.VALUE + }; + formatElementContext(elementList, [newElement], startIndex, { + editorOptions: this.options + }); + draw.spliceElementList(elementList, start + i, 0, newElement); + } + return start + data2.length - 1; + } + clearValue(context = {}, options = {}) { + if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return -1; + } + const elementList = context.elementList || this.control.getElementList(); + const range = context.range || this.control.getRange(); + const { startIndex, endIndex } = range; + this.control.getDraw().spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + const value = this.getValue(context); + if (!value.length) { + this.control.addPlaceholder(startIndex, context); + } + return startIndex; + } + keydown(evt) { + if (this.control.getIsDisabledControl()) { + return null; + } + const elementList = this.control.getElementList(); + const range = this.control.getRange(); + this.control.shrinkBoundary(); + const { startIndex, endIndex } = range; + const startElement = elementList[startIndex]; + const endElement = elementList[endIndex]; + const draw = this.control.getDraw(); + if (evt.key === KeyMap.Backspace) { + if (startIndex !== endIndex) { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex); + } + return startIndex; + } else { + if (startElement.controlComponent === ControlComponent.PREFIX || endElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) { + return this.control.removeControl(startIndex); + } else { + draw.spliceElementList(elementList, startIndex, 1); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex - 1); + } + return startIndex - 1; + } + } + } else if (evt.key === KeyMap.Delete) { + if (startIndex !== endIndex) { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex); + } + return startIndex; + } else { + const endNextElement = elementList[endIndex + 1]; + if (startElement.controlComponent === ControlComponent.PREFIX && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) { + return this.control.removeControl(startIndex); + } else { + draw.spliceElementList(elementList, startIndex + 1, 1); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex); + } + return startIndex; + } + } + } + return endIndex; + } + cut() { + if (this.control.getIsDisabledControl()) { + return -1; + } + this.control.shrinkBoundary(); + const { startIndex, endIndex } = this.control.getRange(); + if (startIndex === endIndex) { + return startIndex; + } + const draw = this.control.getDraw(); + const elementList = this.control.getElementList(); + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex); + } + return startIndex; + } +} +class DatePicker { + constructor(draw, options = {}) { + this.draw = draw; + this.options = options; + this.lang = this._getLang(); + this.now = new Date(); + this.dom = this._createDom(); + this.renderOptions = null; + this.isDatePicker = true; + this.pickDate = null; + this._bindEvent(); + } + _createDom() { + const datePickerContainer = document.createElement("div"); + datePickerContainer.classList.add(`${EDITOR_PREFIX}-date-container`); + datePickerContainer.setAttribute(EDITOR_COMPONENT, EditorComponent.POPUP); + const dateWrap = document.createElement("div"); + dateWrap.classList.add(`${EDITOR_PREFIX}-date-wrap`); + const datePickerTitle = document.createElement("div"); + datePickerTitle.classList.add(`${EDITOR_PREFIX}-date-title`); + const preYearTitle = document.createElement("span"); + preYearTitle.classList.add(`${EDITOR_PREFIX}-date-title__pre-year`); + preYearTitle.innerText = `<<`; + const preMonthTitle = document.createElement("span"); + preMonthTitle.classList.add(`${EDITOR_PREFIX}-date-title__pre-month`); + preMonthTitle.innerText = `<`; + const nowTitle = document.createElement("span"); + nowTitle.classList.add(`${EDITOR_PREFIX}-date-title__now`); + const nextMonthTitle = document.createElement("span"); + nextMonthTitle.classList.add(`${EDITOR_PREFIX}-date-title__next-month`); + nextMonthTitle.innerText = `>`; + const nextYearTitle = document.createElement("span"); + nextYearTitle.classList.add(`${EDITOR_PREFIX}-date-title__next-year`); + nextYearTitle.innerText = `>>`; + datePickerTitle.append(preYearTitle); + datePickerTitle.append(preMonthTitle); + datePickerTitle.append(nowTitle); + datePickerTitle.append(nextMonthTitle); + datePickerTitle.append(nextYearTitle); + const datePickerWeek = document.createElement("div"); + datePickerWeek.classList.add(`${EDITOR_PREFIX}-date-week`); + const { weeks: { sun, mon, tue, wed, thu, fri, sat } } = this.lang; + const weekList = [sun, mon, tue, wed, thu, fri, sat]; + weekList.forEach((week) => { + const weekDom = document.createElement("span"); + weekDom.innerText = `${week}`; + datePickerWeek.append(weekDom); + }); + const datePickerDay = document.createElement("div"); + datePickerDay.classList.add(`${EDITOR_PREFIX}-date-day`); + dateWrap.append(datePickerTitle); + dateWrap.append(datePickerWeek); + dateWrap.append(datePickerDay); + const timeWrap = document.createElement("ul"); + timeWrap.classList.add(`${EDITOR_PREFIX}-time-wrap`); + let hourTime; + let minuteTime; + let secondTime; + const timeList = [this.lang.hour, this.lang.minute, this.lang.second]; + timeList.forEach((t, i) => { + const li = document.createElement("li"); + const timeText = document.createElement("span"); + timeText.innerText = t; + li.append(timeText); + const ol = document.createElement("ol"); + const isHour = i === 0; + const isMinute = i === 1; + const endIndex = isHour ? 24 : 60; + for (let i2 = 0; i2 < endIndex; i2++) { + const time = document.createElement("li"); + time.innerText = `${String(i2).padStart(2, "0")}`; + time.setAttribute("data-id", `${i2}`); + ol.append(time); + } + if (isHour) { + hourTime = ol; + } else if (isMinute) { + minuteTime = ol; + } else { + secondTime = ol; + } + li.append(ol); + timeWrap.append(li); + }); + const datePickerMenu = document.createElement("div"); + datePickerMenu.classList.add(`${EDITOR_PREFIX}-date-menu`); + const timeMenu = document.createElement("button"); + timeMenu.classList.add(`${EDITOR_PREFIX}-date-menu__time`); + timeMenu.innerText = this.lang.timeSelect; + const nowMenu = document.createElement("button"); + nowMenu.classList.add(`${EDITOR_PREFIX}-date-menu__now`); + nowMenu.innerText = this.lang.now; + const submitMenu = document.createElement("button"); + submitMenu.classList.add(`${EDITOR_PREFIX}-date-menu__submit`); + submitMenu.innerText = this.lang.confirm; + datePickerMenu.append(timeMenu); + datePickerMenu.append(nowMenu); + datePickerMenu.append(submitMenu); + datePickerContainer.append(dateWrap); + datePickerContainer.append(timeWrap); + datePickerContainer.append(datePickerMenu); + this.draw.getContainer().append(datePickerContainer); + return { + container: datePickerContainer, + dateWrap, + datePickerWeek, + timeWrap, + title: { + preYear: preYearTitle, + preMonth: preMonthTitle, + now: nowTitle, + nextMonth: nextMonthTitle, + nextYear: nextYearTitle + }, + day: datePickerDay, + time: { + hour: hourTime, + minute: minuteTime, + second: secondTime + }, + menu: { + time: timeMenu, + now: nowMenu, + submit: submitMenu + } + }; + } + _bindEvent() { + this.dom.title.preYear.onclick = () => { + this._preYear(); + }; + this.dom.title.preMonth.onclick = () => { + this._preMonth(); + }; + this.dom.title.nextMonth.onclick = () => { + this._nextMonth(); + }; + this.dom.title.nextYear.onclick = () => { + this._nextYear(); + }; + this.dom.menu.time.onclick = () => { + this.isDatePicker = !this.isDatePicker; + this._toggleDateTimePicker(); + }; + this.dom.menu.now.onclick = () => { + this._now(); + this._submit(); + }; + this.dom.menu.submit.onclick = () => { + this.dispose(); + this._submit(); + }; + this.dom.time.hour.onclick = (evt) => { + if (!this.pickDate) + return; + const li = evt.target; + const id = li.dataset.id; + if (!id) + return; + this.pickDate.setHours(Number(id)); + this._setTimePick(false); + }; + this.dom.time.minute.onclick = (evt) => { + if (!this.pickDate) + return; + const li = evt.target; + const id = li.dataset.id; + if (!id) + return; + this.pickDate.setMinutes(Number(id)); + this._setTimePick(false); + }; + this.dom.time.second.onclick = (evt) => { + if (!this.pickDate) + return; + const li = evt.target; + const id = li.dataset.id; + if (!id) + return; + this.pickDate.setSeconds(Number(id)); + this._setTimePick(false); + }; + } + _setPosition() { + if (!this.renderOptions) + return; + const { position: { coordinate: { leftTop: [left2, top] }, lineHeight, pageNo } } = this.renderOptions; + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const currentPageNo = pageNo != null ? pageNo : this.draw.getPageNo(); + const preY = currentPageNo * (height + pageGap); + this.dom.container.style.left = `${left2}px`; + this.dom.container.style.top = `${top + preY + lineHeight}px`; + } + isInvalidDate(value) { + return value.toDateString() === "Invalid Date"; + } + _setValue() { + var _a; + const value = (_a = this.renderOptions) == null ? void 0 : _a.value; + if (value) { + const setDate = new Date(value); + this.now = this.isInvalidDate(setDate) ? new Date() : setDate; + } else { + this.now = new Date(); + } + this.pickDate = new Date(this.now); + } + _getLang() { + const i18n = this.draw.getI18n(); + const t = i18n.t.bind(i18n); + return { + now: t("datePicker.now"), + confirm: t("datePicker.confirm"), + return: t("datePicker.return"), + timeSelect: t("datePicker.timeSelect"), + weeks: { + sun: t("datePicker.weeks.sun"), + mon: t("datePicker.weeks.mon"), + tue: t("datePicker.weeks.tue"), + wed: t("datePicker.weeks.wed"), + thu: t("datePicker.weeks.thu"), + fri: t("datePicker.weeks.fri"), + sat: t("datePicker.weeks.sat") + }, + year: t("datePicker.year"), + month: t("datePicker.month"), + hour: t("datePicker.hour"), + minute: t("datePicker.minute"), + second: t("datePicker.second") + }; + } + _setLangChange() { + this.dom.menu.time.innerText = this.lang.timeSelect; + this.dom.menu.now.innerText = this.lang.now; + this.dom.menu.submit.innerText = this.lang.confirm; + const { weeks: { sun, mon, tue, wed, thu, fri, sat } } = this.lang; + const weekList = [sun, mon, tue, wed, thu, fri, sat]; + this.dom.datePickerWeek.childNodes.forEach((child, i) => { + const childElement = child; + childElement.innerText = weekList[i]; + }); + const hourTitle = this.dom.time.hour.previousElementSibling; + hourTitle.innerText = this.lang.hour; + const minuteTitle = this.dom.time.minute.previousElementSibling; + minuteTitle.innerText = this.lang.minute; + const secondTitle = this.dom.time.second.previousElementSibling; + secondTitle.innerText = this.lang.second; + } + _update() { + const localDate = new Date(); + const localYear = localDate.getFullYear(); + const localMonth = localDate.getMonth() + 1; + const localDay = localDate.getDate(); + let pickYear = null; + let pickMonth = null; + let pickDay = null; + if (this.pickDate) { + pickYear = this.pickDate.getFullYear(); + pickMonth = this.pickDate.getMonth() + 1; + pickDay = this.pickDate.getDate(); + } + const year = this.now.getFullYear(); + const month = this.now.getMonth() + 1; + this.dom.title.now.innerText = `${year}${this.lang.year} ${String(month).padStart(2, "0")}${this.lang.month}`; + const curDate = new Date(year, month, 0); + const curDay = curDate.getDate(); + let curWeek = new Date(year, month - 1, 1).getDay(); + if (curWeek === 0) { + curWeek = 7; + } + const preDay = new Date(year, month - 1, 0).getDate(); + this.dom.day.innerHTML = ""; + const preStartDay = preDay - curWeek + 1; + for (let i = preStartDay; i <= preDay; i++) { + const dayDom = document.createElement("div"); + dayDom.classList.add("disable"); + dayDom.innerText = `${i}`; + dayDom.onclick = () => { + const newMonth = month - 2; + this.now = new Date(year, newMonth, i); + this._setDatePick(year, newMonth, i); + }; + this.dom.day.append(dayDom); + } + for (let i = 1; i <= curDay; i++) { + const dayDom = document.createElement("div"); + if (localYear === year && localMonth === month && localDay === i) { + dayDom.classList.add("active"); + } + if (this.pickDate && pickYear === year && pickMonth === month && pickDay === i) { + dayDom.classList.add("select"); + } + dayDom.innerText = `${i}`; + dayDom.onclick = (evt) => { + const newMonth = month - 1; + this.now = new Date(year, newMonth, i); + this._setDatePick(year, newMonth, i); + evt.stopPropagation(); + }; + this.dom.day.append(dayDom); + } + const nextEndDay = 6 * 7 - curWeek - curDay; + for (let i = 1; i <= nextEndDay; i++) { + const dayDom = document.createElement("div"); + dayDom.classList.add("disable"); + dayDom.innerText = `${i}`; + dayDom.onclick = () => { + this.now = new Date(year, month, i); + this._setDatePick(year, month, i); + }; + this.dom.day.append(dayDom); + } + } + _toggleDateTimePicker() { + if (this.isDatePicker) { + this.dom.dateWrap.classList.add("active"); + this.dom.timeWrap.classList.remove("active"); + this.dom.menu.time.innerText = this.lang.timeSelect; + } else { + this.dom.dateWrap.classList.remove("active"); + this.dom.timeWrap.classList.add("active"); + this.dom.menu.time.innerText = this.lang.return; + this._setTimePick(); + } + } + _setDatePick(year, month, day) { + var _a, _b, _c; + this.now = new Date(year, month, day); + (_a = this.pickDate) == null ? void 0 : _a.setFullYear(year); + (_b = this.pickDate) == null ? void 0 : _b.setMonth(month); + (_c = this.pickDate) == null ? void 0 : _c.setDate(day); + this._update(); + } + _setTimePick(isIntoView = true) { + var _a, _b, _c; + const hour = ((_a = this.pickDate) == null ? void 0 : _a.getHours()) || 0; + const minute = ((_b = this.pickDate) == null ? void 0 : _b.getMinutes()) || 0; + const second = ((_c = this.pickDate) == null ? void 0 : _c.getSeconds()) || 0; + const { hour: hourDom, minute: minuteDom, second: secondDom } = this.dom.time; + const timeDomList = [hourDom, minuteDom, secondDom]; + timeDomList.forEach((timeDom) => { + timeDom.querySelectorAll("li").forEach((li) => li.classList.remove("active")); + }); + const pickList = [ + [hourDom, hour], + [minuteDom, minute], + [secondDom, second] + ]; + pickList.forEach(([dom, time]) => { + const pickDom = dom.querySelector(`[data-id='${time}']`); + pickDom.classList.add("active"); + if (isIntoView) { + this._scrollIntoView(dom, pickDom); + } + }); + } + _scrollIntoView(container, selected) { + if (!selected) { + container.scrollTop = 0; + return; + } + const offsetParents = []; + let pointer = selected.offsetParent; + while (pointer && container !== pointer && container.contains(pointer)) { + offsetParents.push(pointer); + pointer = pointer.offsetParent; + } + const top = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0); + const bottom = top + selected.offsetHeight; + const viewRectTop = container.scrollTop; + const viewRectBottom = viewRectTop + container.clientHeight; + if (top < viewRectTop) { + container.scrollTop = top; + } else if (bottom > viewRectBottom) { + container.scrollTop = bottom - container.clientHeight; + } + } + _preMonth() { + this.now.setMonth(this.now.getMonth() - 1); + this._update(); + } + _nextMonth() { + this.now.setMonth(this.now.getMonth() + 1); + this._update(); + } + _preYear() { + this.now.setFullYear(this.now.getFullYear() - 1); + this._update(); + } + _nextYear() { + this.now.setFullYear(this.now.getFullYear() + 1); + this._update(); + } + _now() { + this.pickDate = new Date(); + this.dispose(); + } + _toggleVisible(isVisible) { + if (isVisible) { + this.dom.container.classList.add("active"); + } else { + this.dom.container.classList.remove("active"); + } + } + _submit() { + var _a; + if (this.options.onSubmit && this.pickDate) { + const format = (_a = this.renderOptions) == null ? void 0 : _a.dateFormat; + const pickDateString = this.formatDate(this.pickDate, format); + this.options.onSubmit(pickDateString); + } + } + formatDate(date, format = "yyyy-MM-dd hh:mm:ss") { + let dateString = format; + const dateOption = { + "y+": date.getFullYear().toString(), + "M+": (date.getMonth() + 1).toString(), + "d+": date.getDate().toString(), + "h+": date.getHours().toString(), + "m+": date.getMinutes().toString(), + "s+": date.getSeconds().toString() + }; + for (const k in dateOption) { + const reg = new RegExp("(" + k + ")").exec(format); + const key = k; + if (reg) { + dateString = dateString.replace(reg[1], reg[1].length === 1 ? dateOption[key] : dateOption[key].padStart(reg[1].length, "0")); + } + } + return dateString; + } + render(option) { + this.renderOptions = option; + this.lang = this._getLang(); + this._setLangChange(); + this._setValue(); + this._update(); + this._setPosition(); + this.isDatePicker = true; + this._toggleDateTimePicker(); + this._toggleVisible(true); + } + dispose() { + this._toggleVisible(false); + } + destroy() { + this.dom.container.remove(); + } +} +class DateControl { + constructor(element, control) { + const draw = control.getDraw(); + this.draw = draw; + this.options = draw.getOptions(); + this.element = element; + this.control = control; + this.isPopup = false; + this.datePicker = null; + } + setElement(element) { + this.element = element; + } + getElement() { + return this.element; + } + getIsPopup() { + return this.isPopup; + } + getValueRange(context = {}) { + const elementList = context.elementList || this.control.getElementList(); + const { startIndex } = context.range || this.control.getRange(); + const startElement = elementList[startIndex]; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + break; + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) { + break; + } + nextIndex++; + } + if (preIndex === nextIndex) + return null; + return [preIndex, nextIndex - 1]; + } + getValue(context = {}) { + const elementList = context.elementList || this.control.getElementList(); + const range = this.getValueRange(context); + if (!range) + return []; + const data2 = []; + const [startIndex, endIndex] = range; + for (let i = startIndex; i <= endIndex; i++) { + const element = elementList[i]; + if (element.controlComponent === ControlComponent.VALUE) { + data2.push(element); + } + } + return data2; + } + setValue(data2, context = {}, options = {}) { + if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return -1; + } + const elementList = context.elementList || this.control.getElementList(); + const range = context.range || this.control.getRange(); + this.control.shrinkBoundary(context); + const { startIndex, endIndex } = range; + const draw = this.control.getDraw(); + if (startIndex !== endIndex) { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + } else { + this.control.removePlaceholder(startIndex, context); + } + const startElement = elementList[startIndex]; + const anchorElement = startElement.type && !TEXTLIKE_ELEMENT_TYPE.includes(startElement.type) || startElement.controlComponent === ControlComponent.PREFIX ? pickObject(startElement, [ + "control", + "controlId", + ...CONTROL_STYLE_ATTR + ]) : omitObject(startElement, ["type"]); + const start = range.startIndex + 1; + for (let i = 0; i < data2.length; i++) { + const newElement = { + ...anchorElement, + ...data2[i], + controlComponent: ControlComponent.VALUE + }; + formatElementContext(elementList, [newElement], startIndex, { + editorOptions: this.options + }); + draw.spliceElementList(elementList, start + i, 0, newElement); + } + return start + data2.length - 1; + } + clearSelect(context = {}, options = {}) { + const { isIgnoreDisabledRule = false, isAddPlaceholder = true } = options; + if (!isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return -1; + } + const range = this.getValueRange(context); + if (!range) + return -1; + const [leftIndex, rightIndex] = range; + if (!~leftIndex || !~rightIndex) + return -1; + const elementList = context.elementList || this.control.getElementList(); + const draw = this.control.getDraw(); + draw.spliceElementList(elementList, leftIndex + 1, rightIndex - leftIndex); + if (isAddPlaceholder) { + this.control.addPlaceholder(leftIndex, context); + } + return leftIndex; + } + setSelect(date, context = {}, options = {}) { + if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) { + return; + } + const elementList = context.elementList || this.control.getElementList(); + const range = context.range || this.control.getRange(); + const valueElement = this.getValue(context)[0]; + const styleElement = valueElement ? pickObject(valueElement, EDITOR_ELEMENT_STYLE_ATTR) : pickObject(elementList[range.startIndex], CONTROL_STYLE_ATTR); + const prefixIndex = this.clearSelect(context, { + isAddPlaceholder: false + }); + if (!~prefixIndex) + return; + const propertyElement = omitObject(elementList[prefixIndex], EDITOR_ELEMENT_STYLE_ATTR); + const start = prefixIndex + 1; + const draw = this.control.getDraw(); + for (let i = 0; i < date.length; i++) { + const newElement = { + ...styleElement, + ...propertyElement, + type: ElementType.TEXT, + value: date[i], + controlComponent: ControlComponent.VALUE + }; + formatElementContext(elementList, [newElement], prefixIndex, { + editorOptions: this.options + }); + draw.spliceElementList(elementList, start + i, 0, newElement); + } + if (!context.range) { + const newIndex = start + date.length - 1; + this.control.repaintControl({ + curIndex: newIndex + }); + this.destroy(); + } + } + keydown(evt) { + if (this.control.getIsDisabledControl()) { + return null; + } + const elementList = this.control.getElementList(); + const range = this.control.getRange(); + this.control.shrinkBoundary(); + const { startIndex, endIndex } = range; + const startElement = elementList[startIndex]; + const endElement = elementList[endIndex]; + const draw = this.control.getDraw(); + if (evt.key === KeyMap.Backspace) { + if (startIndex !== endIndex) { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex); + } + return startIndex; + } else { + if (startElement.controlComponent === ControlComponent.PREFIX || endElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) { + return this.control.removeControl(startIndex); + } else { + draw.spliceElementList(elementList, startIndex, 1); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex - 1); + } + return startIndex - 1; + } + } + } else if (evt.key === KeyMap.Delete) { + if (startIndex !== endIndex) { + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex); + } + return startIndex; + } else { + const endNextElement = elementList[endIndex + 1]; + if (startElement.controlComponent === ControlComponent.PREFIX && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) { + return this.control.removeControl(startIndex); + } else { + draw.spliceElementList(elementList, startIndex + 1, 1); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex); + } + return startIndex; + } + } + } + return endIndex; + } + cut() { + if (this.control.getIsDisabledControl()) { + return -1; + } + this.control.shrinkBoundary(); + const { startIndex, endIndex } = this.control.getRange(); + if (startIndex === endIndex) { + return startIndex; + } + const draw = this.control.getDraw(); + const elementList = this.control.getElementList(); + draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + const value = this.getValue(); + if (!value.length) { + this.control.addPlaceholder(startIndex); + } + return startIndex; + } + awake() { + var _a, _b; + if (this.isPopup || this.control.getIsDisabledControl()) + return; + const position = this.control.getPosition(); + if (!position) + return; + const elementList = this.draw.getElementList(); + const { startIndex } = this.control.getRange(); + if (((_a = elementList[startIndex + 1]) == null ? void 0 : _a.controlId) !== this.element.controlId) { + return; + } + this.datePicker = new DatePicker(this.draw, { + onSubmit: this._setDate.bind(this) + }); + const value = this.getValue().map((el) => el.value).join("") || ""; + const dateFormat = (_b = this.element.control) == null ? void 0 : _b.dateFormat; + this.datePicker.render({ + value, + position, + dateFormat + }); + this.isPopup = true; + } + destroy() { + var _a; + if (!this.isPopup) + return; + (_a = this.datePicker) == null ? void 0 : _a.destroy(); + this.isPopup = false; + } + _setDate(date) { + if (!date) { + this.clearSelect(); + } else { + this.setSelect(date); + } + this.destroy(); + } +} +class Control { + constructor(draw) { + this.controlBorder = new ControlBorder(draw); + this.draw = draw; + this.range = draw.getRange(); + this.listener = draw.getListener(); + this.eventBus = draw.getEventBus(); + this.controlSearch = new ControlSearch(this); + this.options = draw.getOptions(); + this.controlOptions = this.options.control; + this.activeControl = null; + } + setHighlightList(payload) { + this.controlSearch.setHighlightList(payload); + } + computeHighlightList() { + const highlightList = this.controlSearch.getHighlightList(); + if (highlightList.length) { + this.controlSearch.computeHighlightList(); + } + } + renderHighlightList(ctx, pageNo) { + const highlightMatchResult = this.controlSearch.getHighlightMatchResult(); + if (highlightMatchResult.length) { + this.controlSearch.renderHighlightList(ctx, pageNo); + } + } + getDraw() { + return this.draw; + } + filterAssistElement(elementList) { + return elementList.filter((element) => { + var _a; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + td.value = this.filterAssistElement(td.value); + } + } + } + if (!element.controlId) + return true; + if ((_a = element.control) == null ? void 0 : _a.minWidth) { + if (element.controlComponent === ControlComponent.PREFIX || element.controlComponent === ControlComponent.POSTFIX) { + element.value = ""; + return true; + } + } + return element.controlComponent !== ControlComponent.PREFIX && element.controlComponent !== ControlComponent.POSTFIX && element.controlComponent !== ControlComponent.PLACEHOLDER; + }); + } + getIsRangeCanCaptureEvent() { + if (!this.activeControl) + return false; + const { startIndex, endIndex } = this.getRange(); + if (!~startIndex && !~endIndex) + return false; + const elementList = this.getElementList(); + const startElement = elementList[startIndex]; + if (startIndex === endIndex && startElement.controlComponent === ControlComponent.POSTFIX) { + return true; + } + const endElement = elementList[endIndex]; + if (startElement.controlId && startElement.controlId === endElement.controlId && endElement.controlComponent !== ControlComponent.POSTFIX) { + return true; + } + return false; + } + getIsRangeInPostfix() { + if (!this.activeControl) + return false; + const { startIndex, endIndex } = this.getRange(); + if (startIndex !== endIndex) + return false; + const elementList = this.getElementList(); + const element = elementList[startIndex]; + return element.controlComponent === ControlComponent.POSTFIX; + } + getIsRangeWithinControl() { + const { startIndex, endIndex } = this.getRange(); + if (!~startIndex && !~endIndex) + return false; + const elementList = this.getElementList(); + const startElement = elementList[startIndex]; + const endElement = elementList[endIndex]; + if (startElement.controlId && startElement.controlId === endElement.controlId && endElement.controlComponent !== ControlComponent.POSTFIX) { + return true; + } + return false; + } + getIsElementListContainFullControl(elementList) { + if (!elementList.some((element) => element.controlId)) + return false; + let prefixCount = 0; + let postfixCount = 0; + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (element.controlComponent === ControlComponent.PREFIX) { + prefixCount++; + } else if (element.controlComponent === ControlComponent.POSTFIX) { + postfixCount++; + } + } + if (!prefixCount || !postfixCount) + return false; + return prefixCount === postfixCount; + } + getIsDisabledControl(context = {}) { + var _a, _b; + if (this.draw.isDesignMode() || !this.activeControl) + return false; + const { startIndex, endIndex } = context.range || this.range.getRange(); + if (startIndex === endIndex && ~startIndex && ~endIndex) { + const elementList = context.elementList || this.getElementList(); + const startElement = elementList[startIndex]; + if (startElement.controlComponent === ControlComponent.POSTFIX) { + return false; + } + } + return !!((_b = (_a = this.activeControl.getElement()) == null ? void 0 : _a.control) == null ? void 0 : _b.disabled); + } + getContainer() { + return this.draw.getContainer(); + } + getElementList() { + return this.draw.getElementList(); + } + getPosition() { + const positionList = this.draw.getPosition().getPositionList(); + const { endIndex } = this.range.getRange(); + return positionList[endIndex] || null; + } + getPreY() { + var _a, _b; + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const pageNo = (_b = (_a = this.getPosition()) == null ? void 0 : _a.pageNo) != null ? _b : this.draw.getPageNo(); + return pageNo * (height + pageGap); + } + getRange() { + return this.range.getRange(); + } + shrinkBoundary(context = {}) { + this.range.shrinkBoundary(context); + } + getActiveControl() { + return this.activeControl; + } + initControl() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + const elementList = this.getElementList(); + const range = this.getRange(); + const element = elementList[range.startIndex]; + if (this.activeControl) { + if (this.activeControl instanceof SelectControl || this.activeControl instanceof DateControl) { + if (element.controlComponent === ControlComponent.POSTFIX) { + this.activeControl.destroy(); + } else { + this.activeControl.awake(); + } + } + const controlElement = this.activeControl.getElement(); + if (element.controlId === controlElement.controlId) + return; + } + this.destroyControl(); + const control = element.control; + if (control.type === ControlType.TEXT) { + this.activeControl = new TextControl(element, this); + } else if (control.type === ControlType.SELECT) { + const selectControl = new SelectControl(element, this); + this.activeControl = selectControl; + selectControl.awake(); + } else if (control.type === ControlType.CHECKBOX) { + this.activeControl = new CheckboxControl(element, this); + } else if (control.type === ControlType.RADIO) { + this.activeControl = new RadioControl(element, this); + } else if (control.type === ControlType.DATE) { + const dateControl = new DateControl(element, this); + this.activeControl = dateControl; + dateControl.awake(); + } + nextTick(() => { + var _a; + const controlChangeListener = this.listener.controlChange; + const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange"); + if (!controlChangeListener && !isSubscribeControlChange) + return; + let payload; + const value = (_a = this.activeControl) == null ? void 0 : _a.getValue(); + if (value && value.length) { + payload = zipElementList(value)[0].control; + } else { + payload = pickElementAttr(deepClone(element)).control; + } + if (controlChangeListener) { + controlChangeListener(payload); + } + if (isSubscribeControlChange) { + this.eventBus.emit("controlChange", payload); + } + }); + } + destroyControl() { + if (this.activeControl) { + if (this.activeControl instanceof SelectControl || this.activeControl instanceof DateControl) { + this.activeControl.destroy(); + } + this.activeControl = null; + nextTick(() => { + const controlChangeListener = this.listener.controlChange; + const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange"); + if (!controlChangeListener && !isSubscribeControlChange) + return; + if (controlChangeListener) { + controlChangeListener(null); + } + if (isSubscribeControlChange) { + this.eventBus.emit("controlChange", null); + } + }); + } + } + repaintControl(options = {}) { + const { curIndex, isCompute = true, isSubmitHistory = true, isSetCursor = true } = options; + if (curIndex === void 0) { + this.range.clearRange(); + this.draw.render({ + isCompute, + isSubmitHistory, + isSetCursor: false + }); + } else { + this.range.setRange(curIndex, curIndex); + this.draw.render({ + curIndex, + isCompute, + isSetCursor, + isSubmitHistory + }); + } + } + reAwakeControl() { + if (!this.activeControl) + return; + const elementList = this.getElementList(); + const range = this.getRange(); + const element = elementList[range.startIndex]; + this.activeControl.setElement(element); + if ((this.activeControl instanceof DateControl || this.activeControl instanceof SelectControl) && this.activeControl.getIsPopup()) { + this.activeControl.destroy(); + this.activeControl.awake(); + } + } + moveCursor(position) { + const { index: index2, trIndex, tdIndex, tdValueIndex } = position; + let elementList = this.draw.getOriginalElementList(); + let element; + const newIndex = position.isTable ? tdValueIndex : index2; + if (position.isTable) { + elementList = elementList[index2].trList[trIndex].tdList[tdIndex].value; + element = elementList[tdValueIndex]; + } else { + element = elementList[index2]; + } + if (element.controlComponent === ControlComponent.VALUE) { + return { + newIndex, + newElement: element + }; + } else if (element.controlComponent === ControlComponent.POSTFIX) { + let startIndex = newIndex + 1; + while (startIndex < elementList.length) { + const nextElement = elementList[startIndex]; + if (nextElement.controlId !== element.controlId) { + return { + newIndex: startIndex - 1, + newElement: elementList[startIndex - 1] + }; + } + startIndex++; + } + } else if (element.controlComponent === ControlComponent.PREFIX) { + let startIndex = newIndex + 1; + while (startIndex < elementList.length) { + const nextElement = elementList[startIndex]; + if (nextElement.controlId !== element.controlId || nextElement.controlComponent !== ControlComponent.PREFIX) { + return { + newIndex: startIndex - 1, + newElement: elementList[startIndex - 1] + }; + } + startIndex++; + } + } else if (element.controlComponent === ControlComponent.PLACEHOLDER) { + let startIndex = newIndex - 1; + while (startIndex > 0) { + const preElement = elementList[startIndex]; + if (preElement.controlId !== element.controlId || preElement.controlComponent === ControlComponent.PREFIX) { + return { + newIndex: startIndex, + newElement: elementList[startIndex] + }; + } + startIndex--; + } + } + return { + newIndex, + newElement: element + }; + } + removeControl(startIndex, context = {}) { + const elementList = context.elementList || this.getElementList(); + const startElement = elementList[startIndex]; + if (!this.draw.isDesignMode()) { + const { deletable = true } = startElement.control; + if (!deletable) + return null; + } + let leftIndex = -1; + let rightIndex = -1; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.controlId !== startElement.controlId) { + leftIndex = preIndex; + break; + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.controlId !== startElement.controlId) { + rightIndex = nextIndex - 1; + break; + } + nextIndex++; + } + if (nextIndex === elementList.length) { + rightIndex = nextIndex - 1; + } + if (!~leftIndex && !~rightIndex) + return startIndex; + leftIndex = ~leftIndex ? leftIndex : 0; + this.draw.spliceElementList(elementList, leftIndex + 1, rightIndex - leftIndex); + return leftIndex; + } + removePlaceholder(startIndex, context = {}) { + const elementList = context.elementList || this.getElementList(); + const startElement = elementList[startIndex]; + const nextElement = elementList[startIndex + 1]; + if (startElement.controlComponent === ControlComponent.PLACEHOLDER || nextElement.controlComponent === ControlComponent.PLACEHOLDER) { + let isHasSubmitHistory = false; + let index2 = startIndex; + while (index2 < elementList.length) { + const curElement = elementList[index2]; + if (curElement.controlId !== startElement.controlId) + break; + if (curElement.controlComponent === ControlComponent.PLACEHOLDER) { + if (!isHasSubmitHistory) { + isHasSubmitHistory = true; + this.draw.getHistoryManager().popUndo(); + this.draw.submitHistory(startIndex); + } + elementList.splice(index2, 1); + } else { + index2++; + } + } + } + } + addPlaceholder(startIndex, context = {}) { + const elementList = context.elementList || this.getElementList(); + const startElement = elementList[startIndex]; + const control = startElement.control; + if (!control.placeholder) + return; + const placeholderStrList = splitText(control.placeholder); + const anchorElementStyleAttr = pickObject(startElement, CONTROL_STYLE_ATTR); + for (let p = 0; p < placeholderStrList.length; p++) { + const value = placeholderStrList[p]; + const newElement = { + ...anchorElementStyleAttr, + value, + controlId: startElement.controlId, + type: ElementType.CONTROL, + control: startElement.control, + controlComponent: ControlComponent.PLACEHOLDER, + color: this.controlOptions.placeholderColor + }; + formatElementContext(elementList, [newElement], startIndex, { + editorOptions: this.options + }); + this.draw.spliceElementList(elementList, startIndex + p + 1, 0, newElement); + } + } + setValue(data2) { + if (!this.activeControl) { + throw new Error("active control is null"); + } + return this.activeControl.setValue(data2); + } + keydown(evt) { + if (!this.activeControl) { + throw new Error("active control is null"); + } + return this.activeControl.keydown(evt); + } + cut() { + if (!this.activeControl) { + throw new Error("active control is null"); + } + return this.activeControl.cut(); + } + getValueById(payload) { + const { id, conceptId } = payload; + const result = []; + if (!id && !conceptId) + return result; + const getValue = (elementList, zone2) => { + let i = 0; + while (i < elementList.length) { + const element = elementList[i]; + i++; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + getValue(td.value, zone2); + } + } + } + if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) { + continue; + } + const { type, code, valueSets } = element.control; + let j = i; + let textControlValue = ""; + const textControlElementList = []; + while (j < elementList.length) { + const nextElement = elementList[j]; + if (nextElement.controlId !== element.controlId) + break; + if ((type === ControlType.TEXT || type === ControlType.DATE) && nextElement.controlComponent === ControlComponent.VALUE) { + textControlValue += nextElement.value; + textControlElementList.push(omitObject(nextElement, CONTROL_CONTEXT_ATTR)); + } + j++; + } + if (type === ControlType.TEXT || type === ControlType.DATE) { + result.push({ + ...element.control, + zone: zone2, + value: textControlValue || null, + innerText: textControlValue || null, + elementList: zipElementList(textControlElementList) + }); + } else if (type === ControlType.SELECT || type === ControlType.CHECKBOX || type === ControlType.RADIO) { + const innerText = code == null ? void 0 : code.split(",").map((selectCode) => { + var _a; + return (_a = valueSets == null ? void 0 : valueSets.find((valueSet) => valueSet.code === selectCode)) == null ? void 0 : _a.value; + }).filter(Boolean).join(""); + result.push({ + ...element.control, + zone: zone2, + value: code || null, + innerText: innerText || null + }); + } + i = j; + } + }; + const data2 = [ + { + zone: EditorZone.HEADER, + elementList: this.draw.getHeaderElementList() + }, + { + zone: EditorZone.MAIN, + elementList: this.draw.getOriginalMainElementList() + }, + { + zone: EditorZone.FOOTER, + elementList: this.draw.getFooterElementList() + } + ]; + for (const { zone: zone2, elementList } of data2) { + getValue(elementList, zone2); + } + return result; + } + setValueById(payload) { + let isExistSet = false; + const { id, conceptId, value } = payload; + if (!id && !conceptId) + return; + const setValue = (elementList) => { + let i = 0; + while (i < elementList.length) { + const element = elementList[i]; + i++; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + setValue(td.value); + } + } + } + if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) { + continue; + } + isExistSet = true; + const { type } = element.control; + let currentEndIndex = i; + while (currentEndIndex < elementList.length) { + const nextElement = elementList[currentEndIndex]; + if (nextElement.controlId !== element.controlId) + break; + currentEndIndex++; + } + const fakeRange = { + startIndex: i - 1, + endIndex: currentEndIndex - 2 + }; + const controlContext = { + range: fakeRange, + elementList + }; + const controlRule = { + isIgnoreDisabledRule: true + }; + if (type === ControlType.TEXT) { + const formatValue = Array.isArray(value) ? value : [{ value }]; + formatElementList(formatValue, { + isHandleFirstElement: false, + editorOptions: this.options + }); + const text = new TextControl(element, this); + this.activeControl = text; + if (value) { + text.setValue(formatValue, controlContext, controlRule); + } else { + text.clearValue(controlContext, controlRule); + } + } else if (type === ControlType.SELECT) { + if (Array.isArray(value)) + continue; + const select = new SelectControl(element, this); + this.activeControl = select; + if (value) { + select.setSelect(value, controlContext, controlRule); + } else { + select.clearSelect(controlContext, controlRule); + } + } else if (type === ControlType.CHECKBOX) { + if (Array.isArray(value)) + continue; + const checkbox = new CheckboxControl(element, this); + this.activeControl = checkbox; + const codes = value ? value.split(",") : []; + checkbox.setSelect(codes, controlContext, controlRule); + } else if (type === ControlType.RADIO) { + if (Array.isArray(value)) + continue; + const radio = new RadioControl(element, this); + this.activeControl = radio; + const codes = value ? [value] : []; + radio.setSelect(codes, controlContext, controlRule); + } else if (type === ControlType.DATE) { + if (Array.isArray(value)) + continue; + const date = new DateControl(element, this); + this.activeControl = date; + if (value) { + date.setSelect(value, controlContext, controlRule); + } else { + date.clearSelect(controlContext, controlRule); + } + } + this.activeControl = null; + let newEndIndex = i; + while (newEndIndex < elementList.length) { + const nextElement = elementList[newEndIndex]; + if (nextElement.controlId !== element.controlId) + break; + newEndIndex++; + } + i = newEndIndex; + } + }; + this.destroyControl(); + const data2 = [ + this.draw.getHeaderElementList(), + this.draw.getOriginalMainElementList(), + this.draw.getFooterElementList() + ]; + for (const elementList of data2) { + setValue(elementList); + } + if (isExistSet) { + this.draw.render({ + isSetCursor: false + }); + } + } + setExtensionById(payload) { + const { id, conceptId, extension } = payload; + if (!id && !conceptId) + return; + const setExtension = (elementList) => { + let i = 0; + while (i < elementList.length) { + const element = elementList[i]; + i++; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + setExtension(td.value); + } + } + } + if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) { + continue; + } + element.control.extension = extension; + let newEndIndex = i; + while (newEndIndex < elementList.length) { + const nextElement = elementList[newEndIndex]; + if (nextElement.controlId !== element.controlId) + break; + newEndIndex++; + } + i = newEndIndex; + } + }; + const data2 = [ + this.draw.getHeaderElementList(), + this.draw.getOriginalMainElementList(), + this.draw.getFooterElementList() + ]; + for (const elementList of data2) { + setExtension(elementList); + } + } + setPropertiesById(payload) { + const { id, conceptId, properties } = payload; + if (!id && !conceptId) + return; + let isExistUpdate = false; + function setProperties(elementList) { + let i = 0; + while (i < elementList.length) { + const element = elementList[i]; + i++; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + setProperties(td.value); + } + } + } + if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) { + continue; + } + isExistUpdate = true; + element.control = { + ...element.control, + ...properties, + value: element.control.value + }; + CONTROL_STYLE_ATTR.forEach((key) => { + const controlStyleProperty = properties[key]; + if (controlStyleProperty) { + Reflect.set(element, key, controlStyleProperty); + } + }); + let newEndIndex = i; + while (newEndIndex < elementList.length) { + const nextElement = elementList[newEndIndex]; + if (nextElement.controlId !== element.controlId) + break; + newEndIndex++; + } + i = newEndIndex; + } + } + const pageComponentData = { + header: this.draw.getHeaderElementList(), + main: this.draw.getOriginalMainElementList(), + footer: this.draw.getFooterElementList() + }; + for (const key in pageComponentData) { + const elementList = pageComponentData[key]; + setProperties(elementList); + } + if (!isExistUpdate) + return; + for (const key in pageComponentData) { + const pageComponentKey = key; + const elementList = zipElementList(pageComponentData[pageComponentKey]); + pageComponentData[pageComponentKey] = elementList; + formatElementList(elementList, { + editorOptions: this.options, + isForceCompensation: true + }); + } + this.draw.setEditorData(pageComponentData); + this.draw.render({ + isSetCursor: false + }); + } + getList() { + const controlElementList = []; + function getControlElementList(elementList) { + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const tdElement = td.value; + getControlElementList(tdElement); + } + } + } + if (element.controlId) { + const controlElement = omitObject(element, [ + ...TITLE_CONTEXT_ATTR, + ...LIST_CONTEXT_ATTR + ]); + controlElementList.push(controlElement); + } + } + } + const data2 = [ + this.draw.getHeader().getElementList(), + this.draw.getOriginalMainElementList(), + this.draw.getFooter().getElementList() + ]; + for (const elementList of data2) { + getControlElementList(elementList); + } + return zipElementList(controlElementList, { + extraPickAttrs: ["controlId"] + }); + } + recordBorderInfo(x, y, width, height) { + this.controlBorder.recordBorderInfo(x, y, width, height); + } + drawBorder(ctx) { + this.controlBorder.render(ctx); + } + getPreControlContext() { + if (!this.activeControl) + return null; + const position = this.draw.getPosition(); + const positionContext = position.getPositionContext(); + if (!positionContext) + return null; + const controlElement = this.activeControl.getElement(); + function getPreContext(elementList2, start) { + for (let e = start; e > 0; e--) { + const element = elementList2[e]; + if (element.type === ElementType.TABLE) { + const trList = element.trList || []; + for (let r = trList.length - 1; r >= 0; r--) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = tdList.length - 1; d >= 0; d--) { + const td = tdList[d]; + const context2 = getPreContext(td.value, td.value.length - 1); + if (context2) { + return { + positionContext: { + isTable: true, + index: e, + trIndex: r, + tdIndex: d, + tdId: td.id, + trId: tr.id, + tableId: element.id + }, + nextIndex: context2.nextIndex + }; + } + } + } + } + if (!element.controlId || element.controlId === controlElement.controlId) { + continue; + } + let nextIndex = e; + while (nextIndex > 0) { + const nextElement = elementList2[nextIndex]; + if (nextElement.controlComponent === ControlComponent.VALUE || nextElement.controlComponent === ControlComponent.PREFIX) { + break; + } + nextIndex--; + } + return { + positionContext: { + isTable: false + }, + nextIndex + }; + } + return null; + } + const { startIndex } = this.range.getRange(); + const elementList = this.getElementList(); + const context = getPreContext(elementList, startIndex); + if (context) { + return { + positionContext: positionContext.isTable ? positionContext : context.positionContext, + nextIndex: context.nextIndex + }; + } + if (controlElement.tableId) { + const originalElementList = this.draw.getOriginalElementList(); + const { index: index2, trIndex, tdIndex } = positionContext; + const trList = originalElementList[index2].trList; + for (let r = trIndex; r >= 0; r--) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = tdList.length - 1; d >= 0; d--) { + if (trIndex === r && d >= tdIndex) + continue; + const td = tdList[d]; + const context3 = getPreContext(td.value, td.value.length - 1); + if (context3) { + return { + positionContext: { + isTable: true, + index: positionContext.index, + trIndex: r, + tdIndex: d, + tdId: td.id, + trId: tr.id, + tableId: controlElement.tableId + }, + nextIndex: context3.nextIndex + }; + } + } + } + const context2 = getPreContext(originalElementList, index2 - 1); + if (context2) { + return { + positionContext: { + isTable: false + }, + nextIndex: context2.nextIndex + }; + } + } + return null; + } + getNextControlContext() { + if (!this.activeControl) + return null; + const position = this.draw.getPosition(); + const positionContext = position.getPositionContext(); + if (!positionContext) + return null; + const controlElement = this.activeControl.getElement(); + function getNextContext(elementList2, start) { + for (let e = start; e < elementList2.length; e++) { + const element = elementList2[e]; + if (element.type === ElementType.TABLE) { + const trList = element.trList || []; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + const context2 = getNextContext(td.value, 0); + if (context2) { + return { + positionContext: { + isTable: true, + index: e, + trIndex: r, + tdIndex: d, + tdId: td.id, + trId: tr.id, + tableId: element.id + }, + nextIndex: context2.nextIndex + }; + } + } + } + } + if (!element.controlId || element.controlId === controlElement.controlId) { + continue; + } + return { + positionContext: { + isTable: false + }, + nextIndex: e + }; + } + return null; + } + const { endIndex } = this.range.getRange(); + const elementList = this.getElementList(); + const context = getNextContext(elementList, endIndex); + if (context) { + return { + positionContext: positionContext.isTable ? positionContext : context.positionContext, + nextIndex: context.nextIndex + }; + } + if (controlElement.tableId) { + const originalElementList = this.draw.getOriginalElementList(); + const { index: index2, trIndex, tdIndex } = positionContext; + const trList = originalElementList[index2].trList; + for (let r = trIndex; r < trList.length; r++) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + if (trIndex === r && d <= tdIndex) + continue; + const td = tdList[d]; + const context3 = getNextContext(td.value, 0); + if (context3) { + return { + positionContext: { + isTable: true, + index: positionContext.index, + trIndex: r, + tdIndex: d, + tdId: td.id, + trId: tr.id, + tableId: controlElement.tableId + }, + nextIndex: context3.nextIndex + }; + } + } + } + const context2 = getNextContext(originalElementList, index2 + 1); + if (context2) { + return { + positionContext: { + isTable: false + }, + nextIndex: context2.nextIndex + }; + } + } + return null; + } + initNextControl(option = {}) { + const { direction = MoveDirection.DOWN } = option; + let context = null; + if (direction === MoveDirection.UP) { + context = this.getPreControlContext(); + } else { + context = this.getNextControlContext(); + } + if (!context) + return; + const { nextIndex, positionContext } = context; + const position = this.draw.getPosition(); + position.setPositionContext(positionContext); + this.draw.getRange().replaceRange({ + startIndex: nextIndex, + endIndex: nextIndex + }); + this.draw.render({ + curIndex: nextIndex, + isCompute: false, + isSetCursor: true, + isSubmitHistory: false + }); + const positionList = position.getPositionList(); + this.draw.getCursor().moveCursorToVisible({ + cursorPosition: positionList[nextIndex], + direction + }); + } + setMinWidthControlInfo(option) { + var _a, _b, _c, _d, _e; + const { row, rowElement, controlRealWidth, availableWidth } = option; + if (!((_a = rowElement.control) == null ? void 0 : _a.minWidth)) + return; + const { scale } = this.options; + const controlMinWidth = rowElement.control.minWidth * scale; + let controlFirstElement = null; + if (((_b = rowElement.control) == null ? void 0 : _b.minWidth) && (((_c = rowElement.control) == null ? void 0 : _c.rowFlex) === RowFlex.CENTER || ((_d = rowElement.control) == null ? void 0 : _d.rowFlex) === RowFlex.RIGHT)) { + let controlContentWidth = rowElement.metrics.width; + let controlElementIndex = row.elementList.length - 1; + while (controlElementIndex >= 0) { + const controlRowElement = row.elementList[controlElementIndex]; + controlContentWidth += controlRowElement.metrics.width; + if (((_e = row.elementList[controlElementIndex - 1]) == null ? void 0 : _e.controlComponent) === ControlComponent.PREFIX) { + controlFirstElement = controlRowElement; + break; + } + controlElementIndex--; + } + if (controlFirstElement) { + if (controlContentWidth < controlMinWidth) { + if (rowElement.control.rowFlex === RowFlex.CENTER) { + controlFirstElement.left = (controlMinWidth - controlContentWidth) / 2; + } else if (rowElement.control.rowFlex === RowFlex.RIGHT) { + controlFirstElement.left = controlMinWidth - controlContentWidth - rowElement.metrics.width; + } + } + } + } + const extraWidth = controlMinWidth - controlRealWidth; + if (extraWidth > 0) { + const controlFirstElementLeft = (controlFirstElement == null ? void 0 : controlFirstElement.left) || 0; + const rowRemainingWidth = availableWidth - row.width - rowElement.metrics.width; + const left2 = Math.min(rowRemainingWidth, extraWidth); + rowElement.left = left2 - controlFirstElementLeft; + row.width += left2 - controlFirstElementLeft; + } + } +} +class CheckboxParticle { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + } + setSelect(element) { + const { checkbox } = element; + if (checkbox) { + checkbox.value = !checkbox.value; + } else { + element.checkbox = { + value: true + }; + } + this.draw.render({ + isCompute: false, + isSetCursor: false + }); + } + render(payload) { + const { ctx, x, index: index2, row } = payload; + let { y } = payload; + const { checkbox: { gap, lineWidth, fillStyle, strokeStyle, verticalAlign }, scale } = this.options; + const { metrics, checkbox } = row.elementList[index2]; + if (verticalAlign === VerticalAlign.TOP || verticalAlign === VerticalAlign.MIDDLE) { + let nextIndex = index2 + 1; + let nextElement = null; + while (nextIndex < row.elementList.length) { + nextElement = row.elementList[nextIndex]; + if (nextElement.value !== ZERO && nextElement.value !== NBSP) + break; + nextIndex++; + } + if (nextElement) { + const { metrics: { boundingBoxAscent, boundingBoxDescent } } = nextElement; + const textHeight = boundingBoxAscent + boundingBoxDescent; + if (textHeight > metrics.height) { + if (verticalAlign === VerticalAlign.TOP) { + y -= boundingBoxAscent - metrics.height; + } else if (verticalAlign === VerticalAlign.MIDDLE) { + y -= (textHeight - metrics.height) / 2; + } + } + } + } + const left2 = Math.round(x + gap * scale); + const top = Math.round(y - metrics.height + lineWidth); + const width = metrics.width - gap * 2 * scale; + const height = metrics.height; + ctx.save(); + ctx.beginPath(); + ctx.translate(0.5, 0.5); + if (checkbox == null ? void 0 : checkbox.value) { + ctx.lineWidth = lineWidth; + ctx.strokeStyle = fillStyle; + ctx.rect(left2, top, width, height); + ctx.stroke(); + ctx.beginPath(); + ctx.fillStyle = fillStyle; + ctx.fillRect(left2, top, width, height); + ctx.beginPath(); + ctx.strokeStyle = strokeStyle; + ctx.lineWidth = lineWidth * 2 * scale; + ctx.moveTo(left2 + 2 * scale, top + height / 2); + ctx.lineTo(left2 + width / 2, top + height - 3 * scale); + ctx.lineTo(left2 + width - 2 * scale, top + 3 * scale); + ctx.stroke(); + } else { + ctx.lineWidth = lineWidth; + ctx.rect(left2, top, width, height); + ctx.stroke(); + } + ctx.closePath(); + ctx.restore(); + } +} +class RadioParticle { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + } + setSelect(element) { + const { radio } = element; + if (radio) { + radio.value = !radio.value; + } else { + element.radio = { + value: true + }; + } + this.draw.render({ + isCompute: false, + isSetCursor: false + }); + } + render(payload) { + const { ctx, x, index: index2, row } = payload; + let { y } = payload; + const { radio: { gap, lineWidth, fillStyle, strokeStyle, verticalAlign }, scale } = this.options; + const { metrics, radio } = row.elementList[index2]; + if (verticalAlign === VerticalAlign.TOP || verticalAlign === VerticalAlign.MIDDLE) { + let nextIndex = index2 + 1; + let nextElement = null; + while (nextIndex < row.elementList.length) { + nextElement = row.elementList[nextIndex]; + if (nextElement.value !== ZERO && nextElement.value !== NBSP) + break; + nextIndex++; + } + if (nextElement) { + const { metrics: { boundingBoxAscent, boundingBoxDescent } } = nextElement; + const textHeight = boundingBoxAscent + boundingBoxDescent; + if (textHeight > metrics.height) { + if (verticalAlign === VerticalAlign.TOP) { + y -= boundingBoxAscent - metrics.height; + } else if (verticalAlign === VerticalAlign.MIDDLE) { + y -= (textHeight - metrics.height) / 2; + } + } + } + } + const left2 = Math.round(x + gap * scale); + const top = Math.round(y - metrics.height + lineWidth); + const width = metrics.width - gap * 2 * scale; + const height = metrics.height; + ctx.save(); + ctx.beginPath(); + ctx.translate(0.5, 0.5); + ctx.strokeStyle = (radio == null ? void 0 : radio.value) ? fillStyle : strokeStyle; + ctx.lineWidth = lineWidth; + ctx.arc(left2 + width / 2, top + height / 2, width / 2, 0, Math.PI * 2); + ctx.stroke(); + if (radio == null ? void 0 : radio.value) { + ctx.beginPath(); + ctx.fillStyle = fillStyle; + ctx.arc(left2 + width / 2, top + height / 2, width / 3, 0, Math.PI * 2); + ctx.fill(); + } + ctx.closePath(); + ctx.restore(); + } +} +const encodedJs$2 = "KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGE9Ilx1MjAwQiIsdT1gCmA7ZnVuY3Rpb24gZihpKXtsZXQgcz0iIixuPTA7Zm9yKDtuPGkubGVuZ3RoOyl7Y29uc3QgZT1pW25dO2lmKGUudHlwZT09PSJ0YWJsZSIpe2lmKGUudHJMaXN0KWZvcihsZXQgbD0wO2w8ZS50ckxpc3QubGVuZ3RoO2wrKyl7Y29uc3Qgbz1lLnRyTGlzdFtsXTtmb3IobGV0IHQ9MDt0PG8udGRMaXN0Lmxlbmd0aDt0Kyspe2NvbnN0IHI9by50ZExpc3RbdF07cys9ZihyLnZhbHVlKX19fWVsc2UgaWYoZS50eXBlPT09Imh5cGVybGluayIpe2NvbnN0IGw9ZS5oeXBlcmxpbmtJZCxvPVtdO2Zvcig7bjxpLmxlbmd0aDspe2NvbnN0IHQ9aVtuXTtpZihsIT09dC5oeXBlcmxpbmtJZCl7bi0tO2JyZWFrfWRlbGV0ZSB0LnR5cGUsby5wdXNoKHQpLG4rK31zKz1mKG8pfWVsc2UgaWYoZS5jb250cm9sSWQpe2NvbnN0IGw9ZS5jb250cm9sSWQsbz1bXTtmb3IoO248aS5sZW5ndGg7KXtjb25zdCB0PWlbbl07aWYobCE9PXQuY29udHJvbElkKXtuLS07YnJlYWt9dC5jb250cm9sQ29tcG9uZW50PT09InZhbHVlIiYmKGRlbGV0ZSB0LmNvbnRyb2xJZCxvLnB1c2godCkpLG4rK31zKz1mKG8pfWVsc2UoIWUudHlwZXx8ZS50eXBlPT09InRleHQiKSYmKHMrPWUudmFsdWUpO24rK31yZXR1cm4gc31mdW5jdGlvbiBoKGkpe2NvbnN0IHM9W10sbj0vWzAtOV0vLGU9L1tBLVphLXpdLyxsPS9ccy87bGV0IG89ITEsdD0hMSxyPSIiO2Z1bmN0aW9uIHAoKXtyJiYocy5wdXNoKHIpLHI9IiIpfWZvcihjb25zdCBjIG9mIGkpZS50ZXN0KGMpPyhvfHxwKCkscis9YyxvPSEwLHQ9ITEpOm4udGVzdChjKT8odHx8cCgpLHIrPWMsbz0hMSx0PSEwKToocCgpLG89ITEsdD0hMSxsLnRlc3QoYyl8fHMucHVzaChjKSk7cmV0dXJuIHAoKSxzfW9ubWVzc2FnZT1pPT57Y29uc3Qgcz1pLmRhdGEsZT1mKHMpLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7YX1gKSwiIikucmVwbGFjZShuZXcgUmVnRXhwKGEsImciKSx1KSxsPWgoZSk7cG9zdE1lc3NhZ2UobC5sZW5ndGgpfX0pKCk7Cg=="; +const blob$2 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$2)], { type: "text/javascript;charset=utf-8" }); +function WorkerWrapper$2() { + const objURL = blob$2 && (window.URL || window.webkitURL).createObjectURL(blob$2); + try { + return objURL ? new Worker(objURL, {}) : new Worker("data:application/javascript;base64," + encodedJs$2, { type: "module" }); + } finally { + objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL); + } +} +const encodedJs$1 = "KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IHU9e2ZpcnN0OjEsc2Vjb25kOjIsdGhpcmQ6Myxmb3VydGg6NCxmaWZ0aDo1LHNpeHRoOjZ9LGg9WyJ0ZXh0IiwiaHlwZXJsaW5rIiwic3Vic2NyaXB0Iiwic3VwZXJzY3JpcHQiLCJjb250cm9sIiwiZGF0ZSJdLGQ9Ilx1MjAwQiI7ZnVuY3Rpb24gZihuKXtyZXR1cm4hbi50eXBlfHxoLmluY2x1ZGVzKG4udHlwZSl9ZnVuY3Rpb24gRShuKXtjb25zdHtlbGVtZW50TGlzdDpvLHBvc2l0aW9uTGlzdDpnfT1uLHA9W107bGV0IHM9MDtmb3IoO3M8by5sZW5ndGg7KXtjb25zdCBlPW9bc107aWYoZS50aXRsZUlkKXtjb25zdCB0PWUudGl0bGVJZCxsPWUubGV2ZWwsaT17dHlwZToidGl0bGUiLHZhbHVlOiIiLGxldmVsOmwsdGl0bGVJZDp0LHBhZ2VObzpnW3NdLnBhZ2VOb30sYT1bXTtmb3IoO3M8by5sZW5ndGg7KXtjb25zdCBjPW9bc107aWYodCE9PWMudGl0bGVJZCl7cy0tO2JyZWFrfWEucHVzaChjKSxzKyt9aS52YWx1ZT1hLmZpbHRlcihjPT5mKGMpKS5tYXAoYz0+Yy52YWx1ZSkuam9pbigiIikucmVwbGFjZShuZXcgUmVnRXhwKGQsImciKSwiIikscC5wdXNoKGkpfXMrK31pZighcC5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgdj0oZSx0KT0+e2NvbnN0IGw9dC5zdWJDYXRhbG9nW3Quc3ViQ2F0YWxvZy5sZW5ndGgtMV0saT11W2w9PW51bGw/dm9pZCAwOmwubGV2ZWxdLGE9dVtlLmxldmVsXTtsJiZhPmk/dihlLGwpOnQuc3ViQ2F0YWxvZy5wdXNoKHtpZDplLnRpdGxlSWQsbmFtZTplLnZhbHVlLGxldmVsOmUubGV2ZWwscGFnZU5vOmUucGFnZU5vLHN1YkNhdGFsb2c6W119KX0scj1bXTtmb3IobGV0IGU9MDtlPHAubGVuZ3RoO2UrKyl7Y29uc3QgdD1wW2VdLGw9cltyLmxlbmd0aC0xXSxpPXVbbD09bnVsbD92b2lkIDA6bC5sZXZlbF0sYT11W3QubGV2ZWxdO2wmJmE+aT92KHQsbCk6ci5wdXNoKHtpZDp0LnRpdGxlSWQsbmFtZTp0LnZhbHVlLGxldmVsOnQubGV2ZWwscGFnZU5vOnQucGFnZU5vLHN1YkNhdGFsb2c6W119KX1yZXR1cm4gcn1vbm1lc3NhZ2U9bj0+e2NvbnN0IG89bi5kYXRhLGc9RShvKTtwb3N0TWVzc2FnZShnKX19KSgpOwo="; +const blob$1 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$1)], { type: "text/javascript;charset=utf-8" }); +function WorkerWrapper$1() { + const objURL = blob$1 && (window.URL || window.webkitURL).createObjectURL(blob$1); + try { + return objURL ? new Worker(objURL, {}) : new Worker("data:application/javascript;base64," + encodedJs$1, { type: "module" }); + } finally { + objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL); + } +} +const encodedJs = "KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHUoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzLnR5cGU9PT0idGFibGUiKXtjb25zdCBvPXMudHJMaXN0O2ZvcihsZXQgbj0wO248by5sZW5ndGg7bisrKXtjb25zdCBjPW9bbl07Zm9yKGxldCByPTA7cjxjLnRkTGlzdC5sZW5ndGg7cisrKXtjb25zdCBpPWMudGRMaXN0W3JdO3QucHVzaCguLi51KGkudmFsdWUpKX19fWlmKCEhcy5ncm91cElkcylmb3IoY29uc3QgbyBvZiBzLmdyb3VwSWRzKXQuaW5jbHVkZXMobyl8fHQucHVzaChvKX1yZXR1cm4gdH1vbm1lc3NhZ2U9ZT0+e2NvbnN0IHQ9ZS5kYXRhLHM9dSh0KTtwb3N0TWVzc2FnZShzKX19KSgpOwo="; +const blob = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs)], { type: "text/javascript;charset=utf-8" }); +function WorkerWrapper() { + const objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob); + try { + return objURL ? new Worker(objURL, {}) : new Worker("data:application/javascript;base64," + encodedJs, { type: "module" }); + } finally { + objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL); + } +} +class WorkerManager { + constructor(draw) { + this.draw = draw; + this.wordCountWorker = new WorkerWrapper$2(); + this.catalogWorker = new WorkerWrapper$1(); + this.groupWorker = new WorkerWrapper(); + } + getWordCount() { + return new Promise((resolve, reject) => { + this.wordCountWorker.onmessage = (evt) => { + resolve(evt.data); + }; + this.wordCountWorker.onerror = (evt) => { + reject(evt); + }; + const elementList = this.draw.getOriginalMainElementList(); + this.wordCountWorker.postMessage(elementList); + }); + } + getCatalog() { + return new Promise((resolve, reject) => { + this.catalogWorker.onmessage = (evt) => { + resolve(evt.data); + }; + this.catalogWorker.onerror = (evt) => { + reject(evt); + }; + const elementList = this.draw.getOriginalMainElementList(); + const positionList = this.draw.getPosition().getOriginalMainPositionList(); + this.catalogWorker.postMessage({ + elementList, + positionList + }); + }); + } + getGroupIds() { + return new Promise((resolve, reject) => { + this.groupWorker.onmessage = (evt) => { + resolve(evt.data); + }; + this.groupWorker.onerror = (evt) => { + reject(evt); + }; + const elementList = this.draw.getOriginalMainElementList(); + this.groupWorker.postMessage(elementList); + }); + } +} +class Previewer { + constructor(draw) { + this._keydown = () => { + if (this.resizerSelection.style.display === "block") { + this.clearResizer(); + document.removeEventListener("keydown", this._keydown); + } + }; + this.container = draw.getContainer(); + this.canvas = draw.getPage(); + this.draw = draw; + this.options = draw.getOptions(); + this.curElement = null; + this.curElementSrc = ""; + this.previewerDrawOption = {}; + this.curPosition = null; + const { resizerSelection, resizerHandleList, resizerImageContainer, resizerImage, resizerSize } = this._createResizerDom(); + this.resizerSelection = resizerSelection; + this.resizerHandleList = resizerHandleList; + this.resizerImageContainer = resizerImageContainer; + this.resizerImage = resizerImage; + this.resizerSize = resizerSize; + this.width = 0; + this.height = 0; + this.mousedownX = 0; + this.mousedownY = 0; + this.curHandleIndex = 0; + this.previewerContainer = null; + this.previewerImage = null; + } + _getElementPosition(element, position = null) { + var _a; + let x = 0; + let y = 0; + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const pageNo = (_a = position == null ? void 0 : position.pageNo) != null ? _a : this.draw.getPageNo(); + const preY = pageNo * (height + pageGap); + if (element.imgFloatPosition) { + x = element.imgFloatPosition.x; + y = element.imgFloatPosition.y + preY; + } else if (position) { + const { coordinate: { leftTop: [left2, top] }, ascent } = position; + x = left2; + y = top + preY + ascent; + } + return { x, y }; + } + _createResizerDom() { + const { scale } = this.options; + const resizerSelection = document.createElement("div"); + resizerSelection.classList.add(`${EDITOR_PREFIX}-resizer-selection`); + resizerSelection.style.display = "none"; + resizerSelection.style.borderColor = this.options.resizerColor; + resizerSelection.style.borderWidth = `${scale}px`; + const resizerHandleList = []; + for (let i = 0; i < 8; i++) { + const handleDom = document.createElement("div"); + handleDom.style.background = this.options.resizerColor; + handleDom.classList.add(`resizer-handle`); + handleDom.classList.add(`handle-${i}`); + handleDom.setAttribute("data-index", String(i)); + handleDom.onmousedown = this._mousedown.bind(this); + resizerSelection.append(handleDom); + resizerHandleList.push(handleDom); + } + this.container.append(resizerSelection); + const resizerSizeView = document.createElement("div"); + resizerSizeView.classList.add(`${EDITOR_PREFIX}-resizer-size-view`); + const resizerSize = document.createElement("span"); + resizerSizeView.append(resizerSize); + resizerSelection.append(resizerSizeView); + const resizerImageContainer = document.createElement("div"); + resizerImageContainer.classList.add(`${EDITOR_PREFIX}-resizer-image`); + resizerImageContainer.style.display = "none"; + const resizerImage = document.createElement("img"); + resizerImageContainer.append(resizerImage); + this.container.append(resizerImageContainer); + return { + resizerSelection, + resizerHandleList, + resizerImageContainer, + resizerImage, + resizerSize + }; + } + _mousedown(evt) { + this.canvas = this.draw.getPage(); + if (!this.curElement) + return; + const { scale } = this.options; + this.mousedownX = evt.x; + this.mousedownY = evt.y; + const target = evt.target; + this.curHandleIndex = Number(target.dataset.index); + const cursor = window.getComputedStyle(target).cursor; + document.body.style.cursor = cursor; + this.canvas.style.cursor = cursor; + this.resizerImage.src = this.curElementSrc; + this.resizerImageContainer.style.display = "block"; + const { x: resizerLeft, y: resizerTop } = this._getElementPosition(this.curElement, this.curPosition); + this.resizerImageContainer.style.left = `${resizerLeft}px`; + this.resizerImageContainer.style.top = `${resizerTop}px`; + this.resizerImage.style.width = `${this.curElement.width * scale}px`; + this.resizerImage.style.height = `${this.curElement.height * scale}px`; + const mousemoveFn = this._mousemove.bind(this); + document.addEventListener("mousemove", mousemoveFn); + document.addEventListener("mouseup", () => { + var _a; + if (this.curElement && !this.previewerDrawOption.dragDisable) { + this.curElement.width = this.width; + this.curElement.height = this.height; + this.draw.render({ + isSetCursor: true, + curIndex: (_a = this.curPosition) == null ? void 0 : _a.index + }); + } + this.resizerImageContainer.style.display = "none"; + document.removeEventListener("mousemove", mousemoveFn); + document.body.style.cursor = ""; + this.canvas.style.cursor = "text"; + }, { + once: true + }); + evt.preventDefault(); + } + _mousemove(evt) { + if (!this.curElement || this.previewerDrawOption.dragDisable) + return; + const { scale } = this.options; + let dx = 0; + let dy = 0; + switch (this.curHandleIndex) { + case 0: + { + const offsetX = this.mousedownX - evt.x; + const offsetY = this.mousedownY - evt.y; + dx = Math.cbrt(offsetX ** 3 + offsetY ** 3); + dy = this.curElement.height * dx / this.curElement.width; + } + break; + case 1: + dy = this.mousedownY - evt.y; + break; + case 2: + { + const offsetX = evt.x - this.mousedownX; + const offsetY = this.mousedownY - evt.y; + dx = Math.cbrt(offsetX ** 3 + offsetY ** 3); + dy = this.curElement.height * dx / this.curElement.width; + } + break; + case 4: + { + const offsetX = evt.x - this.mousedownX; + const offsetY = evt.y - this.mousedownY; + dx = Math.cbrt(offsetX ** 3 + offsetY ** 3); + dy = this.curElement.height * dx / this.curElement.width; + } + break; + case 3: + dx = evt.x - this.mousedownX; + break; + case 5: + dy = evt.y - this.mousedownY; + break; + case 6: + { + const offsetX = this.mousedownX - evt.x; + const offsetY = evt.y - this.mousedownY; + dx = Math.cbrt(offsetX ** 3 + offsetY ** 3); + dy = this.curElement.height * dx / this.curElement.width; + } + break; + case 7: + dx = this.mousedownX - evt.x; + break; + } + const dw = this.curElement.width + dx / scale; + const dh = this.curElement.height + dy / scale; + if (dw <= 0 || dh <= 0) + return; + this.width = dw; + this.height = dh; + const elementWidth = dw * scale; + const elementHeight = dh * scale; + this.resizerImage.style.width = `${elementWidth}px`; + this.resizerImage.style.height = `${elementHeight}px`; + this._updateResizerRect(elementWidth, elementHeight); + this._updateResizerSizeView(elementWidth, elementHeight); + evt.preventDefault(); + } + _drawPreviewer() { + const previewerContainer = document.createElement("div"); + previewerContainer.classList.add(`${EDITOR_PREFIX}-image-previewer`); + const closeBtn = document.createElement("i"); + closeBtn.classList.add("image-close"); + closeBtn.onclick = () => { + this._clearPreviewer(); + }; + previewerContainer.append(closeBtn); + const imgContainer = document.createElement("div"); + imgContainer.classList.add(`${EDITOR_PREFIX}-image-container`); + const img = document.createElement("img"); + img.src = this.curElementSrc; + img.draggable = false; + imgContainer.append(img); + this.previewerImage = img; + previewerContainer.append(imgContainer); + let x = 0; + let y = 0; + let scaleSize = 1; + let rotateSize = 0; + const menuContainer = document.createElement("div"); + menuContainer.classList.add(`${EDITOR_PREFIX}-image-menu`); + const zoomIn = document.createElement("i"); + zoomIn.classList.add("zoom-in"); + zoomIn.onclick = () => { + scaleSize += 0.1; + this._setPreviewerTransform(scaleSize, rotateSize, x, y); + }; + menuContainer.append(zoomIn); + const zoomOut = document.createElement("i"); + zoomOut.onclick = () => { + if (scaleSize - 0.1 <= 0.1) + return; + scaleSize -= 0.1; + this._setPreviewerTransform(scaleSize, rotateSize, x, y); + }; + zoomOut.classList.add("zoom-out"); + menuContainer.append(zoomOut); + const rotate = document.createElement("i"); + rotate.classList.add("rotate"); + rotate.onclick = () => { + rotateSize += 1; + this._setPreviewerTransform(scaleSize, rotateSize, x, y); + }; + menuContainer.append(rotate); + const originalSize = document.createElement("i"); + originalSize.classList.add("original-size"); + originalSize.onclick = () => { + x = 0; + y = 0; + scaleSize = 1; + rotateSize = 0; + this._setPreviewerTransform(scaleSize, rotateSize, x, y); + }; + menuContainer.append(originalSize); + const imageDownload = document.createElement("i"); + imageDownload.classList.add("image-download"); + imageDownload.onclick = () => { + var _a; + const { mime } = this.previewerDrawOption; + downloadFile(img.src, `${(_a = this.curElement) == null ? void 0 : _a.id}.${mime || "png"}`); + }; + menuContainer.append(imageDownload); + previewerContainer.append(menuContainer); + this.previewerContainer = previewerContainer; + document.body.append(previewerContainer); + let startX = 0; + let startY = 0; + let isAllowDrag = false; + img.onmousedown = (evt) => { + isAllowDrag = true; + startX = evt.x; + startY = evt.y; + previewerContainer.style.cursor = "move"; + }; + previewerContainer.onmousemove = (evt) => { + if (!isAllowDrag) + return; + x += evt.x - startX; + y += evt.y - startY; + startX = evt.x; + startY = evt.y; + this._setPreviewerTransform(scaleSize, rotateSize, x, y); + }; + previewerContainer.onmouseup = () => { + isAllowDrag = false; + previewerContainer.style.cursor = "auto"; + }; + previewerContainer.onwheel = (evt) => { + evt.preventDefault(); + evt.stopPropagation(); + if (evt.deltaY < 0) { + scaleSize += 0.1; + } else { + if (scaleSize - 0.1 <= 0.1) + return; + scaleSize -= 0.1; + } + this._setPreviewerTransform(scaleSize, rotateSize, x, y); + }; + } + _setPreviewerTransform(scale, rotate, x, y) { + if (!this.previewerImage) + return; + this.previewerImage.style.left = `${x}px`; + this.previewerImage.style.top = `${y}px`; + this.previewerImage.style.transform = `scale(${scale}) rotate(${rotate * 90}deg)`; + } + _clearPreviewer() { + var _a; + (_a = this.previewerContainer) == null ? void 0 : _a.remove(); + this.previewerContainer = null; + document.body.style.overflow = "auto"; + } + _updateResizerRect(width, height) { + const { resizerSize: handleSize, scale } = this.options; + this.resizerSelection.style.width = `${width}px`; + this.resizerSelection.style.height = `${height}px`; + for (let i = 0; i < 8; i++) { + const left2 = i === 0 || i === 6 || i === 7 ? -handleSize : i === 1 || i === 5 ? width / 2 : width - handleSize; + const top = i === 0 || i === 1 || i === 2 ? -handleSize : i === 3 || i === 7 ? height / 2 - handleSize : height - handleSize; + this.resizerHandleList[i].style.transform = `scale(${scale})`; + this.resizerHandleList[i].style.left = `${left2}px`; + this.resizerHandleList[i].style.top = `${top}px`; + } + } + _updateResizerSizeView(width, height) { + this.resizerSize.innerText = `${Math.round(width)} \xD7 ${Math.round(height)}`; + } + render() { + this._drawPreviewer(); + document.body.style.overflow = "hidden"; + } + drawResizer(element, position = null, options = {}) { + this.previewerDrawOption = options; + this.curElementSrc = element[options.srcKey || "value"] || ""; + this.updateResizer(element, position); + document.addEventListener("keydown", this._keydown); + } + updateResizer(element, position = null) { + const { scale } = this.options; + const elementWidth = element.width * scale; + const elementHeight = element.height * scale; + this._updateResizerSizeView(elementWidth, elementHeight); + const { x: resizerLeft, y: resizerTop } = this._getElementPosition(element, position); + this.resizerSelection.style.left = `${resizerLeft}px`; + this.resizerSelection.style.top = `${resizerTop}px`; + this.resizerSelection.style.borderWidth = `${scale}px`; + this._updateResizerRect(elementWidth, elementHeight); + this.resizerSelection.style.display = "block"; + this.curElement = element; + this.curPosition = position; + this.width = elementWidth; + this.height = elementHeight; + } + clearResizer() { + this.resizerSelection.style.display = "none"; + document.removeEventListener("keydown", this._keydown); + } +} +class DateParticle { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.range = draw.getRange(); + this.datePicker = new DatePicker(draw, { + onSubmit: this._setValue.bind(this) + }); + } + _setValue(date) { + if (!date) + return; + const range = this.getDateElementRange(); + if (!range) + return; + const [leftIndex, rightIndex] = range; + const elementList = this.draw.getElementList(); + const startElement = elementList[leftIndex + 1]; + this.draw.spliceElementList(elementList, leftIndex + 1, rightIndex - leftIndex); + this.range.setRange(leftIndex, leftIndex); + const dateElement = { + type: ElementType.DATE, + value: "", + dateFormat: startElement.dateFormat, + valueList: [ + { + value: date + } + ] + }; + formatElementContext(elementList, [dateElement], leftIndex, { + editorOptions: this.options + }); + this.draw.insertElementList([dateElement]); + } + getDateElementRange() { + let leftIndex = -1; + let rightIndex = -1; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return null; + const elementList = this.draw.getElementList(); + const startElement = elementList[startIndex]; + if (startElement.type !== ElementType.DATE) + return null; + let preIndex = startIndex; + while (preIndex >= 0) { + const preElement = elementList[preIndex]; + if (preElement.dateId !== startElement.dateId) { + leftIndex = preIndex; + break; + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.dateId !== startElement.dateId) { + rightIndex = nextIndex - 1; + break; + } + nextIndex++; + } + if (nextIndex === elementList.length) { + rightIndex = nextIndex - 1; + } + if (!~leftIndex || !~rightIndex) + return null; + return [leftIndex, rightIndex]; + } + clearDatePicker() { + this.datePicker.dispose(); + } + renderDatePicker(element, position) { + const elementList = this.draw.getElementList(); + const range = this.getDateElementRange(); + const value = range ? elementList.slice(range[0] + 1, range[1] + 1).map((el) => el.value).join("") : ""; + this.datePicker.render({ + value, + position, + dateFormat: element.dateFormat + }); + } +} +var BlockType; +(function(BlockType2) { + BlockType2["IFRAME"] = "iframe"; + BlockType2["VIDEO"] = "video"; +})(BlockType || (BlockType = {})); +const _IFrameBlock = class { + constructor(element) { + this.element = element; + } + _defineIframeProperties(iframeWindow) { + Object.defineProperties(iframeWindow, { + parent: { + get: () => null + }, + __POWERED_BY_CANVAS_EDITOR__: { + get: () => true + } + }); + } + render(blockItemContainer) { + var _a, _b; + const block = this.element.block; + const iframe = document.createElement("iframe"); + iframe.setAttribute("data-id", this.element.id); + iframe.sandbox.add(..._IFrameBlock.sandbox); + iframe.style.border = "none"; + iframe.style.width = "100%"; + iframe.style.height = "100%"; + if ((_a = block.iframeBlock) == null ? void 0 : _a.src) { + iframe.src = block.iframeBlock.src; + } else if ((_b = block.iframeBlock) == null ? void 0 : _b.srcdoc) { + iframe.srcdoc = block.iframeBlock.srcdoc; + } + blockItemContainer.append(iframe); + this._defineIframeProperties(iframe.contentWindow); + } +}; +let IFrameBlock = _IFrameBlock; +IFrameBlock.sandbox = ["allow-scripts", "allow-same-origin"]; +class VideoBlock { + constructor(element) { + this.element = element; + } + render(blockItemContainer) { + var _a; + const block = this.element.block; + const video = document.createElement("video"); + video.style.width = "100%"; + video.style.height = "100%"; + video.style.objectFit = "contain"; + video.src = ((_a = block.videoBlock) == null ? void 0 : _a.src) || ""; + video.controls = true; + video.crossOrigin = "anonymous"; + blockItemContainer.append(video); + } +} +class BaseBlock { + constructor(blockParticle, element) { + this.draw = blockParticle.getDraw(); + this.blockContainer = blockParticle.getBlockContainer(); + this.element = element; + this.block = null; + this.blockItem = this._createBlockItem(); + this.blockContainer.append(this.blockItem); + } + getBlockElement() { + return this.element; + } + _createBlockItem() { + const blockItem = document.createElement("div"); + blockItem.classList.add(`${EDITOR_PREFIX}-block-item`); + return blockItem; + } + render() { + const block = this.element.block; + if (block.type === BlockType.IFRAME) { + this.block = new IFrameBlock(this.element); + this.block.render(this.blockItem); + } else if (block.type === BlockType.VIDEO) { + this.block = new VideoBlock(this.element); + this.block.render(this.blockItem); + } + } + setClientRects(pageNo, x, y) { + const height = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const preY = pageNo * (height + pageGap); + const { metrics } = this.element; + this.blockItem.style.width = `${metrics.width}px`; + this.blockItem.style.height = `${metrics.height}px`; + this.blockItem.style.left = `${x}px`; + this.blockItem.style.top = `${preY + y}px`; + } + remove() { + this.blockItem.remove(); + } +} +class BlockParticle { + constructor(draw) { + this.draw = draw; + this.container = draw.getContainer(); + this.blockMap = /* @__PURE__ */ new Map(); + this.blockContainer = this._createBlockContainer(); + this.container.append(this.blockContainer); + } + _createBlockContainer() { + const blockContainer = document.createElement("div"); + blockContainer.classList.add(`${EDITOR_PREFIX}-block-container`); + return blockContainer; + } + getDraw() { + return this.draw; + } + getBlockContainer() { + return this.blockContainer; + } + render(pageNo, element, x, y) { + const id = element.id; + const cacheBlock = this.blockMap.get(id); + if (cacheBlock) { + cacheBlock.setClientRects(pageNo, x, y); + } else { + const newBlock = new BaseBlock(this, element); + newBlock.render(); + newBlock.setClientRects(pageNo, x, y); + this.blockMap.set(id, newBlock); + } + } + clear() { + if (!this.blockMap.size) + return; + const elementList = this.draw.getElementList(); + const blockElementIds = []; + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (element.type === ElementType.BLOCK) { + blockElementIds.push(element.id); + } + } + this.blockMap.forEach((block) => { + const id = block.getBlockElement().id; + if (!blockElementIds.includes(id)) { + block.remove(); + this.blockMap.delete(id); + } + }); + } +} +const contextmenu$1 = { + global: { + cut: "\u526A\u5207", + copy: "\u590D\u5236", + paste: "\u7C98\u8D34", + selectAll: "\u5168\u9009", + print: "\u6253\u5370" + }, + control: { + "delete": "\u5220\u9664\u63A7\u4EF6" + }, + hyperlink: { + "delete": "\u5220\u9664\u94FE\u63A5", + cancel: "\u53D6\u6D88\u94FE\u63A5", + edit: "\u7F16\u8F91\u94FE\u63A5" + }, + image: { + change: "\u66F4\u6539\u56FE\u7247", + saveAs: "\u53E6\u5B58\u4E3A\u56FE\u7247", + textWrap: "\u6587\u5B57\u73AF\u7ED5", + textWrapType: { + embed: "\u5D4C\u5165\u578B", + upDown: "\u4E0A\u4E0B\u578B\u73AF\u7ED5", + surround: "\u56DB\u5468\u578B\u73AF\u7ED5", + floatTop: "\u6D6E\u4E8E\u6587\u5B57\u4E0A\u65B9", + floatBottom: "\u886C\u4E8E\u6587\u5B57\u4E0B\u65B9" + } + }, + table: { + insertRowCol: "\u63D2\u5165\u884C\u5217", + insertTopRow: "\u4E0A\u65B9\u63D2\u51651\u884C", + insertBottomRow: "\u4E0B\u65B9\u63D2\u51651\u884C", + insertLeftCol: "\u5DE6\u4FA7\u63D2\u51651\u5217", + insertRightCol: "\u53F3\u4FA7\u63D2\u51651\u5217", + deleteRowCol: "\u5220\u9664\u884C\u5217", + deleteRow: "\u5220\u96641\u884C", + deleteCol: "\u5220\u96641\u5217", + deleteTable: "\u5220\u9664\u6574\u4E2A\u8868\u683C", + mergeCell: "\u5408\u5E76\u5355\u5143\u683C", + mergeCancelCell: "\u53D6\u6D88\u5408\u5E76", + verticalAlign: "\u5782\u76F4\u5BF9\u9F50", + verticalAlignTop: "\u9876\u7AEF\u5BF9\u9F50", + verticalAlignMiddle: "\u5782\u76F4\u5C45\u4E2D", + verticalAlignBottom: "\u5E95\u7AEF\u5BF9\u9F50", + border: "\u8868\u683C\u8FB9\u6846", + borderAll: "\u6240\u6709\u6846\u7EBF", + borderEmpty: "\u65E0\u6846\u7EBF", + borderExternal: "\u5916\u4FA7\u6846\u7EBF", + borderTd: "\u5355\u5143\u683C\u8FB9\u6846", + borderTdTop: "\u4E0A\u8FB9\u6846", + borderTdRight: "\u53F3\u8FB9\u6846", + borderTdBottom: "\u4E0B\u8FB9\u6846", + borderTdLeft: "\u5DE6\u8FB9\u6846", + borderTdForward: "\u6B63\u659C\u7EBF", + borderTdBack: "\u53CD\u659C\u7EBF" + } +}; +const datePicker$1 = { + now: "\u6B64\u523B", + confirm: "\u786E\u5B9A", + "return": "\u8FD4\u56DE\u65E5\u671F", + timeSelect: "\u65F6\u95F4\u9009\u62E9", + weeks: { + sun: "\u65E5", + mon: "\u4E00", + tue: "\u4E8C", + wed: "\u4E09", + thu: "\u56DB", + fri: "\u4E94", + sat: "\u516D" + }, + year: "\u5E74", + month: "\u6708", + hour: "\u65F6", + minute: "\u5206", + second: "\u79D2" +}; +const frame$1 = { + header: "\u9875\u7709", + footer: "\u9875\u811A" +}; +const pageBreak$1 = { + displayName: "\u5206\u9875\u7B26" +}; +const zone$1 = { + headerTip: "\u53CC\u51FB\u7F16\u8F91\u9875\u7709", + footerTip: "\u53CC\u51FB\u7F16\u8F91\u9875\u811A" +}; +var zhCN = { + contextmenu: contextmenu$1, + datePicker: datePicker$1, + frame: frame$1, + pageBreak: pageBreak$1, + zone: zone$1 +}; +const contextmenu = { + global: { + cut: "Cut", + copy: "Copy", + paste: "Paste", + selectAll: "Select all", + print: "Print" + }, + control: { + "delete": "Delete control" + }, + hyperlink: { + "delete": "Delete hyperlink", + cancel: "Cancel hyperlink", + edit: "Edit hyperlink" + }, + image: { + change: "Change image", + saveAs: "Save as image", + textWrap: "Text wrap", + textWrapType: { + embed: "Embed", + upDown: "Up down", + surround: "Surround", + floatTop: "Float above text", + floatBottom: "Float below text" + } + }, + table: { + insertRowCol: "Insert row col", + insertTopRow: "Insert top 1 row", + insertBottomRow: "Insert bottom 1 row", + insertLeftCol: "Insert left 1 col", + insertRightCol: "Insert right 1 col", + deleteRowCol: "Delete row col", + deleteRow: "Delete 1 row", + deleteCol: "Delete 1 col", + deleteTable: "Delete table", + mergeCell: "Merge cell", + mergeCancelCell: "Cancel merge cell", + verticalAlign: "Vertical align", + verticalAlignTop: "Top", + verticalAlignMiddle: "Middle", + verticalAlignBottom: "Bottom", + border: "Table border", + borderAll: "All", + borderEmpty: "Empty", + borderExternal: "External", + borderTd: "Table cell border", + borderTdTop: "Top", + borderTdRight: "Right", + borderTdBottom: "Bottom", + borderTdLeft: "Left", + borderTdForward: "Forward", + borderTdBack: "Back" + } +}; +const datePicker = { + now: "Now", + confirm: "Confirm", + "return": "Return", + timeSelect: "Time select", + weeks: { + sun: "Sun", + mon: "Mon", + tue: "Tue", + wed: "Wed", + thu: "Thu", + fri: "Fri", + sat: "Sat" + }, + year: " ", + month: " ", + hour: "Hour", + minute: "Minute", + second: "Second" +}; +const frame = { + header: "Header", + footer: "Footer" +}; +const pageBreak = { + displayName: "Page Break" +}; +const zone = { + headerTip: "Double click to edit header", + footerTip: "Double click to edit footer" +}; +var en = { + contextmenu, + datePicker, + frame, + pageBreak, + zone +}; +class I18n { + constructor() { + this.langMap = /* @__PURE__ */ new Map([ + ["zhCN", zhCN], + ["en", en] + ]); + this.currentLocale = "zhCN"; + } + registerLangMap(locale, lang) { + const sourceLang = this.langMap.get(locale); + this.langMap.set(locale, mergeObject(sourceLang || zhCN, lang)); + } + getLocale() { + return this.currentLocale; + } + setLocale(locale) { + this.currentLocale = locale; + } + getLang() { + return this.langMap.get(this.currentLocale) || zhCN; + } + t(path) { + const keyList = path.split("."); + let value = ""; + let item = this.getLang(); + for (let k = 0; k < keyList.length; k++) { + const key = keyList[k]; + const currentValue = Reflect.get(item, key); + if (currentValue) { + value = item = currentValue; + } else { + return ""; + } + } + return value; + } +} +class ImageObserver { + constructor() { + this.promiseList = []; + } + add(payload) { + this.promiseList.push(payload); + } + clearAll() { + this.promiseList = []; + } + allSettled() { + return Promise.allSettled(this.promiseList); + } +} +class ZoneTip { + constructor(draw, zone2) { + this.draw = draw; + this.zone = zone2; + this.i18n = draw.getI18n(); + this.container = draw.getContainer(); + this.pageContainer = draw.getPageContainer(); + const { tipContainer, tipContent } = this._drawZoneTip(); + this.tipContainer = tipContainer; + this.tipContent = tipContent; + this.isDisableMouseMove = true; + this.currentMoveZone = EditorZone.MAIN; + const watchZones = []; + const { header, footer } = draw.getOptions(); + if (!header.disabled) { + watchZones.push(EditorZone.HEADER); + } + if (!footer.disabled) { + watchZones.push(EditorZone.FOOTER); + } + if (watchZones.length) { + this._watchMouseMoveZoneChange(watchZones); + } + } + _watchMouseMoveZoneChange(watchZones) { + this.pageContainer.addEventListener("mousemove", throttle((evt) => { + if (this.isDisableMouseMove || !this.draw.getIsPagingMode()) + return; + if (!evt.offsetY) + return; + if (evt.target instanceof HTMLCanvasElement) { + const mousemoveZone = this.zone.getZoneByY(evt.offsetY); + if (!watchZones.includes(mousemoveZone)) { + this._updateZoneTip(false); + return; + } + this.currentMoveZone = mousemoveZone; + this._updateZoneTip(this.zone.getZone() === EditorZone.MAIN && (mousemoveZone === EditorZone.HEADER || mousemoveZone === EditorZone.FOOTER), evt.x, evt.y); + } else { + this._updateZoneTip(false); + } + }, 250)); + this.pageContainer.addEventListener("mouseenter", () => { + this.isDisableMouseMove = false; + }); + this.pageContainer.addEventListener("mouseleave", () => { + this.isDisableMouseMove = true; + this._updateZoneTip(false); + }); + } + _drawZoneTip() { + const tipContainer = document.createElement("div"); + tipContainer.classList.add(`${EDITOR_PREFIX}-zone-tip`); + const tipContent = document.createElement("span"); + tipContainer.append(tipContent); + this.container.append(tipContainer); + return { + tipContainer, + tipContent + }; + } + _updateZoneTip(visible, left2, top) { + if (visible) { + this.tipContainer.classList.add("show"); + this.tipContainer.style.left = `${left2}px`; + this.tipContainer.style.top = `${top}px`; + this.tipContent.innerText = this.i18n.t(`zone.${this.currentMoveZone === EditorZone.HEADER ? "headerTip" : "footerTip"}`); + } else { + this.tipContainer.classList.remove("show"); + } + } +} +class Zone { + constructor(draw) { + this.INDICATOR_PADDING = 2; + this.INDICATOR_TITLE_TRANSLATE = [20, 5]; + this.draw = draw; + this.i18n = draw.getI18n(); + this.options = draw.getOptions(); + this.container = draw.getContainer(); + this.currentZone = EditorZone.MAIN; + this.indicatorContainer = null; + if (!this.options.zone.tipDisabled) { + new ZoneTip(draw, this); + } + } + isHeaderActive() { + return this.getZone() === EditorZone.HEADER; + } + isMainActive() { + return this.getZone() === EditorZone.MAIN; + } + isFooterActive() { + return this.getZone() === EditorZone.FOOTER; + } + getZone() { + return this.currentZone; + } + setZone(payload) { + const { header, footer } = this.options; + if (!header.editable && payload === EditorZone.HEADER || !footer.editable && payload === EditorZone.FOOTER) { + return; + } + if (this.currentZone === payload) + return; + this.currentZone = payload; + this.draw.getRange().clearRange(); + this.draw.render({ + isSubmitHistory: false, + isSetCursor: false, + isCompute: false + }); + this.drawZoneIndicator(); + nextTick(() => { + const listener = this.draw.getListener(); + if (listener.zoneChange) { + listener.zoneChange(payload); + } + const eventBus = this.draw.getEventBus(); + if (eventBus.isSubscribe("zoneChange")) { + eventBus.emit("zoneChange", payload); + } + }); + } + getZoneByY(y) { + const header = this.draw.getHeader(); + const headerBottomY = header.getHeaderTop() + header.getHeight(); + const footer = this.draw.getFooter(); + const pageHeight = this.draw.getHeight(); + const footerTopY = pageHeight - (footer.getFooterBottom() + footer.getHeight()); + if (y < headerBottomY) { + return EditorZone.HEADER; + } + if (y > footerTopY) { + return EditorZone.FOOTER; + } + return EditorZone.MAIN; + } + drawZoneIndicator() { + this._clearZoneIndicator(); + if (!this.isHeaderActive() && !this.isFooterActive()) + return; + const { scale } = this.options; + const isHeaderActive = this.isHeaderActive(); + const [offsetX, offsetY] = this.INDICATOR_TITLE_TRANSLATE; + const pageList = this.draw.getPageList(); + const margins = this.draw.getMargins(); + const innerWidth = this.draw.getInnerWidth(); + const pageHeight = this.draw.getHeight(); + const pageGap = this.draw.getPageGap(); + const preY = pageHeight + pageGap; + this.indicatorContainer = document.createElement("div"); + this.indicatorContainer.classList.add(`${EDITOR_PREFIX}-zone-indicator`); + const header = this.draw.getHeader(); + const footer = this.draw.getFooter(); + const indicatorHeight = isHeaderActive ? header.getHeight() : footer.getHeight(); + const indicatorTop = isHeaderActive ? header.getHeaderTop() : pageHeight - footer.getFooterBottom() - indicatorHeight; + for (let p = 0; p < pageList.length; p++) { + const startY = preY * p + indicatorTop; + const indicatorLeftX = margins[3] - this.INDICATOR_PADDING; + const indicatorRightX = margins[3] + innerWidth + this.INDICATOR_PADDING; + const indicatorTopY = isHeaderActive ? startY - this.INDICATOR_PADDING : startY + indicatorHeight + this.INDICATOR_PADDING; + const indicatorBottomY = isHeaderActive ? startY + indicatorHeight + this.INDICATOR_PADDING : startY - this.INDICATOR_PADDING; + const indicatorTitle = document.createElement("div"); + indicatorTitle.innerText = this.i18n.t(`frame.${isHeaderActive ? "header" : "footer"}`); + indicatorTitle.style.top = `${indicatorBottomY}px`; + indicatorTitle.style.transform = `translate(${offsetX * scale}px, ${offsetY * scale}px) scale(${scale})`; + this.indicatorContainer.append(indicatorTitle); + const lineTop = document.createElement("span"); + lineTop.classList.add(`${EDITOR_PREFIX}-zone-indicator-border__top`); + lineTop.style.top = `${indicatorTopY}px`; + lineTop.style.width = `${innerWidth}px`; + lineTop.style.marginLeft = `${margins[3]}px`; + this.indicatorContainer.append(lineTop); + const lineLeft = document.createElement("span"); + lineLeft.classList.add(`${EDITOR_PREFIX}-zone-indicator-border__left`); + lineLeft.style.top = `${startY}px`; + lineLeft.style.height = `${indicatorHeight}px`; + lineLeft.style.left = `${indicatorLeftX}px`; + this.indicatorContainer.append(lineLeft); + const lineBottom = document.createElement("span"); + lineBottom.classList.add(`${EDITOR_PREFIX}-zone-indicator-border__bottom`); + lineBottom.style.top = `${indicatorBottomY}px`; + this.indicatorContainer.append(lineBottom); + const lineRight = document.createElement("span"); + lineRight.classList.add(`${EDITOR_PREFIX}-zone-indicator-border__right`); + lineRight.style.top = `${startY}px`; + lineRight.style.height = `${indicatorHeight}px`; + lineRight.style.left = `${indicatorRightX}px`; + this.indicatorContainer.append(lineRight); + } + this.container.append(this.indicatorContainer); + } + _clearZoneIndicator() { + var _a; + (_a = this.indicatorContainer) == null ? void 0 : _a.remove(); + this.indicatorContainer = null; + } +} +class Footer { + constructor(draw, data2) { + this.draw = draw; + this.position = draw.getPosition(); + this.options = draw.getOptions(); + this.elementList = data2 || []; + this.rowList = []; + this.positionList = []; + } + getRowList() { + return this.rowList; + } + setElementList(elementList) { + this.elementList = elementList; + } + getElementList() { + return this.elementList; + } + getPositionList() { + return this.positionList; + } + compute() { + this.recovery(); + this._computeRowList(); + this._computePositionList(); + } + recovery() { + this.rowList = []; + this.positionList = []; + } + _computeRowList() { + const innerWidth = this.draw.getInnerWidth(); + this.rowList = this.draw.computeRowList({ + innerWidth, + elementList: this.elementList + }); + } + _computePositionList() { + const footerBottom = this.getFooterBottom(); + const innerWidth = this.draw.getInnerWidth(); + const margins = this.draw.getMargins(); + const startX = margins[3]; + const pageHeight = this.draw.getHeight(); + const footerHeight = this.getHeight(); + const startY = pageHeight - footerBottom - footerHeight; + this.position.computePageRowPosition({ + positionList: this.positionList, + rowList: this.rowList, + pageNo: 0, + startRowIndex: 0, + startIndex: 0, + startX, + startY, + innerWidth, + zone: EditorZone.FOOTER + }); + } + getFooterBottom() { + const { footer: { bottom, disabled }, scale } = this.options; + if (disabled) + return 0; + return Math.floor(bottom * scale); + } + getMaxHeight() { + const { footer: { maxHeightRadio } } = this.options; + const height = this.draw.getHeight(); + return Math.floor(height * maxHeightRadioMapping[maxHeightRadio]); + } + getHeight() { + const maxHeight = this.getMaxHeight(); + const rowHeight = this.getRowHeight(); + return rowHeight > maxHeight ? maxHeight : rowHeight; + } + getRowHeight() { + return this.rowList.reduce((pre, cur) => pre + cur.height, 0); + } + getExtraHeight() { + const margins = this.draw.getMargins(); + const footerHeight = this.getHeight(); + const footerBottom = this.getFooterBottom(); + const extraHeight = footerBottom + footerHeight - margins[2]; + return extraHeight <= 0 ? 0 : extraHeight; + } + render(ctx, pageNo) { + ctx.globalAlpha = 1; + const innerWidth = this.draw.getInnerWidth(); + const maxHeight = this.getMaxHeight(); + const rowList = []; + let curRowHeight = 0; + for (let r = 0; r < this.rowList.length; r++) { + const row = this.rowList[r]; + if (curRowHeight + row.height > maxHeight) { + break; + } + rowList.push(row); + curRowHeight += row.height; + } + this.draw.drawRow(ctx, { + elementList: this.elementList, + positionList: this.positionList, + rowList, + pageNo, + startIndex: 0, + innerWidth, + zone: EditorZone.FOOTER + }); + } +} +class ListParticle { + constructor(draw) { + this.UN_COUNT_STYLE_WIDTH = 20; + this.MEASURE_BASE_TEXT = "0"; + this.LIST_GAP = 10; + this.draw = draw; + this.range = draw.getRange(); + this.options = draw.getOptions(); + } + setList(listType, listStyle) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const changeElementList = this.range.getRangeParagraphElementList(); + if (!changeElementList || !changeElementList.length) + return; + const isUnsetList = changeElementList.find((el) => el.listType === listType && el.listStyle === listStyle); + if (isUnsetList || !listType) { + this.unsetList(); + return; + } + const listId = getUUID(); + changeElementList.forEach((el) => { + el.listId = listId; + el.listType = listType; + el.listStyle = listStyle; + }); + const isSetCursor = startIndex === endIndex; + const curIndex = isSetCursor ? endIndex : startIndex; + this.draw.render({ curIndex, isSetCursor }); + } + unsetList() { + var _a; + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const changeElementList = (_a = this.range.getRangeParagraphElementList()) == null ? void 0 : _a.filter((el) => el.listId); + if (!changeElementList || !changeElementList.length) + return; + const elementList = this.draw.getElementList(); + const endElement = elementList[endIndex]; + if (endElement.listId) { + let start = endIndex + 1; + while (start < elementList.length) { + const element = elementList[start]; + if (element.value === ZERO && !element.listWrap) + break; + if (element.listId !== endElement.listId) { + this.draw.spliceElementList(elementList, start, 0, { + value: ZERO + }); + break; + } + start++; + } + } + changeElementList.forEach((el) => { + delete el.listId; + delete el.listType; + delete el.listStyle; + delete el.listWrap; + }); + const isSetCursor = startIndex === endIndex; + const curIndex = isSetCursor ? endIndex : startIndex; + this.draw.render({ curIndex, isSetCursor }); + } + computeListStyle(ctx, elementList) { + const listStyleMap = /* @__PURE__ */ new Map(); + let start = 0; + let curListId = elementList[start].listId; + let curElementList = []; + const elementLength = elementList.length; + while (start < elementLength) { + const curElement = elementList[start]; + if (curListId && curListId === curElement.listId) { + curElementList.push(curElement); + } else { + if (curElement.listId && curElement.listId !== curListId) { + if (curElementList.length) { + const width = this.getListStyleWidth(ctx, curElementList); + listStyleMap.set(curListId, width); + } + curListId = curElement.listId; + curElementList = curListId ? [curElement] : []; + } + } + start++; + } + if (curElementList.length) { + const width = this.getListStyleWidth(ctx, curElementList); + listStyleMap.set(curListId, width); + } + return listStyleMap; + } + getListStyleWidth(ctx, listElementList) { + const { scale, checkbox } = this.options; + const startElement = listElementList[0]; + if (startElement.listStyle && startElement.listStyle !== ListStyle.DECIMAL) { + if (startElement.listStyle === ListStyle.CHECKBOX) { + return (checkbox.width + this.LIST_GAP) * scale; + } + return this.UN_COUNT_STYLE_WIDTH * scale; + } + const count = listElementList.reduce((pre, cur) => { + if (cur.value === ZERO) { + pre += 1; + } + return pre; + }, 0); + if (!count) + return 0; + const text = `${this.MEASURE_BASE_TEXT.repeat(String(count).length)}${KeyMap.PERIOD}`; + const textMetrics = ctx.measureText(text); + return Math.ceil((textMetrics.width + this.LIST_GAP) * scale); + } + drawListStyle(ctx, row, position) { + var _a; + const { elementList, offsetX, listIndex, ascent } = row; + const startElement = elementList[0]; + if (startElement.value !== ZERO || startElement.listWrap) + return; + let tabWidth = 0; + const { defaultTabWidth, scale, defaultFont, defaultSize } = this.options; + for (let i = 1; i < elementList.length; i++) { + const element = elementList[i]; + if ((element == null ? void 0 : element.type) !== ElementType.TAB) + break; + tabWidth += defaultTabWidth * scale; + } + const { coordinate: { leftTop: [startX, startY] } } = position; + const x = startX - offsetX + tabWidth; + const y = startY + ascent; + if (startElement.listStyle === ListStyle.CHECKBOX) { + const { width, height, gap } = this.options.checkbox; + const checkboxRowElement = { + ...startElement, + checkbox: { + value: !!((_a = startElement.checkbox) == null ? void 0 : _a.value) + }, + metrics: { + ...startElement.metrics, + width: (width + gap * 2) * scale, + height: height * scale + } + }; + this.draw.getCheckboxParticle().render({ + ctx, + x: x - gap * scale, + y, + index: 0, + row: { + ...row, + elementList: [checkboxRowElement, ...row.elementList] + } + }); + } else { + let text = ""; + if (startElement.listType === ListType.UL) { + text = ulStyleMapping[startElement.listStyle] || ulStyleMapping[UlStyle.DISC]; + } else { + text = `${listIndex + 1}${KeyMap.PERIOD}`; + } + if (!text) + return; + ctx.save(); + ctx.font = `${defaultSize * scale}px ${defaultFont}`; + ctx.fillText(text, x, y); + ctx.restore(); + } + } +} +const _LineBreakParticle = class { + constructor(draw) { + this.options = draw.getOptions(); + } + render(ctx, element, x, y) { + const { scale, lineBreak: { color, lineWidth } } = this.options; + ctx.save(); + ctx.beginPath(); + const top = y - _LineBreakParticle.HEIGHT * scale / 2; + const left2 = x + element.metrics.width; + ctx.translate(left2, top); + ctx.scale(scale, scale); + ctx.strokeStyle = color; + ctx.lineWidth = lineWidth; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.beginPath(); + ctx.moveTo(8, 0); + ctx.lineTo(12, 0); + ctx.lineTo(12, 6); + ctx.lineTo(3, 6); + ctx.moveTo(3, 6); + ctx.lineTo(6, 3); + ctx.moveTo(3, 6); + ctx.lineTo(6, 9); + ctx.stroke(); + ctx.closePath(); + ctx.restore(); + } +}; +let LineBreakParticle = _LineBreakParticle; +LineBreakParticle.WIDTH = 12; +LineBreakParticle.HEIGHT = 9; +LineBreakParticle.GAP = 3; +class Placeholder { + constructor(draw) { + this.draw = draw; + this.position = draw.getPosition(); + this.options = draw.getOptions(); + this.elementList = []; + this.rowList = []; + this.positionList = []; + } + _recovery() { + this.elementList = []; + this.rowList = []; + this.positionList = []; + } + _compute() { + this._computeRowList(); + this._computePositionList(); + } + _computeRowList() { + const innerWidth = this.draw.getInnerWidth(); + this.rowList = this.draw.computeRowList({ + innerWidth, + elementList: this.elementList + }); + } + _computePositionList() { + const { lineBreak, scale } = this.options; + const headerExtraHeight = this.draw.getHeader().getExtraHeight(); + const innerWidth = this.draw.getInnerWidth(); + const margins = this.draw.getMargins(); + let startX = margins[3]; + if (!lineBreak.disabled) { + startX += (LineBreakParticle.WIDTH + LineBreakParticle.GAP) * scale; + } + const startY = margins[0] + headerExtraHeight; + this.position.computePageRowPosition({ + positionList: this.positionList, + rowList: this.rowList, + pageNo: 0, + startRowIndex: 0, + startIndex: 0, + startX, + startY, + innerWidth + }); + } + render(ctx) { + const { placeholder: { data: data2, font, size, color, opacity } } = this.options; + if (!data2) + return; + this._recovery(); + this.elementList = [ + { + value: data2, + font, + size, + color + } + ]; + formatElementList(this.elementList, { + editorOptions: this.options, + isForceCompensation: true + }); + this._compute(); + const innerWidth = this.draw.getInnerWidth(); + ctx.save(); + ctx.globalAlpha = opacity; + this.draw.drawRow(ctx, { + elementList: this.elementList, + positionList: this.positionList, + rowList: this.rowList, + pageNo: 0, + startIndex: 0, + innerWidth, + isDrawLineBreak: false + }); + ctx.restore(); + } +} +class Group { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + this.range = draw.getRange(); + this.fillRectMap = /* @__PURE__ */ new Map(); + } + setGroup() { + if (this.draw.isReadonly() || this.draw.getZone().getZone() !== EditorZone.MAIN) { + return null; + } + const selection = this.range.getSelection(); + if (!selection) + return null; + const groupId = getUUID(); + selection.forEach((el) => { + if (!Array.isArray(el.groupIds)) { + el.groupIds = []; + } + el.groupIds.push(groupId); + }); + this.draw.render({ + isSetCursor: false, + isCompute: false + }); + return groupId; + } + getElementListByGroupId(elementList, groupId) { + var _a, _b; + const groupElementList = []; + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const tdGroupElementList = this.getElementListByGroupId(td.value, groupId); + if (tdGroupElementList.length) { + groupElementList.push(...tdGroupElementList); + return groupElementList; + } + } + } + } + if ((_a = element == null ? void 0 : element.groupIds) == null ? void 0 : _a.includes(groupId)) { + groupElementList.push(element); + const nextElement = elementList[e + 1]; + if (!((_b = nextElement == null ? void 0 : nextElement.groupIds) == null ? void 0 : _b.includes(groupId))) + break; + } + } + return groupElementList; + } + deleteGroup(groupId) { + if (this.draw.isReadonly()) + return; + const elementList = this.draw.getOriginalMainElementList(); + const groupElementList = this.getElementListByGroupId(elementList, groupId); + if (!groupElementList.length) + return; + for (let e = 0; e < groupElementList.length; e++) { + const element = groupElementList[e]; + const groupIds = element.groupIds; + const groupIndex = groupIds.findIndex((id) => id === groupId); + groupIds.splice(groupIndex, 1); + if (!groupIds.length) { + delete element.groupIds; + } + } + this.draw.render({ + isSetCursor: false, + isCompute: false + }); + } + getContextByGroupId(elementList, groupId) { + var _a, _b; + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const range = this.getContextByGroupId(td.value, groupId); + if (range) { + return { + ...range, + isTable: true, + index: e, + trIndex: r, + tdIndex: d, + tdId: td.id, + trId: tr.id, + tableId: element.tableId + }; + } + } + } + } + const nextElement = elementList[e + 1]; + if (((_a = element.groupIds) == null ? void 0 : _a.includes(groupId)) && !((_b = nextElement == null ? void 0 : nextElement.groupIds) == null ? void 0 : _b.includes(groupId))) { + return { + isTable: false, + startIndex: e, + endIndex: e + }; + } + } + return null; + } + clearFillInfo() { + this.fillRectMap.clear(); + } + recordFillInfo(element, x, y, width, height) { + const groupIds = element.groupIds; + if (!groupIds) + return; + for (const groupId of groupIds) { + const fillRect = this.fillRectMap.get(groupId); + if (!fillRect) { + this.fillRectMap.set(groupId, { + x, + y, + width, + height + }); + } else { + fillRect.width += width; + } + } + } + render(ctx) { + var _a; + if (!this.fillRectMap.size) + return; + const range = this.range.getRange(); + const elementList = this.draw.getElementList(); + const anchorGroupIds = (_a = elementList[range.endIndex]) == null ? void 0 : _a.groupIds; + const { group: { backgroundColor, opacity, activeOpacity, activeBackgroundColor } } = this.options; + ctx.save(); + this.fillRectMap.forEach((fillRect, groupId) => { + const { x, y, width, height } = fillRect; + if (anchorGroupIds == null ? void 0 : anchorGroupIds.includes(groupId)) { + ctx.globalAlpha = activeOpacity; + ctx.fillStyle = activeBackgroundColor; + } else { + ctx.globalAlpha = opacity; + ctx.fillStyle = backgroundColor; + } + ctx.fillRect(x, y, width, height); + }); + ctx.restore(); + this.clearFillInfo(); + } +} +class MouseObserver { + constructor(draw) { + this.draw = draw; + this.eventBus = this.draw.getEventBus(); + this.pageContainer = this.draw.getPageContainer(); + this.pageContainer.addEventListener("mousemove", this._mousemove.bind(this)); + this.pageContainer.addEventListener("mouseenter", this._mouseenter.bind(this)); + this.pageContainer.addEventListener("mouseleave", this._mouseleave.bind(this)); + } + _mousemove(evt) { + if (!this.eventBus.isSubscribe("mousemove")) + return; + this.eventBus.emit("mousemove", evt); + } + _mouseenter(evt) { + if (!this.eventBus.isSubscribe("mouseenter")) + return; + this.eventBus.emit("mouseenter", evt); + } + _mouseleave(evt) { + if (!this.eventBus.isSubscribe("mouseleave")) + return; + this.eventBus.emit("mouseleave", evt); + } +} +class LineNumber { + constructor(draw) { + this.draw = draw; + this.options = draw.getOptions(); + } + render(ctx, pageNo) { + const { scale, lineNumber: { color, size, font, right: right2, type } } = this.options; + const textParticle = this.draw.getTextParticle(); + const margins = this.draw.getMargins(); + const positionList = this.draw.getPosition().getOriginalMainPositionList(); + const pageRowList = this.draw.getPageRowList(); + const rowList = pageRowList[pageNo]; + ctx.save(); + ctx.fillStyle = color; + ctx.font = `${size * scale}px ${font}`; + for (let i = 0; i < rowList.length; i++) { + const row = rowList[i]; + const { coordinate: { leftBottom } } = positionList[row.startIndex]; + const seq = type === LineNumberType.PAGE ? i + 1 : row.rowIndex + 1; + const textMetrics = textParticle.measureText(ctx, { + value: `${seq}` + }); + const x = margins[3] - (textMetrics.width + right2) * scale; + const y = leftBottom[1] - textMetrics.actualBoundingBoxAscent * scale; + ctx.fillText(`${seq}`, x, y); + } + ctx.restore(); + } +} +class PageBorder { + constructor(draw) { + this.draw = draw; + this.header = draw.getHeader(); + this.footer = draw.getFooter(); + this.options = draw.getOptions(); + } + render(ctx) { + const { scale, pageBorder: { color, lineWidth, padding } } = this.options; + ctx.save(); + ctx.translate(0.5, 0.5); + ctx.strokeStyle = color; + ctx.lineWidth = lineWidth * scale; + const margins = this.draw.getMargins(); + const x = margins[3] - padding[3] * scale; + const y = margins[0] + this.header.getExtraHeight() - padding[0] * scale; + const width = this.draw.getInnerWidth() + (padding[1] + padding[3]) * scale; + const height = this.draw.getHeight() - y - this.footer.getExtraHeight() - margins[2] + padding[2] * scale; + ctx.rect(x, y, width, height); + ctx.stroke(); + ctx.restore(); + } +} +function positionContextChange(draw, payload) { + const { value, oldValue } = payload; + if (oldValue.isTable && !value.isTable) { + draw.getTableTool().dispose(); + } +} +class Actuator { + constructor(draw) { + this.draw = draw; + this.eventBus = draw.getEventBus(); + this.execute(); + } + execute() { + this.eventBus.on("positionContextChange", (payload) => { + positionContextChange(this.draw, payload); + }); + } +} +class TableOperate { + constructor(draw) { + this.draw = draw; + this.range = draw.getRange(); + this.position = draw.getPosition(); + this.tableTool = draw.getTableTool(); + this.tableParticle = draw.getTableParticle(); + this.options = draw.getOptions(); + } + insertTable(row, col) { + var _a; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const { defaultTrMinHeight } = this.options.table; + const elementList = this.draw.getElementList(); + let offsetX = 0; + if ((_a = elementList[startIndex]) == null ? void 0 : _a.listId) { + const positionList = this.position.getPositionList(); + const { rowIndex } = positionList[startIndex]; + const rowList = this.draw.getRowList(); + const row2 = rowList[rowIndex]; + offsetX = (row2 == null ? void 0 : row2.offsetX) || 0; + } + const innerWidth = this.draw.getContextInnerWidth() - offsetX; + const colgroup = []; + const colWidth = innerWidth / col; + for (let c = 0; c < col; c++) { + colgroup.push({ + width: colWidth + }); + } + const trList = []; + for (let r = 0; r < row; r++) { + const tdList = []; + const tr = { + height: defaultTrMinHeight, + tdList + }; + for (let c = 0; c < col; c++) { + tdList.push({ + colspan: 1, + rowspan: 1, + value: [] + }); + } + trList.push(tr); + } + const element = { + type: ElementType.TABLE, + value: "", + colgroup, + trList + }; + formatElementList([element], { + editorOptions: this.options + }); + formatElementContext(elementList, [element], startIndex, { + editorOptions: this.options + }); + const curIndex = startIndex + 1; + this.draw.spliceElementList(elementList, curIndex, startIndex === endIndex ? 0 : endIndex - startIndex, element); + this.range.setRange(curIndex, curIndex); + this.draw.render({ curIndex, isSetCursor: false }); + } + insertTableTopRow() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { index: index2, trIndex, tableId } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const curTrList = element.trList; + const curTr = curTrList[trIndex]; + if (curTr.tdList.length < element.colgroup.length) { + const curTrNo = curTr.tdList[0].rowIndex; + for (let t = 0; t < trIndex; t++) { + const tr = curTrList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + if (td.rowspan > 1 && td.rowIndex + td.rowspan >= curTrNo + 1) { + td.rowspan += 1; + } + } + } + } + const newTrId = getUUID(); + const newTr = { + height: curTr.height, + id: newTrId, + tdList: [] + }; + for (let t = 0; t < curTr.tdList.length; t++) { + const curTd = curTr.tdList[t]; + const newTdId = getUUID(); + newTr.tdList.push({ + id: newTdId, + rowspan: 1, + colspan: curTd.colspan, + value: [ + { + value: ZERO, + size: 16, + tableId, + trId: newTrId, + tdId: newTdId + } + ] + }); + } + curTrList.splice(trIndex, 0, newTr); + this.position.setPositionContext({ + isTable: true, + index: index2, + trIndex, + tdIndex: 0, + tdId: newTr.tdList[0].id, + trId: newTr.id, + tableId + }); + this.range.setRange(0, 0); + this.draw.render({ curIndex: 0 }); + this.tableTool.render(); + } + insertTableBottomRow() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { index: index2, trIndex, tableId } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const curTrList = element.trList; + const curTr = curTrList[trIndex]; + const anchorTr = curTrList.length - 1 === trIndex ? curTr : curTrList[trIndex + 1]; + if (anchorTr.tdList.length < element.colgroup.length) { + const curTrNo = anchorTr.tdList[0].rowIndex; + for (let t = 0; t < trIndex + 1; t++) { + const tr = curTrList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + if (td.rowspan > 1 && td.rowIndex + td.rowspan >= curTrNo + 1) { + td.rowspan += 1; + } + } + } + } + const newTrId = getUUID(); + const newTr = { + height: anchorTr.height, + id: newTrId, + tdList: [] + }; + for (let t = 0; t < anchorTr.tdList.length; t++) { + const curTd = anchorTr.tdList[t]; + const newTdId = getUUID(); + newTr.tdList.push({ + id: newTdId, + rowspan: 1, + colspan: curTd.colspan, + value: [ + { + value: ZERO, + size: 16, + tableId, + trId: newTrId, + tdId: newTdId + } + ] + }); + } + curTrList.splice(trIndex + 1, 0, newTr); + this.position.setPositionContext({ + isTable: true, + index: index2, + trIndex: trIndex + 1, + tdIndex: 0, + tdId: newTr.tdList[0].id, + trId: newTr.id, + tableId: element.id + }); + this.range.setRange(0, 0); + this.draw.render({ curIndex: 0 }); + } + insertTableLeftCol() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { index: index2, tdIndex, tableId } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const curTrList = element.trList; + const curTdIndex = tdIndex; + for (let t = 0; t < curTrList.length; t++) { + const tr = curTrList[t]; + const tdId = getUUID(); + tr.tdList.splice(curTdIndex, 0, { + id: tdId, + rowspan: 1, + colspan: 1, + value: [ + { + value: ZERO, + size: 16, + tableId, + trId: tr.id, + tdId + } + ] + }); + } + const colgroup = element.colgroup; + colgroup.splice(curTdIndex, 0, { + width: this.options.table.defaultColMinWidth + }); + const colgroupWidth = colgroup.reduce((pre, cur) => pre + cur.width, 0); + const width = this.draw.getOriginalInnerWidth(); + if (colgroupWidth > width) { + const adjustWidth = (colgroupWidth - width) / colgroup.length; + for (let g = 0; g < colgroup.length; g++) { + const group2 = colgroup[g]; + group2.width -= adjustWidth; + } + } + this.position.setPositionContext({ + isTable: true, + index: index2, + trIndex: 0, + tdIndex: curTdIndex, + tdId: curTrList[0].tdList[curTdIndex].id, + trId: curTrList[0].id, + tableId + }); + this.range.setRange(0, 0); + this.draw.render({ curIndex: 0 }); + this.tableTool.render(); + } + insertTableRightCol() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { index: index2, tdIndex, tableId } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const curTrList = element.trList; + const curTdIndex = tdIndex + 1; + for (let t = 0; t < curTrList.length; t++) { + const tr = curTrList[t]; + const tdId = getUUID(); + tr.tdList.splice(curTdIndex, 0, { + id: tdId, + rowspan: 1, + colspan: 1, + value: [ + { + value: ZERO, + size: 16, + tableId, + trId: tr.id, + tdId + } + ] + }); + } + const colgroup = element.colgroup; + colgroup.splice(curTdIndex, 0, { + width: this.options.table.defaultColMinWidth + }); + const colgroupWidth = colgroup.reduce((pre, cur) => pre + cur.width, 0); + const width = this.draw.getOriginalInnerWidth(); + if (colgroupWidth > width) { + const adjustWidth = (colgroupWidth - width) / colgroup.length; + for (let g = 0; g < colgroup.length; g++) { + const group2 = colgroup[g]; + group2.width -= adjustWidth; + } + } + this.position.setPositionContext({ + isTable: true, + index: index2, + trIndex: 0, + tdIndex: curTdIndex, + tdId: curTrList[0].tdList[curTdIndex].id, + trId: curTrList[0].id, + tableId: element.id + }); + this.range.setRange(0, 0); + this.draw.render({ curIndex: 0 }); + } + deleteTableRow() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { index: index2, trIndex, tdIndex } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const trList = element.trList; + const curTr = trList[trIndex]; + const curTdRowIndex = curTr.tdList[tdIndex].rowIndex; + if (trList.length <= 1) { + this.deleteTable(); + return; + } + for (let r = 0; r < curTdRowIndex; r++) { + const tr = trList[r]; + const tdList = tr.tdList; + for (let d = 0; d < tdList.length; d++) { + const td = tdList[d]; + if (td.rowIndex + td.rowspan > curTdRowIndex) { + td.rowspan--; + } + } + } + for (let d = 0; d < curTr.tdList.length; d++) { + const td = curTr.tdList[d]; + if (td.rowspan > 1) { + const tdId = getUUID(); + const nextTr = trList[trIndex + 1]; + nextTr.tdList.splice(d, 0, { + id: tdId, + rowspan: td.rowspan - 1, + colspan: td.colspan, + value: [ + { + value: ZERO, + size: 16, + tableId: element.id, + trId: nextTr.id, + tdId + } + ] + }); + } + } + trList.splice(trIndex, 1); + this.position.setPositionContext({ + isTable: false + }); + this.range.clearRange(); + this.draw.render({ + curIndex: positionContext.index + }); + this.tableTool.dispose(); + } + deleteTableCol() { + var _a; + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { index: index2, tdIndex, trIndex } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const curTrList = element.trList; + const curTd = curTrList[trIndex].tdList[tdIndex]; + const curColIndex = curTd.colIndex; + const moreTdTr = curTrList.find((tr) => tr.tdList.length > 1); + if (!moreTdTr) { + this.deleteTable(); + return; + } + for (let t = 0; t < curTrList.length; t++) { + const tr = curTrList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + if (td.colIndex <= curColIndex && td.colIndex + td.colspan > curColIndex) { + if (td.colspan > 1) { + td.colspan--; + } else { + tr.tdList.splice(d, 1); + } + } + } + } + (_a = element.colgroup) == null ? void 0 : _a.splice(curColIndex, 1); + this.position.setPositionContext({ + isTable: false + }); + this.range.setRange(0, 0); + this.draw.render({ + curIndex: positionContext.index + }); + this.tableTool.dispose(); + } + deleteTable() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const originalElementList = this.draw.getOriginalElementList(); + originalElementList.splice(positionContext.index, 1); + const curIndex = positionContext.index - 1; + this.position.setPositionContext({ + isTable: false, + index: curIndex + }); + this.range.setRange(curIndex, curIndex); + this.draw.render({ curIndex }); + this.tableTool.dispose(); + } + mergeTableCell() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { isCrossRowCol, startTdIndex, endTdIndex, startTrIndex, endTrIndex } = this.range.getRange(); + if (!isCrossRowCol) + return; + const { index: index2 } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const curTrList = element.trList; + let startTd = curTrList[startTrIndex].tdList[startTdIndex]; + let endTd = curTrList[endTrIndex].tdList[endTdIndex]; + if (startTd.x > endTd.x || startTd.y > endTd.y) { + [startTd, endTd] = [endTd, startTd]; + } + const startColIndex = startTd.colIndex; + const endColIndex = endTd.colIndex + (endTd.colspan - 1); + const startRowIndex = startTd.rowIndex; + const endRowIndex = endTd.rowIndex + (endTd.rowspan - 1); + const rowCol = []; + for (let t = 0; t < curTrList.length; t++) { + const tr = curTrList[t]; + const tdList = []; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const tdColIndex = td.colIndex; + const tdRowIndex = td.rowIndex; + if (tdColIndex >= startColIndex && tdColIndex <= endColIndex && tdRowIndex >= startRowIndex && tdRowIndex <= endRowIndex) { + tdList.push(td); + } + } + if (tdList.length) { + rowCol.push(tdList); + } + } + if (!rowCol.length) + return; + const lastRow = rowCol[rowCol.length - 1]; + const leftTop = rowCol[0][0]; + const rightBottom = lastRow[lastRow.length - 1]; + const startX = leftTop.x; + const startY = leftTop.y; + const endX = rightBottom.x + rightBottom.width; + const endY = rightBottom.y + rightBottom.height; + for (let t = 0; t < rowCol.length; t++) { + const tr = rowCol[t]; + for (let d = 0; d < tr.length; d++) { + const td = tr[d]; + const tdStartX = td.x; + const tdStartY = td.y; + const tdEndX = tdStartX + td.width; + const tdEndY = tdStartY + td.height; + if (startX > tdStartX || startY > tdStartY || endX < tdEndX || endY < tdEndY) { + return; + } + } + } + const mergeTdIdList = []; + const anchorTd = rowCol[0][0]; + for (let t = 0; t < rowCol.length; t++) { + const tr = rowCol[t]; + for (let d = 0; d < tr.length; d++) { + const td = tr[d]; + const isAnchorTd = t === 0 && d === 0; + if (!isAnchorTd) { + mergeTdIdList.push(td.id); + } + if (t === 0 && d !== 0) { + anchorTd.colspan += td.colspan; + } + if (t !== 0) { + if (anchorTd.colIndex === td.colIndex) { + anchorTd.rowspan += td.rowspan; + } + } + } + } + for (let t = 0; t < curTrList.length; t++) { + const tr = curTrList[t]; + let d = 0; + while (d < tr.tdList.length) { + const td = tr.tdList[d]; + if (mergeTdIdList.includes(td.id)) { + tr.tdList.splice(d, 1); + d--; + } + d++; + } + } + this.position.setPositionContext({ + ...positionContext, + trIndex: anchorTd.trIndex, + tdIndex: anchorTd.tdIndex + }); + const curIndex = anchorTd.value.length - 1; + this.range.setRange(curIndex, curIndex); + this.draw.render(); + this.tableTool.render(); + } + cancelMergeTableCell() { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { index: index2, tdIndex, trIndex } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + const curTrList = element.trList; + const curTr = curTrList[trIndex]; + const curTd = curTr.tdList[tdIndex]; + if (curTd.rowspan === 1 && curTd.colspan === 1) + return; + const colspan = curTd.colspan; + if (curTd.colspan > 1) { + for (let c = 1; c < curTd.colspan; c++) { + const tdId = getUUID(); + curTr.tdList.splice(tdIndex + c, 0, { + id: tdId, + rowspan: 1, + colspan: 1, + value: [ + { + value: ZERO, + size: 16, + tableId: element.id, + trId: curTr.id, + tdId + } + ] + }); + } + curTd.colspan = 1; + } + if (curTd.rowspan > 1) { + for (let r = 1; r < curTd.rowspan; r++) { + const tr = curTrList[trIndex + r]; + for (let c = 0; c < colspan; c++) { + const tdId = getUUID(); + tr.tdList.splice(curTd.colIndex, 0, { + id: tdId, + rowspan: 1, + colspan: 1, + value: [ + { + value: ZERO, + size: 16, + tableId: element.id, + trId: tr.id, + tdId + } + ] + }); + } + } + curTd.rowspan = 1; + } + const curIndex = curTd.value.length - 1; + this.range.setRange(curIndex, curIndex); + this.draw.render(); + this.tableTool.render(); + } + tableTdVerticalAlign(payload) { + const rowCol = this.tableParticle.getRangeRowCol(); + if (!rowCol) + return; + for (let r = 0; r < rowCol.length; r++) { + const row = rowCol[r]; + for (let c = 0; c < row.length; c++) { + const td = row[c]; + if (!td || td.verticalAlign === payload || !td.verticalAlign && payload === VerticalAlign.TOP) { + continue; + } + td.verticalAlign = payload; + } + } + const { endIndex } = this.range.getRange(); + this.draw.render({ + curIndex: endIndex + }); + } + tableBorderType(payload) { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable) + return; + const { index: index2 } = positionContext; + const originalElementList = this.draw.getOriginalElementList(); + const element = originalElementList[index2]; + if (!element.borderType && payload === TableBorder.ALL || element.borderType === payload) { + return; + } + element.borderType = payload; + const { endIndex } = this.range.getRange(); + this.draw.render({ + curIndex: endIndex + }); + } + tableTdBorderType(payload) { + const rowCol = this.tableParticle.getRangeRowCol(); + if (!rowCol) + return; + const tdList = rowCol.flat(); + const isSetBorderType = tdList.some((td) => { + var _a; + return !((_a = td.borderTypes) == null ? void 0 : _a.includes(payload)); + }); + tdList.forEach((td) => { + if (!td.borderTypes) { + td.borderTypes = []; + } + const borderTypeIndex = td.borderTypes.findIndex((type) => type === payload); + if (isSetBorderType) { + if (!~borderTypeIndex) { + td.borderTypes.push(payload); + } + } else { + if (~borderTypeIndex) { + td.borderTypes.splice(borderTypeIndex, 1); + } + } + if (!td.borderTypes.length) { + delete td.borderTypes; + } + }); + const { endIndex } = this.range.getRange(); + this.draw.render({ + curIndex: endIndex + }); + } + tableTdSlashType(payload) { + const rowCol = this.tableParticle.getRangeRowCol(); + if (!rowCol) + return; + const tdList = rowCol.flat(); + const isSetTdSlashType = tdList.some((td) => { + var _a; + return !((_a = td.slashTypes) == null ? void 0 : _a.includes(payload)); + }); + tdList.forEach((td) => { + if (!td.slashTypes) { + td.slashTypes = []; + } + const slashTypeIndex = td.slashTypes.findIndex((type) => type === payload); + if (isSetTdSlashType) { + if (!~slashTypeIndex) { + td.slashTypes.push(payload); + } + } else { + if (~slashTypeIndex) { + td.slashTypes.splice(slashTypeIndex, 1); + } + } + if (!td.slashTypes.length) { + delete td.slashTypes; + } + }); + const { endIndex } = this.range.getRange(); + this.draw.render({ + curIndex: endIndex + }); + } + tableTdBackgroundColor(payload) { + const rowCol = this.tableParticle.getRangeRowCol(); + if (!rowCol) + return; + for (let r = 0; r < rowCol.length; r++) { + const row = rowCol[r]; + for (let c = 0; c < row.length; c++) { + const col = row[c]; + col.backgroundColor = payload; + } + } + this.draw.render({ + isCompute: false + }); + } + tableSelectAll() { + const positionContext = this.position.getPositionContext(); + const { index: index2, tableId, isTable } = positionContext; + if (!isTable || !tableId) + return; + const { startIndex, endIndex } = this.range.getRange(); + const originalElementList = this.draw.getOriginalElementList(); + const trList = originalElementList[index2].trList; + const endTrIndex = trList.length - 1; + const endTdIndex = trList[endTrIndex].tdList.length - 1; + this.range.replaceRange({ + startIndex, + endIndex, + tableId, + startTdIndex: 0, + endTdIndex, + startTrIndex: 0, + endTrIndex + }); + this.draw.render({ + isCompute: false, + isSubmitHistory: false + }); + } +} +class Draw { + constructor(rootContainer, options, data2, listener, eventBus, override) { + this.container = this._wrapContainer(rootContainer); + this.pageList = []; + this.ctxList = []; + this.pageNo = 0; + this.pagePixelRatio = null; + this.mode = options.mode; + this.options = options; + this.elementList = data2.main; + this.listener = listener; + this.eventBus = eventBus; + this.override = override; + this._formatContainer(); + this.pageContainer = this._createPageContainer(); + this._createPage(0); + this.i18n = new I18n(); + this.historyManager = new HistoryManager(this); + this.position = new Position(this); + this.zone = new Zone(this); + this.range = new RangeManager(this); + this.margin = new Margin(this); + this.background = new Background(this); + this.search = new Search(this); + this.group = new Group(this); + this.underline = new Underline(this); + this.strikeout = new Strikeout(this); + this.highlight = new Highlight(this); + this.previewer = new Previewer(this); + this.imageParticle = new ImageParticle(this); + this.laTexParticle = new LaTexParticle(this); + this.textParticle = new TextParticle(this); + this.tableParticle = new TableParticle(this); + this.tableTool = new TableTool(this); + this.tableOperate = new TableOperate(this); + this.pageNumber = new PageNumber(this); + this.lineNumber = new LineNumber(this); + this.waterMark = new Watermark(this); + this.placeholder = new Placeholder(this); + this.header = new Header(this, data2.header); + this.footer = new Footer(this, data2.footer); + this.hyperlinkParticle = new HyperlinkParticle(this); + this.dateParticle = new DateParticle(this); + this.separatorParticle = new SeparatorParticle(this); + this.pageBreakParticle = new PageBreakParticle(this); + this.superscriptParticle = new SuperscriptParticle(); + this.subscriptParticle = new SubscriptParticle(); + this.checkboxParticle = new CheckboxParticle(this); + this.radioParticle = new RadioParticle(this); + this.blockParticle = new BlockParticle(this); + this.listParticle = new ListParticle(this); + this.lineBreakParticle = new LineBreakParticle(this); + this.control = new Control(this); + this.pageBorder = new PageBorder(this); + this.scrollObserver = new ScrollObserver(this); + this.selectionObserver = new SelectionObserver(this); + this.imageObserver = new ImageObserver(); + new MouseObserver(this); + this.canvasEvent = new CanvasEvent(this); + this.cursor = new Cursor(this, this.canvasEvent); + this.canvasEvent.register(); + this.globalEvent = new GlobalEvent(this, this.canvasEvent); + this.globalEvent.register(); + this.workerManager = new WorkerManager(this); + new Actuator(this); + const { letterClass } = options; + this.LETTER_REG = new RegExp(`[${letterClass.join("")}]`); + this.WORD_LIKE_REG = new RegExp(`${letterClass.map((letter) => `[^${letter}][${letter}]`).join("|")}`); + this.rowList = []; + this.pageRowList = []; + this.painterStyle = null; + this.painterOptions = null; + this.visiblePageNoList = []; + this.intersectionPageNo = 0; + this.lazyRenderIntersectionObserver = null; + this.printModeData = null; + this.render({ + isInit: true, + isSetCursor: false, + isFirstRender: true + }); + } + getLetterReg() { + return this.LETTER_REG; + } + getMode() { + return this.mode; + } + setMode(payload) { + if (this.mode === payload) + return; + if (payload === EditorMode.PRINT) { + this.printModeData = { + header: this.header.getElementList(), + main: this.elementList, + footer: this.footer.getElementList() + }; + const clonePrintModeData = deepClone(this.printModeData); + const editorDataKeys = ["header", "main", "footer"]; + editorDataKeys.forEach((key) => { + clonePrintModeData[key] = this.control.filterAssistElement(clonePrintModeData[key]); + }); + this.setEditorData(clonePrintModeData); + } + if (this.mode === EditorMode.PRINT && this.printModeData) { + this.setEditorData(this.printModeData); + this.printModeData = null; + } + this.clearSideEffect(); + this.range.clearRange(); + this.mode = payload; + this.options.mode = payload; + this.render({ + isSetCursor: false, + isSubmitHistory: false + }); + } + isReadonly() { + switch (this.mode) { + case EditorMode.DESIGN: + return false; + case EditorMode.READONLY: + case EditorMode.PRINT: + return true; + case EditorMode.FORM: + return !this.control.getIsRangeWithinControl(); + default: + return false; + } + } + isDisabled() { + var _a, _b, _c, _d, _e; + if (this.mode === EditorMode.DESIGN) + return false; + const { startIndex, endIndex } = this.range.getRange(); + const elementList = this.getElementList(); + if ((_a = this.getTd()) == null ? void 0 : _a.disabled) + return true; + if (startIndex === endIndex) { + const startElement = elementList[startIndex]; + const nextElement = elementList[startIndex + 1]; + return !!(((_b = startElement == null ? void 0 : startElement.title) == null ? void 0 : _b.disabled) && ((_c = nextElement == null ? void 0 : nextElement.title) == null ? void 0 : _c.disabled) || ((_d = startElement == null ? void 0 : startElement.control) == null ? void 0 : _d.disabled) && ((_e = nextElement == null ? void 0 : nextElement.control) == null ? void 0 : _e.disabled)); + } + const selectionElementList = elementList.slice(startIndex + 1, endIndex + 1); + return selectionElementList.some((element) => { + var _a2, _b2; + return ((_a2 = element.title) == null ? void 0 : _a2.disabled) || ((_b2 = element.control) == null ? void 0 : _b2.disabled); + }); + } + isDesignMode() { + return this.mode === EditorMode.DESIGN; + } + getOriginalWidth() { + const { paperDirection, width, height } = this.options; + return paperDirection === PaperDirection.VERTICAL ? width : height; + } + getOriginalHeight() { + const { paperDirection, width, height } = this.options; + return paperDirection === PaperDirection.VERTICAL ? height : width; + } + getWidth() { + return Math.floor(this.getOriginalWidth() * this.options.scale); + } + getHeight() { + return Math.floor(this.getOriginalHeight() * this.options.scale); + } + getMainHeight() { + const pageHeight = this.getHeight(); + return pageHeight - this.getMainOuterHeight(); + } + getMainOuterHeight() { + const margins = this.getMargins(); + const headerExtraHeight = this.header.getExtraHeight(); + const footerExtraHeight = this.footer.getExtraHeight(); + return margins[0] + margins[2] + headerExtraHeight + footerExtraHeight; + } + getCanvasWidth(pageNo = -1) { + const page = this.getPage(pageNo); + return page.width; + } + getCanvasHeight(pageNo = -1) { + const page = this.getPage(pageNo); + return page.height; + } + getInnerWidth() { + const width = this.getWidth(); + const margins = this.getMargins(); + return width - margins[1] - margins[3]; + } + getOriginalInnerWidth() { + const width = this.getOriginalWidth(); + const margins = this.getOriginalMargins(); + return width - margins[1] - margins[3]; + } + getContextInnerWidth() { + const positionContext = this.position.getPositionContext(); + if (positionContext.isTable) { + const { index: index2, trIndex, tdIndex } = positionContext; + const elementList = this.getOriginalElementList(); + const td = elementList[index2].trList[trIndex].tdList[tdIndex]; + const tdPadding = this.getTdPadding(); + return td.width - tdPadding[1] - tdPadding[3]; + } + return this.getOriginalInnerWidth(); + } + getMargins() { + return this.getOriginalMargins().map((m) => m * this.options.scale); + } + getOriginalMargins() { + const { margins, paperDirection } = this.options; + return paperDirection === PaperDirection.VERTICAL ? margins : [margins[1], margins[2], margins[3], margins[0]]; + } + getPageGap() { + return this.options.pageGap * this.options.scale; + } + getOriginalPageGap() { + return this.options.pageGap; + } + getPageNumberBottom() { + const { pageNumber: { bottom }, scale } = this.options; + return bottom * scale; + } + getMarginIndicatorSize() { + return this.options.marginIndicatorSize * this.options.scale; + } + getDefaultBasicRowMarginHeight() { + return this.options.defaultBasicRowMarginHeight * this.options.scale; + } + getTdPadding() { + const { table: { tdPadding }, scale } = this.options; + return tdPadding.map((m) => m * scale); + } + getContainer() { + return this.container; + } + getPageContainer() { + return this.pageContainer; + } + getVisiblePageNoList() { + return this.visiblePageNoList; + } + setVisiblePageNoList(payload) { + this.visiblePageNoList = payload; + if (this.listener.visiblePageNoListChange) { + this.listener.visiblePageNoListChange(this.visiblePageNoList); + } + if (this.eventBus.isSubscribe("visiblePageNoListChange")) { + this.eventBus.emit("visiblePageNoListChange", this.visiblePageNoList); + } + } + getIntersectionPageNo() { + return this.intersectionPageNo; + } + setIntersectionPageNo(payload) { + this.intersectionPageNo = payload; + if (this.listener.intersectionPageNoChange) { + this.listener.intersectionPageNoChange(this.intersectionPageNo); + } + if (this.eventBus.isSubscribe("intersectionPageNoChange")) { + this.eventBus.emit("intersectionPageNoChange", this.intersectionPageNo); + } + } + getPageNo() { + return this.pageNo; + } + setPageNo(payload) { + this.pageNo = payload; + } + getPage(pageNo = -1) { + return this.pageList[~pageNo ? pageNo : this.pageNo]; + } + getPageList() { + return this.pageList; + } + getPageCount() { + return this.pageList.length; + } + getTableRowList(sourceElementList) { + const positionContext = this.position.getPositionContext(); + const { index: index2, trIndex, tdIndex } = positionContext; + return sourceElementList[index2].trList[trIndex].tdList[tdIndex].rowList; + } + getOriginalRowList() { + const zoneManager = this.getZone(); + if (zoneManager.isHeaderActive()) { + return this.header.getRowList(); + } + if (zoneManager.isFooterActive()) { + return this.footer.getRowList(); + } + return this.rowList; + } + getRowList() { + const positionContext = this.position.getPositionContext(); + return positionContext.isTable ? this.getTableRowList(this.getOriginalElementList()) : this.getOriginalRowList(); + } + getPageRowList() { + return this.pageRowList; + } + getCtx() { + return this.ctxList[this.pageNo]; + } + getOptions() { + return this.options; + } + getSearch() { + return this.search; + } + getGroup() { + return this.group; + } + getHistoryManager() { + return this.historyManager; + } + getPosition() { + return this.position; + } + getZone() { + return this.zone; + } + getRange() { + return this.range; + } + getLineBreakParticle() { + return this.lineBreakParticle; + } + getTextParticle() { + return this.textParticle; + } + getHeaderElementList() { + return this.header.getElementList(); + } + getTableElementList(sourceElementList) { + var _a; + const positionContext = this.position.getPositionContext(); + const { index: index2, trIndex, tdIndex } = positionContext; + return ((_a = sourceElementList[index2].trList) == null ? void 0 : _a[trIndex].tdList[tdIndex].value) || []; + } + getElementList() { + const positionContext = this.position.getPositionContext(); + const elementList = this.getOriginalElementList(); + return positionContext.isTable ? this.getTableElementList(elementList) : elementList; + } + getMainElementList() { + const positionContext = this.position.getPositionContext(); + return positionContext.isTable ? this.getTableElementList(this.elementList) : this.elementList; + } + getOriginalElementList() { + const zoneManager = this.getZone(); + if (zoneManager.isHeaderActive()) { + return this.getHeaderElementList(); + } + if (zoneManager.isFooterActive()) { + return this.getFooterElementList(); + } + return this.elementList; + } + getOriginalMainElementList() { + return this.elementList; + } + getFooterElementList() { + return this.footer.getElementList(); + } + getTd() { + const positionContext = this.position.getPositionContext(); + const { index: index2, trIndex, tdIndex, isTable } = positionContext; + if (isTable) { + const elementList = this.getOriginalElementList(); + return elementList[index2].trList[trIndex].tdList[tdIndex]; + } + return null; + } + insertElementList(payload) { + if (!payload.length || !this.range.getIsCanInput()) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + formatElementList(payload, { + isHandleFirstElement: false, + editorOptions: this.options + }); + let curIndex = -1; + let activeControl = this.control.getActiveControl(); + if (!activeControl && this.control.getIsRangeWithinControl()) { + this.control.initControl(); + activeControl = this.control.getActiveControl(); + } + if (activeControl && this.control.getIsRangeWithinControl()) { + curIndex = activeControl.setValue(payload, void 0, { + isIgnoreDisabledRule: true + }); + } else { + const elementList = this.getElementList(); + const isCollapsed = startIndex === endIndex; + const start = startIndex + 1; + if (!isCollapsed) { + this.spliceElementList(elementList, start, endIndex - startIndex); + } + this.spliceElementList(elementList, start, 0, ...payload); + curIndex = startIndex + payload.length; + const preElement = elementList[start - 1]; + if (payload[0].listId && preElement && !preElement.listId && (preElement == null ? void 0 : preElement.value) === ZERO && (!preElement.type || preElement.type === ElementType.TEXT)) { + elementList.splice(startIndex, 1); + curIndex -= 1; + } + } + if (~curIndex) { + this.range.setRange(curIndex, curIndex); + this.render({ + curIndex + }); + } + } + appendElementList(elementList, options = {}) { + if (!elementList.length) + return; + formatElementList(elementList, { + isHandleFirstElement: false, + editorOptions: this.options + }); + let curIndex; + const { isPrepend } = options; + if (isPrepend) { + this.elementList.splice(1, 0, ...elementList); + curIndex = elementList.length; + } else { + this.elementList.push(...elementList); + curIndex = this.elementList.length - 1; + } + this.range.setRange(curIndex, curIndex); + this.render({ + curIndex + }); + } + spliceElementList(elementList, start, deleteCount, ...items) { + var _a, _b, _c, _d; + const isDesignMode = this.isDesignMode(); + if (deleteCount > 0) { + const endIndex = start + deleteCount; + const endElement = elementList[endIndex]; + const endElementListId = endElement == null ? void 0 : endElement.listId; + if (endElementListId && ((_a = elementList[start - 1]) == null ? void 0 : _a.listId) !== endElementListId) { + let startIndex = endIndex; + while (startIndex < elementList.length) { + const curElement = elementList[startIndex]; + if (curElement.listId !== endElementListId || curElement.value === ZERO) { + break; + } + delete curElement.listId; + delete curElement.listType; + delete curElement.listStyle; + startIndex++; + } + } + if (!this.control.getActiveControl()) { + const tdDeletable = (_b = this.getTd()) == null ? void 0 : _b.deletable; + let deleteIndex = endIndex - 1; + while (deleteIndex >= start) { + const deleteElement = elementList[deleteIndex]; + if (isDesignMode || tdDeletable !== false && ((_c = deleteElement == null ? void 0 : deleteElement.control) == null ? void 0 : _c.deletable) !== false && ((_d = deleteElement == null ? void 0 : deleteElement.title) == null ? void 0 : _d.deletable) !== false) { + elementList.splice(deleteIndex, 1); + } + deleteIndex--; + } + } else { + elementList.splice(start, deleteCount); + } + } + for (let i = 0; i < items.length; i++) { + elementList.splice(start + i, 0, items[i]); + } + } + getCanvasEvent() { + return this.canvasEvent; + } + getGlobalEvent() { + return this.globalEvent; + } + getListener() { + return this.listener; + } + getEventBus() { + return this.eventBus; + } + getOverride() { + return this.override; + } + getCursor() { + return this.cursor; + } + getPreviewer() { + return this.previewer; + } + getImageParticle() { + return this.imageParticle; + } + getTableTool() { + return this.tableTool; + } + getTableOperate() { + return this.tableOperate; + } + getTableParticle() { + return this.tableParticle; + } + getHeader() { + return this.header; + } + getFooter() { + return this.footer; + } + getHyperlinkParticle() { + return this.hyperlinkParticle; + } + getDateParticle() { + return this.dateParticle; + } + getListParticle() { + return this.listParticle; + } + getCheckboxParticle() { + return this.checkboxParticle; + } + getRadioParticle() { + return this.radioParticle; + } + getControl() { + return this.control; + } + getWorkerManager() { + return this.workerManager; + } + getImageObserver() { + return this.imageObserver; + } + getI18n() { + return this.i18n; + } + getRowCount() { + return this.getRowList().length; + } + async getDataURL(payload = {}) { + const { pixelRatio, mode } = payload; + if (pixelRatio) { + this.setPagePixelRatio(pixelRatio); + } + const currentMode = this.mode; + const isSwitchMode = !!mode && currentMode !== mode; + if (isSwitchMode) { + this.setMode(mode); + } + this.render({ + isLazy: false, + isCompute: false, + isSetCursor: false, + isSubmitHistory: false + }); + await this.imageObserver.allSettled(); + const dataUrlList = this.pageList.map((c) => c.toDataURL()); + if (pixelRatio) { + this.setPagePixelRatio(null); + } + if (isSwitchMode) { + this.setMode(currentMode); + } + return dataUrlList; + } + getPainterStyle() { + return this.painterStyle && Object.keys(this.painterStyle).length ? this.painterStyle : null; + } + getPainterOptions() { + return this.painterOptions; + } + setPainterStyle(payload, options) { + this.painterStyle = payload; + this.painterOptions = options || null; + if (this.getPainterStyle()) { + this.pageList.forEach((c) => c.style.cursor = "copy"); + } + } + setDefaultRange() { + if (!this.elementList.length) + return; + setTimeout(() => { + const curIndex = this.elementList.length - 1; + this.range.setRange(curIndex, curIndex); + this.range.setRangeStyle(); + }); + } + getIsPagingMode() { + return this.options.pageMode === PageMode.PAGING; + } + setPageMode(payload) { + if (!payload || this.options.pageMode === payload) + return; + this.options.pageMode = payload; + if (payload === PageMode.PAGING) { + const { height } = this.options; + const dpr = this.getPagePixelRatio(); + const canvas = this.pageList[0]; + canvas.style.height = `${height}px`; + canvas.height = height * dpr; + this._initPageContext(this.ctxList[0]); + } else { + this._disconnectLazyRender(); + this.header.recovery(); + this.footer.recovery(); + this.zone.setZone(EditorZone.MAIN); + } + const { startIndex } = this.range.getRange(); + const isCollapsed = this.range.getIsCollapsed(); + this.render({ + isSetCursor: true, + curIndex: startIndex, + isSubmitHistory: false + }); + if (!isCollapsed) { + this.cursor.drawCursor({ + isShow: false + }); + } + setTimeout(() => { + if (this.listener.pageModeChange) { + this.listener.pageModeChange(payload); + } + if (this.eventBus.isSubscribe("pageModeChange")) { + this.eventBus.emit("pageModeChange", payload); + } + }); + } + setPageScale(payload) { + const dpr = this.getPagePixelRatio(); + this.options.scale = payload; + const width = this.getWidth(); + const height = this.getHeight(); + this.container.style.width = `${width}px`; + this.pageList.forEach((p, i) => { + p.width = width * dpr; + p.height = height * dpr; + p.style.width = `${width}px`; + p.style.height = `${height}px`; + p.style.marginBottom = `${this.getPageGap()}px`; + this._initPageContext(this.ctxList[i]); + }); + const cursorPosition = this.position.getCursorPosition(); + this.render({ + isSubmitHistory: false, + isSetCursor: !!cursorPosition, + curIndex: cursorPosition == null ? void 0 : cursorPosition.index + }); + if (this.listener.pageScaleChange) { + this.listener.pageScaleChange(payload); + } + if (this.eventBus.isSubscribe("pageScaleChange")) { + this.eventBus.emit("pageScaleChange", payload); + } + } + getPagePixelRatio() { + return this.pagePixelRatio || window.devicePixelRatio; + } + setPagePixelRatio(payload) { + if (!this.pagePixelRatio && payload === window.devicePixelRatio || payload === this.pagePixelRatio) { + return; + } + this.pagePixelRatio = payload; + this.setPageDevicePixel(); + } + setPageDevicePixel() { + const dpr = this.getPagePixelRatio(); + const width = this.getWidth(); + const height = this.getHeight(); + this.pageList.forEach((p, i) => { + p.width = width * dpr; + p.height = height * dpr; + this._initPageContext(this.ctxList[i]); + }); + this.render({ + isSubmitHistory: false, + isSetCursor: false + }); + } + setPaperSize(width, height) { + this.options.width = width; + this.options.height = height; + const dpr = this.getPagePixelRatio(); + const realWidth = this.getWidth(); + const realHeight = this.getHeight(); + this.container.style.width = `${realWidth}px`; + this.pageList.forEach((p, i) => { + p.width = realWidth * dpr; + p.height = realHeight * dpr; + p.style.width = `${realWidth}px`; + p.style.height = `${realHeight}px`; + this._initPageContext(this.ctxList[i]); + }); + this.render({ + isSubmitHistory: false, + isSetCursor: false + }); + } + setPaperDirection(payload) { + const dpr = this.getPagePixelRatio(); + this.options.paperDirection = payload; + const width = this.getWidth(); + const height = this.getHeight(); + this.container.style.width = `${width}px`; + this.pageList.forEach((p, i) => { + p.width = width * dpr; + p.height = height * dpr; + p.style.width = `${width}px`; + p.style.height = `${height}px`; + this._initPageContext(this.ctxList[i]); + }); + this.render({ + isSubmitHistory: false, + isSetCursor: false + }); + } + setPaperMargin(payload) { + this.options.margins = payload; + this.render({ + isSubmitHistory: false, + isSetCursor: false + }); + } + getValue(options = {}) { + const { pageNo, extraPickAttrs } = options; + let mainElementList = this.elementList; + if (Number.isInteger(pageNo) && pageNo >= 0 && pageNo < this.pageRowList.length) { + mainElementList = this.pageRowList[pageNo].flatMap((row) => row.elementList); + } + const data2 = { + header: zipElementList(this.getHeaderElementList(), { + extraPickAttrs + }), + main: zipElementList(mainElementList, { + extraPickAttrs + }), + footer: zipElementList(this.getFooterElementList(), { + extraPickAttrs + }) + }; + return { + version, + data: data2, + options: deepClone(this.options) + }; + } + setValue(payload, options) { + const { header, main, footer } = deepClone(payload); + if (!header && !main && !footer) + return; + const { isSetCursor = false } = options || {}; + const pageComponentData = [header, main, footer]; + pageComponentData.forEach((data2) => { + if (!data2) + return; + formatElementList(data2, { + editorOptions: this.options, + isForceCompensation: true + }); + }); + this.setEditorData({ + header, + main, + footer + }); + this.historyManager.recovery(); + const curIndex = isSetCursor ? (main == null ? void 0 : main.length) ? main.length - 1 : 0 : void 0; + if (curIndex !== void 0) { + this.range.setRange(curIndex, curIndex); + } + this.render({ + curIndex, + isSetCursor, + isFirstRender: true + }); + } + setEditorData(payload) { + const { header, main, footer } = payload; + if (header) { + this.header.setElementList(header); + } + if (main) { + this.elementList = main; + } + if (footer) { + this.footer.setElementList(footer); + } + } + _wrapContainer(rootContainer) { + const container = document.createElement("div"); + rootContainer.append(container); + return container; + } + _formatContainer() { + this.container.style.position = "relative"; + this.container.style.width = `${this.getWidth()}px`; + this.container.setAttribute(EDITOR_COMPONENT, EditorComponent.MAIN); + } + _createPageContainer() { + const pageContainer = document.createElement("div"); + pageContainer.classList.add(`${EDITOR_PREFIX}-page-container`); + this.container.append(pageContainer); + return pageContainer; + } + _createPage(pageNo) { + const width = this.getWidth(); + const height = this.getHeight(); + const canvas = document.createElement("canvas"); + canvas.style.width = `${width}px`; + canvas.style.height = `${height}px`; + canvas.style.display = "block"; + canvas.style.backgroundColor = "#ffffff"; + canvas.style.marginBottom = `${this.getPageGap()}px`; + canvas.setAttribute("data-index", String(pageNo)); + this.pageContainer.append(canvas); + const dpr = this.getPagePixelRatio(); + canvas.width = width * dpr; + canvas.height = height * dpr; + canvas.style.cursor = "text"; + const ctx = canvas.getContext("2d"); + this._initPageContext(ctx); + this.pageList.push(canvas); + this.ctxList.push(ctx); + } + _initPageContext(ctx) { + const dpr = this.getPagePixelRatio(); + ctx.scale(dpr, dpr); + ctx.letterSpacing = "0px"; + ctx.wordSpacing = "0px"; + ctx.direction = "ltr"; + } + getElementFont(el, scale = 1) { + const { defaultSize, defaultFont } = this.options; + const font = el.font || defaultFont; + const size = el.actualSize || el.size || defaultSize; + return `${el.italic ? "italic " : ""}${el.bold ? "bold " : ""}${size * scale}px ${font}`; + } + getElementSize(el) { + return el.actualSize || el.size || this.options.defaultSize; + } + getElementRowMargin(el) { + var _a; + const { defaultBasicRowMarginHeight, defaultRowMargin, scale } = this.options; + return defaultBasicRowMarginHeight * ((_a = el.rowMargin) != null ? _a : defaultRowMargin) * scale; + } + computeRowList(payload) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k; + const { innerWidth, elementList, isPagingMode = false, isFromTable = false, startX = 0, startY = 0, pageHeight = 0, mainOuterHeight = 0, surroundElementList = [] } = payload; + const { defaultSize, defaultRowMargin, scale, table: { tdPadding }, defaultTabWidth } = this.options; + const defaultBasicRowMarginHeight = this.getDefaultBasicRowMarginHeight(); + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + const listStyleMap = this.listParticle.computeListStyle(ctx, elementList); + const rowList = []; + if (elementList.length) { + rowList.push({ + width: 0, + height: 0, + ascent: 0, + elementList: [], + startIndex: 0, + rowIndex: 0, + rowFlex: ((_a = elementList == null ? void 0 : elementList[0]) == null ? void 0 : _a.rowFlex) || ((_b = elementList == null ? void 0 : elementList[1]) == null ? void 0 : _b.rowFlex) + }); + } + let x = startX; + let y = startY; + let pageNo = 0; + let listId; + let listIndex = 0; + let controlRealWidth = 0; + for (let i = 0; i < elementList.length; i++) { + const curRow = rowList[rowList.length - 1]; + const element = elementList[i]; + const rowMargin = defaultBasicRowMarginHeight * ((_c = element.rowMargin) != null ? _c : defaultRowMargin); + const metrics = { + width: 0, + height: 0, + boundingBoxAscent: 0, + boundingBoxDescent: 0 + }; + const offsetX = curRow.offsetX || element.listId && listStyleMap.get(element.listId) || 0; + const availableWidth = innerWidth - offsetX; + x += curRow.elementList.length === 1 ? offsetX : 0; + if (element.type === ElementType.IMAGE || element.type === ElementType.LATEX) { + if (element.imgDisplay === ImageDisplay.SURROUND || element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) { + metrics.width = 0; + metrics.height = 0; + metrics.boundingBoxDescent = 0; + } else { + const elementWidth = element.width * scale; + const elementHeight = element.height * scale; + if (elementWidth > availableWidth) { + const adaptiveHeight = elementHeight * availableWidth / elementWidth; + element.width = availableWidth / scale; + element.height = adaptiveHeight / scale; + metrics.width = availableWidth; + metrics.height = adaptiveHeight; + metrics.boundingBoxDescent = adaptiveHeight; + } else { + metrics.width = elementWidth; + metrics.height = elementHeight; + metrics.boundingBoxDescent = elementHeight; + } + } + metrics.boundingBoxAscent = 0; + } else if (element.type === ElementType.TABLE) { + const tdPaddingWidth = tdPadding[1] + tdPadding[3]; + const tdPaddingHeight = tdPadding[0] + tdPadding[2]; + if (element.pagingId) { + let tableIndex = i + 1; + let combineCount = 0; + while (tableIndex < elementList.length) { + const nextElement2 = elementList[tableIndex]; + if (nextElement2.pagingId === element.pagingId) { + const nexTrList = nextElement2.trList.filter((tr) => !tr.pagingRepeat); + element.trList.push(...nexTrList); + element.height += nextElement2.height; + tableIndex++; + combineCount++; + } else { + break; + } + } + if (combineCount) { + elementList.splice(i + 1, combineCount); + } + } + element.pagingIndex = (_d = element.pagingIndex) != null ? _d : 0; + this.tableParticle.computeRowColInfo(element); + const trList = element.trList; + for (let t = 0; t < trList.length; t++) { + const tr = trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const rowList2 = this.computeRowList({ + innerWidth: (td.width - tdPaddingWidth) * scale, + elementList: td.value, + isFromTable: true, + isPagingMode + }); + const rowHeight = rowList2.reduce((pre, cur) => pre + cur.height, 0); + td.rowList = rowList2; + const curTdHeight = rowHeight / scale + tdPaddingHeight; + if (td.height < curTdHeight) { + const extraHeight = curTdHeight - td.height; + const changeTr = trList[t + td.rowspan - 1]; + changeTr.height += extraHeight; + changeTr.tdList.forEach((changeTd) => { + changeTd.height += extraHeight; + }); + } + let curTdMinHeight = 0; + let curTdRealHeight = 0; + let i2 = 0; + while (i2 < td.rowspan) { + const curTr = trList[i2 + t] || trList[t]; + curTdMinHeight += curTr.minHeight; + curTdRealHeight += curTr.height; + i2++; + } + td.realMinHeight = curTdMinHeight; + td.realHeight = curTdRealHeight; + td.mainHeight = curTdHeight; + } + } + const reduceTrList = this.tableParticle.getTrListGroupByCol(trList); + for (let t = 0; t < reduceTrList.length; t++) { + const tr = reduceTrList[t]; + let reduceHeight = -1; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const curTdRealHeight = td.realHeight; + const curTdHeight = td.mainHeight; + const curTdMinHeight = td.realMinHeight; + const curReduceHeight = curTdHeight < curTdMinHeight ? curTdRealHeight - curTdMinHeight : curTdRealHeight - curTdHeight; + if (!~reduceHeight || curReduceHeight < reduceHeight) { + reduceHeight = curReduceHeight; + } + } + if (reduceHeight > 0) { + const changeTr = trList[t]; + changeTr.height -= reduceHeight; + changeTr.tdList.forEach((changeTd) => { + changeTd.height -= reduceHeight; + }); + } + } + this.tableParticle.computeRowColInfo(element); + const tableHeight = this.tableParticle.getTableHeight(element); + const tableWidth = this.tableParticle.getTableWidth(element); + element.width = tableWidth; + element.height = tableHeight; + const elementWidth = tableWidth * scale; + const elementHeight = tableHeight * scale; + metrics.width = elementWidth; + metrics.height = elementHeight; + metrics.boundingBoxDescent = elementHeight; + metrics.boundingBoxAscent = -rowMargin; + if (isPagingMode) { + const height2 = this.getHeight(); + const marginHeight = this.getMainOuterHeight(); + let curPagePreHeight = marginHeight; + for (let r = 0; r < rowList.length; r++) { + const row = rowList[r]; + if (row.height + curPagePreHeight > height2 || ((_e = rowList[r - 1]) == null ? void 0 : _e.isPageBreak)) { + curPagePreHeight = marginHeight + row.height; + } else { + curPagePreHeight += row.height; + } + } + const rowMarginHeight = rowMargin * 2 * scale; + if (curPagePreHeight + element.trList[0].height + rowMarginHeight > height2 || element.pagingIndex !== 0 && element.trList[0].pagingRepeat) { + curPagePreHeight = marginHeight; + } + if (curPagePreHeight + rowMarginHeight + elementHeight > height2) { + const trList2 = element.trList; + let deleteStart = 0; + let deleteCount = 0; + let preTrHeight = 0; + if (trList2.length > 1) { + for (let r = 0; r < trList2.length; r++) { + const tr = trList2[r]; + const trHeight = tr.height * scale; + if (curPagePreHeight + rowMarginHeight + preTrHeight + trHeight > height2) { + const rowColCount = tr.tdList.reduce((pre, cur) => pre + cur.colspan, 0); + if (((_f = element.colgroup) == null ? void 0 : _f.length) !== rowColCount) { + deleteCount = 0; + } + break; + } else { + deleteStart = r + 1; + deleteCount = trList2.length - deleteStart; + preTrHeight += trHeight; + } + } + } + if (deleteCount) { + const cloneTrList = trList2.splice(deleteStart, deleteCount); + const cloneTrHeight = cloneTrList.reduce((pre, cur) => pre + cur.height, 0); + const pagingId = element.pagingId || getUUID(); + element.pagingId = pagingId; + element.height -= cloneTrHeight; + metrics.height -= cloneTrHeight; + metrics.boundingBoxDescent -= cloneTrHeight; + const cloneElement = deepClone(element); + cloneElement.pagingId = pagingId; + cloneElement.pagingIndex = element.pagingIndex + 1; + const repeatTrList = trList2.filter((tr) => tr.pagingRepeat); + if (repeatTrList.length) { + const cloneRepeatTrList = deepClone(repeatTrList); + cloneRepeatTrList.forEach((tr) => tr.id = getUUID()); + cloneTrList.unshift(...cloneRepeatTrList); + } + cloneElement.trList = cloneTrList; + cloneElement.id = getUUID(); + this.spliceElementList(elementList, i + 1, 0, cloneElement); + } + } + if (element.pagingId) { + const positionContext = this.position.getPositionContext(); + if (positionContext.isTable) { + let newPositionContextIndex = -1; + let newPositionContextTrIndex = -1; + let tableIndex = i; + while (tableIndex < elementList.length) { + const curElement = elementList[tableIndex]; + if (curElement.pagingId !== element.pagingId) + break; + const trIndex = curElement.trList.findIndex((r) => r.id === positionContext.trId); + if (~trIndex) { + newPositionContextIndex = tableIndex; + newPositionContextTrIndex = trIndex; + break; + } + tableIndex++; + } + if (~newPositionContextIndex) { + positionContext.index = newPositionContextIndex; + positionContext.trIndex = newPositionContextTrIndex; + this.position.setPositionContext(positionContext); + } + } + } + } + } else if (element.type === ElementType.SEPARATOR) { + const { separator: { lineWidth } } = this.options; + element.width = availableWidth / scale; + metrics.width = availableWidth; + metrics.height = lineWidth * scale; + metrics.boundingBoxAscent = -rowMargin; + metrics.boundingBoxDescent = -rowMargin + metrics.height; + } else if (element.type === ElementType.PAGE_BREAK) { + element.width = availableWidth / scale; + metrics.width = availableWidth; + metrics.height = defaultSize; + } else if (element.type === ElementType.RADIO || element.controlComponent === ControlComponent.RADIO) { + const { width, height: height2, gap } = this.options.radio; + const elementWidth = width + gap * 2; + element.width = elementWidth; + metrics.width = elementWidth * scale; + metrics.height = height2 * scale; + } else if (element.type === ElementType.CHECKBOX || element.controlComponent === ControlComponent.CHECKBOX) { + const { width, height: height2, gap } = this.options.checkbox; + const elementWidth = width + gap * 2; + element.width = elementWidth; + metrics.width = elementWidth * scale; + metrics.height = height2 * scale; + } else if (element.type === ElementType.TAB) { + metrics.width = defaultTabWidth * scale; + metrics.height = defaultSize * scale; + metrics.boundingBoxDescent = 0; + metrics.boundingBoxAscent = metrics.height; + } else if (element.type === ElementType.BLOCK) { + if (!element.width) { + metrics.width = availableWidth; + } else { + const elementWidth = element.width * scale; + metrics.width = Math.min(elementWidth, availableWidth); + } + metrics.height = element.height * scale; + metrics.boundingBoxDescent = metrics.height; + metrics.boundingBoxAscent = 0; + } else { + const size = element.size || defaultSize; + if (element.type === ElementType.SUPERSCRIPT || element.type === ElementType.SUBSCRIPT) { + element.actualSize = Math.ceil(size * 0.6); + } + metrics.height = (element.actualSize || size) * scale; + ctx.font = this.getElementFont(element); + const fontMetrics = this.textParticle.measureText(ctx, element); + metrics.width = fontMetrics.width * scale; + if (element.letterSpacing) { + metrics.width += element.letterSpacing * scale; + } + metrics.boundingBoxAscent = (element.value === ZERO ? element.size || defaultSize : fontMetrics.actualBoundingBoxAscent) * scale; + metrics.boundingBoxDescent = fontMetrics.actualBoundingBoxDescent * scale; + if (element.type === ElementType.SUPERSCRIPT) { + metrics.boundingBoxAscent += metrics.height / 2; + } else if (element.type === ElementType.SUBSCRIPT) { + metrics.boundingBoxDescent += metrics.height / 2; + } + } + const ascent = element.imgDisplay !== ImageDisplay.INLINE && element.type === ElementType.IMAGE || element.type === ElementType.LATEX ? metrics.height + rowMargin : metrics.boundingBoxAscent + rowMargin; + const height = rowMargin + metrics.boundingBoxAscent + metrics.boundingBoxDescent + rowMargin; + const rowElement = Object.assign(element, { + metrics, + left: 0, + style: this.getElementFont(element, scale) + }); + if ((_g = rowElement.control) == null ? void 0 : _g.minWidth) { + if (rowElement.controlComponent) { + controlRealWidth += metrics.width; + } + if (rowElement.controlComponent === ControlComponent.POSTFIX) { + this.control.setMinWidthControlInfo({ + row: curRow, + rowElement, + availableWidth, + controlRealWidth + }); + controlRealWidth = 0; + } + } + const preElement = elementList[i - 1]; + let nextElement = elementList[i + 1]; + let curRowWidth = curRow.width + metrics.width; + if (this.options.wordBreak === WordBreak.BREAK_WORD) { + if ((!(preElement == null ? void 0 : preElement.type) || (preElement == null ? void 0 : preElement.type) === ElementType.TEXT) && (!element.type || element.type === ElementType.TEXT)) { + const word = `${(preElement == null ? void 0 : preElement.value) || ""}${element.value}`; + if (this.WORD_LIKE_REG.test(word)) { + const { width, endElement } = this.textParticle.measureWord(ctx, elementList, i); + const wordWidth = width * scale; + if (wordWidth <= availableWidth) { + curRowWidth += wordWidth; + nextElement = endElement; + } + } + const punctuationWidth = this.textParticle.measurePunctuationWidth(ctx, nextElement); + curRowWidth += punctuationWidth * scale; + } + } + if (element.listId) { + if (element.listId !== listId) { + listIndex = 0; + } else if (element.value === ZERO && !element.listWrap) { + listIndex++; + } + } + listId = element.listId; + const surroundPosition = this.position.setSurroundPosition({ + pageNo, + rowElement, + row: curRow, + rowElementRect: { + x, + y, + height, + width: metrics.width + }, + availableWidth, + surroundElementList + }); + x = surroundPosition.x; + curRowWidth += surroundPosition.rowIncreaseWidth; + x += metrics.width; + const isForceBreak = element.type === ElementType.SEPARATOR || element.type === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.BLOCK || element.type === ElementType.BLOCK || (preElement == null ? void 0 : preElement.imgDisplay) === ImageDisplay.INLINE || element.imgDisplay === ImageDisplay.INLINE || (preElement == null ? void 0 : preElement.listId) !== element.listId || i !== 0 && element.value === ZERO; + const isWidthNotEnough = curRowWidth > availableWidth; + const isWrap = isForceBreak || isWidthNotEnough; + if (isWrap) { + const row = { + width: metrics.width, + height, + startIndex: i, + elementList: [rowElement], + ascent, + rowIndex: curRow.rowIndex + 1, + rowFlex: ((_h = elementList[i]) == null ? void 0 : _h.rowFlex) || ((_i = elementList[i + 1]) == null ? void 0 : _i.rowFlex), + isPageBreak: element.type === ElementType.PAGE_BREAK + }; + if (rowElement.controlComponent !== ControlComponent.PREFIX && ((_j = rowElement.control) == null ? void 0 : _j.indentation) === ControlIndentation.VALUE_START) { + const preStartIndex = curRow.elementList.findIndex((el) => el.controlId === rowElement.controlId && el.controlComponent !== ControlComponent.PREFIX); + if (~preStartIndex) { + const preRowPositionList = this.position.computeRowPosition({ + row: curRow, + innerWidth: this.getInnerWidth() + }); + const valueStartPosition = preRowPositionList[preStartIndex]; + if (valueStartPosition) { + row.offsetX = valueStartPosition.coordinate.leftTop[0]; + } + } + } + if (element.listId) { + row.isList = true; + row.offsetX = listStyleMap.get(element.listId); + row.listIndex = listIndex; + } + rowList.push(row); + } else { + curRow.width += metrics.width; + if (i === 0 && getIsBlockElement(elementList[1])) { + curRow.height = defaultBasicRowMarginHeight; + curRow.ascent = defaultBasicRowMarginHeight; + } else if (curRow.height < height) { + curRow.height = height; + curRow.ascent = ascent; + } + curRow.elementList.push(rowElement); + } + if (isWrap || i === elementList.length - 1) { + curRow.isWidthNotEnough = isWidthNotEnough && !isForceBreak; + if (!curRow.isSurround && ((preElement == null ? void 0 : preElement.rowFlex) === RowFlex.JUSTIFY || (preElement == null ? void 0 : preElement.rowFlex) === RowFlex.ALIGNMENT && isWidthNotEnough)) { + const rowElementList = ((_k = curRow.elementList[0]) == null ? void 0 : _k.value) === ZERO ? curRow.elementList.slice(1) : curRow.elementList; + const gap = (availableWidth - curRow.width) / (rowElementList.length - 1); + for (let e = 0; e < rowElementList.length - 1; e++) { + const el = rowElementList[e]; + el.metrics.width += gap; + } + curRow.width = availableWidth; + } + } + if (isWrap) { + x = startX; + y += curRow.height; + if (isPagingMode && !isFromTable && pageHeight && (y - startY + mainOuterHeight + height > pageHeight || element.type === ElementType.PAGE_BREAK)) { + y = startY; + deleteSurroundElementList(surroundElementList, pageNo); + pageNo += 1; + } + rowElement.left = 0; + const nextRow = rowList[rowList.length - 1]; + const surroundPosition2 = this.position.setSurroundPosition({ + pageNo, + rowElement, + row: nextRow, + rowElementRect: { + x, + y, + height, + width: metrics.width + }, + availableWidth, + surroundElementList + }); + x = surroundPosition2.x; + x += metrics.width; + } + } + return rowList; + } + _computePageList() { + var _a; + const pageRowList = [[]]; + const { pageMode, pageNumber: { maxPageNo } } = this.options; + const height = this.getHeight(); + const marginHeight = this.getMainOuterHeight(); + let pageHeight = marginHeight; + let pageNo = 0; + if (pageMode === PageMode.CONTINUITY) { + pageRowList[0] = this.rowList; + pageHeight += this.rowList.reduce((pre, cur) => pre + cur.height, 0); + const dpr = this.getPagePixelRatio(); + const pageDom = this.pageList[0]; + const pageDomHeight = Number(pageDom.style.height.replace("px", "")); + if (pageHeight > pageDomHeight) { + pageDom.style.height = `${pageHeight}px`; + pageDom.height = pageHeight * dpr; + } else { + const reduceHeight = pageHeight < height ? height : pageHeight; + pageDom.style.height = `${reduceHeight}px`; + pageDom.height = reduceHeight * dpr; + } + this._initPageContext(this.ctxList[0]); + } else { + for (let i = 0; i < this.rowList.length; i++) { + const row = this.rowList[i]; + if (row.height + pageHeight > height || ((_a = this.rowList[i - 1]) == null ? void 0 : _a.isPageBreak)) { + if (Number.isInteger(maxPageNo) && pageNo >= maxPageNo) { + this.elementList = this.elementList.slice(0, row.startIndex); + break; + } + pageHeight = marginHeight + row.height; + pageRowList.push([row]); + pageNo++; + } else { + pageHeight += row.height; + pageRowList[pageNo].push(row); + } + } + } + return pageRowList; + } + _drawHighlight(ctx, payload) { + var _a; + const { control: { activeBackgroundColor } } = this.options; + const { rowList, positionList } = payload; + const activeControlElement = (_a = this.control.getActiveControl()) == null ? void 0 : _a.getElement(); + for (let i = 0; i < rowList.length; i++) { + const curRow = rowList[i]; + for (let j = 0; j < curRow.elementList.length; j++) { + const element = curRow.elementList[j]; + const preElement = curRow.elementList[j - 1]; + if (element.highlight || activeBackgroundColor && activeControlElement && element.controlId === activeControlElement.controlId && !this.control.getIsRangeInPostfix()) { + if (preElement && preElement.highlight && preElement.highlight !== element.highlight) { + this.highlight.render(ctx); + } + const { coordinate: { leftTop: [x, y] } } = positionList[curRow.startIndex + j]; + const offsetX = element.left || 0; + this.highlight.recordFillInfo(ctx, x - offsetX, y, element.metrics.width + offsetX, curRow.height, element.highlight || activeBackgroundColor); + } else if (preElement == null ? void 0 : preElement.highlight) { + this.highlight.render(ctx); + } + } + this.highlight.render(ctx); + } + } + drawRow(ctx, payload) { + var _a, _b, _c, _d, _e, _f, _g; + this._drawHighlight(ctx, payload); + const { scale, table: { tdPadding }, group: group2, lineBreak } = this.options; + const { rowList, pageNo, elementList, positionList, startIndex, zone: zone2, isDrawLineBreak = !lineBreak.disabled } = payload; + const isPrintMode = this.mode === EditorMode.PRINT; + const { isCrossRowCol, tableId } = this.range.getRange(); + let index2 = startIndex; + for (let i = 0; i < rowList.length; i++) { + const curRow = rowList[i]; + const rangeRecord = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + let tableRangeElement = null; + for (let j = 0; j < curRow.elementList.length; j++) { + const element = curRow.elementList[j]; + const metrics = element.metrics; + const { ascent: offsetY, coordinate: { leftTop: [x, y] } } = positionList[curRow.startIndex + j]; + const preElement = curRow.elementList[j - 1]; + if (element.type === ElementType.IMAGE) { + this.textParticle.complete(); + if (element.imgDisplay !== ImageDisplay.SURROUND && element.imgDisplay !== ImageDisplay.FLOAT_TOP && element.imgDisplay !== ImageDisplay.FLOAT_BOTTOM) { + this.imageParticle.render(ctx, element, x, y + offsetY); + } + } else if (element.type === ElementType.LATEX) { + this.textParticle.complete(); + this.laTexParticle.render(ctx, element, x, y + offsetY); + } else if (element.type === ElementType.TABLE) { + if (isCrossRowCol) { + rangeRecord.x = x; + rangeRecord.y = y; + tableRangeElement = element; + } + this.tableParticle.render(ctx, element, x, y); + } else if (element.type === ElementType.HYPERLINK) { + this.textParticle.complete(); + this.hyperlinkParticle.render(ctx, element, x, y + offsetY); + } else if (element.type === ElementType.DATE) { + const nextElement = curRow.elementList[j + 1]; + if (!preElement || preElement.dateId !== element.dateId) { + this.textParticle.complete(); + } + this.textParticle.record(ctx, element, x, y + offsetY); + if (!nextElement || nextElement.dateId !== element.dateId) { + this.textParticle.complete(); + } + } else if (element.type === ElementType.SUPERSCRIPT) { + this.textParticle.complete(); + this.superscriptParticle.render(ctx, element, x, y + offsetY); + } else if (element.type === ElementType.SUBSCRIPT) { + this.underline.render(ctx); + this.textParticle.complete(); + this.subscriptParticle.render(ctx, element, x, y + offsetY); + } else if (element.type === ElementType.SEPARATOR) { + this.separatorParticle.render(ctx, element, x, y); + } else if (element.type === ElementType.PAGE_BREAK) { + if (this.mode !== EditorMode.CLEAN && !isPrintMode) { + this.pageBreakParticle.render(ctx, element, x, y); + } + } else if (element.type === ElementType.CHECKBOX || element.controlComponent === ControlComponent.CHECKBOX) { + this.textParticle.complete(); + this.checkboxParticle.render({ + ctx, + x, + y: y + offsetY, + index: j, + row: curRow + }); + } else if (element.type === ElementType.RADIO || element.controlComponent === ControlComponent.RADIO) { + this.textParticle.complete(); + this.radioParticle.render({ + ctx, + x, + y: y + offsetY, + index: j, + row: curRow + }); + } else if (element.type === ElementType.TAB) { + this.textParticle.complete(); + } else if (element.rowFlex === RowFlex.ALIGNMENT || element.rowFlex === RowFlex.JUSTIFY) { + this.textParticle.record(ctx, element, x, y + offsetY); + this.textParticle.complete(); + } else if (element.type === ElementType.BLOCK) { + this.textParticle.complete(); + this.blockParticle.render(pageNo, element, x, y); + } else { + if (element.left) { + this.textParticle.complete(); + } + this.textParticle.record(ctx, element, x, y + offsetY); + if (element.width || element.letterSpacing || PUNCTUATION_REG.test(element.value)) { + this.textParticle.complete(); + } + } + if (isDrawLineBreak && !isPrintMode && this.mode !== EditorMode.CLEAN && !curRow.isWidthNotEnough && j === curRow.elementList.length - 1) { + this.lineBreakParticle.render(ctx, element, x, y + curRow.height / 2); + } + if ((_a = element.control) == null ? void 0 : _a.border) { + if (((_b = preElement == null ? void 0 : preElement.control) == null ? void 0 : _b.border) && preElement.controlId !== element.controlId) { + this.control.drawBorder(ctx); + } + const rowMargin = this.getElementRowMargin(element); + this.control.recordBorderInfo(x, y + rowMargin, element.metrics.width, curRow.height - 2 * rowMargin); + } else if ((_c = preElement == null ? void 0 : preElement.control) == null ? void 0 : _c.border) { + this.control.drawBorder(ctx); + } + if (element.underline || ((_d = element.control) == null ? void 0 : _d.underline)) { + if ((preElement == null ? void 0 : preElement.type) === ElementType.SUBSCRIPT && element.type !== ElementType.SUBSCRIPT) { + this.underline.render(ctx); + } + const rowMargin = this.getElementRowMargin(element); + const offsetX = element.left || 0; + let offsetY2 = 0; + if (element.type === ElementType.SUBSCRIPT) { + offsetY2 = this.subscriptParticle.getOffsetY(element); + } + const color = ((_e = element.control) == null ? void 0 : _e.underline) ? this.options.underlineColor : element.color; + this.underline.recordFillInfo(ctx, x - offsetX, y + curRow.height - rowMargin + offsetY2, metrics.width + offsetX, 0, color, (_f = element.textDecoration) == null ? void 0 : _f.style); + } else if ((preElement == null ? void 0 : preElement.underline) || ((_g = preElement == null ? void 0 : preElement.control) == null ? void 0 : _g.underline)) { + this.underline.render(ctx); + } + if (element.strikeout) { + if (!element.type || TEXTLIKE_ELEMENT_TYPE.includes(element.type)) { + if (preElement && (preElement.type === ElementType.SUBSCRIPT && element.type !== ElementType.SUBSCRIPT || preElement.type === ElementType.SUPERSCRIPT && element.type !== ElementType.SUPERSCRIPT || this.getElementSize(preElement) !== this.getElementSize(element))) { + this.strikeout.render(ctx); + } + const standardMetrics = this.textParticle.measureBasisWord(ctx, this.getElementFont(element)); + let adjustY = y + offsetY + standardMetrics.actualBoundingBoxDescent * scale - metrics.height / 2; + if (element.type === ElementType.SUBSCRIPT) { + adjustY += this.subscriptParticle.getOffsetY(element); + } else if (element.type === ElementType.SUPERSCRIPT) { + adjustY += this.superscriptParticle.getOffsetY(element); + } + this.strikeout.recordFillInfo(ctx, x, adjustY, metrics.width); + } + } else if (preElement == null ? void 0 : preElement.strikeout) { + this.strikeout.render(ctx); + } + const { zone: currentZone, startIndex: startIndex2, endIndex } = this.range.getRange(); + if (currentZone === zone2 && startIndex2 !== endIndex && startIndex2 <= index2 && index2 <= endIndex) { + const positionContext = this.position.getPositionContext(); + if (!positionContext.isTable && !element.tdId || positionContext.tdId === element.tdId) { + if (startIndex2 === index2) { + const nextElement = elementList[startIndex2 + 1]; + if (nextElement && nextElement.value === ZERO) { + rangeRecord.x = x + metrics.width; + rangeRecord.y = y; + rangeRecord.height = curRow.height; + rangeRecord.width += this.options.rangeMinWidth; + } + } else { + let rangeWidth = metrics.width; + if (rangeWidth === 0 && curRow.elementList.length === 1) { + rangeWidth = this.options.rangeMinWidth; + } + if (!rangeRecord.width) { + rangeRecord.x = x; + rangeRecord.y = y; + rangeRecord.height = curRow.height; + } + rangeRecord.width += rangeWidth; + } + } + } + if (!group2.disabled && element.groupIds) { + this.group.recordFillInfo(element, x, y, metrics.width, curRow.height); + } + index2++; + if (element.type === ElementType.TABLE) { + const tdPaddingWidth = tdPadding[1] + tdPadding[3]; + for (let t = 0; t < element.trList.length; t++) { + const tr = element.trList[t]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + this.drawRow(ctx, { + elementList: td.value, + positionList: td.positionList, + rowList: td.rowList, + pageNo, + startIndex: 0, + innerWidth: (td.width - tdPaddingWidth) * scale, + zone: zone2, + isDrawLineBreak + }); + } + } + } + } + if (curRow.isList) { + this.listParticle.drawListStyle(ctx, curRow, positionList[curRow.startIndex]); + } + this.textParticle.complete(); + this.control.drawBorder(ctx); + this.underline.render(ctx); + this.strikeout.render(ctx); + this.group.render(ctx); + if (!isPrintMode) { + if (rangeRecord.width && rangeRecord.height) { + const { x, y, width, height } = rangeRecord; + this.range.render(ctx, x, y, width, height); + } + if (isCrossRowCol && tableRangeElement && tableRangeElement.id === tableId) { + const { coordinate: { leftTop: [x, y] } } = positionList[curRow.startIndex]; + this.tableParticle.drawRange(ctx, tableRangeElement, x, y); + } + } + } + } + _drawFloat(ctx, payload) { + const { scale } = this.options; + const floatPositionList = this.position.getFloatPositionList(); + const { imgDisplays, pageNo } = payload; + for (let e = 0; e < floatPositionList.length; e++) { + const floatPosition = floatPositionList[e]; + const element = floatPosition.element; + if ((pageNo === floatPosition.pageNo || floatPosition.zone === EditorZone.HEADER || floatPosition.zone == EditorZone.FOOTER) && element.imgDisplay && imgDisplays.includes(element.imgDisplay) && element.type === ElementType.IMAGE) { + const imgFloatPosition = element.imgFloatPosition; + this.imageParticle.render(ctx, element, imgFloatPosition.x * scale, imgFloatPosition.y * scale); + } + } + } + _clearPage(pageNo) { + const ctx = this.ctxList[pageNo]; + const pageDom = this.pageList[pageNo]; + ctx.clearRect(0, 0, Math.max(pageDom.width, this.getWidth()), Math.max(pageDom.height, this.getHeight())); + this.blockParticle.clear(); + } + _drawPage(payload) { + var _a, _b; + const { elementList, positionList, rowList, pageNo } = payload; + const { inactiveAlpha, pageMode, header, footer, pageNumber, lineNumber, pageBorder } = this.options; + const innerWidth = this.getInnerWidth(); + const ctx = this.ctxList[pageNo]; + ctx.globalAlpha = !this.zone.isMainActive() ? inactiveAlpha : 1; + this._clearPage(pageNo); + this.background.render(ctx, pageNo); + if (this.mode !== EditorMode.PRINT) { + this.margin.render(ctx, pageNo); + } + this._drawFloat(ctx, { + pageNo, + imgDisplays: [ImageDisplay.FLOAT_BOTTOM] + }); + this.control.renderHighlightList(ctx, pageNo); + const index2 = (_a = rowList[0]) == null ? void 0 : _a.startIndex; + this.drawRow(ctx, { + elementList, + positionList, + rowList, + pageNo, + startIndex: index2, + innerWidth, + zone: EditorZone.MAIN + }); + if (this.getIsPagingMode()) { + if (!header.disabled) { + this.header.render(ctx, pageNo); + } + if (!pageNumber.disabled) { + this.pageNumber.render(ctx, pageNo); + } + if (!footer.disabled) { + this.footer.render(ctx, pageNo); + } + } + this._drawFloat(ctx, { + pageNo, + imgDisplays: [ImageDisplay.FLOAT_TOP, ImageDisplay.SURROUND] + }); + if (this.search.getSearchKeyword()) { + this.search.render(ctx, pageNo); + } + if (pageMode !== PageMode.CONTINUITY && this.options.watermark.data) { + this.waterMark.render(ctx); + } + if (this.elementList.length <= 1 && !((_b = this.elementList[0]) == null ? void 0 : _b.listId)) { + this.placeholder.render(ctx); + } + if (!lineNumber.disabled) { + this.lineNumber.render(ctx, pageNo); + } + if (!pageBorder.disabled) { + this.pageBorder.render(ctx); + } + } + _disconnectLazyRender() { + var _a; + (_a = this.lazyRenderIntersectionObserver) == null ? void 0 : _a.disconnect(); + } + _lazyRender() { + const positionList = this.position.getOriginalMainPositionList(); + const elementList = this.getOriginalMainElementList(); + this._disconnectLazyRender(); + this.lazyRenderIntersectionObserver = new IntersectionObserver((entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + const index2 = Number(entry.target.dataset.index); + this._drawPage({ + elementList, + positionList, + rowList: this.pageRowList[index2], + pageNo: index2 + }); + } + }); + }); + this.pageList.forEach((el) => { + this.lazyRenderIntersectionObserver.observe(el); + }); + } + _immediateRender() { + const positionList = this.position.getOriginalMainPositionList(); + const elementList = this.getOriginalMainElementList(); + for (let i = 0; i < this.pageRowList.length; i++) { + this._drawPage({ + elementList, + positionList, + rowList: this.pageRowList[i], + pageNo: i + }); + } + } + render(payload) { + const { header, footer } = this.options; + const { isSubmitHistory = true, isSetCursor = true, isCompute = true, isLazy = true, isInit = false, isSourceHistory = false, isFirstRender = false } = payload || {}; + let { curIndex } = payload || {}; + const innerWidth = this.getInnerWidth(); + const isPagingMode = this.getIsPagingMode(); + const oldPageSize = this.pageRowList.length; + if (isCompute) { + this.position.setFloatPositionList([]); + if (isPagingMode) { + if (!header.disabled) { + this.header.compute(); + } + if (!footer.disabled) { + this.footer.compute(); + } + } + const margins = this.getMargins(); + const pageHeight = this.getHeight(); + const extraHeight = this.header.getExtraHeight(); + const mainOuterHeight = this.getMainOuterHeight(); + const startX = margins[3]; + const startY = margins[0] + extraHeight; + const surroundElementList = pickSurroundElementList(this.elementList); + this.rowList = this.computeRowList({ + startX, + startY, + pageHeight, + mainOuterHeight, + isPagingMode, + innerWidth, + surroundElementList, + elementList: this.elementList + }); + this.pageRowList = this._computePageList(); + this.position.computePositionList(); + const searchKeyword = this.search.getSearchKeyword(); + if (searchKeyword) { + this.search.compute(searchKeyword); + } + this.control.computeHighlightList(); + } + this.imageObserver.clearAll(); + this.cursor.recoveryCursor(); + for (let i = 0; i < this.pageRowList.length; i++) { + if (!this.pageList[i]) { + this._createPage(i); + } + } + const curPageCount = this.pageRowList.length; + const prePageCount = this.pageList.length; + if (prePageCount > curPageCount) { + const deleteCount = prePageCount - curPageCount; + this.ctxList.splice(curPageCount, deleteCount); + this.pageList.splice(curPageCount, deleteCount).forEach((page) => page.remove()); + } + if (isLazy && isPagingMode) { + this._lazyRender(); + } else { + this._immediateRender(); + } + if (isSetCursor) { + curIndex = this.setCursor(curIndex); + } + if (isSubmitHistory && !isFirstRender || curIndex !== void 0 && this.historyManager.isStackEmpty()) { + this.submitHistory(curIndex); + } + nextTick(() => { + if (isCompute && this.control.getActiveControl()) { + this.control.reAwakeControl(); + } + if (isCompute && !this.isReadonly() && this.position.getPositionContext().isTable) { + this.tableTool.render(); + } + if (isCompute && !this.zone.isMainActive()) { + this.zone.drawZoneIndicator(); + } + if (oldPageSize !== this.pageRowList.length) { + if (this.listener.pageSizeChange) { + this.listener.pageSizeChange(this.pageRowList.length); + } + if (this.eventBus.isSubscribe("pageSizeChange")) { + this.eventBus.emit("pageSizeChange", this.pageRowList.length); + } + } + if ((isSubmitHistory || isSourceHistory) && !isInit) { + if (this.listener.contentChange) { + this.listener.contentChange(); + } + if (this.eventBus.isSubscribe("contentChange")) { + this.eventBus.emit("contentChange"); + } + } + }); + } + setCursor(curIndex) { + var _a; + const positionContext = this.position.getPositionContext(); + const positionList = this.position.getPositionList(); + if (positionContext.isTable) { + const { index: index2, trIndex, tdIndex } = positionContext; + const elementList = this.getOriginalElementList(); + const tablePositionList = (_a = elementList[index2].trList) == null ? void 0 : _a[trIndex].tdList[tdIndex].positionList; + if (curIndex === void 0 && tablePositionList) { + curIndex = tablePositionList.length - 1; + } + const tablePosition = tablePositionList == null ? void 0 : tablePositionList[curIndex]; + console.log("tablePosition:::", tablePosition); + this.position.setCursorPosition(tablePosition || null); + } else { + this.position.setCursorPosition(curIndex !== void 0 ? positionList[curIndex] : null); + } + let isShowCursor = true; + if (curIndex !== void 0 && positionContext.isImage && positionContext.isDirectHit) { + const elementList = this.getElementList(); + const element = elementList[curIndex]; + if (IMAGE_ELEMENT_TYPE.includes(element.type)) { + isShowCursor = false; + const position = this.position.getCursorPosition(); + this.previewer.updateResizer(element, position); + } + } + this.cursor.drawCursor({ + isShow: isShowCursor + }); + return curIndex; + } + submitHistory(curIndex) { + const positionContext = this.position.getPositionContext(); + const oldElementList = getSlimCloneElementList(this.elementList); + const oldHeaderElementList = getSlimCloneElementList(this.header.getElementList()); + const oldFooterElementList = getSlimCloneElementList(this.footer.getElementList()); + const oldRange = deepClone(this.range.getRange()); + const pageNo = this.pageNo; + const oldPositionContext = deepClone(positionContext); + const zone2 = this.zone.getZone(); + this.historyManager.execute(() => { + this.zone.setZone(zone2); + this.setPageNo(pageNo); + this.position.setPositionContext(deepClone(oldPositionContext)); + this.header.setElementList(deepClone(oldHeaderElementList)); + this.footer.setElementList(deepClone(oldFooterElementList)); + this.elementList = deepClone(oldElementList); + this.range.replaceRange(deepClone(oldRange)); + this.render({ + curIndex, + isSubmitHistory: false, + isSourceHistory: true + }); + }); + } + destroy() { + this.container.remove(); + this.globalEvent.removeEvent(); + this.scrollObserver.removeEvent(); + this.selectionObserver.removeEvent(); + } + clearSideEffect() { + this.getPreviewer().clearResizer(); + this.getTableTool().dispose(); + this.getHyperlinkParticle().clearHyperlinkPopup(); + this.getDateParticle().clearDatePicker(); + } +} +class Command { + constructor(adapt) { + this.executeMode = adapt.mode.bind(adapt); + this.executeCut = adapt.cut.bind(adapt); + this.executeCopy = adapt.copy.bind(adapt); + this.executePaste = adapt.paste.bind(adapt); + this.executeSelectAll = adapt.selectAll.bind(adapt); + this.executeBackspace = adapt.backspace.bind(adapt); + this.executeSetRange = adapt.setRange.bind(adapt); + this.executeReplaceRange = adapt.replaceRange.bind(adapt); + this.executeSetPositionContext = adapt.setPositionContext.bind(adapt); + this.executeForceUpdate = adapt.forceUpdate.bind(adapt); + this.executeBlur = adapt.blur.bind(adapt); + this.executeUndo = adapt.undo.bind(adapt); + this.executeRedo = adapt.redo.bind(adapt); + this.executePainter = adapt.painter.bind(adapt); + this.executeApplyPainterStyle = adapt.applyPainterStyle.bind(adapt); + this.executeFormat = adapt.format.bind(adapt); + this.executeFont = adapt.font.bind(adapt); + this.executeSize = adapt.size.bind(adapt); + this.executeSizeAdd = adapt.sizeAdd.bind(adapt); + this.executeSizeMinus = adapt.sizeMinus.bind(adapt); + this.executeBold = adapt.bold.bind(adapt); + this.executeItalic = adapt.italic.bind(adapt); + this.executeUnderline = adapt.underline.bind(adapt); + this.executeStrikeout = adapt.strikeout.bind(adapt); + this.executeSuperscript = adapt.superscript.bind(adapt); + this.executeSubscript = adapt.subscript.bind(adapt); + this.executeColor = adapt.color.bind(adapt); + this.executeHighlight = adapt.highlight.bind(adapt); + this.executeTitle = adapt.title.bind(adapt); + this.executeList = adapt.list.bind(adapt); + this.executeRowFlex = adapt.rowFlex.bind(adapt); + this.executeRowMargin = adapt.rowMargin.bind(adapt); + this.executeInsertTable = adapt.insertTable.bind(adapt); + this.executeInsertTableTopRow = adapt.insertTableTopRow.bind(adapt); + this.executeInsertTableBottomRow = adapt.insertTableBottomRow.bind(adapt); + this.executeInsertTableLeftCol = adapt.insertTableLeftCol.bind(adapt); + this.executeInsertTableRightCol = adapt.insertTableRightCol.bind(adapt); + this.executeDeleteTableRow = adapt.deleteTableRow.bind(adapt); + this.executeDeleteTableCol = adapt.deleteTableCol.bind(adapt); + this.executeDeleteTable = adapt.deleteTable.bind(adapt); + this.executeMergeTableCell = adapt.mergeTableCell.bind(adapt); + this.executeCancelMergeTableCell = adapt.cancelMergeTableCell.bind(adapt); + this.executeTableTdVerticalAlign = adapt.tableTdVerticalAlign.bind(adapt); + this.executeTableBorderType = adapt.tableBorderType.bind(adapt); + this.executeTableTdBorderType = adapt.tableTdBorderType.bind(adapt); + this.executeTableTdSlashType = adapt.tableTdSlashType.bind(adapt); + this.executeTableTdBackgroundColor = adapt.tableTdBackgroundColor.bind(adapt); + this.executeTableSelectAll = adapt.tableSelectAll.bind(adapt); + this.executeImage = adapt.image.bind(adapt); + this.executeHyperlink = adapt.hyperlink.bind(adapt); + this.executeDeleteHyperlink = adapt.deleteHyperlink.bind(adapt); + this.executeCancelHyperlink = adapt.cancelHyperlink.bind(adapt); + this.executeEditHyperlink = adapt.editHyperlink.bind(adapt); + this.executeSeparator = adapt.separator.bind(adapt); + this.executePageBreak = adapt.pageBreak.bind(adapt); + this.executeAddWatermark = adapt.addWatermark.bind(adapt); + this.executeDeleteWatermark = adapt.deleteWatermark.bind(adapt); + this.executeSearch = adapt.search.bind(adapt); + this.executeSearchNavigatePre = adapt.searchNavigatePre.bind(adapt); + this.executeSearchNavigateNext = adapt.searchNavigateNext.bind(adapt); + this.executeReplace = adapt.replace.bind(adapt); + this.executePrint = adapt.print.bind(adapt); + this.executeReplaceImageElement = adapt.replaceImageElement.bind(adapt); + this.executeSaveAsImageElement = adapt.saveAsImageElement.bind(adapt); + this.executeChangeImageDisplay = adapt.changeImageDisplay.bind(adapt); + this.executePageMode = adapt.pageMode.bind(adapt); + this.executePageScaleRecovery = adapt.pageScaleRecovery.bind(adapt); + this.executePageScaleMinus = adapt.pageScaleMinus.bind(adapt); + this.executePageScaleAdd = adapt.pageScaleAdd.bind(adapt); + this.executePaperSize = adapt.paperSize.bind(adapt); + this.executePaperDirection = adapt.paperDirection.bind(adapt); + this.executeSetPaperMargin = adapt.setPaperMargin.bind(adapt); + this.executeInsertElementList = adapt.insertElementList.bind(adapt); + this.executeAppendElementList = adapt.appendElementList.bind(adapt); + this.executeUpdateElementById = adapt.updateElementById.bind(adapt); + this.executeSetValue = adapt.setValue.bind(adapt); + this.executeRemoveControl = adapt.removeControl.bind(adapt); + this.executeSetLocale = adapt.setLocale.bind(adapt); + this.executeLocationCatalog = adapt.locationCatalog.bind(adapt); + this.executeWordTool = adapt.wordTool.bind(adapt); + this.executeSetHTML = adapt.setHTML.bind(adapt); + this.executeSetGroup = adapt.setGroup.bind(adapt); + this.executeDeleteGroup = adapt.deleteGroup.bind(adapt); + this.executeLocationGroup = adapt.locationGroup.bind(adapt); + this.executeSetZone = adapt.setZone.bind(adapt); + this.executeUpdateOptions = adapt.updateOptions.bind(adapt); + this.executeInsertTitle = adapt.insertTitle.bind(adapt); + this.executeFocus = adapt.focus.bind(adapt); + this.getImage = adapt.getImage.bind(adapt); + this.getOptions = adapt.getOptions.bind(adapt); + this.getValue = adapt.getValue.bind(adapt); + this.getHTML = adapt.getHTML.bind(adapt); + this.getText = adapt.getText.bind(adapt); + this.getWordCount = adapt.getWordCount.bind(adapt); + this.getCursorPosition = adapt.getCursorPosition.bind(adapt); + this.getRange = adapt.getRange.bind(adapt); + this.getRangeText = adapt.getRangeText.bind(adapt); + this.getRangeContext = adapt.getRangeContext.bind(adapt); + this.getRangeRow = adapt.getRangeRow.bind(adapt); + this.getRangeParagraph = adapt.getRangeParagraph.bind(adapt); + this.getKeywordRangeList = adapt.getKeywordRangeList.bind(adapt); + this.getCatalog = adapt.getCatalog.bind(adapt); + this.getPaperMargin = adapt.getPaperMargin.bind(adapt); + this.getSearchNavigateInfo = adapt.getSearchNavigateInfo.bind(adapt); + this.getLocale = adapt.getLocale.bind(adapt); + this.getGroupIds = adapt.getGroupIds.bind(adapt); + this.getContainer = adapt.getContainer.bind(adapt); + this.getTitleValue = adapt.getTitleValue.bind(adapt); + this.getPositionContextByEvent = adapt.getPositionContextByEvent.bind(adapt); + this.executeSetControlValue = adapt.setControlValue.bind(adapt); + this.executeSetControlExtension = adapt.setControlExtension.bind(adapt); + this.executeSetControlProperties = adapt.setControlProperties.bind(adapt); + this.executeSetControlHighlight = adapt.setControlHighlight.bind(adapt); + this.getControlValue = adapt.getControlValue.bind(adapt); + this.getControlList = adapt.getControlList.bind(adapt); + this.executeLocationControl = adapt.locationControl.bind(adapt); + this.executeInsertControl = adapt.insertControl.bind(adapt); + } +} +function convertPxToPaperSize(width, height) { + if (width === 1125 && height === 1593) { + return { + size: "a3", + width: "297mm", + height: "420mm" + }; + } + if (width === 794 && height === 1123) { + return { + size: "a4", + width: "210mm", + height: "297mm" + }; + } + if (width === 565 && height === 796) { + return { + size: "a5", + width: "148mm", + height: "210mm" + }; + } + return { + size: "", + width: `${width}px`, + height: `${height}px` + }; +} +function printImageBase64(base64List, options) { + const { width, height, direction = PaperDirection.VERTICAL } = options; + const iframe = document.createElement("iframe"); + iframe.style.visibility = "hidden"; + iframe.style.position = "absolute"; + iframe.style.left = "0"; + iframe.style.top = "0"; + iframe.style.width = "0"; + iframe.style.height = "0"; + iframe.style.border = "none"; + document.body.append(iframe); + const contentWindow = iframe.contentWindow; + const doc = contentWindow.document; + doc.open(); + const container = document.createElement("div"); + const paperSize = convertPxToPaperSize(width, height); + base64List.forEach((base64) => { + const image = document.createElement("img"); + image.style.width = direction === PaperDirection.HORIZONTAL ? paperSize.height : paperSize.width; + image.style.height = direction === PaperDirection.HORIZONTAL ? paperSize.width : paperSize.height; + image.src = base64; + container.append(image); + }); + const style = document.createElement("style"); + const stylesheet = ` + * { + margin: 0; + padding: 0; + } + @page { + margin: 0; + size: ${paperSize.size} ${direction === PaperDirection.HORIZONTAL ? `landscape` : `portrait`}; + }`; + style.append(document.createTextNode(stylesheet)); + setTimeout(() => { + doc.write(`${style.outerHTML}${container.innerHTML}`); + contentWindow.print(); + doc.close(); + window.addEventListener("mouseover", () => { + iframe == null ? void 0 : iframe.remove(); + }, { + once: true + }); + }); +} +class CommandAdapt { + constructor(draw) { + this.draw = draw; + this.range = draw.getRange(); + this.position = draw.getPosition(); + this.historyManager = draw.getHistoryManager(); + this.canvasEvent = draw.getCanvasEvent(); + this.options = draw.getOptions(); + this.control = draw.getControl(); + this.workerManager = draw.getWorkerManager(); + this.searchManager = draw.getSearch(); + this.i18n = draw.getI18n(); + this.zone = draw.getZone(); + this.tableOperate = draw.getTableOperate(); + } + mode(payload) { + this.draw.setMode(payload); + } + cut() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + this.canvasEvent.cut(); + } + copy() { + this.canvasEvent.copy(); + } + paste(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + pasteByApi(this.canvasEvent, payload); + } + selectAll() { + this.canvasEvent.selectAll(); + } + backspace() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const elementList = this.draw.getElementList(); + const { startIndex, endIndex } = this.range.getRange(); + const isCollapsed = startIndex === endIndex; + if (isCollapsed && elementList[startIndex].value === ZERO && startIndex === 0) { + return; + } + if (!isCollapsed) { + this.draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex); + } else { + this.draw.spliceElementList(elementList, startIndex, 1); + } + const curIndex = isCollapsed ? startIndex - 1 : startIndex; + this.range.setRange(curIndex, curIndex); + this.draw.render({ curIndex }); + } + setRange(startIndex, endIndex, tableId, startTdIndex, endTdIndex, startTrIndex, endTrIndex) { + if (startIndex < 0 || endIndex < 0 || endIndex < startIndex) + return; + this.range.setRange(startIndex, endIndex, tableId, startTdIndex, endTdIndex, startTrIndex, endTrIndex); + const isCollapsed = startIndex === endIndex; + this.draw.render({ + curIndex: isCollapsed ? startIndex : void 0, + isCompute: false, + isSubmitHistory: false, + isSetCursor: isCollapsed + }); + } + replaceRange(range) { + this.setRange(range.startIndex, range.endIndex, range.tableId, range.startTdIndex, range.endTdIndex, range.startTrIndex, range.endTrIndex); + } + setPositionContext(range) { + const { tableId, startTrIndex, startTdIndex } = range; + const elementList = this.draw.getOriginalElementList(); + if (tableId) { + const tableElementIndex = elementList.findIndex((el) => el.id === tableId); + if (!~tableElementIndex) + return; + const tableElement = elementList[tableElementIndex]; + const tr = tableElement.trList[startTrIndex]; + const td = tr.tdList[startTdIndex]; + this.position.setPositionContext({ + isTable: true, + index: tableElementIndex, + trIndex: startTrIndex, + tdIndex: startTdIndex, + tdId: td.id, + trId: tr.id, + tableId + }); + } else { + this.position.setPositionContext({ + isTable: false + }); + } + } + forceUpdate(options) { + const { isSubmitHistory = false } = options || {}; + this.range.clearRange(); + this.draw.render({ + isSubmitHistory, + isSetCursor: false + }); + } + blur() { + this.range.clearRange(); + this.draw.getCursor().recoveryCursor(); + } + undo() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.historyManager.undo(); + } + redo() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.historyManager.redo(); + } + painter(options) { + if (!options.isDblclick && this.draw.getPainterStyle()) { + this.canvasEvent.clearPainterStyle(); + return; + } + const selection = this.range.getSelection(); + if (!selection) + return; + const painterStyle = {}; + selection.forEach((s) => { + const painterStyleKeys = EDITOR_ELEMENT_STYLE_ATTR; + painterStyleKeys.forEach((p) => { + const key = p; + if (painterStyle[key] === void 0) { + painterStyle[key] = s[key]; + } + }); + }); + this.draw.setPainterStyle(painterStyle, options); + } + applyPainterStyle() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + this.canvasEvent.applyPainterStyle(); + } + format() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + let renderOption = {}; + let changeElementList = []; + if (selection == null ? void 0 : selection.length) { + changeElementList = selection; + renderOption = { isSetCursor: false }; + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + changeElementList.push(enterElement); + renderOption = { curIndex: endIndex }; + } + } + if (!changeElementList.length) + return; + changeElementList.forEach((el) => { + EDITOR_ELEMENT_STYLE_ATTR.forEach((attr) => { + delete el[attr]; + }); + }); + this.draw.render(renderOption); + } + font(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (selection == null ? void 0 : selection.length) { + selection.forEach((el) => { + el.font = payload; + }); + this.draw.render({ isSetCursor: false }); + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + enterElement.font = payload; + this.draw.render({ curIndex: endIndex, isCompute: false }); + } + } + } + size(payload) { + const { minSize, maxSize, defaultSize } = this.options; + if (payload < minSize || payload > maxSize) + return; + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + let renderOption = {}; + let changeElementList = []; + const selection = this.range.getTextLikeSelectionElementList(); + if (selection == null ? void 0 : selection.length) { + changeElementList = selection; + renderOption = { isSetCursor: false }; + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + changeElementList.push(enterElement); + renderOption = { curIndex: endIndex }; + } + } + if (!changeElementList.length) + return; + let isExistUpdate = false; + changeElementList.forEach((el) => { + if (!el.size && payload === defaultSize || el.size && el.size === payload) { + return; + } + el.size = payload; + isExistUpdate = true; + }); + if (isExistUpdate) { + this.draw.render(renderOption); + } + } + sizeAdd() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getTextLikeSelectionElementList(); + let renderOption = {}; + let changeElementList = []; + if (selection == null ? void 0 : selection.length) { + changeElementList = selection; + renderOption = { isSetCursor: false }; + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + changeElementList.push(enterElement); + renderOption = { curIndex: endIndex }; + } + } + if (!changeElementList.length) + return; + const { defaultSize, maxSize } = this.options; + let isExistUpdate = false; + changeElementList.forEach((el) => { + if (!el.size) { + el.size = defaultSize; + } + if (el.size >= maxSize) + return; + if (el.size + 2 > maxSize) { + el.size = maxSize; + } else { + el.size += 2; + } + isExistUpdate = true; + }); + if (isExistUpdate) { + this.draw.render(renderOption); + } + } + sizeMinus() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getTextLikeSelectionElementList(); + let renderOption = {}; + let changeElementList = []; + if (selection == null ? void 0 : selection.length) { + changeElementList = selection; + renderOption = { isSetCursor: false }; + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + changeElementList.push(enterElement); + renderOption = { curIndex: endIndex }; + } + } + if (!changeElementList.length) + return; + const { defaultSize, minSize } = this.options; + let isExistUpdate = false; + changeElementList.forEach((el) => { + if (!el.size) { + el.size = defaultSize; + } + if (el.size <= minSize) + return; + if (el.size - 2 < minSize) { + el.size = minSize; + } else { + el.size -= 2; + } + isExistUpdate = true; + }); + if (isExistUpdate) { + this.draw.render(renderOption); + } + } + bold() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (selection == null ? void 0 : selection.length) { + const noBoldIndex = selection.findIndex((s) => !s.bold); + selection.forEach((el) => { + el.bold = !!~noBoldIndex; + }); + this.draw.render({ isSetCursor: false }); + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + enterElement.bold = !enterElement.bold; + this.draw.render({ curIndex: endIndex, isCompute: false }); + } + } + } + italic() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (selection == null ? void 0 : selection.length) { + const noItalicIndex = selection.findIndex((s) => !s.italic); + selection.forEach((el) => { + el.italic = !!~noItalicIndex; + }); + this.draw.render({ isSetCursor: false }); + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + enterElement.italic = !enterElement.italic; + this.draw.render({ curIndex: endIndex, isCompute: false }); + } + } + } + underline(textDecoration) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (selection == null ? void 0 : selection.length) { + const isSetUnderline = selection.some((s) => !s.underline || !textDecoration && s.textDecoration || textDecoration && !s.textDecoration || textDecoration && s.textDecoration && !isObjectEqual(s.textDecoration, textDecoration)); + selection.forEach((el) => { + el.underline = isSetUnderline; + if (isSetUnderline && textDecoration) { + el.textDecoration = textDecoration; + } else { + delete el.textDecoration; + } + }); + this.draw.render({ + isSetCursor: false, + isCompute: false + }); + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + enterElement.underline = !enterElement.underline; + this.draw.render({ curIndex: endIndex, isCompute: false }); + } + } + } + strikeout() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (selection == null ? void 0 : selection.length) { + const noStrikeoutIndex = selection.findIndex((s) => !s.strikeout); + selection.forEach((el) => { + el.strikeout = !!~noStrikeoutIndex; + }); + this.draw.render({ + isSetCursor: false, + isCompute: false + }); + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + enterElement.strikeout = !enterElement.strikeout; + this.draw.render({ curIndex: endIndex, isCompute: false }); + } + } + } + superscript() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (!selection) + return; + const superscriptIndex = selection.findIndex((s) => s.type === ElementType.SUPERSCRIPT); + selection.forEach((el) => { + if (~superscriptIndex) { + if (el.type === ElementType.SUPERSCRIPT) { + el.type = ElementType.TEXT; + delete el.actualSize; + } + } else { + if (!el.type || el.type === ElementType.TEXT || el.type === ElementType.SUBSCRIPT) { + el.type = ElementType.SUPERSCRIPT; + } + } + }); + this.draw.render({ isSetCursor: false }); + } + subscript() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (!selection) + return; + const subscriptIndex = selection.findIndex((s) => s.type === ElementType.SUBSCRIPT); + selection.forEach((el) => { + if (~subscriptIndex) { + if (el.type === ElementType.SUBSCRIPT) { + el.type = ElementType.TEXT; + delete el.actualSize; + } + } else { + if (!el.type || el.type === ElementType.TEXT || el.type === ElementType.SUPERSCRIPT) { + el.type = ElementType.SUBSCRIPT; + } + } + }); + this.draw.render({ isSetCursor: false }); + } + color(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (selection == null ? void 0 : selection.length) { + selection.forEach((el) => { + if (payload) { + el.color = payload; + } else { + delete el.color; + } + }); + this.draw.render({ + isSetCursor: false, + isCompute: false + }); + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + if (payload) { + enterElement.color = payload; + } else { + delete enterElement.color; + } + this.draw.render({ curIndex: endIndex, isCompute: false }); + } + } + } + highlight(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const selection = this.range.getSelectionElementList(); + if (selection == null ? void 0 : selection.length) { + selection.forEach((el) => { + if (payload) { + el.highlight = payload; + } else { + delete el.highlight; + } + }); + this.draw.render({ + isSetCursor: false, + isCompute: false + }); + } else { + const { endIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const enterElement = elementList[endIndex]; + if ((enterElement == null ? void 0 : enterElement.value) === ZERO) { + if (payload) { + enterElement.highlight = payload; + } else { + delete enterElement.highlight; + } + this.draw.render({ curIndex: endIndex, isCompute: false }); + } + } + } + title(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const elementList = this.draw.getElementList(); + const changeElementList = startIndex === endIndex ? this.range.getRangeParagraphElementList() : elementList.slice(startIndex + 1, endIndex + 1); + if (!changeElementList || !changeElementList.length) + return; + const titleId = getUUID(); + const titleOptions = this.draw.getOptions().title; + changeElementList.forEach((el) => { + if (!el.type && el.value === ZERO) + return; + if (payload) { + el.level = payload; + el.titleId = titleId; + if (isTextLikeElement(el)) { + el.size = titleOptions[titleSizeMapping[payload]]; + el.bold = true; + } + } else { + if (el.titleId) { + delete el.titleId; + delete el.title; + delete el.level; + delete el.size; + delete el.bold; + } + } + }); + const isSetCursor = startIndex === endIndex; + const curIndex = isSetCursor ? endIndex : startIndex; + this.draw.render({ curIndex, isSetCursor }); + } + list(listType, listStyle) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.draw.getListParticle().setList(listType, listStyle); + } + rowFlex(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const rowElementList = this.range.getRangeRowElementList(); + if (!rowElementList) + return; + rowElementList.forEach((element) => { + element.rowFlex = payload; + }); + const isSetCursor = startIndex === endIndex; + const curIndex = isSetCursor ? endIndex : startIndex; + this.draw.render({ curIndex, isSetCursor }); + } + rowMargin(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const rowElementList = this.range.getRangeRowElementList(); + if (!rowElementList) + return; + rowElementList.forEach((element) => { + element.rowMargin = payload; + }); + const isSetCursor = startIndex === endIndex; + const curIndex = isSetCursor ? endIndex : startIndex; + this.draw.render({ curIndex, isSetCursor }); + } + insertTable(row, col) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const activeControl = this.control.getActiveControl(); + if (activeControl) + return; + this.tableOperate.insertTable(row, col); + } + insertTableTopRow() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.insertTableTopRow(); + } + insertTableBottomRow() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.insertTableBottomRow(); + } + insertTableLeftCol() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.insertTableLeftCol(); + } + insertTableRightCol() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.insertTableRightCol(); + } + deleteTableRow() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.deleteTableRow(); + } + deleteTableCol() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.deleteTableCol(); + } + deleteTable() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.deleteTable(); + } + mergeTableCell() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.mergeTableCell(); + } + cancelMergeTableCell() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.cancelMergeTableCell(); + } + tableTdVerticalAlign(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.tableTdVerticalAlign(payload); + } + tableBorderType(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.tableBorderType(payload); + } + tableTdBorderType(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.tableTdBorderType(payload); + } + tableTdSlashType(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.tableTdSlashType(payload); + } + tableTdBackgroundColor(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.tableOperate.tableTdBackgroundColor(payload); + } + tableSelectAll() { + this.tableOperate.tableSelectAll(); + } + hyperlink(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const activeControl = this.control.getActiveControl(); + if (activeControl) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const elementList = this.draw.getElementList(); + const { valueList, url } = payload; + const hyperlinkId = getUUID(); + const newElementList = valueList == null ? void 0 : valueList.map((v) => ({ + url, + hyperlinkId, + value: v.value, + type: ElementType.HYPERLINK + })); + if (!newElementList) + return; + const start = startIndex + 1; + formatElementContext(elementList, newElementList, startIndex, { + editorOptions: this.options + }); + this.draw.spliceElementList(elementList, start, startIndex === endIndex ? 0 : endIndex - startIndex, ...newElementList); + const curIndex = start + newElementList.length - 1; + this.range.setRange(curIndex, curIndex); + this.draw.render({ curIndex }); + } + getHyperlinkRange() { + let leftIndex = -1; + let rightIndex = -1; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return null; + const elementList = this.draw.getElementList(); + const startElement = elementList[startIndex]; + if (startElement.type !== ElementType.HYPERLINK) + return null; + let preIndex = startIndex; + while (preIndex > 0) { + const preElement = elementList[preIndex]; + if (preElement.hyperlinkId !== startElement.hyperlinkId) { + leftIndex = preIndex + 1; + break; + } + preIndex--; + } + let nextIndex = startIndex + 1; + while (nextIndex < elementList.length) { + const nextElement = elementList[nextIndex]; + if (nextElement.hyperlinkId !== startElement.hyperlinkId) { + rightIndex = nextIndex - 1; + break; + } + nextIndex++; + } + if (nextIndex === elementList.length) { + rightIndex = nextIndex - 1; + } + if (!~leftIndex || !~rightIndex) + return null; + return [leftIndex, rightIndex]; + } + deleteHyperlink() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const hyperRange = this.getHyperlinkRange(); + if (!hyperRange) + return; + const elementList = this.draw.getElementList(); + const [leftIndex, rightIndex] = hyperRange; + this.draw.spliceElementList(elementList, leftIndex, rightIndex - leftIndex + 1); + this.draw.getHyperlinkParticle().clearHyperlinkPopup(); + const newIndex = leftIndex - 1; + this.range.setRange(newIndex, newIndex); + this.draw.render({ + curIndex: newIndex + }); + } + cancelHyperlink() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const hyperRange = this.getHyperlinkRange(); + if (!hyperRange) + return; + const elementList = this.draw.getElementList(); + const [leftIndex, rightIndex] = hyperRange; + for (let i = leftIndex; i <= rightIndex; i++) { + const element = elementList[i]; + delete element.type; + delete element.url; + delete element.hyperlinkId; + delete element.underline; + } + this.draw.getHyperlinkParticle().clearHyperlinkPopup(); + const { endIndex } = this.range.getRange(); + this.draw.render({ + curIndex: endIndex, + isCompute: false + }); + } + editHyperlink(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const hyperRange = this.getHyperlinkRange(); + if (!hyperRange) + return; + const elementList = this.draw.getElementList(); + const [leftIndex, rightIndex] = hyperRange; + for (let i = leftIndex; i <= rightIndex; i++) { + const element = elementList[i]; + element.url = payload; + } + this.draw.getHyperlinkParticle().clearHyperlinkPopup(); + const { endIndex } = this.range.getRange(); + this.draw.render({ + curIndex: endIndex, + isCompute: false + }); + } + separator(payload, lineWidth, color) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const activeControl = this.control.getActiveControl(); + if (activeControl) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const elementList = this.draw.getElementList(); + let curIndex = -1; + const endElement = elementList[endIndex + 1]; + if (endElement && endElement.type === ElementType.SEPARATOR) { + if (endElement.dashArray && endElement.dashArray.join() === payload.join() && endElement.color === color && endElement.lineWidth === lineWidth) { + return; + } + curIndex = endIndex; + endElement.dashArray = payload; + endElement.color = color; + endElement.lineWidth = lineWidth; + } else { + const newElement = { + value: WRAP, + type: ElementType.SEPARATOR, + dashArray: payload, + lineWidth, + color + }; + formatElementContext(elementList, [newElement], startIndex, { + editorOptions: this.options + }); + if (startIndex !== 0 && elementList[startIndex].value === ZERO) { + this.draw.spliceElementList(elementList, startIndex, 1, newElement); + curIndex = startIndex - 1; + } else { + this.draw.spliceElementList(elementList, startIndex + 1, 0, newElement); + curIndex = startIndex; + } + } + this.range.setRange(curIndex, curIndex); + this.draw.render({ curIndex }); + } + pageBreak() { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const activeControl = this.control.getActiveControl(); + if (activeControl) + return; + this.insertElementList([ + { + type: ElementType.PAGE_BREAK, + value: WRAP + } + ]); + } + addWatermark(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + const options = this.draw.getOptions(); + const { color, size, opacity, font } = defaultWatermarkOption; + options.watermark.data = payload.data; + options.watermark.color = payload.color || color; + options.watermark.size = payload.size || size; + options.watermark.opacity = payload.opacity || opacity; + options.watermark.font = payload.font || font; + this.draw.render({ + isSetCursor: false, + isSubmitHistory: false, + isCompute: false + }); + } + deleteWatermark() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + const options = this.draw.getOptions(); + if (options.watermark && options.watermark.data) { + options.watermark = { ...defaultWatermarkOption }; + this.draw.render({ + isSetCursor: false, + isSubmitHistory: false, + isCompute: false + }); + } + } + image(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const { startIndex, endIndex } = this.range.getRange(); + if (!~startIndex && !~endIndex) + return; + const { value, width, height, imgDisplay } = payload; + this.insertElementList([ + { + value, + width, + height, + id: getUUID(), + type: ElementType.IMAGE, + imgDisplay + } + ]); + } + search(payload) { + this.searchManager.setSearchKeyword(payload); + this.draw.render({ + isSetCursor: false, + isSubmitHistory: false + }); + } + searchNavigatePre() { + const index2 = this.searchManager.searchNavigatePre(); + if (index2 === null) + return; + this.draw.render({ + isSetCursor: false, + isSubmitHistory: false, + isCompute: false, + isLazy: false + }); + } + searchNavigateNext() { + const index2 = this.searchManager.searchNavigateNext(); + if (index2 === null) + return; + this.draw.render({ + isSetCursor: false, + isSubmitHistory: false, + isCompute: false, + isLazy: false + }); + } + getSearchNavigateInfo() { + return this.searchManager.getSearchNavigateInfo(); + } + replace(payload) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + if (!payload || new RegExp(`${ZERO}`, "g").test(payload)) + return; + const matchList = this.draw.getSearch().getSearchMatchList(); + if (!matchList.length) + return; + let pageDiffCount = 0; + let tableDiffCount = 0; + let curGroupId = ""; + let curTdId = ""; + let firstMatchIndex = -1; + const elementList = this.draw.getOriginalElementList(); + for (let m = 0; m < matchList.length; m++) { + const match = matchList[m]; + if (match.type === EditorContext.TABLE) { + const { tableIndex, trIndex, tdIndex, index: index2, tdId } = match; + if (curTdId && tdId !== curTdId) { + tableDiffCount = 0; + } + curTdId = tdId; + const curTableIndex = tableIndex + pageDiffCount; + const tableElementList = elementList[curTableIndex].trList[trIndex].tdList[tdIndex].value; + const curIndex = index2 + tableDiffCount; + const tableElement = tableElementList[curIndex]; + if (curGroupId === match.groupId) { + this.draw.spliceElementList(tableElementList, curIndex, 1); + tableDiffCount--; + continue; + } + for (let p = 0; p < payload.length; p++) { + const value = payload[p]; + if (p === 0) { + tableElement.value = value; + } else { + this.draw.spliceElementList(tableElementList, curIndex + p, 0, { + ...tableElement, + value + }); + tableDiffCount++; + } + } + } else { + const curIndex = match.index + pageDiffCount; + const element = elementList[curIndex]; + if (element.type === ElementType.CONTROL && element.controlComponent !== ControlComponent.VALUE) { + continue; + } + if (!~firstMatchIndex) { + firstMatchIndex = m; + } + if (curGroupId === match.groupId) { + this.draw.spliceElementList(elementList, curIndex, 1); + pageDiffCount--; + continue; + } + for (let p = 0; p < payload.length; p++) { + const value = payload[p]; + if (p === 0) { + element.value = value; + } else { + this.draw.spliceElementList(elementList, curIndex + p, 0, { + ...element, + value + }); + pageDiffCount++; + } + } + } + curGroupId = match.groupId; + } + if (!~firstMatchIndex) + return; + const firstMatch = matchList[firstMatchIndex]; + const firstIndex = firstMatch.index + (payload.length - 1); + if (firstMatch.type === EditorContext.TABLE) { + const { tableIndex, trIndex, tdIndex, index: index2 } = firstMatch; + const element = elementList[tableIndex].trList[trIndex].tdList[tdIndex].value[index2]; + this.position.setPositionContext({ + isTable: true, + index: tableIndex, + trIndex, + tdIndex, + tdId: element.tdId, + trId: element.trId, + tableId: element.tableId + }); + } else { + this.position.setPositionContext({ + isTable: false + }); + } + this.range.setRange(firstIndex, firstIndex); + this.draw.render({ + curIndex: firstIndex + }); + } + async print() { + const { scale, printPixelRatio, paperDirection, width, height } = this.options; + if (scale !== 1) { + this.draw.setPageScale(1); + } + const base64List = await this.draw.getDataURL({ + pixelRatio: printPixelRatio, + mode: EditorMode.PRINT + }); + printImageBase64(base64List, { + width, + height, + direction: paperDirection + }); + if (scale !== 1) { + this.draw.setPageScale(scale); + } + } + replaceImageElement(payload) { + const { startIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const element = elementList[startIndex]; + if (!element || element.type !== ElementType.IMAGE) + return; + element.id = getUUID(); + element.value = payload; + this.draw.render({ + isSetCursor: false + }); + } + saveAsImageElement() { + const { startIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const element = elementList[startIndex]; + if (!element || element.type !== ElementType.IMAGE) + return; + downloadFile(element.value, `${element.id}.png`); + } + changeImageDisplay(element, display) { + if (element.imgDisplay === display) + return; + element.imgDisplay = display; + const { startIndex, endIndex } = this.range.getRange(); + if (display === ImageDisplay.SURROUND || display === ImageDisplay.FLOAT_TOP || display === ImageDisplay.FLOAT_BOTTOM) { + const positionList = this.position.getPositionList(); + const { pageNo, coordinate: { leftTop } } = positionList[startIndex]; + element.imgFloatPosition = { + pageNo, + x: leftTop[0], + y: leftTop[1] + }; + } else { + delete element.imgFloatPosition; + } + this.draw.getPreviewer().clearResizer(); + this.draw.render({ + isSetCursor: true, + curIndex: endIndex + }); + } + getImage(payload) { + return this.draw.getDataURL(payload); + } + getOptions() { + return this.options; + } + getValue(options) { + return this.draw.getValue(options); + } + getHTML() { + const options = this.options; + const headerElementList = this.draw.getHeaderElementList(); + const mainElementList = this.draw.getOriginalMainElementList(); + const footerElementList = this.draw.getFooterElementList(); + return { + header: createDomFromElementList(headerElementList, options).innerHTML, + main: createDomFromElementList(mainElementList, options).innerHTML, + footer: createDomFromElementList(footerElementList, options).innerHTML + }; + } + getText() { + const headerElementList = this.draw.getHeaderElementList(); + const mainElementList = this.draw.getOriginalMainElementList(); + const footerElementList = this.draw.getFooterElementList(); + return { + header: getTextFromElementList(headerElementList), + main: getTextFromElementList(mainElementList), + footer: getTextFromElementList(footerElementList) + }; + } + getWordCount() { + return this.workerManager.getWordCount(); + } + getCursorPosition() { + return this.position.getCursorPosition(); + } + getRange() { + return deepClone(this.range.getRange()); + } + getRangeText() { + return this.range.toString(); + } + getRangeContext() { + const range = this.range.getRange(); + const { startIndex, endIndex } = range; + if (!~startIndex && !~endIndex) + return null; + const isCollapsed = startIndex === endIndex; + const selectionText = this.range.toString(); + const selectionElementList = zipElementList(this.range.getSelectionElementList() || []); + const elementList = this.draw.getElementList(); + const startElement = pickElementAttr(elementList[isCollapsed ? startIndex : startIndex + 1], { + extraPickAttrs: ["id"] + }); + const endElement = pickElementAttr(elementList[endIndex], { + extraPickAttrs: ["id"] + }); + const positionList = this.position.getPositionList(); + const startPageNo = positionList[startIndex].pageNo; + const endPageNo = positionList[endIndex].pageNo; + const rangeRects = []; + const height = this.draw.getOriginalHeight(); + const pageGap = this.draw.getOriginalPageGap(); + const selectionPositionList = this.position.getSelectionPositionList(); + if (selectionPositionList) { + let currentRowNo = null; + let currentX = 0; + let rangeRect = null; + for (let p = 0; p < selectionPositionList.length; p++) { + const { rowNo, pageNo, coordinate: { leftTop, rightTop }, lineHeight } = selectionPositionList[p]; + if (currentRowNo === null || currentRowNo !== rowNo) { + if (rangeRect) { + rangeRects.push(rangeRect); + } + rangeRect = { + x: leftTop[0], + y: leftTop[1] + pageNo * (height + pageGap), + width: rightTop[0] - leftTop[0], + height: lineHeight + }; + currentRowNo = rowNo; + currentX = leftTop[0]; + } else { + rangeRect.width = rightTop[0] - currentX; + } + if (p === selectionPositionList.length - 1 && rangeRect) { + rangeRects.push(rangeRect); + } + } + } else { + const positionList2 = this.position.getPositionList(); + const position = positionList2[endIndex]; + const { coordinate: { rightTop }, pageNo, lineHeight } = position; + rangeRects.push({ + x: rightTop[0], + y: rightTop[1] + pageNo * (height + pageGap), + width: 0, + height: lineHeight + }); + } + const zone2 = this.draw.getZone().getZone(); + const { isTable, trIndex, tdIndex, index: index2 } = this.position.getPositionContext(); + let tableElement = null; + if (isTable) { + const originalElementList = this.draw.getOriginalElementList(); + const originTableElement = originalElementList[index2] || null; + if (originTableElement) { + tableElement = zipElementList([originTableElement])[0]; + } + } + let titleId = null; + let titleStartPageNo = null; + let start = startIndex - 1; + while (start > 0) { + const curElement = elementList[start]; + const preElement = elementList[start - 1]; + if (curElement.titleId && curElement.titleId !== (preElement == null ? void 0 : preElement.titleId)) { + titleId = curElement.titleId; + titleStartPageNo = positionList[start].pageNo; + break; + } + start--; + } + return deepClone({ + isCollapsed, + startElement, + endElement, + startPageNo, + endPageNo, + rangeRects, + zone: zone2, + isTable, + trIndex: trIndex != null ? trIndex : null, + tdIndex: tdIndex != null ? tdIndex : null, + tableElement, + selectionText, + selectionElementList, + titleId, + titleStartPageNo + }); + } + getRangeRow() { + const rowElementList = this.range.getRangeRowElementList(); + return rowElementList ? zipElementList(rowElementList) : null; + } + getRangeParagraph() { + const paragraphElementList = this.range.getRangeParagraphElementList(); + return paragraphElementList ? zipElementList(paragraphElementList) : null; + } + getKeywordRangeList(payload) { + return this.range.getKeywordRangeList(payload); + } + pageMode(payload) { + this.draw.setPageMode(payload); + } + pageScaleRecovery() { + const { scale } = this.options; + if (scale !== 1) { + this.draw.setPageScale(1); + } + } + pageScaleMinus() { + const { scale } = this.options; + const nextScale = scale * 10 - 1; + if (nextScale >= 5) { + this.draw.setPageScale(nextScale / 10); + } + } + pageScaleAdd() { + const { scale } = this.options; + const nextScale = scale * 10 + 1; + if (nextScale <= 30) { + this.draw.setPageScale(nextScale / 10); + } + } + paperSize(width, height) { + this.draw.setPaperSize(width, height); + } + paperDirection(payload) { + this.draw.setPaperDirection(payload); + } + getPaperMargin() { + return this.options.margins; + } + setPaperMargin(payload) { + return this.draw.setPaperMargin(payload); + } + insertElementList(payload) { + if (!payload.length) + return; + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const cloneElementList = deepClone(payload); + const { startIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + formatElementContext(elementList, cloneElementList, startIndex, { + isBreakWhenWrap: true, + editorOptions: this.options + }); + this.draw.insertElementList(cloneElementList); + } + appendElementList(elementList, options) { + if (!elementList.length) + return; + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.draw.appendElementList(deepClone(elementList), options); + } + updateElementById(payload) { + function getElementIndexById(elementList) { + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (element.id === payload.id) { + return e; + } + } + return -1; + } + const getElementListFnList = [ + this.draw.getOriginalMainElementList, + this.draw.getHeaderElementList, + this.draw.getFooterElementList + ]; + for (const getElementList of getElementListFnList) { + const elementList = getElementList.call(this.draw); + const elementIndex = getElementIndexById(elementList); + if (~elementIndex) { + elementList[elementIndex] = { + ...elementList[elementIndex], + ...payload.properties + }; + formatElementList(zipElementList([elementList[elementIndex]]), { + isHandleFirstElement: false, + editorOptions: this.options + }); + this.draw.render({ + isSetCursor: false + }); + break; + } + } + } + setValue(payload, options) { + this.draw.setValue(payload, options); + } + removeControl() { + const { startIndex, endIndex } = this.range.getRange(); + if (startIndex !== endIndex) + return; + const elementList = this.draw.getElementList(); + const element = elementList[startIndex]; + if (!element.controlId) + return; + const control = this.draw.getControl(); + const newIndex = control.removeControl(startIndex); + if (newIndex === null) + return; + this.range.setRange(newIndex, newIndex); + this.draw.render({ + curIndex: newIndex + }); + } + setLocale(payload) { + this.i18n.setLocale(payload); + } + getLocale() { + return this.i18n.getLocale(); + } + getCatalog() { + return this.workerManager.getCatalog(); + } + locationCatalog(titleId) { + var _a; + const elementList = this.draw.getMainElementList(); + let newIndex = -1; + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e]; + if (element.titleId === titleId && ((_a = elementList[e + 1]) == null ? void 0 : _a.titleId) !== titleId) { + newIndex = e; + break; + } + } + if (!~newIndex) + return; + this.range.setRange(newIndex, newIndex); + this.draw.render({ + curIndex: newIndex, + isCompute: false, + isSubmitHistory: false + }); + } + wordTool() { + const elementList = this.draw.getMainElementList(); + let isApply = false; + for (let i = 0; i < elementList.length; i++) { + const element = elementList[i]; + if (element.value === ZERO) { + while (i + 1 < elementList.length) { + const nextElement = elementList[i + 1]; + if (nextElement.value !== ZERO && nextElement.value !== NBSP) + break; + elementList.splice(i + 1, 1); + isApply = true; + } + } + } + if (!isApply) { + const isCollapsed = this.range.getIsCollapsed(); + this.draw.getCursor().drawCursor({ + isShow: isCollapsed + }); + } else { + this.draw.render({ + isSetCursor: false + }); + } + } + setHTML(payload) { + const { header, main, footer } = payload; + const innerWidth = this.draw.getOriginalInnerWidth(); + const getElementList = (htmlText) => htmlText !== void 0 ? getElementListByHTML(htmlText, { + innerWidth + }) : void 0; + this.setValue({ + header: getElementList(header), + main: getElementList(main), + footer: getElementList(footer) + }); + } + setGroup() { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return null; + return this.draw.getGroup().setGroup(); + } + deleteGroup(groupId) { + const isReadonly = this.draw.isReadonly(); + if (isReadonly) + return; + this.draw.getGroup().deleteGroup(groupId); + } + getGroupIds() { + return this.draw.getWorkerManager().getGroupIds(); + } + locationGroup(groupId) { + const elementList = this.draw.getOriginalMainElementList(); + const context = this.draw.getGroup().getContextByGroupId(elementList, groupId); + if (!context) + return; + const { isTable, index: index2, trIndex, tdIndex, tdId, trId, tableId, endIndex } = context; + this.position.setPositionContext({ + isTable, + index: index2, + trIndex, + tdIndex, + tdId, + trId, + tableId + }); + this.range.setRange(endIndex, endIndex); + this.draw.render({ + curIndex: endIndex, + isCompute: false, + isSubmitHistory: false + }); + } + setZone(zone2) { + this.draw.getZone().setZone(zone2); + } + getControlValue(payload) { + return this.draw.getControl().getValueById(payload); + } + setControlValue(payload) { + this.draw.getControl().setValueById(payload); + } + setControlExtension(payload) { + this.draw.getControl().setExtensionById(payload); + } + setControlProperties(payload) { + this.draw.getControl().setPropertiesById(payload); + } + setControlHighlight(payload) { + this.draw.getControl().setHighlightList(payload); + this.draw.render({ + isSubmitHistory: false + }); + } + updateOptions(payload) { + const newOption = mergeOption(payload); + Object.entries(newOption).forEach(([key, value]) => { + Reflect.set(this.options, key, value); + }); + this.forceUpdate(); + } + getControlList() { + return this.draw.getControl().getList(); + } + locationControl(controlId, options) { + const isLocationAfter = (options == null ? void 0 : options.position) === LocationPosition.AFTER; + function location(elementList, zone2) { + let i = 0; + while (i < elementList.length) { + const element = elementList[i]; + i++; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + const locationContext = location(td.value, zone2); + if (locationContext) { + return { + ...locationContext, + positionContext: { + isTable: true, + index: i - 1, + trIndex: r, + tdIndex: d, + tdId: element.tdId, + trId: element.trId, + tableId: element.tableId + } + }; + } + } + } + } + if ((element == null ? void 0 : element.controlId) !== controlId) + continue; + let curIndex = i - 1; + if (isLocationAfter) { + curIndex -= 1; + if (element.controlComponent !== ControlComponent.PLACEHOLDER && element.controlComponent !== ControlComponent.POSTFIX) { + continue; + } + } + return { + zone: zone2, + range: { + startIndex: curIndex, + endIndex: curIndex + }, + positionContext: { + isTable: false + } + }; + } + return null; + } + const data2 = [ + { + zone: EditorZone.HEADER, + elementList: this.draw.getHeaderElementList() + }, + { + zone: EditorZone.MAIN, + elementList: this.draw.getOriginalMainElementList() + }, + { + zone: EditorZone.FOOTER, + elementList: this.draw.getFooterElementList() + } + ]; + for (const context of data2) { + const locationContext = location(context.elementList, context.zone); + if (locationContext) { + this.setZone(locationContext.zone); + this.position.setPositionContext(locationContext.positionContext); + this.range.replaceRange(locationContext.range); + this.draw.render({ + curIndex: locationContext.range.startIndex, + isCompute: false, + isSubmitHistory: false + }); + break; + } + } + } + insertControl(payload) { + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const cloneElement = deepClone(payload); + const { startIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const copyElement = getAnchorElement(elementList, startIndex); + if (!copyElement) + return; + const cloneAttr = [ + ...TABLE_CONTEXT_ATTR, + ...EDITOR_ROW_ATTR, + ...LIST_CONTEXT_ATTR + ]; + cloneProperty(cloneAttr, copyElement, cloneElement); + this.draw.insertElementList([cloneElement]); + } + getContainer() { + return this.draw.getContainer(); + } + getTitleValue(payload) { + const { conceptId } = payload; + const result = []; + const getValue = (elementList, zone2) => { + var _a; + let i = 0; + while (i < elementList.length) { + const element = elementList[i]; + i++; + if (element.type === ElementType.TABLE) { + const trList = element.trList; + for (let r = 0; r < trList.length; r++) { + const tr = trList[r]; + for (let d = 0; d < tr.tdList.length; d++) { + const td = tr.tdList[d]; + getValue(td.value, zone2); + } + } + } + if (((_a = element == null ? void 0 : element.title) == null ? void 0 : _a.conceptId) !== conceptId) + continue; + const valueList = []; + let j = i; + while (j < elementList.length) { + const nextElement = elementList[j]; + j++; + if (element.titleId === nextElement.titleId) + continue; + if (nextElement.level && titleOrderNumberMapping[nextElement.level] <= titleOrderNumberMapping[element.level]) { + break; + } + valueList.push(nextElement); + } + result.push({ + ...element.title, + value: getTextFromElementList(valueList), + elementList: zipElementList(valueList), + zone: zone2 + }); + i = j; + } + }; + const data2 = [ + { + zone: EditorZone.HEADER, + elementList: this.draw.getHeaderElementList() + }, + { + zone: EditorZone.MAIN, + elementList: this.draw.getOriginalMainElementList() + }, + { + zone: EditorZone.FOOTER, + elementList: this.draw.getFooterElementList() + } + ]; + for (const { zone: zone2, elementList } of data2) { + getValue(elementList, zone2); + } + return result; + } + getPositionContextByEvent(evt) { + var _a, _b, _c; + const pageIndex = (_a = evt.target) == null ? void 0 : _a.dataset.index; + if (!pageIndex) + return null; + const pageNo = Number(pageIndex); + const positionContext = this.position.getPositionByXY({ + x: evt.offsetX, + y: evt.offsetY, + pageNo + }); + const { isDirectHit, isTable, index: index2, trIndex, tdIndex, tdValueIndex, zone: zone2 } = positionContext; + if (!isDirectHit || zone2 && zone2 !== this.zone.getZone()) + return null; + let element = null; + const elementList = this.draw.getOriginalElementList(); + let position = null; + const positionList = this.position.getOriginalPositionList(); + if (isTable) { + const td = (_b = elementList[index2].trList) == null ? void 0 : _b[trIndex].tdList[tdIndex]; + element = (td == null ? void 0 : td.value[tdValueIndex]) || null; + position = ((_c = td == null ? void 0 : td.positionList) == null ? void 0 : _c[tdValueIndex]) || null; + } else { + element = elementList[index2] || null; + position = positionList[index2] || null; + } + let rangeRect = null; + if (position) { + const { pageNo: pageNo2, coordinate: { leftTop, rightTop }, lineHeight } = position; + const height = this.draw.getOriginalHeight(); + const pageGap = this.draw.getOriginalPageGap(); + rangeRect = { + x: leftTop[0], + y: leftTop[1] + pageNo2 * (height + pageGap), + width: rightTop[0] - leftTop[0], + height: lineHeight + }; + } + return { + pageNo, + element, + rangeRect + }; + } + insertTitle(payload) { + var _a; + const isDisabled = this.draw.isReadonly() || this.draw.isDisabled(); + if (isDisabled) + return; + const cloneElement = deepClone(payload); + const { startIndex } = this.range.getRange(); + const elementList = this.draw.getElementList(); + const copyElement = getAnchorElement(elementList, startIndex); + if (!copyElement) + return; + const cloneAttr = [ + ...TABLE_CONTEXT_ATTR, + ...EDITOR_ROW_ATTR, + ...LIST_CONTEXT_ATTR + ]; + (_a = cloneElement.valueList) == null ? void 0 : _a.forEach((valueItem) => { + cloneProperty(cloneAttr, copyElement, valueItem); + }); + this.draw.insertElementList([cloneElement]); + } + focus(payload) { + const { position = LocationPosition.AFTER } = payload || {}; + const curIndex = position === LocationPosition.BEFORE ? 0 : this.draw.getOriginalMainElementList().length - 1; + this.range.setRange(curIndex, curIndex); + this.draw.render({ + curIndex, + isCompute: false, + isSubmitHistory: false + }); + const positionList = this.draw.getPosition().getPositionList(); + this.draw.getCursor().moveCursorToVisible({ + cursorPosition: positionList[curIndex], + direction: MoveDirection.DOWN + }); + } +} +class Listener { + constructor() { + this.rangeStyleChange = null; + this.visiblePageNoListChange = null; + this.intersectionPageNoChange = null; + this.pageSizeChange = null; + this.pageScaleChange = null; + this.saved = null; + this.contentChange = null; + this.controlChange = null; + this.pageModeChange = null; + this.zoneChange = null; + } +} +class Register { + constructor(payload) { + const { contextMenu, shortcut, i18n } = payload; + this.contextMenuList = contextMenu.registerContextMenuList.bind(contextMenu); + this.getContextMenuList = contextMenu.getContextMenuList.bind(contextMenu); + this.shortcutList = shortcut.registerShortcutList.bind(shortcut); + this.langMap = i18n.registerLangMap.bind(i18n); + } +} +const NAME_PLACEHOLDER = { + SELECTED_TEXT: "%s" +}; +const INTERNAL_CONTEXT_MENU_KEY = { + GLOBAL: { + CUT: "globalCut", + COPY: "globalCopy", + PASTE: "globalPaste", + SELECT_ALL: "globalSelectAll", + PRINT: "globalPrint" + }, + CONTROL: { + DELETE: "controlDelete" + }, + HYPERLINK: { + DELETE: "hyperlinkDelete", + CANCEL: "hyperlinkCancel", + EDIT: "hyperlinkEdit" + }, + IMAGE: { + CHANGE: "imageChange", + SAVE_AS: "imageSaveAs", + TEXT_WRAP: "imageTextWrap", + TEXT_WRAP_EMBED: "imageTextWrapEmbed", + TEXT_WRAP_UP_DOWN: "imageTextWrapUpDown", + TEXT_WRAP_SURROUND: "imageTextWrapSurround", + TEXT_WRAP_FLOAT_TOP: "imageTextWrapFloatTop", + TEXT_WRAP_FLOAT_BOTTOM: "imageTextWrapFloatBottom" + }, + TABLE: { + BORDER: "border", + BORDER_ALL: "tableBorderAll", + BORDER_EMPTY: "tableBorderEmpty", + BORDER_EXTERNAL: "tableBorderExternal", + BORDER_TD: "tableBorderTd", + BORDER_TD_TOP: "tableBorderTdTop", + BORDER_TD_RIGHT: "tableBorderTdRight", + BORDER_TD_BOTTOM: "tableBorderTdBottom", + BORDER_TD_LEFT: "tableBorderTdLeft", + BORDER_TD_FORWARD: "tableBorderTdForward", + BORDER_TD_BACK: "tableBorderTdBack", + VERTICAL_ALIGN: "tableVerticalAlign", + VERTICAL_ALIGN_TOP: "tableVerticalAlignTop", + VERTICAL_ALIGN_MIDDLE: "tableVerticalAlignMiddle", + VERTICAL_ALIGN_BOTTOM: "tableVerticalAlignBottom", + INSERT_ROW_COL: "tableInsertRowCol", + INSERT_TOP_ROW: "tableInsertTopRow", + INSERT_BOTTOM_ROW: "tableInsertBottomRow", + INSERT_LEFT_COL: "tableInsertLeftCol", + INSERT_RIGHT_COL: "tableInsertRightCol", + DELETE_ROW_COL: "tableDeleteRowCol", + DELETE_ROW: "tableDeleteRow", + DELETE_COL: "tableDeleteCol", + DELETE_TABLE: "tableDeleteTable", + MERGE_CELL: "tableMergeCell", + CANCEL_MERGE_CELL: "tableCancelMergeCell" + } +}; +const { CONTROL: { DELETE: DELETE$1 } } = INTERNAL_CONTEXT_MENU_KEY; +const controlMenus = [ + { + key: DELETE$1, + i18nPath: "contextmenu.control.delete", + when: (payload) => { + var _a; + return !payload.isReadonly && !payload.editorHasSelection && !!((_a = payload.startElement) == null ? void 0 : _a.controlId) && payload.options.mode !== EditorMode.FORM; + }, + callback: (command) => { + command.executeRemoveControl(); + } + } +]; +const { GLOBAL: { CUT, COPY, PASTE, SELECT_ALL, PRINT } } = INTERNAL_CONTEXT_MENU_KEY; +const globalMenus = [ + { + key: CUT, + i18nPath: "contextmenu.global.cut", + shortCut: `${isApple ? "\u2318" : "Ctrl"} + X`, + when: (payload) => { + return !payload.isReadonly; + }, + callback: (command) => { + command.executeCut(); + } + }, + { + key: COPY, + i18nPath: "contextmenu.global.copy", + shortCut: `${isApple ? "\u2318" : "Ctrl"} + C`, + when: (payload) => { + return payload.editorHasSelection || payload.isCrossRowCol; + }, + callback: (command) => { + command.executeCopy(); + } + }, + { + key: PASTE, + i18nPath: "contextmenu.global.paste", + shortCut: `${isApple ? "\u2318" : "Ctrl"} + V`, + when: (payload) => { + return !payload.isReadonly && payload.editorTextFocus; + }, + callback: (command) => { + command.executePaste(); + } + }, + { + key: SELECT_ALL, + i18nPath: "contextmenu.global.selectAll", + shortCut: `${isApple ? "\u2318" : "Ctrl"} + A`, + when: (payload) => { + return payload.editorTextFocus; + }, + callback: (command) => { + command.executeSelectAll(); + } + }, + { + isDivider: true + }, + { + key: PRINT, + i18nPath: "contextmenu.global.print", + icon: "print", + when: () => true, + callback: (command) => { + command.executePrint(); + } + } +]; +const { HYPERLINK: { DELETE, CANCEL, EDIT } } = INTERNAL_CONTEXT_MENU_KEY; +const hyperlinkMenus = [ + { + key: DELETE, + i18nPath: "contextmenu.hyperlink.delete", + when: (payload) => { + var _a; + return !payload.isReadonly && ((_a = payload.startElement) == null ? void 0 : _a.type) === ElementType.HYPERLINK; + }, + callback: (command) => { + command.executeDeleteHyperlink(); + } + }, + { + key: CANCEL, + i18nPath: "contextmenu.hyperlink.cancel", + when: (payload) => { + var _a; + return !payload.isReadonly && ((_a = payload.startElement) == null ? void 0 : _a.type) === ElementType.HYPERLINK; + }, + callback: (command) => { + command.executeCancelHyperlink(); + } + }, + { + key: EDIT, + i18nPath: "contextmenu.hyperlink.edit", + when: (payload) => { + var _a; + return !payload.isReadonly && ((_a = payload.startElement) == null ? void 0 : _a.type) === ElementType.HYPERLINK; + }, + callback: (command, context) => { + var _a; + const url = window.prompt("\u7F16\u8F91\u94FE\u63A5", (_a = context.startElement) == null ? void 0 : _a.url); + if (url) { + command.executeEditHyperlink(url); + } + } + } +]; +const { IMAGE: { CHANGE, SAVE_AS, TEXT_WRAP, TEXT_WRAP_EMBED, TEXT_WRAP_UP_DOWN, TEXT_WRAP_SURROUND, TEXT_WRAP_FLOAT_TOP, TEXT_WRAP_FLOAT_BOTTOM } } = INTERNAL_CONTEXT_MENU_KEY; +const imageMenus = [ + { + key: CHANGE, + i18nPath: "contextmenu.image.change", + icon: "image-change", + when: (payload) => { + var _a; + return !payload.isReadonly && !payload.editorHasSelection && ((_a = payload.startElement) == null ? void 0 : _a.type) === ElementType.IMAGE; + }, + callback: (command) => { + const proxyInputFile = document.createElement("input"); + proxyInputFile.type = "file"; + proxyInputFile.accept = ".png, .jpg, .jpeg"; + proxyInputFile.onchange = () => { + const file = proxyInputFile.files[0]; + const fileReader = new FileReader(); + fileReader.readAsDataURL(file); + fileReader.onload = () => { + const value = fileReader.result; + command.executeReplaceImageElement(value); + }; + }; + proxyInputFile.click(); + } + }, + { + key: SAVE_AS, + i18nPath: "contextmenu.image.saveAs", + icon: "image", + when: (payload) => { + var _a; + return !payload.editorHasSelection && ((_a = payload.startElement) == null ? void 0 : _a.type) === ElementType.IMAGE; + }, + callback: (command) => { + command.executeSaveAsImageElement(); + } + }, + { + key: TEXT_WRAP, + i18nPath: "contextmenu.image.textWrap", + when: (payload) => { + var _a; + return !payload.isReadonly && !payload.editorHasSelection && ((_a = payload.startElement) == null ? void 0 : _a.type) === ElementType.IMAGE; + }, + childMenus: [ + { + key: TEXT_WRAP_EMBED, + i18nPath: "contextmenu.image.textWrapType.embed", + when: () => true, + callback: (command, context) => { + command.executeChangeImageDisplay(context.startElement, ImageDisplay.BLOCK); + } + }, + { + key: TEXT_WRAP_UP_DOWN, + i18nPath: "contextmenu.image.textWrapType.upDown", + when: () => true, + callback: (command, context) => { + command.executeChangeImageDisplay(context.startElement, ImageDisplay.INLINE); + } + }, + { + key: TEXT_WRAP_SURROUND, + i18nPath: "contextmenu.image.textWrapType.surround", + when: () => true, + callback: (command, context) => { + command.executeChangeImageDisplay(context.startElement, ImageDisplay.SURROUND); + } + }, + { + key: TEXT_WRAP_FLOAT_TOP, + i18nPath: "contextmenu.image.textWrapType.floatTop", + when: () => true, + callback: (command, context) => { + command.executeChangeImageDisplay(context.startElement, ImageDisplay.FLOAT_TOP); + } + }, + { + key: TEXT_WRAP_FLOAT_BOTTOM, + i18nPath: "contextmenu.image.textWrapType.floatBottom", + when: () => true, + callback: (command, context) => { + command.executeChangeImageDisplay(context.startElement, ImageDisplay.FLOAT_BOTTOM); + } + } + ] + } +]; +const { TABLE: { BORDER, BORDER_ALL, BORDER_EMPTY, BORDER_EXTERNAL, BORDER_TD, BORDER_TD_TOP, BORDER_TD_LEFT, BORDER_TD_BOTTOM, BORDER_TD_RIGHT, BORDER_TD_BACK, BORDER_TD_FORWARD, VERTICAL_ALIGN, VERTICAL_ALIGN_TOP, VERTICAL_ALIGN_MIDDLE, VERTICAL_ALIGN_BOTTOM, INSERT_ROW_COL, INSERT_TOP_ROW, INSERT_BOTTOM_ROW, INSERT_LEFT_COL, INSERT_RIGHT_COL, DELETE_ROW_COL, DELETE_ROW, DELETE_COL, DELETE_TABLE, MERGE_CELL, CANCEL_MERGE_CELL } } = INTERNAL_CONTEXT_MENU_KEY; +const tableMenus = [ + { + isDivider: true + }, + { + key: BORDER, + i18nPath: "contextmenu.table.border", + icon: "border-all", + when: (payload) => { + return !payload.isReadonly && payload.isInTable && payload.options.mode !== EditorMode.FORM; + }, + childMenus: [ + { + key: BORDER_ALL, + i18nPath: "contextmenu.table.borderAll", + icon: "border-all", + when: () => true, + callback: (command) => { + command.executeTableBorderType(TableBorder.ALL); + } + }, + { + key: BORDER_EMPTY, + i18nPath: "contextmenu.table.borderEmpty", + icon: "border-empty", + when: () => true, + callback: (command) => { + command.executeTableBorderType(TableBorder.EMPTY); + } + }, + { + key: BORDER_EXTERNAL, + i18nPath: "contextmenu.table.borderExternal", + icon: "border-external", + when: () => true, + callback: (command) => { + command.executeTableBorderType(TableBorder.EXTERNAL); + } + }, + { + key: BORDER_TD, + i18nPath: "contextmenu.table.borderTd", + icon: "border-td", + when: () => true, + childMenus: [ + { + key: BORDER_TD_TOP, + i18nPath: "contextmenu.table.borderTdTop", + icon: "border-td-top", + when: () => true, + callback: (command) => { + command.executeTableTdBorderType(TdBorder.TOP); + } + }, + { + key: BORDER_TD_RIGHT, + i18nPath: "contextmenu.table.borderTdRight", + icon: "border-td-right", + when: () => true, + callback: (command) => { + command.executeTableTdBorderType(TdBorder.RIGHT); + } + }, + { + key: BORDER_TD_BOTTOM, + i18nPath: "contextmenu.table.borderTdBottom", + icon: "border-td-bottom", + when: () => true, + callback: (command) => { + command.executeTableTdBorderType(TdBorder.BOTTOM); + } + }, + { + key: BORDER_TD_LEFT, + i18nPath: "contextmenu.table.borderTdLeft", + icon: "border-td-left", + when: () => true, + callback: (command) => { + command.executeTableTdBorderType(TdBorder.LEFT); + } + }, + { + key: BORDER_TD_FORWARD, + i18nPath: "contextmenu.table.borderTdForward", + icon: "border-td-forward", + when: () => true, + callback: (command) => { + command.executeTableTdSlashType(TdSlash.FORWARD); + } + }, + { + key: BORDER_TD_BACK, + i18nPath: "contextmenu.table.borderTdBack", + icon: "border-td-back", + when: () => true, + callback: (command) => { + command.executeTableTdSlashType(TdSlash.BACK); + } + } + ] + } + ] + }, + { + key: VERTICAL_ALIGN, + i18nPath: "contextmenu.table.verticalAlign", + icon: "vertical-align", + when: (payload) => { + return !payload.isReadonly && payload.isInTable && payload.options.mode !== EditorMode.FORM; + }, + childMenus: [ + { + key: VERTICAL_ALIGN_TOP, + i18nPath: "contextmenu.table.verticalAlignTop", + icon: "vertical-align-top", + when: () => true, + callback: (command) => { + command.executeTableTdVerticalAlign(VerticalAlign.TOP); + } + }, + { + key: VERTICAL_ALIGN_MIDDLE, + i18nPath: "contextmenu.table.verticalAlignMiddle", + icon: "vertical-align-middle", + when: () => true, + callback: (command) => { + command.executeTableTdVerticalAlign(VerticalAlign.MIDDLE); + } + }, + { + key: VERTICAL_ALIGN_BOTTOM, + i18nPath: "contextmenu.table.verticalAlignBottom", + icon: "vertical-align-bottom", + when: () => true, + callback: (command) => { + command.executeTableTdVerticalAlign(VerticalAlign.BOTTOM); + } + } + ] + }, + { + key: INSERT_ROW_COL, + i18nPath: "contextmenu.table.insertRowCol", + icon: "insert-row-col", + when: (payload) => { + return !payload.isReadonly && payload.isInTable && payload.options.mode !== EditorMode.FORM; + }, + childMenus: [ + { + key: INSERT_TOP_ROW, + i18nPath: "contextmenu.table.insertTopRow", + icon: "insert-top-row", + when: () => true, + callback: (command) => { + command.executeInsertTableTopRow(); + } + }, + { + key: INSERT_BOTTOM_ROW, + i18nPath: "contextmenu.table.insertBottomRow", + icon: "insert-bottom-row", + when: () => true, + callback: (command) => { + command.executeInsertTableBottomRow(); + } + }, + { + key: INSERT_LEFT_COL, + i18nPath: "contextmenu.table.insertLeftCol", + icon: "insert-left-col", + when: () => true, + callback: (command) => { + command.executeInsertTableLeftCol(); + } + }, + { + key: INSERT_RIGHT_COL, + i18nPath: "contextmenu.table.insertRightCol", + icon: "insert-right-col", + when: () => true, + callback: (command) => { + command.executeInsertTableRightCol(); + } + } + ] + }, + { + key: DELETE_ROW_COL, + i18nPath: "contextmenu.table.deleteRowCol", + icon: "delete-row-col", + when: (payload) => { + return !payload.isReadonly && payload.isInTable && payload.options.mode !== EditorMode.FORM; + }, + childMenus: [ + { + key: DELETE_ROW, + i18nPath: "contextmenu.table.deleteRow", + icon: "delete-row", + when: () => true, + callback: (command) => { + command.executeDeleteTableRow(); + } + }, + { + key: DELETE_COL, + i18nPath: "contextmenu.table.deleteCol", + icon: "delete-col", + when: () => true, + callback: (command) => { + command.executeDeleteTableCol(); + } + }, + { + key: DELETE_TABLE, + i18nPath: "contextmenu.table.deleteTable", + icon: "delete-table", + when: () => true, + callback: (command) => { + command.executeDeleteTable(); + } + } + ] + }, + { + key: MERGE_CELL, + i18nPath: "contextmenu.table.mergeCell", + icon: "merge-cell", + when: (payload) => { + return !payload.isReadonly && payload.isCrossRowCol && payload.options.mode !== EditorMode.FORM; + }, + callback: (command) => { + command.executeMergeTableCell(); + } + }, + { + key: CANCEL_MERGE_CELL, + i18nPath: "contextmenu.table.mergeCancelCell", + icon: "merge-cancel-cell", + when: (payload) => { + return !payload.isReadonly && payload.isInTable && payload.options.mode !== EditorMode.FORM; + }, + callback: (command) => { + command.executeCancelMergeTableCell(); + } + } +]; +class ContextMenu { + constructor(draw, command) { + this._proxyContextMenuEvent = (evt) => { + this.context = this._getContext(); + const renderList = this._filterMenuList(this.contextMenuList); + const isRegisterContextMenu = renderList.some((menu) => !menu.isDivider); + if (isRegisterContextMenu) { + this.dispose(); + this._render({ + contextMenuList: renderList, + left: evt.x, + top: evt.y + }); + } + evt.preventDefault(); + }; + this._handleSideEffect = (evt) => { + if (this.contextMenuContainerList.length) { + const target = (evt == null ? void 0 : evt.composedPath()[0]) || evt.target; + const contextMenuDom = findParent(target, (node) => !!node && node.nodeType === 1 && node.getAttribute(EDITOR_COMPONENT) === EditorComponent.CONTEXTMENU, true); + if (!contextMenuDom) { + this.dispose(); + } + } + }; + this.options = draw.getOptions(); + this.draw = draw; + this.command = command; + this.range = draw.getRange(); + this.position = draw.getPosition(); + this.i18n = draw.getI18n(); + this.container = draw.getContainer(); + this.context = null; + this.contextMenuList = [ + ...globalMenus, + ...tableMenus, + ...imageMenus, + ...controlMenus, + ...hyperlinkMenus + ]; + this.contextMenuContainerList = []; + this.contextMenuRelationShip = /* @__PURE__ */ new Map(); + this._addEvent(); + } + getContextMenuList() { + return this.contextMenuList; + } + _addEvent() { + this.container.addEventListener("contextmenu", this._proxyContextMenuEvent); + document.addEventListener("mousedown", this._handleSideEffect); + } + removeEvent() { + this.container.removeEventListener("contextmenu", this._proxyContextMenuEvent); + document.removeEventListener("mousedown", this._handleSideEffect); + } + _filterMenuList(menuList) { + var _a; + const { contextMenuDisableKeys } = this.options; + const renderList = []; + for (let m = 0; m < menuList.length; m++) { + const menu = menuList[m]; + if (menu.disable || menu.key && contextMenuDisableKeys.includes(menu.key)) { + continue; + } + if (menu.isDivider) { + renderList.push(menu); + } else { + if ((_a = menu.when) == null ? void 0 : _a.call(menu, this.context)) { + renderList.push(menu); + } + } + } + return renderList; + } + _getContext() { + const isReadonly = this.draw.isReadonly(); + const { isCrossRowCol: crossRowCol, startIndex, endIndex } = this.range.getRange(); + const editorTextFocus = !!(~startIndex || ~endIndex); + const editorHasSelection = editorTextFocus && startIndex !== endIndex; + const { isTable, trIndex, tdIndex, index: index2 } = this.position.getPositionContext(); + let tableElement = null; + if (isTable) { + const originalElementList = this.draw.getOriginalElementList(); + const originTableElement = originalElementList[index2] || null; + if (originTableElement) { + tableElement = zipElementList([originTableElement], { + extraPickAttrs: ["id"] + })[0]; + } + } + const isCrossRowCol = isTable && !!crossRowCol; + const elementList = this.draw.getElementList(); + const startElement = elementList[startIndex] || null; + const endElement = elementList[endIndex] || null; + const zone2 = this.draw.getZone().getZone(); + return { + startElement, + endElement, + isReadonly, + editorHasSelection, + editorTextFocus, + isCrossRowCol, + zone: zone2, + isInTable: isTable, + trIndex: trIndex != null ? trIndex : null, + tdIndex: tdIndex != null ? tdIndex : null, + tableElement, + options: this.options + }; + } + _createContextMenuContainer() { + const contextMenuContainer = document.createElement("div"); + contextMenuContainer.classList.add(`${EDITOR_PREFIX}-contextmenu-container`); + contextMenuContainer.setAttribute(EDITOR_COMPONENT, EditorComponent.CONTEXTMENU); + this.container.append(contextMenuContainer); + return contextMenuContainer; + } + _render(payload) { + var _a; + const { contextMenuList, left: left2, top, parentMenuContainer } = payload; + const contextMenuContainer = this._createContextMenuContainer(); + const contextMenuContent = document.createElement("div"); + contextMenuContent.classList.add(`${EDITOR_PREFIX}-contextmenu-content`); + let childMenuContainer = null; + if (parentMenuContainer) { + this.contextMenuRelationShip.set(parentMenuContainer, contextMenuContainer); + } + for (let c = 0; c < contextMenuList.length; c++) { + const menu = contextMenuList[c]; + if (menu.isDivider) { + if (c !== 0 && c !== contextMenuList.length - 1 && !((_a = contextMenuList[c - 1]) == null ? void 0 : _a.isDivider)) { + const divider = document.createElement("div"); + divider.classList.add(`${EDITOR_PREFIX}-contextmenu-divider`); + contextMenuContent.append(divider); + } + } else { + const menuItem = document.createElement("div"); + menuItem.classList.add(`${EDITOR_PREFIX}-contextmenu-item`); + if (menu.childMenus) { + const childMenus = this._filterMenuList(menu.childMenus); + const isRegisterContextMenu = childMenus.some((menu2) => !menu2.isDivider); + if (isRegisterContextMenu) { + menuItem.classList.add(`${EDITOR_PREFIX}-contextmenu-sub-item`); + menuItem.onmouseenter = () => { + this._setHoverStatus(menuItem, true); + this._removeSubMenu(contextMenuContainer); + const subMenuRect = menuItem.getBoundingClientRect(); + const left22 = subMenuRect.left + subMenuRect.width; + const top2 = subMenuRect.top; + childMenuContainer = this._render({ + contextMenuList: childMenus, + left: left22, + top: top2, + parentMenuContainer: contextMenuContainer + }); + }; + menuItem.onmouseleave = (evt) => { + if (!childMenuContainer || !childMenuContainer.contains(evt.relatedTarget)) { + this._setHoverStatus(menuItem, false); + } + }; + } + } else { + menuItem.onmouseenter = () => { + this._setHoverStatus(menuItem, true); + this._removeSubMenu(contextMenuContainer); + }; + menuItem.onmouseleave = () => { + this._setHoverStatus(menuItem, false); + }; + menuItem.onclick = () => { + if (menu.callback && this.context) { + menu.callback(this.command, this.context); + } + this.dispose(); + }; + } + const icon = document.createElement("i"); + menuItem.append(icon); + if (menu.icon) { + icon.classList.add(`${EDITOR_PREFIX}-contextmenu-${menu.icon}`); + } + const span = document.createElement("span"); + const name = menu.i18nPath ? this._formatName(this.i18n.t(menu.i18nPath)) : this._formatName(menu.name || ""); + span.append(document.createTextNode(name)); + menuItem.append(span); + if (menu.shortCut) { + const span2 = document.createElement("span"); + span2.classList.add(`${EDITOR_PREFIX}-shortcut`); + span2.append(document.createTextNode(menu.shortCut)); + menuItem.append(span2); + } + contextMenuContent.append(menuItem); + } + } + contextMenuContainer.append(contextMenuContent); + contextMenuContainer.style.display = "block"; + const innerWidth = window.innerWidth; + const contextmenuRect = contextMenuContainer.getBoundingClientRect(); + const contextMenuWidth = contextmenuRect.width; + const adjustLeft = left2 + contextMenuWidth > innerWidth ? left2 - contextMenuWidth : left2; + contextMenuContainer.style.left = `${adjustLeft}px`; + const innerHeight = window.innerHeight; + const contextMenuHeight = contextmenuRect.height; + const adjustTop = top + contextMenuHeight > innerHeight ? top - contextMenuHeight : top; + contextMenuContainer.style.top = `${adjustTop}px`; + this.contextMenuContainerList.push(contextMenuContainer); + return contextMenuContainer; + } + _removeSubMenu(payload) { + const childMenu = this.contextMenuRelationShip.get(payload); + if (childMenu) { + this._removeSubMenu(childMenu); + childMenu.remove(); + this.contextMenuRelationShip.delete(payload); + } + } + _setHoverStatus(payload, status) { + var _a; + if (status) { + (_a = payload.parentNode) == null ? void 0 : _a.querySelectorAll(`${EDITOR_PREFIX}-contextmenu-item`).forEach((child) => child.classList.remove("hover")); + payload.classList.add("hover"); + } else { + payload.classList.remove("hover"); + } + } + _formatName(name) { + const placeholderValues = Object.values(NAME_PLACEHOLDER); + const placeholderReg = new RegExp(`${placeholderValues.join("|")}`); + let formatName = name; + if (placeholderReg.test(formatName)) { + const selectedReg = new RegExp(NAME_PLACEHOLDER.SELECTED_TEXT, "g"); + if (selectedReg.test(formatName)) { + const selectedText = this.range.toString(); + formatName = formatName.replace(selectedReg, selectedText); + } + } + return formatName; + } + registerContextMenuList(payload) { + this.contextMenuList.push(...payload); + } + dispose() { + this.contextMenuContainerList.forEach((child) => child.remove()); + this.contextMenuContainerList = []; + this.contextMenuRelationShip.clear(); + } +} +const richtextKeys = [ + { + key: KeyMap.X, + ctrl: true, + shift: true, + callback: (command) => { + command.executeStrikeout(); + } + }, + { + key: KeyMap.LEFT_BRACKET, + mod: true, + callback: (command) => { + command.executeSizeAdd(); + } + }, + { + key: KeyMap.RIGHT_BRACKET, + mod: true, + callback: (command) => { + command.executeSizeMinus(); + } + }, + { + key: KeyMap.B, + mod: true, + callback: (command) => { + command.executeBold(); + } + }, + { + key: KeyMap.I, + mod: true, + callback: (command) => { + command.executeItalic(); + } + }, + { + key: KeyMap.U, + mod: true, + callback: (command) => { + command.executeUnderline(); + } + }, + { + key: isApple ? KeyMap.COMMA : KeyMap.RIGHT_ANGLE_BRACKET, + mod: true, + shift: true, + callback: (command) => { + command.executeSuperscript(); + } + }, + { + key: isApple ? KeyMap.PERIOD : KeyMap.LEFT_ANGLE_BRACKET, + mod: true, + shift: true, + callback: (command) => { + command.executeSubscript(); + } + }, + { + key: KeyMap.L, + mod: true, + callback: (command) => { + command.executeRowFlex(RowFlex.LEFT); + } + }, + { + key: KeyMap.E, + mod: true, + callback: (command) => { + command.executeRowFlex(RowFlex.CENTER); + } + }, + { + key: KeyMap.R, + mod: true, + callback: (command) => { + command.executeRowFlex(RowFlex.RIGHT); + } + }, + { + key: KeyMap.J, + mod: true, + callback: (command) => { + command.executeRowFlex(RowFlex.ALIGNMENT); + } + }, + { + key: KeyMap.J, + mod: true, + shift: true, + callback: (command) => { + command.executeRowFlex(RowFlex.JUSTIFY); + } + } +]; +const titleKeys = [ + { + key: KeyMap.ZERO, + alt: true, + ctrl: true, + callback: (command) => { + command.executeTitle(null); + } + }, + { + key: KeyMap.ONE, + alt: true, + ctrl: true, + callback: (command) => { + command.executeTitle(TitleLevel.FIRST); + } + }, + { + key: KeyMap.TWO, + alt: true, + ctrl: true, + callback: (command) => { + command.executeTitle(TitleLevel.SECOND); + } + }, + { + key: KeyMap.THREE, + alt: true, + ctrl: true, + callback: (command) => { + command.executeTitle(TitleLevel.THIRD); + } + }, + { + key: KeyMap.FOUR, + alt: true, + ctrl: true, + callback: (command) => { + command.executeTitle(TitleLevel.FOURTH); + } + }, + { + key: KeyMap.FIVE, + alt: true, + ctrl: true, + callback: (command) => { + command.executeTitle(TitleLevel.FIFTH); + } + }, + { + key: KeyMap.SIX, + alt: true, + ctrl: true, + callback: (command) => { + command.executeTitle(TitleLevel.SIXTH); + } + } +]; +const listKeys = [ + { + key: KeyMap.I, + shift: true, + mod: true, + callback: (command) => { + command.executeList(ListType.UL, ListStyle.DISC); + } + }, + { + key: KeyMap.U, + shift: true, + mod: true, + callback: (command) => { + command.executeList(ListType.OL); + } + } +]; +class Shortcut { + constructor(draw, command) { + this._globalKeydown = (evt) => { + if (!this.globalShortcutList.length) + return; + this._execute(evt, this.globalShortcutList); + }; + this.command = command; + this.globalShortcutList = []; + this.agentShortcutList = []; + this._addShortcutList([...richtextKeys, ...titleKeys, ...listKeys]); + this._addEvent(); + const agentDom = draw.getCursor().getAgentDom(); + agentDom.addEventListener("keydown", this._agentKeydown.bind(this)); + } + _addEvent() { + document.addEventListener("keydown", this._globalKeydown); + } + removeEvent() { + document.removeEventListener("keydown", this._globalKeydown); + } + _addShortcutList(payload) { + for (let s = payload.length - 1; s >= 0; s--) { + const shortCut = payload[s]; + if (shortCut.isGlobal) { + this.globalShortcutList.unshift(shortCut); + } else { + this.agentShortcutList.unshift(shortCut); + } + } + } + registerShortcutList(payload) { + this._addShortcutList(payload); + } + _agentKeydown(evt) { + if (!this.agentShortcutList.length) + return; + this._execute(evt, this.agentShortcutList); + } + _execute(evt, shortCutList) { + var _a; + for (let s = 0; s < shortCutList.length; s++) { + const shortCut = shortCutList[s]; + if ((shortCut.mod ? isMod(evt) === !!shortCut.mod : evt.ctrlKey === !!shortCut.ctrl && evt.metaKey === !!shortCut.meta) && evt.shiftKey === !!shortCut.shift && evt.altKey === !!shortCut.alt && evt.key.toLowerCase() === shortCut.key.toLowerCase()) { + if (!shortCut.disable) { + (_a = shortCut == null ? void 0 : shortCut.callback) == null ? void 0 : _a.call(shortCut, this.command); + evt.preventDefault(); + } + break; + } + } + } +} +class Plugin { + constructor(editor) { + this.editor = editor; + } + use(pluginFunction, options) { + pluginFunction(this.editor, options); + } +} +class EventBus { + constructor() { + this.eventHub = /* @__PURE__ */ new Map(); + } + on(eventName, callback) { + if (!eventName || typeof callback !== "function") + return; + const eventSet = this.eventHub.get(eventName) || /* @__PURE__ */ new Set(); + eventSet.add(callback); + this.eventHub.set(eventName, eventSet); + } + emit(eventName, payload) { + if (!eventName) + return; + const callBackSet = this.eventHub.get(eventName); + if (!callBackSet) + return; + if (callBackSet.size === 1) { + const callBack = [...callBackSet]; + return callBack[0](payload); + } + callBackSet.forEach((callBack) => callBack(payload)); + } + off(eventName, callback) { + if (!eventName || typeof callback !== "function") + return; + const callBackSet = this.eventHub.get(eventName); + if (!callBackSet) + return; + callBackSet.delete(callback); + } + isSubscribe(eventName) { + const eventSet = this.eventHub.get(eventName); + return !!eventSet && eventSet.size > 0; + } +} +class Override { +} +class Editor { + constructor(container, data2, options = {}) { + const editorOptions = mergeOption(options); + data2 = deepClone(data2); + let headerElementList = []; + let mainElementList = []; + let footerElementList = []; + if (Array.isArray(data2)) { + mainElementList = data2; + } else { + headerElementList = data2.header || []; + mainElementList = data2.main; + footerElementList = data2.footer || []; + } + const pageComponentData = [ + headerElementList, + mainElementList, + footerElementList + ]; + pageComponentData.forEach((elementList) => { + formatElementList(elementList, { + editorOptions, + isForceCompensation: true + }); + }); + this.listener = new Listener(); + this.eventBus = new EventBus(); + this.override = new Override(); + const draw = new Draw(container, editorOptions, { + header: headerElementList, + main: mainElementList, + footer: footerElementList + }, this.listener, this.eventBus, this.override); + this.command = new Command(new CommandAdapt(draw)); + const contextMenu = new ContextMenu(draw, this.command); + const shortcut = new Shortcut(draw, this.command); + this.register = new Register({ + contextMenu, + shortcut, + i18n: draw.getI18n() + }); + this.destroy = () => { + draw.destroy(); + shortcut.removeEvent(); + contextMenu.removeEvent(); + }; + const plugin = new Plugin(this); + this.use = plugin.use.bind(plugin); + } +} +export { BackgroundRepeat, BackgroundSize, BlockType, Command, ControlIndentation, ControlType, EDITOR_COMPONENT, Editor, EditorComponent, EditorMode, EditorZone, ElementType, INTERNAL_CONTEXT_MENU_KEY, ImageDisplay, KeyMap, LETTER_CLASS, LineNumberType, ListStyle, ListType, LocationPosition, MaxHeightRatio, NumberType, PageMode, PaperDirection, RenderMode, RowFlex, TableBorder, TdBorder, TdSlash, TextDecorationStyle, TitleLevel, VerticalAlign, WordBreak, createDomFromElementList, Editor as default, getElementListByHTML, getTextFromElementList, splitText }; diff --git a/jeecgboot-vue3/src/components/wordtpl/components/HighlightColorModal.vue b/jeecgboot-vue3/src/components/wordtpl/components/HighlightColorModal.vue new file mode 100644 index 000000000..98a8c8be4 --- /dev/null +++ b/jeecgboot-vue3/src/components/wordtpl/components/HighlightColorModal.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/jeecgboot-vue3/src/components/wordtpl/components/HyperlinkDrawer.vue b/jeecgboot-vue3/src/components/wordtpl/components/HyperlinkDrawer.vue new file mode 100644 index 000000000..9238aa06b --- /dev/null +++ b/jeecgboot-vue3/src/components/wordtpl/components/HyperlinkDrawer.vue @@ -0,0 +1,62 @@ + + + + + + diff --git a/jeecgboot-vue3/src/components/wordtpl/components/PagerMarginDrawer.vue b/jeecgboot-vue3/src/components/wordtpl/components/PagerMarginDrawer.vue new file mode 100644 index 000000000..13371949b --- /dev/null +++ b/jeecgboot-vue3/src/components/wordtpl/components/PagerMarginDrawer.vue @@ -0,0 +1,82 @@ + + + + + + diff --git a/jeecgboot-vue3/src/components/wordtpl/components/WatermarkDrawer.vue b/jeecgboot-vue3/src/components/wordtpl/components/WatermarkDrawer.vue new file mode 100644 index 000000000..fe082e983 --- /dev/null +++ b/jeecgboot-vue3/src/components/wordtpl/components/WatermarkDrawer.vue @@ -0,0 +1,108 @@ + + + + + + diff --git a/jeecgboot-vue3/src/components/wordtpl/style/DocDesign.css b/jeecgboot-vue3/src/components/wordtpl/style/DocDesign.css new file mode 100644 index 000000000..d4ac4e1c5 --- /dev/null +++ b/jeecgboot-vue3/src/components/wordtpl/style/DocDesign.css @@ -0,0 +1,1069 @@ +.content { + display: flex; +} + +.space-between { + display: flex; + align-items: center; + justify-content: space-between; +} + +.align-center { + display: flex; + align-items: center; +} + +.ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.header { + height: 64px; + padding: 0; + background-color: #fff; + .header-title { + width: 200px; + } + .headerRight { + padding-right: 24px; + font-size: 14px; + color: rgba(0, 0, 0, 0.9); + .role-name { + margin-right: 8px; + } + } + .header-name { + width: 100%; + padding: 0 16px; + background-color: rgba(208, 208, 208, 0); + font-size: 18px; + line-height: 30px; + color: #1a1a1a; + font-weight: bold; + margin: 5px 0; + } +} + +.center { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + position: relative; + margin: 0 10px; + width: 100%; + .left-action { + left: -10px; + border-radius: 0 3px 3px 0; + } + + .right-action { + border-radius: 3px 0 0 3px; + right: -13px; + } + + .action-icon { + cursor: pointer; + transition: all 0.3s; + position: absolute; + top: 50%; + + transform: translateY(-50%); + z-index: 999; + background-color: #ffffff; + width: 10px; + height: 48px; + + &:hover { + opacity: 0.7; + } + } +} +.menu { + width: 100%; + height: 60px; + margin: 0 auto; + top: 0; + z-index: 9; + overflow-x: auto; + display: flex; + align-items: center; + justify-content: center; + background: #f2f4f7; + box-shadow: 0 2px 4px 0 transparent; + .menu-item { + height: 24px; + display: flex; + align-items: center; + position: relative; + } + .menu-item > div { + width: 24px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + margin: 0 2px; + } + + .menu-item > div:hover { + background: rgba(25, 55, 88, 0.04); + } + + .menu-item > div.active { + background: rgba(25, 55, 88, 0.08); + } + + i { + width: 18px; + height: 18px; + display: inline-block; + background-repeat: no-repeat; + background-size: 100% 100%; + } +} + +.menu-item>div>span { + width: 16px; + height: 3px; + display: inline-block; + border: 1px solid #e2e6ed; +} + +.jeecg-menu-item-save i { + background-image: url('/@/assets/images/wordtpl/images/save.svg'); +} +.jeecg-menu-item-upload i { + background-image: url('/@/assets/images/wordtpl/images/upload.svg'); +} +.menu-item-preview i { + background-image: url('/@/assets/images/wordtpl/images/preview.svg'); +} +.jeecg-menu-item-undo i { + background-image: url('/@/assets/images/wordtpl/images/undo.svg'); +} +.jeecg-menu-item-redo i { + background-image: url('/@/assets/images/wordtpl/images/redo.svg'); +} +.jeecg-menu-item-painter i { + background-image: url('/@/assets/images/wordtpl/images/painter.svg'); +} +.jeecg-menu-item-format i { + background-image: url('/@/assets/images/wordtpl/images/format.svg'); +} +.jeecg-menu-item-size-add i { + background-image: url('/@/assets/images/wordtpl/images/size-add.svg'); +} +.jeecg-menu-item-size-minus i { + background-image: url('/@/assets/images/wordtpl/images/size-minus.svg'); +} +.jeecg-menu-item-bold i { + background-image: url('/@/assets/images/wordtpl/images/bold.svg'); +} +.jeecg-menu-item-italic i { + background-image: url('/@/assets/images/wordtpl/images/italic.svg'); +} + +.jeecg-menu-item-underline>i{ + flex-shrink: 0; + background-image: url('/@/assets/images/wordtpl/images/underline.svg'); +} +.jeecg-menu-item-underline li[data-decoration-style="solid"]{ + background-image: url(/@/assets/images/wordtpl/images/line-single.svg); + background-repeat: no-repeat; +} +.jeecg-menu-item-underline li[data-decoration-style="double"]{ + background-image: url(/@/assets/images/wordtpl/images/line-double.svg); + background-repeat: no-repeat; +} +.jeecg-menu-item-underline li[data-decoration-style="dashed"]{ + background-image: url(/@/assets/images/wordtpl/images/line-dash-small-gap.svg); + background-repeat: no-repeat; +} +.jeecg-menu-item-underline li[data-decoration-style="dotted"]{ + background-image: url(/@/assets/images/wordtpl/images/line-dot.svg); + background-repeat: no-repeat; +} +.jeecg-menu-item-underline li[data-decoration-style="wavy"] { + background-image: url(/@/assets/images/wordtpl/images/line-wavy.svg); + background-repeat: no-repeat; +} +.jeecg-menu-item-underline li i{ + pointer-events: none; + padding: 1px 5px !important; +} + +.jeecg-menu-item-underline .select { + width: 100%; + height: 100%; +} +.jeecg-menu-item-strikeout i{ + background-image: url('/@/assets/images/wordtpl/images/strikeout.svg'); +} + +.jeecg-menu-item-superscript i{ + background-image: url('/@/assets/images/wordtpl/images/superscript.svg'); +} + +.jeecg-menu-item-subscript i{ + background-image: url('/@/assets/images/wordtpl/images/subscript.svg'); +} + +.jeecg-menu-item-color i{ + background-image: url('/@/assets/images/wordtpl/images/color.svg'); +} + +.jeecg-menu-item-highlight i{ + background-image: url('/@/assets/images/wordtpl/images/highlight.svg'); +} + +.jeecg-menu-item-cellcolor i{ + background-image: url('/@/assets/images/wordtpl/images/cellcolor.svg'); +} + +.jeecg-menu-item-title i{ + background-image: url('/@/assets/images/wordtpl/images/title.svg'); +} + +.jeecg-menu-item-left i{ + background-image: url('/@/assets/images/wordtpl/images/left.svg'); +} + +.jeecg-menu-item-center i{ + background-image: url('/@/assets/images/wordtpl/images/center.svg'); +} + +.jeecg-menu-item-right i{ + background-image: url('/@/assets/images/wordtpl/images/right.svg'); +} + +.jeecg-menu-item-alignment i{ + background-image: url('/@/assets/images/wordtpl/images/alignment.svg'); +} + +.jeecg-menu-item-row-margin i{ + background-image: url('/@/assets/images/wordtpl/images/row-margin.svg'); +} + +.jeecg-menu-item-list i{ + background-image: url('/@/assets/images/wordtpl/images/list.svg'); +} + +.jeecg-menu-item-download i{ + background-image: url('/@/assets/images/wordtpl/images/download.svg'); +} + +.jeecg-menu-item-chart i { + background-image: url('/@/assets/images/wordtpl/images/chart.svg'); +} + +.jeecg-menu-item-table i { + background-image: url('/@/assets/images/wordtpl/images/table.svg'); +} + +.jeecg-menu-item-image i { + background-image: url('/@/assets/images/wordtpl/images/image.svg'); +} + +.jeecg-menu-item-barcode i { + background-image: url('/@/assets/images/wordtpl/images/barcode.svg'); +} + +.jeecg-menu-item-qrcode i { + background-image: url('/@/assets/images/wordtpl/images/qrcode.svg'); +} + +.jeecg-menu-item-hyperlink i { + background-image: url('/@/assets/images/wordtpl/images/hyperlink.svg'); +} + +.jeecg-menu-item-separator>i { + background-image: url('/@/assets/images/wordtpl/images/separator.svg'); +} + +.jeecg-menu-item-watermark i { + background-image: url('/@/assets/images/wordtpl/images/watermark.svg'); +} + +.jeecg-menu-item-page-break i { + background-image: url('/@/assets/images/wordtpl/images/page-break.svg'); +} +.jeecg-menu-item-search i { + background-image: url('/@/assets/images/wordtpl/images/search.svg'); +} + +.jeecg-menu-item-print i { + background-image: url('/@/assets/images/wordtpl/images/print.svg'); +} + + +.jeecg-menu-item-color, +.jeecg-menu-item-highlight, +.jeecg-menu-item-cellcolor { + display: flex; + flex-direction: column; +} + +.jeecg-menu-item-color #color, +.jeecg-menu-item-highlight #highlight, +.jeecg-menu-item-cellcolor #cellcolor { + width: 1px; + height: 1px; + visibility: hidden; + outline: none; + appearance: none; +} + +.jeecg-menu-item-highlight span{ + background-color: #ffff00; +} + +.jeecg-menu-item-color span { + background-color: #000000; +} +.menu-item .jeecg-menu-item-underline .options { + width: 128px !important; +} + +.menu-item .jeecg-menu-item-underline .options li{ + padding: 1px 5px; +} + +ul{ + list-style: none; +} + + +.editor-container { + height: calc(100vh - 164px); + overflow-y: auto; +} + +.no-allow { + color: #c0c4cc; + cursor: not-allowed; + opacity: 0.4; + pointer-events: none; +} + +.menu-item .menu-item__font { + width: 70px !important; + position: relative; + font-size: 14px; +} + +.menu-item .select { + border: none; + font-size: 14px; + line-height: 24px; + user-select: none; +} + +.menu-item .select::after { + position: absolute; + content: ''; + top: 11px; + width: 0; + height: 0; + right: 2px; + border-color: #767c85 transparent transparent; + border-style: solid solid none; + border-width: 4px 4px 0; +} + +.menu-item .options { + width: 110px; + position: fixed; + top: 113px; + padding: 10px; + font-size: 14px; + border: 1px solid #e2e6ed; + display: none; + box-sizing: border-box; + margin: 0; + color: rgba(0, 0, 0, 0.88); + line-height: 1.5; + list-style: none; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + z-index: 1050; + overflow: hidden; + font-variant: initial; + background-color: #ffffff; + border-radius: 8px; + outline: none; + box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05); + align-items: center; +} + +.menu-item .options.visible { + display: block; + z-index: 99; +} + +.menu-item .options li { + position: relative; + display: block; + min-height: 32px; + padding: 5px 12px; + color: rgba(0, 0, 0, 0.88); + font-weight: normal; + font-size: 14px; + line-height: 1.5; + box-sizing: border-box; + cursor: pointer; + transition: background 0.3s ease; + border-radius: 4px; +} + +.menu-item .options li:hover { + background-color: #ebecef; +} + +.menu-item .options li.active { + color: rgba(0, 0, 0, 0.88); + font-weight: 600; + background-color: #e6f4ff; +} + +.menu-item .jeecg-menu-item-font { + width: 65px; + position: relative; +} + +.menu-item .jeecg-menu-item-size { + width: 50px; + text-align: center; + position: relative; +} + +.jeecg-menu-item-font .select, +.jeecg-menu-item-size .select { + width: 100%; + height: 100%; +} + +.menu-item .jeecg-menu-item-font { + width: 70px!important;; + position: relative; +} + +.menu-item .jeecg-menu-item-size { + width: 50px !important; + text-align: center; + position: relative; +} + +.jeecg-menu-item-size .options,.jeecg-menu-item-font .options{ + height: 566px; + overflow-y: auto; +} + +.jeecg-menu-item-redo.no-allow, +.jeecg-menu-item-undo.no-allow, +.menu-item > div.disable { + color: #c0c4cc; + cursor: not-allowed; + opacity: 0.4; + pointer-events: none; +} + +.menu-item .options.visible { + display: block; + z-index: 99; +} + +.menu-item .jeecg-menu-item-underline { + width: 30px !important; + position: relative; +} + +.jeecg__editor { + display: grid; + justify-content: center; +} + +.menu-item .jeecg-menu-item-title { + width: 60px !important; + position: relative; +} + +.jeecg-menu-item-title .select { + width: calc(100% - 20px); + height: 100%; + font-size: 12px !important; +} + +.jeecg-menu-item-title .options { + width: 114px; +} + +.jeecg-menu-item-list { + position: relative; +} + +.jeecg-menu-item-list .options { + width: 150px !important; +} + +.jeecg-menu-item-list .options>ul>li * { + pointer-events: none !important; +} + +.jeecg-menu-item-list .options>ul>li li { + margin-left: 18px !important; +} +.jeecg-menu-item-list .options>ul>li ol { + margin: 0; + padding: 0; +} + +.menu-item .jeecg-menu-item-table-collapse { + width: 270px !important; + height: 310px; + background: #fff; + box-shadow: 0 2px 12px 0 rgb(56 56 56 / 20%); + border: 1px solid #e2e6ed; + box-sizing: border-box; + border-radius: 2px; + position: fixed; + z-index: 99; + top: 113px; + padding: 14px 27px; + cursor: auto !important; +} + +.menu-item .jeecg-menu-item-table-collapse .table-close { + position: absolute; + right: 10px; + top: 5px; + cursor: pointer; +} + +.menu-item .jeecg-menu-item-table-collapse .table-close:hover { + color: #7d7e80 !important;; +} + +.menu-item .jeecg-menu-item-table-collapse:hover { + background: #fff !important; +} + +.menu-item .jeecg-menu-item-table-collapse .table-title { + display: flex; + justify-content: flex-start; + padding-bottom: 5px; + border-bottom: 1px solid #e2e6ed; +} + +.table-title span { + font-size: 12px; + color: #3d4757; + display: inline; + margin: 0; +} + +:deep(.table-panel) { + cursor: pointer; +} + +:deep(.table-panel .table-row) { + display: flex; + flex-wrap: nowrap; + margin-top: 10px; + pointer-events: none; +} + +:deep(.table-panel .table-cel) { + width: 16px; + height: 16px; + box-sizing: border-box; + border: 1px solid #e2e6ed; + background: #fff; + position: relative; + margin-right: 6px; + pointer-events: none; +} + +:deep(.table-panel .table-cel.active) { + border: 1px solid rgba(73, 145, 242, .2); + background: rgba(73, 145, 242, .15); +} + +:deep(.table-panel .table-row .table-cel:last-child) { + margin-right: 0; +} + +.jeecg-menu-item-image input{ + display: none; +} + +.menu-item .jeecg-menu-item-separator .options { + width: 128px !important; +} + +.menu-item .jeecg-menu-item-separator li { + padding: 1px 5px; + min-height: 20px; +} + +.jeecg-menu-item-separator li i { + pointer-events: none; +} + +.jeecg-menu-item-separator .more input{ + width: 100%; +} +.jeecg-menu-item-separator .more div span{ + width: 30px; +} +.jeecg-menu-item-separator .more .menu{ + margin-top: 20px; +} +.jeecg-menu-item-separator .more .menu button:last-child{ + margin-left: 8px; +} + +.jeecg-menu-item-separator li[data-separator="0,0"] { + background: url('/@/assets/images/wordtpl/images/line-single.svg') no-repeat; +} + +.jeecg-menu-item-separator li[data-separator="1,1"] { + background: url('/@/assets/images/wordtpl/images/line-dot.svg') no-repeat; +} + +.jeecg-menu-item-separator li[data-separator="3,1"] { + background: url('/@/assets/images/wordtpl/images/line-dash-small-gap.svg') no-repeat; +} + +.jeecg-menu-item-separator li[data-separator="4,4"] { + background: url('/@/assets/images/wordtpl/images/line-dash-large-gap.svg') no-repeat; +} + +.jeecg-menu-item-separator li[data-separator="7,3,3,3"] { + background: url('/@/assets/images/wordtpl/images/line-dash-dot.svg') no-repeat; +} + +.jeecg-menu-item-separator li[data-separator="6,2,2,2,2,2"] { + background: url('/@/assets/images/wordtpl/images/line-dash-dot-dot.svg') no-repeat; +} + +.jeecg-menu-item-search { + position: relative; +} + + +.menu-item .jeecg-menu-item-search-collapse { + width: 260px !important; + height: 72px; + box-sizing: border-box; + position: fixed; + z-index: 99; + top: 113px; + left: 0; + background: #ffffff; + box-shadow: 0 5px 5px #e3dfdf; +} + +.menu-item .jeecg-menu-item-search-collapse:hover { + background: #ffffff; +} + +.menu-item .jeecg-menu-item-search-collapse>div { + width: 250px; + height: 36px; + padding: 0 5px; + line-height: 36px; + display: flex; + align-items: center; + justify-content: space-between; + border-radius: 4px; +} + +.menu-item .jeecg-menu-item-search-collapse>div input { + width: 205px; + height: 27px; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #ebebeb; + box-sizing: border-box; + color: #606266; + display: inline-block; + line-height: 27px; + outline: none; + padding: 0 5px; +} + +.menu-item .jeecg-menu-item-search-collapse>div span { + height: 100%; + color: #dcdfe6; + font-size: 25px; + display: inline-block; + border: 0; + padding: 0 10px; +} + +.menu-item .jeecg-menu-item-search-collapse button { + display: inline-block; + border: 1px solid #e2e6ed; + border-radius: 2px; + background: #fff; + line-height: 22px; + padding: 0 6px; + white-space: nowrap; + margin-left: 4px; + cursor: pointer; + font-size: 12px; +} + +.menu-item .jeecg-menu-item-search-collapse-replace button:hover { + background: rgba(25, 55, 88, .04); +} + +.menu-item .jeecg-menu-item-search-collapse-search { + position: relative; +} + +.menu-item .jeecg-menu-item-search-collapse-search label { + right: 110px; + font-size: 12px; + color: #3d4757; + position: absolute; +} + +.menu-item .jeecg-menu-item-search-collapse-search>input { + padding: 5px 90px 5px 5px !important; +} + +.menu-item .jeecg-menu-item-search-collapse-search>div { + width: 28px; + height: 27px; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + border-left: 1px solid #e2e6ed; + transition: all .5s; +} + +.menu-item .jeecg-menu-item-search-collapse-search>div:hover { + background-color: rgba(25, 55, 88, 0.04); +} + +.menu-item .jeecg-menu-item-search-collapse-search i { + width: 6px; + height: 8px; + transform: translateY(1px); +} + +.menu-item .jeecg-menu-item-search-collapse-search .arrow-left { + right: 76px; +} + +.menu-item .jeecg-menu-item-search-collapse-search .arrow-left i { + background: url(/@/assets/images/wordtpl/images/arrow-left.svg) no-repeat; +} + +.menu-item .jeecg-menu-item-search-collapse-search .arrow-right { + right: 48px; +} + +.menu-item .jeecg-menu-item-search-collapse-search .arrow-right i { + background: url(/@/assets/images/wordtpl/images/arrow-right.svg) no-repeat; +} + +.footer { + width: 100%; + height: 30px; + display: flex; + align-items: center; + justify-content: space-between; + position: absolute; + background: #f2f4f7; + z-index: 9; + bottom: 0; + left: 0; + font-size: 12px; + padding: 0 4px 0 20px; + box-sizing: border-box; +} + +.footer>div:first-child { + display: flex; + align-items: center; +} + +.footer .catalog-mode { + padding: 1px; + position: relative; +} + +.footer .catalog-mode i { + width: 16px; + height: 16px; + margin-right: 5px; + cursor: pointer; + display: block; + background-image: url('/@/assets/images/wordtpl/images/catalog.svg'); +} + +.footer .page-mode { + padding: 1px; + position: relative; +} + +.footer .page-mode i { + width: 16px; + height: 16px; + margin-right: 5px; + cursor: pointer; + display: block; + background-image: url('/@/assets/images/wordtpl/images/page-mode.svg'); +} + +.footer .options { + width: 72px; + position: absolute; + bottom: 26px; + padding: 10px; + top: unset !important; + left: unset !important; + font-size: 14px; + border: 1px solid #e2e6ed; + display: none; + box-sizing: border-box; + margin: 0; + color: rgba(0, 0, 0, 0.88); + line-height: 1.5; + list-style: none; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + z-index: 1050; + overflow: hidden; + font-variant: initial; + background-color: #ffffff; + border-radius: 8px; + outline: none; + box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05); + align-items: center; +} + +.footer .options.visible { + display: block; +} + +.footer .options li { + position: relative; + display: block; + min-height: 32px; + padding: 5px 10px; + color: rgba(0, 0, 0, 0.88); + font-weight: normal; + font-size: 14px; + line-height: 1.5; + box-sizing: border-box; + cursor: pointer; + transition: background 0.3s ease; + border-radius: 4px; +} + +.footer .options li:hover { + background-color: #ebecef; +} + +.footer .options li.active { + color: rgba(0, 0, 0, 0.88); + font-weight: 600; + background-color: #e6f4ff; +} + +.footer>div:first-child>span { + display: inline-block; + margin-right: 5px; + letter-spacing: 1px; +} + +.footer>div:last-child { + display: flex; + align-items: center; + justify-content: space-between; +} + +.footer>div:last-child>div { + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; +} + +.footer>div:last-child>div:hover { + background: rgba(25, 55, 88, .04); +} + +.footer>div:last-child i { + width: 16px; + height: 16px; + display: inline-block; + cursor: pointer; +} + +.footer .editor-option i { + background-image: url('/@/assets/images/wordtpl/images/option.svg'); +} + +.footer .page-scale-minus i { + background-image: url('/@/assets/images/wordtpl/images/page-scale-minus.svg'); +} + +.footer .page-scale-add i { + background-image: url('/@/assets/images/wordtpl/images/page-scale-add.svg'); +} + +.footer .page-scale-percentage { + cursor: pointer; + user-select: none; +} + +.footer .fullscreen i { + background-image: url('/@/assets/images/wordtpl/images/request-fullscreen.svg'); +} + +.footer .fullscreen.exist i { + background-image: url('/@/assets/images/wordtpl/images/exit-fullscreen.svg'); +} + +.footer .paper-margin i { + background-image: url('/@/assets/images/wordtpl/images/paper-margin.svg'); +} + +.footer .editor-mode { + cursor: pointer; + user-select: none; +} + +.footer .paper-size { + position: relative; +} + +.footer .paper-size i { + background-image: url('/@/assets/images/wordtpl/images/paper-size.svg'); +} + +.footer .paper-size .options { + width: 100px !important; + height: 340px !important; + right: 0; + left: unset; +} + +.footer .paper-direction { + position: relative; +} + +.footer .paper-direction i { + background-image: url('/@/assets/images/wordtpl/images/paper-direction.svg'); +} + +.footer .paper-direction .options { + right: 0; + left: unset; + height: 84px; +} +.footer .page-mode .options{ + height: 80px; +} + +.catalog{ + width: 250px; + position: absolute; + bottom: 0; + top: 70px; + padding: 0 20px 40px 20px; +} + +.catalog .jeecg-catalog-header { + height: 48px; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #e2e6ed; +} + +.catalog .jeecg-catalog-header span { + color: #3d4757; + font-size: 14px; + font-weight: bold; +} + +.catalog .jeecg-catalog-header i { + width: 16px; + height: 16px; + cursor: pointer; + display: inline-block; + background: url(/@/assets/images/wordtpl/images/close.svg) no-repeat; + transition: all .2s; +} + +.catalog .jeecg-catalog-header>div:hover { + background: rgba(235, 238, 241); +} + +.jeecg-catalog-main { + height: calc(100% - 60px); + padding: 10px 0; + overflow-y: auto; + overflow-x: hidden; +} + +.jeecg-catalog-main .catalog-item { + width: 100%; + padding-left: 10px; + box-sizing: border-box; +} + +.jeecg-catalog-main>.catalog-item { + padding-left: 0; +} + +:deep(.jeecg-catalog-main .catalog-item .jeecg-catalog-item-content) { + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +:deep(.jeecg-catalog-main .catalog-item .jeecg-catalog-item-content:hover >span) { + color: #4991f2; +} + +:deep(.jeecg-catalog-main .catalog-item .jeecg-catalog-item-content span) { + color: #3d4757; + line-height: 30px; + font-size: 12px; + white-space: nowrap; + cursor: pointer; + user-select: none; +} + + +.jeecg-menu-item-row-margin .options{ + width: 76px; + height: 242px; +} + +.jeecg-menu-item-underline .options{ + height: 180px; +} + +ol, ul { + margin: 0; + padding: 0; + list-style: none; +} + +li { + display: list-item !important; + text-align: -webkit-match-parent; + unicode-bidi: isolate; +} diff --git a/jeecgboot-vue3/src/utils/common/compUtils.ts b/jeecgboot-vue3/src/utils/common/compUtils.ts index 20c0b807e..0faab619a 100644 --- a/jeecgboot-vue3/src/utils/common/compUtils.ts +++ b/jeecgboot-vue3/src/utils/common/compUtils.ts @@ -11,6 +11,9 @@ import Big from 'big.js'; import { Modal } from "ant-design-vue"; import { defHttp } from "@/utils/http/axios"; import { useI18n } from "@/hooks/web/useI18n"; +import {$electron} from "@/electron"; +import {router} from "@/router"; +import {encryptByBase64} from "@/utils/cipher"; //存放部门路径的数组 const departNamePath = ref>({}); @@ -38,6 +41,17 @@ export const getFileAccessHttpUrl = (fileUrl, prefix = 'http') => { } catch (err) {} return result; }; +/** + * 获取桌面端wps的文件服务访问路径 + * @param fileUrl 文件路径 + */ +export const getElectronFileUrl = (url) => { + let fileUrl: any = url; + if (url && $electron.isElectron()) { + fileUrl = router.resolve({path: '/onlinePreview', query: {url: encryptByBase64(getFileAccessHttpUrl(url))}}).href; + } + return fileUrl; +}; /** * 触发 window.resize @@ -703,4 +717,65 @@ export function getDepartName(departNamePath) { },textElements) } return departNamePath; -} \ No newline at end of file +} + +/** + * 获取文件表 + * @param fileUrl + */ +export function getFileIcon(fileUrl) { + if(!fileUrl) { + return 'ant-design:file-outlined'; + } + const suffix = fileUrl.substring(fileUrl.lastIndexOf('.') + 1).toLowerCase(); + if(['xls','xlsx','csv'].includes(suffix)) { + return 'ant-design:file-excel-filled'; + } + if(['doc','docx'].includes(suffix)) { + return 'ant-design:file-word-filled'; + } + if(['pdf'].includes(suffix)) { + return 'ant-design:file-pdf-filled'; + } + if(['ppt','pptx'].includes(suffix)) { + return 'ant-design:file-ppt-filled'; + } + if(['txt'].includes(suffix)) { + return 'ant-design:file-text-filled'; + } + if(['md'].includes(suffix)) { + return 'ant-design:file-markdown-filled'; + } + return 'ant-design:file-unknown-filled'; +} + +/** + * 获取文件图标颜色 + * + * @param fileUrl + */ +export function getFileIconColor(fileUrl) { + if(!fileUrl) { + return '#999'; + } + const suffix = fileUrl.substring(fileUrl.lastIndexOf('.') + 1).toLowerCase(); + if(['xls','xlsx','csv'].includes(suffix)) { + return '#52c41a'; + } + if(['doc','docx'].includes(suffix)) { + return '#1890ff'; + } + if(['pdf'].includes(suffix)) { + return '#ff4d4f'; + } + if(['ppt','pptx'].includes(suffix)) { + return '#fa8c16'; + } + if(['txt'].includes(suffix)) { + return '#666'; + } + if(['md'].includes(suffix)) { + return '#000'; + } + return '#999'; +} diff --git a/jeecgboot-vue3/src/utils/dict/JDictSelectUtil.js b/jeecgboot-vue3/src/utils/dict/JDictSelectUtil.js index 75354ab56..52ff6a1c0 100644 --- a/jeecgboot-vue3/src/utils/dict/JDictSelectUtil.js +++ b/jeecgboot-vue3/src/utils/dict/JDictSelectUtil.js @@ -108,6 +108,33 @@ export function filterMultiDictText(dictOptions, text) { return re.substring(0, re.length - 1); } +/** + * 字典值替换文本通用方法(多选) + * @param dictOptions 字典数组 + * @param val 字典值 + * @return {*[]} 返回字典项原对象 + */ +export function filterMultiDictObjs(dictOptions, val) { + val = val?.toString?.() ?? ''; + if (!val || !dictOptions || dictOptions.length === 0) { + return []; + } + const objs = []; + const vals = val.split(','); + for (const item of vals) { + const option = dictOptions.find((option) => option && option.value === item); + if (option) { + objs.push({ + value: item, + text: option.text || option.title || option.label, + color: option.color, + hasColor: !!option.color, + }); + } + } + return objs; +} + /** * 翻译字段值对应的文本 * @param children diff --git a/jeecgboot-vue3/src/views/monitor/mynews/DetailModal.vue b/jeecgboot-vue3/src/views/monitor/mynews/DetailModal.vue index 3ccbb2bb6..bef81e513 100644 --- a/jeecgboot-vue3/src/views/monitor/mynews/DetailModal.vue +++ b/jeecgboot-vue3/src/views/monitor/mynews/DetailModal.vue @@ -75,11 +75,12 @@ import xss from 'xss'; import { options } from './XssWhiteList'; import { ref, unref } from 'vue'; - import { getFileAccessHttpUrl } from '@/utils/common/compUtils'; + import { getElectronFileUrl, getFileAccessHttpUrl } from '@/utils/common/compUtils'; import { useGlobSetting } from '@/hooks/setting'; import { encryptByBase64 } from '@/utils/cipher'; import { getToken } from '@/utils/auth'; import {defHttp} from "@/utils/http/axios"; + import {$electron} from "@/electron"; const router = useRouter(); const glob = useGlobSetting(); const isUpdate = ref(true); @@ -110,7 +111,8 @@ content.value = data.record; if(content.value.sender){ const userInfo = await defHttp.get({ url: '/sys/user/queryUserComponentData?isMultiTranslate=true', params: { username: content.value.sender } }); - content.value.sender = userInfo && userInfo?.records && userInfo?.records.length>0?userInfo.records[0].realname : content.value.sender; + content.value.sender = userInfo && userInfo?.records && userInfo?.records.length>0 + ?userInfo.records.find((item) => item.username === content.value.sender)?.realname : content.value.sender; } console.log('data---------->>>', data); if (data.record?.files && data.record?.files.length > 0) { @@ -279,6 +281,11 @@ console.log('glob.onlineUrl', glob.viewUrl); let url = encodeURIComponent(encryptByBase64(filePath)); let previewUrl = `${glob.viewUrl}?url=` + url; + //update-begin-author:liusq---date:2025-12-16--for: JHHB-1139桌面端 文件预览统一修改 + if($electron.isElectron()){ + previewUrl = getElectronFileUrl(filePath); + } + //update-end-author:liusq---date:2025-12-16--for: JHHB-1139桌面端 文件预览统一修改 window.open(previewUrl, '_blank'); } } diff --git a/jeecgboot-vue3/src/views/super/airag/aiapp/AiApp.api.ts b/jeecgboot-vue3/src/views/super/airag/aiapp/AiApp.api.ts index 43a1917bf..8348519f1 100644 --- a/jeecgboot-vue3/src/views/super/airag/aiapp/AiApp.api.ts +++ b/jeecgboot-vue3/src/views/super/airag/aiapp/AiApp.api.ts @@ -9,8 +9,11 @@ export enum Api { delete = '/airag/app/delete', queryById = '/airag/app/queryById', queryBathById = '/airag/knowledge/query/batch/byId', + queryKnowledgeById = '/airag/knowledge/queryById', queryFlowById = '/airag/flow/queryById', + queryFlowByIds = '/airag/flow/list', promptGenerate = '/airag/app/prompt/generate', + generateMemoryByAppId = '/airag/app/prompt/generateMemoryByAppId', } /** @@ -29,6 +32,14 @@ export const queryKnowledgeBathById = (params) => { return defHttp.get({ url: Api.queryBathById, params }, { isTransformResponse: false }); }; +/** + * 查询知识库(单条) + * @param params + */ +export const queryKnowledgeById = (params) => { + return defHttp.get({ url: Api.queryKnowledgeById, params }, { isTransformResponse: false }); +}; + /** * 根据应用id查询应用 * @param params @@ -84,6 +95,14 @@ export const queryFlowById = (params) => { return defHttp.get({ url: Api.queryFlowById, params }, { isTransformResponse: false }); }; +/** + * 根据应用id查询流程 + * @param params + */ +export const queryFlowByIds = (params) => { + return defHttp.get({ url: Api.queryFlowByIds, params }, { isTransformResponse: false }); +}; + /** * 应用编排 * @param params @@ -101,3 +120,21 @@ export const promptGenerate = (params) => { } ); }; + +/** + * 应用编排 + * @param params + */ +export const generateMemoryByAppId = (params) => { + return defHttp.post( + { + url: Api.generateMemoryByAppId+'?variables='+ params.variables + '&memoryId='+ params.memoryId, + adapter: 'fetch', + responseType: 'stream', + timeout: 5 * 60 * 1000, + }, + { + isTransformResponse: false, + } + ); +}; diff --git a/jeecgboot-vue3/src/views/super/airag/aiapp/AiAppList.vue b/jeecgboot-vue3/src/views/super/airag/aiapp/AiAppList.vue index 041479ced..a20594bd9 100644 --- a/jeecgboot-vue3/src/views/super/airag/aiapp/AiAppList.vue +++ b/jeecgboot-vue3/src/views/super/airag/aiapp/AiAppList.vue @@ -57,7 +57,7 @@
- 简单配置 + 智能体 高级编排 @@ -69,14 +69,16 @@