@ibiz-template/vue3-components 0.7.41-alpha.97 → 0.7.41-alpha.99
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/dist/ibiz-markdown-editor-BxT3t2N6.js +1 -0
- package/dist/index-DY8xatG5.js +339 -0
- package/dist/{index.es-Bx7ry_G4.js → index.es-BxDgOess.js} +1 -1
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/map-chart-DbBbP4qh.js +1 -0
- package/dist/map-chart-user-CfTAGaU5.js +1 -0
- package/dist/wang-editor-Ct_jRlrK.js +1 -0
- package/dist/{xlsx-util-DXx8himL.js → xlsx-util-Bi2h7Kj8.js} +2 -2
- package/es/common/high-light-code/high-light-code-util.mjs +0 -1
- package/es/common/map-chart/map-chart.css +1 -1
- package/es/common/map-chart/map-chart.mjs +9 -2
- package/es/common/map-chart-user/map-chart-user.css +1 -1
- package/es/common/map-chart-user/map-chart-user.mjs +13 -5
- package/es/common/pagination/pagination.css +1 -1
- package/es/common/pagination/pagination.mjs +42 -2
- package/es/common/rawitem/rawitem.css +1 -1
- package/es/common/rawitem/rawitem.mjs +2 -0
- package/es/common/sort-bar/sort-bar.css +1 -1
- package/es/common/sort-bar/sort-bar.mjs +9 -1
- package/es/control/app-menu/app-menu.css +1 -1
- package/es/control/app-menu/app-menu.mjs +42 -20
- package/es/control/calendar/calendar-util.mjs +1 -1
- package/es/control/calendar/calendar.css +1 -1
- package/es/control/calendar/calendar.mjs +86 -51
- package/es/control/calendar/components/calendar-daily/calendar-daily.css +1 -1
- package/es/control/calendar/components/calendar-daily/calendar-daily.mjs +13 -8
- package/es/control/calendar/components/calendar-user/calendar-user.css +1 -1
- package/es/control/calendar/components/calendar-user/calendar-user.mjs +16 -8
- package/es/control/calendar/components/calendar-user2/calendar-user2.css +1 -0
- package/es/control/calendar/components/calendar-user2/calendar-user2.mjs +214 -0
- package/es/control/calendar/components/calendar-user2/index.mjs +9 -0
- package/es/control/calendar/components/calendar-week/calendar-week.css +1 -1
- package/es/control/calendar/components/calendar-week/calendar-week.mjs +10 -5
- package/es/control/calendar/components/custom-calendar/custom-calendar.css +1 -1
- package/es/control/calendar/components/custom-calendar/custom-calendar.mjs +26 -16
- package/es/control/calendar/components/custom-calendar/use-custom-calendar.mjs +2 -2
- package/es/control/calendar/components/interface/calendar-daily.mjs +8 -0
- package/es/control/calendar/components/interface/calendar-user.mjs +8 -0
- package/es/control/calendar/components/interface/calendar-week.mjs +8 -0
- package/es/control/calendar/components/interface/custom-calendar.mjs +8 -0
- package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.mjs +10 -3
- package/es/control/dashboard/dashboard.mjs +10 -3
- package/es/control/dashboard/portlet/actionbar-portlet/actionbar-portlet.mjs +10 -2
- package/es/control/dashboard/portlet/chart-portlet/chart-portlet.mjs +11 -3
- package/es/control/dashboard/portlet/container-portlet/container-portlet.mjs +11 -3
- package/es/control/dashboard/portlet/filter-portlet/filter-portlet.css +1 -1
- package/es/control/dashboard/portlet/filter-portlet/filter-portlet.mjs +12 -3
- package/es/control/dashboard/portlet/html-portlet/html-portlet.mjs +10 -2
- package/es/control/dashboard/portlet/list-portlet/list-portlet.mjs +10 -2
- package/es/control/dashboard/portlet/menu-portlet/menu-portlet.mjs +10 -2
- package/es/control/dashboard/portlet/portlet-layout/portlet-layout.css +1 -1
- package/es/control/dashboard/portlet/portlet-layout/portlet-layout.mjs +20 -8
- package/es/control/dashboard/portlet/rawitem-portlet/rawitem-portlet.mjs +10 -2
- package/es/control/dashboard/portlet/report-portlet/report-portlet.mjs +10 -2
- package/es/control/dashboard/portlet/view-portlet/view-portlet.mjs +10 -2
- package/es/control/data-view/data-view.css +1 -1
- package/es/control/data-view/data-view.mjs +42 -22
- package/es/control/drbar/drbar.css +1 -1
- package/es/control/drbar/drbar.mjs +24 -14
- package/es/control/drtab/drtab.css +1 -1
- package/es/control/drtab/drtab.mjs +36 -18
- package/es/control/drtab/flow-drtab.css +1 -1
- package/es/control/drtab/flow-drtab.mjs +21 -10
- package/es/control/form/edit-form/edit-form.css +1 -1
- package/es/control/form/form/form.mjs +12 -6
- package/es/control/form/form-detail/form-button/form-button.css +1 -1
- package/es/control/form/form-detail/form-button/form-button.mjs +11 -3
- package/es/control/form/form-detail/form-button-list/form-button-list.mjs +10 -3
- package/es/control/form/form-detail/form-druipart/form-druipart.mjs +11 -3
- package/es/control/form/form-detail/form-group-panel/form-group-panel.mjs +18 -9
- package/es/control/form/form-detail/form-iframe/form-iframe.mjs +10 -3
- package/es/control/form/form-detail/form-item/form-item-container/form-item-container.css +1 -1
- package/es/control/form/form-detail/form-item/form-item-container/form-item-container.mjs +16 -6
- package/es/control/form/form-detail/form-item/form-item.css +1 -1
- package/es/control/form/form-detail/form-item/form-item.mjs +12 -5
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.css +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +19 -6
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.css +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.mjs +18 -7
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.mjs +16 -4
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.css +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.mjs +24 -7
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid2/repeater-grid2.mjs +16 -6
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.mjs +1 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.css +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +14 -5
- package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.css +1 -1
- package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.mjs +22 -7
- package/es/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.mjs +12 -4
- package/es/control/form/form-detail/form-page/form-page.mjs +16 -6
- package/es/control/form/form-detail/form-rawitem/form-rawitem.mjs +13 -4
- package/es/control/form/form-detail/form-tab-page/form-tab-page.mjs +10 -3
- package/es/control/form/form-detail/form-tab-panel/form-tab-panel.mjs +16 -6
- package/es/control/form/search-form/advance-search/advance-search.mjs +2 -3
- package/es/control/form/search-form/search-form.css +1 -1
- package/es/control/grid/grid/grid-control.util.mjs +1 -1
- package/es/control/grid/grid/grid.css +1 -1
- package/es/control/grid/grid/grid.mjs +44 -18
- package/es/control/grid/grid-column/grid-column-header/grid-column-header.css +1 -1
- package/es/control/grid/grid-column/grid-field-column/grid-field-column.css +1 -1
- package/es/control/grid/grid-column/grid-field-edit-column/grid-edit-item/grid-edit-item.css +1 -1
- package/es/control/grid/grid-column/grid-ua-column/grid-ua-column.css +1 -1
- package/es/control/grid/row-edit-popover/row-edit-popover.css +1 -1
- package/es/control/kanban/kanban.css +1 -1
- package/es/control/kanban/kanban.mjs +46 -24
- package/es/control/list/list.css +1 -1
- package/es/control/list/list.mjs +35 -18
- package/es/control/map/map.css +1 -1
- package/es/control/map/map.mjs +23 -13
- package/es/control/medit-view-panel/medit-view-panel.css +1 -1
- package/es/control/medit-view-panel/medit-view-panel.mjs +32 -17
- package/es/control/search-bar/search-bar.css +1 -1
- package/es/control/search-bar/search-bar.mjs +22 -10
- package/es/control/search-bar/search-groups/search-groups.css +1 -1
- package/es/control/search-bar/search-groups/search-groups.mjs +16 -6
- package/es/control/toolbar/toolbar.css +1 -1
- package/es/control/toolbar/toolbar.mjs +94 -61
- package/es/control/tree/tree.css +1 -1
- package/es/control/tree/tree.mjs +27 -11
- package/es/control/tree-grid/tree-grid.mjs +44 -12
- package/es/control/tree-grid-ex/tree-grid-ex.css +1 -1
- package/es/control/tree-grid-ex/tree-grid-ex.mjs +24 -7
- package/es/control/wizard-panel/wizard-panel.css +1 -1
- package/es/control/wizard-panel/wizard-panel.mjs +29 -10
- package/es/editor/code/monaco-editor/monaco-editor.mjs +19 -5
- package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +10 -6
- package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
- package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.mjs +14 -2
- package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.mjs +6 -4
- package/es/editor/upload/ibiz-image-cropping/ibiz-image-cropping.mjs +1 -1
- package/es/editor/upload/ibiz-image-upload/ibiz-image-upload.mjs +1 -1
- package/es/editor/upload/upload-editor.controller.mjs +9 -1
- package/es/editor/upload/use/use-custom-upload.mjs +62 -13
- package/es/editor/upload/use/use-iview-upload.mjs +45 -2
- package/es/index.mjs +1 -0
- package/es/locale/index.mjs +29 -1
- package/es/panel-component/panel-button/panel-button.css +1 -1
- package/es/panel-component/panel-view-header/panel-view-header.css +1 -1
- package/es/panel-component/searchform-buttons/searchform-buttons.css +1 -1
- package/es/panel-component/searchform-buttons/searchform-buttons.mjs +10 -3
- package/es/util/index.mjs +1 -0
- package/es/util/pagination/use-pagination.mjs +33 -1
- package/es/util/path-util/path-util.mjs +14 -0
- package/lib/common/high-light-code/high-light-code-util.cjs +0 -1
- package/lib/common/map-chart/map-chart.cjs +8 -1
- package/lib/common/map-chart/map-chart.css +1 -1
- package/lib/common/map-chart-user/map-chart-user.cjs +12 -4
- package/lib/common/map-chart-user/map-chart-user.css +1 -1
- package/lib/common/pagination/pagination.cjs +42 -2
- package/lib/common/pagination/pagination.css +1 -1
- package/lib/common/rawitem/rawitem.cjs +2 -0
- package/lib/common/rawitem/rawitem.css +1 -1
- package/lib/common/sort-bar/sort-bar.cjs +9 -1
- package/lib/common/sort-bar/sort-bar.css +1 -1
- package/lib/control/app-menu/app-menu.cjs +40 -18
- package/lib/control/app-menu/app-menu.css +1 -1
- package/lib/control/calendar/calendar-util.cjs +1 -1
- package/lib/control/calendar/calendar.cjs +85 -50
- package/lib/control/calendar/calendar.css +1 -1
- package/lib/control/calendar/components/calendar-daily/calendar-daily.cjs +13 -8
- package/lib/control/calendar/components/calendar-daily/calendar-daily.css +1 -1
- package/lib/control/calendar/components/calendar-user/calendar-user.cjs +16 -8
- package/lib/control/calendar/components/calendar-user/calendar-user.css +1 -1
- package/lib/control/calendar/components/calendar-user2/calendar-user2.cjs +216 -0
- package/lib/control/calendar/components/calendar-user2/calendar-user2.css +1 -0
- package/lib/control/calendar/components/calendar-user2/index.cjs +14 -0
- package/lib/control/calendar/components/calendar-week/calendar-week.cjs +10 -5
- package/lib/control/calendar/components/calendar-week/calendar-week.css +1 -1
- package/lib/control/calendar/components/custom-calendar/custom-calendar.cjs +26 -16
- package/lib/control/calendar/components/custom-calendar/custom-calendar.css +1 -1
- package/lib/control/calendar/components/custom-calendar/use-custom-calendar.cjs +2 -2
- package/lib/control/calendar/components/interface/calendar-daily.cjs +8 -0
- package/lib/control/calendar/components/interface/calendar-user.cjs +8 -0
- package/lib/control/calendar/components/interface/calendar-week.cjs +8 -0
- package/lib/control/calendar/components/interface/custom-calendar.cjs +8 -0
- package/lib/control/dashboard/custom-dashboard-container/custom-dashboard-container.cjs +9 -2
- package/lib/control/dashboard/dashboard.cjs +9 -2
- package/lib/control/dashboard/portlet/actionbar-portlet/actionbar-portlet.cjs +9 -1
- package/lib/control/dashboard/portlet/chart-portlet/chart-portlet.cjs +10 -2
- package/lib/control/dashboard/portlet/container-portlet/container-portlet.cjs +10 -2
- package/lib/control/dashboard/portlet/filter-portlet/filter-portlet.cjs +11 -2
- package/lib/control/dashboard/portlet/filter-portlet/filter-portlet.css +1 -1
- package/lib/control/dashboard/portlet/html-portlet/html-portlet.cjs +9 -1
- package/lib/control/dashboard/portlet/list-portlet/list-portlet.cjs +9 -1
- package/lib/control/dashboard/portlet/menu-portlet/menu-portlet.cjs +9 -1
- package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.cjs +19 -7
- package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.css +1 -1
- package/lib/control/dashboard/portlet/rawitem-portlet/rawitem-portlet.cjs +9 -1
- package/lib/control/dashboard/portlet/report-portlet/report-portlet.cjs +9 -1
- package/lib/control/dashboard/portlet/view-portlet/view-portlet.cjs +9 -1
- package/lib/control/data-view/data-view.cjs +40 -20
- package/lib/control/data-view/data-view.css +1 -1
- package/lib/control/drbar/drbar.cjs +23 -13
- package/lib/control/drbar/drbar.css +1 -1
- package/lib/control/drtab/drtab.cjs +34 -16
- package/lib/control/drtab/drtab.css +1 -1
- package/lib/control/drtab/flow-drtab.cjs +20 -9
- package/lib/control/drtab/flow-drtab.css +1 -1
- package/lib/control/form/edit-form/edit-form.css +1 -1
- package/lib/control/form/form/form.cjs +10 -4
- package/lib/control/form/form-detail/form-button/form-button.cjs +10 -2
- package/lib/control/form/form-detail/form-button/form-button.css +1 -1
- package/lib/control/form/form-detail/form-button-list/form-button-list.cjs +9 -2
- package/lib/control/form/form-detail/form-druipart/form-druipart.cjs +10 -2
- package/lib/control/form/form-detail/form-group-panel/form-group-panel.cjs +17 -8
- package/lib/control/form/form-detail/form-iframe/form-iframe.cjs +9 -2
- package/lib/control/form/form-detail/form-item/form-item-container/form-item-container.cjs +15 -5
- package/lib/control/form/form-detail/form-item/form-item-container/form-item-container.css +1 -1
- package/lib/control/form/form-detail/form-item/form-item.cjs +11 -4
- package/lib/control/form/form-detail/form-item/form-item.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +18 -5
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.cjs +17 -6
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.cjs +15 -3
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.cjs +23 -6
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid2/repeater-grid2.cjs +15 -5
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.cjs +1 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +13 -4
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.cjs +21 -6
- package/lib/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.cjs +11 -3
- package/lib/control/form/form-detail/form-page/form-page.cjs +15 -5
- package/lib/control/form/form-detail/form-rawitem/form-rawitem.cjs +12 -3
- package/lib/control/form/form-detail/form-tab-page/form-tab-page.cjs +9 -2
- package/lib/control/form/form-detail/form-tab-panel/form-tab-panel.cjs +15 -5
- package/lib/control/form/search-form/advance-search/advance-search.cjs +1 -2
- package/lib/control/form/search-form/search-form.css +1 -1
- package/lib/control/grid/grid/grid-control.util.cjs +1 -1
- package/lib/control/grid/grid/grid.cjs +42 -16
- package/lib/control/grid/grid/grid.css +1 -1
- package/lib/control/grid/grid-column/grid-column-header/grid-column-header.css +1 -1
- package/lib/control/grid/grid-column/grid-field-column/grid-field-column.css +1 -1
- package/lib/control/grid/grid-column/grid-field-edit-column/grid-edit-item/grid-edit-item.css +1 -1
- package/lib/control/grid/grid-column/grid-ua-column/grid-ua-column.css +1 -1
- package/lib/control/grid/row-edit-popover/row-edit-popover.css +1 -1
- package/lib/control/kanban/kanban.cjs +45 -23
- package/lib/control/kanban/kanban.css +1 -1
- package/lib/control/list/list.cjs +34 -17
- package/lib/control/list/list.css +1 -1
- package/lib/control/map/map.cjs +21 -11
- package/lib/control/map/map.css +1 -1
- package/lib/control/medit-view-panel/medit-view-panel.cjs +31 -16
- package/lib/control/medit-view-panel/medit-view-panel.css +1 -1
- package/lib/control/search-bar/search-bar.cjs +21 -9
- package/lib/control/search-bar/search-bar.css +1 -1
- package/lib/control/search-bar/search-groups/search-groups.cjs +15 -5
- package/lib/control/search-bar/search-groups/search-groups.css +1 -1
- package/lib/control/toolbar/toolbar.cjs +92 -59
- package/lib/control/toolbar/toolbar.css +1 -1
- package/lib/control/tree/tree.cjs +26 -10
- package/lib/control/tree/tree.css +1 -1
- package/lib/control/tree-grid/tree-grid.cjs +42 -10
- package/lib/control/tree-grid-ex/tree-grid-ex.cjs +22 -5
- package/lib/control/tree-grid-ex/tree-grid-ex.css +1 -1
- package/lib/control/wizard-panel/wizard-panel.cjs +28 -9
- package/lib/control/wizard-panel/wizard-panel.css +1 -1
- package/lib/editor/code/monaco-editor/monaco-editor.cjs +19 -5
- package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +10 -6
- package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.cjs +14 -2
- package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
- package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.cjs +6 -4
- package/lib/editor/upload/ibiz-image-cropping/ibiz-image-cropping.cjs +1 -1
- package/lib/editor/upload/ibiz-image-upload/ibiz-image-upload.cjs +1 -1
- package/lib/editor/upload/upload-editor.controller.cjs +9 -1
- package/lib/editor/upload/use/use-custom-upload.cjs +62 -13
- package/lib/editor/upload/use/use-iview-upload.cjs +45 -2
- package/lib/index.cjs +2 -0
- package/lib/locale/index.cjs +29 -1
- package/lib/panel-component/panel-button/panel-button.css +1 -1
- package/lib/panel-component/panel-view-header/panel-view-header.css +1 -1
- package/lib/panel-component/searchform-buttons/searchform-buttons.cjs +9 -2
- package/lib/panel-component/searchform-buttons/searchform-buttons.css +1 -1
- package/lib/util/index.cjs +2 -0
- package/lib/util/pagination/use-pagination.cjs +33 -1
- package/lib/util/path-util/path-util.cjs +16 -0
- package/package.json +5 -5
- package/dist/ibiz-markdown-editor-CQRvKzXG.js +0 -1
- package/dist/index-YyzbGEva.js +0 -339
- package/dist/map-chart-nwkjjlMK.js +0 -1
- package/dist/map-chart-user-D2lgUtGX.js +0 -1
- package/dist/wang-editor-BnRUlcfv.js +0 -1
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
var core = require('@ibiz-template/core');
|
|
4
4
|
var lodashEs = require('lodash-es');
|
|
5
5
|
var vue = require('vue');
|
|
6
|
+
require('../../../util/index.cjs');
|
|
7
|
+
var pathUtil = require('../../../util/path-util/path-util.cjs');
|
|
6
8
|
|
|
7
9
|
"use strict";
|
|
8
10
|
var __defProp = Object.defineProperty;
|
|
@@ -47,7 +49,7 @@ function getBody(xhr) {
|
|
|
47
49
|
}
|
|
48
50
|
let fileId = 1;
|
|
49
51
|
const genFileId = () => Date.now() + 36e5 + fileId++;
|
|
50
|
-
function useCustomUpload(c, options) {
|
|
52
|
+
function useCustomUpload(c, options, emit) {
|
|
51
53
|
const customUpload = (option) => {
|
|
52
54
|
if (typeof XMLHttpRequest === "undefined")
|
|
53
55
|
throw new core.RuntimeError("XMLHttpRequest is undefined");
|
|
@@ -122,25 +124,72 @@ function useCustomUpload(c, options) {
|
|
|
122
124
|
};
|
|
123
125
|
const handleFolderSelect = (event) => {
|
|
124
126
|
const target = event.target;
|
|
125
|
-
if (target.files
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
if (!target.files || target.files.length === 0)
|
|
128
|
+
return;
|
|
129
|
+
let files = Array.from(target.files);
|
|
130
|
+
if (c.hiddenFileRegex) {
|
|
131
|
+
let regex = null;
|
|
132
|
+
try {
|
|
133
|
+
regex = new RegExp(c.hiddenFileRegex);
|
|
134
|
+
} catch (e) {
|
|
135
|
+
ibiz.log.warn("hiddenFileRegex invalid: ".concat(c.hiddenFileRegex));
|
|
136
|
+
}
|
|
137
|
+
if (regex) {
|
|
138
|
+
files = files.filter((file) => {
|
|
139
|
+
const rawFile = file;
|
|
140
|
+
const relativePathWithoutRoot = pathUtil.getRelativePathWithoutRoot(
|
|
141
|
+
rawFile.webkitRelativePath
|
|
142
|
+
);
|
|
143
|
+
return !regex.test(relativePathWithoutRoot);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const promises = [];
|
|
148
|
+
for (const file of files) {
|
|
149
|
+
const rawFile = file;
|
|
150
|
+
rawFile.uid = genFileId();
|
|
151
|
+
rawFile.path = file.webkitRelativePath;
|
|
152
|
+
if (options.addCacheCount) {
|
|
153
|
+
options.addCacheCount();
|
|
154
|
+
}
|
|
155
|
+
const promise = new Promise((resolve) => {
|
|
131
156
|
const tempOption = {
|
|
132
157
|
file: rawFile,
|
|
133
158
|
filename: "file",
|
|
134
159
|
method: "post",
|
|
135
|
-
...options
|
|
160
|
+
...options,
|
|
161
|
+
onSuccess: (response) => resolve({ status: "ok", data: response }),
|
|
162
|
+
onError: (error) => resolve({ status: "err", data: error, rawFile })
|
|
136
163
|
};
|
|
137
|
-
if (options.addCacheCount) {
|
|
138
|
-
options.addCacheCount();
|
|
139
|
-
}
|
|
140
164
|
customUpload(tempOption);
|
|
141
|
-
}
|
|
142
|
-
|
|
165
|
+
});
|
|
166
|
+
promises.push(promise);
|
|
143
167
|
}
|
|
168
|
+
emit == null ? void 0 : emit("customAction", { tag: "beforeUpload", data: [...files] });
|
|
169
|
+
Promise.all(promises).then((results) => {
|
|
170
|
+
var _a, _b;
|
|
171
|
+
const successes = [];
|
|
172
|
+
const errors = [];
|
|
173
|
+
for (const result of results) {
|
|
174
|
+
if (result.status === "ok") {
|
|
175
|
+
successes.push(result);
|
|
176
|
+
} else {
|
|
177
|
+
errors.push(result);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const totalCount = files.length;
|
|
181
|
+
if (options.drainCacheCount && totalCount > 1) {
|
|
182
|
+
options.drainCacheCount(totalCount - 1);
|
|
183
|
+
}
|
|
184
|
+
if (errors.length > 0) {
|
|
185
|
+
const firstError = errors[0];
|
|
186
|
+
(_a = options.onError) == null ? void 0 : _a.call(options, firstError.data, firstError.rawFile);
|
|
187
|
+
} else {
|
|
188
|
+
const successData = successes.map((item) => item.data);
|
|
189
|
+
(_b = options.onSuccess) == null ? void 0 : _b.call(options, successData);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
target.files = null;
|
|
144
193
|
};
|
|
145
194
|
return { customUpload, folderInputRef, selectFolder, handleFolderSelect };
|
|
146
195
|
}
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var core = require('@ibiz-template/core');
|
|
4
4
|
var vue = require('vue');
|
|
5
|
+
require('../../../util/index.cjs');
|
|
6
|
+
var pathUtil = require('../../../util/path-util/path-util.cjs');
|
|
5
7
|
|
|
6
8
|
"use strict";
|
|
7
|
-
function useIViewUpload(props, valueChange, c) {
|
|
9
|
+
function useIViewUpload(props, valueChange, c, emit) {
|
|
8
10
|
const files = vue.ref([]);
|
|
9
11
|
const uploadHeaders = ibiz.util.file.getUploadHeaders();
|
|
10
12
|
const headers = vue.ref({ ...uploadHeaders });
|
|
@@ -156,7 +158,15 @@ function useIViewUpload(props, valueChange, c) {
|
|
|
156
158
|
const addCacheCount = () => {
|
|
157
159
|
uploadCache.count += 1;
|
|
158
160
|
};
|
|
161
|
+
const drainCacheCount = (n) => {
|
|
162
|
+
uploadCache.count -= n;
|
|
163
|
+
if (uploadCache.count <= 0) {
|
|
164
|
+
uploadCache.count = 0;
|
|
165
|
+
emitValue();
|
|
166
|
+
}
|
|
167
|
+
};
|
|
159
168
|
const beforeUpload = (rawFile) => {
|
|
169
|
+
emit == null ? void 0 : emit("customAction", { tag: "beforeUpload", data: [rawFile] });
|
|
160
170
|
if (rawFile.name.split(".").pop() === "svg") {
|
|
161
171
|
const blobUrl = URL.createObjectURL(rawFile);
|
|
162
172
|
svgBlob.set(rawFile.name, blobUrl);
|
|
@@ -172,6 +182,30 @@ function useIViewUpload(props, valueChange, c) {
|
|
|
172
182
|
return true;
|
|
173
183
|
};
|
|
174
184
|
const onSuccess = (response) => {
|
|
185
|
+
let hiddenRegex = null;
|
|
186
|
+
if (c.hiddenFileRegex) {
|
|
187
|
+
try {
|
|
188
|
+
hiddenRegex = new RegExp(c.hiddenFileRegex);
|
|
189
|
+
} catch (e) {
|
|
190
|
+
ibiz.log.warn("hiddenFileRegex invalid: ".concat(c.hiddenFileRegex));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (hiddenRegex && Array.isArray(response)) {
|
|
194
|
+
response = response.filter((file) => {
|
|
195
|
+
if (file.path && file.filename && file.path.indexOf(file.filename) > -1) {
|
|
196
|
+
const relativePathWithoutRoot2 = pathUtil.getRelativePathWithoutRoot(file.path);
|
|
197
|
+
return !hiddenRegex.test(relativePathWithoutRoot2);
|
|
198
|
+
}
|
|
199
|
+
const relativePathWithoutRoot = pathUtil.getRelativePathWithoutRoot(
|
|
200
|
+
"".concat(file.path, "/").concat(file.filename)
|
|
201
|
+
);
|
|
202
|
+
return !hiddenRegex.test(relativePathWithoutRoot);
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
emit == null ? void 0 : emit("customAction", {
|
|
206
|
+
tag: "onSuccess",
|
|
207
|
+
data: Array.isArray(response) ? response : [response]
|
|
208
|
+
});
|
|
175
209
|
if (!response) {
|
|
176
210
|
return;
|
|
177
211
|
}
|
|
@@ -206,6 +240,10 @@ function useIViewUpload(props, valueChange, c) {
|
|
|
206
240
|
}
|
|
207
241
|
};
|
|
208
242
|
const onError = (...args) => {
|
|
243
|
+
emit == null ? void 0 : emit("customAction", {
|
|
244
|
+
tag: "onError",
|
|
245
|
+
data: args
|
|
246
|
+
});
|
|
209
247
|
const error = args[0];
|
|
210
248
|
uploadCache.count -= 1;
|
|
211
249
|
throw new core.HttpError({
|
|
@@ -213,6 +251,10 @@ function useIViewUpload(props, valueChange, c) {
|
|
|
213
251
|
});
|
|
214
252
|
};
|
|
215
253
|
const onRemove = (file) => {
|
|
254
|
+
emit == null ? void 0 : emit("customAction", {
|
|
255
|
+
tag: "onRemove",
|
|
256
|
+
data: [file]
|
|
257
|
+
});
|
|
216
258
|
if (props.disabled) {
|
|
217
259
|
return;
|
|
218
260
|
}
|
|
@@ -265,7 +307,8 @@ function useIViewUpload(props, valueChange, c) {
|
|
|
265
307
|
onRemove,
|
|
266
308
|
onSuccess,
|
|
267
309
|
beforeUpload,
|
|
268
|
-
addCacheCount
|
|
310
|
+
addCacheCount,
|
|
311
|
+
drainCacheCount
|
|
269
312
|
};
|
|
270
313
|
}
|
|
271
314
|
|
package/lib/index.cjs
CHANGED
|
@@ -188,6 +188,7 @@ var userRouteUtil = require('./util/user-route-util/user-route-util.cjs');
|
|
|
188
188
|
var printPreviewUtil = require('./util/print-preview-util/print-preview-util.cjs');
|
|
189
189
|
var contextMenu = require('./util/context-menu/context-menu.cjs');
|
|
190
190
|
var qrcodeUtil = require('./util/qrcode-util/qrcode-util.cjs');
|
|
191
|
+
var pathUtil = require('./util/path-util/path-util.cjs');
|
|
191
192
|
var wangEditorUtil = require('./util/wang-editor-util/wang-editor-util.cjs');
|
|
192
193
|
var icon = require('./util/icon/icon.cjs');
|
|
193
194
|
var authGuard = require('./web-app/guard/auth-guard/auth-guard.cjs');
|
|
@@ -386,6 +387,7 @@ exports.validateRouteSegments = userRouteUtil.validateRouteSegments;
|
|
|
386
387
|
exports.PrintPreviewUtil = printPreviewUtil.PrintPreviewUtil;
|
|
387
388
|
exports.useContextMenu = contextMenu.useContextMenu;
|
|
388
389
|
exports.QrcodeUtil = qrcodeUtil.QrcodeUtil;
|
|
390
|
+
exports.getRelativePathWithoutRoot = pathUtil.getRelativePathWithoutRoot;
|
|
389
391
|
exports.parseHtml = wangEditorUtil.parseHtml;
|
|
390
392
|
exports.ArrowLeftBold = icon.ArrowLeftBold;
|
|
391
393
|
exports.ArrowRightBold = icon.ArrowRightBold;
|
package/lib/locale/index.cjs
CHANGED
|
@@ -49,12 +49,40 @@ class IBizI18n {
|
|
|
49
49
|
__publicField(this, "langMap", /* @__PURE__ */ new Map());
|
|
50
50
|
this.defaultLang = "zh-CN";
|
|
51
51
|
this.html = document.querySelector("html");
|
|
52
|
-
const
|
|
52
|
+
const rawLang = localStorage.getItem("language") || this.defaultLang;
|
|
53
|
+
const lang = this.normalizeLang(rawLang);
|
|
53
54
|
i18n.global.locale.value = lang;
|
|
54
55
|
this.html.setAttribute("lang", lang);
|
|
55
56
|
this.langMap.set("en", () => Promise.resolve().then(function () { return require('./en/index.cjs'); }));
|
|
56
57
|
this.langMap.set("zh-CN", () => Promise.resolve().then(function () { return require('./zh-CN/index.cjs'); }));
|
|
57
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* 归一化语言标识,兼容不同操作系统/浏览器返回的格式差异
|
|
61
|
+
* 例如:en-US/en_US -> en,zh-Hans-CN/zh_CN -> zh-CN,zh-Hant-* -> zh-CN
|
|
62
|
+
*
|
|
63
|
+
* @author tony001
|
|
64
|
+
* @date 2026-06-02
|
|
65
|
+
* @protected
|
|
66
|
+
* @param {string} lang
|
|
67
|
+
* @return {*} {string}
|
|
68
|
+
*/
|
|
69
|
+
normalizeLang(lang) {
|
|
70
|
+
if (!lang) {
|
|
71
|
+
return this.defaultLang;
|
|
72
|
+
}
|
|
73
|
+
const tag = lang.replace(/_/g, "-");
|
|
74
|
+
const lower = tag.toLowerCase();
|
|
75
|
+
if (lower === "en" || lower.startsWith("en-")) {
|
|
76
|
+
return "en";
|
|
77
|
+
}
|
|
78
|
+
if (lower === "zh" || lower.startsWith("zh-hans") || lower === "zh-cn" || lower === "zh-sg") {
|
|
79
|
+
return "zh-CN";
|
|
80
|
+
}
|
|
81
|
+
if (lower.startsWith("zh-hant") || lower === "zh-tw" || lower === "zh-hk" || lower === "zh-mo") {
|
|
82
|
+
return "zh-CN";
|
|
83
|
+
}
|
|
84
|
+
return tag;
|
|
85
|
+
}
|
|
58
86
|
/**
|
|
59
87
|
* 初始化加载默认多语言文件
|
|
60
88
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-panel-button{--ibiz-panel-button-icon-margin:var(--ibiz-spacing-extra-tight);--ibiz-panel-button-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-panel-button-icon-max-height:var(--ibiz-width-icon-medium);width:100%;padding:var(--ibiz-
|
|
1
|
+
.ibiz-panel-button{--ibiz-panel-button-icon-margin:var(--ibiz-spacing-extra-tight);--ibiz-panel-button-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-panel-button-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-panel-button-padding:var(--ibiz-spacing-tight);width:100%;padding:var(--ibiz-panel-button-padding);overflow:hidden}.ibiz-panel-button .el-button{width:100%}.ibiz-panel-button .el-button>span{pointer-events:none}.ibiz-panel-button .el-button .ibiz-panel-button-content{display:flex;align-items:center;justify-content:flex-start}.ibiz-panel-button .el-button .ibiz-panel-button-content i,.ibiz-panel-button .el-button .ibiz-panel-button-content img{display:inline-block;max-width:var(--ibiz-panel-button-icon-max-width);max-height:var(--ibiz-panel-button-icon-max-height)}.ibiz-panel-button .el-button .ibiz-panel-button-content .ibiz-icon+.ibiz-panel-button-content--caption{margin-left:var(--ibiz-panel-button-icon-margin)}.ibiz-panel-button.is-loading .el-button .ibiz-icon{display:none}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-panel-view-header{width:auto;height:
|
|
1
|
+
.ibiz-panel-view-header{--ibiz-panel-view-header-height:64px;--ibiz-panel-view-header-border-color:var(--ibiz-color-border);--ibiz-panel-view-header-padding:0 var(--ibiz-spacing-base);width:auto;height:var(--ibiz-panel-view-header-height);border-bottom:1px solid var(--ibiz-panel-view-header-border-color)}.ibiz-panel-view-header .ibiz-row{height:100%}.ibiz-panel-view-header .ibiz-panel-container--view_header_right{padding:var(--ibiz-panel-view-header-padding)}.ibiz-panel-view-header .el-tabs__nav-wrap::after{display:none}
|
|
@@ -32,6 +32,10 @@ const SearchFormButtons = /* @__PURE__ */ vue.defineComponent({
|
|
|
32
32
|
var _a, _b;
|
|
33
33
|
const ns = vue3Util.useNamespace("searchform-buttons");
|
|
34
34
|
const c = prop.controller;
|
|
35
|
+
const {
|
|
36
|
+
semanticClass,
|
|
37
|
+
semanticStyle
|
|
38
|
+
} = vue3Util.useSemanticNode(c.searchFrom);
|
|
35
39
|
const isDesignPreview = ((_b = (_a = c.panel) == null ? void 0 : _a.context) == null ? void 0 : _b.srfrunmode) === "DESIGN";
|
|
36
40
|
const onSearchButtonClick = () => {
|
|
37
41
|
if (isDesignPreview) {
|
|
@@ -61,13 +65,16 @@ const SearchFormButtons = /* @__PURE__ */ vue.defineComponent({
|
|
|
61
65
|
onSearchButtonClick,
|
|
62
66
|
onResetButtonClick,
|
|
63
67
|
saveFilterConfirm,
|
|
64
|
-
onAdvanceSearch
|
|
68
|
+
onAdvanceSearch,
|
|
69
|
+
semanticClass,
|
|
70
|
+
semanticStyle
|
|
65
71
|
};
|
|
66
72
|
},
|
|
67
73
|
render() {
|
|
68
74
|
let _slot, _slot4;
|
|
69
75
|
return vue.createVNode("div", {
|
|
70
|
-
"class": [this.ns.b(), this.ns.m(this.modelData.id), ...this.controller.containerClass]
|
|
76
|
+
"class": [this.ns.b(), this.semanticClass("button", this.controller.state), this.ns.m(this.modelData.id), ...this.controller.containerClass],
|
|
77
|
+
"style": this.semanticStyle("button", this.controller.state)
|
|
71
78
|
}, [this.controller.searchButtonStyle === "SEARCHONLY" ? vue.createVNode(vue.resolveComponent("el-button"), {
|
|
72
79
|
"onClick": this.onSearchButtonClick
|
|
73
80
|
}, _isSlot(_slot = ibiz.i18n.t("app.search")) ? _slot : {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-searchform-buttons{--ibiz-searchform-
|
|
1
|
+
.ibiz-searchform-buttons{--ibiz-control-searchform-button-height:40px;--ibiz-control-searchform-button-gap:var(--ibiz-spacing-tight);--ibiz-control-searchform-button-margin:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-extra-tight) 0 var(--ibiz-spacing-tight);display:flex;gap:var(--ibiz-control-searchform-button-gap);align-items:center;height:var(--ibiz-control-searchform-button-height);margin:var(--ibiz-control-searchform-button-margin)}.ibiz-searchform-buttons .el-button+.el-button{margin-left:0}.ibiz-searchform-buttons-filter-item{--ibiz-control-searchform-button-filter-font-size:var(--ibiz-font-size-header-5);--ibiz-control-searchform-button-filter-gap:var(--ibiz-spacing-extra-tight);position:relative}.ibiz-searchform-buttons-filter-item__text{padding-right:var(--ibiz-control-searchform-button-filter-gap)}.ibiz-searchform-buttons-filter-item__remove{position:absolute;top:50%;right:0;display:none;font-size:var(--ibiz-control-searchform-button-filter-font-size);transform:translateY(-50%)}.ibiz-searchform-buttons-filter-item:hover .ibiz-searchform-buttons-filter-item__remove{display:block}
|
package/lib/util/index.cjs
CHANGED
|
@@ -23,6 +23,7 @@ var userRouteUtil = require('./user-route-util/user-route-util.cjs');
|
|
|
23
23
|
var printPreviewUtil = require('./print-preview-util/print-preview-util.cjs');
|
|
24
24
|
var contextMenu = require('./context-menu/context-menu.cjs');
|
|
25
25
|
var qrcodeUtil = require('./qrcode-util/qrcode-util.cjs');
|
|
26
|
+
var pathUtil = require('./path-util/path-util.cjs');
|
|
26
27
|
|
|
27
28
|
"use strict";
|
|
28
29
|
|
|
@@ -51,3 +52,4 @@ exports.validateRouteSegments = userRouteUtil.validateRouteSegments;
|
|
|
51
52
|
exports.PrintPreviewUtil = printPreviewUtil.PrintPreviewUtil;
|
|
52
53
|
exports.useContextMenu = contextMenu.useContextMenu;
|
|
53
54
|
exports.QrcodeUtil = qrcodeUtil.QrcodeUtil;
|
|
55
|
+
exports.getRelativePathWithoutRoot = pathUtil.getRelativePathWithoutRoot;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
3
4
|
var runtime = require('@ibiz-template/runtime');
|
|
4
5
|
var lodashEs = require('lodash-es');
|
|
5
6
|
|
|
@@ -43,7 +44,38 @@ function usePagination(c) {
|
|
|
43
44
|
function onPageRefresh() {
|
|
44
45
|
c.load();
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
+
const { semanticClass, semanticStyle } = vue3Util.useSemanticNode(c);
|
|
48
|
+
const pageSemantic = {
|
|
49
|
+
refresh: {
|
|
50
|
+
class: semanticClass("pagination.refresh"),
|
|
51
|
+
style: semanticStyle("pagination.refresh")
|
|
52
|
+
},
|
|
53
|
+
description: {
|
|
54
|
+
class: semanticClass("pagination.description"),
|
|
55
|
+
style: semanticStyle("pagination.description")
|
|
56
|
+
},
|
|
57
|
+
item: {
|
|
58
|
+
class: semanticClass("pagination.item"),
|
|
59
|
+
style: semanticStyle("pagination.item")
|
|
60
|
+
},
|
|
61
|
+
prev: {
|
|
62
|
+
class: semanticClass("pagination.prev"),
|
|
63
|
+
style: semanticStyle("pagination.prev")
|
|
64
|
+
},
|
|
65
|
+
next: {
|
|
66
|
+
class: semanticClass("pagination.next"),
|
|
67
|
+
style: semanticStyle("pagination.next")
|
|
68
|
+
},
|
|
69
|
+
sizes: {
|
|
70
|
+
class: semanticClass("pagination.sizes"),
|
|
71
|
+
style: semanticStyle("pagination.sizes")
|
|
72
|
+
},
|
|
73
|
+
jump: {
|
|
74
|
+
class: semanticClass("pagination.jump"),
|
|
75
|
+
style: semanticStyle("pagination.jump")
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
return { pageSemantic, onPageChange, onPageSizeChange, onPageRefresh };
|
|
47
79
|
}
|
|
48
80
|
|
|
49
81
|
exports.usePagination = usePagination;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
const getRelativePathWithoutRoot = (webkitRelativePath) => {
|
|
5
|
+
if (!webkitRelativePath) {
|
|
6
|
+
return "";
|
|
7
|
+
}
|
|
8
|
+
const pathParts = webkitRelativePath.split("/");
|
|
9
|
+
if (pathParts.length > 1) {
|
|
10
|
+
pathParts.shift();
|
|
11
|
+
return pathParts.join("/");
|
|
12
|
+
}
|
|
13
|
+
return webkitRelativePath;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
exports.getRelativePathWithoutRoot = getRelativePathWithoutRoot;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/vue3-components",
|
|
3
|
-
"version": "0.7.41-alpha.
|
|
3
|
+
"version": "0.7.41-alpha.99",
|
|
4
4
|
"description": "web端组件库(vue3)",
|
|
5
5
|
"main": "lib/index.cjs",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
|
32
32
|
"@floating-ui/dom": "^1.5.3",
|
|
33
|
-
"@ibiz-template-plugin/ai-chat": "^0.0.
|
|
33
|
+
"@ibiz-template-plugin/ai-chat": "^0.0.85",
|
|
34
34
|
"@ibiz-template-plugin/gantt": "0.1.8-alpha.444",
|
|
35
35
|
"@ibiz-template-plugin/bi-report": "0.0.32",
|
|
36
36
|
"@ibiz-template-plugin/data-view": "0.0.7",
|
|
37
37
|
"@ibiz-template/core": "0.7.41-alpha.101",
|
|
38
38
|
"@ibiz-template/devtool": "0.0.14",
|
|
39
|
-
"@ibiz-template/model-helper": "0.7.41-alpha.
|
|
40
|
-
"@ibiz-template/runtime": "0.7.41-alpha.
|
|
39
|
+
"@ibiz-template/model-helper": "0.7.41-alpha.105",
|
|
40
|
+
"@ibiz-template/runtime": "0.7.41-alpha.105",
|
|
41
41
|
"@ibiz-template/theme": "0.7.39",
|
|
42
|
-
"@ibiz-template/vue3-util": "0.7.41-alpha.
|
|
42
|
+
"@ibiz-template/vue3-util": "0.7.41-alpha.105",
|
|
43
43
|
"@ibiz-template/web-theme": "3.14.0",
|
|
44
44
|
"@ibiz/model-core": "^0.1.86",
|
|
45
45
|
"@imengyu/vue3-context-menu": "^1.3.5",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
System.register(["vue","@ibiz-template/vue3-util","qx-util","cherry-markdown","@ibiz-template/runtime","@ibiz-template/core"],function(e){"use strict";var t,n,i,o,a,l,r,s,c,d,u,m,h,v,p,f,b,g,w;return{setters:[function(e){t=e.nextTick,n=e.ref,i=e.onBeforeUnmount,o=e.createVNode,a=e.resolveComponent,l=e.defineComponent,r=e.watch,s=e.onMounted,c=e.onUnmounted},function(e){d=e.useUIStore,u=e.getMarkDownEmits,m=e.getMarkDownProps,h=e.useNamespace},function(e){v=e.createUUID},function(e){p=e.default},function(e){f=e.parseSearchParams,b=e.UIActionUtil,g=e.OpenAppViewCommand},function(e){w=e.IBizContext}],execute:function(){function k(e,t){return!(!e||1!==e.nodeType||e.nodeName!==t)}function C(e){const l=n(""),r=n([]),s=n(),c=n(!1);let d=null;const u=async e=>{var n;if(c.value=!0,l.value=e,r.value=[e],await t(),s.value){const{container:e}=s.value.$refs;e&&(null==(n=e.children[0])||n.click())}},m=e=>{"Escape"!==e.key&&27!==e.keyCode||(e.stopPropagation(),e.preventDefault(),r.value=[],c.value=!1,v())},h=async()=>{var e;await t();const n=null==(e=s.value)?void 0:e.$refs.container;if(!n)return;const i=n.querySelector(".el-image-viewer__wrapper");null==i||i.addEventListener("keydown",m)},v=()=>{var e;const t=null==(e=s.value)?void 0:e.$refs.container;if(!t)return;const n=t.querySelector(".el-image-viewer__wrapper");null==n||n.removeEventListener("keydown",m)},p=e=>{const t=null==e?void 0:e.target;if(k(t,"IMG")&&t)return void u(t.src);const n=function(e){let t=e;for(;t;){if(t.classList.contains("cherry-previewer"))return null;const e=t.parentElement;if(k(t,"svg")&&e&&"mermaid"===e.dataset.type)return t;t=t.parentElement}return null}(t);n&&u(function(e){const t=e.cloneNode(!0),n=e.width.baseVal.value||e.clientWidth,i=e.height.baseVal.value||e.clientHeight;t.setAttribute("width",n),t.setAttribute("height",i),t.style.backgroundColor="white";const o=(new XMLSerializer).serializeToString(t),a=btoa(unescape(encodeURIComponent(o)));return"data:image/svg+xml;base64,".concat(a)}(n))},f=()=>{r.value=[],c.value=!1};return i(()=>{d&&(d.removeEventListener("click",p),d=null),v()}),{isImgPreview:c,renderImgPreview:()=>o(a("el-image"),{class:e.e("img-preview"),ref:s,"zoom-rate":1.1,src:l.value,"preview-src-list":r.value,"hide-on-click-modal":!0,onShow:h,onClose:f,fit:"cover"},null),onMDEditorCreated:e=>{var t,n;d=(null==(n=null==(t=null==e?void 0:e.previewer)?void 0:t.previewerBubble)?void 0:n.previewerDom)||null,null==d||d.addEventListener("click",p)}}}e("default",l({name:"IBizMarkDown",props:m(),emits:u(),setup(e,{emit:a,slots:l}){var u,m,k,x,y,z;const I=h("markdown"),P=e.controller,M=n("");let E=null;const A={en:"en_US","zh-CN":"zh_CN"},S=v(),{isImgPreview:U,onMDEditorCreated:D,renderImgPreview:O}=C(I),T=ibiz.util.file.getUploadHeaders(),B=n({...T}),L=n(""),N=(null==(u=null==P?void 0:P.editorParams)?void 0:u.customTheme)||(null==(m=null==P?void 0:P.editorParams)?void 0:m.customtheme),V="true"===(null==(k=null==P?void 0:P.editorParams)?void 0:k.enablenoaccess),{UIStore:R}=d(),H=n(N||R.theme),j=n(!1);let q="default";P&&(null==(x=P.editorParams)?void 0:x.showmode)&&(q=P.editorParams.showmode);const F=n(!1),_=n("editOnly");let J=null,W=null,$=0;const G=n({}),Y=n({}),X=n("pure");let K=!1,Q=!1;(null==(y=null==P?void 0:P.editorParams)?void 0:y.disabledirectory)&&(Q="true"===P.editorParams.disabledirectory);let Z="absolute";(null==(z=null==P?void 0:P.editorParams)?void 0:z.tocpos)&&(Z="fixed"===P.editorParams.tocpos?"fixed":"absolute");const[ee,te,ne]=function(e,n){if(!e)return[];const{props:i,isEditing:o,currentVal:a,emit:l}=n;let r=n.chatInstance;const s=p.createMenuHook("AI",{icon:{type:"svg",content:"<svg\n viewBox='0 0 16 16'\n xmlns='http://www.w3.org/2000/svg'\n fill='currentColor'\n height='1em'\n width='1em'\n preserveAspectRatio='xMidYMid meet'\n focusable='false'\n >\n <g\n id='aae1.Base基础/1.icon图标/2.normal/ai-star'\n stroke-width='1'\n fill-rule='evenodd'\n >\n <path\n d='M5.817 1.53l3.158 8.797h.054v.152l1.443 4.021-1.402.001-1.041-2.982H2.495l-1.03 2.982L0 14.5 4.671 1.533l1.146-.003zm7.86 5.424V14.5h-1.213V6.954h1.212zM5.248 3.549l-2.342 6.778h4.706L5.249 3.55zM13.046 0c.075 0 .147.02.204.071a.318.318 0 01.094.181l.064.273c.097.417.17.727.255.968.084.24.177.4.31.523.134.124.318.218.599.306.281.088.65.166 1.15.265a.358.358 0 01.195.095c.056.057.083.13.083.213a.289.289 0 01-.083.21.362.362 0 01-.197.094c-.528.093-.918.167-1.214.255-.295.088-.485.187-.621.324-.137.138-.23.324-.31.606-.08.283-.145.651-.23 1.147a.329.329 0 01-.093.184.293.293 0 01-.206.075.308.308 0 01-.207-.072.322.322 0 01-.1-.188l-.006-.033c-.085-.486-.149-.845-.228-1.12-.079-.274-.17-.452-.305-.585-.135-.133-.323-.23-.618-.32s-.683-.168-1.21-.273a.353.353 0 01-.2-.096.29.29 0 01-.08-.208c0-.079.023-.153.079-.211a.35.35 0 01.2-.097c.5-.098.869-.176 1.15-.263.282-.087.465-.18.597-.302.132-.12.224-.278.306-.511.082-.236.151-.539.244-.947l.071-.312a.312.312 0 01.102-.183.311.311 0 01.205-.069z'\n id='aae形状结合'\n ></path>\n </g>\n </svg>\n "},onClick:(n,i,o)=>{o.stopPropagation(),o.preventDefault(),t(()=>{var t;if(null==(t=e.mdeditor)?void 0:t.bubble){e.mdeditor.bubble.showBubble();const t=e.mdeditor.bubble.bubbleDom.getBoundingClientRect();if(!t||!t.left||!t.top)return;const n=ibiz.inLineAIUtil.calcContextMenus(e.deACMode,t=>{e.doInLineAIUIAction(t,e.model.appId)});if(0===n.length)return;const{zIndex:i}=d(),o=i.increment();ibiz.inLineAIUtil.showContextMenus(t.left,t.top+43,n,{zIndex:o,onClose:()=>{i.decrement()}})}})}}),c=p.createMenuHook("AIChart",{icon:{type:"svg",content:"<svg\n viewBox='0 0 16 16'\n xmlns='http://www.w3.org/2000/svg'\n fill='currentColor'\n height='1em'\n width='1em'\n preserveAspectRatio='xMidYMid meet'\n focusable='false'\n >\n <g\n id='aae1.Base基础/1.icon图标/2.normal/ai-star'\n stroke-width='1'\n fill-rule='evenodd'\n >\n <path\n d='M5.817 1.53l3.158 8.797h.054v.152l1.443 4.021-1.402.001-1.041-2.982H2.495l-1.03 2.982L0 14.5 4.671 1.533l1.146-.003zm7.86 5.424V14.5h-1.213V6.954h1.212zM5.248 3.549l-2.342 6.778h4.706L5.249 3.55zM13.046 0c.075 0 .147.02.204.071a.318.318 0 01.094.181l.064.273c.097.417.17.727.255.968.084.24.177.4.31.523.134.124.318.218.599.306.281.088.65.166 1.15.265a.358.358 0 01.195.095c.056.057.083.13.083.213a.289.289 0 01-.083.21.362.362 0 01-.197.094c-.528.093-.918.167-1.214.255-.295.088-.485.187-.621.324-.137.138-.23.324-.31.606-.08.283-.145.651-.23 1.147a.329.329 0 01-.093.184.293.293 0 01-.206.075.308.308 0 01-.207-.072.322.322 0 01-.1-.188l-.006-.033c-.085-.486-.149-.845-.228-1.12-.079-.274-.17-.452-.305-.585-.135-.133-.323-.23-.618-.32s-.683-.168-1.21-.273a.353.353 0 01-.2-.096.29.29 0 01-.08-.208c0-.079.023-.153.079-.211a.35.35 0 01.2-.097c.5-.098.869-.176 1.15-.263.282-.087.465-.18.597-.302.132-.12.224-.278.306-.511.082-.236.151-.539.244-.947l.071-.312a.312.312 0 01.102-.183.311.311 0 01.205-.069z'\n id='aae形状结合'\n ></path>\n </g>\n </svg>\n "},onClick:async()=>{const t=e.model.appDataEntityId;if(!t||!e.deACMode)return;const{zIndex:n}=d(),s=n.increment();r=await ibiz.aiChatUtil.getAIChat();const{containerOptions:c,chatOptions:u}=await ibiz.aiChatUtil.getEditorExAIChatParams(e.editorParams,e.context,e.params,i.data,e.deACMode,{chatInstance:r,view:e.view,ctrl:e.ctrl}),m=await ibiz.aiChatUtil.getAIResourceOptions(e.context,e.params);let h=e.deACMode.logicName;e.editorParams.srfaichatcaption&&(h=ibiz.appUtil.resolveI18nText(e.editorParams.srfaichatcaption)),r.create({resourceOptions:m,containerOptions:{zIndex:s,...c},chatOptions:{caption:h,context:{...e.context},params:{...e.params,srfactag:e.deACMode.codeName},appDataEntityId:t,...u,action:(e,t)=>{"backfill"===e&&(o.value?a.value=t.realcontent||"":l("change",t.realcontent))}}})}}),u={};return e.extraActions.forEach(t=>{const{uiactionId:n,sysImage:i,caption:o}=t,a=n.split("@")[0],r={onClick:async()=>{const t=await e.doCustomUIAction(n,e.model.appId);t.length>0&&l("customAction",{tag:n,data:t})}};i&&(r.icon={type:"svg",content:i.rawContent}),u[a]=p.createMenuHook(o,r)}),[s,c,u]}(P,{props:e,chatInstance:undefined,isEditing:j,currentVal:M,emit:a});r(()=>e.data,e=>{if(e&&P){const t={...P.editorParams,enableNoAccess:V};t.uploadparams&&(t.uploadParams=JSON.parse(t.uploadparams));const n=ibiz.util.file.calcFileUpDownUrl(P.context,P.params,e,t);L.value=n.uploadUrl}},{immediate:!0,deep:!0});const ie=n(),oe=async(t,n)=>{const i=await ibiz.util.file.fileUpload(L.value,t,B.value),o=((e,t)=>{if(!P)return"";const n={...P.editorParams,enableNoAccess:V};return n.exportparams&&(n.exportParams=JSON.parse(n.exportparams)),n.globaldownloadprifix?n.globalDownloadPrifix="true"===n.globaldownloadprifix:n.globalDownloadPrifix=ibiz.config.common.globalDownloadPrifix,t&&t.folder&&(n.osscat=t.folder),ibiz.util.file.calcFileUpDownUrl(P.context,P.params,e,n).downloadUrl})(e.data||{},i.fileid);let a=o.replace("%fileId%",i.fileid);if(ibiz.config.common.enableDownloadTicket&&P&&P.editorParams&&!V){const t=await ibiz.util.file.getDownloadTicket(P.context,P.params,e.data||{},{fileId:i.fileid},P.downloadTicketParams);t&&t.ticket&&(a=o.replace("%fileId%",t.ticket),n(a))}else n(a)},ae=()=>null==E?void 0:E.getMarkdown(),le=e=>{K=!0,null==E||E.setMarkdown(e,!0)};r(()=>e.value,(e,t)=>{e!==t&&(M.value=e||"")},{immediate:!0}),r(M,(e,t)=>{const n=ae();e!==t&&n!==e&&le(e)});const re=e=>{"manual"!==q&&(a("change",ae(),null==P?void 0:P.model.id,K),K=!1)},se=(e,t)=>({[e]:t}),ce=t=>{var n,i,o;const a=null==(n=t.target)?void 0:n.closest('a[href^="chunkview://"], a[href^="view://"], a[href^="action://"]');if(!a)return;t.preventDefault();let l=a.getAttribute("href");if(!l)return;const r=["chunkview","view","action"].find(e=>l.startsWith("".concat(e,"://")))||"";if(!r)return;if("chunkview"===r){const t=(null==P?void 0:P.editorParams.chunkview)||e.chunkView,n=(null==P?void 0:P.editorParams.chunkentity)||e.chunkEntity;if(!t||!n)return;const i=l.replace("chunkview://","");l="view://".concat(t,'?srfnavctx={"').concat(n,'":"').concat(i,'"}')}const{protocolId:s,context:c,params:d}=(e=>{const t=new URL(e),n={},i={};let o="";if(t.searchParams.size>0){const o=t.searchParams.get("srfnavctx");if(o){try{Object.assign(n,JSON.parse(o))}catch(t){ibiz.log.error(ibiz.i18n.t("runtime.utils.openRedirectView.parseSrfnavctxParameter",{urlStr:e}),t)}t.searchParams.delete("srfnavctx")}t.searchParams.forEach((e,t)=>{i[t]=e})}else if(t.search){const o=f(t.search),a=o.srfnavctx;if(a){try{const e=decodeURIComponent(a);Object.assign(n,JSON.parse(e))}catch(t){ibiz.log.error(ibiz.i18n.t("runtime.utils.openRedirectView.parseSrfnavctxParameter",{urlStr:e}),t)}delete o.srfnavctx}Object.keys(o).forEach(e=>{i[e]=o[e]})}const a=t.pathname||t.hostname,l=a.replace("//","").split("/"),[r,s]=l;return o="action:"===t.protocol?"".concat(t.username,"@").concat(a):s||r,{params:i,context:n,protocolId:o}})(l);if(!s)return;const u=(null==(i=null==P?void 0:P.context)?void 0:i.clone())||(null==(o=e.context)?void 0:o.clone())||w.create({});switch(Object.assign(u,c),r){case"chunkview":case"view":ibiz.commands.execute(g.TAG,s,Object.assign(u,{srfkeepnull:!0}),d);break;case"action":b.exec(s,{event:t,params:d,context:u,data:[e.data||{}],view:(null==P?void 0:P.view)||e.view,ctrl:(null==P?void 0:P.ctrl)||e.ctrl},u.appid||u.srfappid)}},de=(e,t="")=>{const n=document.createElement(e);return n.className=t,n},ue=e=>de("i","ch-icon ch-icon-".concat(e)),me=I.e("fullscreen"),he=e=>{for(;e.firstChild;)e.removeChild(e.firstChild)},ve=()=>{if(E&&ie.value){const e=E.editor.options.editorDom.parentElement;if(!e)return{};const t=e.classList,n=ie.value.querySelector(".".concat(me));return n?{parentElement:e,cherryClass:t,fullscreenNode:n}:{}}return{}},pe=()=>{const{parentElement:e,cherryClass:t,fullscreenNode:n}=ve();e&&t&&n&&(he(n),n.appendChild(ue("fullscreen")),n.title=ibiz.i18n.t("editor.common.fullscreen"),t.remove("fullscreen"),null==e||e.blur(),e.setAttribute("tabindex","-1"))},fe=()=>{const{cherryClass:e}=ve();return null==e?void 0:e.contains("fullscreen")},be=()=>{E&&ie.value&&(fe()?(pe(),E.toggleToc(X.value),F.value=!1):((()=>{const{parentElement:e,cherryClass:n,fullscreenNode:i}=ve();e&&n&&i&&(he(i),i.appendChild(ue("minscreen")),n.add("fullscreen"),i.title=ibiz.i18n.t("editor.common.minimize"),e.setAttribute("tabindex","-1"),t(()=>null==e?void 0:e.focus()))})(),X.value=E.toc.model,E.toggleToc("full"),F.value=!0))},ge=e=>{e.stopPropagation(),"Escape"===e.key&&(e.preventDefault(),fe()&&(pe(),E.toggleToc(X.value),F.value=!1))},we=e=>{null==P||P.setCurrentEditorTheme(e)},ke=e=>{var t,n;const{info:i}=e;let o=!0;const a=i.ranges&&i.ranges[0];if(a){const{anchor:e,head:t}=a;o=P.isPositionBefore(e,t)}else o=!0;const l=null==(t=P.mdeditor)?void 0:t.editor.editor.getCursor("start"),r=null==(n=P.mdeditor)?void 0:n.editor.editor.getCursor("end");P.setCursorPos(l,r),P.setSelectionDirection(o)};r(()=>R.theme,e=>{H.value=N||e,null==E||E.setTheme(H.value),null==E||E.setCodeBlockTheme(H.value)});const Ce=()=>{j.value=!0,_.value="editOnly",null==E||E.switchModel(_.value)},xe=()=>{j.value=!1,_.value="previewOnly",null==E||E.switchModel(_.value)},ye=()=>{le(M.value),xe()},ze=()=>{a("change",ae(),null==P?void 0:P.model.id,K),K=!1,xe()},Ie=()=>{const e=document.getElementById(S);null==e||e.focus()};return s(()=>{var n;(e.disabled||e.readonly||"manual"===q)&&(_.value="previewOnly"),t(()=>{var t,n,i;const o=["bold","italic","underline","strikethrough","sub","sup","|","size","color"],a=["bold","italic","underline","strikethrough","|","color","header","|","list","image",{insert:["link","hr","br","code","formula","toc","table","line-table","bar-table"]},"settings","togglePreview"];if(P&&P.chatCompletion&&(a.unshift("AIChart"),o.unshift("AI")),P&&P.extraActions.length>0){const e=P.extraActions.map(e=>e.uiactionId.split("@")[0]);a.push(...e)}const r=ibiz.i18n.getLang(),s=A[r]||r;E=new p({id:S,value:M.value,locale:s,previewer:{enablePreviewerBubble:!(e.disabled||e.readonly)},themeSettings:{mainTheme:H.value,codeBlockTheme:H.value},fileUpload:oe,emoji:{useUnicode:!0},header:{anchorStyle:"autonumber"},editor:{height:"100%",defaultModel:_.value,codemirror:{autofocus:!1,placeholder:null==P?void 0:P.placeHolder}},toolbars:{toolbar:a,bubble:o,float:["h1","h2","h3","|","checklist","quote","quickTable","code"],customMenu:{AI:ee,AIChart:te,...ne},sidebar:["theme","copy"],toolbarRight:[],toc:!Q&&{updateLocationHash:!1,defaultModel:"pure",showAutoNumber:!0,position:Z,cssText:""}},callback:{afterChange:re,onClickPreview:ce,beforeImageMounted:se},event:{changeMainTheme:we,selectionChange:ke},engine:{syntax:{table:{enableChart:!1,externals:["echarts"]}}}}),E.toggleToc("pure");const c=E.engine.makeHtml(M.value);E.previewer.update(c),null==(n=null==(t=E.toc)?void 0:t.updateTocList)||n.call(t),E.setTheme(H.value),N&&(E.setTheme(N),E.setCodeBlockTheme(N));const d=de("span","".concat(me," cherry-toolbar-button"));d.title=ibiz.i18n.t("editor.common.fullscreen"),d.onclick=be,d.appendChild(ue("fullscreen"));const u=e.disabled?E.editor.options.editorDom.parentElement:null==(i=E.editor.options.editorDom.parentElement)?void 0:i.querySelector(".cherry-toolbar>.toolbar-right");if(null==u||u.appendChild(d),null==P||P.setMDEditor(E),D(E),l.editorSwitchMenu&&window.ResizeObserver&&ie.value){const e=ie.value.querySelector(".cherry-toolbar");e&&(W=new ResizeObserver(e=>{var t;const n=null==(t=e[0])?void 0:t.contentRect.height;Y.value=I.cssVarBlock({"toolbar-height":"".concat(n,"px")})}),W.observe(e))}}),(()=>{if(window.ResizeObserver&&ie.value){const e={width:ie.value.offsetWidth?"".concat(ie.value.offsetWidth,"px"):"100%"};P&&"number"==typeof P.parent.model.height&&Object.assign(e,{height:"".concat(P.parent.model.height,"px")}),G.value=I.cssVarBlock(e),J=new ResizeObserver(e=>{const t=e[0].contentRect.width;if(t!==$){const n={width:"".concat(e[0].contentRect.width,"px")};P&&"number"==typeof P.parent.model.height&&Object.assign(n,{height:"".concat(P.parent.model.height,"px")}),G.value=I.cssVarBlock(n),$=t}}),J.observe(ie.value)}})(),null==(n=ie.value)||n.addEventListener("keydown",ge.bind(this))}),i(()=>{var e;null==(e=ie.value)||e.removeEventListener("keydown",ge.bind(this))}),c(()=>{E=null,J&&J.disconnect(),W&&W.disconnect()}),{ns:I,currentVal:M,id:S,editor:E,markDownBox:ie,headers:B,theme:H,UIStore:R,defaultModel:_,cssVars:G,isEditing:j,showmode:q,isFullScreen:F,isImgPreview:U,getCherryHtml:()=>null==E?void 0:E.getHtml(),getCherryContent:ae,setCherryContent:le,renderHeader:()=>{if("manual"===q&&!j.value)return o("div",{onClick:Ie,class:[I.e("header"),I.is("fullscreen",F.value)]},[!e.disabled&&!e.readonly&&o("div",{class:I.em("header","edit"),onClick:Ce,title:ibiz.i18n.t("editor.markdown.edit")},[o("i",{class:"fa fa-edit","aria-hidden":"true"},null)]),o("div",{class:I.em("header","full"),onClick:be},[F.value?o("i",{class:"fa fa-compress","aria-hidden":"true",title:ibiz.i18n.t("editor.html.reduce")},null):o("i",{class:"fa fa-expand","aria-hidden":"true",title:ibiz.i18n.t("editor.common.fullscreen")},null)])])},renderFooter:()=>{if("manual"===q&&j.value&&!e.disabled&&!e.readonly)return o("div",{onClick:Ie,class:[I.e("footer"),I.is("fullscreen",F.value)]},[o("div",{class:I.em("footer","cancel"),onClick:ye},[ibiz.i18n.t("editor.common.cancel")]),o("div",{class:I.em("footer","save"),onClick:ze},[ibiz.i18n.t("editor.common.confirm")])])},renderImgPreview:O,renderEditorSwitchMenu:()=>{var e;return o("div",{class:[I.b("menu"),I.is("fullscreen",F.value)],style:Y.value},[null==(e=l.editorSwitchMenu)?void 0:e.call(l)])}}},render(){const e=!!this.$slots.editorSwitchMenu;return o("div",{ref:"markDownBox",class:[this.ns.b(),this.ns.is("disabled",this.disabled),this.ns.is("manual","manual"===this.showmode),this.ns.is("editing",this.isEditing),this.ns.is("show-editor-switch-menu",e),this.ns.is("editor-content-fixed",this.isFullScreen||this.isImgPreview)]},[e?this.renderEditorSwitchMenu():null,this.renderHeader(),this.renderFooter(),this.renderImgPreview(),o("div",{tabindex:"-1",id:this.id,style:this.cssVars,class:[this.ns.b("cherry"),this.ns.m("dark"===this.UIStore.theme?"dark":"light")]},null)])}}))}}});
|