@ibiz-template/vue3-components 0.7.7 → 0.7.9

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.
Files changed (57) hide show
  1. package/dist/index-GAvjatsT.js +4 -0
  2. package/dist/index-dsmTOMa5.js +1 -0
  3. package/dist/index-sGpuIVYT.js +1 -0
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/wang-editor-mq8sQSDK.js +1 -0
  7. package/dist/{xlsx-util-2u3vZn2l.js → xlsx-util-Fc3O95jH.js} +1 -1
  8. package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.d.ts +3 -1
  9. package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.mjs +24 -7
  10. package/es/control/dashboard/dashboard-design/dashboard-design.d.ts +3 -2
  11. package/es/control/dashboard/dashboard-design/dashboard-design.mjs +29 -30
  12. package/es/control/dashboard/dashboard.d.ts +1 -0
  13. package/es/control/dashboard/dashboard.mjs +10 -3
  14. package/es/control/dashboard/index.d.ts +1 -0
  15. package/es/control/dashboard/portlet/chart-portlet/chart-portlet.mjs +13 -1
  16. package/es/control/dashboard/portlet/list-portlet/list-portlet.mjs +13 -1
  17. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.d.ts +1 -0
  18. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.mjs +10 -1
  19. package/es/control/dashboard/portlet/view-portlet/view-portlet.mjs +13 -1
  20. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.d.ts +1 -0
  21. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +3 -1
  22. package/es/control/form/form-detail/form-mdctrl/index.d.ts +1 -0
  23. package/es/control/toolbar/toolbar.css +1 -1
  24. package/es/control/toolbar/toolbar.mjs +14 -3
  25. package/es/editor/html/html-editor.controller.d.ts +25 -2
  26. package/es/editor/html/html-editor.controller.mjs +38 -1
  27. package/es/editor/html/wang-editor/ai/ai-modules.d.ts +9 -0
  28. package/es/editor/html/wang-editor/ai/ai-modules.mjs +32 -0
  29. package/es/editor/html/wang-editor/wang-editor.css +1 -1
  30. package/es/editor/html/wang-editor/wang-editor.mjs +98 -6
  31. package/es/editor/text-box/input/input.mjs +9 -5
  32. package/es/locale/en/index.d.ts +204 -0
  33. package/es/locale/en/index.mjs +205 -0
  34. package/es/locale/zh-CN/index.d.ts +204 -0
  35. package/es/locale/zh-CN/index.mjs +205 -0
  36. package/lib/control/dashboard/custom-dashboard-container/custom-dashboard-container.cjs +23 -6
  37. package/lib/control/dashboard/dashboard-design/dashboard-design.cjs +29 -30
  38. package/lib/control/dashboard/dashboard.cjs +9 -2
  39. package/lib/control/dashboard/portlet/chart-portlet/chart-portlet.cjs +12 -0
  40. package/lib/control/dashboard/portlet/list-portlet/list-portlet.cjs +12 -0
  41. package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.cjs +10 -1
  42. package/lib/control/dashboard/portlet/view-portlet/view-portlet.cjs +12 -0
  43. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +3 -1
  44. package/lib/control/toolbar/toolbar.cjs +14 -3
  45. package/lib/control/toolbar/toolbar.css +1 -1
  46. package/lib/editor/html/html-editor.controller.cjs +37 -0
  47. package/lib/editor/html/wang-editor/ai/ai-modules.cjs +34 -0
  48. package/lib/editor/html/wang-editor/wang-editor.cjs +97 -5
  49. package/lib/editor/html/wang-editor/wang-editor.css +1 -1
  50. package/lib/editor/text-box/input/input.cjs +9 -5
  51. package/lib/locale/en/index.cjs +205 -0
  52. package/lib/locale/zh-CN/index.cjs +205 -0
  53. package/package.json +7 -7
  54. package/dist/index-Rqr5SnvQ.js +0 -1
  55. package/dist/index-ntRuv0hC.js +0 -4
  56. package/dist/index-x-jLCilD.js +0 -1
  57. package/dist/wang-editor-0uYWEddj.js +0 -1
@@ -19,6 +19,14 @@ const PortletLayout = /* @__PURE__ */ vue.defineComponent({
19
19
  const ns = vue3Util.useNamespace("portlet-layout");
20
20
  const portletType = "portlet-".concat((_a = props.controller.model.portletType) == null ? void 0 : _a.toLowerCase());
21
21
  const c = props.controller;
22
+ const popperClass = vue.computed(() => {
23
+ const classNames = [ns.em("toolbar", "".concat(portletType, "-").concat(c.model.id))];
24
+ const {
25
+ codeName
26
+ } = c.dashboard.view.model;
27
+ classNames.push(ns.em("toolbar", codeName));
28
+ return classNames;
29
+ });
22
30
  const isShowHeader = vue.computed(() => {
23
31
  return c.model.showTitleBar && (c.model.title || c.model.sysImage) || c.model.uiactionGroup;
24
32
  });
@@ -28,6 +36,7 @@ const PortletLayout = /* @__PURE__ */ vue.defineComponent({
28
36
  return {
29
37
  c,
30
38
  ns,
39
+ popperClass,
31
40
  portletType,
32
41
  isShowHeader,
33
42
  onActionClick
@@ -61,7 +70,7 @@ const PortletLayout = /* @__PURE__ */ vue.defineComponent({
61
70
  "action-details": model.uiactionGroup.uiactionGroupDetails,
62
71
  "actions-state": state.actionGroupState,
63
72
  "mode": model.actionGroupExtractMode === "ITEMS" ? "dropdown" : "buttons",
64
- "popperClass": this.ns.em("toolbar", "".concat(this.portletType, "-").concat(model.id)),
73
+ "popperClass": this.popperClass,
65
74
  "onActionClick": this.onActionClick
66
75
  }, null)])]), vue.createVNode("div", {
67
76
  "key": "content",
@@ -24,6 +24,18 @@ const ViewPortlet = /* @__PURE__ */ vue.defineComponent({
24
24
  var _a;
25
25
  const ns = vue3Util.useNamespace("portlet-".concat((_a = props.modelData.portletType) == null ? void 0 : _a.toLowerCase()));
26
26
  const view = props.modelData.portletAppView;
27
+ let timerTag;
28
+ vue.onMounted(() => {
29
+ const timer = props.controller.model.timer;
30
+ if (timer && timer > 0) {
31
+ timerTag = setInterval(() => {
32
+ props.controller.refresh();
33
+ }, timer);
34
+ }
35
+ });
36
+ vue.onBeforeUnmount(() => {
37
+ clearInterval(timerTag);
38
+ });
27
39
  return {
28
40
  ns,
29
41
  view
@@ -25,6 +25,7 @@ const FormMDCtrl = /* @__PURE__ */ vue.defineComponent({
25
25
  vue3Util.useController(props.controller);
26
26
  const c = props.controller;
27
27
  const hasCaption = c.model.showCaption && !!c.model.caption;
28
+ const hasHeader = hasCaption || c.model.uiactionGroup;
28
29
  const onActionClick = async (detail, event) => {
29
30
  await props.controller.onActionClick(detail, event);
30
31
  };
@@ -32,6 +33,7 @@ const FormMDCtrl = /* @__PURE__ */ vue.defineComponent({
32
33
  c,
33
34
  ns,
34
35
  hasCaption,
36
+ hasHeader,
35
37
  onActionClick
36
38
  };
37
39
  },
@@ -64,7 +66,7 @@ const FormMDCtrl = /* @__PURE__ */ vue.defineComponent({
64
66
  }
65
67
  return vue.createVNode("div", {
66
68
  "class": [this.ns.b(), this.ns.m(this.modelData.codeName), ...this.controller.containerClass, this.hasCaption ? this.ns.m("show-caption") : ""]
67
- }, [vue.createVNode("div", {
69
+ }, [this.hasHeader && vue.createVNode("div", {
68
70
  "class": this.ns.b("header")
69
71
  }, [vue.createVNode("div", {
70
72
  "class": this.ns.e("title")
@@ -81,7 +81,16 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
81
81
  };
82
82
  const renderSubmenu = (item) => {
83
83
  const detoolbarItems = item.detoolbarItems || [];
84
- const loading = detoolbarItems.findIndex((item2) => c.state.buttonsState[item2.id].loading) !== -1;
84
+ const ploading = detoolbarItems.findIndex((item2) => c.state.buttonsState[item2.id].loading) !== -1;
85
+ const pvisible = detoolbarItems.findIndex((item2) => {
86
+ return c.state.buttonsState[item2.id].visible === true;
87
+ }) !== -1;
88
+ if (!pvisible) {
89
+ return null;
90
+ }
91
+ const pdisabled = detoolbarItems.findIndex((item2) => {
92
+ return c.state.buttonsState[item2.id].disabled === false;
93
+ }) === -1;
85
94
  const groupButtonStyle = item.buttonStyle || "";
86
95
  return vue.createVNode(vue.resolveComponent("el-sub-menu"), {
87
96
  "class": [ns.b("submenu"), ns.em("item", groupButtonStyle.toLowerCase()), calcCssName(item)],
@@ -150,7 +159,8 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
150
159
  title: () => {
151
160
  let _slot3;
152
161
  return vue.createVNode(vue.resolveComponent("el-button"), {
153
- "loading": loading
162
+ "loading": ploading,
163
+ "disabled": pdisabled
154
164
  }, _isSlot(_slot3 = btnContent(item)) ? _slot3 : {
155
165
  default: () => [_slot3]
156
166
  });
@@ -211,9 +221,10 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
211
221
  }
212
222
  if (item.itemType === "ITEMS") {
213
223
  let _slot5;
224
+ const groupButtonStyle = item.buttonStyle || "";
214
225
  return vue.createVNode(vue.resolveComponent("el-menu"), {
215
226
  "mode": "horizontal",
216
- "class": [ns.e("menu")],
227
+ "class": [ns.e("menu"), ns.em("menu", groupButtonStyle.toLowerCase()), calcCssName(item)],
217
228
  "ellipsis": false,
218
229
  "menu-trigger": "hover"
219
230
  }, _isSlot(_slot5 = renderSubmenu(item)) ? _slot5 : {
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-control-toolbar{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;--ibiz-control-toolbar-text-margin:0 0 0 var(--ibiz-spacing-extra-tight);display:flex;align-items:center}.ibiz-control-toolbar__item{display:flex;align-items:center;margin:var(--ibiz-control-toolbar-item-margin);overflow:hidden}.ibiz-control-toolbar__item .el-button{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-control-toolbar-item-padding)}.ibiz-control-toolbar__item .el-button>span{display:flex;align-items:center;justify-content:center;pointer-events:none;font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar__item.is-loading .el-button .ibiz-icon{display:none}.ibiz-control-toolbar__item-separator{color:var(--ibiz-control-toolbar-separator-color)}.ibiz-control-toolbar__item-separator+.ibiz-control-toolbar__item-separator,.ibiz-control-toolbar__item-separator:first-child{display:none}.ibiz-control-toolbar__menu.el-menu{height:var(--ibiz-control-toolbar-menu-height);margin:var(--ibiz-control-toolbar-item-margin);border:none}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title{display:flex;align-items:center;justify-content:center;padding:0;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary);border-bottom:none;border-radius:var(--ibiz-border-radius-small)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span{font-size:var(--ibiz-font-size-regular);display:flex;align-items:center;justify-content:center;line-height:1}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;--ibiz-control-toolbar-text-margin:0 0 0 var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title{padding:0 10px;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu-rawitem{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item{font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item.is-active{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .el-button{justify-content:flex-start;width:100%;padding:0;--el-button-active-bg-color:transparent;--el-button-hover-bg-color:transparent;--el-button-bg-color:transparent;--el-mask-color-extra-light:transparent}
1
+ @charset "UTF-8";.ibiz-control-toolbar{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;--ibiz-control-toolbar-text-margin:0 0 0 var(--ibiz-spacing-extra-tight);display:flex;align-items:center}.ibiz-control-toolbar__item{display:flex;align-items:center;margin:var(--ibiz-control-toolbar-item-margin);overflow:hidden}.ibiz-control-toolbar__item .el-button{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-control-toolbar-item-padding)}.ibiz-control-toolbar__item .el-button>span{display:flex;align-items:center;justify-content:center;pointer-events:none;font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar__item.is-loading .el-button .ibiz-icon{display:none}.ibiz-control-toolbar__item-separator{color:var(--ibiz-control-toolbar-separator-color)}.ibiz-control-toolbar__item-separator+.ibiz-control-toolbar__item-separator,.ibiz-control-toolbar__item-separator:first-child{display:none}.ibiz-control-toolbar__menu.el-menu{height:var(--ibiz-control-toolbar-menu-height);margin:var(--ibiz-control-toolbar-item-margin);border:none}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title{display:flex;align-items:center;justify-content:center;padding:0;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary);border-bottom:none;border-radius:var(--ibiz-border-radius-small)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span{display:flex;align-items:center;justify-content:center;font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span{display:flex;align-items:center;justify-content:center;line-height:1}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;--ibiz-control-toolbar-text-margin:0 0 0 var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title{padding:0 10px;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu-rawitem{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item{font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item.is-active{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .el-button{justify-content:flex-start;width:100%;padding:0;--el-button-active-bg-color:transparent;--el-button-hover-bg-color:transparent;--el-button-bg-color:transparent;--el-mask-color-extra-light:transparent}
@@ -20,6 +20,29 @@ class HtmlEditorController extends runtime.EditorController {
20
20
  * 下载参数
21
21
  */
22
22
  __publicField(this, "exportParams");
23
+ /**
24
+ * 应用实体服务
25
+ *
26
+ * @type {IAppDEService}
27
+ * @memberof HtmlEditorController
28
+ */
29
+ __publicField(this, "deService");
30
+ /**
31
+ * 自填模式
32
+ *
33
+ * @author chitanda
34
+ * @date 2023-10-12 10:10:52
35
+ * @type {IAppDEACMode}
36
+ */
37
+ __publicField(this, "deACMode");
38
+ /**
39
+ * AI 聊天自填模式
40
+ *
41
+ * @author chitanda
42
+ * @date 2023-10-12 10:10:37
43
+ * @type {boolean}
44
+ */
45
+ __publicField(this, "chatCompletion", false);
23
46
  }
24
47
  async onInit() {
25
48
  await super.onInit();
@@ -48,6 +71,20 @@ class HtmlEditorController extends runtime.EditorController {
48
71
  }
49
72
  }
50
73
  }
74
+ const model = this.model;
75
+ if (model.appDEACModeId) {
76
+ this.deACMode = await runtime.getDeACMode(
77
+ model.appDEACModeId,
78
+ model.appDataEntityId,
79
+ this.context.srfappid
80
+ );
81
+ if (this.deACMode) {
82
+ if (this.deACMode.actype === "CHATCOMPLETION") {
83
+ this.deService = await ibiz.hub.getApp(model.appId).deService.getService(this.context, model.appDataEntityId);
84
+ this.chatCompletion = true;
85
+ }
86
+ }
87
+ }
51
88
  }
52
89
  }
53
90
 
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ "use strict";
4
+ var __defProp = Object.defineProperty;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __publicField = (obj, key, value) => {
7
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
+ return value;
9
+ };
10
+ class AIMenu {
11
+ constructor() {
12
+ // TS 语法
13
+ __publicField(this, "title", "AI");
14
+ __publicField(this, "tag", "button");
15
+ }
16
+ // 菜单是否需要激活(如选中加粗文本,“加粗”菜单会激活),用不到则返回 false
17
+ isActive(editor) {
18
+ return true;
19
+ }
20
+ // 获取菜单执行时的 value ,用不到则返回空 字符串或 false
21
+ getValue(editor) {
22
+ return "aichart";
23
+ }
24
+ // 菜单是否需要禁用(如选中 H1 ,“引用”菜单被禁用),用不到则返回 false
25
+ isDisabled(editor) {
26
+ return false;
27
+ }
28
+ // 点击菜单时触发的函数
29
+ exec(editor, value) {
30
+ editor.emit("aiClick");
31
+ }
32
+ }
33
+
34
+ exports.AIMenu = AIMenu;
@@ -4,12 +4,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var editorForVue = require('@wangeditor/editor-for-vue');
7
+ var editor = require('@wangeditor/editor');
7
8
  var qxUtil = require('qx-util');
8
9
  var ramda = require('ramda');
9
10
  var vue3Util = require('@ibiz-template/vue3-util');
10
11
  var core = require('@ibiz-template/core');
11
12
  var ElementPlus = require('element-plus');
12
13
  require('./wang-editor.css');
14
+ var aiModules = require('./ai/ai-modules.cjs');
13
15
 
14
16
  "use strict";
15
17
  const IBizHtml = /* @__PURE__ */ vue.defineComponent({
@@ -72,8 +74,18 @@ const IBizHtml = /* @__PURE__ */ vue.defineComponent({
72
74
  const customParseLinkUrl = (url) => {
73
75
  return url;
74
76
  };
77
+ editor.Boot.registerMenu({
78
+ key: "aichart",
79
+ factory() {
80
+ return new aiModules.AIMenu();
81
+ }
82
+ });
75
83
  const toolbarConfig = {
76
- excludeKeys: ["group-video"]
84
+ excludeKeys: ["group-video"],
85
+ insertKeys: {
86
+ index: 60,
87
+ keys: ["|", "aichart"]
88
+ }
77
89
  };
78
90
  const editorConfig = {
79
91
  placeholder: c.placeHolder,
@@ -145,18 +157,95 @@ const IBizHtml = /* @__PURE__ */ vue.defineComponent({
145
157
  return;
146
158
  editor.destroy();
147
159
  });
160
+ let chatInstance;
161
+ const onClickAI = async () => {
162
+ var _a;
163
+ if (c.deService) {
164
+ const module = await import('@ibiz-template-plugin/ai-chat');
165
+ const chat = module.chat || module.default.chat;
166
+ chatInstance = chat;
167
+ const aiChat = chat.create({
168
+ question: async (arr) => {
169
+ var _a2;
170
+ const id = qxUtil.createUUID();
171
+ await ((_a2 = c.deService) == null ? void 0 : _a2.aiChatSse((msg) => {
172
+ ibiz.log.info("aiChatSse", msg);
173
+ if (msg.actionstate === 20 && msg.actionresult) {
174
+ aiChat.addMessage({
175
+ messageid: id,
176
+ state: msg.actionstate,
177
+ type: "DEFAULT",
178
+ role: "ASSISTANT",
179
+ content: msg.actionresult
180
+ });
181
+ } else if (msg.actionstate === 30 && msg.actionresult) {
182
+ const result = JSON.parse(msg.actionresult);
183
+ const choices = result.choices;
184
+ if (choices && choices.length > 0) {
185
+ aiChat.replaceMessage({
186
+ messageid: id,
187
+ state: msg.actionstate,
188
+ type: "DEFAULT",
189
+ role: "ASSISTANT",
190
+ content: choices[0].content || ""
191
+ });
192
+ }
193
+ } else if (msg.actionstate === 40) {
194
+ aiChat.replaceMessage({
195
+ messageid: id,
196
+ state: msg.actionstate,
197
+ type: "ERROR",
198
+ role: "ASSISTANT",
199
+ content: msg.actionresult
200
+ });
201
+ }
202
+ }, c.context, {}, {
203
+ messages: arr
204
+ }));
205
+ aiChat.addMessage({
206
+ messageid: id,
207
+ state: 10,
208
+ type: "DEFAULT",
209
+ role: "ASSISTANT",
210
+ content: ""
211
+ });
212
+ return true;
213
+ },
214
+ action: (action, message) => {
215
+ if (action === "backfill") {
216
+ emit("change", message.content);
217
+ }
218
+ }
219
+ });
220
+ const res = await ((_a = c.deService) == null ? void 0 : _a.aiChatHistory(c.context, {}));
221
+ if (res.data && Array.isArray(res.data)) {
222
+ res.data.forEach((item) => {
223
+ const msg = {
224
+ messageid: qxUtil.createUUID(),
225
+ state: 30,
226
+ type: "DEFAULT",
227
+ role: item.role,
228
+ content: item.content
229
+ };
230
+ aiChat.addMessage(msg);
231
+ });
232
+ }
233
+ }
234
+ };
148
235
  const handleCreated = (editor) => {
149
236
  editorRef.value = editor;
150
237
  editor.setHtml(valueHtml.value);
238
+ editor.on("aiClick", () => {
239
+ onClickAI();
240
+ });
151
241
  };
152
242
  const handleChange = (editor) => {
153
243
  const html = editor.getHtml();
154
- let emitValue = html === "<p><br></p>" ? "" : html;
244
+ const emitValue = html === "<p><br></p>" ? "" : html;
155
245
  if (emitValue === props.value || emitValue === "" && ramda.isNil(props.value)) {
156
246
  return;
157
247
  }
158
248
  if (!hasEnableEdit.value && editor.isFocused()) {
159
- emitValue = emitValue.replaceAll('class="rich-html-table"', "").replace(/<table/g, '<table class="rich-html-table"');
160
249
  emit("change", emitValue);
161
250
  }
162
251
  };
@@ -297,7 +386,7 @@ const IBizHtml = /* @__PURE__ */ vue.defineComponent({
297
386
  const save = () => {
298
387
  readonlyState.value = true;
299
388
  editorRef.value.disable();
300
- const value = valueHtml.value.replaceAll('class="rich-html-table"', "").replace(/<table/g, '<table class="rich-html-table"');
389
+ const value = valueHtml.value;
301
390
  emit("change", value);
302
391
  if (isFullScreen.value) {
303
392
  isFullScreen.value = false;
@@ -392,6 +481,9 @@ const IBizHtml = /* @__PURE__ */ vue.defineComponent({
392
481
  if (resizeObserver) {
393
482
  resizeObserver.disconnect();
394
483
  }
484
+ if (chatInstance) {
485
+ chatInstance.close();
486
+ }
395
487
  });
396
488
  return {
397
489
  ns,
@@ -427,7 +519,7 @@ const IBizHtml = /* @__PURE__ */ vue.defineComponent({
427
519
  return !this.isFullScreen ? vue.createVNode("div", {
428
520
  "class": [this.ns.b(), {
429
521
  [this.ns.b("editor-readonly")]: this.readonlyState
430
- }]
522
+ }, this.ns.is("show-ai", true)]
431
523
  }, [this.renderHeaserToolbar(), this.renderEditorContent(), this.hasEnableEdit && !this.readonlyState ? this.renderFooter() : null]) : vue.createVNode(vue.resolveComponent("el-dialog"), {
432
524
  "modelValue": this.isFullScreen,
433
525
  "onUpdate:modelValue": ($event) => this.isFullScreen = $event,
@@ -1 +1 @@
1
- .ibiz-html{--ibiz-html-height:300px;display:inline-block;width:100%;height:100%;--w-e-textarea-bg-color:var(--ibiz-color-bg-1);--w-e-textarea-color:var(--ibiz-color-text-2);--w-e-textarea-border-color:var(--ibiz-color-border);--w-e-textarea-slight-border-color:var(--ibiz-color-border);--w-e-textarea-slight-color:var(--ibiz-color-text-1);--w-e-textarea-slight-bg-color:var(--ibiz-color-bg-1);--w-e-textarea-selected-border-color:var(--ibiz-color-border);--w-e-textarea-handler-bg-color:var(--ibiz-color-primary);--w-e-toolbar-color:var(--ibiz-color-text-0);--w-e-toolbar-bg-color:var(--ibiz-color-bg-1);--w-e-toolbar-active-color:var(--ibiz-color-text-0);--w-e-toolbar-active-bg-color:var(--ibiz-color-bg-1);--w-e-toolbar-disabled-color:var(--ibiz-color-disabled-text);--w-e-toolbar-border-color:var(--ibiz-color-border);--w-e-modal-button-bg-color:var(--ibiz-color-bg-1);--w-e-modal-button-border-color:var(--ibiz-color-border)}.ibiz-html .ibiz-html-content{display:flex;flex-direction:column;height:100%;background-color:var(--ibiz-color-bg-0)}.ibiz-html .ibiz-html-editor{height:var(--ibiz-html-height)!important;padding:0;overflow-y:scroll;border:1px solid var(--ibiz-color-border)}.ibiz-html .w-e-menu-tooltip-v5::before{color:var(--ibiz-color-text-0);background-color:var(--w-e-toolbar-bg-color)}.ibiz-html .w-e-full-screen-container{z-index:9999}.ibiz-html .w-e-scroll>div{background-color:var(--ibiz-color-bg-0)}.ibiz-html .table-container table{width:100%}.rich-html-table{width:100%!important;border-collapse:collapse}.rich-html-table th{height:49px;min-height:49px;padding:8px;background-color:#f3f3f3;border:1px solid #d3d3d3}.rich-html-table td{height:49px;min-height:49px;padding:8px;empty-cells:show;border:1px solid #d3d3d3}.ibiz-html-editor-readonly .ibiz-html-toolbar{display:none}.ibiz-html-editor-readonly .ibiz-html-editor{border:none}.ibiz-html-footer{display:flex;align-items:center;justify-content:end;margin-top:12px;margin-right:8px}.ibiz-html-footer>*+*{margin-left:16px}.ibiz-html-footer__cancel{height:36px;line-height:36px;color:var(--ibiz-color-text-1);cursor:pointer;opacity:.7}.ibiz-html-footer__cancel:hover{color:var(--ibiz-color-primary);opacity:1}.ibiz-html-footer__save{width:96px;height:36px;line-height:36px;color:var(--ibiz-color-primary-active-text);text-align:center;cursor:pointer;background-color:var(--ibiz-color-primary);border-radius:5px}.ibiz-html-footer__save:hover{box-shadow:0 2px 5px 1px var(--ibiz-color-primary)}.ibiz-html-custom-toolbar{display:flex;align-items:center;justify-content:end;width:100%;height:32px;padding-right:16px;font-size:16px}.ibiz-html-custom-toolbar>*+*{margin-left:20px}.ibiz-html-custom-toolbar i{cursor:pointer}.ibiz-html-custom-toolbar i:hover{color:var(--ibiz-color-primary)}.ibiz-html-message{width:500px;max-width:unset}.ibiz-html-message__message-content--message-tip{color:var(--ibiz-color-text-3)}.ibiz-html-message__message-cancel{color:var(--ibiz-color-text-1);background-color:transparent}.ibiz-html-message__message-cancel:hover{color:var(--ibiz-color-primary);background-color:transparent}.ibiz-html-message__message-comfire{background-color:var(--ibiz-color-danger)!important}.ibiz-html-message__message-comfire:hover{box-shadow:0 2px 5px 1px var(--ibiz-color-danger)}.ibiz-html-dialog-full-screen{height:80%}.ibiz-html-dialog-full-screen .ibiz-html{padding:0 32px;--w-e-toolbar-bg-color:var(--ibiz-color-bg-0)}.ibiz-html-dialog-full-screen .ibiz-html-custom-toolbar{height:56px}.ibiz-html-dialog-full-screen .ibiz-html-content{height:calc(100% - 124px)}.ibiz-html-dialog-full-screen .ibiz-html-content .ibiz-html-editor{height:100%!important}.ibiz-html-footer-dialog{height:68px;margin-top:0}
1
+ .ibiz-html{--ibiz-html-height:300px;display:inline-block;width:100%;height:100%;--w-e-textarea-bg-color:var(--ibiz-color-bg-1);--w-e-textarea-color:var(--ibiz-color-text-2);--w-e-textarea-border-color:var(--ibiz-color-border);--w-e-textarea-slight-border-color:var(--ibiz-color-border);--w-e-textarea-slight-color:var(--ibiz-color-text-1);--w-e-textarea-slight-bg-color:var(--ibiz-color-bg-1);--w-e-textarea-selected-border-color:var(--ibiz-color-border);--w-e-textarea-handler-bg-color:var(--ibiz-color-primary);--w-e-toolbar-color:var(--ibiz-color-text-0);--w-e-toolbar-bg-color:var(--ibiz-color-bg-1);--w-e-toolbar-active-color:var(--ibiz-color-text-0);--w-e-toolbar-active-bg-color:var(--ibiz-color-bg-1);--w-e-toolbar-disabled-color:var(--ibiz-color-disabled-text);--w-e-toolbar-border-color:var(--ibiz-color-border);--w-e-modal-button-bg-color:var(--ibiz-color-bg-1);--w-e-modal-button-border-color:var(--ibiz-color-border)}.ibiz-html .ibiz-html-content{display:flex;flex-direction:column;height:100%;background-color:var(--ibiz-color-bg-0)}.ibiz-html .ibiz-html-editor{height:var(--ibiz-html-height)!important;padding:0;overflow-y:scroll;border:1px solid var(--ibiz-color-border)}.ibiz-html .ibiz-html-editor table{width:100%!important;border-collapse:collapse}.ibiz-html .ibiz-html-editor table th{height:49px;min-height:49px;padding:8px;background-color:#f3f3f3;border:1px solid #d3d3d3}.ibiz-html .ibiz-html-editor table td{height:49px;min-height:49px;padding:8px;empty-cells:show;border:1px solid #d3d3d3}.ibiz-html .w-e-menu-tooltip-v5::before{color:var(--ibiz-color-text-0);background-color:var(--w-e-toolbar-bg-color)}.ibiz-html .w-e-full-screen-container{z-index:9999}.ibiz-html .w-e-scroll>div{background-color:var(--ibiz-color-bg-0)}.ibiz-html .table-container table{width:100%}.ibiz-html-editor-readonly .ibiz-html-toolbar{display:none}.ibiz-html-editor-readonly .ibiz-html-editor{border:none}.ibiz-html-footer{display:flex;align-items:center;justify-content:end;margin-top:12px;margin-right:8px}.ibiz-html-footer>*+*{margin-left:16px}.ibiz-html-footer__cancel{height:36px;line-height:36px;color:var(--ibiz-color-text-1);cursor:pointer;opacity:.7}.ibiz-html-footer__cancel:hover{color:var(--ibiz-color-primary);opacity:1}.ibiz-html-footer__save{width:96px;height:36px;line-height:36px;color:var(--ibiz-color-primary-active-text);text-align:center;cursor:pointer;background-color:var(--ibiz-color-primary);border-radius:5px}.ibiz-html-footer__save:hover{box-shadow:0 2px 5px 1px var(--ibiz-color-primary)}.ibiz-html-custom-toolbar{display:flex;align-items:center;justify-content:end;width:100%;height:32px;padding-right:16px;font-size:16px}.ibiz-html-custom-toolbar>*+*{margin-left:20px}.ibiz-html-custom-toolbar i{cursor:pointer}.ibiz-html-custom-toolbar i:hover{color:var(--ibiz-color-primary)}.ibiz-html-message{width:500px;max-width:unset}.ibiz-html-message__message-content--message-tip{color:var(--ibiz-color-text-3)}.ibiz-html-message__message-cancel{color:var(--ibiz-color-text-1);background-color:transparent}.ibiz-html-message__message-cancel:hover{color:var(--ibiz-color-primary);background-color:transparent}.ibiz-html-message__message-comfire{background-color:var(--ibiz-color-danger)!important}.ibiz-html-message__message-comfire:hover{box-shadow:0 2px 5px 1px var(--ibiz-color-danger)}.ibiz-html-dialog-full-screen{height:80%}.ibiz-html-dialog-full-screen .ibiz-html{padding:0 32px;--w-e-toolbar-bg-color:var(--ibiz-color-bg-0)}.ibiz-html-dialog-full-screen .ibiz-html-custom-toolbar{height:56px}.ibiz-html-dialog-full-screen .ibiz-html-content{height:calc(100% - 124px)}.ibiz-html-dialog-full-screen .ibiz-html-content .ibiz-html-editor{height:100%!important}.ibiz-html-footer-dialog{height:68px;margin-top:0}
@@ -115,16 +115,16 @@ const IBizInput = /* @__PURE__ */ vue.defineComponent({
115
115
  };
116
116
  let chatInstance;
117
117
  const onClick = async () => {
118
- var _a;
118
+ var _a, _b;
119
119
  if (c.deService) {
120
120
  const module = await import('@ibiz-template-plugin/ai-chat');
121
121
  const chat = module.chat || module.default.chat;
122
122
  chatInstance = chat;
123
123
  const aiChat = chat.create({
124
124
  question: async (arr) => {
125
- var _a2;
125
+ var _a2, _b2;
126
126
  const id = qxUtil.createUUID();
127
- await ((_a2 = c.deService) == null ? void 0 : _a2.aiChatSse((msg) => {
127
+ await ((_b2 = c.deService) == null ? void 0 : _b2.aiChatSse((msg) => {
128
128
  ibiz.log.info("aiChatSse", msg);
129
129
  if (msg.actionstate === 20 && msg.actionresult) {
130
130
  aiChat.addMessage({
@@ -155,7 +155,9 @@ const IBizInput = /* @__PURE__ */ vue.defineComponent({
155
155
  content: msg.actionresult
156
156
  });
157
157
  }
158
- }, c.context, {}, {
158
+ }, c.context, {
159
+ srfactag: (_a2 = c.deACMode) == null ? void 0 : _a2.codeName
160
+ }, {
159
161
  messages: arr
160
162
  }));
161
163
  aiChat.addMessage({
@@ -173,7 +175,9 @@ const IBizInput = /* @__PURE__ */ vue.defineComponent({
173
175
  }
174
176
  }
175
177
  });
176
- const res = await ((_a = c.deService) == null ? void 0 : _a.aiChatHistory(c.context, {}));
178
+ const res = await ((_b = c.deService) == null ? void 0 : _b.aiChatHistory(c.context, {
179
+ srfactag: (_a = c.deACMode) == null ? void 0 : _a.codeName
180
+ }));
177
181
  if (res.data && Array.isArray(res.data)) {
178
182
  res.data.forEach((item) => {
179
183
  const msg = {