@aithe/aithe-ui 26.2.3 → 26.3.1
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 +16 -11
- package/dist/apps/admin/app.js +12 -0
- package/dist/apps/admin/components/admin-app.js +83 -0
- package/dist/apps/admin/components/admin-layout.d.ts +0 -1
- package/dist/apps/admin/components/admin-layout.d.ts.map +1 -1
- package/dist/apps/admin/components/admin-layout.js +250 -0
- package/dist/apps/admin/datahub/auth.js +24 -0
- package/dist/apps/admin/datahub/dashboard.js +16 -0
- package/dist/apps/admin/datahub/index.js +42 -0
- package/dist/apps/admin/datahub/menu.js +16 -0
- package/dist/apps/admin/datahub/mock/auth.js +11 -0
- package/dist/apps/admin/datahub/mock/dashboard.js +10 -0
- package/dist/apps/admin/datahub/mock/menu.js +42 -0
- package/dist/apps/admin/i18n/de-DE.js +37 -0
- package/dist/apps/admin/i18n/en-US.js +37 -0
- package/dist/apps/admin/i18n/es-ES.js +38 -0
- package/dist/apps/admin/i18n/fr-FR.js +37 -0
- package/dist/apps/admin/i18n/index.js +27 -0
- package/dist/apps/admin/i18n/ja-JP.js +38 -0
- package/dist/apps/admin/i18n/ko-KR.js +37 -0
- package/dist/apps/admin/i18n/pt-BR.js +37 -0
- package/dist/apps/admin/i18n/zh-CN.js +37 -0
- package/dist/apps/admin/i18n/zh-HK.js +37 -0
- package/dist/apps/admin/i18n/zh-TW.js +37 -0
- package/dist/apps/admin/pages/dashboard-page.d.ts +1 -0
- package/dist/apps/admin/pages/dashboard-page.d.ts.map +1 -1
- package/dist/apps/admin/pages/dashboard-page.js +199 -0
- package/dist/apps/admin/pages/login-page.js +278 -0
- package/dist/apps/admin/pages/not-found-page.js +57 -0
- package/dist/apps/admin/pages/role-page.js +76 -0
- package/dist/apps/admin/pages/settings-page.js +95 -0
- package/dist/apps/admin/pages/user-page.js +76 -0
- package/dist/apps/admin/router/index.js +43 -0
- package/dist/apps/admin/standalone.js +1 -0
- package/dist/apps/admin/store/auth.js +42 -0
- package/dist/apps/api/app.js +82 -0
- package/dist/apps/api/demo-data.d.ts.map +1 -1
- package/dist/apps/api/demo-data.js +965 -0
- package/dist/apps/api/docs-viewer.js +684 -0
- package/dist/apps/api/i18n/de-DE.d.ts.map +1 -1
- package/dist/apps/api/i18n/de-DE.js +130 -0
- package/dist/apps/api/i18n/en-US.d.ts.map +1 -1
- package/dist/apps/api/i18n/en-US.js +140 -0
- package/dist/apps/api/i18n/es-ES.d.ts.map +1 -1
- package/dist/apps/api/i18n/es-ES.js +130 -0
- package/dist/apps/api/i18n/fr-FR.d.ts.map +1 -1
- package/dist/apps/api/i18n/fr-FR.js +130 -0
- package/dist/apps/api/i18n/index.js +27 -0
- package/dist/apps/api/i18n/ja-JP.d.ts.map +1 -1
- package/dist/apps/api/i18n/ja-JP.js +130 -0
- package/dist/apps/api/i18n/ko-KR.d.ts.map +1 -1
- package/dist/apps/api/i18n/ko-KR.js +130 -0
- package/dist/apps/api/i18n/pt-BR.d.ts.map +1 -1
- package/dist/apps/api/i18n/pt-BR.js +130 -0
- package/dist/apps/api/i18n/zh-CN.d.ts.map +1 -1
- package/dist/apps/api/i18n/zh-CN.js +140 -0
- package/dist/apps/api/i18n/zh-HK.d.ts.map +1 -1
- package/dist/apps/api/i18n/zh-HK.js +130 -0
- package/dist/apps/api/i18n/zh-TW.d.ts.map +1 -1
- package/dist/apps/api/i18n/zh-TW.js +130 -0
- package/dist/apps/api/pages/docs.d.ts.map +1 -1
- package/dist/apps/api/pages/docs.js +367 -0
- package/dist/apps/api/standalone.js +1 -0
- package/dist/apps/demo/app.js +273 -0
- package/dist/apps/demo/editor.d.ts.map +1 -1
- package/dist/apps/demo/editor.js +270 -0
- package/dist/apps/demo/helpers.js +7 -0
- package/dist/apps/demo/i18n/de-DE.d.ts.map +1 -1
- package/dist/apps/demo/i18n/de-DE.js +269 -0
- package/dist/apps/demo/i18n/en-US.d.ts.map +1 -1
- package/dist/apps/demo/i18n/en-US.js +281 -0
- package/dist/apps/demo/i18n/es-ES.d.ts.map +1 -1
- package/dist/apps/demo/i18n/es-ES.js +269 -0
- package/dist/apps/demo/i18n/fr-FR.d.ts.map +1 -1
- package/dist/apps/demo/i18n/fr-FR.js +269 -0
- package/dist/apps/demo/i18n/index.js +27 -0
- package/dist/apps/demo/i18n/ja-JP.d.ts.map +1 -1
- package/dist/apps/demo/i18n/ja-JP.js +269 -0
- package/dist/apps/demo/i18n/ko-KR.d.ts.map +1 -1
- package/dist/apps/demo/i18n/ko-KR.js +269 -0
- package/dist/apps/demo/i18n/pt-BR.d.ts.map +1 -1
- package/dist/apps/demo/i18n/pt-BR.js +269 -0
- package/dist/apps/demo/i18n/zh-CN.d.ts.map +1 -1
- package/dist/apps/demo/i18n/zh-CN.js +281 -0
- package/dist/apps/demo/i18n/zh-HK.d.ts.map +1 -1
- package/dist/apps/demo/i18n/zh-HK.js +269 -0
- package/dist/apps/demo/i18n/zh-TW.d.ts.map +1 -1
- package/dist/apps/demo/i18n/zh-TW.js +269 -0
- package/dist/apps/demo/pages/autoform.js +412 -0
- package/dist/apps/demo/pages/basic.js +157 -0
- package/dist/apps/demo/pages/code.js +1088 -0
- package/dist/apps/demo/pages/container.js +42 -0
- package/dist/apps/demo/pages/dashboard.js +159 -0
- package/dist/apps/demo/pages/data.d.ts.map +1 -1
- package/dist/apps/demo/pages/data.js +327 -0
- package/dist/apps/demo/pages/display.d.ts.map +1 -1
- package/dist/apps/demo/pages/display.js +295 -0
- package/dist/apps/demo/pages/feedback.js +94 -0
- package/dist/apps/demo/pages/form.js +99 -0
- package/dist/apps/demo/pages/layout.js +74 -0
- package/dist/apps/demo/pages/navigation.js +54 -0
- package/dist/apps/demo/pages/progress.js +42 -0
- package/dist/apps/demo/pages/theme.js +126 -0
- package/dist/apps/demo/standalone.js +1 -0
- package/dist/components/basic/AGENTS.md +1 -0
- package/dist/components/basic/avatar.js +168 -0
- package/dist/components/basic/badge.js +157 -0
- package/dist/components/basic/button-group.js +70 -0
- package/dist/components/basic/button.d.ts +2 -4
- package/dist/components/basic/button.d.ts.map +1 -1
- package/dist/components/basic/button.js +315 -0
- package/dist/components/basic/card.js +186 -0
- package/dist/components/basic/chip.js +103 -0
- package/dist/components/basic/divider.js +127 -0
- package/dist/components/basic/empty.js +72 -0
- package/dist/components/basic/icon.js +129 -0
- package/dist/components/basic/input.d.ts.map +1 -1
- package/dist/components/basic/input.js +314 -0
- package/dist/components/basic/tag.d.ts +7 -2
- package/dist/components/basic/tag.d.ts.map +1 -1
- package/dist/components/basic/tag.js +248 -0
- package/dist/components/basic/textarea.d.ts +0 -1
- package/dist/components/basic/textarea.d.ts.map +1 -1
- package/dist/components/basic/textarea.js +130 -0
- package/dist/components/container/callout.js +108 -0
- package/dist/components/container/details.js +117 -0
- package/dist/components/container/scroller.js +144 -0
- package/dist/components/container/split-panel.js +150 -0
- package/dist/components/data/AGENTS.md +1 -1
- package/dist/components/data/box-table.d.ts +53 -0
- package/dist/components/data/box-table.d.ts.map +1 -0
- package/dist/components/data/box-table.js +220 -0
- package/dist/components/data/dropdown.d.ts +8 -5
- package/dist/components/data/dropdown.d.ts.map +1 -1
- package/dist/components/data/dropdown.js +219 -0
- package/dist/components/data/metrics-group.js +180 -0
- package/dist/components/data/metrics.d.ts +11 -0
- package/dist/components/data/metrics.d.ts.map +1 -1
- package/dist/components/data/metrics.js +309 -0
- package/dist/components/data/pagination.js +119 -0
- package/dist/components/data/tab-pane.d.ts +58 -12
- package/dist/components/data/tab-pane.d.ts.map +1 -1
- package/dist/components/data/tab-pane.js +130 -0
- package/dist/components/data/table-column.d.ts +29 -5
- package/dist/components/data/table-column.d.ts.map +1 -1
- package/dist/components/data/table-column.js +123 -0
- package/dist/components/data/table.d.ts +134 -54
- package/dist/components/data/table.d.ts.map +1 -1
- package/dist/components/data/table.js +1210 -0
- package/dist/components/data/tabs.d.ts +60 -3
- package/dist/components/data/tabs.d.ts.map +1 -1
- package/dist/components/data/tabs.js +416 -0
- package/dist/components/data/timeline-item.js +127 -0
- package/dist/components/data/timeline.js +204 -0
- package/dist/components/data/tree-menu.d.ts +12 -2
- package/dist/components/data/tree-menu.d.ts.map +1 -1
- package/dist/components/data/tree-menu.js +482 -0
- package/dist/components/data/tree.js +269 -0
- package/dist/components/display/AGENTS.md +5 -2
- package/dist/components/display/animated-image.js +98 -0
- package/dist/components/display/brief-box.d.ts +42 -0
- package/dist/components/display/brief-box.d.ts.map +1 -0
- package/dist/components/display/brief-box.js +117 -0
- package/dist/components/display/carousel.js +223 -0
- package/dist/components/display/code-editor.d.ts.map +1 -1
- package/dist/components/display/code-editor.js +976 -0
- package/dist/components/display/comparison.js +132 -0
- package/dist/components/display/desc-item.d.ts +48 -0
- package/dist/components/display/desc-item.d.ts.map +1 -0
- package/dist/components/display/desc-item.js +150 -0
- package/dist/components/display/desc.d.ts +64 -0
- package/dist/components/display/desc.d.ts.map +1 -0
- package/dist/components/display/desc.js +363 -0
- package/dist/components/display/detail-box.d.ts +51 -0
- package/dist/components/display/detail-box.d.ts.map +1 -0
- package/dist/components/display/detail-box.js +157 -0
- package/dist/components/display/label.js +166 -0
- package/dist/components/display/markdown-editor.js +319 -0
- package/dist/components/display/markdown.d.ts.map +1 -1
- package/dist/components/display/markdown.js +193 -0
- package/dist/components/display/mini-box.d.ts +31 -0
- package/dist/components/display/mini-box.d.ts.map +1 -0
- package/dist/components/display/mini-box.js +137 -0
- package/dist/components/display/profile.d.ts +18 -0
- package/dist/components/display/profile.d.ts.map +1 -0
- package/dist/components/display/profile.js +164 -0
- package/dist/components/feedback/AGENTS.md +1 -0
- package/dist/components/feedback/alert.js +150 -0
- package/dist/components/feedback/dialog.js +228 -0
- package/dist/components/feedback/drawer.d.ts.map +1 -1
- package/dist/components/feedback/drawer.js +338 -0
- package/dist/components/feedback/loading.js +130 -0
- package/dist/components/feedback/modal.d.ts.map +1 -1
- package/dist/components/feedback/modal.js +303 -0
- package/dist/components/feedback/notification.js +170 -0
- package/dist/components/feedback/popover.d.ts +1 -1
- package/dist/components/feedback/popover.js +124 -0
- package/dist/components/feedback/toast.js +142 -0
- package/dist/components/feedback/tooltip.d.ts +1 -1
- package/dist/components/feedback/tooltip.js +153 -0
- package/dist/components/form/AGENTS.md +4 -0
- package/dist/components/form/autoform-item.js +761 -0
- package/dist/components/form/autoform.d.ts +15 -5
- package/dist/components/form/autoform.d.ts.map +1 -1
- package/dist/components/form/autoform.js +303 -0
- package/dist/components/form/checkbox-group.js +118 -0
- package/dist/components/form/checkbox.js +123 -0
- package/dist/components/form/color-picker.js +148 -0
- package/dist/components/form/combobox.d.ts.map +1 -1
- package/dist/components/form/combobox.js +282 -0
- package/dist/components/form/date-picker.js +123 -0
- package/dist/components/form/form-item.d.ts.map +1 -1
- package/dist/components/form/form-item.js +141 -0
- package/dist/components/form/form.js +94 -0
- package/dist/components/form/radio-group.js +106 -0
- package/dist/components/form/radio.js +110 -0
- package/dist/components/form/rate.js +116 -0
- package/dist/components/form/select.d.ts +1 -1
- package/dist/components/form/select.js +495 -0
- package/dist/components/form/slider.js +134 -0
- package/dist/components/form/switch.js +146 -0
- package/dist/components/form/time-picker.js +92 -0
- package/dist/components/form/transfer.js +273 -0
- package/dist/components/form/upload.js +138 -0
- package/dist/components/framework/body.js +333 -0
- package/dist/components/framework/dashboard-panel.js +519 -0
- package/dist/components/framework/dashboard.d.ts.map +1 -1
- package/dist/components/framework/dashboard.js +1084 -0
- package/dist/components/framework/header.js +237 -0
- package/dist/components/framework/log-panel.js +637 -0
- package/dist/components/framework/page.js +151 -0
- package/dist/components/framework/sidebar.d.ts +4 -10
- package/dist/components/framework/sidebar.d.ts.map +1 -1
- package/dist/components/framework/sidebar.js +477 -0
- package/dist/components/layout/affix.js +137 -0
- package/dist/components/layout/col.js +103 -0
- package/dist/components/layout/collapse-item.js +165 -0
- package/dist/components/layout/collapse.js +108 -0
- package/dist/components/layout/container.js +92 -0
- package/dist/components/layout/flex.js +100 -0
- package/dist/components/layout/row.js +103 -0
- package/dist/components/layout/space.js +85 -0
- package/dist/components/navigation/back-top.js +127 -0
- package/dist/components/navigation/breadcrumb-item.js +108 -0
- package/dist/components/navigation/breadcrumb.js +70 -0
- package/dist/components/navigation/menu-item.js +181 -0
- package/dist/components/navigation/menu.js +126 -0
- package/dist/components/navigation/steps.js +183 -0
- package/dist/components/navigation/sub-menu.js +253 -0
- package/dist/components/progress/progress-bar.js +97 -0
- package/dist/components/progress/progress-ring.js +111 -0
- package/dist/components/progress/skeleton.js +108 -0
- package/dist/components/progress/spinner.js +129 -0
- package/dist/components/theme/locale-switch.js +241 -0
- package/dist/components/theme/shadow-picker.js +233 -0
- package/dist/components/theme/shape-picker.js +232 -0
- package/dist/components/theme/theme-picker.js +236 -0
- package/dist/components/theme/theme-preview.d.ts +1 -2
- package/dist/components/theme/theme-preview.d.ts.map +1 -1
- package/dist/components/theme/theme-preview.js +376 -0
- package/dist/components/theme/theme-switch.d.ts.map +1 -1
- package/dist/components/theme/theme-switch.js +318 -0
- package/dist/components/theme/typo-picker.js +219 -0
- package/dist/core/AGENTS.md +6 -1
- package/dist/core/aithe-element.d.ts +2 -2
- package/dist/core/aithe-element.js +135 -0
- package/dist/core/aithe-widget.js +30 -0
- package/dist/core/anchored-overlay.d.ts +3 -0
- package/dist/core/anchored-overlay.d.ts.map +1 -1
- package/dist/core/anchored-overlay.js +111 -0
- package/dist/core/autoform/autoform.js +79 -0
- package/dist/core/autoform/condition.js +170 -0
- package/dist/core/autoform/index.js +8 -0
- package/dist/core/autoform/types.js +7 -0
- package/dist/core/datahub/config/strategy.d.ts +1 -1
- package/dist/core/datahub/config/strategy.d.ts.map +1 -1
- package/dist/core/datahub/config/strategy.js +50 -0
- package/dist/core/datahub/core/adapter/fetch-adapter.d.ts +1 -1
- package/dist/core/datahub/core/adapter/fetch-adapter.d.ts.map +1 -1
- package/dist/core/datahub/core/adapter/fetch-adapter.js +118 -0
- package/dist/core/datahub/core/adapter/index.js +7 -0
- package/dist/core/datahub/core/adapter/mock-adapter.d.ts +1 -1
- package/dist/core/datahub/core/adapter/mock-adapter.d.ts.map +1 -1
- package/dist/core/datahub/core/adapter/mock-adapter.js +58 -0
- package/dist/core/datahub/core/api-styles.d.ts +1 -1
- package/dist/core/datahub/core/api-styles.d.ts.map +1 -1
- package/dist/core/datahub/core/api-styles.js +131 -0
- package/dist/core/datahub/core/datahub-core.d.ts +3 -3
- package/dist/core/datahub/core/datahub-core.d.ts.map +1 -1
- package/dist/core/datahub/core/datahub-core.js +441 -0
- package/dist/core/datahub/core/index.js +7 -0
- package/dist/core/datahub/index.js +50 -0
- package/dist/core/datahub/types.d.ts +6 -0
- package/dist/core/datahub/types.d.ts.map +1 -1
- package/dist/core/datahub/types.js +31 -0
- package/dist/core/datahub/utils/cache.js +55 -0
- package/dist/core/datahub/utils/common.js +23 -0
- package/dist/core/datahub/utils/dedup.d.ts +1 -1
- package/dist/core/datahub/utils/dedup.d.ts.map +1 -1
- package/dist/core/datahub/utils/dedup.js +52 -0
- package/dist/core/datahub/utils/idempotent.js +61 -0
- package/dist/core/datahub/utils/is-query.js +53 -0
- package/dist/core/datahub/utils/loading.js +78 -0
- package/dist/core/filter/__tests__/index.test.d.ts +2 -0
- package/dist/core/filter/__tests__/index.test.d.ts.map +1 -0
- package/dist/core/filter/__tests__/index.test.js +230 -0
- package/dist/core/filter/builtins.d.ts +60 -0
- package/dist/core/filter/builtins.d.ts.map +1 -0
- package/dist/core/filter/builtins.js +172 -0
- package/dist/core/filter/factory.d.ts +54 -0
- package/dist/core/filter/factory.d.ts.map +1 -0
- package/dist/core/filter/factory.js +96 -0
- package/dist/core/filter/index.d.ts +11 -0
- package/dist/core/filter/index.d.ts.map +1 -0
- package/dist/core/filter/index.js +9 -0
- package/dist/core/filter/types.d.ts +12 -0
- package/dist/core/filter/types.d.ts.map +1 -0
- package/dist/core/filter/types.js +1 -0
- package/dist/core/floating.js +132 -0
- package/dist/core/highlight/index.js +43 -0
- package/dist/core/highlight/lang-bash.js +27 -0
- package/dist/core/highlight/lang-c.js +27 -0
- package/dist/core/highlight/lang-cmake.js +27 -0
- package/dist/core/highlight/lang-cpp.js +27 -0
- package/dist/core/highlight/lang-css.js +24 -0
- package/dist/core/highlight/lang-dart.js +27 -0
- package/dist/core/highlight/lang-dockerfile.js +16 -0
- package/dist/core/highlight/lang-fsharp.js +23 -0
- package/dist/core/highlight/lang-go.js +22 -0
- package/dist/core/highlight/lang-html.js +12 -0
- package/dist/core/highlight/lang-java.js +22 -0
- package/dist/core/highlight/lang-javascript.js +26 -0
- package/dist/core/highlight/lang-json.js +13 -0
- package/dist/core/highlight/lang-jsonline.js +13 -0
- package/dist/core/highlight/lang-jsx.js +30 -0
- package/dist/core/highlight/lang-kotlin.js +27 -0
- package/dist/core/highlight/lang-latex.js +22 -0
- package/dist/core/highlight/lang-lua.js +26 -0
- package/dist/core/highlight/lang-makefile.js +22 -0
- package/dist/core/highlight/lang-markdown.js +18 -0
- package/dist/core/highlight/lang-objectivec.js +24 -0
- package/dist/core/highlight/lang-perl.js +30 -0
- package/dist/core/highlight/lang-powershell.js +23 -0
- package/dist/core/highlight/lang-python.js +27 -0
- package/dist/core/highlight/lang-r.js +21 -0
- package/dist/core/highlight/lang-ruby.js +29 -0
- package/dist/core/highlight/lang-rust.js +24 -0
- package/dist/core/highlight/lang-scala.js +26 -0
- package/dist/core/highlight/lang-sql.js +21 -0
- package/dist/core/highlight/lang-svelte.js +27 -0
- package/dist/core/highlight/lang-swift.js +28 -0
- package/dist/core/highlight/lang-tsx.js +35 -0
- package/dist/core/highlight/lang-typescript.js +31 -0
- package/dist/core/highlight/lang-vue.js +29 -0
- package/dist/core/highlight/lang-wasm.js +22 -0
- package/dist/core/highlight/lang-xml.js +12 -0
- package/dist/core/highlight/lang-yaml.js +14 -0
- package/dist/core/highlight/registry.js +99 -0
- package/dist/core/logger/LoggerCore.js +626 -0
- package/dist/core/logger/index.js +10 -0
- package/dist/core/logger/types.js +29 -0
- package/dist/core/markdown/index.js +20 -0
- package/dist/core/markdown/parser.d.ts +2 -0
- package/dist/core/markdown/parser.d.ts.map +1 -1
- package/dist/core/markdown/parser.js +376 -0
- package/dist/core/markdown/plugins.js +608 -0
- package/dist/core/markdown/types.d.ts +5 -0
- package/dist/core/markdown/types.d.ts.map +1 -1
- package/dist/core/markdown/types.js +7 -0
- package/dist/core/router/index.js +244 -0
- package/dist/core/styles.js +44 -0
- package/dist/core/types.d.ts +50 -3
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2812 -1253
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +1670 -728
- package/dist/index.umd.js.map +1 -1
- package/dist/styles/aithe-ui.d.ts +23 -0
- package/dist/styles/aithe-ui.d.ts.map +1 -1
- package/dist/styles/aithe-ui.js +185 -0
- package/dist/styles/global.css.d.ts +1 -1
- package/dist/styles/global.css.d.ts.map +1 -1
- package/dist/styles/global.css.js +119 -0
- package/dist/styles/i18n/index.js +206 -0
- package/dist/styles/i18n/locales/de-DE.d.ts.map +1 -1
- package/dist/styles/i18n/locales/de-DE.js +148 -0
- package/dist/styles/i18n/locales/en-US.d.ts.map +1 -1
- package/dist/styles/i18n/locales/en-US.js +157 -0
- package/dist/styles/i18n/locales/es-ES.d.ts.map +1 -1
- package/dist/styles/i18n/locales/es-ES.js +148 -0
- package/dist/styles/i18n/locales/fr-FR.d.ts.map +1 -1
- package/dist/styles/i18n/locales/fr-FR.js +148 -0
- package/dist/styles/i18n/locales/index.js +14 -0
- package/dist/styles/i18n/locales/ja-JP.d.ts.map +1 -1
- package/dist/styles/i18n/locales/ja-JP.js +148 -0
- package/dist/styles/i18n/locales/ko-KR.d.ts.map +1 -1
- package/dist/styles/i18n/locales/ko-KR.js +148 -0
- package/dist/styles/i18n/locales/pt-BR.d.ts.map +1 -1
- package/dist/styles/i18n/locales/pt-BR.js +148 -0
- package/dist/styles/i18n/locales/zh-CN.d.ts.map +1 -1
- package/dist/styles/i18n/locales/zh-CN.js +157 -0
- package/dist/styles/i18n/locales/zh-HK.d.ts.map +1 -1
- package/dist/styles/i18n/locales/zh-HK.js +148 -0
- package/dist/styles/i18n/locales/zh-TW.d.ts.map +1 -1
- package/dist/styles/i18n/locales/zh-TW.js +148 -0
- package/dist/styles/layout/index.js +88 -0
- package/dist/styles/mixins.js +43 -0
- package/dist/styles/shadow/cyber.js +19 -0
- package/dist/styles/shadow/deep.js +19 -0
- package/dist/styles/shadow/diffuse.js +19 -0
- package/dist/styles/shadow/flat.js +19 -0
- package/dist/styles/shadow/glassmorphism.js +19 -0
- package/dist/styles/shadow/index.js +129 -0
- package/dist/styles/shadow/neumorphism.js +21 -0
- package/dist/styles/shadow/retro.js +19 -0
- package/dist/styles/shadow/sharp-business.js +19 -0
- package/dist/styles/shadow/skeuomorphic.js +21 -0
- package/dist/styles/shape/chamfer.js +19 -0
- package/dist/styles/shape/circle.js +19 -0
- package/dist/styles/shape/index.js +174 -0
- package/dist/styles/shape/organic.js +19 -0
- package/dist/styles/shape/pill.js +19 -0
- package/dist/styles/shape/rounded.js +21 -0
- package/dist/styles/shape/rounder.js +19 -0
- package/dist/styles/shape/sharp.js +19 -0
- package/dist/styles/shape/smooth.js +19 -0
- package/dist/styles/theme/aliyun.d.ts +1 -1
- package/dist/styles/theme/aliyun.d.ts.map +1 -1
- package/dist/styles/theme/aliyun.js +102 -0
- package/dist/styles/theme/amber.d.ts +1 -1
- package/dist/styles/theme/amber.d.ts.map +1 -1
- package/dist/styles/theme/amber.js +101 -0
- package/dist/styles/theme/blue.d.ts +1 -1
- package/dist/styles/theme/blue.d.ts.map +1 -1
- package/dist/styles/theme/blue.js +101 -0
- package/dist/styles/theme/charcoal.d.ts +1 -1
- package/dist/styles/theme/charcoal.d.ts.map +1 -1
- package/dist/styles/theme/charcoal.js +106 -0
- package/dist/styles/theme/cyan.d.ts +1 -1
- package/dist/styles/theme/cyan.d.ts.map +1 -1
- package/dist/styles/theme/cyan.js +96 -0
- package/dist/styles/theme/dark.d.ts +1 -1
- package/dist/styles/theme/dark.d.ts.map +1 -1
- package/dist/styles/theme/dark.js +106 -0
- package/dist/styles/theme/ebony.d.ts +1 -1
- package/dist/styles/theme/ebony.d.ts.map +1 -1
- package/dist/styles/theme/ebony.js +106 -0
- package/dist/styles/theme/festive.d.ts +1 -1
- package/dist/styles/theme/festive.d.ts.map +1 -1
- package/dist/styles/theme/festive.js +101 -0
- package/dist/styles/theme/graphite.d.ts +1 -1
- package/dist/styles/theme/graphite.d.ts.map +1 -1
- package/dist/styles/theme/graphite.js +106 -0
- package/dist/styles/theme/gray.d.ts +1 -1
- package/dist/styles/theme/gray.d.ts.map +1 -1
- package/dist/styles/theme/gray.js +101 -0
- package/dist/styles/theme/huawei.d.ts +1 -1
- package/dist/styles/theme/huawei.d.ts.map +1 -1
- package/dist/styles/theme/huawei.js +102 -0
- package/dist/styles/theme/index.d.ts +1 -1
- package/dist/styles/theme/index.d.ts.map +1 -1
- package/dist/styles/theme/index.js +276 -0
- package/dist/styles/theme/indigo.d.ts +1 -1
- package/dist/styles/theme/indigo.d.ts.map +1 -1
- package/dist/styles/theme/indigo.js +101 -0
- package/dist/styles/theme/ink.d.ts +1 -1
- package/dist/styles/theme/ink.d.ts.map +1 -1
- package/dist/styles/theme/ink.js +106 -0
- package/dist/styles/theme/light.d.ts +1 -1
- package/dist/styles/theme/light.d.ts.map +1 -1
- package/dist/styles/theme/light.js +102 -0
- package/dist/styles/theme/midnight.d.ts +1 -1
- package/dist/styles/theme/midnight.d.ts.map +1 -1
- package/dist/styles/theme/midnight.js +106 -0
- package/dist/styles/theme/navy.d.ts +1 -1
- package/dist/styles/theme/navy.d.ts.map +1 -1
- package/dist/styles/theme/navy.js +106 -0
- package/dist/styles/theme/obsidian.d.ts +1 -1
- package/dist/styles/theme/obsidian.d.ts.map +1 -1
- package/dist/styles/theme/obsidian.js +106 -0
- package/dist/styles/theme/onyx.d.ts +1 -1
- package/dist/styles/theme/onyx.d.ts.map +1 -1
- package/dist/styles/theme/onyx.js +106 -0
- package/dist/styles/theme/orange.d.ts +1 -1
- package/dist/styles/theme/orange.d.ts.map +1 -1
- package/dist/styles/theme/orange.js +101 -0
- package/dist/styles/theme/pink.d.ts +1 -1
- package/dist/styles/theme/pink.d.ts.map +1 -1
- package/dist/styles/theme/pink.js +101 -0
- package/dist/styles/theme/purple.d.ts +1 -1
- package/dist/styles/theme/purple.d.ts.map +1 -1
- package/dist/styles/theme/purple.js +101 -0
- package/dist/styles/theme/raisin.d.ts +1 -1
- package/dist/styles/theme/raisin.d.ts.map +1 -1
- package/dist/styles/theme/raisin.js +106 -0
- package/dist/styles/theme/slate.d.ts +1 -1
- package/dist/styles/theme/slate.d.ts.map +1 -1
- package/dist/styles/theme/slate.js +106 -0
- package/dist/styles/theme/teal.d.ts +1 -1
- package/dist/styles/theme/teal.d.ts.map +1 -1
- package/dist/styles/theme/teal.js +101 -0
- package/dist/styles/theme/tianyi.d.ts +1 -1
- package/dist/styles/theme/tianyi.d.ts.map +1 -1
- package/dist/styles/theme/tianyi.js +102 -0
- package/dist/styles/types.js +1 -0
- package/dist/styles/typo/business.js +34 -0
- package/dist/styles/typo/compact.js +34 -0
- package/dist/styles/typo/index.js +99 -0
- package/dist/styles/typo/luxury.js +34 -0
- package/dist/styles/typo/minimal.js +34 -0
- package/dist/types/index.js +2 -0
- package/dist/utils/dom.js +51 -0
- package/dist/utils/events.js +32 -0
- package/dist/utils/icon.js +176 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/utils.d.ts +5 -5
- package/dist/utils/utils.js +89 -0
- package/dist/utils/validation.js +52 -0
- package/docs/api/basic/button.md +9 -6
- package/docs/api/basic/tag.md +24 -17
- package/docs/api/data/box-table.md +73 -0
- package/docs/api/data/dropdown.md +3 -2
- package/docs/api/data/metrics.md +2 -0
- package/docs/api/data/table-column.md +37 -23
- package/docs/api/data/table.md +158 -44
- package/docs/api/data/tabs.md +46 -1
- package/docs/api/data/tree-menu.md +55 -2
- package/docs/api/display/box.md +66 -0
- package/docs/api/display/brief-box.md +73 -0
- package/docs/api/display/desc-item.md +57 -0
- package/docs/api/display/desc.md +204 -0
- package/docs/api/display/detail-box.md +75 -0
- package/docs/api/display/mini-box.md +100 -0
- package/docs/api/display/profile.md +92 -0
- package/docs/api/feedback/popover.md +10 -10
- package/docs/api/feedback/tooltip.md +14 -14
- package/docs/api/form/autoform-item.md +100 -0
- package/docs/api/form/autoform.md +4 -1
- package/docs/api/form/select.md +28 -28
- package/docs/api/framework/log-panel.md +46 -0
- package/docs/api/framework/sidebar.md +3 -2
- package/docs/api/summary.md +45 -35
- package/docs/api/theme/theme-switch.md +1 -1
- package/docs/autoform.md +13 -1
- package/docs/changelog/CHANGELOG.md +80 -0
- package/docs/changelog/VERSION_26.3.1.md +966 -0
- package/docs/datahub.md +1 -1
- package/docs/filter.md +332 -0
- package/docs/framework-integration.md +2 -2
- package/docs/guide.md +66 -1
- package/docs/i18n.md +2 -2
- package/docs/issue/issue_26.3.1.0.md +84 -0
- package/docs/issue/issue_26.3.1.1.md +72 -0
- package/docs/issue/issue_26.3.1.2.md +75 -0
- package/docs/issue/issue_26.3.1.3.md +78 -0
- package/docs/issue/issue_26.3.1.4.md +113 -0
- package/docs/issue/issue_26.3.1.5.md +142 -0
- package/docs/issue/issue_26.3.1.6.md +100 -0
- package/docs/issue/issue_26.3.1.7.md +78 -0
- package/docs/quickstart.md +5 -5
- package/package.json +5 -2
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { registerAitheTheme, resolveComputedTheme } from '../styles/theme';
|
|
10
|
+
import { emitAitheEvent, findFirstFocusable, getFocusableElements } from '../utils';
|
|
11
|
+
/**
|
|
12
|
+
* Base class for all Aithe UI components. Extends LitElement with theme awareness,
|
|
13
|
+
* accessibility helpers, a unified event emission API, and browser environment detection.
|
|
14
|
+
* 所有 Aithe UI 组件的基类。继承 LitElement,提供主题感知、无障碍辅助、统一事件发射 API 和浏览器环境检测。
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* @customElement('aithe-my-comp')
|
|
19
|
+
* export class AitheMyComp extends AitheElement {}
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export class AitheElement extends LitElement {
|
|
23
|
+
constructor() {
|
|
24
|
+
super();
|
|
25
|
+
/** Visual variant of the component. 组件的视觉变体。 */
|
|
26
|
+
this.variant = 'default';
|
|
27
|
+
/** Size preset of the component. 组件的尺寸规格。 */
|
|
28
|
+
this.size = 'md';
|
|
29
|
+
/** Local theme override; falls back to the closest themed ancestor or global theme when empty. 本地主题覆盖;为空时继承最近带主题祖先或全局主题。 */
|
|
30
|
+
this.theme = '';
|
|
31
|
+
/** Whether the component is disabled. 组件是否禁用。 */
|
|
32
|
+
this.disabled = false;
|
|
33
|
+
/** When true, all events emitted by this component will be captured by the logger. 为 true 时,组件的所有事件将被日志器捕获。 */
|
|
34
|
+
this.log = false;
|
|
35
|
+
registerAitheTheme();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Emit a custom event with the `aithe-` prefix convention.
|
|
39
|
+
* 发射遵循 `aithe-` 前缀约定的自定义事件。
|
|
40
|
+
*
|
|
41
|
+
* @param type - Event type (without prefix). 事件类型(不含前缀)。
|
|
42
|
+
* @param detail - Event payload. 事件载荷。
|
|
43
|
+
* @returns Whether the event was not cancelled. 事件是否未被取消。
|
|
44
|
+
*/
|
|
45
|
+
emit(type, detail) {
|
|
46
|
+
if (detail != null && typeof detail === 'object' && !Array.isArray(detail)) {
|
|
47
|
+
detail.log = this.log;
|
|
48
|
+
}
|
|
49
|
+
return emitAitheEvent(this, type, detail);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolved theme name: local override → closest themed ancestor → global theme.
|
|
53
|
+
* 计算后的主题名:本地覆盖 → 最近带主题祖先 → 全局主题。
|
|
54
|
+
*/
|
|
55
|
+
get computedTheme() {
|
|
56
|
+
return resolveComputedTheme(this, this.theme || undefined);
|
|
57
|
+
}
|
|
58
|
+
connectedCallback() {
|
|
59
|
+
super.connectedCallback();
|
|
60
|
+
this.syncBaseA11yState();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Focus the first focusable element within the given root.
|
|
64
|
+
* 聚焦给定根节点内第一个可聚焦元素。
|
|
65
|
+
*
|
|
66
|
+
* @param root - Parent node to search within. 搜索的父节点。
|
|
67
|
+
*/
|
|
68
|
+
focusFirst(root = this.renderRoot) {
|
|
69
|
+
findFirstFocusable(root)?.focus();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Trap keyboard focus within the given root (Tab / Shift+Tab cycle).
|
|
73
|
+
* 在给定根节点内捕获键盘焦点(Tab / Shift+Tab 循环)。
|
|
74
|
+
*
|
|
75
|
+
* @param event - Keyboard event to handle. 要处理的键盘事件。
|
|
76
|
+
* @param root - Parent node to trap focus within. 捕获焦点的父节点。
|
|
77
|
+
*/
|
|
78
|
+
trapFocus(event, root = this.renderRoot) {
|
|
79
|
+
if (event.key !== 'Tab') {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const items = getFocusableElements(root);
|
|
83
|
+
if (!items.length) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const first = items[0];
|
|
87
|
+
const last = items.at(-1);
|
|
88
|
+
const current = this.shadowRoot?.activeElement;
|
|
89
|
+
if (event.shiftKey && current === first) {
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
last.focus();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (!event.shiftKey && current === last) {
|
|
95
|
+
event.preventDefault();
|
|
96
|
+
first.focus();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Synchronize base accessibility attributes (aria-disabled, data-aithe-theme).
|
|
101
|
+
* 同步基础无障碍属性(aria-disabled、data-aithe-theme)。
|
|
102
|
+
*/
|
|
103
|
+
syncBaseA11yState() {
|
|
104
|
+
if (this.disabled) {
|
|
105
|
+
this.setAttribute('aria-disabled', 'true');
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
this.removeAttribute('aria-disabled');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
if (!Object.hasOwn(this.dataset, 'aitheTheme')) {
|
|
112
|
+
this.dataset.aitheTheme = this.computedTheme;
|
|
113
|
+
}
|
|
114
|
+
**/
|
|
115
|
+
}
|
|
116
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
117
|
+
super.attributeChangedCallback(name, oldValue, newValue);
|
|
118
|
+
queueMicrotask(() => this.syncBaseA11yState());
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
__decorate([
|
|
122
|
+
property({ type: String })
|
|
123
|
+
], AitheElement.prototype, "variant", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
property({ type: String })
|
|
126
|
+
], AitheElement.prototype, "size", void 0);
|
|
127
|
+
__decorate([
|
|
128
|
+
property({ type: String })
|
|
129
|
+
], AitheElement.prototype, "theme", void 0);
|
|
130
|
+
__decorate([
|
|
131
|
+
property({ type: Boolean, reflect: true })
|
|
132
|
+
], AitheElement.prototype, "disabled", void 0);
|
|
133
|
+
__decorate([
|
|
134
|
+
property({ type: Boolean })
|
|
135
|
+
], AitheElement.prototype, "log", void 0);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* @file Abstract widget base class for dashboard panel business components / 仪表盘面板业务组件抽象基类
|
|
9
|
+
* @description AitheWidget extends AitheElement and serves as the base class for all business
|
|
10
|
+
* components used within dashboard panels. It defines two abstract properties —
|
|
11
|
+
* `params` and `data` — that subclasses must implement.
|
|
12
|
+
* AitheWidget 继承 AitheElement,作为所有仪表盘面板中业务组件的基类。
|
|
13
|
+
* 定义了两个子类必须实现的抽象属性:`params` 和 `data`。
|
|
14
|
+
*/
|
|
15
|
+
import { property } from 'lit/decorators.js';
|
|
16
|
+
import { AitheElement } from './aithe-element';
|
|
17
|
+
/**
|
|
18
|
+
* Abstract base class for dashboard panel widget components.
|
|
19
|
+
* Subclasses must implement the `params` and `data` properties.
|
|
20
|
+
*
|
|
21
|
+
* 仪表盘面板业务组件的抽象基类。子类必须实现 `params` 和 `data` 属性。
|
|
22
|
+
*/
|
|
23
|
+
export class AitheWidget extends AitheElement {
|
|
24
|
+
}
|
|
25
|
+
__decorate([
|
|
26
|
+
property({ type: Object })
|
|
27
|
+
], AitheWidget.prototype, "params", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
property({ type: Object })
|
|
30
|
+
], AitheWidget.prototype, "data", void 0);
|
|
@@ -4,7 +4,10 @@ import { type AithePlacement } from './floating';
|
|
|
4
4
|
/**
|
|
5
5
|
* Abstract base class for components that position a floating panel
|
|
6
6
|
* relative to an anchor element (e.g. tooltips, dropdowns, popovers).
|
|
7
|
+
* Handles containing block offset correction for position:fixed panels
|
|
8
|
+
* inside transformed/filtered ancestors.
|
|
7
9
|
* 抽象基类,用于相对于锚点元素定位浮动面板的组件(如工具提示、下拉菜单、弹出框)。
|
|
10
|
+
* 处理 position:fixed 面板在 transform/filter 祖先元素内的含入块偏移修正。
|
|
8
11
|
*/
|
|
9
12
|
export declare abstract class AitheAnchoredOverlayElement extends AitheElement {
|
|
10
13
|
/** Whether the overlay panel is visible. 叠加面板是否可见。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anchored-overlay.d.ts","sourceRoot":"","sources":["../../src/core/anchored-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,cAAc,EAA2B,MAAM,YAAY,CAAC;AAE1E
|
|
1
|
+
{"version":3,"file":"anchored-overlay.d.ts","sourceRoot":"","sources":["../../src/core/anchored-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,cAAc,EAA2B,MAAM,YAAY,CAAC;AAE1E;;;;;;;GAOG;AACH,8BAAsB,2BAA4B,SAAQ,YAAY;IACpE,sDAAsD;IACV,IAAI,UAAS;IACzD,kFAAkF;IACtD,SAAS,EAAE,cAAc,CAAkB;IACvE,2DAA2D;IAC/B,MAAM,SAAK;IAEvC,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuC;IAE5E,oEAAoE;IACpE,SAAS,CAAC,QAAQ,KAAK,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC;IAE1D;;;OAGG;IACH,SAAS,KAAK,aAAa,IAAI,WAAW,CAOzC;IAED,6DAA6D;IAC7D,oBAAoB,IAAI,IAAI;IAK5B;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAgBtD;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;IA8BxC,2DAA2D;IAC3D,OAAO,CAAC,YAAY;IAKpB,6DAA6D;IAC7D,OAAO,CAAC,cAAc;CAIvB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { property } from 'lit/decorators.js';
|
|
8
|
+
import { AitheElement } from './aithe-element';
|
|
9
|
+
import { computeFloatingPosition } from './floating';
|
|
10
|
+
/**
|
|
11
|
+
* Abstract base class for components that position a floating panel
|
|
12
|
+
* relative to an anchor element (e.g. tooltips, dropdowns, popovers).
|
|
13
|
+
* Handles containing block offset correction for position:fixed panels
|
|
14
|
+
* inside transformed/filtered ancestors.
|
|
15
|
+
* 抽象基类,用于相对于锚点元素定位浮动面板的组件(如工具提示、下拉菜单、弹出框)。
|
|
16
|
+
* 处理 position:fixed 面板在 transform/filter 祖先元素内的含入块偏移修正。
|
|
17
|
+
*/
|
|
18
|
+
export class AitheAnchoredOverlayElement extends AitheElement {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
/** Whether the overlay panel is visible. 叠加面板是否可见。 */
|
|
22
|
+
this.open = false;
|
|
23
|
+
/** Preferred placement of the overlay relative to the anchor. 叠加层相对于锚点的首选放置位置。 */
|
|
24
|
+
this.placement = 'bottom-start';
|
|
25
|
+
/** Pixel gap between anchor and overlay. 锚点与叠加层之间的像素间距。 */
|
|
26
|
+
this.offset = 8;
|
|
27
|
+
/** Recompute position on viewport resize / scroll. 在视口调整/滚动时重新计算位置。 */
|
|
28
|
+
this.handleViewportChange = () => this.updateFloatingPosition();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the anchor element from the default slot.
|
|
32
|
+
* 从默认插槽解析锚点元素。
|
|
33
|
+
*/
|
|
34
|
+
get anchorElement() {
|
|
35
|
+
const defaultSlot = this.shadowRoot?.querySelector('slot:not([name])');
|
|
36
|
+
const assigned = defaultSlot?.assignedElements({ flatten: true }) ?? [];
|
|
37
|
+
return assigned[0] ?? this;
|
|
38
|
+
}
|
|
39
|
+
/** Unbind viewport listeners on disconnect. 断开连接时解绑视口监听器。 */
|
|
40
|
+
disconnectedCallback() {
|
|
41
|
+
super.disconnectedCallback();
|
|
42
|
+
this.unbindFloating();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Bind/unbind floating listeners when `open` changes, and recompute
|
|
46
|
+
* position when placement or offset changes while open.
|
|
47
|
+
* 当 `open` 变化时绑定/解绑浮动监听器,并在打开状态下放置或偏移变化时重新计算位置。
|
|
48
|
+
*/
|
|
49
|
+
updated(changed) {
|
|
50
|
+
super.updated(changed);
|
|
51
|
+
if (changed.has('open')) {
|
|
52
|
+
if (this.open) {
|
|
53
|
+
this.bindFloating();
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.unbindFloating();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (this.open && (changed.has('open') || changed.has('placement') || changed.has('offset'))) {
|
|
60
|
+
queueMicrotask(() => this.updateFloatingPosition());
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Recompute the floating panel position based on current anchor and overlay rects.
|
|
65
|
+
* 根据当前锚点和叠加层矩形重新计算浮动面板位置。
|
|
66
|
+
*/
|
|
67
|
+
updateFloatingPosition() {
|
|
68
|
+
const panel = this.panelElement;
|
|
69
|
+
if (!panel || !this.open) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const anchor = this.anchorElement;
|
|
73
|
+
const anchorRect = anchor.getBoundingClientRect();
|
|
74
|
+
// Temporarily move panel to (0,0) to measure the containing block offset.
|
|
75
|
+
// When a position:fixed element has a containing block created by
|
|
76
|
+
// transform/backdrop-filter/filter/etc., left:0;top:0 positions it at
|
|
77
|
+
// the containing block's origin, not the viewport origin.
|
|
78
|
+
// getBoundingClientRect() always returns viewport-relative coordinates,
|
|
79
|
+
// so the difference reveals the containing block's offset.
|
|
80
|
+
panel.style.left = '0px';
|
|
81
|
+
panel.style.top = '0px';
|
|
82
|
+
const zeroRect = panel.getBoundingClientRect();
|
|
83
|
+
const cbOffsetX = zeroRect.left;
|
|
84
|
+
const cbOffsetY = zeroRect.top;
|
|
85
|
+
const overlayRect = panel.getBoundingClientRect();
|
|
86
|
+
const position = computeFloatingPosition(anchorRect, overlayRect, this.placement, {
|
|
87
|
+
offset: this.offset,
|
|
88
|
+
});
|
|
89
|
+
panel.style.left = `${position.left - cbOffsetX}px`;
|
|
90
|
+
panel.style.top = `${position.top - cbOffsetY}px`;
|
|
91
|
+
}
|
|
92
|
+
/** Bind viewport resize/scroll listeners. 绑定视口调整/滚动监听器。 */
|
|
93
|
+
bindFloating() {
|
|
94
|
+
window.addEventListener('resize', this.handleViewportChange);
|
|
95
|
+
window.addEventListener('scroll', this.handleViewportChange, true);
|
|
96
|
+
}
|
|
97
|
+
/** Unbind viewport resize/scroll listeners. 解绑视口调整/滚动监听器。 */
|
|
98
|
+
unbindFloating() {
|
|
99
|
+
window.removeEventListener('resize', this.handleViewportChange);
|
|
100
|
+
window.removeEventListener('scroll', this.handleViewportChange, true);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
__decorate([
|
|
104
|
+
property({ type: Boolean, reflect: true })
|
|
105
|
+
], AitheAnchoredOverlayElement.prototype, "open", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
property({ type: String })
|
|
108
|
+
], AitheAnchoredOverlayElement.prototype, "placement", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
property({ type: Number })
|
|
111
|
+
], AitheAnchoredOverlayElement.prototype, "offset", void 0);
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { FormCondition } from './condition';
|
|
2
|
+
const RULE_HANDLERS = {
|
|
3
|
+
show: (s, c) => { s.visible = c; },
|
|
4
|
+
hide: (s, c) => { s.visible = !c; },
|
|
5
|
+
disable: (s, c) => { if (c)
|
|
6
|
+
s.disabled = true; },
|
|
7
|
+
enable: (s, c) => { if (c)
|
|
8
|
+
s.disabled = false; },
|
|
9
|
+
clear: (s, c) => { if (c)
|
|
10
|
+
s.value = ''; },
|
|
11
|
+
update: (s, c, r) => { if (c && r.options)
|
|
12
|
+
s.options = Array.isArray(r.options) ? r.options : []; },
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Form rule engine — evaluates dependency rules against current form values.
|
|
16
|
+
* 表单规则引擎 — 基于当前表单值对依赖联动规则进行求值。
|
|
17
|
+
*/
|
|
18
|
+
export class FormRuleEngine {
|
|
19
|
+
/**
|
|
20
|
+
* Evaluate all rules and compute the resulting dependency state.
|
|
21
|
+
* 对所有规则求值,计算最终的依赖联动状态。
|
|
22
|
+
* @param rules - 规则列表 / Rule list
|
|
23
|
+
* @param values - 当前表单所有字段的值 / Current values of all form fields
|
|
24
|
+
* @param baseState - 初始状态(未应用规则前的默认值)/ Base state before applying rules
|
|
25
|
+
* @returns 计算后的最终状态 / Computed final state
|
|
26
|
+
*/
|
|
27
|
+
static evaluate(rules, values, baseState) {
|
|
28
|
+
const state = {
|
|
29
|
+
visible: baseState.visible,
|
|
30
|
+
disabled: baseState.disabled,
|
|
31
|
+
options: baseState.options,
|
|
32
|
+
value: baseState.value,
|
|
33
|
+
};
|
|
34
|
+
for (const rule of rules) {
|
|
35
|
+
const conditionMet = rule.condition ? FormCondition.evaluate(rule.condition, values) : true;
|
|
36
|
+
const handler = RULE_HANDLERS[rule.type];
|
|
37
|
+
if (handler) {
|
|
38
|
+
handler(state, conditionMet, rule);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return state;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Parse a condition expression string into an AST node.
|
|
45
|
+
* 将条件表达式字符串解析为 AST 节点。
|
|
46
|
+
* @param condition - 条件表达式字符串,如 "field === 'value'" / Condition expression string
|
|
47
|
+
* @returns 解析后的 AST 节点,解析失败返回 null / Parsed AST node, or null on failure
|
|
48
|
+
*/
|
|
49
|
+
static parseCondition(condition) {
|
|
50
|
+
return FormCondition.parse(condition);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Form control type registry. Allows registering custom control types
|
|
55
|
+
* to extend the autoform with arbitrary Web Components or rendering logic.
|
|
56
|
+
* 表单控件类型注册表。允许注册自定义控件类型,以任意 Web Component 或渲染逻辑扩展自动表单。
|
|
57
|
+
*/
|
|
58
|
+
export class FormRegistry {
|
|
59
|
+
static { this._controls = new Map(); }
|
|
60
|
+
static register(definition) {
|
|
61
|
+
if (FormRegistry._controls.has(definition.type)) {
|
|
62
|
+
throw new Error(`[FormRegistry] Control type "${definition.type}" is already registered. ` +
|
|
63
|
+
`Call FormRegistry.unregister() first if you want to replace it.`);
|
|
64
|
+
}
|
|
65
|
+
FormRegistry._controls.set(definition.type, definition);
|
|
66
|
+
}
|
|
67
|
+
static unregister(type) {
|
|
68
|
+
return FormRegistry._controls.delete(type);
|
|
69
|
+
}
|
|
70
|
+
static get(type) {
|
|
71
|
+
return FormRegistry._controls.get(type);
|
|
72
|
+
}
|
|
73
|
+
static has(type) {
|
|
74
|
+
return FormRegistry._controls.has(type);
|
|
75
|
+
}
|
|
76
|
+
static types() {
|
|
77
|
+
return Array.from(FormRegistry._controls.keys());
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Form condition expression parser and evaluator / 表单条件表达式解析与求值
|
|
3
|
+
* @description Parses condition expressions like "field === 'value' || field2 > 10"
|
|
4
|
+
* into an AST and evaluates them against a values map.
|
|
5
|
+
* 将条件表达式(如 "field === 'value' || field2 > 10")解析为 AST 并基于值映射求值。
|
|
6
|
+
*/
|
|
7
|
+
import { safeStringify } from '../../utils/utils';
|
|
8
|
+
const TRUTHY_STRINGS = new Set(['true', '1', 'yes', 'on']);
|
|
9
|
+
const FALSY_STRINGS = new Set(['false', '0', 'no', 'off', '', 'null', 'undefined']);
|
|
10
|
+
/**
|
|
11
|
+
* Form condition expression parser and evaluator.
|
|
12
|
+
* 表单条件表达式解析与求值器。
|
|
13
|
+
* @description Parses condition expressions like "field === 'value' || field2 > 10"
|
|
14
|
+
* into an AST and evaluates them against a values map.
|
|
15
|
+
* Supports comparison operators (===, !==, >, >=, <, <=), logical AND (&&) and OR (||),
|
|
16
|
+
* nested parentheses, and automatic type coercion for comparison.
|
|
17
|
+
* 将条件表达式(如 "field === 'value' || field2 > 10")解析为 AST 并基于值映射求值。
|
|
18
|
+
* 支持比较运算符、逻辑与/或、嵌套括号及自动类型转换。
|
|
19
|
+
*/
|
|
20
|
+
export class FormCondition {
|
|
21
|
+
/**
|
|
22
|
+
* Evaluate a condition expression against form values.
|
|
23
|
+
* 对条件表达式进行求值。
|
|
24
|
+
* @param condition - 条件表达式字符串 / Condition expression string
|
|
25
|
+
* @param values - 当前表单字段值映射 / Current form field values map
|
|
26
|
+
* @returns 求值结果,条件为空时返回 true / Evaluation result, returns true if condition is empty
|
|
27
|
+
*/
|
|
28
|
+
static evaluate(condition, values) {
|
|
29
|
+
const node = FormCondition.parse(condition);
|
|
30
|
+
if (!node)
|
|
31
|
+
return true;
|
|
32
|
+
return FormCondition.evaluateNode(node, values);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse a condition expression string into an AST.
|
|
36
|
+
* 将条件表达式字符串解析为 AST。
|
|
37
|
+
* @param expr - 表达式字符串 / Expression string
|
|
38
|
+
* @returns AST 根节点,空字符串返回 null / Root AST node, or null for empty string
|
|
39
|
+
*/
|
|
40
|
+
static parse(expr) {
|
|
41
|
+
const trimmed = expr.trim();
|
|
42
|
+
if (!trimmed)
|
|
43
|
+
return null;
|
|
44
|
+
const orParts = FormCondition.splitLogical(trimmed, '||');
|
|
45
|
+
if (orParts.length > 1) {
|
|
46
|
+
const children = orParts
|
|
47
|
+
.map((p) => FormCondition.parse(p))
|
|
48
|
+
.filter((n) => n !== null);
|
|
49
|
+
return children.length > 0 ? { kind: 'or', children } : null;
|
|
50
|
+
}
|
|
51
|
+
const andParts = FormCondition.splitLogical(trimmed, '&&');
|
|
52
|
+
if (andParts.length > 1) {
|
|
53
|
+
const children = andParts
|
|
54
|
+
.map((p) => FormCondition.parse(p))
|
|
55
|
+
.filter((n) => n !== null);
|
|
56
|
+
return children.length > 0 ? { kind: 'and', children } : null;
|
|
57
|
+
}
|
|
58
|
+
return FormCondition.parseSingleComparison(trimmed);
|
|
59
|
+
}
|
|
60
|
+
static evaluateNode(node, values) {
|
|
61
|
+
if (node.kind === 'comparison') {
|
|
62
|
+
const fieldValue = values[node.field] ?? '';
|
|
63
|
+
return FormCondition.compareValues(fieldValue, node.operator, node.value);
|
|
64
|
+
}
|
|
65
|
+
if (node.kind === 'and') {
|
|
66
|
+
return node.children.every((child) => FormCondition.evaluateNode(child, values));
|
|
67
|
+
}
|
|
68
|
+
if (node.kind === 'or') {
|
|
69
|
+
return node.children.some((child) => FormCondition.evaluateNode(child, values));
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
static toComparable(val) {
|
|
74
|
+
if (val === null || val === undefined)
|
|
75
|
+
return '';
|
|
76
|
+
if (typeof val === 'boolean')
|
|
77
|
+
return val;
|
|
78
|
+
if (typeof val === 'number')
|
|
79
|
+
return val;
|
|
80
|
+
const str = safeStringify(val);
|
|
81
|
+
if (TRUTHY_STRINGS.has(str))
|
|
82
|
+
return true;
|
|
83
|
+
if (FALSY_STRINGS.has(str))
|
|
84
|
+
return false;
|
|
85
|
+
const num = Number(str);
|
|
86
|
+
if (str !== '' && !Number.isNaN(num))
|
|
87
|
+
return num;
|
|
88
|
+
return str;
|
|
89
|
+
}
|
|
90
|
+
static compareValues(left, operator, right) {
|
|
91
|
+
const lv = FormCondition.toComparable(left);
|
|
92
|
+
const rv = FormCondition.toComparable(right);
|
|
93
|
+
switch (operator) {
|
|
94
|
+
case '===':
|
|
95
|
+
return lv === rv;
|
|
96
|
+
case '!==':
|
|
97
|
+
return lv !== rv;
|
|
98
|
+
case '>':
|
|
99
|
+
return typeof lv === 'number' && typeof rv === 'number' && lv > rv;
|
|
100
|
+
case '>=':
|
|
101
|
+
return typeof lv === 'number' && typeof rv === 'number' && lv >= rv;
|
|
102
|
+
case '<':
|
|
103
|
+
return typeof lv === 'number' && typeof rv === 'number' && lv < rv;
|
|
104
|
+
case '<=':
|
|
105
|
+
return typeof lv === 'number' && typeof rv === 'number' && lv <= rv;
|
|
106
|
+
default:
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
static parseLiteral(raw) {
|
|
111
|
+
const trimmed = raw.trim();
|
|
112
|
+
if (trimmed === 'true')
|
|
113
|
+
return true;
|
|
114
|
+
if (trimmed === 'false')
|
|
115
|
+
return false;
|
|
116
|
+
if (trimmed === 'null')
|
|
117
|
+
return null;
|
|
118
|
+
if (trimmed === 'undefined')
|
|
119
|
+
return undefined;
|
|
120
|
+
if (/^-?\d+(\.\d+)?$/.test(trimmed))
|
|
121
|
+
return Number(trimmed);
|
|
122
|
+
if ((trimmed.startsWith("'") && trimmed.endsWith("'")) ||
|
|
123
|
+
(trimmed.startsWith('"') && trimmed.endsWith('"'))) {
|
|
124
|
+
return trimmed.slice(1, -1);
|
|
125
|
+
}
|
|
126
|
+
return trimmed;
|
|
127
|
+
}
|
|
128
|
+
static parseSingleComparison(expr) {
|
|
129
|
+
const re = /^\s*([a-zA-Z_]\w*)\s*(===|!==|>=|<=|>|<)\s*(.+?)\s*$/;
|
|
130
|
+
const match = re.exec(expr);
|
|
131
|
+
if (!match?.[1] || !match?.[2] || match[3] === undefined)
|
|
132
|
+
return null;
|
|
133
|
+
return {
|
|
134
|
+
kind: 'comparison',
|
|
135
|
+
field: match[1],
|
|
136
|
+
operator: match[2],
|
|
137
|
+
value: FormCondition.parseLiteral(match[3]),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
static splitLogical(expr, op) {
|
|
141
|
+
const parts = [];
|
|
142
|
+
let depth = 0;
|
|
143
|
+
let current = '';
|
|
144
|
+
let i = 0;
|
|
145
|
+
while (i < expr.length) {
|
|
146
|
+
if (expr[i] === '(') {
|
|
147
|
+
depth++;
|
|
148
|
+
current += expr[i];
|
|
149
|
+
i++;
|
|
150
|
+
}
|
|
151
|
+
else if (expr[i] === ')') {
|
|
152
|
+
depth--;
|
|
153
|
+
current += expr[i];
|
|
154
|
+
i++;
|
|
155
|
+
}
|
|
156
|
+
else if (depth === 0 && expr.slice(i, i + op.length) === op) {
|
|
157
|
+
parts.push(current);
|
|
158
|
+
current = '';
|
|
159
|
+
i += op.length;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
current += expr[i];
|
|
163
|
+
i++;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (current.trim())
|
|
167
|
+
parts.push(current);
|
|
168
|
+
return parts;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Form module entry — unified exports / 表单模块入口 — 统一导出
|
|
3
|
+
* @description Re-exports all public APIs from the form module:
|
|
4
|
+
* FormRuleEngine, FormRegistry, FormCondition, and all related types.
|
|
5
|
+
* 重新导出表单模块的所有公开 API:规则引擎、控件注册表、条件解析器及相关类型。
|
|
6
|
+
*/
|
|
7
|
+
export { FormRuleEngine, FormRegistry } from './autoform';
|
|
8
|
+
export { FormCondition } from './condition';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Form module shared types / 表单模块共享类型定义
|
|
3
|
+
* @description Core type definitions for the form dependency rule engine, migrated from components/form
|
|
4
|
+
* to eliminate circular dependency between core and components.
|
|
5
|
+
* 表单依赖联动规则引擎核心类型定义,从 components/form 迁移至此,消除 core 与 components 之间的循环依赖。
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - Query strategy: cacheable, dedupable, retryable
|
|
11
11
|
* - Submit strategy: idempotent guard, no cache, no retry
|
|
12
12
|
*/
|
|
13
|
-
import type { DataHubStrategyConfig } from '
|
|
13
|
+
import type { DataHubStrategyConfig } from '../../datahub/types';
|
|
14
14
|
/**
|
|
15
15
|
* 根据 URL 解析请求策略 / Resolve request strategy based on URL
|
|
16
16
|
* @param url - 请求地址 / Request URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/datahub/config/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAuB,MAAM,
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/datahub/config/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAuB,MAAM,qBAAqB,CAAC;AA0BtF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAIlE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 策略配置 / Strategy Configuration
|
|
3
|
+
* @description 根据 URL 自动识别请求策略(查询 or 提交),
|
|
4
|
+
* 并返回对应的策略配置。策略决定了请求经过哪些中间件处理:
|
|
5
|
+
* - 查询策略(query):可缓存、可去重、可重试
|
|
6
|
+
* - 提交策略(submit):幂等防护、不缓存、不重试
|
|
7
|
+
* Automatically identifies the request strategy (query or submit) based on the URL,
|
|
8
|
+
* and returns the corresponding strategy config. Strategy determines which middleware
|
|
9
|
+
* the request passes through:
|
|
10
|
+
* - Query strategy: cacheable, dedupable, retryable
|
|
11
|
+
* - Submit strategy: idempotent guard, no cache, no retry
|
|
12
|
+
*/
|
|
13
|
+
import { isQueryAction } from '../../datahub/utils/is-query';
|
|
14
|
+
/**
|
|
15
|
+
* 策略映射表 / Strategy mapping table
|
|
16
|
+
* @description 定义两种策略的完整行为配置 / Defines the complete behavior config for both strategies
|
|
17
|
+
*/
|
|
18
|
+
const STRATEGY_MAP = {
|
|
19
|
+
/** 查询策略:结果可缓存,并发请求可去重,失败可重试 / Query strategy: cacheable results, dedupable concurrent requests, retryable on failure */
|
|
20
|
+
query: {
|
|
21
|
+
type: 'query',
|
|
22
|
+
cacheable: true,
|
|
23
|
+
dedupable: true,
|
|
24
|
+
idempotent: false,
|
|
25
|
+
retryable: true,
|
|
26
|
+
},
|
|
27
|
+
/** 提交策略:不缓存,不去重,需幂等防护,失败不重试 / Submit strategy: no cache, no dedup, idempotent guard required, no retry on failure */
|
|
28
|
+
submit: {
|
|
29
|
+
type: 'submit',
|
|
30
|
+
cacheable: false,
|
|
31
|
+
dedupable: false,
|
|
32
|
+
idempotent: true,
|
|
33
|
+
retryable: false,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* 根据 URL 解析请求策略 / Resolve request strategy based on URL
|
|
38
|
+
* @param url - 请求地址 / Request URL
|
|
39
|
+
* @returns 策略配置(返回副本,避免外部修改影响全局配置)/ Strategy config (returns a copy to prevent external mutation)
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* resolveStrategy('/order/query') // { type: 'query', cacheable: true, ... }
|
|
43
|
+
* resolveStrategy('/order/submit') // { type: 'submit', idempotent: true, ... }
|
|
44
|
+
* resolveStrategy('/order/pay') // { type: 'submit', idempotent: true, ... }
|
|
45
|
+
*/
|
|
46
|
+
export function resolveStrategy(url) {
|
|
47
|
+
const type = isQueryAction(url) ? 'query' : 'submit';
|
|
48
|
+
// 返回副本,防止外部修改影响策略映射表 / Return a copy to prevent external mutation of the strategy map
|
|
49
|
+
return { ...STRATEGY_MAP[type] };
|
|
50
|
+
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* 4. Support merging external signal with internal timeout signal
|
|
17
17
|
* 5. Propagate traceId via request header
|
|
18
18
|
*/
|
|
19
|
-
import type { DataHubAdapter, DataHubAdapterRequest, DataHubAdapterResponse } from '
|
|
19
|
+
import type { DataHubAdapter, DataHubAdapterRequest, DataHubAdapterResponse } from '../../../datahub/types';
|
|
20
20
|
/**
|
|
21
21
|
* FetchAdapter - 原生 fetch 适配器 / Native fetch adapter
|
|
22
22
|
* @implements {DataHubAdapter}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/core/datahub/core/adapter/fetch-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"fetch-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/core/datahub/core/adapter/fetch-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAKzG;;;GAGG;AACH,qBAAa,YAAa,YAAW,cAAc;IACjD,wCAAwC;IACxC,SAAgB,IAAI,WAAW;IAE/B;;;;;OAKG;IACU,OAAO,CAAC,CAAC,GAAG,OAAO,EAC9B,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IA4DrC;;OAEG;IACI,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAOhC"}
|