@qxs-bns/components 0.0.89 → 0.0.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -15
- package/es/base/define.mjs +2 -0
- package/es/base/define.mjs.map +1 -0
- package/es/base/uid.mjs +2 -0
- package/es/base/uid.mjs.map +1 -0
- package/es/data-chart.mjs +142 -0
- package/es/data-chart.mjs.map +1 -0
- package/es/editor/blocksuite-editor.mjs +1115 -0
- package/es/editor/blocksuite-editor.mjs.map +1 -0
- package/es/editor/content-format.mjs +2 -0
- package/es/editor/content-format.mjs.map +1 -0
- package/es/editor/index.mjs +2 -0
- package/es/editor/index.mjs.map +1 -0
- package/es/editor/toolbar.mjs +2 -0
- package/es/editor/toolbar.mjs.map +1 -0
- package/es/entry-data-chart.mjs +2 -0
- package/es/entry-data-chart.mjs.map +1 -0
- package/es/entry-editor.mjs +2 -0
- package/es/entry-editor.mjs.map +1 -0
- package/es/entry-file-upload.mjs +2 -0
- package/es/entry-file-upload.mjs.map +1 -0
- package/es/entry-fixed-action-bar.mjs +2 -0
- package/es/entry-fixed-action-bar.mjs.map +1 -0
- package/es/entry-icon.mjs +2 -0
- package/es/entry-icon.mjs.map +1 -0
- package/es/entry-image-upload.mjs +2 -0
- package/es/entry-image-upload.mjs.map +1 -0
- package/es/entry-photo-crop-tool.mjs +2 -0
- package/es/entry-photo-crop-tool.mjs.map +1 -0
- package/es/entry-subject.mjs +2 -0
- package/es/entry-subject.mjs.map +1 -0
- package/es/file-upload.mjs +157 -0
- package/es/file-upload.mjs.map +1 -0
- package/es/fixed-action-bar.mjs +39 -0
- package/es/fixed-action-bar.mjs.map +1 -0
- package/es/icon.mjs +20 -0
- package/es/icon.mjs.map +1 -0
- package/es/image-upload.mjs +333 -0
- package/es/image-upload.mjs.map +1 -0
- package/es/index.mjs +1 -1
- package/es/index.mjs.map +1 -1
- package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs +1 -1
- package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs.map +1 -1
- package/es/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.mjs +2 -0
- package/es/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.mjs.map +1 -0
- package/es/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.mjs +2 -0
- package/es/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.mjs.map +1 -0
- package/es/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.es.mjs +2 -0
- package/es/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.es.mjs.map +1 -0
- package/es/package.json.mjs +1 -1
- package/es/photo-crop-tool.mjs +147 -0
- package/es/photo-crop-tool.mjs.map +1 -0
- package/es/src/alert/index.mjs +2 -0
- package/es/src/alert/index.mjs.map +1 -0
- package/es/src/alert/src/alert.mjs +2 -0
- package/es/src/alert/src/alert.mjs.map +1 -0
- package/es/src/components.mjs +1 -1
- package/es/src/data-chart/index.mjs +1 -1
- package/es/src/data-chart/index.mjs.map +1 -1
- package/es/src/dialog/src/dialog.mjs +2 -0
- package/es/src/dialog/src/dialog.mjs.map +1 -0
- package/es/src/feedback-plugin/index.mjs +2 -0
- package/es/src/feedback-plugin/index.mjs.map +1 -0
- package/es/src/file-upload/index.mjs +1 -1
- package/es/src/file-upload/index.mjs.map +1 -1
- package/es/src/image-upload/index.mjs +1 -1
- package/es/src/image-upload/index.mjs.map +1 -1
- package/es/src/make-installer.mjs +1 -1
- package/es/src/make-installer.mjs.map +1 -1
- package/es/src/message/src/message.mjs +2 -0
- package/es/src/message/src/message.mjs.map +1 -0
- package/es/src/photo-crop-tool/index.mjs +1 -1
- package/es/src/photo-crop-tool/index.mjs.map +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +1 -1
- package/es/src/ui/button/index.mjs +2 -0
- package/es/src/ui/button/index.mjs.map +1 -0
- package/es/src/ui/checkbox/index.mjs +2 -0
- package/es/src/ui/checkbox/index.mjs.map +1 -0
- package/es/src/ui/dialog/index.mjs +2 -0
- package/es/src/ui/dialog/index.mjs.map +1 -0
- package/es/src/ui/input/index.mjs +2 -0
- package/es/src/ui/input/index.mjs.map +1 -0
- package/es/src/ui/input-number/index.mjs +2 -0
- package/es/src/ui/input-number/index.mjs.map +1 -0
- package/es/src/ui/layout/index.mjs +2 -0
- package/es/src/ui/layout/index.mjs.map +1 -0
- package/es/src/ui/link/index.mjs +2 -0
- package/es/src/ui/link/index.mjs.map +1 -0
- package/es/src/ui/popover/index.mjs +2 -0
- package/es/src/ui/popover/index.mjs.map +1 -0
- package/es/src/ui/radio/index.mjs +2 -0
- package/es/src/ui/radio/index.mjs.map +1 -0
- package/es/src/ui/scrollbar/index.mjs +2 -0
- package/es/src/ui/scrollbar/index.mjs.map +1 -0
- package/es/src/ui/select/index.mjs +2 -0
- package/es/src/ui/select/index.mjs.map +1 -0
- package/es/src/ui/table/index.mjs +2 -0
- package/es/src/ui/table/index.mjs.map +1 -0
- package/es/src/ui/tag/index.mjs +2 -0
- package/es/src/ui/tag/index.mjs.map +1 -0
- package/es/src/wc-bridge.mjs +2 -0
- package/es/src/wc-bridge.mjs.map +1 -0
- package/es/subject/action.mjs +171 -0
- package/es/subject/action.mjs.map +1 -0
- package/es/subject/blank-fill.mjs +385 -0
- package/es/subject/blank-fill.mjs.map +1 -0
- package/es/subject/draft.mjs +2 -0
- package/es/subject/draft.mjs.map +1 -0
- package/es/subject/layout.mjs +21 -0
- package/es/subject/layout.mjs.map +1 -0
- package/es/subject/page-end.mjs +28 -0
- package/es/subject/page-end.mjs.map +1 -0
- package/es/subject/pagination.mjs +2 -0
- package/es/subject/pagination.mjs.map +1 -0
- package/es/subject/runtime.mjs +2 -0
- package/es/subject/runtime.mjs.map +1 -0
- package/es/subject/scale.mjs +267 -0
- package/es/subject/scale.mjs.map +1 -0
- package/es/subject/shared-methods.mjs +2 -0
- package/es/subject/shared-methods.mjs.map +1 -0
- package/es/subject/shared-styles.mjs +75 -0
- package/es/subject/shared-styles.mjs.map +1 -0
- package/es/subject/single.mjs +600 -0
- package/es/subject/single.mjs.map +1 -0
- package/es/subject/sort-controller.mjs +2 -0
- package/es/subject/sort-controller.mjs.map +1 -0
- package/es/subject/sortable.mjs +30 -0
- package/es/subject/sortable.mjs.map +1 -0
- package/es/subject/sorting-card.mjs +52 -0
- package/es/subject/sorting-card.mjs.map +1 -0
- package/es/subject/text-fill.mjs +395 -0
- package/es/subject/text-fill.mjs.map +1 -0
- package/es/subject/title-prefix.mjs +2 -0
- package/es/subject/title-prefix.mjs.map +1 -0
- package/es/subject/types.mjs +2 -0
- package/es/subject/types.mjs.map +1 -0
- package/lib/base/define.cjs +2 -0
- package/lib/base/define.cjs.map +1 -0
- package/lib/base/uid.cjs +2 -0
- package/lib/base/uid.cjs.map +1 -0
- package/lib/data-chart.cjs +142 -0
- package/lib/data-chart.cjs.map +1 -0
- package/lib/editor/blocksuite-editor.cjs +1115 -0
- package/lib/editor/blocksuite-editor.cjs.map +1 -0
- package/lib/editor/content-format.cjs +2 -0
- package/lib/editor/content-format.cjs.map +1 -0
- package/lib/editor/index.cjs +2 -0
- package/lib/editor/index.cjs.map +1 -0
- package/lib/editor/toolbar.cjs +2 -0
- package/lib/editor/toolbar.cjs.map +1 -0
- package/lib/entry-data-chart.cjs +2 -0
- package/lib/entry-data-chart.cjs.map +1 -0
- package/lib/entry-editor.cjs +2 -0
- package/lib/entry-editor.cjs.map +1 -0
- package/lib/entry-file-upload.cjs +2 -0
- package/lib/entry-file-upload.cjs.map +1 -0
- package/lib/entry-fixed-action-bar.cjs +2 -0
- package/lib/entry-fixed-action-bar.cjs.map +1 -0
- package/lib/entry-icon.cjs +2 -0
- package/lib/entry-icon.cjs.map +1 -0
- package/lib/entry-image-upload.cjs +2 -0
- package/lib/entry-image-upload.cjs.map +1 -0
- package/lib/entry-photo-crop-tool.cjs +2 -0
- package/lib/entry-photo-crop-tool.cjs.map +1 -0
- package/lib/entry-subject.cjs +2 -0
- package/lib/entry-subject.cjs.map +1 -0
- package/lib/file-upload.cjs +157 -0
- package/lib/file-upload.cjs.map +1 -0
- package/lib/fixed-action-bar.cjs +39 -0
- package/lib/fixed-action-bar.cjs.map +1 -0
- package/lib/icon.cjs +20 -0
- package/lib/icon.cjs.map +1 -0
- package/lib/image-upload.cjs +333 -0
- package/lib/image-upload.cjs.map +1 -0
- package/lib/index.cjs +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs +1 -1
- package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs.map +1 -1
- package/lib/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.cjs +2 -0
- package/lib/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.cjs.map +1 -0
- package/lib/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.cjs +2 -0
- package/lib/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.cjs.map +1 -0
- package/lib/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.es.cjs +2 -0
- package/lib/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.es.cjs.map +1 -0
- package/lib/package.json.cjs +1 -1
- package/lib/photo-crop-tool.cjs +147 -0
- package/lib/photo-crop-tool.cjs.map +1 -0
- package/lib/src/alert/index.cjs +2 -0
- package/lib/src/alert/index.cjs.map +1 -0
- package/lib/src/alert/src/alert.cjs +2 -0
- package/lib/src/alert/src/alert.cjs.map +1 -0
- package/lib/src/components.cjs +1 -1
- package/lib/src/data-chart/index.cjs +1 -1
- package/lib/src/data-chart/index.cjs.map +1 -1
- package/lib/src/dialog/src/dialog.cjs +2 -0
- package/lib/src/dialog/src/dialog.cjs.map +1 -0
- package/lib/src/feedback-plugin/index.cjs +2 -0
- package/lib/src/feedback-plugin/index.cjs.map +1 -0
- package/lib/src/file-upload/index.cjs +1 -1
- package/lib/src/file-upload/index.cjs.map +1 -1
- package/lib/src/image-upload/index.cjs +1 -1
- package/lib/src/image-upload/index.cjs.map +1 -1
- package/lib/src/make-installer.cjs +1 -1
- package/lib/src/make-installer.cjs.map +1 -1
- package/lib/src/message/src/message.cjs +2 -0
- package/lib/src/message/src/message.cjs.map +1 -0
- package/lib/src/photo-crop-tool/index.cjs +1 -1
- package/lib/src/photo-crop-tool/index.cjs.map +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +1 -1
- package/lib/src/ui/button/index.cjs +2 -0
- package/lib/src/ui/button/index.cjs.map +1 -0
- package/lib/src/ui/checkbox/index.cjs +2 -0
- package/lib/src/ui/checkbox/index.cjs.map +1 -0
- package/lib/src/ui/dialog/index.cjs +2 -0
- package/lib/src/ui/dialog/index.cjs.map +1 -0
- package/lib/src/ui/input/index.cjs +2 -0
- package/lib/src/ui/input/index.cjs.map +1 -0
- package/lib/src/ui/input-number/index.cjs +2 -0
- package/lib/src/ui/input-number/index.cjs.map +1 -0
- package/lib/src/ui/layout/index.cjs +2 -0
- package/lib/src/ui/layout/index.cjs.map +1 -0
- package/lib/src/ui/link/index.cjs +2 -0
- package/lib/src/ui/link/index.cjs.map +1 -0
- package/lib/src/ui/popover/index.cjs +2 -0
- package/lib/src/ui/popover/index.cjs.map +1 -0
- package/lib/src/ui/radio/index.cjs +2 -0
- package/lib/src/ui/radio/index.cjs.map +1 -0
- package/lib/src/ui/scrollbar/index.cjs +2 -0
- package/lib/src/ui/scrollbar/index.cjs.map +1 -0
- package/lib/src/ui/select/index.cjs +2 -0
- package/lib/src/ui/select/index.cjs.map +1 -0
- package/lib/src/ui/table/index.cjs +2 -0
- package/lib/src/ui/table/index.cjs.map +1 -0
- package/lib/src/ui/tag/index.cjs +2 -0
- package/lib/src/ui/tag/index.cjs.map +1 -0
- package/lib/src/wc-bridge.cjs +2 -0
- package/lib/src/wc-bridge.cjs.map +1 -0
- package/lib/subject/action.cjs +171 -0
- package/lib/subject/action.cjs.map +1 -0
- package/lib/subject/blank-fill.cjs +385 -0
- package/lib/subject/blank-fill.cjs.map +1 -0
- package/lib/subject/draft.cjs +2 -0
- package/lib/subject/draft.cjs.map +1 -0
- package/lib/subject/layout.cjs +21 -0
- package/lib/subject/layout.cjs.map +1 -0
- package/lib/subject/page-end.cjs +28 -0
- package/lib/subject/page-end.cjs.map +1 -0
- package/lib/subject/pagination.cjs +2 -0
- package/lib/subject/pagination.cjs.map +1 -0
- package/lib/subject/runtime.cjs +2 -0
- package/lib/subject/runtime.cjs.map +1 -0
- package/lib/subject/scale.cjs +267 -0
- package/lib/subject/scale.cjs.map +1 -0
- package/lib/subject/shared-methods.cjs +2 -0
- package/lib/subject/shared-methods.cjs.map +1 -0
- package/lib/subject/shared-styles.cjs +75 -0
- package/lib/subject/shared-styles.cjs.map +1 -0
- package/lib/subject/single.cjs +600 -0
- package/lib/subject/single.cjs.map +1 -0
- package/lib/subject/sort-controller.cjs +2 -0
- package/lib/subject/sort-controller.cjs.map +1 -0
- package/lib/subject/sortable.cjs +30 -0
- package/lib/subject/sortable.cjs.map +1 -0
- package/lib/subject/sorting-card.cjs +52 -0
- package/lib/subject/sorting-card.cjs.map +1 -0
- package/lib/subject/text-fill.cjs +395 -0
- package/lib/subject/text-fill.cjs.map +1 -0
- package/lib/subject/title-prefix.cjs +2 -0
- package/lib/subject/title-prefix.cjs.map +1 -0
- package/lib/subject/types.cjs +2 -0
- package/lib/subject/types.cjs.map +1 -0
- package/package.json +94 -41
- package/types/base/define.d.ts +1 -0
- package/types/base/uid.d.ts +1 -0
- package/types/data-chart.d.ts +65 -0
- package/types/editor/blocksuite-editor.d.ts +191 -0
- package/types/editor/content-format.d.ts +4 -0
- package/types/editor/index.d.ts +4 -0
- package/types/editor/toolbar.d.ts +6 -0
- package/types/editor/types.d.ts +42 -0
- package/types/entry-data-chart.d.ts +1 -0
- package/types/entry-editor.d.ts +2 -0
- package/types/entry-file-upload.d.ts +1 -0
- package/types/entry-fixed-action-bar.d.ts +1 -0
- package/types/entry-icon.d.ts +2 -0
- package/types/entry-image-upload.d.ts +1 -0
- package/types/entry-photo-crop-tool.d.ts +1 -0
- package/types/entry-subject.d.ts +2 -0
- package/types/file-upload.d.ts +48 -0
- package/types/fixed-action-bar.d.ts +25 -0
- package/types/icon.d.ts +30 -0
- package/types/image-upload.d.ts +68 -0
- package/types/index.d.ts +21 -6
- package/types/photo-crop-tool.d.ts +43 -0
- package/types/src/alert/index.d.ts +66 -0
- package/types/src/alert/index.d.ts.map +1 -0
- package/types/src/alert/src/alert.d.ts +73 -0
- package/types/src/alert/src/alert.d.ts.map +1 -0
- package/types/src/components.d.ts +4 -6
- package/types/src/components.d.ts.map +1 -1
- package/types/src/data-chart/index.d.ts +11 -27
- package/types/src/data-chart/index.d.ts.map +1 -1
- package/types/src/dialog/index.d.ts +3 -0
- package/types/src/dialog/index.d.ts.map +1 -0
- package/types/src/dialog/src/dialog.d.ts +25 -0
- package/types/src/dialog/src/dialog.d.ts.map +1 -0
- package/types/src/feedback-plugin/index.d.ts +9 -0
- package/types/src/feedback-plugin/index.d.ts.map +1 -0
- package/types/src/file-upload/index.d.ts +10 -28
- package/types/src/file-upload/index.d.ts.map +1 -1
- package/types/src/icon/index.d.ts +3 -3
- package/types/src/icon/src/icon.d.ts +3 -3
- package/types/src/image-upload/index.d.ts +10 -46
- package/types/src/image-upload/index.d.ts.map +1 -1
- package/types/src/make-installer.d.ts +1 -4
- package/types/src/make-installer.d.ts.map +1 -1
- package/types/src/message/index.d.ts +3 -0
- package/types/src/message/index.d.ts.map +1 -0
- package/types/src/message/src/message.d.ts +21 -0
- package/types/src/message/src/message.d.ts.map +1 -0
- package/types/src/message/src/toaster.vue.d.ts +3 -0
- package/types/src/message/src/toaster.vue.d.ts.map +1 -0
- package/types/src/photo-crop-tool/index.d.ts +9 -52
- package/types/src/photo-crop-tool/index.d.ts.map +1 -1
- package/types/src/subject-action/src/subject-action.vue.d.ts.map +1 -1
- package/types/src/subject-layout/index.d.ts +2 -2
- package/types/src/subject-layout/src/subject-layout.vue.d.ts +2 -2
- package/types/src/subject-layout/src/subject-layout.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-scale.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-single.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
- package/types/src/subject-type/src/subject-type.vue.d.ts.map +1 -1
- package/types/src/ui/button/index.d.ts +96 -0
- package/types/src/ui/button/index.d.ts.map +1 -0
- package/types/src/ui/checkbox/index.d.ts +111 -0
- package/types/src/ui/checkbox/index.d.ts.map +1 -0
- package/types/src/ui/dialog/index.d.ts +134 -0
- package/types/src/ui/dialog/index.d.ts.map +1 -0
- package/types/src/ui/index.d.ts +16 -0
- package/types/src/ui/index.d.ts.map +1 -0
- package/types/src/ui/input/index.d.ts +132 -0
- package/types/src/ui/input/index.d.ts.map +1 -0
- package/types/src/ui/input-number/index.d.ts +106 -0
- package/types/src/ui/input-number/index.d.ts.map +1 -0
- package/types/src/ui/layout/index.d.ts +373 -0
- package/types/src/ui/layout/index.d.ts.map +1 -0
- package/types/src/ui/link/index.d.ts +57 -0
- package/types/src/ui/link/index.d.ts.map +1 -0
- package/types/src/ui/popover/index.d.ts +89 -0
- package/types/src/ui/popover/index.d.ts.map +1 -0
- package/types/src/ui/radio/index.d.ts +84 -0
- package/types/src/ui/radio/index.d.ts.map +1 -0
- package/types/src/ui/scrollbar/index.d.ts +35 -0
- package/types/src/ui/scrollbar/index.d.ts.map +1 -0
- package/types/src/ui/select/index.d.ts +113 -0
- package/types/src/ui/select/index.d.ts.map +1 -0
- package/types/src/ui/table/index.d.ts +152 -0
- package/types/src/ui/table/index.d.ts.map +1 -0
- package/types/src/ui/tag/index.d.ts +69 -0
- package/types/src/ui/tag/index.d.ts.map +1 -0
- package/types/src/wc-bridge.d.ts +23 -0
- package/types/src/wc-bridge.d.ts.map +1 -0
- package/types/subject/action.d.ts +37 -0
- package/types/subject/blank-fill.d.ts +79 -0
- package/types/subject/draft.d.ts +63 -0
- package/types/subject/index.d.ts +13 -0
- package/types/subject/layout.d.ts +7 -0
- package/types/subject/page-end.d.ts +16 -0
- package/types/subject/pagination.d.ts +23 -0
- package/types/subject/runtime.d.ts +12 -0
- package/types/subject/scale.d.ts +55 -0
- package/types/subject/shared-methods.d.ts +8 -0
- package/types/subject/shared-styles.d.ts +5 -0
- package/types/subject/single.d.ts +288 -0
- package/types/subject/sort-controller.d.ts +3 -0
- package/types/subject/sortable.d.ts +19 -0
- package/types/subject/sorting-card.d.ts +2 -0
- package/types/subject/text-fill.d.ts +88 -0
- package/types/subject/title-prefix.d.ts +2 -0
- package/types/subject/types.d.ts +12 -0
- package/types/tsconfig.tsbuildinfo +1 -1
- package/es/_virtual/_plugin-vue_export-helper.mjs +0 -2
- package/es/_virtual/_plugin-vue_export-helper.mjs.map +0 -1
- package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +0 -2
- package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs.map +0 -1
- package/es/src/data-chart/src/analyze.mjs +0 -2
- package/es/src/data-chart/src/analyze.mjs.map +0 -1
- package/es/src/data-chart/src/components/area.vue.mjs +0 -2
- package/es/src/data-chart/src/components/area.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/area.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/area.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/area.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/area.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/bar.vue.mjs +0 -2
- package/es/src/data-chart/src/components/bar.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/bar.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/bar.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/bar.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/bar.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/card.vue.mjs +0 -2
- package/es/src/data-chart/src/components/card.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/card.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/card.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/card.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/card.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/data-chart-card-bg-left.svg.mjs +0 -2
- package/es/src/data-chart/src/components/data-chart-card-bg-left.svg.mjs.map +0 -1
- package/es/src/data-chart/src/components/data-chart-card-bg-right.svg.mjs +0 -2
- package/es/src/data-chart/src/components/data-chart-card-bg-right.svg.mjs.map +0 -1
- package/es/src/data-chart/src/components/empty.svg.mjs +0 -2
- package/es/src/data-chart/src/components/empty.svg.mjs.map +0 -1
- package/es/src/data-chart/src/components/empty.vue.mjs +0 -2
- package/es/src/data-chart/src/components/empty.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/empty.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/empty.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/funnel.vue.mjs +0 -2
- package/es/src/data-chart/src/components/funnel.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/funnel.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/funnel.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/funnel.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/funnel.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/line.vue.mjs +0 -2
- package/es/src/data-chart/src/components/line.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/line.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/line.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/line.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/line.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/pie.vue.mjs +0 -2
- package/es/src/data-chart/src/components/pie.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/pie.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/pie.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/pie.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/pie.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/radar.vue.mjs +0 -2
- package/es/src/data-chart/src/components/radar.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/radar.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/radar.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/radar.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/radar.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/scatter-simple.vue.mjs +0 -2
- package/es/src/data-chart/src/components/scatter-simple.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/scatter-simple.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/scatter-simple.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/scatter-simple.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/scatter-simple.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/scatter.vue.mjs +0 -2
- package/es/src/data-chart/src/components/scatter.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/scatter.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/scatter.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/components/scatter.vue3.mjs +0 -2
- package/es/src/data-chart/src/components/scatter.vue3.mjs.map +0 -1
- package/es/src/data-chart/src/components/table.vue.mjs +0 -2
- package/es/src/data-chart/src/components/table.vue.mjs.map +0 -1
- package/es/src/data-chart/src/components/table.vue2.mjs +0 -2
- package/es/src/data-chart/src/components/table.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/data-chart.vue.mjs +0 -2
- package/es/src/data-chart/src/data-chart.vue.mjs.map +0 -1
- package/es/src/data-chart/src/data-chart.vue2.mjs +0 -2
- package/es/src/data-chart/src/data-chart.vue2.mjs.map +0 -1
- package/es/src/data-chart/src/utils/config.mjs +0 -2
- package/es/src/data-chart/src/utils/config.mjs.map +0 -1
- package/es/src/data-chart/src/utils/injectionKeys.mjs +0 -2
- package/es/src/data-chart/src/utils/injectionKeys.mjs.map +0 -1
- package/es/src/data-chart/src/utils/mapData.mjs +0 -2
- package/es/src/data-chart/src/utils/mapData.mjs.map +0 -1
- package/es/src/data-chart/src/utils/safe-eval.mjs +0 -2
- package/es/src/data-chart/src/utils/safe-eval.mjs.map +0 -1
- package/es/src/data-chart/src/utils/types.mjs +0 -2
- package/es/src/data-chart/src/utils/types.mjs.map +0 -1
- package/es/src/data-chart/src/utils/useCharts.mjs +0 -2
- package/es/src/data-chart/src/utils/useCharts.mjs.map +0 -1
- package/es/src/file-upload/src/file-upload.vue.mjs +0 -2
- package/es/src/file-upload/src/file-upload.vue.mjs.map +0 -1
- package/es/src/file-upload/src/file-upload.vue2.mjs +0 -2
- package/es/src/file-upload/src/file-upload.vue2.mjs.map +0 -1
- package/es/src/fixed-action-bar/index.mjs +0 -2
- package/es/src/fixed-action-bar/index.mjs.map +0 -1
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs +0 -2
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs.map +0 -1
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue2.mjs +0 -2
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue2.mjs.map +0 -1
- package/es/src/image-upload/src/image-upload.vue.mjs +0 -2
- package/es/src/image-upload/src/image-upload.vue.mjs.map +0 -1
- package/es/src/image-upload/src/image-upload.vue2.mjs +0 -2
- package/es/src/image-upload/src/image-upload.vue2.mjs.map +0 -1
- package/es/src/photo-crop-tool/src/composables.mjs +0 -2
- package/es/src/photo-crop-tool/src/composables.mjs.map +0 -1
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs +0 -2
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs.map +0 -1
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue2.mjs +0 -2
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue2.mjs.map +0 -1
- package/es/src/subject-action/index.mjs +0 -2
- package/es/src/subject-action/index.mjs.map +0 -1
- package/es/src/subject-action/src/subject-action.vue.mjs +0 -2
- package/es/src/subject-action/src/subject-action.vue.mjs.map +0 -1
- package/es/src/subject-action/src/subject-action.vue2.mjs +0 -2
- package/es/src/subject-action/src/subject-action.vue2.mjs.map +0 -1
- package/es/src/subject-layout/index.mjs +0 -2
- package/es/src/subject-layout/index.mjs.map +0 -1
- package/es/src/subject-layout/src/subject-layout.vue.mjs +0 -2
- package/es/src/subject-layout/src/subject-layout.vue.mjs.map +0 -1
- package/es/src/subject-layout/src/subject-layout.vue2.mjs +0 -2
- package/es/src/subject-layout/src/subject-layout.vue2.mjs.map +0 -1
- package/es/src/subject-list/index.mjs +0 -2
- package/es/src/subject-list/index.mjs.map +0 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +0 -2
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs.map +0 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue2.mjs +0 -2
- package/es/src/subject-list/src/components/SubjectPageEnd.vue2.mjs.map +0 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +0 -2
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs.map +0 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue2.mjs +0 -2
- package/es/src/subject-list/src/components/SubjectRichText.vue2.mjs.map +0 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +0 -2
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +0 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue2.mjs +0 -2
- package/es/src/subject-list/src/components/subject-blank-fill.vue2.mjs.map +0 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs +0 -2
- package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +0 -1
- package/es/src/subject-list/src/components/subject-scale.vue2.mjs +0 -2
- package/es/src/subject-list/src/components/subject-scale.vue2.mjs.map +0 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs +0 -2
- package/es/src/subject-list/src/components/subject-single.vue.mjs.map +0 -1
- package/es/src/subject-list/src/components/subject-single.vue2.mjs +0 -2
- package/es/src/subject-list/src/components/subject-single.vue2.mjs.map +0 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +0 -2
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +0 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue2.mjs +0 -2
- package/es/src/subject-list/src/components/subject-text-fill.vue2.mjs.map +0 -1
- package/es/src/subject-list/src/subject-list.vue.mjs +0 -2
- package/es/src/subject-list/src/subject-list.vue.mjs.map +0 -1
- package/es/src/subject-list/src/subject-list.vue2.mjs +0 -2
- package/es/src/subject-list/src/subject-list.vue2.mjs.map +0 -1
- package/es/src/subject-type/index.mjs +0 -2
- package/es/src/subject-type/index.mjs.map +0 -1
- package/es/src/subject-type/src/subject-type.vue.mjs +0 -2
- package/es/src/subject-type/src/subject-type.vue.mjs.map +0 -1
- package/es/src/subject-type/src/subject-type.vue2.mjs +0 -2
- package/es/src/subject-type/src/subject-type.vue2.mjs.map +0 -1
- package/lib/_virtual/_plugin-vue_export-helper.cjs +0 -2
- package/lib/_virtual/_plugin-vue_export-helper.cjs.map +0 -1
- package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs +0 -2
- package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs.map +0 -1
- package/lib/src/data-chart/src/analyze.cjs +0 -2
- package/lib/src/data-chart/src/analyze.cjs.map +0 -1
- package/lib/src/data-chart/src/components/area.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/area.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/area.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/area.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/area.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/area.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/bar.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/bar.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/bar.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/bar.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/bar.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/bar.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/card.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/card.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/card.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/card.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/card.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/card.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/data-chart-card-bg-left.svg.cjs +0 -2
- package/lib/src/data-chart/src/components/data-chart-card-bg-left.svg.cjs.map +0 -1
- package/lib/src/data-chart/src/components/data-chart-card-bg-right.svg.cjs +0 -2
- package/lib/src/data-chart/src/components/data-chart-card-bg-right.svg.cjs.map +0 -1
- package/lib/src/data-chart/src/components/empty.svg.cjs +0 -2
- package/lib/src/data-chart/src/components/empty.svg.cjs.map +0 -1
- package/lib/src/data-chart/src/components/empty.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/empty.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/empty.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/empty.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/funnel.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/funnel.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/funnel.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/funnel.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/funnel.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/funnel.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/line.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/line.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/line.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/line.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/line.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/line.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/pie.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/pie.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/pie.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/pie.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/pie.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/pie.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/radar.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/radar.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/radar.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/radar.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/radar.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/radar.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/scatter-simple.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/scatter-simple.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/scatter-simple.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/scatter-simple.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/scatter-simple.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/scatter-simple.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/scatter.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/scatter.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/scatter.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/scatter.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/components/scatter.vue3.cjs +0 -2
- package/lib/src/data-chart/src/components/scatter.vue3.cjs.map +0 -1
- package/lib/src/data-chart/src/components/table.vue.cjs +0 -2
- package/lib/src/data-chart/src/components/table.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/components/table.vue2.cjs +0 -2
- package/lib/src/data-chart/src/components/table.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/data-chart.vue.cjs +0 -2
- package/lib/src/data-chart/src/data-chart.vue.cjs.map +0 -1
- package/lib/src/data-chart/src/data-chart.vue2.cjs +0 -2
- package/lib/src/data-chart/src/data-chart.vue2.cjs.map +0 -1
- package/lib/src/data-chart/src/utils/config.cjs +0 -2
- package/lib/src/data-chart/src/utils/config.cjs.map +0 -1
- package/lib/src/data-chart/src/utils/injectionKeys.cjs +0 -2
- package/lib/src/data-chart/src/utils/injectionKeys.cjs.map +0 -1
- package/lib/src/data-chart/src/utils/mapData.cjs +0 -2
- package/lib/src/data-chart/src/utils/mapData.cjs.map +0 -1
- package/lib/src/data-chart/src/utils/safe-eval.cjs +0 -2
- package/lib/src/data-chart/src/utils/safe-eval.cjs.map +0 -1
- package/lib/src/data-chart/src/utils/types.cjs +0 -2
- package/lib/src/data-chart/src/utils/types.cjs.map +0 -1
- package/lib/src/data-chart/src/utils/useCharts.cjs +0 -2
- package/lib/src/data-chart/src/utils/useCharts.cjs.map +0 -1
- package/lib/src/file-upload/src/file-upload.vue.cjs +0 -2
- package/lib/src/file-upload/src/file-upload.vue.cjs.map +0 -1
- package/lib/src/file-upload/src/file-upload.vue2.cjs +0 -2
- package/lib/src/file-upload/src/file-upload.vue2.cjs.map +0 -1
- package/lib/src/fixed-action-bar/index.cjs +0 -2
- package/lib/src/fixed-action-bar/index.cjs.map +0 -1
- package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs +0 -2
- package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs.map +0 -1
- package/lib/src/fixed-action-bar/src/fixed-action-bar.vue2.cjs +0 -2
- package/lib/src/fixed-action-bar/src/fixed-action-bar.vue2.cjs.map +0 -1
- package/lib/src/image-upload/src/image-upload.vue.cjs +0 -2
- package/lib/src/image-upload/src/image-upload.vue.cjs.map +0 -1
- package/lib/src/image-upload/src/image-upload.vue2.cjs +0 -2
- package/lib/src/image-upload/src/image-upload.vue2.cjs.map +0 -1
- package/lib/src/photo-crop-tool/src/composables.cjs +0 -2
- package/lib/src/photo-crop-tool/src/composables.cjs.map +0 -1
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs +0 -2
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs.map +0 -1
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue2.cjs +0 -2
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue2.cjs.map +0 -1
- package/lib/src/subject-action/index.cjs +0 -2
- package/lib/src/subject-action/index.cjs.map +0 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs +0 -2
- package/lib/src/subject-action/src/subject-action.vue.cjs.map +0 -1
- package/lib/src/subject-action/src/subject-action.vue2.cjs +0 -2
- package/lib/src/subject-action/src/subject-action.vue2.cjs.map +0 -1
- package/lib/src/subject-layout/index.cjs +0 -2
- package/lib/src/subject-layout/index.cjs.map +0 -1
- package/lib/src/subject-layout/src/subject-layout.vue.cjs +0 -2
- package/lib/src/subject-layout/src/subject-layout.vue.cjs.map +0 -1
- package/lib/src/subject-layout/src/subject-layout.vue2.cjs +0 -2
- package/lib/src/subject-layout/src/subject-layout.vue2.cjs.map +0 -1
- package/lib/src/subject-list/index.cjs +0 -2
- package/lib/src/subject-list/index.cjs.map +0 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +0 -2
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs.map +0 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue2.cjs +0 -2
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue2.cjs.map +0 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +0 -2
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs.map +0 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue2.cjs +0 -2
- package/lib/src/subject-list/src/components/SubjectRichText.vue2.cjs.map +0 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +0 -2
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +0 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue2.cjs +0 -2
- package/lib/src/subject-list/src/components/subject-blank-fill.vue2.cjs.map +0 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs +0 -2
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +0 -1
- package/lib/src/subject-list/src/components/subject-scale.vue2.cjs +0 -2
- package/lib/src/subject-list/src/components/subject-scale.vue2.cjs.map +0 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs +0 -2
- package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +0 -1
- package/lib/src/subject-list/src/components/subject-single.vue2.cjs +0 -2
- package/lib/src/subject-list/src/components/subject-single.vue2.cjs.map +0 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +0 -2
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +0 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue2.cjs +0 -2
- package/lib/src/subject-list/src/components/subject-text-fill.vue2.cjs.map +0 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs +0 -2
- package/lib/src/subject-list/src/subject-list.vue.cjs.map +0 -1
- package/lib/src/subject-list/src/subject-list.vue2.cjs +0 -2
- package/lib/src/subject-list/src/subject-list.vue2.cjs.map +0 -1
- package/lib/src/subject-type/index.cjs +0 -2
- package/lib/src/subject-type/index.cjs.map +0 -1
- package/lib/src/subject-type/src/subject-type.vue.cjs +0 -2
- package/lib/src/subject-type/src/subject-type.vue.cjs.map +0 -1
- package/lib/src/subject-type/src/subject-type.vue2.cjs +0 -2
- package/lib/src/subject-type/src/subject-type.vue2.cjs.map +0 -1
- package/theme-chalk/index.css +0 -1
- package/theme-chalk/index.scss +0 -17
- package/theme-chalk/src/base.css +0 -1
- package/theme-chalk/src/base.scss +0 -16
- package/theme-chalk/src/common/element-plus-deps.css +0 -1
- package/theme-chalk/src/common/element-plus-deps.scss +0 -40
- package/theme-chalk/src/common/element-plus.css +0 -1
- package/theme-chalk/src/common/element-plus.scss +0 -606
- package/theme-chalk/src/data-chart/empty.css +0 -1
- package/theme-chalk/src/data-chart/empty.scss +0 -24
- package/theme-chalk/src/data-chart/index.css +0 -1
- package/theme-chalk/src/data-chart/index.scss +0 -11
- package/theme-chalk/src/data-chart/table.css +0 -1
- package/theme-chalk/src/data-chart/table.scss +0 -43
- package/theme-chalk/src/file-upload.css +0 -1
- package/theme-chalk/src/file-upload.scss +0 -34
- package/theme-chalk/src/fixed-action-bar.css +0 -1
- package/theme-chalk/src/fixed-action-bar.scss +0 -18
- package/theme-chalk/src/icon.css +0 -1
- package/theme-chalk/src/icon.scss +0 -35
- package/theme-chalk/src/image-upload.css +0 -1
- package/theme-chalk/src/image-upload.scss +0 -157
- package/theme-chalk/src/mixins/_var.css +0 -0
- package/theme-chalk/src/mixins/_var.scss +0 -24
- package/theme-chalk/src/mixins/config.css +0 -0
- package/theme-chalk/src/mixins/config.scss +0 -12
- package/theme-chalk/src/mixins/function.css +0 -0
- package/theme-chalk/src/mixins/function.scss +0 -95
- package/theme-chalk/src/mixins/mixins.css +0 -0
- package/theme-chalk/src/mixins/mixins.scss +0 -102
- package/theme-chalk/src/normalize.css +0 -1
- package/theme-chalk/src/normalize.scss +0 -11
- package/theme-chalk/src/photo-crop-tool.css +0 -1
- package/theme-chalk/src/photo-crop-tool.scss +0 -98
- package/theme-chalk/src/subject-action.css +0 -1
- package/theme-chalk/src/subject-action.scss +0 -37
- package/theme-chalk/src/subject-layout.css +0 -1
- package/theme-chalk/src/subject-layout.scss +0 -28
- package/theme-chalk/src/subject-list.css +0 -1
- package/theme-chalk/src/subject-list.scss +0 -290
- package/theme-chalk/src/subject-template.css +0 -1
- package/theme-chalk/src/subject-template.scss +0 -5
- package/theme-chalk/src/subject-type.css +0 -1
- package/theme-chalk/src/subject-type.scss +0 -32
- package/theme-chalk/src/tiny-mce-editor.css +0 -1
- package/theme-chalk/src/tiny-mce-editor.scss +0 -29
- package/types/src/data-chart/src/analyze.d.ts +0 -23
- package/types/src/data-chart/src/analyze.d.ts.map +0 -1
- package/types/src/data-chart/src/components/area.vue.d.ts +0 -12
- package/types/src/data-chart/src/components/area.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/bar.vue.d.ts +0 -12
- package/types/src/data-chart/src/components/bar.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/card.vue.d.ts +0 -27
- package/types/src/data-chart/src/components/card.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/empty.vue.d.ts +0 -11
- package/types/src/data-chart/src/components/empty.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/funnel.vue.d.ts +0 -11
- package/types/src/data-chart/src/components/funnel.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/line.vue.d.ts +0 -12
- package/types/src/data-chart/src/components/line.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/pie.vue.d.ts +0 -12
- package/types/src/data-chart/src/components/pie.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/radar.vue.d.ts +0 -11
- package/types/src/data-chart/src/components/radar.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/scatter-simple.vue.d.ts +0 -11
- package/types/src/data-chart/src/components/scatter-simple.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/scatter.vue.d.ts +0 -11
- package/types/src/data-chart/src/components/scatter.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/components/table.vue.d.ts +0 -27
- package/types/src/data-chart/src/components/table.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/data-chart.vue.d.ts +0 -28
- package/types/src/data-chart/src/data-chart.vue.d.ts.map +0 -1
- package/types/src/data-chart/src/utils/config.d.ts +0 -41
- package/types/src/data-chart/src/utils/config.d.ts.map +0 -1
- package/types/src/data-chart/src/utils/injectionKeys.d.ts +0 -3
- package/types/src/data-chart/src/utils/injectionKeys.d.ts.map +0 -1
- package/types/src/data-chart/src/utils/mapData.d.ts +0 -64
- package/types/src/data-chart/src/utils/mapData.d.ts.map +0 -1
- package/types/src/data-chart/src/utils/safe-eval.d.ts +0 -9
- package/types/src/data-chart/src/utils/safe-eval.d.ts.map +0 -1
- package/types/src/data-chart/src/utils/types.d.ts +0 -72
- package/types/src/data-chart/src/utils/types.d.ts.map +0 -1
- package/types/src/data-chart/src/utils/useCharts.d.ts +0 -16
- package/types/src/data-chart/src/utils/useCharts.d.ts.map +0 -1
- package/types/src/file-upload/src/file-upload.vue.d.ts +0 -20
- package/types/src/file-upload/src/file-upload.vue.d.ts.map +0 -1
- package/types/src/fixed-action-bar/index.d.ts +0 -56
- package/types/src/fixed-action-bar/index.d.ts.map +0 -1
- package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts +0 -31
- package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts.map +0 -1
- package/types/src/image-upload/src/image-upload.vue.d.ts +0 -59
- package/types/src/image-upload/src/image-upload.vue.d.ts.map +0 -1
- package/types/src/photo-crop-tool/src/composables.d.ts +0 -7
- package/types/src/photo-crop-tool/src/composables.d.ts.map +0 -1
- package/types/src/photo-crop-tool/src/photo-crop-tool.vue.d.ts +0 -65
- package/types/src/photo-crop-tool/src/photo-crop-tool.vue.d.ts.map +0 -1
- package/types/src/subject-list/src/components/SubjectRichText.vue.d.ts +0 -25
- package/types/src/subject-list/src/components/SubjectRichText.vue.d.ts.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{defineComponent as e,computed as a,createElementBlock as t,openBlock as o,normalizeClass as l,unref as r,createCommentVNode as c,createVNode as s,createElementVNode as p,toDisplayString as i,withCtx as n,Fragment as m,renderList as u,createBlock as d,createTextVNode as h}from"vue";import{useNamespace as D}from"@qxs-bns/hooks";import{ElTable as f,ElTableColumn as b}from"element-plus";import y from"./empty.vue.mjs";const v={key:0,class:"title"};var w=e({name:"DataChartTable",__name:"table",props:{chartData:{type:Object,default:()=>({colDesc:[],xGroupByDesc:[],data:[],modelName:""})}},setup(e){const w=e,g=D("data-chart"),x=a(()=>w.chartData.groupByDesc.find(e=>!e.xAxis));function $(e){if(!e)return 100;const a=14*e.length+20+30;return a<100?100:a}return(a,D)=>(o(),t("div",{class:l([r(g).e("table")])},[e.chartData.modelName?(o(),t("p",v,[p("span",null,i(e.chartData.modelName),1)])):c("v-if",!0),s(r(f),{class:"customize-table",data:e.chartData.data,stripe:"",resizable:"",border:"",height:"100%"},{empty:n(()=>[s(y)]),default:n(()=>[(o(!0),t(m,null,u(e.chartData.groupByDesc,(e,a)=>(o(),d(r(b),{key:`${e.colDesc}${e.groupByDesc}${a}`,align:"center","show-overflow-tooltip":"",sortable:"","min-width":`${$(e.colDesc)}px`,prop:e.colDesc||""},{header:n(()=>[h(i(e.colDesc),1)]),default:n(a=>[h(i((x.value&&(x.value.colDesc,e.colDesc),a.row[e.colDesc||""]||"--")),1)]),_:2},1032,["min-width","prop"]))),128)),(o(!0),t(m,null,u(e.chartData.colDesc,(e,a)=>(o(),d(r(b),{key:e+a,align:"center","min-width":`${$(e)}px`,label:e,"show-overflow-tooltip":"",sortable:"",prop:e},{header:n(()=>[h(i(e),1)]),_:2},1032,["min-width","label","prop"]))),128))]),_:1},8,["data"])],2))}});export{w as default};
|
|
2
|
-
//# sourceMappingURL=table.vue.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table.vue.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/table.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { IFormatPublicData } from '../utils/types'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElTable, ElTableColumn } from 'element-plus'\nimport { computed } from 'vue'\nimport Empty from './empty.vue'\n\ndefineOptions({\n name: 'DataChartTable',\n})\n\nconst props = defineProps({\n chartData: {\n type: Object as PropType<IFormatPublicData>,\n default: () => ({\n colDesc: [],\n xGroupByDesc: [],\n data: [],\n modelName: '',\n }),\n },\n})\n\nconst ns = useNamespace('data-chart')\n\nconst yGroupByDesc = computed(() => {\n const row = props.chartData.groupByDesc.find(item => !item.xAxis)\n return row\n})\n\nfunction baseWidth(str: string | null) {\n if (!str) {\n return 100\n }\n const strWidth = str.length * 14 + 20 + 30\n return strWidth < 100 ? 100 : strWidth\n}\n</script>\n\n<template>\n <div :class=\"[ns.e('table')]\">\n <p\n v-if=\"chartData.modelName\"\n class=\"title\"\n >\n <span>{{ chartData.modelName }}</span>\n </p>\n <ElTable\n class=\"customize-table\"\n :data=\"chartData.data\"\n stripe\n resizable\n border\n height=\"100%\"\n >\n <ElTableColumn\n v-for=\"(item, index) in chartData.groupByDesc\"\n :key=\"`${item.colDesc}${item.groupByDesc}${index}`\"\n align=\"center\"\n show-overflow-tooltip\n sortable\n :min-width=\"`${baseWidth(item.colDesc)}px`\"\n :prop=\"item.colDesc || ''\"\n >\n <template #header>\n {{ item.colDesc }}\n </template>\n <template #default=\"scoped\">\n {{ (yGroupByDesc && yGroupByDesc.colDesc === item.colDesc ? scoped.row[item.colDesc || ''] : scoped.row[item.colDesc || '']) || '--' }}\n </template>\n </ElTableColumn>\n <ElTableColumn\n v-for=\"(item, index) in chartData.colDesc\"\n :key=\"item + index\"\n align=\"center\"\n :min-width=\"`${baseWidth(item)}px`\"\n :label=\"item\"\n show-overflow-tooltip\n sortable\n :prop=\"item\"\n >\n <template #header>\n {{ item }}\n </template>\n </ElTableColumn>\n <template #empty>\n <Empty />\n </template>\n </ElTable>\n </div>\n</template>\n"],"names":["props","__props","ns","useNamespace","yGroupByDesc","computed","chartData","groupByDesc","find","item","xAxis","baseWidth","str","strWidth","length","_createElementBlock","class","_normalizeClass","_unref","e","modelName","_openBlock","_hoisted_1","_createElementVNode","_toDisplayString","_createVNode","ElTable","data","stripe","resizable","border","height","empty","Empty","_Fragment","index","_createBlock","ElTableColumn","key","colDesc","align","sortable","prop","header","_createTextVNode","default","_withCtx","scoped","value","row","label"],"mappings":"6lBAYA,MAAMA,EAAQC,EAYRC,EAAKC,EAAa,cAElBC,EAAeC,EAAS,IAChBL,EAAMM,UAAUC,YAAYC,KAAKC,IAASA,EAAKC,QAI7D,SAASC,EAAUC,GACjB,IAAKA,EACH,OAAO,IAET,MAAMC,EAAwB,GAAbD,EAAIE,OAAc,GAAK,GACxC,OAAOD,EAAW,IAAM,IAAMA,CAChC,mBAIEE,EAiDM,MAAA,CAjDAC,MAAKC,EAAA,CAAGC,EAAAhB,GAAGiB,EAAC,aAERlB,EAAAK,UAAUc,WADlBC,IAAAN,EAKI,IALJO,EAKI,CADFC,EAAsC,OAAA,KAAAC,EAA7BvB,EAAAK,UAAUc,WAAS,mBAE9BK,EAyCUP,EAAAQ,GAAA,CAxCRV,MAAM,kBACLW,KAAM1B,EAAAK,UAAUqB,KACjBC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,OAAO,SAgCIC,QACT,IAAS,CAATP,EAASQ,eA9BT,IAA8C,EADhDZ,GAAA,GAAAN,EAegBmB,SAdUjC,EAAAK,UAAUC,YAAW,CAArCE,EAAM0B,SADhBC,EAegBlB,EAAAmB,GAAA,CAbbC,IAAG,GAAK7B,EAAK8B,UAAU9B,EAAKF,cAAc4B,IAC3CK,MAAM,SACN,wBAAA,GACAC,SAAA,GACC,YAAS,GAAK9B,EAAUF,EAAK8B,aAC7BG,KAAMjC,EAAK8B,SAAO,KAERI,SACT,IAAkB,CAAfC,EAAApB,EAAAf,EAAK8B,SAAO,KAENM,QAAOC,EACuHC,GAD/G,MACpB3C,EAAA4C,QAAgB5C,QAAamC,QAAY9B,EAAK8B,SAAUQ,EAAOE,IAAIxC,EAAK8B,SAAO,KAAiC,OAAA,8CAGxHlB,GAAA,GAAAN,EAagBmB,SAZUjC,EAAAK,UAAUiC,QAAO,CAAjC9B,EAAM0B,SADhBC,EAagBlB,EAAAmB,GAAA,CAXbC,IAAK7B,EAAO0B,EACbK,MAAM,SACL,YAAS,GAAK7B,EAAUF,OACxByC,MAAOzC,EACR,wBAAA,GACAgC,SAAA,GACCC,KAAMjC,IAEIkC,SACT,IAAU,KAAPlC,GAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{defineComponent as e,ref as t,computed as o,provide as r,createBlock as s,openBlock as a,resolveDynamicComponent as m,normalizeClass as p,unref as n}from"vue";import{useNamespace as l}from"@qxs-bns/hooks";import{JsonToExcel as i}from"@qxs-bns/utils";import{cloneDeep as u,merge as c}from"lodash-es";import*as d from"./analyze.mjs";import f from"./components/area.vue.mjs";import y from"./components/bar.vue.mjs";import h from"./components/card.vue.mjs";import j from"./components/funnel.vue.mjs";import v from"./components/line.vue.mjs";import g from"./components/pie.vue.mjs";import b from"./components/radar.vue.mjs";import w from"./components/scatter-simple.vue.mjs";import D from"./components/scatter.vue.mjs";import x from"./components/table.vue.mjs";import*as C from"./utils/config.mjs";import{defaultChartOption as S}from"./utils/config.mjs";import{InjectionChartMerge as T}from"./utils/injectionKeys.mjs";import{safeEvalConfig as q}from"./utils/safe-eval.mjs";import*as N from"./utils/types.mjs";import{useDataToExcelJson as B}from"./utils/useCharts.mjs";var z=e({name:"QxsDataChart",__name:"data-chart",props:{modelName:{type:String,required:!1,default:""},showTypeName:{type:String,required:!1,default:"table"},subShowType:{type:String,required:!1},data:{type:Object,required:!1,default:()=>({data:[],desc:{colDesc:[],showDesc:{showType:0,chartOptions:"{}",jsCodeSnippet:""},groupByDesc:[]}})},chartOptions:{type:null,required:!1,default:()=>({})},jsCodeSnippet:{type:String,required:!1,default:""},lazyLoad:{type:Boolean,required:!1,default:!0}},setup(e,{expose:z}){const O=l("data-chart"),k=t(null),_={analyze:d,config:C,types:N},A={table:x,bar:y,line:v,pie:g,radar:b,scatter:D,funnel:j,area:f,card:h,"scatter-simple":w},L=o(()=>u(S[e.showTypeName])),Q=o(()=>{const{desc:{colDesc:t=[],groupByDesc:o=[]}={},data:r=[]}=e.data;let s=[],a=null;const m=o;s=m?.map(e=>(e.xAxis&&(a=e),e))||[];const p=a&&a.colDesc?r.filter(e=>{const t=a.colDesc;return e&&t&&void 0!==e[t]&&null!==e[t]}):r;return{colDesc:t||[],modelName:e.modelName,subShowType:e.subShowType,xGroupByDesc:a||{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:s,data:p}});function E(){if("table"===e.showTypeName)return null;const t=k.value;return t&&"function"==typeof t.myChart?t.myChart():null}return z({exportExal:function(){if(0===e.data.data.length)return void console.log("暂无数据");const t=B(e.data);i(e.modelName,t)},QxsDataChartConfig:_,myChart:o(()=>E()),getMyChart:E}),r(T,function(t,o){let r=c({},L.value,t,o)||{};if(e.jsCodeSnippet)try{r=q(e.jsCodeSnippet,r)}catch(e){console.error("代码执行失败:",e)}return r}),(e,t)=>(a(),s(m(A[e.showTypeName]),{ref_key:"myChartRef",ref:k,key:e.showTypeName,class:p([n(O).e("wrapper")]),"sub-show-type":e.subShowType,"chart-data":Q.value,"chart-options":e.chartOptions,"lazy-load":e.lazyLoad},null,8,["class","sub-show-type","chart-data","chart-options","lazy-load"]))}});export{z as default};
|
|
2
|
-
//# sourceMappingURL=data-chart.vue.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-chart.vue.mjs","sources":["../../../../../../packages/components/src/data-chart/src/data-chart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ECharts } from 'echarts'\nimport type { EChartData, EChartsOption, IconRow, IFormatPublicData } from './utils/types'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { JsonToExcel } from '@qxs-bns/utils'\nimport { cloneDeep, merge as lodashMerge } from 'lodash-es'\nimport { computed, provide, ref } from 'vue'\nimport * as analyze from './analyze'\nimport Area from './components/area.vue'\nimport Bar from './components/bar.vue'\nimport Card from './components/card.vue'\nimport Funnel from './components/funnel.vue'\nimport Line from './components/line.vue'\nimport Pie from './components/pie.vue'\nimport Radar from './components/radar.vue'\nimport ScatterSimple from './components/scatter-simple.vue'\nimport Scatter from './components/scatter.vue'\nimport Table from './components/table.vue'\nimport * as config from './utils/config'\nimport { defaultChartOption } from './utils/config'\nimport { InjectionChartMerge } from './utils/injectionKeys'\nimport { safeEvalConfig } from './utils/safe-eval'\nimport * as types from './utils/types'\nimport { useDataToExcelJson } from './utils/useCharts'\n\ndefineOptions({\n name: 'QxsDataChart',\n})\nconst {\n showTypeName = 'table',\n subShowType,\n modelName = '',\n data: propData = {\n data: [],\n desc: {\n colDesc: [],\n showDesc: {\n showType: 0,\n chartOptions: '{}',\n jsCodeSnippet: '',\n },\n groupByDesc: [],\n },\n },\n chartOptions = {},\n jsCodeSnippet = '',\n lazyLoad = true,\n} = defineProps<{\n modelName?: string\n showTypeName?: IconRow['showTypeName']\n subShowType?: string\n data?: EChartData\n chartOptions?: EChartsOption\n jsCodeSnippet?: string\n lazyLoad?: boolean\n}>()\n\nconst ns = useNamespace('data-chart')\n\n// 子组件引用\nconst myChartRef = ref<any>(null)\n\nconst QxsDataChartConfig = {\n analyze,\n config,\n types,\n}\nconst coms: {\n [key: string]: any\n} = {\n 'table': Table,\n 'bar': Bar,\n 'line': Line,\n 'pie': Pie,\n 'radar': Radar,\n 'scatter': Scatter,\n 'funnel': Funnel,\n 'area': Area,\n 'card': Card,\n 'scatter-simple': ScatterSimple,\n}\n\nconst defaultChartOptionCopy = computed(() => {\n return cloneDeep(defaultChartOption[showTypeName])\n})\n\nconst formatPublicData = computed<IFormatPublicData>(() => {\n const { desc: { colDesc = [], groupByDesc = [] } = {}, data = [] } = propData\n\n // 处理 X 轴数据\n let xValue: EChartData['desc']['groupByDesc'] = []\n\n let xGroupByDesc: EChartData['desc']['groupByDesc'][0] | null = null\n const typedGroupByDesc = groupByDesc as EChartData['desc']['groupByDesc']\n xValue = typedGroupByDesc?.map((groupByDescItem) => {\n // if (groupByDescItem.colValues) {\n // groupByDescItem.colValuesDesc = {}\n // groupByDescItem.colValues.split(',')?.forEach((item) => {\n // const [key, value] = item.split(':')\n // groupByDescItem.colValuesDesc[key] = value\n // })\n // }\n if (groupByDescItem.xAxis) {\n xGroupByDesc = groupByDescItem\n }\n return groupByDescItem\n }) || []\n\n // 修复数据过滤逻辑,避免因为字段不存在导致数据被过滤掉\n const dataValue = xGroupByDesc && (xGroupByDesc as EChartData['desc']['groupByDesc'][0]).colDesc\n ? data.filter((item) => {\n const colDescKey = (xGroupByDesc as EChartData['desc']['groupByDesc'][0]).colDesc\n return item && colDescKey && (item[colDescKey] !== undefined && item[colDescKey] !== null)\n })\n : data\n\n // if (xGroupByDesc && xGroupByDesc.colValuesDesc && Object.keys(xGroupByDesc.colValuesDesc).length) {\n // const { colDesc: colDescItem, colValuesDesc } = xGroupByDesc\n // console.log('colDesc: colDescItem, colValuesDesc: ', colDescItem, colValuesDesc)\n // dataValue = dataValue.map((item) => {\n // if (typeof item[colDescItem] === 'number') {\n // item[colDescItem] = colValuesDesc[item[colDescItem]]\n // }\n // return item\n // })\n // }\n\n const mergeConfig = {\n colDesc: colDesc || [],\n modelName,\n subShowType,\n xGroupByDesc: xGroupByDesc || {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: xValue,\n data: dataValue,\n }\n return mergeConfig\n})\n\n// 导出数据\nfunction exportExal() {\n if (propData.data.length === 0) {\n // useMessage.error('暂无数据')\n console.log('暂无数据')\n return\n }\n const arr = useDataToExcelJson(propData)\n JsonToExcel(modelName, arr)\n}\nfunction merge(config: EChartsOption, defaultConfig: EChartsOption) {\n const mergeOpt = lodashMerge({}, defaultChartOptionCopy.value, config, defaultConfig)\n let conf = mergeOpt || {}\n\n if (jsCodeSnippet) {\n try {\n // 使用安全的配置处理函数\n conf = safeEvalConfig(jsCodeSnippet, conf)\n }\n catch (error) {\n console.error('代码执行失败:', error)\n }\n }\n\n return conf\n}\n\n// 获取内部 myChart 实例的方法\nfunction getMyChart(): ECharts | null {\n // 对于 table 类型,没有 myChart 实例\n if (showTypeName === 'table') {\n return null\n }\n\n // 尝试从子组件获取 myChart 实例\n const childComponent = myChartRef.value\n if (!childComponent) {\n return null\n }\n\n // 检查子组件是否有 myChart 方法(来自 useCharts)\n if (typeof childComponent.myChart === 'function') {\n return childComponent.myChart()\n }\n\n return null\n}\n\n// 为了保持向后兼容,提供 myChart 计算属性\nconst myChart = computed(() => getMyChart())\n\ndefineExpose({\n exportExal,\n QxsDataChartConfig,\n myChart,\n getMyChart,\n})\nprovide(InjectionChartMerge, merge)\n</script>\n\n<template>\n <component\n :is=\"coms[showTypeName]\"\n ref=\"myChartRef\"\n :key=\"showTypeName\"\n :class=\"[ns.e('wrapper')]\"\n :sub-show-type=\"subShowType\"\n :chart-data=\"formatPublicData\"\n :chart-options=\"chartOptions\"\n :lazy-load=\"lazyLoad\"\n />\n</template>\n"],"names":["ns","useNamespace","myChartRef","ref","QxsDataChartConfig","analyze","config","types","coms","table","Table","bar","Bar","line","Line","pie","Pie","radar","Radar","scatter","Scatter","funnel","Funnel","area","Area","card","Card","ScatterSimple","defaultChartOptionCopy","computed","cloneDeep","defaultChartOption","__props","formatPublicData","desc","colDesc","groupByDesc","data","xValue","xGroupByDesc","typedGroupByDesc","map","groupByDescItem","xAxis","dataValue","filter","item","colDescKey","modelName","subShowType","groupByValues","getMyChart","showTypeName","childComponent","value","myChart","__expose","exportExal","length","console","log","arr","useDataToExcelJson","JsonToExcel","provide","InjectionChartMerge","defaultConfig","conf","lodashMerge","jsCodeSnippet","safeEvalConfig","error","_createBlock","_resolveDynamicComponent","key","class","_normalizeClass","_unref","e","chartOptions","lazyLoad"],"mappings":"gjDAyDA,MAAMA,EAAKC,EAAa,cAGlBC,EAAaC,EAAS,MAEtBC,EAAqB,CACzBC,UACAC,SACAC,SAEIC,EAEF,CACFC,MAASC,EACTC,IAAOC,EACPC,KAAQC,EACRC,IAAOC,EACPC,MAASC,EACTC,QAAWC,EACXC,OAAUC,EACVC,KAAQC,EACRC,KAAQC,EACR,iBAAkBC,GAGdC,EAAyBC,EAAS,IAC/BC,EAAUC,EAAmBC,kBAGhCC,EAAmBJ,EAA4B,KACnD,MAAQK,MAAMC,QAAEA,EAAU,eAAIC,EAAc,IAAO,CAAA,EAACC,KAAGA,EAAO,IAAOL,EAAAK,KAGrE,IAAIC,EAA4C,GAE5CC,EAA4D,KAChE,MAAMC,EAAmBJ,EACzBE,EAASE,GAAkBC,IAAKC,IAQ1BA,EAAgBC,QAClBJ,EAAeG,GAEVA,KACH,GAGN,MAAME,EAAYL,GAAiBA,EAAsDJ,QACrFE,EAAKQ,OAAQC,IACX,MAAMC,EAAcR,EAAsDJ,QAC1E,OAAOW,GAAQC,QAAoC,IAArBD,EAAKC,IAAkD,OAArBD,EAAKC,KAEvEV,EA0BJ,MAboB,CAClBF,QAASA,GAAW,GACpBa,UAAQhB,EAAAgB,UACRC,YAAUjB,EAAAiB,YACVV,aAAcA,GAAgB,CAC5BJ,QAAS,GACTC,YAAa,GACbc,cAAe,GACfP,OAAO,GAETP,YAAaE,EACbD,KAAMO,KAiCV,SAASO,IAEP,GAAqB,UAAjBnB,EAAAoB,aACF,OAAO,KAIT,MAAMC,EAAiBnD,EAAWoD,MAClC,OAAKD,GAKiC,mBAA3BA,EAAeE,QACjBF,EAAeE,UALf,IASX,QAKAC,EAAa,CACXC,WAnDF,WACE,GAA6B,IAAzBzB,OAASK,KAAKqB,OAGhB,YADAC,QAAQC,IAAI,QAGd,MAAMC,EAAMC,EAAmB9B,EAAAK,MAC/B0B,EAAY/B,EAAAgB,UAAWa,EACzB,EA4CEzD,qBACAmD,QALc1B,EAAS,IAAMsB,KAM7BA,eAEFa,EAAQC,EA/CR,SAAe3D,EAAuB4D,GAEpC,IAAIC,EADaC,EAAY,CAAA,EAAIxC,EAAuB0B,MAAOhD,EAAQ4D,IAChD,CAAA,EAEvB,GAAIlC,EAAAqC,cACF,IAEEF,EAAOG,EAAetC,gBAAemC,EACvC,OACOI,GACLZ,QAAQY,MAAM,UAAWA,EAC3B,CAGF,OAAOJ,CACT,eAoCEK,EASEC,EARKjE,EAAK4C,EAAAA,eAAY,SAClB,aAAJjD,IAAID,EACHwE,IAAKtB,EAAAA,aACLuB,MAAKC,EAAA,CAAGC,EAAA7E,GAAG8E,EAAC,aACZ,gBAAe7B,EAAAA,YACf,aAAYhB,EAAAqB,MACZ,gBAAeyB,EAAAA,aACf,YAAWC,EAAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-chart.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import*as e from"echarts";import{merge as t}from"lodash-es";import{getProvinceCode as o,isProvinceCode as a}from"./mapData.mjs";const s={get:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"showTypeName",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"table";return s.data.find(o=>o[e].toString()===t||o[e]===t)},data:[{showTypeName:"table",label:"表格",coverImg:"table.png",disabled:()=>!1,subTypeList:[],showType:0,baseConfig:{}},{showTypeName:"line",label:"折线图",coverImg:"line-stack.png",showType:1,subTypeList:[{value:"line-simple",icon:"line-smooth",tooltipContent:"折线图"},{value:"area-basic",icon:"chart-line-area",tooltipContent:"折线面积图"}],baseConfig:{tooltip:{confine:!1,trigger:"axis",axisPointer:{type:"line"}},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},legend:{type:"scroll",top:"25px"},grid:{left:"0",bottom:"10px",containLabel:!0},xAxis:{type:"category",boundaryGap:!1},yAxis:{type:"value"},dataZoom:[{type:"inside"}]},disabled:(e,t)=>{const o=t?.length;return!(o>=1&&o<2)}},{showTypeName:"bar",label:"柱状图",coverImg:"bar-tick-align.png",showType:2,baseConfig:{legend:{type:"scroll",top:"25px"},tooltip:{confine:!1,trigger:"axis",axisPointer:{type:"shadow"}},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},grid:{left:"0",bottom:"20px",containLabel:!0},xAxis:{axisLabel:{showMaxLabel:!0},axisTick:{alignWithLabel:!0}},yAxis:{},dataZoom:[{type:"inside"}]},subTypeList:[{value:"bar-simple",icon:"bar-simple",tooltipContent:"垂直条形图"},{value:"bar-y-category",icon:"bar-y-category",tooltipContent:"水平条形图"}],disabled:(e,t)=>{const o=t?.length;return!(o>=1)}},{showTypeName:"pie",label:"饼图",coverImg:"pie-simple.png",showType:4,subTypeList:[{value:"pie-simple",icon:"pie-simple",tooltipContent:"饼图"},{value:"pie-borderRadius",icon:"pie-borderRadius",tooltipContent:"环形图"}],baseConfig:{tooltip:{confine:!0,formatter:"{a}<br>{b}: {c}({d}%)",trigger:"item"},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},legend:{type:"scroll",top:"25px"}},disabled:(e,t)=>{const o=t?.length,a=e?.length;return!(a<=4&&o>0&&o<=1)}},{showTypeName:"area",label:"地图",coverImg:"area.png",showType:5,subTypeList:[],baseConfig:{tooltip:{confine:!0,trigger:"item"},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},visualMap:{text:["高","低"],realtime:!1,calculable:!0,inRange:{color:["#E8F4FD","#B8D4F7","#7BA4F0","#4A7BE8","#3562e1"]}}},disabled:(e,t)=>{const o=t?.length,a=t?.some(e=>{let{colDesc:t}=e;return t.includes("省")||t.includes("市")});return!(a&&o>0)}},{showTypeName:"funnel",label:"漏斗图",coverImg:"funnel.png",showType:6,subTypeList:[],baseConfig:{tooltip:{confine:!0,trigger:"item",formatter:"{a} <br/>{b} : {c}"},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},legend:{type:"scroll",top:20}},disabled:(e,t)=>{const o=t?.length,a=e?.length;return!(a<=5&&o>0&&o<=1)}},{showTypeName:"card",label:"卡片",coverImg:"card.png",showType:9,subTypeList:[],baseConfig:{},disabled:(e,t)=>{const o=t?.length,a=e?.length;return!(a>0&&o<=1)}},{showTypeName:"radar",label:"雷达图",coverImg:"radar.png",showType:10,subTypeList:[],baseConfig:{legend:{type:"scroll",orient:"vertical",left:"left",top:"25px"},tooltip:{confine:!0,trigger:"item"},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},radar:{center:["50%","55%"]}},disabled:(e,t)=>{const o=t?.length;return 1!==o||1!==e.length}},{showTypeName:"scatter-simple",label:"散点图",coverImg:"",showType:11,subTypeList:[],disabled:()=>!1,baseConfig:{grid:{left:"0",bottom:"10px",containLabel:!0},tooltip:{showDelay:0,axisPointer:{show:!0,type:"cross",lineStyle:{type:"dashed",width:1}}},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},legend:{type:"scroll",top:"25px"},xAxis:{splitLine:{lineStyle:{type:"dashed"}}},yAxis:{splitLine:{lineStyle:{type:"dashed"}}}}}]};function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return s.get("showType",e)}function n(e,o){const a={};return e.forEach(e=>{a[e.showTypeName]=t(e.baseConfig,o)}),a}const l=n(s.data,{backgroundColor:"transparent",title:{textStyle:{fontSize:14,lineHeight:16}}}),r=new Map;function p(){try{const t=e.getMap("china");if(t&&t.geoJson)return t.geoJson}catch(e){console.warn("Failed to get builtin China map:",e)}return{type:"FeatureCollection",features:[]}}function c(e){let{adcode:t}=e;const s="https://cdnfile.yaomaitong.cn/ksh/lib/geo-data";if("string"!=typeof t||t.match(/^\d{6}$/)||"中国"===t||"100000"===t||(t=o(t)),r.has(t)){const e=r.get(t);if(e)return Promise.resolve(e)}return(async()=>{try{if("中国"===t||"100000"===t)try{const e=await fetch(`${s}/china.json`);if(e.ok){const o=await e.json();return r.set(t,o),o}}catch(e){console.warn("Failed to load local China map data:",e)}if(a(t))try{const e=await fetch(`${s}/${t}.json`);if(e.ok){const o=await e.json();if(o&&o.features&&o.features.length>0)return r.set(t,o),o}}catch(e){console.warn("Failed to load local province map data:",e)}const e=p();return r.set(t,e),e}catch(e){console.error("All map data sources failed, using simple fallback:",e);const o=p();return r.set(t,o),o}})()}export{l as defaultChartOption,c as getGeoJsonData,s as iconList,n as setDefaultChartOption,i as showTypeText};
|
|
2
|
-
//# sourceMappingURL=config.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/utils/config.ts"],"sourcesContent":["import type { GeoJson, IconRow, IGroupByInfos, ISelectInfos } from './types'\nimport * as echarts from 'echarts'\nimport { merge } from 'lodash-es'\nimport { getProvinceCode, isProvinceCode } from './mapData'\n\n/**\n * 禁用功能函数\n * 判断当前图表类型是否被禁用\n * 调用时机:渲染页面\n * @param {object} selectInfos 选择信息\n * @param {object} groupByInfos 分组信息\n * @param {Message[]|Message} data 数据\n * @returns Boolean 布尔值\n */\nexport const iconList: {\n data: IconRow[]\n get: (type: keyof IconRow, value: any) => IconRow\n} = {\n get: (type: keyof IconRow = 'showTypeName', value: any = 'table') => {\n return iconList.data.find(item => item[type].toString() === value || item[type] === value)!\n },\n data: [\n {\n showTypeName: 'table',\n label: '表格',\n coverImg: 'table.png',\n disabled: () => false,\n subTypeList: [],\n showType: 0,\n baseConfig: {},\n },\n {\n showTypeName: 'line',\n label: '折线图',\n coverImg: 'line-stack.png',\n showType: 1,\n subTypeList: [\n {\n value: 'line-simple',\n icon: 'line-smooth',\n tooltipContent: '折线图',\n },\n {\n value: 'area-basic',\n icon: 'chart-line-area',\n tooltipContent: '折线面积图',\n },\n ],\n baseConfig: {\n tooltip: {\n confine: false,\n trigger: 'axis',\n axisPointer: {\n type: 'line',\n },\n },\n toolbox: {\n show: false,\n showTitle: false,\n feature: {\n // dataView: { readOnly: true },\n // restore: {},\n saveAsImage: {},\n },\n },\n legend: {\n type: 'scroll',\n top: '25px',\n },\n grid: {\n left: '0',\n bottom: '10px',\n containLabel: true,\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n },\n yAxis: {\n type: 'value',\n },\n dataZoom: [\n {\n type: 'inside',\n },\n ],\n },\n disabled: (_: ISelectInfos[], groupByInfos: IGroupByInfos[]) => {\n const groupByInfosLenght = groupByInfos?.length\n if (groupByInfosLenght >= 1 && groupByInfosLenght < 2) {\n return false\n }\n return true\n },\n },\n {\n showTypeName: 'bar',\n label: '柱状图',\n coverImg: 'bar-tick-align.png',\n showType: 2,\n baseConfig: {\n legend: {\n type: 'scroll',\n top: '25px',\n },\n tooltip: {\n confine: false,\n trigger: 'axis',\n axisPointer: {\n type: 'shadow',\n },\n },\n toolbox: {\n show: false,\n showTitle: false,\n feature: {\n // dataView: { readOnly: true },\n // restore: {},\n saveAsImage: {},\n // myFull: { // 全屏\n // show: true,\n // title: '全屏',\n // icon: 'path://...',\n // }\n },\n },\n grid: {\n left: '0',\n bottom: '20px',\n containLabel: true,\n },\n xAxis: {\n axisLabel: {\n showMaxLabel: true,\n },\n axisTick: {\n alignWithLabel: true,\n },\n },\n yAxis: {},\n dataZoom: [\n {\n type: 'inside',\n },\n ],\n },\n subTypeList: [\n {\n value: 'bar-simple',\n icon: 'bar-simple',\n tooltipContent: '垂直条形图',\n },\n {\n value: 'bar-y-category',\n icon: 'bar-y-category',\n tooltipContent: '水平条形图',\n },\n ],\n disabled: (_: ISelectInfos[], groupByInfos: IGroupByInfos[]) => {\n const groupByInfosLenght = groupByInfos?.length\n if (groupByInfosLenght >= 1) {\n return false\n }\n return true\n },\n },\n {\n showTypeName: 'pie',\n label: '饼图',\n coverImg: 'pie-simple.png',\n showType: 4,\n subTypeList: [\n {\n value: 'pie-simple',\n icon: 'pie-simple',\n tooltipContent: '饼图',\n },\n {\n value: 'pie-borderRadius',\n icon: 'pie-borderRadius',\n tooltipContent: '环形图',\n },\n ],\n baseConfig: {\n tooltip: {\n confine: true,\n formatter: '{a}<br>{b}: {c}({d}%)',\n trigger: 'item',\n },\n toolbox: {\n show: false,\n showTitle: false,\n feature: {\n // dataView: { readOnly: true },\n // restore: {},\n saveAsImage: {},\n },\n },\n legend: {\n type: 'scroll',\n top: '25px',\n },\n },\n disabled: (selectInfos: ISelectInfos[], groupByInfos: IGroupByInfos[]) => {\n const groupByInfosLenght = groupByInfos?.length\n const selectInfosLength = selectInfos?.length\n if (selectInfosLength <= 4 && groupByInfosLenght > 0 && groupByInfosLenght <= 1) {\n return false\n }\n return true\n },\n },\n {\n showTypeName: 'area',\n label: '地图',\n coverImg: 'area.png',\n showType: 5,\n subTypeList: [],\n baseConfig: {\n tooltip: {\n confine: true,\n trigger: 'item',\n },\n toolbox: {\n show: false,\n showTitle: false,\n feature: {\n // dataView: { readOnly: true },\n // restore: {},\n saveAsImage: {},\n },\n },\n visualMap: {\n text: ['高', '低'],\n realtime: false,\n calculable: true,\n inRange: {\n color: ['#E8F4FD', '#B8D4F7', '#7BA4F0', '#4A7BE8', '#3562e1'],\n },\n },\n },\n disabled: (_: ISelectInfos[], groupByInfos: IGroupByInfos[]) => {\n const groupByInfosLenght = groupByInfos?.length\n const flag = groupByInfos?.some(({ colDesc }) => (colDesc.includes('省') || colDesc.includes('市')))\n if (flag && groupByInfosLenght > 0) {\n return false\n }\n return true\n },\n },\n {\n showTypeName: 'funnel',\n label: '漏斗图',\n coverImg: 'funnel.png',\n showType: 6,\n subTypeList: [],\n baseConfig: {\n tooltip: {\n confine: true,\n trigger: 'item',\n formatter: '{a} <br/>{b} : {c}',\n },\n toolbox: {\n show: false,\n showTitle: false,\n feature: {\n // dataView: { readOnly: true },\n // restore: {},\n saveAsImage: {},\n },\n },\n legend: {\n type: 'scroll',\n top: 20,\n },\n },\n disabled: (selectInfos: ISelectInfos[], groupByInfos: IGroupByInfos[]) => {\n const groupByInfosLenght = groupByInfos?.length\n const selectInfosLength = selectInfos?.length\n if (selectInfosLength <= 5 && groupByInfosLenght > 0 && groupByInfosLenght <= 1) {\n return false\n }\n return true\n },\n },\n\n // { label: 'scatter', value: 7 },\n {\n showTypeName: 'card',\n label: '卡片',\n coverImg: 'card.png',\n showType: 9,\n subTypeList: [],\n baseConfig: {},\n disabled: (selectInfos: ISelectInfos[], groupByInfos: IGroupByInfos[]) => {\n const groupByInfosLenght = groupByInfos?.length\n const selectInfosLength = selectInfos?.length\n if (selectInfosLength > 0 && groupByInfosLenght <= 1) {\n return false\n }\n return true\n },\n },\n {\n showTypeName: 'radar',\n label: '雷达图',\n coverImg: 'radar.png',\n showType: 10,\n subTypeList: [],\n baseConfig: {\n legend: {\n type: 'scroll',\n orient: 'vertical',\n left: 'left',\n top: '25px',\n },\n tooltip: {\n confine: true,\n trigger: 'item',\n },\n toolbox: {\n show: false,\n showTitle: false,\n feature: {\n // dataView: { readOnly: true },\n // restore: {},\n saveAsImage: {},\n },\n },\n radar: {\n // shape: 'circle',\n center: ['50%', '55%'],\n },\n },\n disabled: (selectInfos: ISelectInfos[], groupByInfos: IGroupByInfos[]) => {\n const groupByInfosLenght = groupByInfos?.length\n if (groupByInfosLenght === 1 && selectInfos.length === 1) {\n return false\n }\n return true\n },\n },\n {\n showTypeName: 'scatter-simple',\n label: '散点图',\n coverImg: '',\n showType: 11,\n subTypeList: [],\n disabled: () => false,\n baseConfig: {\n grid: {\n left: '0',\n bottom: '10px',\n containLabel: true,\n },\n tooltip: {\n showDelay: 0,\n axisPointer: {\n show: true,\n type: 'cross',\n lineStyle: {\n type: 'dashed',\n width: 1,\n },\n },\n },\n toolbox: {\n show: false,\n showTitle: false,\n feature: {\n // dataView: { readOnly: true },\n // restore: {},\n saveAsImage: {},\n },\n },\n legend: {\n type: 'scroll',\n top: '25px',\n },\n xAxis: {\n splitLine: {\n lineStyle: {\n type: 'dashed',\n },\n },\n },\n yAxis: {\n splitLine: {\n lineStyle: {\n type: 'dashed',\n },\n },\n },\n },\n },\n ],\n}\n\nexport function showTypeText(showType = 0): IconRow {\n const row = iconList.get('showType', showType)\n return row\n}\n\n// 修改默认配置\nexport function setDefaultChartOption(option: IconRow[], changeConfig: any) {\n const obj: {\n [key in IconRow['showTypeName']]: any\n } = {} as { [key in IconRow['showTypeName']]: any }\n option.forEach((item) => {\n obj[item.showTypeName] = merge(item.baseConfig, changeConfig)\n })\n return obj\n}\nexport const defaultChartOption = setDefaultChartOption(iconList.data, {\n backgroundColor: 'transparent',\n title: {\n textStyle: {\n fontSize: 14,\n lineHeight: 16,\n },\n },\n})\n// 获取地图数据(GeoJson)\n// 添加缓存对象\nconst geoJsonCache = new Map<string, GeoJson>()\n\n// 使用 ECharts 内置的中国地图数据\nfunction getBuiltinChinaMap(): GeoJson {\n try {\n // 尝试获取 ECharts 内置的中国地图数据\n const chinaMap = echarts.getMap('china')\n if (chinaMap && chinaMap.geoJson) {\n return chinaMap.geoJson as GeoJson\n }\n }\n catch (error) {\n console.warn('Failed to get builtin China map:', error)\n }\n\n // 如果获取失败,返回空的地图数据\n return {\n type: 'FeatureCollection',\n features: [],\n } as GeoJson\n}\nexport function getGeoJsonData(options: any): Promise<GeoJson> {\n let { adcode } = options\n const baseUrl = 'https://cdnfile.yaomaitong.cn/ksh/lib/geo-data'\n\n // 如果传入的是省份名称,转换为代码\n if (typeof adcode === 'string' && !adcode.match(/^\\d{6}$/) && adcode !== '中国' && adcode !== '100000') {\n adcode = getProvinceCode(adcode)\n }\n\n // 检查缓存中是否存在对应的 GeoJSON 数据\n if (geoJsonCache.has(adcode)) {\n const cachedGeoJson = geoJsonCache.get(adcode)\n if (cachedGeoJson) {\n return Promise.resolve(cachedGeoJson)\n }\n }\n\n // 构建基础 URL\n return (async () => {\n try {\n // 方案1: 使用本地地图数据\n if (adcode === '中国' || adcode === '100000') {\n try {\n // 优先尝试本地中国地图数据\n const response = await fetch(`${baseUrl}/china.json`)\n if (response.ok) {\n const chinaData = await response.json()\n geoJsonCache.set(adcode, chinaData)\n return chinaData\n }\n }\n catch (error) {\n console.warn('Failed to load local China map data:', error)\n }\n }\n\n // 方案2: 使用本地省级地图数据\n if (isProvinceCode(adcode)) {\n try {\n const response = await fetch(`${baseUrl}/${adcode}.json`)\n if (response.ok) {\n const geoJson = await response.json()\n if (geoJson && geoJson.features && geoJson.features.length > 0) {\n geoJsonCache.set(adcode, geoJson)\n return geoJson\n }\n }\n }\n catch (error) {\n console.warn('Failed to load local province map data:', error)\n }\n }\n\n // 方案3: 使用内置的中国地图数据作为备用\n const builtinMap = getBuiltinChinaMap()\n geoJsonCache.set(adcode, builtinMap)\n return builtinMap\n }\n catch (error) {\n console.error('All map data sources failed, using simple fallback:', error)\n const builtinMap = getBuiltinChinaMap()\n geoJsonCache.set(adcode, builtinMap)\n return builtinMap\n }\n })()\n}\n"],"names":["iconList","get","type","arguments","length","undefined","value","data","find","item","toString","showTypeName","label","coverImg","disabled","subTypeList","showType","baseConfig","icon","tooltipContent","tooltip","confine","trigger","axisPointer","toolbox","show","showTitle","feature","saveAsImage","legend","top","grid","left","bottom","containLabel","xAxis","boundaryGap","yAxis","dataZoom","_","groupByInfos","groupByInfosLenght","axisLabel","showMaxLabel","axisTick","alignWithLabel","formatter","selectInfos","selectInfosLength","visualMap","text","realtime","calculable","inRange","color","flag","some","_ref","colDesc","includes","orient","radar","center","showDelay","lineStyle","width","splitLine","showTypeText","setDefaultChartOption","option","changeConfig","obj","forEach","merge","defaultChartOption","backgroundColor","title","textStyle","fontSize","lineHeight","geoJsonCache","Map","getBuiltinChinaMap","chinaMap","echarts","getMap","geoJson","error","console","warn","features","getGeoJsonData","options","adcode","baseUrl","match","getProvinceCode","has","cachedGeoJson","Promise","resolve","response","fetch","ok","chinaData","json","set","isProvinceCode","builtinMap"],"mappings":"gIAcO,MAAMA,EAGT,CACFC,IAAK,WAAgE,IAA/DC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAsB,eAAgBG,yDAAa,QACvD,OAAON,EAASO,KAAKC,KAAKC,GAAQA,EAAKP,GAAMQ,aAAeJ,GAASG,EAAKP,KAAUI,EACtF,EACAC,KAAM,CACJ,CACEI,aAAc,QACdC,MAAO,KACPC,SAAU,YACVC,SAAUA,KAAM,EAChBC,YAAa,GACbC,SAAU,EACVC,WAAY,CAAA,GAEd,CACEN,aAAc,OACdC,MAAO,MACPC,SAAU,iBACVG,SAAU,EACVD,YAAa,CACX,CACET,MAAO,cACPY,KAAM,cACNC,eAAgB,OAElB,CACEb,MAAO,aACPY,KAAM,kBACNC,eAAgB,UAGpBF,WAAY,CACVG,QAAS,CACPC,SAAS,EACTC,QAAS,OACTC,YAAa,CACXrB,KAAM,SAGVsB,QAAS,CACPC,MAAM,EACNC,WAAW,EACXC,QAAS,CAGPC,YAAa,CAAA,IAGjBC,OAAQ,CACN3B,KAAM,SACN4B,IAAK,QAEPC,KAAM,CACJC,KAAM,IACNC,OAAQ,OACRC,cAAc,GAEhBC,MAAO,CACLjC,KAAM,WACNkC,aAAa,GAEfC,MAAO,CACLnC,KAAM,SAERoC,SAAU,CACR,CACEpC,KAAM,YAIZY,SAAUA,CAACyB,EAAmBC,KAC5B,MAAMC,EAAqBD,GAAcpC,OACzC,QAAIqC,GAAsB,GAAKA,EAAqB,KAMxD,CACE9B,aAAc,MACdC,MAAO,MACPC,SAAU,qBACVG,SAAU,EACVC,WAAY,CACVY,OAAQ,CACN3B,KAAM,SACN4B,IAAK,QAEPV,QAAS,CACPC,SAAS,EACTC,QAAS,OACTC,YAAa,CACXrB,KAAM,WAGVsB,QAAS,CACPC,MAAM,EACNC,WAAW,EACXC,QAAS,CAGPC,YAAa,CAAA,IAQjBG,KAAM,CACJC,KAAM,IACNC,OAAQ,OACRC,cAAc,GAEhBC,MAAO,CACLO,UAAW,CACTC,cAAc,GAEhBC,SAAU,CACRC,gBAAgB,IAGpBR,MAAO,CAAA,EACPC,SAAU,CACR,CACEpC,KAAM,YAIZa,YAAa,CACX,CACET,MAAO,aACPY,KAAM,aACNC,eAAgB,SAElB,CACEb,MAAO,iBACPY,KAAM,iBACNC,eAAgB,UAGpBL,SAAUA,CAACyB,EAAmBC,KAC5B,MAAMC,EAAqBD,GAAcpC,OACzC,QAAIqC,GAAsB,KAM9B,CACE9B,aAAc,MACdC,MAAO,KACPC,SAAU,iBACVG,SAAU,EACVD,YAAa,CACX,CACET,MAAO,aACPY,KAAM,aACNC,eAAgB,MAElB,CACEb,MAAO,mBACPY,KAAM,mBACNC,eAAgB,QAGpBF,WAAY,CACVG,QAAS,CACPC,SAAS,EACTyB,UAAW,wBACXxB,QAAS,QAEXE,QAAS,CACPC,MAAM,EACNC,WAAW,EACXC,QAAS,CAGPC,YAAa,CAAA,IAGjBC,OAAQ,CACN3B,KAAM,SACN4B,IAAK,SAGThB,SAAUA,CAACiC,EAA6BP,KACtC,MAAMC,EAAqBD,GAAcpC,OACnC4C,EAAoBD,GAAa3C,OACvC,QAAI4C,GAAqB,GAAKP,EAAqB,GAAKA,GAAsB,KAMlF,CACE9B,aAAc,OACdC,MAAO,KACPC,SAAU,WACVG,SAAU,EACVD,YAAa,GACbE,WAAY,CACVG,QAAS,CACPC,SAAS,EACTC,QAAS,QAEXE,QAAS,CACPC,MAAM,EACNC,WAAW,EACXC,QAAS,CAGPC,YAAa,CAAA,IAGjBqB,UAAW,CACTC,KAAM,CAAC,IAAK,KACZC,UAAU,EACVC,YAAY,EACZC,QAAS,CACPC,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,cAI1DxC,SAAUA,CAACyB,EAAmBC,KAC5B,MAAMC,EAAqBD,GAAcpC,OACnCmD,EAAOf,GAAcgB,KAAKC,IAAA,IAACC,QAAEA,GAAQD,EAAA,OAAOC,EAAQC,SAAS,MAAQD,EAAQC,SAAS,OAC5F,QAAIJ,GAAQd,EAAqB,KAMrC,CACE9B,aAAc,SACdC,MAAO,MACPC,SAAU,aACVG,SAAU,EACVD,YAAa,GACbE,WAAY,CACVG,QAAS,CACPC,SAAS,EACTC,QAAS,OACTwB,UAAW,sBAEbtB,QAAS,CACPC,MAAM,EACNC,WAAW,EACXC,QAAS,CAGPC,YAAa,CAAA,IAGjBC,OAAQ,CACN3B,KAAM,SACN4B,IAAK,KAGThB,SAAUA,CAACiC,EAA6BP,KACtC,MAAMC,EAAqBD,GAAcpC,OACnC4C,EAAoBD,GAAa3C,OACvC,QAAI4C,GAAqB,GAAKP,EAAqB,GAAKA,GAAsB,KAQlF,CACE9B,aAAc,OACdC,MAAO,KACPC,SAAU,WACVG,SAAU,EACVD,YAAa,GACbE,WAAY,CAAA,EACZH,SAAUA,CAACiC,EAA6BP,KACtC,MAAMC,EAAqBD,GAAcpC,OACnC4C,EAAoBD,GAAa3C,OACvC,QAAI4C,EAAoB,GAAKP,GAAsB,KAMvD,CACE9B,aAAc,QACdC,MAAO,MACPC,SAAU,YACVG,SAAU,GACVD,YAAa,GACbE,WAAY,CACVY,OAAQ,CACN3B,KAAM,SACN0D,OAAQ,WACR5B,KAAM,OACNF,IAAK,QAEPV,QAAS,CACPC,SAAS,EACTC,QAAS,QAEXE,QAAS,CACPC,MAAM,EACNC,WAAW,EACXC,QAAS,CAGPC,YAAa,CAAA,IAGjBiC,MAAO,CAELC,OAAQ,CAAC,MAAO,SAGpBhD,SAAUA,CAACiC,EAA6BP,KACtC,MAAMC,EAAqBD,GAAcpC,OACzC,OAA2B,IAAvBqC,GAAmD,IAAvBM,EAAY3C,SAMhD,CACEO,aAAc,iBACdC,MAAO,MACPC,SAAU,GACVG,SAAU,GACVD,YAAa,GACbD,SAAUA,KAAM,EAChBG,WAAY,CACVc,KAAM,CACJC,KAAM,IACNC,OAAQ,OACRC,cAAc,GAEhBd,QAAS,CACP2C,UAAW,EACXxC,YAAa,CACXE,MAAM,EACNvB,KAAM,QACN8D,UAAW,CACT9D,KAAM,SACN+D,MAAO,KAIbzC,QAAS,CACPC,MAAM,EACNC,WAAW,EACXC,QAAS,CAGPC,YAAa,CAAA,IAGjBC,OAAQ,CACN3B,KAAM,SACN4B,IAAK,QAEPK,MAAO,CACL+B,UAAW,CACTF,UAAW,CACT9D,KAAM,YAIZmC,MAAO,CACL6B,UAAW,CACTF,UAAW,CACT9D,KAAM,gBASb,SAASiE,IAAoC,IAAvBnD,yDAAW,EAEtC,OADYhB,EAASC,IAAI,WAAYe,EAEvC,CAGO,SAASoD,EAAsBC,EAAmBC,GACvD,MAAMC,EAEF,CAAA,EAIJ,OAHAF,EAAOG,QAAS/D,IACd8D,EAAI9D,EAAKE,cAAgB8D,EAAMhE,EAAKQ,WAAYqD,KAE3CC,CACT,CACO,MAAMG,EAAqBN,EAAsBpE,EAASO,KAAM,CACrEoE,gBAAiB,cACjBC,MAAO,CACLC,UAAW,CACTC,SAAU,GACVC,WAAY,OAMZC,MAAmBC,IAGzB,SAASC,IACP,IAEE,MAAMC,EAAWC,EAAQC,OAAO,SAChC,GAAIF,GAAYA,EAASG,QACvB,OAAOH,EAASG,OAEpB,OACOC,GACLC,QAAQC,KAAK,mCAAoCF,EACnD,CAGA,MAAO,CACLrF,KAAM,oBACNwF,SAAU,GAEd,CACO,SAASC,EAAeC,GAC7B,IAAIC,OAAEA,GAAWD,EACjB,MAAME,EAAU,iDAQhB,GALsB,iBAAXD,GAAwBA,EAAOE,MAAM,YAAyB,OAAXF,GAA8B,WAAXA,IAC/EA,EAASG,EAAgBH,IAIvBb,EAAaiB,IAAIJ,GAAS,CAC5B,MAAMK,EAAgBlB,EAAa/E,IAAI4F,GACvC,GAAIK,EACF,OAAOC,QAAQC,QAAQF,EAE3B,CAGA,MAAA,WACE,IAEE,GAAe,OAAXL,GAA8B,WAAXA,EACrB,IAEE,MAAMQ,QAAiBC,MAAM,GAAGR,gBAChC,GAAIO,EAASE,GAAI,CACf,MAAMC,QAAkBH,EAASI,OAEjC,OADAzB,EAAa0B,IAAIb,EAAQW,GAClBA,CACT,CACF,OACOjB,GACLC,QAAQC,KAAK,uCAAwCF,EACvD,CAIF,GAAIoB,EAAed,GACjB,IACE,MAAMQ,QAAiBC,MAAM,GAAGR,KAAWD,UAC3C,GAAIQ,EAASE,GAAI,CACf,MAAMjB,QAAgBe,EAASI,OAC/B,GAAInB,GAAWA,EAAQI,UAAYJ,EAAQI,SAAStF,OAAS,EAE3D,OADA4E,EAAa0B,IAAIb,EAAQP,GAClBA,CAEX,CACF,OACOC,GACLC,QAAQC,KAAK,0CAA2CF,EAC1D,CAIF,MAAMqB,EAAa1B,IAEnB,OADAF,EAAa0B,IAAIb,EAAQe,GAClBA,CACT,OACOrB,GACLC,QAAQD,MAAM,sDAAuDA,GACrE,MAAMqB,EAAa1B,IAEnB,OADAF,EAAa0B,IAAIb,EAAQe,GAClBA,CACT,CACF,EA9CA,EA+CF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injectionKeys.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/utils/injectionKeys.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\n\nexport const InjectionChartMerge: InjectionKey<(target: any, source: any) => any> = Symbol('merge')\n"],"names":["InjectionChartMerge","Symbol"],"mappings":"MAEaA,EAAuEC,OAAO"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const t={"北京市":"110000","天津市":"120000","河北省":"130000","山西省":"140000","内蒙古自治区":"150000","辽宁省":"210000","吉林省":"220000","黑龙江省":"230000","上海市":"310000","江苏省":"320000","浙江省":"330000","安徽省":"340000","福建省":"350000","江西省":"360000","山东省":"370000","河南省":"410000","湖北省":"420000","湖南省":"430000","广东省":"440000","广西壮族自治区":"450000","海南省":"460000","重庆市":"500000","四川省":"510000","贵州省":"520000","云南省":"530000","西藏自治区":"540000","陕西省":"610000","甘肃省":"620000","青海省":"630000","宁夏回族自治区":"640000","新疆维吾尔自治区":"650000","台湾省":"710000","香港特别行政区":"810000","澳门特别行政区":"820000"};function e(e){return t[e]||"100000"}function n(t){return/^\d{6}$/.test(t)&&"100000"!==t}Object.fromEntries(Object.entries(t).map(t=>{let[e,n]=t;return[n,e]}));export{t as PROVINCE_CODES,e as getProvinceCode,n as isProvinceCode};
|
|
2
|
-
//# sourceMappingURL=mapData.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mapData.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/utils/mapData.ts"],"sourcesContent":["// 免费的地图数据源\nexport const FREE_MAP_SOURCES = {\n // 省级地图数据源\n PROVINCE: {\n // 使用天地图省级数据\n TIANDITU: () => `https://api.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=你的天地图token`,\n // 使用 DataV 的省级数据\n DATAV: (adcode: string) => `https://geo.datav.aliyun.com/areas_v3/bound/${adcode}_full.json`,\n },\n // 天地图行政区划数据\n TIANDITU_ADMIN: {\n // 获取行政区划边界数据\n BOUNDARY: (adcode: string) => `https://api.tianditu.gov.cn/administrative?postStr={\"searchWord\":\"${adcode}\",\"searchType\":\"11\",\"needSubInfo\":true,\"needAll\":true,\"needPolygon\":true,\"needPre\":true}&type=query&tk=你的天地图token`,\n },\n}\n\n// 中国地图数据 - 使用真实的省级边界数据\nexport const CHINA_MAP_DATA = {\n type: 'FeatureCollection',\n features: [\n // 这里应该包含所有省份的边界数据\n // 由于数据量很大,建议使用外部数据源\n ],\n}\n\n// 获取中国地图数据的函数\nexport async function getChinaMapData(): Promise<any> {\n try {\n // 优先使用 DataV 的中国地图数据\n const response = await fetch('https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json')\n if (response.ok) {\n return await response.json()\n }\n }\n catch (error) {\n console.warn('Failed to fetch China map from DataV:', error)\n }\n\n // 备用方案:使用简化的地图数据\n return {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n properties: {\n name: '中国',\n adcode: '100000',\n },\n geometry: {\n type: 'Polygon',\n coordinates: [[\n [73.66, 35.42], [78.91, 35.42], [81.33, 36.08], [85.29, 36.08],\n [88.02, 35.42], [90.16, 35.42], [92.13, 34.76], [94.81, 34.76],\n [97.06, 33.44], [99.43, 32.78], [101.06, 31.46], [102.73, 30.14],\n [104.40, 28.82], [106.07, 27.50], [107.74, 26.18], [109.41, 24.86],\n [111.08, 23.54], [112.75, 22.22], [114.42, 20.90], [116.09, 19.58],\n [117.76, 18.26], [119.43, 16.94], [121.10, 15.62], [122.77, 14.30],\n [124.44, 12.98], [126.11, 11.66], [127.78, 10.34], [129.45, 9.02],\n [131.12, 7.70], [132.79, 6.38], [134.46, 5.06], [135.05, 4.40],\n [135.05, 5.06], [135.05, 6.38], [135.05, 7.70], [135.05, 9.02],\n [135.05, 10.34], [135.05, 11.66], [135.05, 12.98], [135.05, 14.30],\n [135.05, 15.62], [135.05, 16.94], [135.05, 18.26], [135.05, 19.58],\n [135.05, 20.90], [135.05, 22.22], [135.05, 23.54], [135.05, 24.86],\n [135.05, 26.18], [135.05, 27.50], [135.05, 28.82], [135.05, 30.14],\n [135.05, 31.46], [135.05, 32.78], [135.05, 34.10], [135.05, 35.42],\n [134.46, 36.08], [133.79, 36.74], [133.12, 37.40], [132.45, 38.06],\n [131.78, 38.72], [131.11, 39.38], [130.44, 40.04], [129.77, 40.70],\n [129.10, 41.36], [128.43, 42.02], [127.76, 42.68], [127.09, 43.34],\n [126.42, 44.00], [125.75, 44.66], [125.08, 45.32], [124.41, 45.98],\n [123.74, 46.64], [123.07, 47.30], [122.40, 47.96], [121.73, 48.62],\n [121.06, 49.28], [120.39, 49.94], [119.72, 50.60], [119.05, 51.26],\n [118.38, 51.92], [117.71, 52.58], [117.04, 53.24], [116.37, 53.90],\n [115.70, 54.56], [115.03, 55.22], [114.36, 55.88], [113.69, 56.54],\n [113.02, 57.20], [112.35, 57.86], [111.68, 58.52], [111.01, 59.18],\n [110.34, 59.84], [109.67, 60.50], [109.00, 61.16], [108.33, 61.82],\n [107.66, 62.48], [106.99, 63.14], [106.32, 63.80], [105.65, 64.46],\n [104.98, 65.12], [104.31, 65.78], [103.64, 66.44], [102.97, 67.10],\n [102.30, 67.76], [101.63, 68.42], [100.96, 69.08], [100.29, 69.74],\n [99.62, 70.40], [98.95, 71.06], [98.28, 71.72], [97.61, 72.38],\n [96.94, 73.04], [96.27, 73.70], [95.60, 74.36], [94.93, 75.02],\n [94.26, 75.68], [93.59, 76.34], [92.92, 77.00], [92.25, 77.66],\n [91.58, 78.32], [90.91, 78.98], [90.24, 79.64], [89.57, 80.30],\n [88.90, 80.96], [88.23, 81.62], [87.56, 82.28], [86.89, 82.94],\n [86.22, 83.60], [85.55, 84.26], [84.88, 84.92], [84.21, 85.58],\n [83.54, 86.24], [82.87, 86.90], [82.20, 87.56], [81.53, 88.22],\n [80.86, 88.88], [80.19, 89.54], [79.52, 90.20], [78.85, 90.86],\n [78.18, 91.52], [77.51, 92.18], [76.84, 92.84], [76.17, 93.50],\n [75.50, 94.16], [74.83, 94.82], [74.16, 95.48], [73.66, 96.14],\n [73.66, 95.48], [73.66, 94.82], [73.66, 94.16], [73.66, 93.50],\n [73.66, 92.84], [73.66, 92.18], [73.66, 91.52], [73.66, 90.86],\n [73.66, 90.20], [73.66, 89.54], [73.66, 88.88], [73.66, 88.22],\n [73.66, 87.56], [73.66, 86.90], [73.66, 86.24], [73.66, 85.58],\n [73.66, 84.92], [73.66, 84.26], [73.66, 83.60], [73.66, 82.94],\n [73.66, 82.28], [73.66, 81.62], [73.66, 80.96], [73.66, 80.30],\n [73.66, 79.64], [73.66, 78.98], [73.66, 78.32], [73.66, 77.66],\n [73.66, 77.00], [73.66, 76.34], [73.66, 75.68], [73.66, 75.02],\n [73.66, 74.36], [73.66, 73.70], [73.66, 73.04], [73.66, 72.38],\n [73.66, 71.72], [73.66, 71.06], [73.66, 70.40], [73.66, 69.74],\n [73.66, 69.08], [73.66, 68.42], [73.66, 67.76], [73.66, 67.10],\n [73.66, 66.44], [73.66, 65.78], [73.66, 65.12], [73.66, 64.46],\n [73.66, 63.80], [73.66, 63.14], [73.66, 62.48], [73.66, 61.82],\n [73.66, 61.16], [73.66, 60.50], [73.66, 59.84], [73.66, 59.18],\n [73.66, 58.52], [73.66, 57.86], [73.66, 57.20], [73.66, 56.54],\n [73.66, 55.88], [73.66, 55.22], [73.66, 54.56], [73.66, 53.90],\n [73.66, 53.24], [73.66, 52.58], [73.66, 51.92], [73.66, 51.26],\n [73.66, 50.60], [73.66, 49.94], [73.66, 49.28], [73.66, 48.62],\n [73.66, 47.96], [73.66, 47.30], [73.66, 46.64], [73.66, 45.98],\n [73.66, 45.32], [73.66, 44.66], [73.66, 44.00], [73.66, 43.34],\n [73.66, 42.68], [73.66, 42.02], [73.66, 41.36], [73.66, 40.70],\n [73.66, 40.04], [73.66, 39.38], [73.66, 38.72], [73.66, 38.06],\n [73.66, 37.40], [73.66, 36.74], [73.66, 36.08], [73.66, 35.42],\n ]],\n },\n },\n ],\n }\n}\n\n// 省级行政区代码映射\nexport const PROVINCE_CODES = {\n 北京市: '110000',\n 天津市: '120000',\n 河北省: '130000',\n 山西省: '140000',\n 内蒙古自治区: '150000',\n 辽宁省: '210000',\n 吉林省: '220000',\n 黑龙江省: '230000',\n 上海市: '310000',\n 江苏省: '320000',\n 浙江省: '330000',\n 安徽省: '340000',\n 福建省: '350000',\n 江西省: '360000',\n 山东省: '370000',\n 河南省: '410000',\n 湖北省: '420000',\n 湖南省: '430000',\n 广东省: '440000',\n 广西壮族自治区: '450000',\n 海南省: '460000',\n 重庆市: '500000',\n 四川省: '510000',\n 贵州省: '520000',\n 云南省: '530000',\n 西藏自治区: '540000',\n 陕西省: '610000',\n 甘肃省: '620000',\n 青海省: '630000',\n 宁夏回族自治区: '640000',\n 新疆维吾尔自治区: '650000',\n 台湾省: '710000',\n 香港特别行政区: '810000',\n 澳门特别行政区: '820000',\n}\n\n// 省级名称映射(反向查找)\nexport const PROVINCE_NAMES = Object.fromEntries(\n Object.entries(PROVINCE_CODES).map(([name, code]) => [code, name]),\n)\n\n// 获取省级代码\nexport function getProvinceCode(provinceName: string): string {\n return PROVINCE_CODES[provinceName as keyof typeof PROVINCE_CODES] || '100000'\n}\n\n// 获取省级名称\nexport function getProvinceName(provinceCode: string): string {\n return PROVINCE_NAMES[provinceCode] || '中国'\n}\n\n// 判断是否为省级代码\nexport function isProvinceCode(code: string): boolean {\n return /^\\d{6}$/.test(code) && code !== '100000'\n}\n\n// 获取省级地图数据\nexport async function getProvinceMapData(provinceName: string): Promise<any> {\n const provinceCode = getProvinceCode(provinceName)\n\n try {\n const url = `https://geo.datav.aliyun.com/areas_v3/bound/${provinceCode}_full.json`\n\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const data = await response.json()\n return data\n }\n catch (error) {\n console.error('Failed to fetch province map data for:', provinceName, error)\n throw error\n }\n}\n\n// 天地图配置\nexport const TIANDITU_CONFIG = {\n // 天地图 token(需要申请)\n TOKEN: '你的天地图token', // 请替换为您的天地图 token\n // 天地图 API 基础 URL\n BASE_URL: 'https://api.tianditu.gov.cn',\n}\n\n// 获取天地图行政区划数据\nexport async function fetchTiandituBoundary(adcode: string): Promise<any> {\n try {\n const url = FREE_MAP_SOURCES.TIANDITU_ADMIN.BOUNDARY(adcode).replace('你的天地图token', TIANDITU_CONFIG.TOKEN)\n const response = await fetch(url)\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const data = await response.json()\n return data\n }\n catch (error) {\n console.error('Failed to fetch Tianditu boundary data:', error)\n throw error\n }\n}\n\n// 获取地图数据的函数\nexport async function fetchMapData(adcode: string): Promise<any> {\n try {\n // 优先尝试从天地图获取数据\n if (TIANDITU_CONFIG.TOKEN !== '你的天地图token') {\n try {\n const tiandituData = await fetchTiandituBoundary(adcode)\n if (tiandituData && tiandituData.data && tiandituData.data.length > 0) {\n // 转换天地图数据为 GeoJSON 格式\n return convertTiandituToGeoJson(tiandituData)\n }\n }\n catch (error) {\n console.warn('Failed to fetch from Tianditu, trying DataV:', error)\n }\n }\n\n // 备用方案:从 DataV 获取数据\n const url = FREE_MAP_SOURCES.PROVINCE.DATAV(adcode)\n console.log('Fetching province map data from:', url)\n const response = await fetch(url)\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const data = await response.json()\n console.log('Successfully fetched province map data for:', adcode, data)\n return data\n }\n catch (error) {\n console.error('Failed to fetch map data for adcode:', adcode, error)\n throw error\n }\n}\n\n// 转换天地图数据为 GeoJSON 格式\nfunction convertTiandituToGeoJson(tiandituData: any): any {\n const features = tiandituData.data.map((item: any) => ({\n type: 'Feature',\n properties: {\n name: item.name,\n adcode: item.adcode,\n level: item.level,\n },\n geometry: {\n type: 'Polygon',\n coordinates: item.polygon ? [item.polygon] : [],\n },\n }))\n\n return {\n type: 'FeatureCollection',\n features,\n }\n}\n"],"names":["PROVINCE_CODES","北京市","天津市","河北省","山西省","内蒙古自治区","辽宁省","吉林省","黑龙江省","上海市","江苏省","浙江省","安徽省","福建省","江西省","山东省","河南省","湖北省","湖南省","广东省","广西壮族自治区","海南省","重庆市","四川省","贵州省","云南省","西藏自治区","陕西省","甘肃省","青海省","宁夏回族自治区","新疆维吾尔自治区","台湾省","香港特别行政区","澳门特别行政区","getProvinceCode","provinceName","isProvinceCode","code","test","Object","fromEntries","entries","map","_ref","name"],"mappings":"AAuHO,MAAMA,EAAiB,CAC5BC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,SAAQ,SACRC,MAAK,SACLC,MAAK,SACLC,OAAM,SACNC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,UAAS,SACTC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,QAAO,SACPC,MAAK,SACLC,MAAK,SACLC,MAAK,SACLC,UAAS,SACTC,WAAU,SACVC,MAAK,SACLC,UAAS,SACTC,UAAS,UASJ,SAASC,EAAgBC,GAC9B,OAAOpC,EAAeoC,IAAgD,QACxE,CAQO,SAASC,EAAeC,GAC7B,MAAO,UAAUC,KAAKD,IAAkB,WAATA,CACjC,CAjB8BE,OAAOC,YACnCD,OAAOE,QAAQ1C,GAAgB2C,IAAIC,IAAA,IAAEC,EAAMP,GAAIM,EAAA,MAAM,CAACN,EAAMO"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function e(e,n){const o={...{Math:Math,Date:Date,Array:Array,Object:Object,String:String,Number:Number,Boolean:Boolean,console:console,JSON:JSON},config:{...n}},t=new Proxy(o,{has:(e,n)=>!0,get:(e,n)=>{if("symbol"==typeof n){if(n===Symbol.unscopables)return;return Reflect.get(e,n)}return e[n]}});try{const n=`with (sandbox) { ${e} }`;return new Function("sandbox",n)(t),t.config}catch(e){return console.error("配置处理失败:",e),n}}export{e as safeEvalConfig};
|
|
2
|
-
//# sourceMappingURL=safe-eval.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"safe-eval.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/utils/safe-eval.ts"],"sourcesContent":["import type { EChartsOption } from './types'\n\n/**\n * 安全的配置处理函数\n * @param jsCode - JavaScript 代码片段\n * @param config - ECharts 配置对象\n * @returns 处理后的配置对象\n */\nexport function safeEvalConfig(jsCode: string, config: EChartsOption): EChartsOption {\n // 预定义允许的操作和函数\n const allowedGlobals = {\n Math,\n Date,\n Array,\n Object,\n String,\n Number,\n Boolean,\n console,\n JSON,\n }\n\n // 创建安全的执行环境\n const sandbox = {\n ...allowedGlobals,\n config: { ...config },\n }\n\n // 使用 with 和 Proxy 创建安全的执行环境\n const handler: ProxyHandler<typeof sandbox> = {\n has: (_target, _key) => {\n return true // 使所有变量查找都在 sandbox 中\n },\n get: (target, key) => {\n // 处理 Symbol 类型的 key\n if (typeof key === 'symbol') {\n if (key === Symbol.unscopables) {\n return undefined\n }\n return Reflect.get(target, key)\n }\n return target[key as keyof typeof target]\n },\n }\n\n const proxiedSandbox = new Proxy(sandbox, handler)\n\n try {\n // 使用 with 语句创建局部作用域\n const code = `with (sandbox) { ${jsCode} }`\n // eslint-disable-next-line no-new-func\n const fn = new Function('sandbox', code)\n fn(proxiedSandbox)\n\n return proxiedSandbox.config as EChartsOption\n }\n catch (error) {\n console.error('配置处理失败:', error)\n return config\n }\n}\n"],"names":["safeEvalConfig","jsCode","config","sandbox","Math","Date","Array","Object","String","Number","Boolean","console","JSON","proxiedSandbox","Proxy","has","_target","_key","get","target","key","Symbol","unscopables","Reflect","code","Function","fn","error"],"mappings":"AAQO,SAASA,EAAeC,EAAgBC,GAE7C,MAaMC,EAAU,IAbO,CACrBC,UACAC,UACAC,YACAC,cACAC,cACAC,cACAC,gBACAC,gBACAC,WAMAV,OAAQ,IAAKA,IAoBTW,EAAiB,IAAIC,MAAMX,EAhBa,CAC5CY,IAAKA,CAACC,EAASC,KACN,EAETC,IAAKA,CAACC,EAAQC,KAEZ,GAAmB,iBAARA,EAAkB,CAC3B,GAAIA,IAAQC,OAAOC,YACjB,OAEF,OAAOC,QAAQL,IAAIC,EAAQC,EAC7B,CACA,OAAOD,EAAOC,MAMlB,IAEE,MAAMI,EAAO,oBAAoBvB,MAKjC,OAHW,IAAIwB,SAAS,UAAWD,EACnCE,CAAGb,GAEIA,EAAeX,MACxB,OACOyB,GAEL,OADAhB,QAAQgB,MAAM,UAAWA,GAClBzB,CACT,CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{useMouseInElement as e,watchDebounced as t,useElementSize as i}from"@vueuse/core";import*as o from"echarts";import{onMounted as n,nextTick as r,onUnmounted as s}from"vue";import a from"../components/empty.svg.mjs";var c=Object.defineProperty,l=(e,t,i)=>((e,t,i)=>t in e?c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i);const u=new class{constructor(){l(this,"observer",null),l(this,"callbacks",new Map)}createObserver(){return"undefined"==typeof IntersectionObserver?null:new IntersectionObserver(e=>{for(const t of e)if(t.isIntersecting){const e=this.callbacks.get(t.target);e&&(e(),this.unobserve(t.target))}},{threshold:0,rootMargin:"200px"})}observe(e,t){this.observer||(this.observer=this.createObserver()),this.observer&&(this.callbacks.set(e,t),this.observer.observe(e))}unobserve(e){this.observer&&(this.observer.unobserve(e),this.callbacks.delete(e))}disconnect(){this.observer&&(this.observer.disconnect(),this.callbacks.clear(),this.observer=null)}};function h(i){let{chartDOM:c,chartData:l,chartOptions:h,initBefore:d,initAfter:v,lazyLoad:p=!0}=i,b=null,g=!1,w=null,m=[];const y=window.devicePixelRatio||1;function D(){if(b){try{b.isDisposed()||b.dispose()}catch(e){console.warn("Error disposing chart:",e)}b=null}}function x(){if(!b||b.isDisposed()){if(!c.value)return console.warn("[ECharts] DOM element not found"),null;const{clientWidth:e,clientHeight:t}=c.value;if(0===e||0===t)return console.warn("[ECharts] Container has zero size. Width:",e,"Height:",t,". Skipping initialization."),null;b=o.init(c.value,null,{devicePixelRatio:y,renderer:"svg"})}return b}function O(){c.value&&u.unobserve(c.value)}function k(){if(m.length>0)return;const{isOutside:i}=e(c),o=t(i,e=>{"boolean"==typeof e&&b&&!b.isDisposed()&&function(e){if(b&&!b.isDisposed())try{b.setOption({toolbox:{show:e}})}catch(e){console.warn("Error toggling toolbox:",e)}}(!e)},{debounce:200}),n=t(()=>h.value,async()=>{await async function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];try{b&&!b.isDisposed()||await E(),b?.showLoading(),l.value?.data?.length?(!0===g&&(t[1]||(t[1]={}),t[1].notMerge=!0),g=!1):t=await M(),b?.setOption(...t)}catch(e){console.log("🚀 ~ renderChart ~ error:",e),b&&!b.isDisposed()&&D(),x(),t=await M("配置项错误"),b?.setOption(...t)}finally{b?.hideLoading()}}(h.value)},{debounce:500,deep:!0,immediate:!0});m.push(o,n)}async function z(){await r();const{clientWidth:e,clientHeight:t}=c.value||{clientWidth:0,clientHeight:0};if(e>0&&t>0){x()&&(v&&v(b),b&&!b.isDisposed()&&f(b,c),k()),O()}else!function(){if(!c.value||"undefined"==typeof ResizeObserver)return;w=new ResizeObserver(e=>{for(const t of e){const{width:e,height:i}=t.contentRect;if(e>0&&i>0){x()&&(v&&v(b),b&&!b.isDisposed()&&f(b,c),k()),w?.disconnect(),w=null,O();break}}}),w.observe(c.value)}()}async function E(){return c.value?(await r(),p?(c.value&&u.observe(c.value,()=>{z()}),b):(await z(),b)):b}function M(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"暂无数据";return new Promise(t=>{const i=new Image;i.src=a,i.onload=()=>{const o=i.width/i.height,n={title:[{text:l.value?.modelName,...h.value.title},{subtext:e,top:"center",left:"center",text:"{a|}",itemGap:-20,subtextStyle:{fontSize:14},textStyle:{align:"center",rich:{a:{height:100/o,width:100,backgroundColor:{image:a}}}}}]};g=!0,t([n,{notMerge:!0,replaceMerge:["xAxis","yAxis","series"],lazyUpdate:!1}])}})}return n(async()=>{d&&await d(),await r(),await E(),b&&!b.isDisposed()&&(v&&v(b),f(b,c),k())}),s(()=>{if(m.forEach(e=>e()),m=[],w&&(w.disconnect(),w=null),O(),b&&!b.isDisposed())try{b.getZr()?.off("mousemove"),b.getZr()?.off("mouseout"),b.getZr()?.off("click"),b.off("click"),D()}catch(e){console.warn("Error during chart cleanup:",e)}}),{myChart:()=>b}}function f(e,o){const{width:n,height:r}=i(o);t([n,r],()=>{if(e&&!e.isDisposed())try{e.resize()}catch(e){console.warn("Error during chart resize:",e)}})}function d(e){const{desc:{colDesc:t=[],groupByDesc:i=[]}={},data:o=[]}=e,n=[...i.map(e=>e.colDesc),...t].filter(e=>e),r=o.map(e=>n.map(t=>e[t]||""));return[n,...r]}export{h as useCharts,d as useDataToExcelJson,f as useResize};
|
|
2
|
-
//# sourceMappingURL=useCharts.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCharts.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/utils/useCharts.ts"],"sourcesContent":["import type { ECharts, SetOptionOpts } from 'echarts'\nimport type { Ref } from 'vue'\nimport type { EChartData, EChartsOption, IFormatPublicData } from './types'\nimport { useElementSize, useMouseInElement, watchDebounced } from '@vueuse/core'\nimport * as echarts from 'echarts'\nimport { nextTick, onMounted, onUnmounted } from 'vue'\n\n// 使用别名路径导入 SVG\nimport emptyImg from '../components/empty.svg'\n\n// 全局 IntersectionObserver 管理器\nclass IntersectionObserverManager {\n private observer: IntersectionObserver | null = null\n private callbacks = new Map<Element, () => void>()\n\n private createObserver() {\n if (typeof IntersectionObserver === 'undefined') {\n return null\n }\n\n return new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n const callback = this.callbacks.get(entry.target)\n if (callback) {\n callback()\n // 执行回调后移除监听,避免重复初始化\n this.unobserve(entry.target)\n }\n }\n }\n },\n {\n threshold: 0,\n rootMargin: '200px',\n },\n )\n }\n\n observe(element: Element, callback: () => void) {\n if (!this.observer) {\n this.observer = this.createObserver()\n }\n\n if (this.observer) {\n this.callbacks.set(element, callback)\n this.observer.observe(element)\n }\n }\n\n unobserve(element: Element) {\n if (this.observer) {\n this.observer.unobserve(element)\n this.callbacks.delete(element)\n }\n }\n\n disconnect() {\n if (this.observer) {\n this.observer.disconnect()\n this.callbacks.clear()\n this.observer = null\n }\n }\n}\n\n// 全局单例实例\nconst globalIntersectionObserver = new IntersectionObserverManager()\n\nexport function useCharts({ chartDOM, chartData, chartOptions, initBefore, initAfter, lazyLoad = true }: {\n chartDOM: Ref<HTMLElement | null>\n chartData: Ref<IFormatPublicData>\n chartOptions: Ref<EChartsOption>\n initBefore?: () => Promise<void>\n initAfter?: (e: ECharts | null) => void\n lazyLoad?: boolean\n}) {\n // 每个组件实例的独立状态\n let myChart: ECharts | null = null\n let isEmpty = false\n let resizeObserver: ResizeObserver | null = null\n let watchStopHandles: Array<() => void> = [] // 存储 watch 停止函数\n\n // 获取设备像素比\n const dpr = window.devicePixelRatio || 1\n\n function disposeChart() {\n if (myChart) {\n try {\n if (!myChart.isDisposed()) {\n myChart.dispose()\n }\n }\n catch (error) {\n console.warn('Error disposing chart:', error)\n }\n myChart = null\n }\n }\n\n function initChart() {\n if (!(myChart && !myChart.isDisposed())) {\n // 检查 DOM 元素是否存在\n if (!chartDOM.value) {\n console.warn('[ECharts] DOM element not found')\n return null\n }\n\n // 检查容器尺寸\n const { clientWidth, clientHeight } = chartDOM.value\n if (clientWidth === 0 || clientHeight === 0) {\n // 如果容器没有尺寸,返回 null 而不是强制初始化\n console.warn('[ECharts] Container has zero size. Width:', clientWidth, 'Height:', clientHeight, '. Skipping initialization.')\n return null\n }\n\n // 创建 ECharts 实例\n myChart = echarts.init(chartDOM.value, null, {\n devicePixelRatio: dpr,\n renderer: 'svg',\n })\n }\n return myChart\n }\n\n // 清理所有观察器\n function cleanupObservers() {\n // 从全局观察器中移除当前元素\n if (chartDOM.value) {\n globalIntersectionObserver.unobserve(chartDOM.value)\n }\n }\n\n // 初始化 watchDebounced 监听器\n function setupWatchers() {\n if (watchStopHandles.length > 0) {\n return // 已经设置过了,避免重复设置\n }\n\n // 鼠标悬停监听\n const { isOutside: mouseInChart } = useMouseInElement(chartDOM)\n const stopMouseWatch = watchDebounced(mouseInChart, (newVal) => {\n if (typeof newVal !== 'boolean' || (!myChart || myChart.isDisposed())) {\n return\n }\n toggleToolbox(!newVal)\n }, { debounce: 200 })\n\n // 图表选项监听\n const stopOptionsWatch = watchDebounced(\n () => chartOptions.value,\n async () => {\n await renderChart(chartOptions.value)\n },\n { debounce: 500, deep: true, immediate: true },\n )\n\n watchStopHandles.push(stopMouseWatch, stopOptionsWatch)\n }\n\n // 开始初始化流程\n async function startInitialization() {\n // 等待 DOM 渲染完成\n await nextTick()\n\n // 检查容器是否已经有尺寸\n const { clientWidth, clientHeight } = chartDOM.value || { clientWidth: 0, clientHeight: 0 }\n if (clientWidth > 0 && clientHeight > 0) {\n // 直接初始化\n const chart = initChart()\n if (chart) {\n if (initAfter) {\n initAfter(myChart)\n }\n if (myChart && !myChart.isDisposed()) {\n useResize(myChart, chartDOM)\n }\n // 图表初始化成功后,设置监听器\n setupWatchers()\n }\n // 初始化成功后清理观察器\n cleanupObservers()\n }\n else {\n // 如果没有尺寸,使用 ResizeObserver 等待\n setupResizeObserver()\n }\n }\n\n // 使用全局 IntersectionObserver 监听元素是否进入可视区域\n function setupIntersectionObserver() {\n if (!chartDOM.value) {\n return\n }\n\n // 使用全局观察器,避免重复创建\n globalIntersectionObserver.observe(chartDOM.value, () => {\n startInitialization()\n })\n }\n\n // 使用 ResizeObserver 监听容器尺寸变化\n function setupResizeObserver() {\n if (!chartDOM.value || typeof ResizeObserver === 'undefined') {\n return\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect\n if (width > 0 && height > 0) {\n // 容器有尺寸了,可以安全初始化\n const chart = initChart()\n if (chart) {\n if (initAfter) {\n initAfter(myChart)\n }\n // 设置 resize 监听\n if (myChart && !myChart.isDisposed()) {\n useResize(myChart, chartDOM)\n }\n // 图表初始化成功后,设置监听器\n setupWatchers()\n }\n // 初始化后停止观察并清理其他观察器\n resizeObserver?.disconnect()\n resizeObserver = null\n cleanupObservers()\n break\n }\n }\n })\n\n resizeObserver.observe(chartDOM.value)\n }\n\n // 安全的初始化函数\n async function safeInitChart() {\n if (!chartDOM.value) {\n return myChart\n }\n\n // 等待 DOM 渲染完成\n await nextTick()\n\n // 如果启用了懒加载\n if (lazyLoad) {\n // 直接设置 IntersectionObserver,让它检测元素是否进入可视区域\n setupIntersectionObserver()\n return myChart\n }\n\n // 非懒加载模式,直接开始初始化流程\n await startInitialization()\n\n return myChart\n }\n\n async function renderChart(...opt: [EChartsOption, SetOptionOpts?]) {\n try {\n // 确保图表已初始化\n if (!myChart || myChart.isDisposed()) {\n await safeInitChart()\n }\n\n myChart?.showLoading()\n if (chartData.value?.data?.length) {\n if (isEmpty === true) {\n if (!opt[1]) {\n opt[1] = {}\n }\n opt[1].notMerge = true\n }\n isEmpty = false\n }\n else {\n // 数据为空时保持原有配置\n opt = await setEmpty()\n }\n myChart?.setOption(...opt)\n }\n catch (error) {\n console.log(`🚀 ~ renderChart ~ error:`, error)\n if (myChart && !myChart.isDisposed()) {\n disposeChart()\n }\n // 如果实例已被销毁,重新创建\n initChart()\n opt = await setEmpty('配置项错误')\n myChart?.setOption(...opt)\n }\n finally {\n myChart?.hideLoading()\n }\n }\n\n function setEmpty(subtext = '暂无数据'): Promise<[EChartsOption, SetOptionOpts]> {\n return new Promise((resolve) => {\n const img = new Image()\n img.src = emptyImg\n\n img.onload = () => {\n const aspectRatio = img.width / img.height\n\n const obj: EChartsOption = {\n title: [{\n text: chartData.value?.modelName,\n ...chartOptions.value.title,\n }, {\n subtext,\n top: 'center',\n left: 'center',\n text: '{a|}',\n itemGap: -20,\n subtextStyle: {\n fontSize: 14,\n },\n textStyle: {\n align: 'center',\n rich: {\n a: {\n height: 100 / aspectRatio,\n width: 100,\n backgroundColor: {\n image: emptyImg,\n },\n },\n },\n },\n }],\n }\n isEmpty = true\n resolve([obj, {\n notMerge: true,\n replaceMerge: ['xAxis', 'yAxis', 'series'],\n lazyUpdate: false,\n }])\n }\n })\n }\n\n function toggleToolbox(show: boolean) {\n // 修改条件判断,移除 isDisposed 检查\n if (myChart && !myChart.isDisposed()) {\n try {\n myChart.setOption({\n toolbox: {\n show,\n },\n })\n }\n catch (error) {\n console.warn('Error toggling toolbox:', error)\n }\n }\n }\n\n // 移除这里的 watchDebounced 调用,改为在图表初始化后调用\n\n onMounted(async () => {\n if (initBefore) {\n await initBefore()\n }\n\n // 等待 DOM 渲染完成\n await nextTick()\n\n // 使用安全的初始化函数\n await safeInitChart()\n\n // 如果图表已经初始化(容器有尺寸),调用 initAfter 和设置 resize\n if (myChart && !myChart.isDisposed()) {\n if (initAfter) {\n initAfter(myChart)\n }\n useResize(myChart, chartDOM)\n // 图表初始化成功后,设置监听器\n setupWatchers()\n }\n })\n\n onUnmounted(() => {\n // 停止所有 watch 监听器\n watchStopHandles.forEach(stop => stop())\n watchStopHandles = []\n\n // 清理 ResizeObserver\n if (resizeObserver) {\n resizeObserver.disconnect()\n resizeObserver = null\n }\n\n // 清理全局 IntersectionObserver 中的当前元素\n cleanupObservers()\n\n if (myChart && !myChart.isDisposed()) {\n try {\n // 清理所有事件监听器\n myChart.getZr()?.off('mousemove')\n myChart.getZr()?.off('mouseout')\n myChart.getZr()?.off('click')\n myChart.off('click')\n disposeChart()\n }\n catch (error) {\n console.warn('Error during chart cleanup:', error)\n }\n }\n })\n\n return {\n myChart: () => myChart,\n }\n}\n\nexport function useResize(myChart: ECharts, chartDOM: Ref<HTMLElement | null>) {\n const { width, height } = useElementSize(chartDOM)\n watchDebounced([width, height], () => {\n if (myChart && !myChart.isDisposed()) {\n try {\n myChart.resize()\n }\n catch (error) {\n console.warn('Error during chart resize:', error)\n }\n }\n })\n}\n\nexport function useDataToExcelJson(dataSource: EChartData) {\n const { desc: { colDesc = [], groupByDesc = [] } = {}, data = [] } = dataSource\n const header = [...groupByDesc.map(item => item.colDesc), ...colDesc].filter(v => v) as string[]\n const json = data.map((item) => {\n return header.map((headerItem) => {\n return item[headerItem as keyof typeof item] || ''\n })\n })\n return [header, ...json]\n}\n"],"names":["globalIntersectionObserver","constructor","__publicField","this","Map","createObserver","IntersectionObserver","entries","entry","isIntersecting","callback","callbacks","get","target","unobserve","threshold","rootMargin","observe","element","observer","set","delete","disconnect","clear","useCharts","_ref","chartDOM","chartData","chartOptions","initBefore","initAfter","lazyLoad","myChart","isEmpty","resizeObserver","watchStopHandles","dpr","window","devicePixelRatio","disposeChart","isDisposed","dispose","error","console","warn","initChart","value","clientWidth","clientHeight","echarts","init","renderer","cleanupObservers","setupWatchers","length","isOutside","mouseInChart","useMouseInElement","stopMouseWatch","watchDebounced","newVal","show","setOption","toolbox","toggleToolbox","debounce","stopOptionsWatch","async","_len","arguments","opt","Array","_key","safeInitChart","showLoading","data","notMerge","setEmpty","log","hideLoading","renderChart","deep","immediate","push","startInitialization","nextTick","useResize","ResizeObserver","width","height","contentRect","setupResizeObserver","subtext","Promise","resolve","img","Image","src","emptyImg","onload","aspectRatio","obj","title","text","modelName","top","left","itemGap","subtextStyle","fontSize","textStyle","align","rich","a","backgroundColor","image","replaceMerge","lazyUpdate","onMounted","onUnmounted","forEach","stop","getZr","off","useElementSize","resize","useDataToExcelJson","dataSource","desc","colDesc","groupByDesc","header","map","item","filter","v","json","headerItem"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{defineComponent as e,computed as a,createBlock as l,openBlock as t,unref as i,normalizeClass as s,withCtx as r,createElementVNode as o,createVNode as u,createTextVNode as n,createElementBlock as d,createCommentVNode as p}from"vue";import{UploadFilled as c}from"@element-plus/icons-vue";import{useNamespace as m}from"@qxs-bns/hooks";import{useNamespace as f,ElUpload as y,ElIcon as v,ElAlert as q,ElMessage as x}from"element-plus";const $={class:"slot"},_={style:{display:"inline-block"}};var b=e({name:"QxsFileUpload",__name:"file-upload",props:{action:{type:String,required:!0},headers:{type:null,required:!1},data:{type:null,required:!1},name:{type:String,required:!1,default:"file"},size:{type:Number,required:!1,default:20},max:{type:Number,required:!1,default:3},accept:{type:String,required:!1,default:"zip,rar"},files:{type:Array,required:!1,default:()=>[]},notip:{type:Boolean,required:!1,default:!1},ext:{type:Array,required:!1}},emits:["onSuccess"],setup(e,{emit:b}){const h=b,z=m("file-upload"),g=f("file-upload"),S=a(()=>e.accept.split(",")),k=a=>{const l=a.name.split(".").at(-1)??"",t=S.value.includes(l),i=a.size/1024/1024<e.size;return t||x.error(`上传文件只支持 ${S.value.join(" / ")} 格式!`),i||x.error(`上传文件大小不能超过 ${e.size}MB!`),t&&i},B=()=>{x.warning("文件上传超过限制")},N=(e,a,l)=>{h("onSuccess",e,a,l)};return(e,a)=>(t(),l(i(y),{headers:e.headers,action:e.action,data:e.data,name:e.name,"before-upload":k,"on-exceed":B,"on-success":N,"file-list":e.files,limit:e.max,drag:"",class:s(i(z).e("control"))},{tip:r(()=>[e.notip?p("v-if",!0):(t(),d("div",{key:0,class:s(`${i(g).namespace.value}-upload__tip`)},[o("div",_,[u(i(q),{title:`上传文件支持 ${S.value.join(" / ")} 格式,单个文件大小不超过 ${e.size}MB,且文件数量不超过 ${e.max} 个`,type:"info","show-icon":"",closable:!1},null,8,["title"])])],2))]),default:r(()=>[o("div",$,[u(i(v),{class:s(`${i(g).namespace.value}-icon--upload`)},{default:r(()=>[u(i(c))]),_:1},8,["class"]),o("div",{class:s(`${i(g).namespace.value}-upload__text`)},a[0]||(a[0]=[n(" 将文件拖到此处,或",-1),o("em",null,"点击上传",-1)]),2)])]),_:1},8,["headers","action","data","name","file-list","limit","class"]))}});export{b as default};
|
|
2
|
-
//# sourceMappingURL=file-upload.vue.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.vue.mjs","sources":["../../../../../../packages/components/src/file-upload/src/file-upload.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { UploadProps, UploadUserFile } from 'element-plus'\nimport { UploadFilled } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElAlert, ElIcon, ElMessage, ElUpload, useNamespace as useElNamespace } from 'element-plus'\nimport { computed } from 'vue'\n\ndefineOptions({\n name: 'QxsFileUpload',\n})\n\nconst {\n name = 'file',\n size = 20,\n max = 3,\n files = [],\n notip = false,\n accept = 'zip,rar',\n} = defineProps<{\n action: UploadProps['action']\n headers?: UploadProps['headers']\n data?: UploadProps['data']\n name?: UploadProps['name']\n size?: number\n max?: number\n accept?: string\n files?: UploadUserFile[]\n notip?: boolean\n ext?: string[]\n}>()\n\nconst emit = defineEmits(['onSuccess'])\n\nconst ns = useNamespace('file-upload')\nconst nsEl = useElNamespace('file-upload')\n\nconst exts = computed(() => {\n return accept.split(',')\n})\nconst beforeUpload: UploadProps['beforeUpload'] = (file) => {\n const fileName = file.name.split('.')\n const fileExt = fileName.at(-1) ?? ''\n const isTypeOk = exts.value.includes(fileExt)\n const isSizeOk = file.size / 1024 / 1024 < size\n if (!isTypeOk) {\n ElMessage.error(`上传文件只支持 ${exts.value.join(' / ')} 格式!`)\n }\n if (!isSizeOk) {\n ElMessage.error(`上传文件大小不能超过 ${size}MB!`)\n }\n return isTypeOk && isSizeOk\n}\n\nconst onExceed: UploadProps['onExceed'] = () => {\n ElMessage.warning('文件上传超过限制')\n}\n\nconst onSuccess: UploadProps['onSuccess'] = (res, file, fileList) => {\n emit('onSuccess', res, file, fileList)\n}\n</script>\n\n<template>\n <ElUpload\n :headers=\"headers\"\n :action=\"action\"\n :data=\"data\"\n :name=\"name\"\n :before-upload=\"beforeUpload\"\n :on-exceed=\"onExceed\"\n :on-success=\"onSuccess\"\n :file-list=\"files\"\n :limit=\"max\"\n drag\n :class=\"ns.e('control')\"\n >\n <div class=\"slot\">\n <ElIcon :class=\"`${nsEl.namespace.value}-icon--upload`\">\n <UploadFilled />\n </ElIcon>\n <div :class=\"`${nsEl.namespace.value}-upload__text`\">\n 将文件拖到此处,或<em>点击上传</em>\n </div>\n </div>\n <template #tip>\n <div\n v-if=\"!notip\"\n :class=\"`${nsEl.namespace.value}-upload__tip`\"\n >\n <div style=\"display: inline-block;\">\n <ElAlert\n :title=\"`上传文件支持 ${exts.join(\n ' / ',\n )} 格式,单个文件大小不超过 ${size}MB,且文件数量不超过 ${max} 个`\"\n type=\"info\"\n show-icon\n :closable=\"false\"\n />\n </div>\n </div>\n </template>\n </ElUpload>\n</template>\n"],"names":["emit","__emit","ns","useNamespace","nsEl","useElNamespace","exts","computed","__props","accept","split","beforeUpload","file","fileExt","name","at","isTypeOk","value","includes","isSizeOk","size","ElMessage","error","join","onExceed","warning","onSuccess","res","fileList","_createBlock","_unref","ElUpload","headers","action","data","files","limit","max","drag","class","_normalizeClass","e","tip","notip","_createElementBlock","namespace","_createElementVNode","_hoisted_2","_createVNode","ElAlert","title","type","closable","_hoisted_1","ElIcon","UploadFilled"],"mappings":"w9BA+BA,MAAMA,EAAOC,EAEPC,EAAKC,EAAa,eAClBC,EAAOC,EAAe,eAEtBC,EAAOC,EAAS,IACbC,EAAAC,OAAOC,MAAM,MAEhBC,EAA6CC,IACjD,MACMC,EADWD,EAAKE,KAAKJ,MAAM,KACRK,IAAG,IAAO,GAC7BC,EAAWV,EAAKW,MAAMC,SAASL,GAC/BM,EAAWP,EAAKQ,KAAO,KAAO,KAAOZ,EAAAY,KAO3C,OANKJ,GACHK,EAAUC,MAAM,WAAWhB,EAAKW,MAAMM,KAAK,cAExCJ,GACHE,EAAUC,MAAM,cAAcd,EAAAY,WAEzBJ,GAAYG,GAGfK,EAAoC,KACxCH,EAAUI,QAAQ,aAGdC,EAAsC,CAACC,EAAKf,EAAMgB,KACtD5B,EAAK,YAAa2B,EAAKf,EAAMgB,sBAK7BC,EAsCWC,EAAAC,GAAA,CArCRC,QAASA,EAAAA,QACTC,OAAQA,EAAAA,OACRC,KAAMA,EAAAA,KACNpB,KAAMA,EAAAA,KACN,gBAAeH,EACf,YAAWa,EACX,aAAYE,EACZ,YAAWS,EAAAA,MACXC,MAAOC,EAAAA,IACRC,KAAA,GACCC,MAAKC,EAAEV,EAAA5B,GAAGuC,EAAC,cAUDC,MACT,IAcM,CAbGC,EAAAA,wBADTC,EAcM,MAAA,OAZHL,MAAKC,EAAA,GAAKV,EAAA1B,GAAKyC,UAAU5B,uBAE1B6B,EASM,MATNC,EASM,CARJC,EAOElB,EAAAmB,GAAA,CANCC,MAAK,UAAY5C,EAAAW,MAAKM,4BAAyDH,EAAAA,mBAAmBiB,EAAAA,QAGnGc,KAAK,OACL,YAAA,GACCC,UAAU,wCApBnB,IAOM,CAPNN,EAOM,MAPNO,EAOM,CANJL,EAESlB,EAAAwB,GAAA,CAFAf,MAAKC,EAAA,GAAKV,EAAA1B,GAAKyC,UAAU5B,kCAChC,IAAgB,CAAhB+B,EAAgBlB,EAAAyB,wBAElBT,EAEM,MAAA,CAFAP,MAAKC,EAAA,GAAKV,EAAA1B,GAAKyC,UAAU5B,sCAAsB,cAC1C,GAAA6B,EAAa,UAAT,QAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/fixed-action-bar/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/fixed-action-bar.vue'\n\nconst QxsFixedActionBar = withInstall(component)\n\nexport {\n QxsFixedActionBar,\n}\n\nexport default QxsFixedActionBar\n"],"names":["QxsFixedActionBar","withInstall","component"],"mappings":"+FAGA,MAAMA,EAAoBC,EAAYC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{defineComponent as e,ref as t,computed as a,onMounted as n,onUnmounted as i,createElementBlock as o,openBlock as r,normalizeStyle as l,createElementVNode as s,normalizeClass as d,unref as c,renderSlot as u}from"vue";import{useNamespace as p}from"@qxs-bns/hooks";import{getDeviceType as h}from"@qxs-bns/utils";import{debounce as m}from"lodash-es";var v=e({name:"QxsFixedActionBar",props:{padding:{type:Number,default:8},className:{type:String,default:""}},setup(e){const v=e,f=p("fixed-action-bar"),g=t(!1),b=t(null),x=t(null),w=t({width:0,height:0}),y=t(0),N=t(0),F={resize:null,parent:null};function R(e,t,a){const n=new ResizeObserver(e=>{e.forEach(e=>requestAnimationFrame(()=>t(e)))});return n.observe(e,a),n}function $(){if(!b.value||!x.value)return;F.resize=R(b.value,e=>{const t=function(e){const t=getComputedStyle(e);return{x:Number.parseFloat(t.paddingLeft)+Number.parseFloat(t.paddingRight),y:Number.parseFloat(t.paddingTop)+Number.parseFloat(t.paddingBottom)}}(e.target);w.value={width:e.contentRect.width+t.x,height:e.contentRect.height+t.y}},{box:"border-box"});const e=x.value.parentElement;e&&(F.parent=R(e,()=>{const t=e.getBoundingClientRect();y.value=t.width,N.value=t.left}))}const E=m(()=>{const{scrollY:e}=window,{clientHeight:t,scrollHeight:a}=document.documentElement;g.value=Math.ceil(e+t)>=a},100),k=a(()=>g.value?"":f.is("shadow")),z=a(()=>"Android"===h()?Math.max(v.padding,20):v.padding),B=a(()=>({width:`${y.value}px`,left:`${N.value}px`,...f.cssVarBlock({"actionbar-padding":`${v.padding}px`,"actionbar-padding-bottom":`${z.value}px`})}));return n(()=>{$(),window.addEventListener("scroll",E,{passive:!0})}),i(()=>{F.resize?.disconnect(),F.parent?.disconnect(),window.removeEventListener("scroll",E)}),(t,a)=>(r(),o("div",{ref_key:"placeholderRef",ref:x,style:l({width:"100%",height:`${w.value.height}px`})},[s("div",{ref_key:"actionbar",ref:b,style:l(B.value),class:d([c(f).e("actionbar"),k.value,e.className]),"data-fixed-calc-width":""},[u(t.$slots,"default")],6)],4))}});export{v as default};
|
|
2
|
-
//# sourceMappingURL=fixed-action-bar.vue.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fixed-action-bar.vue.mjs","sources":["../../../../../../packages/components/src/fixed-action-bar/src/fixed-action-bar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { getDeviceType } from '@qxs-bns/utils'\nimport { debounce } from 'lodash-es'\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\n\nconst props = defineProps({\n padding: {\n type: Number,\n default: 8,\n },\n className: {\n type: String,\n default: '',\n },\n})\n\ninterface ElementSize { width: number, height: number }\n\nconst ns = useNamespace('fixed-action-bar')\nconst isBottom = ref(false)\nconst actionbar = ref<HTMLElement | null>(null)\nconst placeholderRef = ref<HTMLElement | null>(null)\n\nconst elementSize = ref<ElementSize>({ width: 0, height: 0 })\nconst parentWidth = ref(0)\nconst elementLeft = ref(0)\n\nconst observers = {\n resize: null as ResizeObserver | null,\n parent: null as ResizeObserver | null,\n}\n\nfunction getTotalPadding(el: HTMLElement) {\n const style = getComputedStyle(el)\n return {\n x: Number.parseFloat(style.paddingLeft) + Number.parseFloat(style.paddingRight),\n y: Number.parseFloat(style.paddingTop) + Number.parseFloat(style.paddingBottom),\n }\n}\n\nfunction createResizeObserver(el: HTMLElement,\n callback: (entry: ResizeObserverEntry) => void,\n options?: ResizeObserverOptions) {\n const observer = new ResizeObserver((entries) => {\n entries.forEach(entry => requestAnimationFrame(() => callback(entry)))\n })\n observer.observe(el, options)\n return observer\n}\n\nfunction initObservers() {\n if (!actionbar.value || !placeholderRef.value) {\n return\n }\n\n // 主元素尺寸观察\n observers.resize = createResizeObserver(\n actionbar.value,\n (entry) => {\n const padding = getTotalPadding(entry.target as HTMLElement)\n elementSize.value = {\n width: entry.contentRect.width + padding.x,\n height: entry.contentRect.height + padding.y,\n }\n },\n { box: 'border-box' },\n )\n\n // 父元素观察\n const parent = placeholderRef.value.parentElement\n if (parent) {\n observers.parent = createResizeObserver(parent, () => {\n const rect = parent.getBoundingClientRect()\n parentWidth.value = rect.width\n elementLeft.value = rect.left\n })\n }\n}\n\nconst calculateScrollDetails = debounce(() => {\n const { scrollY } = window\n const { clientHeight, scrollHeight } = document.documentElement\n isBottom.value = Math.ceil(scrollY + clientHeight) >= scrollHeight\n}, 100)\n\nconst shadowClass = computed(() => (!isBottom.value ? ns.is('shadow') : ''))\n\nconst paddingBottom = computed(() =>\n getDeviceType() === 'Android' ? Math.max(props.padding, 20) : props.padding,\n)\n\nconst actionbarStyle = computed(() => ({\n width: `${parentWidth.value}px`,\n left: `${elementLeft.value}px`,\n ...ns.cssVarBlock({\n 'actionbar-padding': `${props.padding}px`,\n 'actionbar-padding-bottom': `${paddingBottom.value}px`,\n }),\n}))\n\nonMounted(() => {\n initObservers()\n window.addEventListener('scroll', calculateScrollDetails, { passive: true })\n})\n\nonUnmounted(() => {\n observers.resize?.disconnect()\n observers.parent?.disconnect()\n window.removeEventListener('scroll', calculateScrollDetails)\n})\n</script>\n\n<script lang=\"ts\">\nexport default {\n name: 'QxsFixedActionBar',\n}\n</script>\n\n<template>\n <div\n ref=\"placeholderRef\"\n :style=\"{ width: '100%', height: `${elementSize.height}px` }\"\n >\n <div\n ref=\"actionbar\"\n :style=\"actionbarStyle\"\n :class=\"[ns.e('actionbar'), shadowClass, className]\"\n data-fixed-calc-width\n >\n <slot />\n </div>\n </div>\n</template>\n"],"names":["name","props","__props","ns","useNamespace","isBottom","ref","actionbar","placeholderRef","elementSize","width","height","parentWidth","elementLeft","observers","resize","parent","createResizeObserver","el","callback","options","observer","ResizeObserver","entries","forEach","entry","requestAnimationFrame","observe","initObservers","value","padding","style","getComputedStyle","x","Number","parseFloat","paddingLeft","paddingRight","y","paddingTop","paddingBottom","getTotalPadding","target","contentRect","box","parentElement","rect","getBoundingClientRect","left","calculateScrollDetails","debounce","scrollY","window","clientHeight","scrollHeight","document","documentElement","Math","ceil","shadowClass","computed","is","getDeviceType","max","actionbarStyle","cssVarBlock","onMounted","addEventListener","passive","onUnmounted","disconnect","removeEventListener","_createElementBlock","_normalizeStyle","_createElementVNode","class","_unref","e","className","_renderSlot","_ctx","$slots"],"mappings":"0WAmHEA,KAAM,wGA7GR,MAAMC,EAAQC,EAaRC,EAAKC,EAAa,oBAClBC,EAAWC,GAAI,GACfC,EAAYD,EAAwB,MACpCE,EAAiBF,EAAwB,MAEzCG,EAAcH,EAAiB,CAAEI,MAAO,EAAGC,OAAQ,IACnDC,EAAcN,EAAI,GAClBO,EAAcP,EAAI,GAElBQ,EAAY,CAChBC,OAAQ,KACRC,OAAQ,MAWV,SAASC,EAAqBC,EAC5BC,EACAC,GACA,MAAMC,EAAW,IAAIC,eAAgBC,IACnCA,EAAQC,QAAQC,GAASC,sBAAsB,IAAMP,EAASM,OAGhE,OADAJ,EAASM,QAAQT,EAAIE,GACdC,CACT,CAEA,SAASO,IACP,IAAKrB,EAAUsB,QAAUrB,EAAeqB,MACtC,OAIFf,EAAUC,OAASE,EACjBV,EAAUsB,MACTJ,IACC,MAAMK,EA3BZ,SAAyBZ,GACvB,MAAMa,EAAQC,iBAAiBd,GAC/B,MAAO,CACLe,EAAGC,OAAOC,WAAWJ,EAAMK,aAAeF,OAAOC,WAAWJ,EAAMM,cAClEC,EAAGJ,OAAOC,WAAWJ,EAAMQ,YAAcL,OAAOC,WAAWJ,EAAMS,eAErE,CAqBsBC,CAAgBhB,EAAMiB,QACtCjC,EAAYoB,MAAQ,CAClBnB,MAAOe,EAAMkB,YAAYjC,MAAQoB,EAAQG,EACzCtB,OAAQc,EAAMkB,YAAYhC,OAASmB,EAAQQ,IAG/C,CAAEM,IAAK,eAIT,MAAM5B,EAASR,EAAeqB,MAAMgB,cAChC7B,IACFF,EAAUE,OAASC,EAAqBD,EAAQ,KAC9C,MAAM8B,EAAO9B,EAAO+B,wBACpBnC,EAAYiB,MAAQiB,EAAKpC,MACzBG,EAAYgB,MAAQiB,EAAKE,OAG/B,CAEA,MAAMC,EAAyBC,EAAS,KACtC,MAAMC,QAAEA,GAAYC,QACdC,aAAEA,EAAAC,aAAcA,GAAiBC,SAASC,gBAChDnD,EAASwB,MAAQ4B,KAAKC,KAAKP,EAAUE,IAAiBC,GACrD,KAEGK,EAAcC,EAAS,IAAQvD,EAASwB,MAA0B,GAAlB1B,EAAG0D,GAAG,WAEtDrB,EAAgBoB,EAAS,IACT,YAApBE,IAAgCL,KAAKM,IAAI9D,EAAM6B,QAAS,IAAM7B,EAAM6B,SAGhEkC,EAAiBJ,EAAS,KAAA,CAC9BlD,MAAO,GAAGE,EAAYiB,UACtBmB,KAAM,GAAGnC,EAAYgB,aAClB1B,EAAG8D,YAAY,CAChB,oBAAqB,GAAGhE,EAAM6B,YAC9B,2BAA4B,GAAGU,EAAcX,sBAIjDqC,EAAU,KACRtC,IACAwB,OAAOe,iBAAiB,SAAUlB,EAAwB,CAAEmB,SAAS,MAGvEC,EAAY,KACVvD,EAAUC,QAAQuD,aAClBxD,EAAUE,QAAQsD,aAClBlB,OAAOmB,oBAAoB,SAAUtB,iBAWrCuB,EAYM,MAAA,SAXA,iBAAJlE,IAAIE,EACHuB,MAAK0C,EAAA,CAAA/D,MAAA,OAAAC,OAAA,GAA8BF,EAAAoB,MAAYlB,eAEhD+D,EAOM,MAAA,SANA,YAAJpE,IAAIC,EACHwB,QAAOiC,EAAAnC,OACP8C,SAAQC,EAAAzE,GAAG0E,EAAC,aAAelB,EAAA9B,MAAa3B,EAAA4E,YACzC,wBAAA,KAEAC,EAAQC,EAAAC,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fixed-action-bar.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{defineComponent as e,mergeModels as a,useAttrs as l,useModel as t,ref as i,computed as u,onUnmounted as s,resolveComponent as r,createElementBlock as o,openBlock as n,normalizeStyle as p,normalizeClass as d,unref as c,createVNode as v,createBlock as m,createCommentVNode as f,mergeProps as g,withCtx as h,renderSlot as b,createElementVNode as y,toDisplayString as _}from"vue";import{UploadImage as $,ZoomIn as L,Delete as k}from"@qxs-bns/icons";import{useNamespace as x,ElUpload as U,ElImageViewer as w,ElMessage as q}from"element-plus";const R={class:"image-slot"},j={style:{position:"relative",width:"100%",height:"100%"}},z=["src","alt"],O={key:2,class:"upload-progress"},C={key:3,class:"upload-debug"},B=["onClick"],M=["onClick"],S={class:"tip-content"};var N=e({name:"QxsImageUpload",__name:"image-upload",props:a({action:{type:String,required:!0},headers:{type:null,required:!1},data:{type:null,required:!1},name:{type:String,required:!1,default:"file"},size:{type:Number,required:!1,default:20},width:{type:Number,required:!1,default:160},height:{type:Number,required:!1,default:90},accept:{type:String,required:!1,default:"image/jpeg,image/jpg,image/png,image/gif"},placeholder:{type:String,required:!1,default:"上传图片"},notip:{type:Boolean,required:!1,default:!1},tipText:{type:String,required:!1,default:""},beforeUpload:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},limit:{type:Number,required:!1,default:1}},{fileList:{type:Array,default:()=>[]},fileListModifiers:{}}),emits:a(["success","remove"],["update:fileList"]),setup(e,{emit:a}){const N=a,I=l(),T=t(e,"fileList"),Q=x("image-upload"),W=i(!1),A=i(0),E=i(""),V=i(0),D=i(!1),F=u(()=>Q.cssVarBlock({ns:Q.namespace.value,width:`${e.width}px`,height:`${e.height}px`})),G=u(()=>e.accept.split(",").map(e=>e.split("/").pop())),H=u(()=>{if(e.tipText)return e.tipText;return`支持 ${G.value.join(" / ")} 格式,大小不超过 ${e.size}MB`+(e.width&&e.height?`,建议尺寸 ${e.width}×${e.height}`:"")});function J(e){if(!e.url)return void console.warn("文件缺少 URL,无法预览:",e);let a=T.value.indexOf(e);-1===a&&(a=T.value.findIndex(a=>a.url===e.url)),A.value=Math.max(0,a),W.value=!0}function K(a){if(e.disabled)return;"uploading"===a.status&&D.value&&(D.value=!1,V.value=0,E.value&&(URL.revokeObjectURL(E.value),E.value="")),a.url?.startsWith("blob:")&&URL.revokeObjectURL(a.url);const l=T.value.indexOf(a);l>-1&&T.value.splice(l,1),N("remove",a)}function P(){W.value=!1}const X=a=>{if(!a?.name)return q.error("文件信息无效,请重新选择文件"),!1;const l=a.name.split(".").pop()?.toLowerCase()??"";if(!G.value.some(e=>e?.toLowerCase()===l))return q.error(`仅支持上传 ${G.value.join(" / ")} 格式的图片`),!1;if(a.size/1024/1024>e.size)return q.error(`图片大小不能超过 ${e.size}MB`),!1;try{E.value=URL.createObjectURL(a)}catch(e){console.warn("创建预览失败:",e)}return D.value=!0,V.value=0,!e.beforeUpload||e.beforeUpload(a)},Y=e=>{V.value=Math.floor(e.percent)},Z=(e,a,l)=>{const t=T.value.some(e=>e.uid===a.uid||e.name===a.name&&e.size===a.size);E.value&&(URL.revokeObjectURL(E.value),E.value=""),D.value=!1,V.value=0,t&&N("success",e,a,l)},ee=(e,a,l)=>{const t=T.value.some(e=>e.uid===a.uid||e.name===a.name&&e.size===a.size);E.value&&(URL.revokeObjectURL(E.value),E.value=""),D.value=!1,V.value=0,t&&q.error(`图片上传失败:${e.message||"网络异常,请重试"}`)};return s(()=>{E.value&&URL.revokeObjectURL(E.value),T.value.forEach(e=>{e.url?.startsWith("blob:")&&URL.revokeObjectURL(e.url)})}),(e,a)=>{const l=r("QxsIcon");return n(),o("div",{class:d(c(Q).e("container")),style:p(F.value)},[v(c(U),g(c(I),{"file-list":T.value,"onUpdate:fileList":a[0]||(a[0]=e=>T.value=e),drag:"",limit:e.limit,"list-type":"picture-card",headers:e.headers,action:e.action,data:e.data,name:e.name,accept:e.accept,"before-upload":X,"on-progress":Y,"on-preview":J,"on-success":Z,"on-error":ee,class:[c(Q).e("control"),e.limit<=T.value.length?c(Q).e("more-than-limit"):""],"on-remove":K}),{file:h(({file:a})=>{return[y("div",j,[a.url?(n(),o("img",{key:0,class:d(`${c(Q).namespace.value}-upload-list__item-thumbnail`),src:a.url,alt:a.name||"图片"},null,10,z)):(n(),o("div",{key:1,class:d(`${c(Q).namespace.value}-upload-list__item-thumbnail`),style:{display:"flex","align-items":"center","justify-content":"center",color:"#909399",background:"#f5f7fa"}}," 无图片 ",2)),f(" 上传进度条 "),D.value?(n(),o("div",O,[y("div",{class:"upload-progress-bar",style:p({width:`${V.value}%`})},null,4)])):f("v-if",!0),f(" 调试信息 "),D.value?(n(),o("div",C,_(V.value)+"% - "+_((l=a.status,{ready:"准备中",uploading:"上传中",success:"上传成功",fail:"上传失败",error:"上传错误"}[l||""]||l||"未知状态")),1)):f("v-if",!0)]),y("span",{class:d(`${c(Q).namespace.value}-upload-list__item-actions`)},[a.url?(n(),o("span",{key:0,class:d([`${c(Q).namespace.value}-upload-list__item-preview`,`${c(Q).namespace.value}-image-upload__action-btn`,`${c(Q).namespace.value}-image-upload__action-btn--preview`]),onClick:e=>J(a)},[v(c(L),{size:"14px"})],10,B)):f("v-if",!0),a.url?(n(),o("span",{key:1,class:d(`${c(Q).namespace.value}-upload-list__item-divider`)},null,2)):f("v-if",!0),y("span",{class:d([`${c(Q).namespace.value}-upload-list__item-delete`,`${c(Q).namespace.value}-image-upload__action-btn`,`${c(Q).namespace.value}-image-upload__action-btn--delete`,e.disabled?"is-disabled":""]),onClick:e=>K(a)},[v(c(k),{size:"14px"})],10,M)],2)];var l}),tip:h(()=>[b(e.$slots,"tip",{},()=>[e.notip?f("v-if",!0):(n(),o("div",{key:0,class:d(`${c(Q).namespace.value}-upload__tip-text`)},[y("div",S,_(H.value),1)],2))])]),default:h(()=>[b(e.$slots,"default",{},()=>[y("div",R,[v(l,{size:"32px",icon:c($)},null,8,["icon"]),y("p",null,_(e.placeholder),1)])])]),_:3},16,["file-list","limit","headers","action","data","name","accept","class"]),W.value?(n(),m(c(w),{key:0,"url-list":T.value.map(e=>e.url).filter(Boolean),"initial-index":A.value,"show-progress":T.value.length>1,teleported:"",onClose:P},null,8,["url-list","initial-index","show-progress"])):f("v-if",!0)],6)}}});export{N as default};
|
|
2
|
-
//# sourceMappingURL=image-upload.vue.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-upload.vue.mjs","sources":["../../../../../../packages/components/src/image-upload/src/image-upload.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { UploadFile, UploadFiles, UploadProps } from 'element-plus'\nimport { Delete, UploadImage, ZoomIn } from '@qxs-bns/icons'\nimport { ElImageViewer, ElMessage, ElUpload, useNamespace } from 'element-plus'\nimport { computed, onUnmounted, ref, useAttrs } from 'vue'\n\n// 类型定义\nexport interface ImageUploadProps {\n /** 上传地址(必需) */\n action: UploadProps['action']\n /** 请求头 */\n headers?: UploadProps['headers']\n /** 上传时附带的额外参数 */\n data?: UploadProps['data']\n /** 上传的文件字段名 */\n name?: UploadProps['name']\n /** 文件大小限制(MB) */\n size?: number\n /** 图片显示宽度(px) */\n width?: number\n /** 图片显示高度(px) */\n height?: number\n /** 接受的文件类型 */\n accept?: string\n /** 上传区域提示文字 */\n placeholder?: string\n /** 是否隐藏提示文字 */\n notip?: boolean\n /** 自定义提示文字 */\n tipText?: string\n /** 上传前的钩子函数 */\n beforeUpload?: UploadProps['beforeUpload']\n /** 是否禁用 */\n disabled?: boolean\n /** 最大上传数量 */\n limit?: number\n}\n\n// 组件名称\ndefineOptions({\n name: 'QxsImageUpload',\n})\n\n// Props 定义\nconst {\n action,\n headers,\n data,\n name = 'file',\n size = 20,\n width = 160,\n height = 90,\n limit = 1,\n placeholder = '上传图片',\n notip = false,\n accept = 'image/jpeg,image/jpg,image/png,image/gif',\n beforeUpload,\n tipText = '',\n disabled = false,\n} = defineProps<ImageUploadProps>()\n\n// Emits 定义\nconst emits = defineEmits<{\n success: [res: any, uploadFile: UploadFile, uploadFiles: UploadFiles]\n remove: [file: UploadFile]\n}>()\n\nconst attrs = useAttrs()\n\nconst fileList = defineModel('fileList', {\n type: Array as () => UploadFile[],\n default: () => [],\n})\n\n// 命名空间\nconst nsEl = useNamespace('image-upload')\n\n// 响应式数据\nconst imageViewerVisible = ref(false)\nconst initialIndex = ref(0)\nconst previewUrl = ref('')\nconst uploadProgress = ref(0)\nconst isUploading = ref(false)\n\nconst cssVar = computed(() => {\n return nsEl.cssVarBlock({\n ns: nsEl.namespace.value,\n width: `${width}px`,\n height: `${height}px`,\n })\n})\n\n// 计算属性\nconst exts = computed(() =>\n accept.split(',').map(ext => ext.split('/').pop()),\n)\n\nconst tipMessage = computed(() => {\n if (tipText) {\n return tipText\n }\n\n const formatText = `支持 ${exts.value.join(' / ')} 格式,大小不超过 ${size}MB`\n const sizeText = width && height ? `,建议尺寸 ${width}×${height}` : ''\n\n return formatText + sizeText\n})\n\n// 状态文本转换\nfunction getStatusText(status: string | undefined): string {\n const statusMap: Record<string, string> = {\n ready: '准备中',\n uploading: '上传中',\n success: '上传成功',\n fail: '上传失败',\n error: '上传错误',\n }\n return statusMap[status || ''] || status || '未知状态'\n}\n\n// 方法\nfunction onPreview(file: UploadFile) {\n if (!file.url) {\n console.warn('文件缺少 URL,无法预览:', file)\n return\n }\n\n // 简化索引查找:优先对象引用,备用 URL 匹配\n let index = fileList.value.indexOf(file)\n if (index === -1) {\n index = fileList.value.findIndex(item => item.url === file.url)\n }\n\n initialIndex.value = Math.max(0, index)\n imageViewerVisible.value = true\n}\n\nfunction onRemove(file: UploadFile) {\n if (disabled) {\n return\n }\n\n // 如果正在上传,重置上传状态\n if (file.status === 'uploading' && isUploading.value) {\n isUploading.value = false\n uploadProgress.value = 0\n\n // 清理预览 URL\n if (previewUrl.value) {\n URL.revokeObjectURL(previewUrl.value)\n previewUrl.value = ''\n }\n }\n\n // 清理可能的 Object URL\n if (file.url?.startsWith('blob:')) {\n URL.revokeObjectURL(file.url)\n }\n\n // 从数组中移除文件\n const index = fileList.value.indexOf(file)\n if (index > -1) {\n fileList.value.splice(index, 1)\n }\n\n emits('remove', file)\n}\n\nfunction previewClose() {\n imageViewerVisible.value = false\n}\n\nconst handleBeforeUpload: UploadProps['beforeUpload'] = (file) => {\n if (!file?.name) {\n ElMessage.error('文件信息无效,请重新选择文件')\n return false\n }\n\n // 文件类型校验\n const fileExt = file.name.split('.').pop()?.toLowerCase() ?? ''\n const isTypeOk = exts.value.some(ext => ext?.toLowerCase() === fileExt)\n if (!isTypeOk) {\n ElMessage.error(`仅支持上传 ${exts.value.join(' / ')} 格式的图片`)\n return false\n }\n\n // 文件大小校验\n const fileSizeMB = file.size / 1024 / 1024\n if (fileSizeMB > size) {\n ElMessage.error(`图片大小不能超过 ${size}MB`)\n return false\n }\n\n // 设置预览和上传状态\n try {\n previewUrl.value = URL.createObjectURL(file)\n }\n catch (error) {\n console.warn('创建预览失败:', error)\n }\n\n // 开始上传\n isUploading.value = true\n uploadProgress.value = 0\n\n return beforeUpload ? beforeUpload(file) : true\n}\n\nconst onProgress: UploadProps['onProgress'] = (evt) => {\n uploadProgress.value = Math.floor(evt.percent)\n}\n\nconst onSuccess: UploadProps['onSuccess'] = (response, uploadFile, uploadFiles) => {\n // 检查文件是否还在列表中(可能已被删除)\n const fileExists = fileList.value.some(file =>\n file.uid === uploadFile.uid\n || (file.name === uploadFile.name && file.size === uploadFile.size),\n )\n\n // 清理预览 URL 和重置状态\n if (previewUrl.value) {\n URL.revokeObjectURL(previewUrl.value)\n previewUrl.value = ''\n }\n isUploading.value = false\n uploadProgress.value = 0\n\n // 只有文件还存在时才触发成功回调\n if (fileExists) {\n emits('success', response, uploadFile, uploadFiles)\n }\n}\n\nconst onError: UploadProps['onError'] = (error, uploadFile, _uploadFiles) => {\n // 检查文件是否还在列表中(可能已被删除)\n const fileExists = fileList.value.some(file =>\n file.uid === uploadFile.uid\n || (file.name === uploadFile.name && file.size === uploadFile.size),\n )\n\n // 清理预览 URL 和重置状态\n if (previewUrl.value) {\n URL.revokeObjectURL(previewUrl.value)\n previewUrl.value = ''\n }\n isUploading.value = false\n uploadProgress.value = 0\n\n // 只有文件还存在时才显示错误信息\n if (fileExists) {\n ElMessage.error(`图片上传失败:${error.message || '网络异常,请重试'}`)\n }\n}\n\n// 组件卸载时清理资源\nonUnmounted(() => {\n if (previewUrl.value) {\n URL.revokeObjectURL(previewUrl.value)\n }\n // 清理文件列表中的 blob URL\n fileList.value.forEach((file) => {\n if (file.url?.startsWith('blob:')) {\n URL.revokeObjectURL(file.url)\n }\n })\n})\n</script>\n\n<template>\n <div\n :class=\"nsEl.e('container')\"\n :style=\"cssVar\"\n >\n <ElUpload\n v-bind=\"attrs\"\n v-model:file-list=\"fileList\"\n drag\n :limit=\"limit\"\n list-type=\"picture-card\"\n :headers=\"headers\"\n :action=\"action\"\n :data=\"data\"\n :name=\"name\"\n :accept=\"accept\"\n :before-upload=\"handleBeforeUpload\"\n :on-progress=\"onProgress\"\n :on-preview=\"onPreview\"\n :on-success=\"onSuccess\"\n :on-error=\"onError\"\n :class=\"[nsEl.e('control'), limit <= fileList.length ? nsEl.e('more-than-limit') : '']\"\n :on-remove=\"onRemove\"\n >\n <slot>\n <div class=\"image-slot\">\n <QxsIcon\n size=\"32px\"\n :icon=\"UploadImage\"\n />\n <p>{{ placeholder }}</p>\n </div>\n </slot>\n <template #file=\"{ file }\">\n <div style=\"position: relative; width: 100%; height: 100%;\">\n <img\n v-if=\"file.url\"\n :class=\"`${nsEl.namespace.value}-upload-list__item-thumbnail`\"\n :src=\"file.url\"\n :alt=\"file.name || '图片'\"\n >\n <div\n v-else\n :class=\"`${nsEl.namespace.value}-upload-list__item-thumbnail`\"\n style=\"display: flex; align-items: center; justify-content: center; color: #909399; background: #f5f7fa;\"\n >\n 无图片\n </div>\n\n <!-- 上传进度条 -->\n <div\n v-if=\"isUploading\"\n class=\"upload-progress\"\n >\n <div\n class=\"upload-progress-bar\"\n :style=\"{ width: `${uploadProgress}%` }\"\n />\n </div>\n\n <!-- 调试信息 -->\n <div\n v-if=\"isUploading\"\n class=\"upload-debug\"\n >\n {{ uploadProgress }}% - {{ getStatusText(file.status) }}\n </div>\n </div>\n\n <span :class=\"`${nsEl.namespace.value}-upload-list__item-actions`\">\n <span\n v-if=\"file.url\"\n :class=\"[\n `${nsEl.namespace.value}-upload-list__item-preview`,\n `${nsEl.namespace.value}-image-upload__action-btn`,\n `${nsEl.namespace.value}-image-upload__action-btn--preview`,\n ]\"\n @click=\"onPreview(file)\"\n >\n <ZoomIn size=\"14px\" />\n </span>\n <span\n v-if=\"file.url\"\n :class=\"`${nsEl.namespace.value}-upload-list__item-divider`\"\n />\n <span\n :class=\"[\n `${nsEl.namespace.value}-upload-list__item-delete`,\n `${nsEl.namespace.value}-image-upload__action-btn`,\n `${nsEl.namespace.value}-image-upload__action-btn--delete`,\n disabled ? 'is-disabled' : '',\n ]\"\n @click=\"onRemove(file)\"\n >\n <Delete size=\"14px\" />\n </span>\n </span>\n </template>\n <template #tip>\n <slot name=\"tip\">\n <div\n v-if=\"!notip\"\n :class=\"`${nsEl.namespace.value}-upload__tip-text`\"\n >\n <div class=\"tip-content\">\n {{ tipMessage }}\n </div>\n </div>\n </slot>\n </template>\n </ElUpload>\n\n <ElImageViewer\n v-if=\"imageViewerVisible\"\n :url-list=\"fileList.map((item: UploadFile) => item.url!).filter(Boolean)\"\n :initial-index=\"initialIndex\"\n :show-progress=\"fileList.length > 1\"\n teleported\n @close=\"previewClose\"\n />\n </div>\n</template>\n"],"names":["emits","__emit","attrs","useAttrs","fileList","_useModel","__props","nsEl","useNamespace","imageViewerVisible","ref","initialIndex","previewUrl","uploadProgress","isUploading","cssVar","computed","cssVarBlock","ns","namespace","value","width","height","exts","split","map","ext","pop","tipMessage","tipText","join","size","onPreview","file","url","console","warn","index","indexOf","findIndex","item","Math","max","onRemove","disabled","status","URL","revokeObjectURL","startsWith","splice","previewClose","handleBeforeUpload","name","ElMessage","error","fileExt","toLowerCase","some","createObjectURL","beforeUpload","onProgress","evt","floor","percent","onSuccess","response","uploadFile","uploadFiles","fileExists","uid","onError","_uploadFiles","message","onUnmounted","forEach","_createElementBlock","class","_normalizeClass","_unref","e","style","_createVNode","ElUpload","_mergeProps","$event","drag","limit","headers","action","data","accept","length","_withCtx","_createElementVNode","_hoisted_2","src","alt","display","color","background","_createCommentVNode","_openBlock","_hoisted_4","_hoisted_5","_toDisplayString","ready","uploading","success","fail","onClick","ZoomIn","Delete","tip","_renderSlot","_ctx","notip","_hoisted_8","_hoisted_1","_component_QxsIcon","icon","UploadImage","placeholder","_createBlock","ElImageViewer","filter","Boolean","teleported","onClose"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-upload.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{ref as e}from"vue";function l(l){const a=e(null);l&&(a.value=l.getContext("2d"));return{clearCanvas:()=>{a.value&&a.value.clearRect(0,0,l.width,l.height)},drawColor:(e,l,t,n,o)=>{a.value&&(a.value.fillStyle=o,a.value.fillRect(e,l,t,n))},drawImage:(e,l,t,n,o)=>{a.value.drawImage(e,l,t,n,o)},cropCanvas:(e,t,n,o)=>new Promise(r=>{if(a.value){const a=document.createElement("canvas");a.width=n,a.height=o;const u=a.getContext("2d");u?(u.drawImage(l,e,t,n,o,0,0,n,o),a.toBlob(e=>{if(e){const l=new File([e],"cropped_image.png",{type:"image/png"});r(l)}else r(null)},"image/png")):r(null)}else r(null)})}}export{l as useCanvas};
|
|
2
|
-
//# sourceMappingURL=composables.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"composables.mjs","sources":["../../../../../../packages/components/src/photo-crop-tool/src/composables.ts"],"sourcesContent":["import type { Ref } from 'vue'\n// useCanvas.ts\nimport { ref } from 'vue'\n\nexport function useCanvas(canvasElement: HTMLCanvasElement) {\n const context: Ref<CanvasRenderingContext2D | null> = ref(null)\n\n if (canvasElement) {\n context.value = canvasElement.getContext('2d')\n }\n\n const clearCanvas = () => {\n if (context.value) {\n context.value.clearRect(0, 0, canvasElement.width, canvasElement.height)\n }\n }\n\n const drawColor = (x: number, y: number, width: number, height: number, color: string) => {\n if (context.value) {\n context.value.fillStyle = color\n context.value.fillRect(x, y, width, height)\n }\n }\n\n const drawImage = (image: HTMLImageElement, x: number, y: number, width: number, height: number) => {\n context.value!.drawImage(image, x, y, width, height)\n }\n\n const cropCanvas = (x: number, y: number, width: number, height: number): Promise<File | null> => {\n return new Promise((resolve) => {\n if (context.value) {\n const croppedCanvas = document.createElement('canvas')\n croppedCanvas.width = width\n croppedCanvas.height = height\n const croppedContext = croppedCanvas.getContext('2d')\n if (croppedContext) {\n croppedContext.drawImage(canvasElement, x, y, width, height, 0, 0, width, height)\n croppedCanvas.toBlob((blob) => {\n if (blob) {\n const file = new File([blob], 'cropped_image.png', { type: 'image/png' })\n resolve(file)\n }\n else {\n resolve(null)\n }\n }, 'image/png')\n }\n else {\n resolve(null)\n }\n }\n else {\n resolve(null)\n }\n })\n }\n\n return {\n clearCanvas,\n drawColor,\n drawImage,\n cropCanvas,\n }\n}\n"],"names":["useCanvas","canvasElement","context","ref","value","getContext","clearCanvas","clearRect","width","height","drawColor","x","y","color","fillStyle","fillRect","drawImage","image","cropCanvas","Promise","resolve","croppedCanvas","document","createElement","croppedContext","toBlob","blob","file","File","type"],"mappings":"0BAIO,SAASA,EAAUC,GACxB,MAAMC,EAAgDC,EAAI,MAEtDF,IACFC,EAAQE,MAAQH,EAAcI,WAAW,OAiD3C,MAAO,CACLC,YA/CkBA,KACdJ,EAAQE,OACVF,EAAQE,MAAMG,UAAU,EAAG,EAAGN,EAAcO,MAAOP,EAAcQ,SA8CnEC,UA1CgBA,CAACC,EAAWC,EAAWJ,EAAeC,EAAgBI,KAClEX,EAAQE,QACVF,EAAQE,MAAMU,UAAYD,EAC1BX,EAAQE,MAAMW,SAASJ,EAAGC,EAAGJ,EAAOC,KAwCtCO,UApCgBA,CAACC,EAAyBN,EAAWC,EAAWJ,EAAeC,KAC/EP,EAAQE,MAAOY,UAAUC,EAAON,EAAGC,EAAGJ,EAAOC,IAoC7CS,WAjCiBA,CAACP,EAAWC,EAAWJ,EAAeC,IAChD,IAAIU,QAASC,IAClB,GAAIlB,EAAQE,MAAO,CACjB,MAAMiB,EAAgBC,SAASC,cAAc,UAC7CF,EAAcb,MAAQA,EACtBa,EAAcZ,OAASA,EACvB,MAAMe,EAAiBH,EAAchB,WAAW,MAC5CmB,GACFA,EAAeR,UAAUf,EAAeU,EAAGC,EAAGJ,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,GAC1EY,EAAcI,OAAQC,IACpB,GAAIA,EAAM,CACR,MAAMC,EAAO,IAAIC,KAAK,CAACF,GAAO,oBAAqB,CAAEG,KAAM,cAC3DT,EAAQO,EACV,MAEEP,EAAQ,OAET,cAGHA,EAAQ,KAEZ,MAEEA,EAAQ,QAWhB"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{defineComponent as e,ref as t,computed as l,watch as o,onMounted as a,nextTick as u,onUnmounted as i,createElementBlock as n,openBlock as v,normalizeClass as s,unref as h,toDisplayString as c,Fragment as r,createElementVNode as p,withModifiers as d,normalizeStyle as f}from"vue";import{useNamespace as m}from"@qxs-bns/hooks";import{useElementSize as g,useDraggable as y}from"@vueuse/core";import{useCanvas as w}from"./composables.mjs";const x=["src"];var b=e({name:"QxsPhotoCropTool",__name:"photo-crop-tool",props:{imgFile:{type:Object,default:()=>null},aspectRatio:{type:String,default:()=>"16 / 9"},defaultWidth:{type:Number,default:()=>320},defaultHeight:{type:Number,default:()=>180},zoomType:{type:String,default:()=>"fixed"}},setup(e,{expose:b}){const T=e;let E=0,R=0,H=0,L=0;const z=m("photo-crop-tool"),F=t(null),N=t(null),W=t(null),k=t(""),M=t(""),X=t({x:0,y:0}),Y=t({width:T.defaultWidth,height:T.defaultHeight,x:0,y:0}),{width:$,height:C}=g(F),{width:_}=g(W),{x:j,y:U,style:B}=y(F,{containerElement:N,draggingElement:F,disabled:l(()=>!!M.value),exact:!0,initialValue:X}),O=l(()=>T.imgFile?URL.createObjectURL(T.imgFile):"");o(()=>T.imgFile,e=>{e&&!e.type.startsWith("image/")?k.value="文件类型错误":k.value=""});const S=l(()=>(W.value?.naturalWidth||0)/_.value),D=l(()=>{const e={left:0,top:0};return"bottom-right"===M.value?(e.left=Y.value.x,e.top=Y.value.y):"top-left"===M.value?(e.left=Y.value.x-$.value,e.top=Y.value.y-C.value):"top-right"===M.value?(e.top=Y.value.y-C.value,e.left=Y.value.x):"bottom-left"===M.value&&(e.left=Y.value.x-$.value,e.top=Y.value.y),e}),V=l(()=>{const{aspectRatio:e}=T,t={width:`${Y.value.width||T.defaultWidth}`,height:`${Y.value.height||T.defaultHeight}`,"aspect-ratio":e,top:`${D.value.top}px`,left:`${D.value.left}px`};return"free"===T.zoomType?delete t["aspect-ratio"]:"fixed"===T.zoomType&&delete t.height,z.cssVarBlock(t)});function q(e){return e*S.value}function I(e,t){const l=N.value?.clientWidth||1/0,o=N.value?.clientHeight||1/0;return{width:Math.min(Math.max(e,0),l),height:Math.min(Math.max(t,0),o)}}function P(e){return e instanceof MouseEvent?{clientX:e.clientX,clientY:e.clientY}:e instanceof TouchEvent&&e.touches.length>0?{clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}:{clientX:0,clientY:0}}function Q(e,t){const{clientX:l,clientY:o}=P(e);M.value=t,E=l,R=o,H=Y.value.width,L=Y.value.height,document.addEventListener("touchmove",A,{passive:!1}),document.addEventListener("touchend",G),"bottom-right"===t?(Y.value.x=j.value,Y.value.y=U.value):"top-left"===t?(Y.value.x=j.value+$.value,Y.value.y=U.value+C.value):"top-right"===t?(Y.value.x=j.value,Y.value.y=U.value+C.value):"bottom-left"===t&&(Y.value.x=j.value+$.value,Y.value.y=U.value),e instanceof TouchEvent&&e.preventDefault()}function A(e){e instanceof TouchEvent&&M.value&&e.preventDefault();const{clientX:t,clientY:l}=P(e),o=t-E,a=l-R;if("bottom-right"===M.value){if("free"===T.zoomType){const{width:e,height:t}=I(H+o,L+a);Y.value.width=e,Y.value.height=t}else if("fixed"===T.zoomType){const e=Number.parseFloat(T.aspectRatio.split(" / ")[0])/Number.parseFloat(T.aspectRatio.split(" / ")[1]);let t=H+o,l=t/e;const{width:a,height:u}=I(t,l);u>(N.value?.clientHeight||1/0)&&(l=N.value?.clientHeight||1/0,t=l*e),Y.value.width=a,Y.value.height=u}}else if("top-left"===M.value){if("free"===T.zoomType){const{width:e,height:t}=I(H-o,L-a);Y.value.width=e,Y.value.height=t}else if("fixed"===T.zoomType){const e=Number.parseFloat(T.aspectRatio.split(" / ")[0])/Number.parseFloat(T.aspectRatio.split(" / ")[1]);let t=H-o,l=t/e;const{width:a,height:u}=I(t,l);u>(N.value?.clientHeight||1/0)&&(l=N.value?.clientHeight||1/0,t=l*e),Y.value.width=a,Y.value.height=u}j.value=D.value.left,U.value=D.value.top}else if("top-right"===M.value){if("free"===T.zoomType){const{width:e,height:t}=I(H+o,L-a);Y.value.width=e,Y.value.height=t}else if("fixed"===T.zoomType){const e=Number.parseFloat(T.aspectRatio.split(" / ")[0])/Number.parseFloat(T.aspectRatio.split(" / ")[1]);let t=H+o,l=t/e;const{width:a,height:u}=I(t,l);u>(N.value?.clientHeight||1/0)&&(l=N.value?.clientHeight||1/0,t=l*e),Y.value.width=a,Y.value.height=u}j.value=D.value.left,U.value=D.value.top}else if("bottom-left"===M.value){if("free"===T.zoomType){const{width:e,height:t}=I(H-o,L+a);Y.value.width=e,Y.value.height=t}else if("fixed"===T.zoomType){const e=Number.parseFloat(T.aspectRatio.split(" / ")[0])/Number.parseFloat(T.aspectRatio.split(" / ")[1]);let t=H-o,l=t/e;const{width:a,height:u}=I(t,l);u>(N.value?.clientHeight||1/0)&&(l=N.value?.clientHeight||1/0,t=l*e),Y.value.width=a,Y.value.height=u}j.value=D.value.left,U.value=D.value.top}}function G(){document.removeEventListener("touchmove",A),document.removeEventListener("touchend",G),M.value=""}return a(()=>{u(()=>{X.value.x=(N.value?.offsetWidth||0)/2-Y.value.width/2,X.value.y=(N.value?.offsetHeight||0)/2-Y.value.height/2}),document.addEventListener("mouseup",G),document.addEventListener("mousemove",A,{passive:!1}),document.addEventListener("touchmove",A,{passive:!1}),document.addEventListener("touchend",G)}),i(()=>{O.value&&URL.revokeObjectURL(O.value),document.removeEventListener("mouseup",G),document.removeEventListener("mousemove",A)}),b({crop:async function(e=W.value){let t="transparent";N.value&&(t=window.getComputedStyle(N.value).backgroundColor);const l=document.createElement("canvas");l.width=q(N.value?.clientWidth||0),l.height=q(N.value?.clientHeight||0);const{drawImage:o,cropCanvas:a,drawColor:u}=w(l);return u(0,0,l.width,l.height,t),o(e,q(e.offsetLeft),q(e.offsetTop),e.naturalWidth,e.naturalHeight),await a(q(j.value),q(U.value),q($.value),q(C.value))},resize:function(){Y.value.width=T.defaultWidth,Y.value.height=T.defaultHeight,j.value=0,U.value=0}}),(e,t)=>(v(),n("div",{ref_key:"containerBoxRef",ref:N,class:s([h(z).e("img-box")])},[k.value?(v(),n("div",{key:0,class:s([h(z).e("error-message")])},c(k.value),3)):(v(),n(r,{key:1},[p("img",{ref_key:"imgRef",ref:W,class:s([h(z).e("image")]),src:O.value},null,10,x),p("div",{ref_key:"cropBoxRef",ref:F,class:s([h(z).e("crop-tool-box")]),style:f([V.value,M.value?`left: ${D.value.left}px;top: ${D.value.top}px`:h(B)]),onTouchstart:t[8]||(t[8]=d(()=>{},["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},[p("div",{class:s([h(z).e("top-left")]),onMousedown:t[0]||(t[0]=d(e=>Q(e,"top-left"),["stop","prevent"])),onTouchstart:t[1]||(t[1]=d(e=>Q(e,"top-left"),["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},null,34),p("div",{class:s([h(z).e("top-right")]),onMousedown:t[2]||(t[2]=d(e=>Q(e,"top-right"),["stop","prevent"])),onTouchstart:t[3]||(t[3]=d(e=>Q(e,"top-right"),["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},null,34),p("div",{class:s([h(z).e("bottom-right")]),onMousedown:t[4]||(t[4]=d(e=>Q(e,"bottom-right"),["stop","prevent"])),onTouchstart:t[5]||(t[5]=d(e=>Q(e,"bottom-right"),["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},null,34),p("div",{class:s([h(z).e("bottom-left")]),onMousedown:t[6]||(t[6]=d(e=>Q(e,"bottom-left"),["stop","prevent"])),onTouchstart:t[7]||(t[7]=d(e=>Q(e,"bottom-left"),["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},null,34)],38)],64))],2))}});export{b as default};
|
|
2
|
-
//# sourceMappingURL=photo-crop-tool.vue.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"photo-crop-tool.vue.mjs","sources":["../../../../../../packages/components/src/photo-crop-tool/src/photo-crop-tool.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { useDraggable, useElementSize } from '@vueuse/core'\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { useCanvas } from './composables'\n\ndefineOptions({\n name: 'QxsPhotoCropTool',\n})\n\nconst props = defineProps({\n imgFile: {\n type: Object as PropType<File>,\n default: () => null,\n },\n aspectRatio: {\n type: String,\n default: () => '16 / 9',\n },\n defaultWidth: {\n type: Number,\n default: () => 320,\n },\n defaultHeight: {\n type: Number,\n default: () => 180,\n },\n /**\n * free 自由缩放\n * fixed 固定比例缩放\n */\n zoomType: {\n type: String,\n default: () => 'fixed',\n },\n})\nlet startX = 0\nlet startY = 0\nlet startWidth = 0\nlet startHeight = 0\n\nconst ns = useNamespace('photo-crop-tool')\n\nconst cropBoxRef = ref<HTMLElement | null>(null)\nconst containerBoxRef = ref<HTMLElement | null>(null)\nconst imgRef = ref<HTMLImageElement | null>(null)\nconst errorMessage = ref('')\nconst dargPoint = ref('')\nconst initialValue = ref({\n x: 0,\n y: 0,\n})\nconst cropInfo = ref({\n width: props.defaultWidth,\n height: props.defaultHeight,\n x: 0,\n y: 0,\n})\n\nconst { width, height } = useElementSize(cropBoxRef)\nconst { width: imgWidth } = useElementSize(imgRef)\n\nconst { x, y, style } = useDraggable(cropBoxRef, {\n containerElement: containerBoxRef,\n draggingElement: cropBoxRef,\n disabled: computed(() => !!dargPoint.value),\n exact: true,\n initialValue,\n})\n\nconst imageUrl = computed(() => {\n if (!props.imgFile) {\n return ''\n }\n return URL.createObjectURL(props.imgFile)\n})\n\nwatch(\n () => props.imgFile,\n (newFile: File | null) => {\n if (newFile && !newFile.type.startsWith('image/')) {\n errorMessage.value = '文件类型错误'\n }\n else {\n errorMessage.value = ''\n }\n },\n)\n\nconst ratio = computed(() => {\n return (imgRef.value?.naturalWidth || 0) / imgWidth.value\n})\n\nconst customStyle = computed(() => {\n const position = {\n left: 0,\n top: 0,\n }\n if (dargPoint.value === 'bottom-right') {\n position.left = cropInfo.value.x\n position.top = cropInfo.value.y\n }\n else if (dargPoint.value === 'top-left') {\n position.left = cropInfo.value.x - width.value\n position.top = cropInfo.value.y - height.value\n }\n else if (dargPoint.value === 'top-right') {\n position.top = cropInfo.value.y - height.value\n position.left = cropInfo.value.x\n }\n else if (dargPoint.value === 'bottom-left') {\n position.left = cropInfo.value.x - width.value\n position.top = cropInfo.value.y\n }\n return position\n})\n\nconst sizeStyle = computed(() => {\n const { aspectRatio } = props\n\n const style: {\n 'height'?: string\n 'width': string\n 'aspect-ratio'?: string\n 'top': string\n 'left': string\n } = {\n 'width': `${cropInfo.value.width || props.defaultWidth}`,\n 'height': `${cropInfo.value.height || props.defaultHeight}`,\n 'aspect-ratio': aspectRatio,\n 'top': `${customStyle.value.top}px`,\n 'left': `${customStyle.value.left}px`,\n }\n if (props.zoomType === 'free') {\n delete style['aspect-ratio']\n }\n else if (props.zoomType === 'fixed') {\n delete style.height\n }\n return ns.cssVarBlock(style)\n})\n\nfunction zoom(pixel: number) {\n return pixel * ratio.value\n}\nasync function crop(img: HTMLImageElement = imgRef.value!) {\n let backgroundColor = 'transparent'\n if (containerBoxRef.value) {\n backgroundColor = window.getComputedStyle(\n containerBoxRef.value,\n ).backgroundColor\n }\n const canvas = document.createElement('canvas')\n canvas.width = zoom(containerBoxRef.value?.clientWidth || 0)\n canvas.height = zoom(containerBoxRef.value?.clientHeight || 0)\n const { drawImage, cropCanvas, drawColor } = useCanvas(canvas)\n drawColor(0, 0, canvas.width, canvas.height, backgroundColor)\n drawImage(\n img,\n zoom(img.offsetLeft),\n zoom(img.offsetTop),\n img.naturalWidth,\n img.naturalHeight,\n )\n return await cropCanvas(\n zoom(x.value),\n zoom(y.value),\n zoom(width.value),\n zoom(height.value),\n )\n}\n\nfunction checkBoundaries(\n newWidth: number,\n newHeight: number,\n): { width: number, height: number } {\n const maxWidth = containerBoxRef.value?.clientWidth || Infinity\n const maxHeight = containerBoxRef.value?.clientHeight || Infinity\n\n return {\n width: Math.min(Math.max(newWidth, 0), maxWidth),\n height: Math.min(Math.max(newHeight, 0), maxHeight),\n }\n}\n\nfunction getClientPos(e: MouseEvent | TouchEvent): { clientX: number, clientY: number } {\n if (e instanceof MouseEvent) {\n return { clientX: e.clientX, clientY: e.clientY }\n }\n else if (e instanceof TouchEvent && e.touches.length > 0) {\n return { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY }\n }\n return { clientX: 0, clientY: 0 }\n}\n\nfunction handleStart(e: MouseEvent | TouchEvent, point: string) {\n const { clientX, clientY } = getClientPos(e)\n dargPoint.value = point\n startX = clientX\n startY = clientY\n startWidth = cropInfo.value.width\n startHeight = cropInfo.value.height\n\n // 添加移动端事件监听\n document.addEventListener('touchmove', handleMove, { passive: false })\n document.addEventListener('touchend', handleEnd)\n\n if (point === 'bottom-right') {\n cropInfo.value.x = x.value\n cropInfo.value.y = y.value\n }\n else if (point === 'top-left') {\n cropInfo.value.x = x.value + width.value\n cropInfo.value.y = y.value + height.value\n }\n else if (point === 'top-right') {\n cropInfo.value.x = x.value\n cropInfo.value.y = y.value + height.value\n }\n else if (point === 'bottom-left') {\n cropInfo.value.x = x.value + width.value\n cropInfo.value.y = y.value\n }\n\n // Prevent touch scrolling\n if (e instanceof TouchEvent) {\n e.preventDefault()\n }\n}\n\nfunction handleMove(e: MouseEvent | TouchEvent) {\n // Only prevent default if we're in a drag operation\n if (e instanceof TouchEvent && dargPoint.value) {\n e.preventDefault()\n }\n\n const { clientX, clientY } = getClientPos(e)\n const deltaX = clientX - startX\n const deltaY = clientY - startY\n\n if (dargPoint.value === 'bottom-right') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth + deltaX,\n startHeight + deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth + deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n }\n else if (dargPoint.value === 'top-left') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth - deltaX,\n startHeight - deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth - deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n else if (dargPoint.value === 'top-right') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth + deltaX,\n startHeight - deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth + deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n else if (dargPoint.value === 'bottom-left') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth - deltaX,\n startHeight + deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth - deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n}\n\nfunction handleEnd() {\n // 移除移动端事件监听\n document.removeEventListener('touchmove', handleMove)\n document.removeEventListener('touchend', handleEnd)\n\n dargPoint.value = ''\n}\n\nfunction resize() {\n cropInfo.value.width = props.defaultWidth\n cropInfo.value.height = props.defaultHeight\n x.value = 0\n y.value = 0\n}\n\nonMounted(() => {\n nextTick(() => {\n // 初始化位置\n initialValue.value.x\n = (containerBoxRef.value?.offsetWidth || 0) / 2 - cropInfo.value.width / 2\n initialValue.value.y\n = (containerBoxRef.value?.offsetHeight || 0) / 2\n - cropInfo.value.height / 2\n })\n\n // 只添加鼠标事件监听\n document.addEventListener('mouseup', handleEnd)\n document.addEventListener('mousemove', handleMove, { passive: false })\n document.addEventListener('touchmove', handleMove, { passive: false })\n document.addEventListener('touchend', handleEnd)\n})\n\nonUnmounted(() => {\n if (imageUrl.value) {\n URL.revokeObjectURL(imageUrl.value)\n }\n // 确保移除所有事件监听\n document.removeEventListener('mouseup', handleEnd)\n document.removeEventListener('mousemove', handleMove)\n})\n\ndefineExpose({\n crop,\n resize,\n})\n</script>\n\n<template>\n <div\n ref=\"containerBoxRef\"\n :class=\"[ns.e('img-box')]\"\n >\n <div\n v-if=\"errorMessage\"\n :class=\"[ns.e('error-message')]\"\n >\n {{ errorMessage }}\n </div>\n <template v-else>\n <img\n ref=\"imgRef\"\n :class=\"[ns.e('image')]\"\n :src=\"imageUrl\"\n >\n <div\n ref=\"cropBoxRef\"\n :class=\"[ns.e('crop-tool-box')]\"\n :style=\"[\n sizeStyle,\n dargPoint\n ? `left: ${customStyle.left}px;top: ${customStyle.top}px`\n : style,\n ]\"\n @touchstart.stop.prevent\n @touchend.stop.prevent=\"handleEnd\"\n >\n <div\n :class=\"[ns.e('top-left')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'top-left')\"\n @touchstart.stop.prevent=\"handleStart($event, 'top-left')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('top-right')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'top-right')\"\n @touchstart.stop.prevent=\"handleStart($event, 'top-right')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('bottom-right')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'bottom-right')\"\n @touchstart.stop.prevent=\"handleStart($event, 'bottom-right')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('bottom-left')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'bottom-left')\"\n @touchstart.stop.prevent=\"handleStart($event, 'bottom-left')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n </div>\n </template>\n </div>\n</template>\n"],"names":["props","__props","startX","startY","startWidth","startHeight","ns","useNamespace","cropBoxRef","ref","containerBoxRef","imgRef","errorMessage","dargPoint","initialValue","x","y","cropInfo","width","defaultWidth","height","defaultHeight","useElementSize","imgWidth","style","useDraggable","containerElement","draggingElement","disabled","computed","value","exact","imageUrl","imgFile","URL","createObjectURL","watch","newFile","type","startsWith","ratio","naturalWidth","customStyle","position","left","top","sizeStyle","aspectRatio","zoomType","cssVarBlock","zoom","pixel","checkBoundaries","newWidth","newHeight","maxWidth","clientWidth","Infinity","maxHeight","clientHeight","Math","min","max","getClientPos","e","MouseEvent","clientX","clientY","TouchEvent","touches","length","handleStart","point","document","addEventListener","handleMove","passive","handleEnd","preventDefault","deltaX","deltaY","Number","parseFloat","split","removeEventListener","onMounted","nextTick","offsetWidth","offsetHeight","onUnmounted","revokeObjectURL","__expose","crop","async","img","backgroundColor","window","getComputedStyle","canvas","createElement","drawImage","cropCanvas","drawColor","useCanvas","offsetLeft","offsetTop","naturalHeight","resize","_createElementBlock","class","_normalizeClass","_unref","_Fragment","key","_createElementVNode","src","_normalizeStyle","onTouchstart","onTouchend","onMousedown","_cache","_withModifiers","$event"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"photo-crop-tool.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/subject-action/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/subject-action.vue'\n\nconst QxsSubjectAction = withInstall(component)\n\nexport {\n QxsSubjectAction,\n}\n\nexport default QxsSubjectAction\n"],"names":["QxsSubjectAction","withInstall","component"],"mappings":"6FAGA,MAAMA,EAAmBC,EAAYC"}
|