@qxs-bns/components 0.0.91 → 0.0.92
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/es/base/define.mjs +1 -1
- package/es/base/define.mjs.map +1 -1
- package/es/base/uid.mjs +1 -1
- package/es/base/uid.mjs.map +1 -1
- package/es/data-chart.mjs +15 -14
- package/es/data-chart.mjs.map +1 -1
- package/es/editor/blocksuite-editor.mjs +62 -51
- package/es/editor/blocksuite-editor.mjs.map +1 -1
- package/es/editor/content-format.mjs +8 -1
- package/es/editor/content-format.mjs.map +1 -1
- package/es/editor/index.mjs +1 -1
- package/es/editor/index.mjs.map +1 -1
- package/es/editor/toolbar.mjs +1 -1
- package/es/editor/toolbar.mjs.map +1 -1
- package/es/entry-data-chart.mjs +1 -1
- package/es/entry-editor.mjs +1 -1
- package/es/entry-file-upload.mjs +1 -1
- package/es/entry-fixed-action-bar.mjs +1 -1
- package/es/entry-icon.mjs +1 -1
- package/es/entry-image-upload.mjs +1 -1
- package/es/entry-photo-crop-tool.mjs +1 -1
- package/es/entry-subject.mjs +1 -1
- package/es/file-upload.mjs +25 -18
- package/es/file-upload.mjs.map +1 -1
- package/es/fixed-action-bar.mjs +5 -5
- package/es/fixed-action-bar.mjs.map +1 -1
- package/es/icon.mjs +7 -7
- package/es/icon.mjs.map +1 -1
- package/es/image-upload.mjs +26 -26
- package/es/image-upload.mjs.map +1 -1
- package/es/index.mjs +1 -1
- package/es/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.mjs +59 -1
- package/es/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.mjs.map +1 -1
- package/es/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.mjs +16 -1
- package/es/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.mjs.map +1 -1
- package/es/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.mjs +62 -0
- package/es/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.mjs.map +1 -0
- package/es/photo-crop-tool.mjs +12 -12
- package/es/photo-crop-tool.mjs.map +1 -1
- package/es/subject/action.mjs +58 -58
- package/es/subject/action.mjs.map +1 -1
- package/es/subject/blank-fill.mjs +80 -80
- package/es/subject/blank-fill.mjs.map +1 -1
- package/es/subject/draft.mjs +1 -1
- package/es/subject/draft.mjs.map +1 -1
- package/es/subject/layout.mjs +4 -4
- package/es/subject/layout.mjs.map +1 -1
- package/es/subject/page-end.mjs +5 -5
- package/es/subject/page-end.mjs.map +1 -1
- package/es/subject/pagination.mjs +1 -1
- package/es/subject/pagination.mjs.map +1 -1
- package/es/subject/runtime.mjs +1 -1
- package/es/subject/runtime.mjs.map +1 -1
- package/es/subject/scale.mjs +53 -50
- package/es/subject/scale.mjs.map +1 -1
- package/es/subject/shared-methods.mjs +1 -1
- package/es/subject/shared-methods.mjs.map +1 -1
- package/es/subject/shared-styles.mjs +53 -15
- package/es/subject/shared-styles.mjs.map +1 -1
- package/es/subject/single-interactions.mjs +2 -0
- package/es/subject/single-interactions.mjs.map +1 -0
- package/es/subject/single-model.mjs +2 -0
- package/es/subject/single-model.mjs.map +1 -0
- package/es/subject/single-state.mjs +2 -0
- package/es/subject/single-state.mjs.map +1 -0
- package/es/subject/single.mjs +177 -177
- package/es/subject/single.mjs.map +1 -1
- package/es/subject/sort-controller.mjs +1 -1
- package/es/subject/sort-controller.mjs.map +1 -1
- package/es/subject/sortable.mjs +13 -13
- package/es/subject/sortable.mjs.map +1 -1
- package/es/subject/sorting-card.mjs +12 -12
- package/es/subject/sorting-card.mjs.map +1 -1
- package/es/subject/subject-shared.mjs +2 -0
- package/es/subject/subject-shared.mjs.map +1 -0
- package/es/subject/text-fill.mjs +73 -73
- package/es/subject/text-fill.mjs.map +1 -1
- package/es/subject/title-prefix.mjs +1 -1
- package/es/subject/title-prefix.mjs.map +1 -1
- package/es/subject/types.mjs +1 -1
- package/es/subject/types.mjs.map +1 -1
- package/lib/base/define.cjs +1 -1
- package/lib/base/define.cjs.map +1 -1
- package/lib/base/uid.cjs +1 -1
- package/lib/base/uid.cjs.map +1 -1
- package/lib/data-chart.cjs +16 -15
- package/lib/data-chart.cjs.map +1 -1
- package/lib/editor/blocksuite-editor.cjs +62 -51
- package/lib/editor/blocksuite-editor.cjs.map +1 -1
- package/lib/editor/content-format.cjs +8 -1
- package/lib/editor/content-format.cjs.map +1 -1
- package/lib/editor/index.cjs +1 -1
- package/lib/editor/index.cjs.map +1 -1
- package/lib/editor/toolbar.cjs +1 -1
- package/lib/editor/toolbar.cjs.map +1 -1
- package/lib/entry-data-chart.cjs +1 -1
- package/lib/entry-editor.cjs +1 -1
- package/lib/entry-file-upload.cjs +1 -1
- package/lib/entry-fixed-action-bar.cjs +1 -1
- package/lib/entry-icon.cjs +1 -1
- package/lib/entry-image-upload.cjs +1 -1
- package/lib/entry-photo-crop-tool.cjs +1 -1
- package/lib/entry-subject.cjs +1 -1
- package/lib/file-upload.cjs +24 -17
- package/lib/file-upload.cjs.map +1 -1
- package/lib/fixed-action-bar.cjs +6 -6
- package/lib/fixed-action-bar.cjs.map +1 -1
- package/lib/icon.cjs +9 -9
- package/lib/icon.cjs.map +1 -1
- package/lib/image-upload.cjs +26 -26
- package/lib/image-upload.cjs.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.cjs +59 -1
- package/lib/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.cjs.map +1 -1
- package/lib/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.cjs +16 -1
- package/lib/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.cjs.map +1 -1
- package/lib/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.cjs +62 -0
- package/lib/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.cjs.map +1 -0
- package/lib/photo-crop-tool.cjs +11 -11
- package/lib/photo-crop-tool.cjs.map +1 -1
- package/lib/subject/action.cjs +42 -42
- package/lib/subject/action.cjs.map +1 -1
- package/lib/subject/blank-fill.cjs +80 -80
- package/lib/subject/blank-fill.cjs.map +1 -1
- package/lib/subject/draft.cjs +1 -1
- package/lib/subject/draft.cjs.map +1 -1
- package/lib/subject/layout.cjs +4 -4
- package/lib/subject/layout.cjs.map +1 -1
- package/lib/subject/page-end.cjs +4 -4
- package/lib/subject/page-end.cjs.map +1 -1
- package/lib/subject/pagination.cjs +1 -1
- package/lib/subject/pagination.cjs.map +1 -1
- package/lib/subject/runtime.cjs +1 -1
- package/lib/subject/runtime.cjs.map +1 -1
- package/lib/subject/scale.cjs +53 -50
- package/lib/subject/scale.cjs.map +1 -1
- package/lib/subject/shared-methods.cjs +1 -1
- package/lib/subject/shared-methods.cjs.map +1 -1
- package/lib/subject/shared-styles.cjs +54 -16
- package/lib/subject/shared-styles.cjs.map +1 -1
- package/lib/subject/single-interactions.cjs +2 -0
- package/lib/subject/single-interactions.cjs.map +1 -0
- package/lib/subject/single-model.cjs +2 -0
- package/lib/subject/single-model.cjs.map +1 -0
- package/lib/subject/single-state.cjs +2 -0
- package/lib/subject/single-state.cjs.map +1 -0
- package/lib/subject/single.cjs +177 -177
- package/lib/subject/single.cjs.map +1 -1
- package/lib/subject/sort-controller.cjs +1 -1
- package/lib/subject/sort-controller.cjs.map +1 -1
- package/lib/subject/sortable.cjs +15 -15
- package/lib/subject/sortable.cjs.map +1 -1
- package/lib/subject/sorting-card.cjs +12 -12
- package/lib/subject/sorting-card.cjs.map +1 -1
- package/lib/subject/subject-shared.cjs +2 -0
- package/lib/subject/subject-shared.cjs.map +1 -0
- package/lib/subject/text-fill.cjs +81 -81
- package/lib/subject/text-fill.cjs.map +1 -1
- package/lib/subject/title-prefix.cjs +1 -1
- package/lib/subject/title-prefix.cjs.map +1 -1
- package/lib/subject/types.cjs +1 -1
- package/lib/subject/types.cjs.map +1 -1
- package/package.json +5 -5
- package/types/editor/blocksuite-editor.d.ts +2 -0
- package/types/editor/toolbar.d.ts +1 -1
- package/types/file-upload.d.ts +2 -0
- package/types/subject/blank-fill.d.ts +1 -1
- package/types/subject/runtime.d.ts +1 -1
- package/types/subject/scale.d.ts +1 -1
- package/types/subject/single-interactions.d.ts +46 -0
- package/types/subject/single-model.d.ts +88 -0
- package/types/subject/single-state.d.ts +42 -0
- package/types/subject/single.d.ts +7 -85
- package/types/subject/sortable.d.ts +1 -1
- package/types/subject/subject-shared.d.ts +43 -0
- package/types/subject/text-fill.d.ts +1 -1
- package/README.md +0 -562
- 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 +0 -2
- 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 +0 -1
- package/es/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.es.mjs +0 -2
- package/es/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.es.mjs.map +0 -1
- package/es/package.json.mjs +0 -2
- package/es/package.json.mjs.map +0 -1
- package/es/src/alert/index.mjs +0 -2
- package/es/src/alert/index.mjs.map +0 -1
- package/es/src/alert/src/alert.mjs +0 -2
- package/es/src/alert/src/alert.mjs.map +0 -1
- package/es/src/components.mjs +0 -2
- package/es/src/components.mjs.map +0 -1
- package/es/src/data-chart/index.mjs +0 -2
- package/es/src/data-chart/index.mjs.map +0 -1
- package/es/src/defaults.mjs +0 -2
- package/es/src/defaults.mjs.map +0 -1
- package/es/src/dialog/src/dialog.mjs +0 -2
- package/es/src/dialog/src/dialog.mjs.map +0 -1
- package/es/src/feedback-plugin/index.mjs +0 -2
- package/es/src/feedback-plugin/index.mjs.map +0 -1
- package/es/src/file-upload/index.mjs +0 -2
- package/es/src/file-upload/index.mjs.map +0 -1
- package/es/src/icon/index.mjs +0 -2
- package/es/src/icon/index.mjs.map +0 -1
- package/es/src/icon/src/icon.mjs +0 -2
- package/es/src/icon/src/icon.mjs.map +0 -1
- package/es/src/image-upload/index.mjs +0 -2
- package/es/src/image-upload/index.mjs.map +0 -1
- package/es/src/make-installer.mjs +0 -2
- package/es/src/make-installer.mjs.map +0 -1
- package/es/src/message/src/message.mjs +0 -2
- package/es/src/message/src/message.mjs.map +0 -1
- package/es/src/photo-crop-tool/index.mjs +0 -2
- package/es/src/photo-crop-tool/index.mjs.map +0 -1
- package/es/src/tiny-mce-editor/index.mjs +0 -2
- package/es/src/tiny-mce-editor/index.mjs.map +0 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +0 -2
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +0 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue2.mjs +0 -2
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue2.mjs.map +0 -1
- package/es/src/ui/button/index.mjs +0 -2
- package/es/src/ui/button/index.mjs.map +0 -1
- package/es/src/ui/checkbox/index.mjs +0 -2
- package/es/src/ui/checkbox/index.mjs.map +0 -1
- package/es/src/ui/dialog/index.mjs +0 -2
- package/es/src/ui/dialog/index.mjs.map +0 -1
- package/es/src/ui/input/index.mjs +0 -2
- package/es/src/ui/input/index.mjs.map +0 -1
- package/es/src/ui/input-number/index.mjs +0 -2
- package/es/src/ui/input-number/index.mjs.map +0 -1
- package/es/src/ui/layout/index.mjs +0 -2
- package/es/src/ui/layout/index.mjs.map +0 -1
- package/es/src/ui/link/index.mjs +0 -2
- package/es/src/ui/link/index.mjs.map +0 -1
- package/es/src/ui/popover/index.mjs +0 -2
- package/es/src/ui/popover/index.mjs.map +0 -1
- package/es/src/ui/radio/index.mjs +0 -2
- package/es/src/ui/radio/index.mjs.map +0 -1
- package/es/src/ui/scrollbar/index.mjs +0 -2
- package/es/src/ui/scrollbar/index.mjs.map +0 -1
- package/es/src/ui/select/index.mjs +0 -2
- package/es/src/ui/select/index.mjs.map +0 -1
- package/es/src/ui/table/index.mjs +0 -2
- package/es/src/ui/table/index.mjs.map +0 -1
- package/es/src/ui/tag/index.mjs +0 -2
- package/es/src/ui/tag/index.mjs.map +0 -1
- package/es/src/wc-bridge.mjs +0 -2
- package/es/src/wc-bridge.mjs.map +0 -1
- package/es/src/withInstall.mjs +0 -2
- package/es/src/withInstall.mjs.map +0 -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 +0 -2
- 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 +0 -1
- package/lib/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.es.cjs +0 -2
- package/lib/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.es.cjs.map +0 -1
- package/lib/package.json.cjs +0 -2
- package/lib/package.json.cjs.map +0 -1
- package/lib/src/alert/index.cjs +0 -2
- package/lib/src/alert/index.cjs.map +0 -1
- package/lib/src/alert/src/alert.cjs +0 -2
- package/lib/src/alert/src/alert.cjs.map +0 -1
- package/lib/src/components.cjs +0 -2
- package/lib/src/components.cjs.map +0 -1
- package/lib/src/data-chart/index.cjs +0 -2
- package/lib/src/data-chart/index.cjs.map +0 -1
- package/lib/src/defaults.cjs +0 -2
- package/lib/src/defaults.cjs.map +0 -1
- package/lib/src/dialog/src/dialog.cjs +0 -2
- package/lib/src/dialog/src/dialog.cjs.map +0 -1
- package/lib/src/feedback-plugin/index.cjs +0 -2
- package/lib/src/feedback-plugin/index.cjs.map +0 -1
- package/lib/src/file-upload/index.cjs +0 -2
- package/lib/src/file-upload/index.cjs.map +0 -1
- package/lib/src/icon/index.cjs +0 -2
- package/lib/src/icon/index.cjs.map +0 -1
- package/lib/src/icon/src/icon.cjs +0 -2
- package/lib/src/icon/src/icon.cjs.map +0 -1
- package/lib/src/image-upload/index.cjs +0 -2
- package/lib/src/image-upload/index.cjs.map +0 -1
- package/lib/src/make-installer.cjs +0 -2
- package/lib/src/make-installer.cjs.map +0 -1
- package/lib/src/message/src/message.cjs +0 -2
- package/lib/src/message/src/message.cjs.map +0 -1
- package/lib/src/photo-crop-tool/index.cjs +0 -2
- package/lib/src/photo-crop-tool/index.cjs.map +0 -1
- package/lib/src/tiny-mce-editor/index.cjs +0 -2
- package/lib/src/tiny-mce-editor/index.cjs.map +0 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +0 -2
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +0 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue2.cjs +0 -2
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue2.cjs.map +0 -1
- package/lib/src/ui/button/index.cjs +0 -2
- package/lib/src/ui/button/index.cjs.map +0 -1
- package/lib/src/ui/checkbox/index.cjs +0 -2
- package/lib/src/ui/checkbox/index.cjs.map +0 -1
- package/lib/src/ui/dialog/index.cjs +0 -2
- package/lib/src/ui/dialog/index.cjs.map +0 -1
- package/lib/src/ui/input/index.cjs +0 -2
- package/lib/src/ui/input/index.cjs.map +0 -1
- package/lib/src/ui/input-number/index.cjs +0 -2
- package/lib/src/ui/input-number/index.cjs.map +0 -1
- package/lib/src/ui/layout/index.cjs +0 -2
- package/lib/src/ui/layout/index.cjs.map +0 -1
- package/lib/src/ui/link/index.cjs +0 -2
- package/lib/src/ui/link/index.cjs.map +0 -1
- package/lib/src/ui/popover/index.cjs +0 -2
- package/lib/src/ui/popover/index.cjs.map +0 -1
- package/lib/src/ui/radio/index.cjs +0 -2
- package/lib/src/ui/radio/index.cjs.map +0 -1
- package/lib/src/ui/scrollbar/index.cjs +0 -2
- package/lib/src/ui/scrollbar/index.cjs.map +0 -1
- package/lib/src/ui/select/index.cjs +0 -2
- package/lib/src/ui/select/index.cjs.map +0 -1
- package/lib/src/ui/table/index.cjs +0 -2
- package/lib/src/ui/table/index.cjs.map +0 -1
- package/lib/src/ui/tag/index.cjs +0 -2
- package/lib/src/ui/tag/index.cjs.map +0 -1
- package/lib/src/wc-bridge.cjs +0 -2
- package/lib/src/wc-bridge.cjs.map +0 -1
- package/lib/src/withInstall.cjs +0 -2
- package/lib/src/withInstall.cjs.map +0 -1
- package/types/index.d.ts.map +0 -1
- package/types/src/alert/index.d.ts +0 -66
- package/types/src/alert/index.d.ts.map +0 -1
- package/types/src/alert/src/alert.d.ts +0 -73
- package/types/src/alert/src/alert.d.ts.map +0 -1
- package/types/src/components.d.ts +0 -10
- package/types/src/components.d.ts.map +0 -1
- package/types/src/data-chart/index.d.ts +0 -13
- package/types/src/data-chart/index.d.ts.map +0 -1
- package/types/src/defaults.d.ts +0 -6
- package/types/src/defaults.d.ts.map +0 -1
- package/types/src/dialog/index.d.ts +0 -3
- package/types/src/dialog/index.d.ts.map +0 -1
- package/types/src/dialog/src/dialog.d.ts +0 -25
- package/types/src/dialog/src/dialog.d.ts.map +0 -1
- package/types/src/feedback-plugin/index.d.ts +0 -9
- package/types/src/feedback-plugin/index.d.ts.map +0 -1
- package/types/src/file-upload/index.d.ts +0 -12
- package/types/src/file-upload/index.d.ts.map +0 -1
- package/types/src/icon/index.d.ts +0 -56
- package/types/src/icon/index.d.ts.map +0 -1
- package/types/src/icon/src/icon.d.ts +0 -62
- package/types/src/icon/src/icon.d.ts.map +0 -1
- package/types/src/image-upload/index.d.ts +0 -12
- package/types/src/image-upload/index.d.ts.map +0 -1
- package/types/src/make-installer.d.ts +0 -6
- package/types/src/make-installer.d.ts.map +0 -1
- package/types/src/message/index.d.ts +0 -3
- package/types/src/message/index.d.ts.map +0 -1
- package/types/src/message/src/message.d.ts +0 -21
- package/types/src/message/src/message.d.ts.map +0 -1
- package/types/src/message/src/toaster.vue.d.ts +0 -3
- package/types/src/message/src/toaster.vue.d.ts.map +0 -1
- package/types/src/photo-crop-tool/index.d.ts +0 -12
- package/types/src/photo-crop-tool/index.d.ts.map +0 -1
- package/types/src/subject-action/index.d.ts +0 -93
- package/types/src/subject-action/index.d.ts.map +0 -1
- package/types/src/subject-action/src/subject-action.vue.d.ts +0 -92
- package/types/src/subject-action/src/subject-action.vue.d.ts.map +0 -1
- package/types/src/subject-layout/index.d.ts +0 -30
- package/types/src/subject-layout/index.d.ts.map +0 -1
- package/types/src/subject-layout/src/subject-layout.vue.d.ts +0 -20
- package/types/src/subject-layout/src/subject-layout.vue.d.ts.map +0 -1
- package/types/src/subject-list/index.d.ts +0 -20
- package/types/src/subject-list/index.d.ts.map +0 -1
- package/types/src/subject-list/src/components/SubjectPageEnd.vue.d.ts +0 -24
- package/types/src/subject-list/src/components/SubjectPageEnd.vue.d.ts.map +0 -1
- package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts +0 -32
- package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts.map +0 -1
- package/types/src/subject-list/src/components/subject-scale.vue.d.ts +0 -29
- package/types/src/subject-list/src/components/subject-scale.vue.d.ts.map +0 -1
- package/types/src/subject-list/src/components/subject-single.vue.d.ts +0 -37
- package/types/src/subject-list/src/components/subject-single.vue.d.ts.map +0 -1
- package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts +0 -34
- package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts.map +0 -1
- package/types/src/subject-list/src/subject-list.vue.d.ts +0 -21
- package/types/src/subject-list/src/subject-list.vue.d.ts.map +0 -1
- package/types/src/subject-type/index.d.ts +0 -8
- package/types/src/subject-type/index.d.ts.map +0 -1
- package/types/src/subject-type/src/subject-type.vue.d.ts +0 -7
- package/types/src/subject-type/src/subject-type.vue.d.ts.map +0 -1
- package/types/src/tiny-mce-editor/index.d.ts +0 -20
- package/types/src/tiny-mce-editor/index.d.ts.map +0 -1
- package/types/src/tiny-mce-editor/src/tiny-mce-editor.vue.d.ts +0 -32
- package/types/src/tiny-mce-editor/src/tiny-mce-editor.vue.d.ts.map +0 -1
- package/types/src/ui/button/index.d.ts +0 -96
- package/types/src/ui/button/index.d.ts.map +0 -1
- package/types/src/ui/checkbox/index.d.ts +0 -111
- package/types/src/ui/checkbox/index.d.ts.map +0 -1
- package/types/src/ui/dialog/index.d.ts +0 -134
- package/types/src/ui/dialog/index.d.ts.map +0 -1
- package/types/src/ui/index.d.ts +0 -16
- package/types/src/ui/index.d.ts.map +0 -1
- package/types/src/ui/input/index.d.ts +0 -132
- package/types/src/ui/input/index.d.ts.map +0 -1
- package/types/src/ui/input-number/index.d.ts +0 -106
- package/types/src/ui/input-number/index.d.ts.map +0 -1
- package/types/src/ui/layout/index.d.ts +0 -373
- package/types/src/ui/layout/index.d.ts.map +0 -1
- package/types/src/ui/link/index.d.ts +0 -57
- package/types/src/ui/link/index.d.ts.map +0 -1
- package/types/src/ui/popover/index.d.ts +0 -89
- package/types/src/ui/popover/index.d.ts.map +0 -1
- package/types/src/ui/radio/index.d.ts +0 -84
- package/types/src/ui/radio/index.d.ts.map +0 -1
- package/types/src/ui/scrollbar/index.d.ts +0 -35
- package/types/src/ui/scrollbar/index.d.ts.map +0 -1
- package/types/src/ui/select/index.d.ts +0 -113
- package/types/src/ui/select/index.d.ts.map +0 -1
- package/types/src/ui/table/index.d.ts +0 -152
- package/types/src/ui/table/index.d.ts.map +0 -1
- package/types/src/ui/tag/index.d.ts +0 -69
- package/types/src/ui/tag/index.d.ts.map +0 -1
- package/types/src/wc-bridge.d.ts +0 -23
- package/types/src/wc-bridge.d.ts.map +0 -1
- package/types/src/withInstall.d.ts +0 -4
- package/types/src/withInstall.d.ts.map +0 -1
- package/types/tsconfig.tsbuildinfo +0 -1
package/lib/data-chart.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-chart.cjs","sources":["../../../packages/components/src/data-chart.ts"],"sourcesContent":["import type { EChartsOption } from 'echarts'\nimport * as echarts from 'echarts'\nimport { LitElement, css, html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { safeCustomElement } from './base/define'\n\ntype ShowTypeName =\n | 'bar'\n | 'line'\n | 'pie'\n | 'table'\n | 'area'\n | 'funnel'\n | 'card'\n | 'radar'\n | 'scatter'\n | 'scatter-simple'\n\ntype EChartRow = Record<string, string | number | null | undefined>\n\ntype EChartData = {\n data: EChartRow[]\n desc?: {\n colDesc?: string[]\n groupByDesc?: Array<{\n groupByDesc?: string | null\n groupByValues?: string[] | null\n colDesc: string | null\n xAxis: boolean\n }>\n showDesc?: {\n chartOptions?: string | null\n jsCodeSnippet?: string | null\n showType?: number | null\n }\n }\n}\n\ntype NormalizedData = {\n rows: EChartRow[]\n columns: string[]\n xKey: string\n categories: string[]\n measureKeys: string[]\n seriesGroupKey: string | null\n seriesGroupValues: string[]\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return Object.prototype.toString.call(value) === '[object Object]'\n}\n\nfunction deepMerge<T>(target: T, source: unknown): T {\n if (!isPlainObject(source) || !isPlainObject(target)) {\n return (source as T) ?? target\n }\n\n const output = { ...target } as Record<string, any>\n Object.entries(source).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n output[key] = value.slice()\n return\n }\n\n if (isPlainObject(value) && isPlainObject(output[key])) {\n output[key] = deepMerge(output[key], value)\n return\n }\n\n output[key] = value\n })\n\n return output as T\n}\n\nfunction unique(values: Array<string | number | null | undefined>) {\n return Array.from(new Set(values.filter(value => value !== null && value !== undefined && value !== '').map(value => String(value))))\n}\n\nexport function mergeChartOptionsPatch<T>(baseOptions: T, patchText: string) {\n const normalizedPatchText = patchText?.trim()\n\n if (!normalizedPatchText) {\n return baseOptions\n }\n\n if (!normalizedPatchText.startsWith('{')) {\n console.error(new Error('qxs-data-chart only accepts JSON object patches in jsCodeSnippet'))\n return baseOptions\n }\n\n try {\n return deepMerge(baseOptions, JSON.parse(normalizedPatchText))\n }\n catch (error) {\n console.error(error)\n return baseOptions\n }\n}\n\nfunction sumValues(rows: EChartRow[], key: string) {\n return rows.reduce((sum, row) => sum + Number(row[key] ?? 0), 0)\n}\n\n@safeCustomElement('qxs-data-chart')\nexport class QxsDataChart extends LitElement {\n static styles = css`\n :host {\n display: block;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n min-height: 240px;\n box-sizing: border-box;\n color: #0f172a;\n font-size: 14px;\n }\n\n .wrap {\n display: grid;\n gap: 12px;\n width: 100%;\n min-width: 0;\n height: 100%;\n }\n\n .title {\n font-size: 16px;\n font-weight: 700;\n color: #0f172a;\n }\n\n .chart-host,\n .table-wrap,\n .card-wrap,\n .empty {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n min-height: 240px;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #e2e8f0;\n border-radius: 16px;\n }\n\n .chart-host {\n width: 100%;\n height: 320px;\n }\n\n .empty {\n display: grid;\n place-items: center;\n color: #64748b;\n }\n\n .table-wrap {\n overflow-x: auto;\n overflow-y: auto;\n }\n\n table {\n width: 100%;\n min-width: 100%;\n border-collapse: collapse;\n }\n\n th,\n td {\n padding: 10px 12px;\n text-align: left;\n border-bottom: 1px solid #e2e8f0;\n }\n\n th {\n position: sticky;\n top: 0;\n background: #f8fafc;\n color: #334155;\n font-weight: 700;\n }\n\n .card-wrap {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 12px;\n padding: 12px;\n }\n\n .card-item {\n display: grid;\n gap: 8px;\n padding: 14px;\n background: linear-gradient(135deg, #eff6ff, #ffffff);\n border: 1px solid #dbeafe;\n border-radius: 14px;\n }\n\n .card-title {\n font-size: 14px;\n font-weight: 700;\n color: #1d4ed8;\n }\n\n .card-metric {\n font-size: 13px;\n line-height: 1.6;\n color: #475569;\n }\n `\n\n static geoJsonCache = new Map<string, any>()\n\n @property({ type: String, attribute: 'show-type-name' }) showTypeName: ShowTypeName = 'table'\n @property({ type: String, attribute: 'sub-show-type' }) subShowType = ''\n @property({ type: String, attribute: 'model-name' }) modelName = ''\n @property({ attribute: false }) data: EChartData = {\n data: [],\n desc: {\n colDesc: [],\n groupByDesc: [],\n showDesc: {\n chartOptions: '{}',\n jsCodeSnippet: '',\n showType: null,\n },\n },\n }\n @property({ attribute: false }) chartOptions: EChartsOption = {}\n @property({ type: String, attribute: 'js-code-snippet' }) jsCodeSnippet = ''\n @property({ type: Boolean, attribute: 'lazy-load' }) lazyLoad = true\n @property({ type: String, attribute: 'geo-json-url' }) geoJsonUrl = '/geo-data/china.json'\n\n @state() private _renderError = ''\n\n @query('.chart-host') private _chartHost?: HTMLDivElement\n\n private _chart: echarts.ECharts | null = null\n private _resizeObserver: ResizeObserver | null = null\n private _intersectionObserver: IntersectionObserver | null = null\n private _renderToken = 0\n private _lazyReady = false\n\n get myChart() {\n return this._chart\n }\n\n connectedCallback() {\n super.connectedCallback()\n }\n\n firstUpdated() {\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(() => {\n this._chart?.resize()\n })\n this._resizeObserver.observe(this)\n }\n\n this._syncLazyObserver()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this._resizeObserver?.disconnect()\n this._intersectionObserver?.disconnect()\n this._chart?.dispose()\n this._chart = null\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('lazyLoad')) {\n this._syncLazyObserver()\n }\n\n if (\n changed.has('showTypeName')\n || changed.has('subShowType')\n || changed.has('modelName')\n || changed.has('data')\n || changed.has('chartOptions')\n || changed.has('jsCodeSnippet')\n || changed.has('geoJsonUrl')\n || changed.has('lazyLoad')\n ) {\n this._syncVisualization()\n }\n }\n\n private _syncLazyObserver() {\n this._intersectionObserver?.disconnect()\n this._intersectionObserver = null\n\n if (!this.lazyLoad) {\n this._lazyReady = true\n return\n }\n\n if (typeof IntersectionObserver === 'undefined') {\n this._lazyReady = true\n return\n }\n\n this._lazyReady = false\n this._intersectionObserver = new IntersectionObserver((entries) => {\n if (!entries.some(entry => entry.isIntersecting)) {\n return\n }\n this._lazyReady = true\n this._intersectionObserver?.disconnect()\n this._intersectionObserver = null\n this._syncVisualization()\n })\n this._intersectionObserver.observe(this)\n }\n\n exportExal() {\n const normalized = this._normalizeData()\n if (!normalized.rows.length) {\n return\n }\n\n const headers = normalized.columns\n const lines = [\n headers.join(','),\n ...normalized.rows.map(row => headers.map((header) => {\n const value = row[header] ?? ''\n const text = String(value).replaceAll('\"', '\"\"')\n return `\"${text}\"`\n }).join(',')),\n ]\n\n const blob = new Blob([`\\uFEFF${lines.join('\\n')}`], { type: 'text/csv;charset=utf-8;' })\n const href = URL.createObjectURL(blob)\n const anchor = document.createElement('a')\n anchor.href = href\n anchor.download = `${this.modelName || 'data-chart'}.csv`\n anchor.style.display = 'none'\n document.body.appendChild(anchor)\n anchor.click()\n document.body.removeChild(anchor)\n URL.revokeObjectURL(href)\n }\n\n getMyChart() {\n return this._chart\n }\n\n private _normalizeData(): NormalizedData {\n const rows = Array.isArray(this.data?.data) ? this.data.data : []\n const groupByDesc = this.data?.desc?.groupByDesc ?? []\n const xGroup = groupByDesc.find(item => item.xAxis && item.colDesc) ?? groupByDesc.find(item => item.colDesc) ?? null\n const columns = rows.reduce<string[]>((result, row) => {\n Object.keys(row ?? {}).forEach((key) => {\n if (!result.includes(key)) {\n result.push(key)\n }\n })\n return result\n }, [])\n const xKey = xGroup?.colDesc || columns[0] || ''\n const measureKeys = (this.data?.desc?.colDesc?.length ? this.data.desc.colDesc : columns.filter(key => key !== xKey)).filter(Boolean)\n const categories = unique(rows.map(row => row[xKey]))\n const seriesGroup = groupByDesc.find(item => !item.xAxis && item.colDesc && item.colDesc !== xKey) ?? null\n const seriesGroupKey = seriesGroup?.colDesc ?? null\n const seriesGroupValues = seriesGroupKey ? unique(rows.map(row => row[seriesGroupKey])) : []\n\n return {\n rows,\n columns,\n xKey,\n categories,\n measureKeys,\n seriesGroupKey,\n seriesGroupValues,\n }\n }\n\n private _buildCartesianSeries(normalized: NormalizedData, type: 'bar' | 'line') {\n const { rows, categories, measureKeys, seriesGroupKey, seriesGroupValues, xKey } = normalized\n if (!seriesGroupKey || !seriesGroupValues.length) {\n return measureKeys.map((measure) => {\n const data = categories.map(category => sumValues(rows.filter(row => String(row[xKey] ?? '') === category), measure))\n return {\n name: measure,\n type,\n data,\n ...(type === 'line' && this.subShowType === 'area-basic' ? { areaStyle: {} } : {}),\n }\n })\n }\n\n return seriesGroupValues.flatMap((groupValue) => measureKeys.map((measure) => ({\n name: `${groupValue}-${measure}`,\n type,\n data: categories.map((category) => {\n const scopedRows = rows.filter(row => String(row[xKey] ?? '') === category && String(row[seriesGroupKey] ?? '') === groupValue)\n return sumValues(scopedRows, measure)\n }),\n ...(type === 'line' && this.subShowType === 'area-basic' ? { areaStyle: {} } : {}),\n })))\n }\n\n private _buildChartOptions(normalized: NormalizedData) {\n const { rows, categories, xKey, measureKeys } = normalized\n const firstMeasure = measureKeys[0]\n\n if (!firstMeasure) {\n return null\n }\n\n switch (this.showTypeName) {\n case 'bar': {\n const yCategory = this.subShowType === 'bar-y-category'\n return {\n title: { text: this.modelName },\n tooltip: { trigger: 'axis' },\n legend: { top: 8 },\n grid: { left: 16, right: 16, bottom: 16, top: 48, containLabel: true },\n xAxis: yCategory\n ? { type: 'value' }\n : { type: 'category', data: categories, name: xKey },\n yAxis: yCategory\n ? { type: 'category', data: categories, name: xKey }\n : { type: 'value' },\n series: this._buildCartesianSeries(normalized, 'bar'),\n } satisfies EChartsOption\n }\n case 'line': {\n return {\n title: { text: this.modelName },\n tooltip: { trigger: 'axis' },\n legend: { top: 8 },\n grid: { left: 16, right: 16, bottom: 16, top: 48, containLabel: true },\n xAxis: { type: 'category', data: categories, name: xKey },\n yAxis: { type: 'value' },\n series: this._buildCartesianSeries(normalized, 'line'),\n } satisfies EChartsOption\n }\n case 'pie':\n case 'funnel': {\n const seriesData = categories.map(category => ({\n name: category,\n value: sumValues(rows.filter(row => String(row[xKey] ?? '') === category), firstMeasure),\n }))\n return {\n title: { text: this.modelName },\n tooltip: { trigger: 'item' },\n legend: { top: 8 },\n series: [{\n name: firstMeasure,\n type: this.showTypeName,\n radius: this.showTypeName === 'pie' && this.subShowType === 'pie-borderRadius' ? ['45%', '70%'] : '70%',\n data: seriesData,\n }],\n } satisfies EChartsOption\n }\n case 'radar': {\n const values = categories.map(category => sumValues(rows.filter(row => String(row[xKey] ?? '') === category), firstMeasure))\n const max = Math.max(...values, 0) || 100\n return {\n title: { text: this.modelName },\n tooltip: {},\n radar: {\n indicator: categories.map(category => ({ name: category, max })),\n },\n series: [{\n type: 'radar',\n data: [{ value: values, name: firstMeasure }],\n }],\n } satisfies EChartsOption\n }\n case 'scatter':\n case 'scatter-simple': {\n const xMeasure = measureKeys[0]\n const yMeasure = measureKeys[1] ?? measureKeys[0]\n return {\n title: { text: this.modelName },\n tooltip: {\n trigger: 'item',\n },\n xAxis: { type: 'value', name: xMeasure },\n yAxis: { type: 'value', name: yMeasure },\n series: [{\n type: 'scatter',\n data: rows.map((row, index) => [\n Number(row[xMeasure] ?? index),\n Number(row[yMeasure] ?? 0),\n row[xKey] ?? `${index + 1}`,\n ]),\n }],\n } satisfies EChartsOption\n }\n default:\n return null\n }\n }\n\n private async _buildAreaOptions(normalized: NormalizedData) {\n const firstMeasure = normalized.measureKeys[0]\n if (!firstMeasure) {\n return null\n }\n\n const mapSourceUrl = this.geoJsonUrl || '/geo-data/china.json'\n const geoMeta = await this._ensureGeoJson('china', mapSourceUrl)\n if (!geoMeta) {\n return null\n }\n\n const locationKey = normalized.xKey\n const seriesData = normalized.categories.map(category => ({\n name: category,\n value: sumValues(\n normalized.rows.filter(row => String(row[locationKey] ?? '') === category),\n firstMeasure,\n ),\n }))\n\n return {\n title: { text: this.modelName },\n tooltip: { trigger: 'item' },\n visualMap: {\n min: 0,\n max: Math.max(...seriesData.map(item => Number(item.value)), 0),\n text: ['高', '低'],\n realtime: false,\n calculable: true,\n inRange: {\n color: ['#E8F4FD', '#B8D4F7', '#7BA4F0', '#4A7BE8', '#3562e1'],\n },\n },\n series: [{\n type: 'map',\n map: geoMeta.registrationName,\n roam: true,\n data: seriesData,\n }],\n } satisfies EChartsOption\n }\n\n private async _ensureGeoJson(mapName: string, url: string) {\n const cacheKey = `${mapName}::${url}`\n const registrationName = cacheKey\n\n if (echarts.getMap(registrationName)) {\n return {\n registrationName,\n geoJson: QxsDataChart.geoJsonCache.get(cacheKey) ?? {},\n }\n }\n\n if (QxsDataChart.geoJsonCache.has(cacheKey)) {\n const cached = QxsDataChart.geoJsonCache.get(cacheKey)\n echarts.registerMap(registrationName, cached)\n return {\n registrationName,\n geoJson: cached,\n }\n }\n\n if (typeof fetch === 'undefined') {\n this._renderError = '当前环境不支持地图数据加载'\n return null\n }\n\n try {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`Failed to fetch ${url}`)\n }\n const geoJson = await response.json()\n echarts.registerMap(registrationName, geoJson)\n QxsDataChart.geoJsonCache.set(cacheKey, geoJson)\n return {\n registrationName,\n geoJson,\n }\n }\n catch (error) {\n this._renderError = '地图数据加载失败'\n console.error(error)\n return null\n }\n }\n\n private async _syncVisualization() {\n this._renderError = ''\n if (this.lazyLoad && !this._lazyReady) {\n return\n }\n const normalized = this._normalizeData()\n\n if (!normalized.rows.length) {\n this._chart?.dispose()\n this._chart = null\n return\n }\n\n if (this.showTypeName === 'table' || this.showTypeName === 'card') {\n this._chart?.dispose()\n this._chart = null\n return\n }\n\n await this.updateComplete\n\n if (!this._chartHost) {\n return\n }\n\n if (!this._chart) {\n this._chart = echarts.init(this._chartHost)\n }\n\n const token = ++this._renderToken\n\n let baseOptions: EChartsOption | null = null\n if (this.showTypeName === 'area') {\n baseOptions = await this._buildAreaOptions(normalized)\n }\n else {\n baseOptions = this._buildChartOptions(normalized)\n }\n\n if (token !== this._renderToken || !baseOptions || !this._chart) {\n return\n }\n\n const finalOptions = mergeChartOptionsPatch(deepMerge(baseOptions, this.chartOptions), this.jsCodeSnippet)\n\n this._chart.setOption(finalOptions, true)\n this._chart.resize()\n }\n\n private _renderTable(normalized: NormalizedData) {\n return html`\n <div class=\"table-wrap\" part=\"table\">\n <table>\n <thead>\n <tr>\n ${normalized.columns.map(column => html`<th>${column}</th>`)}\n </tr>\n </thead>\n <tbody>\n ${repeat(normalized.rows, (_, index) => index, (row) => html`\n <tr>\n ${normalized.columns.map(column => html`<td>${row[column] ?? '-'}</td>`)}\n </tr>\n `)}\n </tbody>\n </table>\n </div>\n `\n }\n\n private _renderCards(normalized: NormalizedData) {\n return html`\n <div class=\"card-wrap\" part=\"card-list\">\n ${repeat(normalized.rows, (_, index) => index, (row) => html`\n <article class=\"card-item\" part=\"card-item\">\n <div class=\"card-title\">${normalized.xKey ? row[normalized.xKey] ?? this.modelName : this.modelName}</div>\n ${normalized.measureKeys.map((key) => html`\n <div class=\"card-metric\">${key}: <strong>${row[key] ?? '-'}</strong></div>\n `)}\n </article>\n `)}\n </div>\n `\n }\n\n render() {\n const normalized = this._normalizeData()\n\n return html`\n <div class=\"wrap\">\n ${this.modelName ? html`<div class=\"title\">${this.modelName}</div>` : nothing}\n\n ${!normalized.rows.length\n ? html`<div class=\"empty\">暂无数据</div>`\n : this.showTypeName === 'table'\n ? this._renderTable(normalized)\n : this.showTypeName === 'card'\n ? this._renderCards(normalized)\n : html`<div class=\"chart-host\" part=\"chart\"></div>`}\n\n ${this._renderError ? html`<div class=\"empty\">${this._renderError}</div>` : nothing}\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qxs-data-chart': QxsDataChart\n }\n}\n"],"names":["isPlainObject","value","Object","prototype","toString","call","deepMerge","target","source","output","entries","forEach","_ref","key","Array","isArray","slice","unique","values","from","Set","filter","map","String","mergeChartOptionsPatch","baseOptions","patchText","normalizedPatchText","trim","startsWith","JSON","parse","error","sumValues","rows","reduce","sum","row","Number","QxsDataChart","LitElement","constructor","super","arguments","this","showTypeName","subShowType","modelName","data","desc","colDesc","groupByDesc","showDesc","chartOptions","jsCodeSnippet","showType","lazyLoad","geoJsonUrl","_renderError","_chart","_resizeObserver","_intersectionObserver","_renderToken","_lazyReady","myChart","connectedCallback","firstUpdated","ResizeObserver","resize","observe","_syncLazyObserver","disconnectedCallback","disconnect","dispose","updated","changed","has","_syncVisualization","IntersectionObserver","some","entry","isIntersecting","exportExal","normalized","_normalizeData","length","headers","columns","lines","join","header","replaceAll","blob","Blob","type","href","URL","createObjectURL","anchor","document","createElement","download","style","display","body","appendChild","click","removeChild","revokeObjectURL","getMyChart","xGroup","find","item","xAxis","result","keys","includes","push","xKey","measureKeys","Boolean","categories","seriesGroup","seriesGroupKey","seriesGroupValues","_buildCartesianSeries","flatMap","groupValue","measure","name","category","areaStyle","_buildChartOptions","firstMeasure","yCategory","title","text","tooltip","trigger","legend","top","grid","left","right","bottom","containLabel","yAxis","series","seriesData","radius","max","Math","radar","indicator","xMeasure","yMeasure","index","_buildAreaOptions","mapSourceUrl","geoMeta","_ensureGeoJson","locationKey","visualMap","min","realtime","calculable","inRange","color","registrationName","roam","mapName","url","cacheKey","echarts","getMap","geoJson","geoJsonCache","get","cached","registerMap","fetch","response","ok","Error","json","set","updateComplete","_chartHost","init","token","finalOptions","setOption","_renderTable","html","column","repeat","_","_renderCards","render","nothing","styles","css","Map","__decorateClass","property","attribute","state","query","safeCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-chart.cjs","sources":["../../../packages/components/src/data-chart.ts"],"sourcesContent":["import type { EChartsOption } from 'echarts'\nimport * as echarts from 'echarts'\nimport { LitElement, css, html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { safeCustomElement } from './base/define'\n\ntype ShowTypeName =\n | 'bar'\n | 'line'\n | 'pie'\n | 'table'\n | 'area'\n | 'funnel'\n | 'card'\n | 'radar'\n | 'scatter'\n | 'scatter-simple'\n\ntype EChartRow = Record<string, string | number | null | undefined>\n\ntype EChartData = {\n data: EChartRow[]\n desc?: {\n colDesc?: string[]\n groupByDesc?: Array<{\n groupByDesc?: string | null\n groupByValues?: string[] | null\n colDesc: string | null\n xAxis: boolean\n }>\n showDesc?: {\n chartOptions?: string | null\n jsCodeSnippet?: string | null\n showType?: number | null\n }\n }\n}\n\ntype NormalizedData = {\n rows: EChartRow[]\n columns: string[]\n xKey: string\n categories: string[]\n measureKeys: string[]\n seriesGroupKey: string | null\n seriesGroupValues: string[]\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return Object.prototype.toString.call(value) === '[object Object]'\n}\n\nfunction deepMerge<T>(target: T, source: unknown): T {\n if (!isPlainObject(source) || !isPlainObject(target)) {\n return (source as T) ?? target\n }\n\n const output = { ...target } as Record<string, any>\n Object.entries(source).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n output[key] = value.slice()\n return\n }\n\n if (isPlainObject(value) && isPlainObject(output[key])) {\n output[key] = deepMerge(output[key], value)\n return\n }\n\n output[key] = value\n })\n\n return output as T\n}\n\nfunction unique(values: Array<string | number | null | undefined>) {\n return Array.from(new Set(values.filter(value => value !== null && value !== undefined && value !== '').map(value => String(value))))\n}\n\nexport function mergeChartOptionsPatch<T>(baseOptions: T, patchText: string) {\n const normalizedPatchText = patchText?.trim()\n\n if (!normalizedPatchText) {\n return baseOptions\n }\n\n if (!normalizedPatchText.startsWith('{')) {\n console.error(new Error('qxs-data-chart only accepts JSON object patches in jsCodeSnippet'))\n return baseOptions\n }\n\n try {\n return deepMerge(baseOptions, JSON.parse(normalizedPatchText))\n }\n catch (error) {\n console.error(error)\n return baseOptions\n }\n}\n\nfunction sumValues(rows: EChartRow[], key: string) {\n return rows.reduce((sum, row) => sum + Number(row[key] ?? 0), 0)\n}\n\n@safeCustomElement('qxs-data-chart')\nexport class QxsDataChart extends LitElement {\n static styles = css`\n :host {\n display: block;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n min-height: 240px;\n box-sizing: border-box;\n color: #0f172a;\n font-size: 14px;\n }\n\n .wrap {\n display: grid;\n gap: 12px;\n width: 100%;\n min-width: 0;\n height: 100%;\n }\n\n .title {\n font-size: 16px;\n font-weight: 700;\n color: #0f172a;\n }\n\n .chart-host,\n .table-wrap,\n .card-wrap,\n .empty {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n min-height: 240px;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #e2e8f0;\n border-radius: 16px;\n }\n\n .chart-host {\n width: 100%;\n height: 320px;\n }\n\n .empty {\n display: grid;\n place-items: center;\n color: #64748b;\n }\n\n .table-wrap {\n overflow-x: auto;\n overflow-y: auto;\n }\n\n table {\n width: 100%;\n min-width: 100%;\n border-collapse: collapse;\n }\n\n th,\n td {\n padding: 10px 12px;\n text-align: left;\n border-bottom: 1px solid #e2e8f0;\n }\n\n th {\n position: sticky;\n top: 0;\n background: #f8fafc;\n color: #334155;\n font-weight: 700;\n }\n\n .card-wrap {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 12px;\n padding: 12px;\n }\n\n .card-item {\n display: grid;\n gap: 8px;\n padding: 14px;\n background: linear-gradient(135deg, #eff6ff, #ffffff);\n border: 1px solid #dbeafe;\n border-radius: 14px;\n }\n\n .card-title {\n font-size: 14px;\n font-weight: 700;\n color: #1d4ed8;\n }\n\n .card-metric {\n font-size: 13px;\n line-height: 1.6;\n color: #475569;\n }\n `\n\n static geoJsonCache = new Map<string, any>()\n\n @property({ type: String, attribute: 'show-type-name' }) showTypeName: ShowTypeName = 'table'\n @property({ type: String, attribute: 'sub-show-type' }) subShowType = ''\n @property({ type: String, attribute: 'model-name' }) modelName = ''\n @property({ attribute: false }) data: EChartData = {\n data: [],\n desc: {\n colDesc: [],\n groupByDesc: [],\n showDesc: {\n chartOptions: '{}',\n jsCodeSnippet: '',\n showType: null,\n },\n },\n }\n @property({ attribute: false }) chartOptions: EChartsOption = {}\n @property({ type: String, attribute: 'js-code-snippet' }) jsCodeSnippet = ''\n @property({ type: Boolean, attribute: 'lazy-load' }) lazyLoad = true\n @property({ type: String, attribute: 'geo-json-url' }) geoJsonUrl = '/geo-data/china.json'\n\n @state() private _renderError = ''\n\n @query('.chart-host') private _chartHost?: HTMLDivElement\n\n private _chart: echarts.ECharts | null = null\n private _resizeObserver: ResizeObserver | null = null\n private _intersectionObserver: IntersectionObserver | null = null\n private _renderToken = 0\n private _lazyReady = false\n\n get myChart() {\n return this._chart\n }\n\n connectedCallback() {\n super.connectedCallback()\n }\n\n firstUpdated() {\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(() => {\n this._chart?.resize()\n })\n this._resizeObserver.observe(this)\n }\n\n this._syncLazyObserver()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this._resizeObserver?.disconnect()\n this._intersectionObserver?.disconnect()\n this._chart?.dispose()\n this._chart = null\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('lazyLoad')) {\n this._syncLazyObserver()\n }\n\n if (\n changed.has('showTypeName')\n || changed.has('subShowType')\n || changed.has('modelName')\n || changed.has('data')\n || changed.has('chartOptions')\n || changed.has('jsCodeSnippet')\n || changed.has('geoJsonUrl')\n || changed.has('lazyLoad')\n ) {\n this._syncVisualization()\n }\n }\n\n private _syncLazyObserver() {\n this._intersectionObserver?.disconnect()\n this._intersectionObserver = null\n\n if (!this.lazyLoad) {\n this._lazyReady = true\n return\n }\n\n if (typeof IntersectionObserver === 'undefined') {\n this._lazyReady = true\n return\n }\n\n this._lazyReady = false\n this._intersectionObserver = new IntersectionObserver((entries) => {\n if (!entries.some(entry => entry.isIntersecting)) {\n return\n }\n this._lazyReady = true\n this._intersectionObserver?.disconnect()\n this._intersectionObserver = null\n this._syncVisualization()\n })\n this._intersectionObserver.observe(this)\n }\n\n exportExal() {\n const normalized = this._normalizeData()\n if (!normalized.rows.length) {\n return\n }\n\n const headers = normalized.columns\n const lines = [\n headers.join(','),\n ...normalized.rows.map(row => headers.map((header) => {\n const value = row[header] ?? ''\n const text = String(value).replaceAll('\"', '\"\"')\n return `\"${text}\"`\n }).join(',')),\n ]\n\n const blob = new Blob([`\\uFEFF${lines.join('\\n')}`], { type: 'text/csv;charset=utf-8;' })\n const href = URL.createObjectURL(blob)\n const anchor = document.createElement('a')\n anchor.href = href\n anchor.download = `${this.modelName || 'data-chart'}.csv`\n anchor.style.display = 'none'\n document.body.appendChild(anchor)\n anchor.click()\n document.body.removeChild(anchor)\n URL.revokeObjectURL(href)\n }\n\n getMyChart() {\n return this._chart\n }\n\n private _normalizeData(): NormalizedData {\n const rows = Array.isArray(this.data?.data) ? this.data.data : []\n const groupByDesc = this.data?.desc?.groupByDesc ?? []\n const xGroup = groupByDesc.find(item => item.xAxis && item.colDesc) ?? groupByDesc.find(item => item.colDesc) ?? null\n const columns = rows.reduce<string[]>((result, row) => {\n Object.keys(row ?? {}).forEach((key) => {\n if (!result.includes(key)) {\n result.push(key)\n }\n })\n return result\n }, [])\n const xKey = xGroup?.colDesc || columns[0] || ''\n const measureKeys = (this.data?.desc?.colDesc?.length ? this.data.desc.colDesc : columns.filter(key => key !== xKey)).filter(Boolean)\n const categories = unique(rows.map(row => row[xKey]))\n const seriesGroup = groupByDesc.find(item => !item.xAxis && item.colDesc && item.colDesc !== xKey) ?? null\n const seriesGroupKey = seriesGroup?.colDesc ?? null\n const seriesGroupValues = seriesGroupKey ? unique(rows.map(row => row[seriesGroupKey])) : []\n\n return {\n rows,\n columns,\n xKey,\n categories,\n measureKeys,\n seriesGroupKey,\n seriesGroupValues,\n }\n }\n\n private _buildCartesianSeries(normalized: NormalizedData, type: 'bar' | 'line') {\n const { rows, categories, measureKeys, seriesGroupKey, seriesGroupValues, xKey } = normalized\n if (!seriesGroupKey || !seriesGroupValues.length) {\n return measureKeys.map((measure) => {\n const data = categories.map(category => sumValues(rows.filter(row => String(row[xKey] ?? '') === category), measure))\n return {\n name: measure,\n type,\n data,\n ...(type === 'line' && this.subShowType === 'area-basic' ? { areaStyle: {} } : {}),\n }\n })\n }\n\n return seriesGroupValues.flatMap((groupValue) => measureKeys.map((measure) => ({\n name: `${groupValue}-${measure}`,\n type,\n data: categories.map((category) => {\n const scopedRows = rows.filter(row => String(row[xKey] ?? '') === category && String(row[seriesGroupKey] ?? '') === groupValue)\n return sumValues(scopedRows, measure)\n }),\n ...(type === 'line' && this.subShowType === 'area-basic' ? { areaStyle: {} } : {}),\n })))\n }\n\n private _buildChartOptions(normalized: NormalizedData) {\n const { rows, categories, xKey, measureKeys } = normalized\n const firstMeasure = measureKeys[0]\n\n if (!firstMeasure) {\n return null\n }\n\n switch (this.showTypeName) {\n case 'bar': {\n const yCategory = this.subShowType === 'bar-y-category'\n return {\n title: { text: this.modelName },\n tooltip: { trigger: 'axis' },\n legend: { top: 8 },\n grid: { left: 16, right: 16, bottom: 16, top: 48, containLabel: true },\n xAxis: yCategory\n ? { type: 'value' }\n : { type: 'category', data: categories, name: xKey },\n yAxis: yCategory\n ? { type: 'category', data: categories, name: xKey }\n : { type: 'value' },\n series: this._buildCartesianSeries(normalized, 'bar'),\n } satisfies EChartsOption\n }\n case 'line': {\n return {\n title: { text: this.modelName },\n tooltip: { trigger: 'axis' },\n legend: { top: 8 },\n grid: { left: 16, right: 16, bottom: 16, top: 48, containLabel: true },\n xAxis: { type: 'category', data: categories, name: xKey },\n yAxis: { type: 'value' },\n series: this._buildCartesianSeries(normalized, 'line'),\n } satisfies EChartsOption\n }\n case 'pie':\n case 'funnel': {\n const seriesData = categories.map(category => ({\n name: category,\n value: sumValues(rows.filter(row => String(row[xKey] ?? '') === category), firstMeasure),\n }))\n return {\n title: { text: this.modelName },\n tooltip: { trigger: 'item' },\n legend: { top: 8 },\n series: [{\n name: firstMeasure,\n type: this.showTypeName,\n radius: this.showTypeName === 'pie' && this.subShowType === 'pie-borderRadius' ? ['45%', '70%'] : '70%',\n data: seriesData,\n }],\n } satisfies EChartsOption\n }\n case 'radar': {\n const values = categories.map(category => sumValues(rows.filter(row => String(row[xKey] ?? '') === category), firstMeasure))\n const max = Math.max(...values, 0) || 100\n return {\n title: { text: this.modelName },\n tooltip: {},\n radar: {\n indicator: categories.map(category => ({ name: category, max })),\n },\n series: [{\n type: 'radar',\n data: [{ value: values, name: firstMeasure }],\n }],\n } satisfies EChartsOption\n }\n case 'scatter':\n case 'scatter-simple': {\n const xMeasure = measureKeys[0]\n const yMeasure = measureKeys[1] ?? measureKeys[0]\n return {\n title: { text: this.modelName },\n tooltip: {\n trigger: 'item',\n },\n xAxis: { type: 'value', name: xMeasure },\n yAxis: { type: 'value', name: yMeasure },\n series: [{\n type: 'scatter',\n data: rows.map((row, index) => [\n Number(row[xMeasure] ?? index),\n Number(row[yMeasure] ?? 0),\n row[xKey] ?? `${index + 1}`,\n ]),\n }],\n } satisfies EChartsOption\n }\n default:\n return null\n }\n }\n\n private async _buildAreaOptions(normalized: NormalizedData) {\n const firstMeasure = normalized.measureKeys[0]\n if (!firstMeasure) {\n return null\n }\n\n const mapSourceUrl = this.geoJsonUrl || '/geo-data/china.json'\n const geoMeta = await this._ensureGeoJson('china', mapSourceUrl)\n if (!geoMeta) {\n return null\n }\n\n const locationKey = normalized.xKey\n const seriesData = normalized.categories.map(category => ({\n name: category,\n value: sumValues(\n normalized.rows.filter(row => String(row[locationKey] ?? '') === category),\n firstMeasure,\n ),\n }))\n\n return {\n title: { text: this.modelName },\n tooltip: { trigger: 'item' },\n visualMap: {\n min: 0,\n max: Math.max(...seriesData.map(item => Number(item.value)), 0),\n text: ['高', '低'],\n realtime: false,\n calculable: true,\n inRange: {\n color: ['#E8F4FD', '#B8D4F7', '#7BA4F0', '#4A7BE8', '#3562e1'],\n },\n },\n series: [{\n type: 'map',\n map: geoMeta.registrationName,\n roam: true,\n data: seriesData,\n }],\n } satisfies EChartsOption\n }\n\n private async _ensureGeoJson(mapName: string, url: string) {\n const cacheKey = `${mapName}::${url}`\n const registrationName = cacheKey\n\n if (echarts.getMap(registrationName)) {\n return {\n registrationName,\n geoJson: QxsDataChart.geoJsonCache.get(cacheKey) ?? {},\n }\n }\n\n if (QxsDataChart.geoJsonCache.has(cacheKey)) {\n const cached = QxsDataChart.geoJsonCache.get(cacheKey)\n echarts.registerMap(registrationName, cached)\n return {\n registrationName,\n geoJson: cached,\n }\n }\n\n if (typeof fetch === 'undefined') {\n this._renderError = '当前环境不支持地图数据加载'\n return null\n }\n\n try {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`Failed to fetch ${url}`)\n }\n const geoJson = await response.json()\n echarts.registerMap(registrationName, geoJson)\n QxsDataChart.geoJsonCache.set(cacheKey, geoJson)\n return {\n registrationName,\n geoJson,\n }\n }\n catch (error) {\n this._renderError = '地图数据加载失败'\n console.error(error)\n return null\n }\n }\n\n private async _syncVisualization() {\n this._renderError = ''\n if (this.lazyLoad && !this._lazyReady) {\n return\n }\n const normalized = this._normalizeData()\n\n if (!normalized.rows.length) {\n this._chart?.dispose()\n this._chart = null\n return\n }\n\n if (this.showTypeName === 'table' || this.showTypeName === 'card') {\n this._chart?.dispose()\n this._chart = null\n return\n }\n\n await this.updateComplete\n\n if (!this._chartHost) {\n return\n }\n\n if (!this._chart) {\n this._chart = echarts.init(this._chartHost)\n }\n\n const token = ++this._renderToken\n\n let baseOptions: EChartsOption | null = null\n if (this.showTypeName === 'area') {\n baseOptions = await this._buildAreaOptions(normalized)\n }\n else {\n baseOptions = this._buildChartOptions(normalized)\n }\n\n if (token !== this._renderToken || !baseOptions || !this._chart) {\n return\n }\n\n const finalOptions = mergeChartOptionsPatch(deepMerge(baseOptions, this.chartOptions), this.jsCodeSnippet)\n\n this._chart.setOption(finalOptions, true)\n this._chart.resize()\n }\n\n private _renderTable(normalized: NormalizedData) {\n return html`\n <div class=\"table-wrap\" part=\"table\">\n <table>\n <thead>\n <tr>\n ${normalized.columns.map(column => html`<th>${column}</th>`)}\n </tr>\n </thead>\n <tbody>\n ${repeat(normalized.rows, (_, index) => index, (row) => html`\n <tr>\n ${normalized.columns.map(column => html`<td>${row[column] ?? '-'}</td>`)}\n </tr>\n `)}\n </tbody>\n </table>\n </div>\n `\n }\n\n private _renderCards(normalized: NormalizedData) {\n return html`\n <div class=\"card-wrap\" part=\"card-list\">\n ${repeat(normalized.rows, (_, index) => index, (row) => html`\n <article class=\"card-item\" part=\"card-item\">\n <div class=\"card-title\">${normalized.xKey ? row[normalized.xKey] ?? this.modelName : this.modelName}</div>\n ${normalized.measureKeys.map((key) => html`\n <div class=\"card-metric\">${key}: <strong>${row[key] ?? '-'}</strong></div>\n `)}\n </article>\n `)}\n </div>\n `\n }\n\n render() {\n const normalized = this._normalizeData()\n\n return html`\n <div class=\"wrap\">\n ${this.modelName ? html`<div class=\"title\">${this.modelName}</div>` : nothing}\n\n ${!normalized.rows.length\n ? html`<div class=\"empty\">暂无数据</div>`\n : this.showTypeName === 'table'\n ? this._renderTable(normalized)\n : this.showTypeName === 'card'\n ? this._renderCards(normalized)\n : html`<div class=\"chart-host\" part=\"chart\"></div>`}\n\n ${this._renderError ? html`<div class=\"empty\">${this._renderError}</div>` : nothing}\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qxs-data-chart': QxsDataChart\n }\n}\n"],"names":["isPlainObject","value","deepMerge","target","source","output","key","unique","values","mergeChartOptionsPatch","baseOptions","patchText","normalizedPatchText","sumValues","rows","sum","row","QxsDataChart","LitElement","changed","entries","entry","normalized","headers","lines","header","blob","href","anchor","groupByDesc","xGroup","item","columns","result","xKey","measureKeys","categories","seriesGroupKey","seriesGroupValues","type","measure","data","category","groupValue","scopedRows","firstMeasure","yCategory","seriesData","max","xMeasure","yMeasure","index","mapSourceUrl","geoMeta","locationKey","mapName","url","cacheKey","registrationName","echarts","cached","response","geoJson","token","finalOptions","html","column","repeat","_","nothing","css","__decorateClass","property","state","query","safeCustomElement"],"mappings":"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"}
|