@ibiz-template/vue3-components 0.7.41-alpha.43 → 0.7.41-alpha.45
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-C7wR017-.js +1 -0
- package/dist/{index-CG3sQH0b.js → index-DgqTP4Vw.js} +1 -1
- package/dist/{index-kZrZndeH.js → index-Dr0VM8iS.js} +1 -1
- package/dist/index-yLzheFmH.js +11 -0
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/wang-editor-homqxACE.js +1 -0
- package/dist/{xlsx-util-8YSXhmdI.js → xlsx-util-C5MBICNN.js} +1 -1
- package/es/control/grid/grid-column/grid-field-column/attachment-column/attachment-column.mjs +2 -1
- package/es/control/grid/grid-column/grid-field-column/attachment-column/file-util.mjs +22 -11
- package/es/editor/carousel/ibiz-carousel/ibiz-carousel.mjs +5 -2
- package/es/editor/code/monaco-editor/monaco-editor.mjs +2 -0
- package/es/editor/html/wang-editor/wang-editor.mjs +15 -6
- package/es/editor/markdown/ibiz-markdown-editor/custom-menu.mjs +5 -0
- package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
- package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.mjs +23 -12
- package/es/editor/text-box/input/input.mjs +2 -0
- package/es/editor/text-box/signature/signature.mjs +28 -15
- package/es/editor/upload/upload-editor.controller.mjs +12 -1
- package/es/editor/upload/use/use-iview-upload.mjs +28 -13
- package/es/locale/en/index.mjs +5 -1
- package/es/locale/zh-CN/index.mjs +5 -1
- package/es/panel-component/coop-pos/coop-pos.controller.mjs +11 -1
- package/es/panel-component/panel-app-title/panel-app-title.controller.mjs +3 -1
- package/es/panel-component/panel-app-title/panel-app-title.mjs +4 -2
- package/es/util/ai-chat-util/ai-chat-util.mjs +70 -35
- package/es/util/app-util/app-util.mjs +2 -1
- package/es/util/inline-ai-util/inline-ai-textarea/common/ai-think/ai-think.css +1 -0
- package/es/util/inline-ai-util/inline-ai-textarea/common/ai-think/ai-think.mjs +56 -0
- package/es/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call/ai-tool-call.css +1 -0
- package/es/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call/ai-tool-call.mjs +52 -0
- package/es/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call-item/ai-tool-call-item.css +1 -0
- package/es/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call-item/ai-tool-call-item.mjs +143 -0
- package/es/util/inline-ai-util/inline-ai-textarea/common/index.mjs +4 -0
- package/es/util/inline-ai-util/inline-ai-textarea/icon.mjs +52 -1
- package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.css +1 -1
- package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.mjs +29 -3
- package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.mjs +32 -25
- package/es/util/inline-ai-util/inline-ai-textarea/interface.mjs +1 -0
- package/lib/control/grid/grid-column/grid-field-column/attachment-column/attachment-column.cjs +2 -1
- package/lib/control/grid/grid-column/grid-field-column/attachment-column/file-util.cjs +22 -11
- package/lib/editor/carousel/ibiz-carousel/ibiz-carousel.cjs +5 -2
- package/lib/editor/code/monaco-editor/monaco-editor.cjs +2 -0
- package/lib/editor/html/wang-editor/wang-editor.cjs +15 -6
- package/lib/editor/markdown/ibiz-markdown-editor/custom-menu.cjs +5 -0
- package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.cjs +23 -12
- package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
- package/lib/editor/text-box/input/input.cjs +2 -0
- package/lib/editor/text-box/signature/signature.cjs +28 -15
- package/lib/editor/upload/upload-editor.controller.cjs +12 -1
- package/lib/editor/upload/use/use-iview-upload.cjs +28 -13
- package/lib/locale/en/index.cjs +5 -1
- package/lib/locale/zh-CN/index.cjs +5 -1
- package/lib/panel-component/coop-pos/coop-pos.controller.cjs +11 -1
- package/lib/panel-component/panel-app-title/panel-app-title.cjs +4 -2
- package/lib/panel-component/panel-app-title/panel-app-title.controller.cjs +3 -1
- package/lib/util/ai-chat-util/ai-chat-util.cjs +70 -35
- package/lib/util/app-util/app-util.cjs +2 -1
- package/lib/util/inline-ai-util/inline-ai-textarea/common/ai-think/ai-think.cjs +58 -0
- package/lib/util/inline-ai-util/inline-ai-textarea/common/ai-think/ai-think.css +1 -0
- package/lib/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call/ai-tool-call.cjs +54 -0
- package/lib/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call/ai-tool-call.css +1 -0
- package/lib/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call-item/ai-tool-call-item.cjs +145 -0
- package/lib/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call-item/ai-tool-call-item.css +1 -0
- package/lib/util/inline-ai-util/inline-ai-textarea/common/index.cjs +9 -0
- package/lib/util/inline-ai-util/inline-ai-textarea/icon.cjs +54 -0
- package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.cjs +31 -24
- package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.css +1 -1
- package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.cjs +29 -3
- package/lib/util/inline-ai-util/inline-ai-textarea/interface.cjs +3 -0
- package/package.json +5 -5
- package/dist/ibiz-markdown-editor-DJ662N4_.js +0 -1
- package/dist/index-D3x_MFr-.js +0 -11
- package/dist/wang-editor-DDSO3Ha9.js +0 -1
package/lib/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call-item/ai-tool-call-item.cjs
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vue = require('vue');
|
|
4
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
5
|
+
var icon = require('../../icon.cjs');
|
|
6
|
+
require('./ai-tool-call-item.css');
|
|
7
|
+
|
|
8
|
+
"use strict";
|
|
9
|
+
const AIToolCallItem = /* @__PURE__ */ vue.defineComponent({
|
|
10
|
+
props: {
|
|
11
|
+
toolCall: {
|
|
12
|
+
type: Object,
|
|
13
|
+
required: true
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
setup(props) {
|
|
17
|
+
const ns = vue3Util.useNamespace("ai-tool-call-item");
|
|
18
|
+
const isExpanded = vue.ref(false);
|
|
19
|
+
const handleExpandChange = () => {
|
|
20
|
+
isExpanded.value = !isExpanded.value;
|
|
21
|
+
};
|
|
22
|
+
const onCopy = (event) => {
|
|
23
|
+
event.stopPropagation();
|
|
24
|
+
ibiz.util.text.copy(JSON.stringify(props.toolCall, void 0, 2));
|
|
25
|
+
ibiz.message.success(ibiz.i18n.t("util.inlineAiUtil.copy"));
|
|
26
|
+
};
|
|
27
|
+
const formatValue = (value) => {
|
|
28
|
+
if (typeof value === "string") {
|
|
29
|
+
if (value.includes("Failed") || value.includes("Error") || value.includes("ERR_")) {
|
|
30
|
+
return '<span class="'.concat(ns.e("error"), '">"').concat(value, '"</span>');
|
|
31
|
+
}
|
|
32
|
+
return '<span class="'.concat(ns.e("string"), '">"').concat(value, '"</span>');
|
|
33
|
+
}
|
|
34
|
+
if (typeof value === "number") {
|
|
35
|
+
return '<span class="'.concat(ns.e("number"), '">').concat(value, "</span>");
|
|
36
|
+
}
|
|
37
|
+
if (typeof value === "boolean") {
|
|
38
|
+
return '<span class="'.concat(ns.e("boolean"), '">').concat(value, "</span>");
|
|
39
|
+
}
|
|
40
|
+
if (value === null) {
|
|
41
|
+
return '<span class="'.concat(ns.e("null"), '">null</span>');
|
|
42
|
+
}
|
|
43
|
+
return "";
|
|
44
|
+
};
|
|
45
|
+
const formatJSON = (data, indentLevel = 0) => {
|
|
46
|
+
const indent = " ".repeat(indentLevel);
|
|
47
|
+
const lines2 = [];
|
|
48
|
+
if (Array.isArray(data)) {
|
|
49
|
+
if (data.length === 0) {
|
|
50
|
+
return ["".concat(indent, '<span class="').concat(ns.e("array"), '">[]</span>')];
|
|
51
|
+
}
|
|
52
|
+
lines2.push("".concat(indent, '<span class="').concat(ns.e("array"), '">[</span>'));
|
|
53
|
+
data.forEach((item, index) => {
|
|
54
|
+
const itemLines = formatJSON(item, indentLevel + 1);
|
|
55
|
+
const comma = index < data.length - 1 ? "," : "";
|
|
56
|
+
if (typeof item === "object" && item !== null) {
|
|
57
|
+
lines2.push(...itemLines.slice(0, -1));
|
|
58
|
+
lines2.push("".concat(itemLines[itemLines.length - 1]).concat(comma));
|
|
59
|
+
} else {
|
|
60
|
+
lines2.push("".concat(itemLines[0]).concat(comma));
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
lines2.push("".concat(indent, '<span class="').concat(ns.e("array"), '">]</span>'));
|
|
64
|
+
} else if (typeof data === "object" && data !== null) {
|
|
65
|
+
const keys = Object.keys(data);
|
|
66
|
+
if (keys.length === 0) {
|
|
67
|
+
return ["".concat(indent, '<span class="').concat(ns.e("property"), '">{}</span>')];
|
|
68
|
+
}
|
|
69
|
+
lines2.push("".concat(indent, '<span class="').concat(ns.e("property"), '">{</span>'));
|
|
70
|
+
keys.forEach((key, index) => {
|
|
71
|
+
const value = data[key];
|
|
72
|
+
const comma = index < keys.length - 1 ? "," : "";
|
|
73
|
+
const keyElement = '<span class="'.concat(ns.e("json-key"), '">"').concat(key, '":</span>');
|
|
74
|
+
if (typeof value === "object" && value !== null) {
|
|
75
|
+
const valueLines = formatJSON(value, indentLevel + 1);
|
|
76
|
+
lines2.push("".concat(indent, " ").concat(keyElement, " ").concat(valueLines[0].trim()));
|
|
77
|
+
if (valueLines.length > 1) {
|
|
78
|
+
lines2.push(...valueLines.slice(1, -1));
|
|
79
|
+
lines2.push("".concat(valueLines[valueLines.length - 1]).concat(comma));
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
const valueElement = formatValue(value);
|
|
83
|
+
lines2.push("".concat(indent, " ").concat(keyElement, " ").concat(valueElement).concat(comma));
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
lines2.push("".concat(indent, '<span class="').concat(ns.e("property"), '">}</span>'));
|
|
87
|
+
} else {
|
|
88
|
+
lines2.push("".concat(indent).concat(formatValue(data)));
|
|
89
|
+
}
|
|
90
|
+
return lines2;
|
|
91
|
+
};
|
|
92
|
+
const lines = vue.ref([]);
|
|
93
|
+
const onInit = () => {
|
|
94
|
+
const items = formatJSON(props.toolCall, 0);
|
|
95
|
+
lines.value = items.map((item, index) => '<span class="'.concat(ns.em("code-line", "line-number"), '">').concat(index + 1, "</span>").concat(item));
|
|
96
|
+
};
|
|
97
|
+
vue.onMounted(() => {
|
|
98
|
+
onInit();
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
ns,
|
|
102
|
+
lines,
|
|
103
|
+
isExpanded,
|
|
104
|
+
onCopy,
|
|
105
|
+
handleExpandChange
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
render() {
|
|
109
|
+
var _a;
|
|
110
|
+
return vue.createVNode("div", {
|
|
111
|
+
"class": this.ns.b()
|
|
112
|
+
}, [vue.createVNode("div", {
|
|
113
|
+
"class": this.ns.e("header"),
|
|
114
|
+
"onClick": this.handleExpandChange
|
|
115
|
+
}, [vue.createVNode("div", {
|
|
116
|
+
"class": this.ns.e("header-left")
|
|
117
|
+
}, [vue.createVNode("div", {
|
|
118
|
+
"class": this.ns.em("header-left", "caption")
|
|
119
|
+
}, [this.toolCall.name]), vue.createVNode("div", {
|
|
120
|
+
"class": this.ns.em("header-left", "desc")
|
|
121
|
+
}, [(_a = this.toolCall.parameters) == null ? void 0 : _a.desc])]), vue.createVNode("div", {
|
|
122
|
+
"class": this.ns.e("header-right")
|
|
123
|
+
}, [this.toolCall.error && vue.createVNode("div", {
|
|
124
|
+
"class": this.ns.em("header-right", "error")
|
|
125
|
+
}, [vue.createVNode("span", {
|
|
126
|
+
"class": this.ns.em("header-right", "error-text")
|
|
127
|
+
}, [ibiz.i18n.t("util.inlineAiUtil.error")]), vue.createVNode("div", {
|
|
128
|
+
"class": this.ns.em("header-right", "icon")
|
|
129
|
+
}, [icon.ErrorIcon])]), vue.createVNode("div", {
|
|
130
|
+
"onClick": this.onCopy,
|
|
131
|
+
"class": this.ns.em("header-right", "icon")
|
|
132
|
+
}, [icon.CopyIcon]), vue.createVNode("div", {
|
|
133
|
+
"class": this.ns.em("header-right", "icon")
|
|
134
|
+
}, [this.isExpanded ? icon.DownIcon : icon.RightIcon])])]), this.isExpanded && vue.createVNode("div", {
|
|
135
|
+
"class": this.ns.e("content")
|
|
136
|
+
}, [this.lines.map((line) => {
|
|
137
|
+
return vue.createVNode("div", {
|
|
138
|
+
"class": this.ns.e("code-line"),
|
|
139
|
+
"innerHTML": line
|
|
140
|
+
}, null);
|
|
141
|
+
})])]);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
exports.AIToolCallItem = AIToolCallItem;
|
package/lib/util/inline-ai-util/inline-ai-textarea/common/ai-tool-call-item/ai-tool-call-item.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-ai-tool-call-item{--ibiz-ai-tool-call-item-bg-primary:#1e1e1e;--ibiz-ai-tool-call-item-bg-secondary:#2d2d2d;--ibiz-ai-tool-call-item-bg-tertiary:#3c3c3c;--ibiz-ai-tool-call-item-text-primary:#d4d4d4;--ibiz-ai-tool-call-item-text-secondary:#9cdcfe;--ibiz-ai-tool-call-item-text-error:#f44747;--ibiz-ai-tool-call-item-text-string:#ce9178;--ibiz-ai-tool-call-item-text-boolean:#569cd6;--ibiz-ai-tool-call-item-text-property:#9cdcfe;--ibiz-ai-tool-call-item-text-number:#b5cea8;--ibiz-ai-tool-call-item-accent-primary:#0e639c;--ibiz-ai-tool-call-item-accent-error:rgba(244, 71, 71, 0.2);--ibiz-ai-tool-call-item-color-bg:var(--ibiz-inline-ai-textarea-container-color-bg-1);--ibiz-ai-tool-call-item-color-border:var(--ibiz-inline-ai-textarea-container-color-border);margin-bottom:var(--ibiz-spacing-tight);background-color:var(--ibiz-ai-tool-call-item-color-bg);border:1px solid var(--ibiz-ai-tool-call-item-color-border);border-radius:var(--ibiz-border-radius-small)}.ibiz-ai-tool-call-item__header{display:flex;gap:var(--ibiz-spacing-tight);align-items:center;justify-content:space-between;width:100%;padding:var(--ibiz-spacing-tight)}.ibiz-ai-tool-call-item__header-left{display:flex;gap:var(--ibiz-spacing-tight);align-items:center}.ibiz-ai-tool-call-item__header-left--caption{flex-shrink:0}.ibiz-ai-tool-call-item__header-left--desc{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-ai-tool-call-item__header-right{display:flex;flex-shrink:0;gap:var(--ibiz-spacing-tight);align-items:center}.ibiz-ai-tool-call-item__header-right--icon{display:flex;align-items:center;cursor:pointer}.ibiz-ai-tool-call-item__header-right--error-text{color:var(--ibiz-color-danger)}.ibiz-ai-tool-call-item__content{padding:var(--ibiz-spacing-tight) 0}.ibiz-ai-tool-call-item__code-line{display:flex;min-height:18px;margin-bottom:var(--ibiz-spacing-base-tight);font-family:Consolas,monospace;font-size:.95rem}.ibiz-ai-tool-call-item__code-line--line-number{min-width:20px;margin-right:15px;color:var(--ibiz-color-success);text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ibiz-ai-tool-call-item__property{color:var(--ibiz-ai-tool-call-item-text-property)}.ibiz-ai-tool-call-item__string{overflow:hidden;color:var(--ibiz-ai-tool-call-item-text-string);text-overflow:ellipsis;white-space:nowrap}.ibiz-ai-tool-call-item__boolean{color:var(--ibiz-ai-tool-call-item-text-boolean)}.ibiz-ai-tool-call-item__number{color:var(--ibiz-ai-tool-call-item-text-number)}.ibiz-ai-tool-call-item__null{color:var(--ibiz-ai-tool-call-item-text-boolean)}.ibiz-ai-tool-call-item__error{color:var(--ibiz-ai-tool-call-item-text-error)}
|
|
@@ -214,14 +214,68 @@ const DownIcon = vue.createVNode("svg", {
|
|
|
214
214
|
"id": "abf\u5F62\u72B6\u7ED3\u5408",
|
|
215
215
|
"transform": "rotate(-90 7.978 8.252)"
|
|
216
216
|
}, null)])]);
|
|
217
|
+
const RightIcon = vue.createVNode("svg", {
|
|
218
|
+
"viewBox": "0 0 1024 1024",
|
|
219
|
+
"version": "1.1",
|
|
220
|
+
"xmlns": "http://www.w3.org/2000/svg",
|
|
221
|
+
"p-id": "4832",
|
|
222
|
+
"width": "16",
|
|
223
|
+
"height": "16",
|
|
224
|
+
"fill": "currentColor"
|
|
225
|
+
}, [vue.createVNode("path", {
|
|
226
|
+
"d": "M707.61856 495.14624l-357.5296-357.5296c-9.30816-9.30688-24.40064-9.30688-33.70752 0-9.30816 9.30816-9.30816 24.40064 0 33.7088L657.056 512 316.38144 852.67456c-9.30816 9.30688-9.30816 24.40064 0 33.7088 4.65408 4.65536 10.75328 6.98112 16.85376 6.98112 6.10048 0 12.19968-2.32576 16.85376-6.98112l357.5296-357.5296C716.92672 519.5456 716.92672 504.4544 707.61856 495.14624z",
|
|
227
|
+
"p-id": "4833"
|
|
228
|
+
}, null)]);
|
|
229
|
+
const ErrorIcon = vue.createVNode("svg", {
|
|
230
|
+
"xmlns": "http://www.w3.org/2000/svg",
|
|
231
|
+
"width": "16",
|
|
232
|
+
"height": "16",
|
|
233
|
+
"viewBox": "0 0 24 24",
|
|
234
|
+
"fill": "none",
|
|
235
|
+
"stroke": "red",
|
|
236
|
+
"stroke-width": "2",
|
|
237
|
+
"stroke-linecap": "round",
|
|
238
|
+
"stroke-linejoin": "round",
|
|
239
|
+
"aria-hidden": "true"
|
|
240
|
+
}, [vue.createVNode("path", {
|
|
241
|
+
"d": "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"
|
|
242
|
+
}, null), vue.createVNode("path", {
|
|
243
|
+
"d": "M12 9v4"
|
|
244
|
+
}, null), vue.createVNode("path", {
|
|
245
|
+
"d": "M12 17h.01"
|
|
246
|
+
}, null)]);
|
|
247
|
+
const CopyIcon = vue.createVNode("svg", {
|
|
248
|
+
"xmlns": "http://www.w3.org/2000/svg",
|
|
249
|
+
"width": "16",
|
|
250
|
+
"height": "16",
|
|
251
|
+
"viewBox": "0 0 24 24",
|
|
252
|
+
"fill": "none",
|
|
253
|
+
"stroke": "currentColor",
|
|
254
|
+
"stroke-width": "2",
|
|
255
|
+
"stroke-linecap": "round",
|
|
256
|
+
"stroke-linejoin": "round",
|
|
257
|
+
"aria-hidden": "true"
|
|
258
|
+
}, [vue.createVNode("rect", {
|
|
259
|
+
"width": "14",
|
|
260
|
+
"height": "14",
|
|
261
|
+
"x": "8",
|
|
262
|
+
"y": "8",
|
|
263
|
+
"rx": "2",
|
|
264
|
+
"ry": "2"
|
|
265
|
+
}, null), vue.createVNode("path", {
|
|
266
|
+
"d": "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"
|
|
267
|
+
}, null)]);
|
|
217
268
|
|
|
218
269
|
exports.AIIcon = AIIcon;
|
|
219
270
|
exports.CancelIcon = CancelIcon;
|
|
271
|
+
exports.CopyIcon = CopyIcon;
|
|
220
272
|
exports.CopyTextIcon = CopyTextIcon;
|
|
221
273
|
exports.DownIcon = DownIcon;
|
|
274
|
+
exports.ErrorIcon = ErrorIcon;
|
|
222
275
|
exports.LoadingIcon = LoadingIcon;
|
|
223
276
|
exports.RegenerateIcon = RegenerateIcon;
|
|
224
277
|
exports.ReplaceTextIcon = ReplaceTextIcon;
|
|
278
|
+
exports.RightIcon = RightIcon;
|
|
225
279
|
exports.SendIcon = SendIcon;
|
|
226
280
|
exports.StopIcon = StopIcon;
|
|
227
281
|
exports.ThinkSuccessIcon = ThinkSuccessIcon;
|
|
@@ -4,7 +4,10 @@ var vue = require('vue');
|
|
|
4
4
|
var vue3Util = require('@ibiz-template/vue3-util');
|
|
5
5
|
var inlineAiTextarea_hook = require('./inline-ai-textarea.hook.cjs');
|
|
6
6
|
var icon = require('./icon.cjs');
|
|
7
|
+
require('./common/index.cjs');
|
|
7
8
|
require('./inline-ai-textarea.css');
|
|
9
|
+
var aiToolCall = require('./common/ai-tool-call/ai-tool-call.cjs');
|
|
10
|
+
var aiThink = require('./common/ai-think/ai-think.cjs');
|
|
8
11
|
|
|
9
12
|
"use strict";
|
|
10
13
|
const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
@@ -61,6 +64,7 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
|
61
64
|
const textareaRef = vue.ref();
|
|
62
65
|
const message = vue.ref({
|
|
63
66
|
role: "USER",
|
|
67
|
+
toolcalls: [],
|
|
64
68
|
error: void 0,
|
|
65
69
|
think: void 0,
|
|
66
70
|
content: props.content
|
|
@@ -118,14 +122,22 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
|
118
122
|
break;
|
|
119
123
|
case 30:
|
|
120
124
|
answerContent = answer.content;
|
|
121
|
-
|
|
125
|
+
const {
|
|
126
|
+
think,
|
|
127
|
+
content
|
|
128
|
+
} = parseContent(answerContent);
|
|
129
|
+
Object.assign(message.value, {
|
|
130
|
+
think,
|
|
131
|
+
content
|
|
132
|
+
});
|
|
122
133
|
break;
|
|
123
134
|
case 40:
|
|
124
135
|
isCollapse.value = true;
|
|
125
136
|
Object.assign(message.value, {
|
|
126
|
-
|
|
137
|
+
toolcalls: [],
|
|
127
138
|
think: void 0,
|
|
128
|
-
content: void 0
|
|
139
|
+
content: void 0,
|
|
140
|
+
error: answer.content
|
|
129
141
|
});
|
|
130
142
|
break;
|
|
131
143
|
default:
|
|
@@ -144,6 +156,7 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
|
144
156
|
question = content;
|
|
145
157
|
answerContent = void 0;
|
|
146
158
|
Object.assign(message.value, {
|
|
159
|
+
toolcalls: [],
|
|
147
160
|
error: void 0,
|
|
148
161
|
think: void 0,
|
|
149
162
|
content: void 0
|
|
@@ -170,9 +183,6 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
|
170
183
|
sendQuestion(message.value.content);
|
|
171
184
|
}
|
|
172
185
|
};
|
|
173
|
-
const onCollapseChange = () => {
|
|
174
|
-
isCollapse.value = !isCollapse.value;
|
|
175
|
-
};
|
|
176
186
|
const handleAction = (_e, actionName) => {
|
|
177
187
|
const content = message.value.content;
|
|
178
188
|
switch (actionName) {
|
|
@@ -221,26 +231,11 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
|
221
231
|
"class": ns.em("loading", "dot")
|
|
222
232
|
}, null)]);
|
|
223
233
|
};
|
|
224
|
-
const
|
|
234
|
+
const renderError = () => {
|
|
225
235
|
if (message.value.error)
|
|
226
236
|
return vue.createVNode("div", {
|
|
227
237
|
"class": ns.e("error")
|
|
228
238
|
}, [message.value.error]);
|
|
229
|
-
if (message.value.think)
|
|
230
|
-
return vue.createVNode("div", {
|
|
231
|
-
"class": ns.e("think")
|
|
232
|
-
}, [vue.createVNode("div", {
|
|
233
|
-
"class": ns.em("think", "header"),
|
|
234
|
-
"onClick": onCollapseChange
|
|
235
|
-
}, [vue.createVNode("div", {
|
|
236
|
-
"class": [ns.em("think", "state-icon"), ns.is("loading", isLoading.value)]
|
|
237
|
-
}, [isLoading.value ? icon.LoadingIcon : icon.ThinkSuccessIcon]), vue.createVNode("div", {
|
|
238
|
-
"class": ns.em("think", "title")
|
|
239
|
-
}, [isLoading.value ? ibiz.i18n.t("util.inlineAiUtil.thinking") : ibiz.i18n.t("util.inlineAiUtil.thinked")]), vue.createVNode("div", {
|
|
240
|
-
"class": ns.em("think", "collapse-icon")
|
|
241
|
-
}, [isCollapse.value ? icon.DownIcon : icon.UpIcon])]), !isCollapse.value && vue.createVNode("div", {
|
|
242
|
-
"class": ns.em("think", "content")
|
|
243
|
-
}, [message.value.think])]);
|
|
244
239
|
};
|
|
245
240
|
return {
|
|
246
241
|
ns,
|
|
@@ -250,6 +245,7 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
|
250
245
|
message,
|
|
251
246
|
disabled,
|
|
252
247
|
isLoading,
|
|
248
|
+
isCollapse,
|
|
253
249
|
actionsRef,
|
|
254
250
|
textareaRef,
|
|
255
251
|
actionStyle,
|
|
@@ -257,10 +253,10 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
|
257
253
|
contentStyle,
|
|
258
254
|
containerStyle,
|
|
259
255
|
onKeydown,
|
|
256
|
+
renderError,
|
|
260
257
|
sendQuestion,
|
|
261
258
|
handleAction,
|
|
262
259
|
renderLoading,
|
|
263
|
-
renderContent,
|
|
264
260
|
stopQuestionAndClose
|
|
265
261
|
};
|
|
266
262
|
},
|
|
@@ -278,7 +274,18 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
|
|
|
278
274
|
"class": this.ns.em("content", "ai-icon")
|
|
279
275
|
}, [icon.AIIcon])]), vue.createVNode("div", {
|
|
280
276
|
"class": this.ns.em("content", "textarea")
|
|
281
|
-
}, [this.renderLoading(),
|
|
277
|
+
}, [this.renderLoading(), vue.createVNode(aiToolCall.AIToolCall, {
|
|
278
|
+
"class": this.ns.e("tool-call"),
|
|
279
|
+
"toolCalls": this.message.toolcalls
|
|
280
|
+
}, null), vue.createVNode(aiThink.AIThink, {
|
|
281
|
+
"class": this.ns.e("think"),
|
|
282
|
+
"think": this.message.think,
|
|
283
|
+
"isLoading": this.isLoading,
|
|
284
|
+
"isCollapse": this.isCollapse,
|
|
285
|
+
"onCollapseChange": (val) => {
|
|
286
|
+
this.isCollapse = val;
|
|
287
|
+
}
|
|
288
|
+
}, null), this.renderError(), vue.withDirectives(vue.createVNode("textarea", {
|
|
282
289
|
"ref": "textareaRef",
|
|
283
290
|
"disabled": this.disabled,
|
|
284
291
|
"onKeydown": this.onKeydown,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-inline-ai-container-context-menu{--ibiz-inline-ai-context-menu-color-bg:var(--ibiz-color-bg-2);--ibiz-inline-ai-context-menu-color-text:var(--ibiz-color-text-0);--ibiz-inline-ai-context-menu-color-bg-active:var(--ibiz-color-fill-0);--mx-menu-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-backgroud:var(--ibiz-inline-ai-context-menu-color-bg);--mx-menu-hover-backgroud:var(--ibiz-inline-ai-context-menu-color-bg-active);--mx-menu-hover-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-open-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-open-backgroud:var(--ibiz-inline-ai-context-menu-color-bg-active);--mx-menu-open-hover-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-open-hover-backgroud:var(--ibiz-inline-ai-context-menu-color-bg-active);--mx-menu-active-backgroud:var(--ibiz-inline-ai-context-menu-color-bg-active);--mx-menu-active-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-backgroud-radius:0}.ibiz-inline-ai-container-context-menu .scroll-content{pointer-events:unset}.ibiz-inline-ai-container-context-menu .mx-context-menu-item{cursor:pointer}.ibiz-inline-ai-textarea-container{--ibiz-inline-ai-textarea-container-color-bg-0:rgb(255, 255, 255);--ibiz-inline-ai-textarea-container-color-bg-1:rgb(249, 249, 249);--ibiz-inline-ai-textarea-container-color-border:rgba(29, 31, 35, 0.1);--ibiz-inline-ai-textarea-container-color-text-0:rgb(29, 31, 35);--ibiz-inline-ai-textarea-container-color-text-1:rgba(0, 0, 0, 0.45);--ibiz-inline-ai-textarea-container-color-text-2:rgb(85, 125, 165);--ibiz-inline-ai-textarea-container-color-text-hove-1:rgb(105, 148, 190);--ibiz-inline-ai-textarea-container-color-bg-hover-1:rgb(217, 236, 255);--ibiz-inline-ai-textarea-container-color-bg-hover-2:rgba(46, 50, 55, 0.05);--ibiz-inline-ai-textarea-container-color-loading:#65b3fc}.ibiz-inline-ai-textarea-container--dark{--ibiz-inline-ai-textarea-container-color-bg-0:rgb(28, 28, 28);--ibiz-inline-ai-textarea-container-color-bg-1:rgb(53, 54, 60);--ibiz-inline-ai-textarea-container-color-border:rgba(255, 255, 255, 0.08);--ibiz-inline-ai-textarea-container-color-text-0:rgb(255, 255, 255);--ibiz-inline-ai-textarea-container-color-text-1:rgba(249, 249, 249, 0.35);--ibiz-inline-ai-textarea-container-color-text-2:rgb(70, 107, 144);--ibiz-inline-ai-textarea-container-color-text-hove-1:rgb(105, 148, 190);--ibiz-inline-ai-textarea-container-color-bg-hover-1:rgba(85, 125, 165, 0.2);--ibiz-inline-ai-textarea-container-color-bg-hover-2:rgb(67, 68, 74);--ibiz-inline-ai-textarea-container-color-loading:rgba(204, 204, 204, 0.6)}.ibiz-inline-ai-textarea-container{position:absolute;color:var(--ibiz-inline-ai-textarea-container-color-text-0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.ibiz-inline-ai-textarea-container .ibiz-inline-ai-textarea-container__content{border:1px solid var(--ibiz-inline-ai-textarea-container-color-border);border-radius:var(--ibiz-border-radius-small);box-shadow:0 0 16px var(--ibiz-color-shadow)}.ibiz-inline-ai-textarea-container.is-show-ai{border:1px solid var(--ibiz-inline-ai-textarea-container-color-border);border-radius:var(--ibiz-border-radius-small);box-shadow:0 0 16px var(--ibiz-color-shadow)}.ibiz-inline-ai-textarea-container.is-show-ai .ibiz-inline-ai-textarea-container__content{border:none;border-radius:var(--ibiz-border-radius-small) var(--ibiz-border-radius-small) 0 0;box-shadow:none}.ibiz-inline-ai-textarea-container.is-show-ai .ibiz-inline-ai-textarea-container__footer{border-radius:0 0 var(--ibiz-border-radius-small) var(--ibiz-border-radius-small)}.ibiz-inline-ai-textarea-container__content{position:relative;display:flex;gap:var(--ibiz-spacing-tight);padding:var(--ibiz-spacing-base-tight);background-color:var(--ibiz-inline-ai-textarea-container-color-bg-0)}.ibiz-inline-ai-textarea-container__content--prefix{flex-shrink:0;color:var(--ibiz-inline-ai-textarea-container-color-text-1)}.ibiz-inline-ai-textarea-container__content--textarea{position:relative;display:flex;flex-direction:column;flex-grow:1;
|
|
1
|
+
.ibiz-inline-ai-container-context-menu{--ibiz-inline-ai-context-menu-color-bg:var(--ibiz-color-bg-2);--ibiz-inline-ai-context-menu-color-text:var(--ibiz-color-text-0);--ibiz-inline-ai-context-menu-color-bg-active:var(--ibiz-color-fill-0);--mx-menu-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-backgroud:var(--ibiz-inline-ai-context-menu-color-bg);--mx-menu-hover-backgroud:var(--ibiz-inline-ai-context-menu-color-bg-active);--mx-menu-hover-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-open-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-open-backgroud:var(--ibiz-inline-ai-context-menu-color-bg-active);--mx-menu-open-hover-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-open-hover-backgroud:var(--ibiz-inline-ai-context-menu-color-bg-active);--mx-menu-active-backgroud:var(--ibiz-inline-ai-context-menu-color-bg-active);--mx-menu-active-text:var(--ibiz-inline-ai-context-menu-color-text);--mx-menu-backgroud-radius:0}.ibiz-inline-ai-container-context-menu .scroll-content{pointer-events:unset}.ibiz-inline-ai-container-context-menu .mx-context-menu-item{cursor:pointer}.ibiz-inline-ai-textarea-container{--ibiz-inline-ai-textarea-container-color-bg-0:rgb(255, 255, 255);--ibiz-inline-ai-textarea-container-color-bg-1:rgb(249, 249, 249);--ibiz-inline-ai-textarea-container-color-border:rgba(29, 31, 35, 0.1);--ibiz-inline-ai-textarea-container-color-text-0:rgb(29, 31, 35);--ibiz-inline-ai-textarea-container-color-text-1:rgba(0, 0, 0, 0.45);--ibiz-inline-ai-textarea-container-color-text-2:rgb(85, 125, 165);--ibiz-inline-ai-textarea-container-color-text-hove-1:rgb(105, 148, 190);--ibiz-inline-ai-textarea-container-color-bg-hover-1:rgb(217, 236, 255);--ibiz-inline-ai-textarea-container-color-bg-hover-2:rgba(46, 50, 55, 0.05);--ibiz-inline-ai-textarea-container-color-loading:#65b3fc}.ibiz-inline-ai-textarea-container--dark{--ibiz-inline-ai-textarea-container-color-bg-0:rgb(28, 28, 28);--ibiz-inline-ai-textarea-container-color-bg-1:rgb(53, 54, 60);--ibiz-inline-ai-textarea-container-color-border:rgba(255, 255, 255, 0.08);--ibiz-inline-ai-textarea-container-color-text-0:rgb(255, 255, 255);--ibiz-inline-ai-textarea-container-color-text-1:rgba(249, 249, 249, 0.35);--ibiz-inline-ai-textarea-container-color-text-2:rgb(70, 107, 144);--ibiz-inline-ai-textarea-container-color-text-hove-1:rgb(105, 148, 190);--ibiz-inline-ai-textarea-container-color-bg-hover-1:rgba(85, 125, 165, 0.2);--ibiz-inline-ai-textarea-container-color-bg-hover-2:rgb(67, 68, 74);--ibiz-inline-ai-textarea-container-color-loading:rgba(204, 204, 204, 0.6)}.ibiz-inline-ai-textarea-container{position:absolute;color:var(--ibiz-inline-ai-textarea-container-color-text-0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.ibiz-inline-ai-textarea-container .ibiz-inline-ai-textarea-container__content{border:1px solid var(--ibiz-inline-ai-textarea-container-color-border);border-radius:var(--ibiz-border-radius-small);box-shadow:0 0 16px var(--ibiz-color-shadow)}.ibiz-inline-ai-textarea-container.is-show-ai{border:1px solid var(--ibiz-inline-ai-textarea-container-color-border);border-radius:var(--ibiz-border-radius-small);box-shadow:0 0 16px var(--ibiz-color-shadow)}.ibiz-inline-ai-textarea-container.is-show-ai .ibiz-inline-ai-textarea-container__content{border:none;border-radius:var(--ibiz-border-radius-small) var(--ibiz-border-radius-small) 0 0;box-shadow:none}.ibiz-inline-ai-textarea-container.is-show-ai .ibiz-inline-ai-textarea-container__footer{border-radius:0 0 var(--ibiz-border-radius-small) var(--ibiz-border-radius-small)}.ibiz-inline-ai-textarea-container__content{position:relative;display:flex;gap:var(--ibiz-spacing-tight);padding:var(--ibiz-spacing-base-tight);background-color:var(--ibiz-inline-ai-textarea-container-color-bg-0)}.ibiz-inline-ai-textarea-container__content--prefix{flex-shrink:0;color:var(--ibiz-inline-ai-textarea-container-color-text-1)}.ibiz-inline-ai-textarea-container__content--textarea{position:relative;display:flex;flex-direction:column;flex-grow:1;overflow-y:auto}.ibiz-inline-ai-textarea-container__content--textarea textarea{flex-shrink:0;padding:0;overflow:hidden;color:var(--ibiz-inline-ai-textarea-container-color-text-0);resize:none;background-color:var(--ibiz-inline-ai-textarea-container-color-bg-0);border:none;outline:0;transition:height .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1)}.ibiz-inline-ai-textarea-container__content--textarea textarea:disabled{background-color:var(--ibiz-inline-ai-textarea-container-color-bg-0)}.ibiz-inline-ai-textarea-container__content--textarea textarea.is-hidden{display:none}.ibiz-inline-ai-textarea-container__content--suffix{display:flex;flex-direction:column-reverse;flex-shrink:0}.ibiz-inline-ai-textarea-container__content--sand-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:var(--ibiz-inline-ai-textarea-container-color-text-2);cursor:pointer;border-radius:var(--ibiz-spacing-extra-tight)}.ibiz-inline-ai-textarea-container__content--sand-icon:hover{background-color:var(--ibiz-inline-ai-textarea-container-color-bg-hover-1)}.ibiz-inline-ai-textarea-container__content--stop-icon{display:flex;gap:var(--ibiz-spacing-extra-tight);align-items:center;font-size:var(--ibiz-font-size-small);color:var(--ibiz-inline-ai-textarea-container-color-text-1);cursor:pointer}.ibiz-inline-ai-textarea-container__content--stop-icon:hover{color:var(--ibiz-inline-ai-textarea-container-color-text-hove-1)}.ibiz-inline-ai-textarea-container__footer{padding:var(--ibiz-spacing-base-tight) var(--ibiz-spacing-base);font-size:var(--ibiz-font-size-small);color:var(--ibiz-inline-ai-textarea-container-color-text-1);background-color:var(--ibiz-inline-ai-textarea-container-color-bg-1);border-top:1px solid var(--ibiz-inline-ai-textarea-container-color-border)}.ibiz-inline-ai-textarea-container__actions{position:absolute;width:240px;padding:var(--ibiz-spacing-base-tight) 0;font-size:var(--ibiz-font-size-regular);background-color:var(--ibiz-inline-ai-textarea-container-color-bg-0);border:1px solid var(--ibiz-inline-ai-textarea-container-color-border);border-radius:var(--ibiz-border-radius-small);box-shadow:0 0 16px var(--ibiz-color-shadow)}.ibiz-inline-ai-textarea-container__actions--action{display:flex;gap:var(--ibiz-spacing-tight);align-items:center;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);cursor:pointer}.ibiz-inline-ai-textarea-container__actions--action:hover{background-color:var(--ibiz-inline-ai-textarea-container-color-bg-hover-2)}.ibiz-inline-ai-textarea-container__actions--action.is-danger:hover{color:var(--ibiz-color-danger)}.ibiz-inline-ai-textarea-container__actions--divider{margin:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-base-loose);border-top:1px solid var(--ibiz-inline-ai-textarea-container-color-border)}.ibiz-inline-ai-textarea-container__error{flex-grow:1;color:var(--ibiz-color-danger)}.ibiz-inline-ai-textarea-container__think{flex-shrink:0;margin-bottom:var(--ibiz-spacing-tight)}.ibiz-inline-ai-textarea-container__tool-call{flex-shrink:0;margin-bottom:var(--ibiz-spacing-tight)}.ibiz-inline-ai-textarea-container__loading{position:absolute;top:0;left:0;display:flex;gap:8px;align-items:center;width:100%;height:100%;overflow:hidden}@keyframes bounce{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.ibiz-inline-ai-textarea-container__loading--dot{width:12px;height:12px;background:var(--ibiz-inline-ai-textarea-container-color-loading);border-radius:50%;animation:bounce 1.5s infinite ease-in-out}.ibiz-inline-ai-textarea-container__loading--dot:nth-child(2){animation-delay:.2s}.ibiz-inline-ai-textarea-container__loading--dot:nth-child(3){animation-delay:.4s}
|
|
@@ -138,17 +138,40 @@ const useAI = (props, opts) => {
|
|
|
138
138
|
const parseContent = (text) => {
|
|
139
139
|
let think;
|
|
140
140
|
let content;
|
|
141
|
+
const toolcalls = [];
|
|
141
142
|
if (!text)
|
|
142
|
-
return { think, content };
|
|
143
|
+
return { think, content, toolcalls };
|
|
143
144
|
const openThinkIndex = text.indexOf("<think>");
|
|
144
145
|
const closeThinkIndex = text.indexOf("</think>");
|
|
145
146
|
if (openThinkIndex !== -1) {
|
|
146
147
|
think = closeThinkIndex === -1 ? text.slice(openThinkIndex + 7) : text.slice(openThinkIndex + 7, closeThinkIndex);
|
|
147
148
|
content = closeThinkIndex === -1 ? void 0 : text.slice(closeThinkIndex + 8);
|
|
148
149
|
} else {
|
|
149
|
-
|
|
150
|
+
const toolCallRegex = new RegExp(
|
|
151
|
+
"<tool_call>\\s*({[\\s\\S]*?})\\s*</tool_call>",
|
|
152
|
+
"g"
|
|
153
|
+
);
|
|
154
|
+
const matches = text.matchAll(toolCallRegex);
|
|
155
|
+
for (const match of matches) {
|
|
156
|
+
try {
|
|
157
|
+
const toolCallData = JSON.parse(match[1]);
|
|
158
|
+
const tempToolCall = {
|
|
159
|
+
name: toolCallData.name,
|
|
160
|
+
parameters: toolCallData.parameters,
|
|
161
|
+
error: toolCallData.error || false
|
|
162
|
+
};
|
|
163
|
+
if (toolCallData.result)
|
|
164
|
+
Object.assign(tempToolCall, {
|
|
165
|
+
result: toolCallData.result
|
|
166
|
+
});
|
|
167
|
+
toolcalls.push(tempToolCall);
|
|
168
|
+
} catch (e) {
|
|
169
|
+
console.error("\u89E3\u6790\u5DE5\u5177\u8C03\u7528\u5931\u8D25:", e);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
content = text.replace(new RegExp("\\<tool_call\\>[^]*?\\<\\/tool_call\\>", "gs"), "").trim();
|
|
150
173
|
}
|
|
151
|
-
return { think, content };
|
|
174
|
+
return { think, content, toolcalls };
|
|
152
175
|
};
|
|
153
176
|
const asyncAskAI = (question, callBack, errorBack) => {
|
|
154
177
|
return new Promise((resolve) => {
|
|
@@ -282,6 +305,9 @@ const useBase = (props, element, message) => {
|
|
|
282
305
|
textareaRef.value.style.height = "auto";
|
|
283
306
|
textareaRef.value.style.height = "".concat(textareaRef.value.scrollHeight, "px");
|
|
284
307
|
});
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
immediate: true
|
|
285
311
|
}
|
|
286
312
|
);
|
|
287
313
|
const updatePosition = () => {
|
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.45",
|
|
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.37",
|
|
34
34
|
"@ibiz-template-plugin/gantt": "0.1.8-alpha.316",
|
|
35
35
|
"@ibiz-template-plugin/bi-report": "0.0.30",
|
|
36
36
|
"@ibiz-template-plugin/data-view": "0.0.6",
|
|
37
37
|
"@ibiz-template/core": "0.7.41-alpha.35",
|
|
38
38
|
"@ibiz-template/devtool": "0.0.13",
|
|
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.43",
|
|
40
|
+
"@ibiz-template/runtime": "0.7.41-alpha.43",
|
|
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.43",
|
|
43
43
|
"@ibiz-template/web-theme": "3.9.0",
|
|
44
44
|
"@ibiz/model-core": "^0.1.84",
|
|
45
45
|
"@imengyu/vue3-context-menu": "^1.3.5",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
System.register(["vue","@ibiz-template/vue3-util","qx-util","cherry-markdown"],function(e){"use strict";var t,n,i,l,o,a,r,s,c,d,u,h,m,v,p;return{setters:[function(e){t=e.nextTick,n=e.ref,i=e.onBeforeUnmount,l=e.createVNode,o=e.resolveComponent,a=e.defineComponent,r=e.watch,s=e.onMounted,c=e.onUnmounted},function(e){d=e.useUIStore,u=e.getEditorEmits,h=e.getMarkDownProps,m=e.useNamespace},function(e){v=e.createUUID},function(e){p=e.default}],execute:function(){function f(e,t){return!(!e||1!==e.nodeType||e.nodeName!==t)}function b(e){const a=n(""),r=n([]),s=n();let c=null;const d=async e=>{var n;if(a.value=e,r.value=[e],await t(),s.value){const{container:e}=s.value.$refs;e&&(null==(n=e.children[0])||n.click())}},u=e=>{"Escape"!==e.key&&27!==e.keyCode||(e.stopPropagation(),e.preventDefault(),r.value=[],m())},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",u)},m=()=>{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",u)},v=e=>{const t=null==e?void 0:e.target;if(f(t,"IMG")&&t)return void d(t.src);const n=function(e){let t=e;for(;t;){if(t.classList.contains("cherry-previewer"))return null;const e=t.parentElement;if(f(t,"svg")&&e&&"mermaid"===e.dataset.type)return t;t=t.parentElement}return null}(t);n&&d(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 l=(new XMLSerializer).serializeToString(t),o=btoa(unescape(encodeURIComponent(l)));return"data:image/svg+xml;base64,".concat(o)}(n))};return i(()=>{c&&(c.removeEventListener("click",v),c=null),m()}),{renderImgPreview:()=>l(o("el-image"),{class:e.e("img-preview"),ref:s,"zoom-rate":1.1,src:a.value,"preview-src-list":r.value,"hide-on-click-modal":!0,onShow:h,fit:"cover"},null),onMDEditorCreated:e=>{var t,n;c=(null==(n=null==(t=null==e?void 0:e.previewer)?void 0:t.previewerBubble)?void 0:n.previewerDom)||null,null==c||c.addEventListener("click",v)}}}e("default",a({name:"IBizMarkDown",props:h(),emits:u(),setup(e,{emit:o,slots:a}){var u,h,f;const g=m("markdown"),w=e.controller,C=n("");let k=null;const y=v(),{onMDEditorCreated:M,renderImgPreview:z}=b(g),x=ibiz.util.file.getUploadHeaders(),I=n({...x}),E=n(""),A=(null==(u=null==w?void 0:w.editorParams)?void 0:u.customTheme)||(null==(h=null==w?void 0:w.editorParams)?void 0:h.customtheme),{UIStore:D}=d(),P=n(A||D.theme),T=n(!1);let U="default";w&&(null==(f=w.editorParams)?void 0:f.showmode)&&(U=w.editorParams.showmode);const S=n(!1),B=n("editOnly");let L=null,O=null,V=0;const N=n({}),R=n({}),H=n("pure");let q=!1;const[F,$]=function(e,n){const{props:i,isEditing:l,currentVal:o,emit:a}=n;let r=n.chatInstance;return[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,l)=>{l.stopPropagation(),l.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(),l=i.increment();ibiz.inLineAIUtil.showContextMenus(t.left,t.top+43,n,{zIndex:l,onClose:()=>{i.decrement()}})}})}}),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});r.create({containerOptions:{zIndex:s,...c},chatOptions:{caption:e.deACMode.logicName,context:{...e.context},params:{...e.params,srfactag:e.deACMode.codeName},appDataEntityId:t,...u,action:(e,t)=>{"backfill"===e&&(l.value?o.value=t.realcontent||"":a("change",t.realcontent))}}})}})]}(w,{props:e,chatInstance:undefined,isEditing:T,currentVal:C,emit:o});r(()=>e.data,e=>{if(e&&w){const t={...w.editorParams};t.uploadparams&&(t.uploadParams=JSON.parse(t.uploadparams));const n=ibiz.util.file.calcFileUpDownUrl(w.context,w.params,e,t);E.value=n.uploadUrl}},{immediate:!0,deep:!0});const _=n(),j=async(t,n)=>{const i=await ibiz.util.file.fileUpload(E.value,t,I.value),l=((e,t)=>{if(!w)return"";const n={...w.editorParams};return n.exportparams&&(n.exportParams=JSON.parse(n.exportparams)),t&&t.folder&&(n.osscat=t.folder),ibiz.util.file.calcFileUpDownUrl(w.context,w.params,e,n).downloadUrl})(e.data||{},i.fileid);let o=l.replace("%fileId%",i.fileid);if(ibiz.config.common.enableDownloadTicket&&w){const t=await ibiz.util.file.getDownloadTicket(w.context,w.params,e.data||{},{fileId:i.fileid},w.downloadTicketParams);t&&t.ticket&&(o=l.replace("%fileId%",t.ticket),n(o))}else n(o)},W=()=>null==k?void 0:k.getMarkdown(),J=e=>{q=!0,null==k||k.setMarkdown(e,!0)};r(()=>e.value,(e,t)=>{e!==t&&(C.value=e||"")},{immediate:!0}),r(C,(e,t)=>{const n=W();e!==t&&n!==e&&J(e)});const Y=e=>{"manual"!==U&&(o("change",W(),null==w?void 0:w.model.id,q),q=!1)},G=(e,t)=>({[e]:t}),X=(e,t="")=>{const n=document.createElement(e);return n.className=t,n},K=e=>X("i","ch-icon ch-icon-".concat(e)),Q=g.e("fullscreen"),Z=e=>{for(;e.firstChild;)e.removeChild(e.firstChild)},ee=()=>{if(k&&_.value){const e=k.editor.options.editorDom.parentElement;if(!e)return{};const t=e.classList,n=_.value.querySelector(".".concat(Q));return n?{parentElement:e,cherryClass:t,fullscreenNode:n}:{}}return{}},te=()=>{const{parentElement:e,cherryClass:t,fullscreenNode:n}=ee();e&&t&&n&&(Z(n),n.appendChild(K("fullscreen")),n.title=ibiz.i18n.t("editor.common.fullscreen"),t.remove("fullscreen"),null==e||e.blur(),e.setAttribute("tabindex","-1"))},ne=()=>{const{cherryClass:e}=ee();return null==e?void 0:e.contains("fullscreen")},ie=()=>{k&&_.value&&(ne()?(te(),k.toggleToc(H.value),S.value=!1):((()=>{const{parentElement:e,cherryClass:n,fullscreenNode:i}=ee();e&&n&&i&&(Z(i),i.appendChild(K("minscreen")),n.add("fullscreen"),i.title=ibiz.i18n.t("editor.common.minimize"),e.setAttribute("tabindex","-1"),t(()=>null==e?void 0:e.focus()))})(),H.value=k.toc.model,k.toggleToc("full"),S.value=!0))},le=e=>{e.stopPropagation(),"Escape"===e.key&&(e.preventDefault(),ne()&&(te(),k.toggleToc(H.value),S.value=!1))},oe=e=>{null==w||w.setCurrentEditorTheme(e)},ae=e=>{var t,n;const{info:i}=e;let l=!0;const o=i.ranges&&i.ranges[0];if(o){const{anchor:e,head:t}=o;l=w.isPositionBefore(e,t)}else l=!0;const a=null==(t=w.mdeditor)?void 0:t.editor.editor.getCursor("start"),r=null==(n=w.mdeditor)?void 0:n.editor.editor.getCursor("end");w.setCursorPos(a,r),w.setSelectionDirection(l)};r(()=>D.theme,e=>{P.value=A||e,null==k||k.setTheme(P.value),null==k||k.setCodeBlockTheme(P.value)});const re=()=>{T.value=!0,B.value="editOnly",null==k||k.switchModel(B.value)},se=()=>{T.value=!1,B.value="previewOnly",null==k||k.switchModel(B.value)},ce=()=>{J(C.value),se()},de=()=>{o("change",W(),null==w?void 0:w.model.id,q),q=!1,se()},ue=()=>{const e=document.getElementById(y);null==e||e.focus()};return s(()=>{var n;(e.disabled||e.readonly||"manual"===U)&&(B.value="previewOnly"),t(()=>{var t;const n=["bold","italic","underline","strikethrough","sub","sup","|","size","color"],i=["bold","italic","underline","strikethrough","|","color","header","|","list","image",{insert:["link","hr","br","code","formula","toc","table","line-table","bar-table"]},"settings","togglePreview"];w&&w.chatCompletion&&(i.unshift("AIChart"),n.unshift("AI")),k=new p({id:y,value:C.value,previewer:{enablePreviewerBubble:!(e.disabled||e.readonly)},themeSettings:{mainTheme:P.value,codeBlockTheme:P.value},fileUpload:j,emoji:{useUnicode:!0},header:{anchorStyle:"autonumber"},editor:{height:"100%",defaultModel:B.value,codemirror:{autofocus:!1}},toolbars:{toolbar:i,bubble:n,float:["h1","h2","h3","|","checklist","quote","quickTable","code"],customMenu:{AI:F,AIChart:$},sidebar:["theme","copy"],toolbarRight:[],toc:{updateLocationHash:!1,defaultModel:"pure",showAutoNumber:!0,position:"absolute",cssText:""}},callback:{afterChange:Y,beforeImageMounted:G},event:{changeMainTheme:oe,selectionChange:ae},engine:{syntax:{table:{enableChart:!1,externals:["echarts"]}}}}),k.toggleToc("pure"),k.setTheme(P.value),A&&(k.setTheme(A),k.setCodeBlockTheme(A));const l=X("span","".concat(Q," cherry-toolbar-button"));l.title=ibiz.i18n.t("editor.common.fullscreen"),l.onclick=ie,l.appendChild(K("fullscreen"));const o=e.disabled?k.editor.options.editorDom.parentElement:null==(t=k.editor.options.editorDom.parentElement)?void 0:t.querySelector(".cherry-toolbar>.toolbar-right");if(null==o||o.appendChild(l),null==w||w.setMDEditor(k),M(k),a.editorSwitchMenu&&window.ResizeObserver&&_.value){const e=_.value.querySelector(".cherry-toolbar");e&&(O=new ResizeObserver(e=>{var t;const n=null==(t=e[0])?void 0:t.contentRect.height;R.value=g.cssVarBlock({"toolbar-height":"".concat(n,"px")})}),O.observe(e))}}),(()=>{if(window.ResizeObserver&&_.value){const e={width:_.value.offsetWidth?"".concat(_.value.offsetWidth,"px"):"100%"};w&&"number"==typeof w.parent.model.height&&Object.assign(e,{height:"".concat(w.parent.model.height,"px")}),N.value=g.cssVarBlock(e),L=new ResizeObserver(e=>{const t=e[0].contentRect.width;if(t!==V){const n={width:"".concat(e[0].contentRect.width,"px")};w&&"number"==typeof w.parent.model.height&&Object.assign(n,{height:"".concat(w.parent.model.height,"px")}),N.value=g.cssVarBlock(n),V=t}}),L.observe(_.value)}})(),null==(n=_.value)||n.addEventListener("keydown",le.bind(this))}),i(()=>{var e;null==(e=_.value)||e.removeEventListener("keydown",le.bind(this))}),c(()=>{k=null,L&&L.disconnect(),O&&O.disconnect()}),{ns:g,currentVal:C,id:y,editor:k,markDownBox:_,headers:I,theme:P,defaultModel:B,cssVars:N,isEditing:T,showmode:U,getCherryHtml:()=>null==k?void 0:k.getHtml(),getCherryContent:W,setCherryContent:J,renderHeader:()=>{if("manual"===U&&!T.value)return l("div",{onClick:ue,class:[g.e("header"),g.is("fullscreen",S.value)]},[!e.disabled&&!e.readonly&&l("div",{class:g.em("header","edit"),onClick:re,title:ibiz.i18n.t("editor.markdown.edit")},[l("i",{class:"fa fa-edit","aria-hidden":"true"},null)]),l("div",{class:g.em("header","full"),onClick:ie},[S.value?l("i",{class:"fa fa-compress","aria-hidden":"true",title:ibiz.i18n.t("editor.html.reduce")},null):l("i",{class:"fa fa-expand","aria-hidden":"true",title:ibiz.i18n.t("editor.common.fullscreen")},null)])])},renderFooter:()=>{if("manual"===U&&T.value&&!e.disabled&&!e.readonly)return l("div",{onClick:ue,class:[g.e("footer"),g.is("fullscreen",S.value)]},[l("div",{class:g.em("footer","cancel"),onClick:ce},[ibiz.i18n.t("editor.common.cancel")]),l("div",{class:g.em("footer","save"),onClick:de},[ibiz.i18n.t("editor.common.confirm")])])},renderImgPreview:z,renderEditorSwitchMenu:()=>{var e;return l("div",{class:[g.b("menu"),g.is("fullscreen",S.value)],style:R.value},[null==(e=a.editorSwitchMenu)?void 0:e.call(a)])}}},render(){const e=!!this.$slots.editorSwitchMenu;return l("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)]},[e?this.renderEditorSwitchMenu():null,this.renderHeader(),this.renderFooter(),this.renderImgPreview(),l("div",{tabindex:"-1",id:this.id,style:this.cssVars,class:[this.ns.b("cherry"),this.ns.m("dark"===this.theme?"dark":"light")]},null)])}}))}}});
|