@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.
- package/dist/index-GAvjatsT.js +4 -0
- package/dist/index-dsmTOMa5.js +1 -0
- package/dist/index-sGpuIVYT.js +1 -0
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/wang-editor-mq8sQSDK.js +1 -0
- package/dist/{xlsx-util-2u3vZn2l.js → xlsx-util-Fc3O95jH.js} +1 -1
- package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.d.ts +3 -1
- package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.mjs +24 -7
- package/es/control/dashboard/dashboard-design/dashboard-design.d.ts +3 -2
- package/es/control/dashboard/dashboard-design/dashboard-design.mjs +29 -30
- package/es/control/dashboard/dashboard.d.ts +1 -0
- package/es/control/dashboard/dashboard.mjs +10 -3
- package/es/control/dashboard/index.d.ts +1 -0
- package/es/control/dashboard/portlet/chart-portlet/chart-portlet.mjs +13 -1
- package/es/control/dashboard/portlet/list-portlet/list-portlet.mjs +13 -1
- package/es/control/dashboard/portlet/portlet-layout/portlet-layout.d.ts +1 -0
- package/es/control/dashboard/portlet/portlet-layout/portlet-layout.mjs +10 -1
- package/es/control/dashboard/portlet/view-portlet/view-portlet.mjs +13 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.d.ts +1 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +3 -1
- package/es/control/form/form-detail/form-mdctrl/index.d.ts +1 -0
- package/es/control/toolbar/toolbar.css +1 -1
- package/es/control/toolbar/toolbar.mjs +14 -3
- package/es/editor/html/html-editor.controller.d.ts +25 -2
- package/es/editor/html/html-editor.controller.mjs +38 -1
- package/es/editor/html/wang-editor/ai/ai-modules.d.ts +9 -0
- package/es/editor/html/wang-editor/ai/ai-modules.mjs +32 -0
- package/es/editor/html/wang-editor/wang-editor.css +1 -1
- package/es/editor/html/wang-editor/wang-editor.mjs +98 -6
- package/es/editor/text-box/input/input.mjs +9 -5
- package/es/locale/en/index.d.ts +204 -0
- package/es/locale/en/index.mjs +205 -0
- package/es/locale/zh-CN/index.d.ts +204 -0
- package/es/locale/zh-CN/index.mjs +205 -0
- package/lib/control/dashboard/custom-dashboard-container/custom-dashboard-container.cjs +23 -6
- package/lib/control/dashboard/dashboard-design/dashboard-design.cjs +29 -30
- package/lib/control/dashboard/dashboard.cjs +9 -2
- package/lib/control/dashboard/portlet/chart-portlet/chart-portlet.cjs +12 -0
- package/lib/control/dashboard/portlet/list-portlet/list-portlet.cjs +12 -0
- package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.cjs +10 -1
- package/lib/control/dashboard/portlet/view-portlet/view-portlet.cjs +12 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +3 -1
- package/lib/control/toolbar/toolbar.cjs +14 -3
- package/lib/control/toolbar/toolbar.css +1 -1
- package/lib/editor/html/html-editor.controller.cjs +37 -0
- package/lib/editor/html/wang-editor/ai/ai-modules.cjs +34 -0
- package/lib/editor/html/wang-editor/wang-editor.cjs +97 -5
- package/lib/editor/html/wang-editor/wang-editor.css +1 -1
- package/lib/editor/text-box/input/input.cjs +9 -5
- package/lib/locale/en/index.cjs +205 -0
- package/lib/locale/zh-CN/index.cjs +205 -0
- package/package.json +7 -7
- package/dist/index-Rqr5SnvQ.js +0 -1
- package/dist/index-ntRuv0hC.js +0 -4
- package/dist/index-x-jLCilD.js +0 -1
- 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.
|
|
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
|
|
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":
|
|
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
|
|
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
|
-
|
|
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
|
|
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%}.
|
|
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 ((
|
|
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 ((
|
|
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 = {
|