@ibiz-template/vue3-components 0.7.41-alpha.40 → 0.7.41-alpha.41

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 (66) hide show
  1. package/dist/ibiz-markdown-editor-DEV-iSvz.js +1 -0
  2. package/dist/index-Bv2fgePf.js +11 -0
  3. package/dist/{index-BewO9StC.js → index-CD2XM6M6.js} +1 -1
  4. package/dist/{index-ClxO69TM.js → index-CaWTEUU1.js} +1 -1
  5. package/dist/index.min.css +1 -1
  6. package/dist/index.system.min.js +1 -1
  7. package/dist/wang-editor-4cNAgOaJ.js +1 -0
  8. package/dist/{xlsx-util-Cg5zMYCC.js → xlsx-util-Dvg2kWh7.js} +1 -1
  9. package/es/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.controller.mjs +2 -1
  10. package/es/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.css +1 -1
  11. package/es/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.mjs +12 -2
  12. package/es/editor/code/monaco-editor/monaco-editor.mjs +41 -32
  13. package/es/editor/html/wang-editor/config/index.mjs +3 -0
  14. package/es/editor/html/wang-editor/config/toolbar.mjs +90 -0
  15. package/es/editor/html/wang-editor/constants/svg.mjs +8 -0
  16. package/es/editor/html/wang-editor/wang-editor.css +1 -1
  17. package/es/editor/html/wang-editor/wang-editor.mjs +52 -39
  18. package/es/editor/markdown/ibiz-markdown-editor/custom-menu.mjs +264 -2
  19. package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
  20. package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.mjs +38 -6
  21. package/es/editor/markdown/ibiz-markdown-editor/render-util.mjs +33 -4
  22. package/es/editor/text-box/input/input.mjs +41 -32
  23. package/es/index.mjs +1 -1
  24. package/es/locale/en/index.mjs +3 -1
  25. package/es/locale/zh-CN/index.mjs +3 -1
  26. package/es/util/ai-chat-util/ai-chat-util.mjs +216 -0
  27. package/es/util/app-util/app-util.mjs +20 -48
  28. package/es/util/index.mjs +1 -1
  29. package/es/util/inline-ai-util/inline-ai-textarea/icon.mjs +75 -1
  30. package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.css +1 -1
  31. package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.mjs +136 -43
  32. package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.mjs +130 -48
  33. package/es/util/inline-ai-util/inline-ai-util.mjs +2 -1
  34. package/es/web-app/main.mjs +2 -0
  35. package/lib/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.cjs +12 -2
  36. package/lib/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.controller.cjs +2 -1
  37. package/lib/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.css +1 -1
  38. package/lib/editor/code/monaco-editor/monaco-editor.cjs +40 -31
  39. package/lib/editor/html/wang-editor/config/index.cjs +7 -0
  40. package/lib/editor/html/wang-editor/config/toolbar.cjs +92 -0
  41. package/lib/editor/html/wang-editor/constants/svg.cjs +14 -0
  42. package/lib/editor/html/wang-editor/wang-editor.cjs +51 -38
  43. package/lib/editor/html/wang-editor/wang-editor.css +1 -1
  44. package/lib/editor/markdown/ibiz-markdown-editor/custom-menu.cjs +264 -2
  45. package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.cjs +38 -6
  46. package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
  47. package/lib/editor/markdown/ibiz-markdown-editor/render-util.cjs +33 -4
  48. package/lib/editor/text-box/input/input.cjs +40 -31
  49. package/lib/index.cjs +2 -2
  50. package/lib/locale/en/index.cjs +3 -1
  51. package/lib/locale/zh-CN/index.cjs +3 -1
  52. package/lib/util/ai-chat-util/ai-chat-util.cjs +218 -0
  53. package/lib/util/app-util/app-util.cjs +19 -47
  54. package/lib/util/index.cjs +2 -2
  55. package/lib/util/inline-ai-util/inline-ai-textarea/icon.cjs +78 -0
  56. package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.cjs +129 -47
  57. package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.css +1 -1
  58. package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.cjs +135 -42
  59. package/lib/util/inline-ai-util/inline-ai-util.cjs +2 -1
  60. package/lib/web-app/main.cjs +2 -0
  61. package/package.json +5 -5
  62. package/dist/ibiz-markdown-editor-CxFS8frQ.js +0 -1
  63. package/dist/index-2eZnbrr4.js +0 -11
  64. package/dist/wang-editor-BPl509oX.js +0 -1
  65. package/es/util/ai-util/ai-util.mjs +0 -68
  66. package/lib/util/ai-util/ai-util.cjs +0 -71
@@ -1,8 +1,14 @@
1
1
  import Cherry from 'cherry-markdown';
2
2
  import { nextTick } from 'vue';
3
+ import { createUUID } from 'qx-util';
4
+ import { useUIStore } from '@ibiz-template/vue3-util';
5
+ import { IBizContext } from '@ibiz-template/core';
6
+ import { UIActionUtil, SysUIActionTag } from '@ibiz-template/runtime';
3
7
 
4
8
  "use strict";
5
- function initCustomMenu(c) {
9
+ function initCustomMenu(c, opts) {
10
+ const { props, isEditing, currentVal, emit } = opts;
11
+ let chatInstance = opts.chatInstance;
6
12
  const AIMenu = Cherry.createMenuHook("AI", {
7
13
  icon: {
8
14
  type: "svg",
@@ -37,7 +43,263 @@ function initCustomMenu(c) {
37
43
  });
38
44
  }
39
45
  });
40
- return [AIMenu];
46
+ const AIChart = Cherry.createMenuHook("AIChart", {
47
+ icon: {
48
+ type: "svg",
49
+ 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\u57FA\u7840/1.icon\u56FE\u6807/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\u5F62\u72B6\u7ED3\u5408'\n ></path>\n </g>\n </svg>\n "
50
+ },
51
+ onClick: async () => {
52
+ const appDataEntityId = c.model.appDataEntityId;
53
+ if (!appDataEntityId || !c.deACMode)
54
+ return;
55
+ const aiAgentlist = await ibiz.aiChatUtil.getAIAgentList(
56
+ c.context,
57
+ c.params
58
+ );
59
+ const {
60
+ contentToolbarItems,
61
+ footerToolbarItems,
62
+ questionToolbarItems,
63
+ otherToolbarItems
64
+ } = ibiz.aiChatUtil.calcAiToolbarItemsByAc(c.deACMode);
65
+ const { containerOptions, chatOptions } = ibiz.aiChatUtil.getEditorExAIChatParams(
66
+ c.editorParams,
67
+ c.context,
68
+ c.params,
69
+ props.data
70
+ );
71
+ const { zIndex } = useUIStore();
72
+ const containerZIndex = zIndex.increment();
73
+ chatInstance = await ibiz.aiChatUtil.getAIChat();
74
+ let id = "";
75
+ let abortController;
76
+ chatInstance.create({
77
+ containerOptions: {
78
+ zIndex: containerZIndex,
79
+ ...containerOptions
80
+ },
81
+ chatOptions: {
82
+ caption: c.deACMode.logicName,
83
+ context: { ...c.context },
84
+ params: { ...c.params, srfactag: c.deACMode.codeName },
85
+ appDataEntityId,
86
+ contentToolbarItems,
87
+ footerToolbarItems,
88
+ questionToolbarItems,
89
+ otherToolbarItems,
90
+ aiAgentlist,
91
+ ...chatOptions,
92
+ question: async (aiChat, ctx, param, other, arr, sessionid, srfaiagent, srfmode) => {
93
+ id = createUUID();
94
+ abortController = new AbortController();
95
+ const deService = await ibiz.hub.getApp(ctx.srfappid).deService.getService(ctx, other.appDataEntityId);
96
+ try {
97
+ const questionRequestData = {
98
+ messages: arr,
99
+ sessionid
100
+ };
101
+ if (srfaiagent) {
102
+ questionRequestData.srfaiagent = srfaiagent;
103
+ }
104
+ if (srfmode) {
105
+ questionRequestData.mode = srfmode;
106
+ }
107
+ await deService.aiChatSse(
108
+ (msg) => {
109
+ if (msg.actionstate === 20 && msg.actionresult) {
110
+ aiChat.addMessage({
111
+ messageid: id,
112
+ state: msg.actionstate,
113
+ type: "DEFAULT",
114
+ role: "ASSISTANT",
115
+ content: msg.actionresult
116
+ });
117
+ } else if (msg.actionstate === 30 && msg.actionresult) {
118
+ const result = JSON.parse(msg.actionresult);
119
+ const choices = result.choices;
120
+ if (choices && choices.length > 0) {
121
+ aiChat.replaceMessage({
122
+ messageid: id,
123
+ state: msg.actionstate,
124
+ type: "DEFAULT",
125
+ role: "ASSISTANT",
126
+ content: choices[0].content || ""
127
+ });
128
+ }
129
+ } else if (msg.actionstate === 40) {
130
+ aiChat.replaceMessage({
131
+ messageid: id,
132
+ state: msg.actionstate,
133
+ type: "ERROR",
134
+ role: "ASSISTANT",
135
+ content: msg.actionresult
136
+ });
137
+ }
138
+ },
139
+ abortController,
140
+ ctx,
141
+ param,
142
+ { ...questionRequestData }
143
+ );
144
+ } catch (error) {
145
+ aiChat.replaceMessage({
146
+ messageid: id,
147
+ state: 40,
148
+ type: "ERROR",
149
+ role: "ASSISTANT",
150
+ content: error.message || ibiz.i18n.t("app.aiError")
151
+ });
152
+ abortController == null ? void 0 : abortController.abort();
153
+ } finally {
154
+ aiChat.completeMessage(id, true);
155
+ return true;
156
+ }
157
+ },
158
+ abortQuestion: async (aiChat) => {
159
+ abortController == null ? void 0 : abortController.abort();
160
+ await aiChat.stopMessage({
161
+ messageid: id,
162
+ state: 30,
163
+ type: "DEFAULT",
164
+ role: "ASSISTANT",
165
+ content: ""
166
+ });
167
+ await aiChat.completeMessage(id, true);
168
+ },
169
+ action: (action, message) => {
170
+ if (action === "backfill") {
171
+ if (isEditing.value) {
172
+ currentVal.value = message.realcontent || "";
173
+ } else {
174
+ emit("change", message.realcontent);
175
+ }
176
+ }
177
+ },
178
+ history: async (ctx, param, other) => {
179
+ const deService = await ibiz.hub.getApp(ctx.srfappid).deService.getService(ctx, other.appDataEntityId);
180
+ const historyRequestData = {};
181
+ if (other.appendCurData) {
182
+ Object.assign(historyRequestData, {
183
+ ...other.appendCurData
184
+ });
185
+ }
186
+ if (other.srfaiagent) {
187
+ Object.assign(historyRequestData, {
188
+ srfaiagent: other.srfaiagent
189
+ });
190
+ }
191
+ if (other.srfmode) {
192
+ Object.assign(historyRequestData, {
193
+ mode: other.srfmode
194
+ });
195
+ }
196
+ const result = await deService.aiChatHistory(
197
+ ctx,
198
+ param,
199
+ historyRequestData
200
+ );
201
+ if (result.data && Array.isArray(result.data)) {
202
+ let preMsg;
203
+ result.data.forEach((item) => {
204
+ if (item.role === "TOOL") {
205
+ if (preMsg && item.content) {
206
+ chatInstance.aiChat.updateRecommendPrompt(
207
+ preMsg,
208
+ item.content
209
+ );
210
+ }
211
+ } else {
212
+ const msg = {
213
+ messageid: createUUID(),
214
+ state: 30,
215
+ type: "DEFAULT",
216
+ role: item.role,
217
+ content: item.content,
218
+ completed: true
219
+ };
220
+ preMsg = msg;
221
+ chatInstance.aiChat.addMessage(msg);
222
+ }
223
+ });
224
+ }
225
+ return true;
226
+ },
227
+ recommendPrompt: async (ctx, param, other) => {
228
+ const deService = await ibiz.hub.getApp(ctx.srfappid).deService.getService(ctx, other.appDataEntityId);
229
+ const result = await deService.aiChatRecommendPrompt(
230
+ ctx,
231
+ param,
232
+ other.message
233
+ );
234
+ if (result.ok && result.data) {
235
+ const choices = result.data.choices;
236
+ if (choices && choices.length > 0) {
237
+ return choices[0];
238
+ }
239
+ return null;
240
+ }
241
+ return null;
242
+ },
243
+ uploader: {
244
+ onUpload: async (file, reportProgress, options) => {
245
+ const fileMeata = ibiz.util.file.calcFileUpDownUrl(
246
+ (options == null ? void 0 : options.context) || c.context,
247
+ (options == null ? void 0 : options.params) || c.params,
248
+ {}
249
+ );
250
+ const fielUploadHeaders = ibiz.util.file.getUploadHeaders();
251
+ const formData = new FormData();
252
+ formData.append("file", file);
253
+ const res = await ibiz.net.axios({
254
+ url: fileMeata.uploadUrl,
255
+ method: "post",
256
+ headers: fielUploadHeaders,
257
+ data: formData,
258
+ onUploadProgress: (progressEvent) => {
259
+ const percent = progressEvent.loaded / progressEvent.total * 100;
260
+ reportProgress(percent);
261
+ }
262
+ });
263
+ return res.data;
264
+ }
265
+ },
266
+ extendToolbarClick: async (event, source, context, params, data) => {
267
+ var _a, _b;
268
+ const result = await UIActionUtil.exec(
269
+ source.id,
270
+ {
271
+ view: c.view,
272
+ ctrl: c.ctrl,
273
+ context: IBizContext.create(context),
274
+ params,
275
+ data: [data],
276
+ event
277
+ },
278
+ source.appId
279
+ );
280
+ if (result.closeView) {
281
+ c.view.closeView({ ok: true });
282
+ } else if (result.refresh) {
283
+ switch (result.refreshMode) {
284
+ case 1:
285
+ c.view.callUIAction(SysUIActionTag.REFRESH);
286
+ break;
287
+ case 2:
288
+ (_a = c.view.parentView) == null ? void 0 : _a.callUIAction(SysUIActionTag.REFRESH);
289
+ break;
290
+ case 3:
291
+ (_b = c.view.getTopView()) == null ? void 0 : _b.callUIAction(SysUIActionTag.REFRESH);
292
+ break;
293
+ default:
294
+ }
295
+ }
296
+ return result;
297
+ }
298
+ }
299
+ });
300
+ }
301
+ });
302
+ return [AIMenu, AIChart];
41
303
  }
42
304
 
43
305
  export { initCustomMenu };
@@ -1 +1 @@
1
- .ibiz-markdown{--ibiz-markdown-width:100%;--ibiz-markdown-color-manual-toolbar-bg-save:var(--ibiz-color-primary);--ibiz-markdown-color-manual-toolbar-text-save:var(--ibiz-color-primary-active-text);--ibiz-markdown-color-manual-toolbar-text-cancel:var(--ibiz-color-text-1);--ibiz-markdown-color-manual-toolbar-text-cancel-hover:var(--ibiz-color-primary);--ibiz-markdown-color-dark-scrollbar-thumb-dark:rgb(var(--ibiz-grey-4));--ibiz-markdown-color-light-scrollbar-thumb-dark:rgb(var(--ibiz-grey-4));--ibiz-markdown-color-scrollbar-thumb-dark-hover:rgba(var(--ibiz-grey-4), 0.5);--ibiz-markdown-color-dark-toc-text:var(--ibiz-color-fill-0);--ibiz-markdown-color-toc-header-text:var(--ibiz-color-text-0);--ibiz-markdown-color-dark-mardown-border:rgb(var(--ibiz-grey-2));--ibiz-markdown-spacing-manual-toolbar-height:32px;--ibiz-markdown-spacing-manual-toolbar-gap:var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-item-padding:0 var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-margin:var(--ibiz-spacing-base-tight) var(--ibiz-spacing-tight) 0 0;--ibiz-markdown-spacing-manual-toolbar-fullscreen-height:var(--ibiz-height-control-default);--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding:0 var(--ibiz-spacing-extra-loose);--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header:var(--ibiz-spacing-super-loose);--ibiz-markdown-height-manual-toolbar-height:var(--ibiz-height-control-default);--ibiz-markdown-border-radius-manual-toolbar-item:var(--ibiz-border-radius-small);--ibiz-markdown-border-manual-toolbar-fullscreen-footer:1px solid var(--ibiz-color-border);--ibiz-markdown-img-preview-top:-32px;--ibiz-markdown-img-preview-right:-36px;--ibiz-markdown-img-preview-width:32px;--ibiz-markdown-img-preview-height:32px}.ibiz-markdown__header{display:flex;flex-shrink:0;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height)}.ibiz-markdown__header--edit{cursor:pointer}.ibiz-markdown__header--full{cursor:pointer}.ibiz-markdown__header.is-fullscreen{position:fixed;top:0;right:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color)}.ibiz-markdown__header.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{top:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header))}.ibiz-markdown__footer{display:flex;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height);margin:var(--ibiz-markdown-spacing-manual-toolbar-margin)}.ibiz-markdown__footer--save{height:var(--ibiz-markdown-height-manual-toolbar-height);padding:var(--ibiz-markdown-spacing-manual-toolbar-item-padding);line-height:var(--ibiz-markdown-height-manual-toolbar-height);color:var(--ibiz-markdown-color-manual-toolbar-text-save);text-align:center;cursor:pointer;background-color:var(--ibiz-markdown-color-manual-toolbar-bg-save);border-radius:var(--ibiz-markdown-border-radius-manual-toolbar-item)}.ibiz-markdown__footer--cancel{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel);cursor:pointer}.ibiz-markdown__footer--cancel:hover{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel-hover)}.ibiz-markdown__footer.is-fullscreen{position:fixed;right:0;bottom:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2);padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color);border-top:var(--ibiz-markdown-border-manual-toolbar-fullscreen-footer)}.ibiz-markdown__footer.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2)}.ibiz-markdown__img-preview.el-image{position:absolute;height:0}.ibiz-markdown__img-preview .el-image-viewer__wrapper{width:90%;height:90%;margin:auto}.ibiz-markdown__img-preview .el-image-viewer__mask{position:fixed;width:100vw;height:100vh;cursor:zoom-out;opacity:.7}.ibiz-markdown__img-preview .el-image-viewer__close{top:var(--ibiz-markdown-img-preview-top);right:var(--ibiz-markdown-img-preview-right);width:var(--ibiz-markdown-img-preview-width);height:var(--ibiz-markdown-img-preview-height)}.ibiz-markdown .ibiz-markdown-cherry{width:var(--ibiz-markdown-width);outline:0}.ibiz-markdown .ibiz-markdown-cherry .cherry{width:100%;border:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-toolbar{box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-editor{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer img{cursor:zoom-in}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-sidebar{border-left:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown.is-disabled .cherry{min-height:auto}.ibiz-markdown.is-disabled .ibiz-markdown__fullscreen{position:absolute;top:8px;right:12px;z-index:98;font-size:var(--ibiz-font-size-regular);line-height:2.8}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen{color:var(--ibiz-color-text-0)}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen:hover{background-color:var(--ibiz-color-bg-3)}.ibiz-markdown.is-manual{display:flex;flex-direction:column}.ibiz-markdown.is-manual .ibiz-markdown-cherry{flex-grow:1;height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-height))!important}.ibiz-markdown.is-manual.is-editing{flex-direction:column-reverse}.ibiz-markdown.is-manual .ibiz-markdown-menu{display:none}.ibiz-markdown.is-manual.is-editing .ibiz-markdown-menu{display:block}.ibiz-markdown.is-show-editor-switch-menu .ibiz-composite-form-item-ex-menu{--ibiz-composite-form-item-ex-menu-height:48px;--ibiz-composite-form-item-ex-menu-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-tight) 0}.ibiz-markdown.is-show-editor-switch-menu .cherry-toolbar{padding-right:var(--ibiz-composite-form-item-ex-menu-width)}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu{position:absolute;top:0;right:0}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu.is-fullscreen{position:fixed;z-index:1000}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu .ibiz-composite-form-item-ex-menu{position:relative}.ibiz-markdown .cherry-preview--full{border-left:none}.ibiz-markdown .theme__dark,.ibiz-markdown .theme__light{color:var(--ibiz-form-item-text-color)}.ibiz-markdown .cherry-markdown h1 a::before,.ibiz-markdown .cherry-markdown h2 a::before,.ibiz-markdown .cherry-markdown h3 a::before,.ibiz-markdown .cherry-markdown h4 a::before,.ibiz-markdown .cherry-markdown h5 a::before,.ibiz-markdown .cherry-markdown h6 a::before{display:none}.ibiz-markdown .cherry.fullscreen{z-index:999}.ibiz-markdown--light .theme__green .cherry-toolbar,.ibiz-markdown--light .theme__light .cherry-toolbar,.ibiz-markdown--light .theme__violet .cherry-toolbar{background-color:var(--ibiz-color-bg-0)}.ibiz-markdown--light .theme__dark.cherry .cherry-flex-toc{color:var(--ibiz-markdown-color-toc-header-text)}.ibiz-markdown--light .theme__dark.cherry ::-webkit-scrollbar-thumb{background:var(--ibiz-markdown-color-light-scrollbar-thumb-dark)}.ibiz-markdown--light .theme__dark.cherry ::-webkit-scrollbar-thumb:hover{background:var(--ibiz-markdown-color-scrollbar-thumb-dark-hover)}.ibiz-markdown--dark.ibiz-markdown-cherry .cherry{border:1px solid var(--ibiz-markdown-color-dark-mardown-border)}.ibiz-markdown--dark .theme__green .cherry-toolbar,.ibiz-markdown--dark .theme__light .cherry-toolbar,.ibiz-markdown--dark .theme__violet .cherry-toolbar{background-color:var(--ibiz-color-shadow)}.ibiz-markdown--dark .theme__dark.cherry .cherry-toc-head{color:var(--ibiz-markdown-color-dark-toc-text)}.ibiz-markdown--dark .theme__dark.cherry ::-webkit-scrollbar-thumb{background:var(--ibiz-markdown-color-dark-scrollbar-thumb-dark)}.ibiz-markdown--dark .theme__dark.cherry ::-webkit-scrollbar-thumb:hover{background:var(--ibiz-markdown-color-scrollbar-thumb-dark-hover)}
1
+ .ibiz-markdown{--ibiz-markdown-width:100%;--ibiz-markdown-color-manual-toolbar-bg-save:var(--ibiz-color-primary);--ibiz-markdown-color-manual-toolbar-text-save:var(--ibiz-color-primary-active-text);--ibiz-markdown-color-manual-toolbar-text-cancel:var(--ibiz-color-text-1);--ibiz-markdown-color-manual-toolbar-text-cancel-hover:var(--ibiz-color-primary);--ibiz-markdown-color-dark-scrollbar-thumb-dark:rgb(var(--ibiz-grey-4));--ibiz-markdown-color-light-scrollbar-thumb-dark:rgb(var(--ibiz-grey-4));--ibiz-markdown-color-scrollbar-thumb-dark-hover:rgba(var(--ibiz-grey-4), 0.5);--ibiz-markdown-color-dark-toc-text:var(--ibiz-color-fill-0);--ibiz-markdown-color-toc-header-text:var(--ibiz-color-text-0);--ibiz-markdown-color-dark-mardown-border:rgb(var(--ibiz-grey-2));--ibiz-markdown-spacing-manual-toolbar-height:32px;--ibiz-markdown-spacing-manual-toolbar-gap:var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-item-padding:0 var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-margin:var(--ibiz-spacing-base-tight) var(--ibiz-spacing-tight) 0 0;--ibiz-markdown-spacing-manual-toolbar-fullscreen-height:var(--ibiz-height-control-default);--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding:0 var(--ibiz-spacing-extra-loose);--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header:var(--ibiz-spacing-super-loose);--ibiz-markdown-height-manual-toolbar-height:var(--ibiz-height-control-default);--ibiz-markdown-border-radius-manual-toolbar-item:var(--ibiz-border-radius-small);--ibiz-markdown-border-manual-toolbar-fullscreen-footer:1px solid var(--ibiz-color-border);--ibiz-markdown-img-preview-top:-32px;--ibiz-markdown-img-preview-right:-36px;--ibiz-markdown-img-preview-width:32px;--ibiz-markdown-img-preview-height:32px}.ibiz-markdown__header{display:flex;flex-shrink:0;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height)}.ibiz-markdown__header--edit{cursor:pointer}.ibiz-markdown__header--full{cursor:pointer}.ibiz-markdown__header.is-fullscreen{position:fixed;top:0;right:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color)}.ibiz-markdown__header.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{top:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header))}.ibiz-markdown__footer{display:flex;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height);margin:var(--ibiz-markdown-spacing-manual-toolbar-margin)}.ibiz-markdown__footer--save{height:var(--ibiz-markdown-height-manual-toolbar-height);padding:var(--ibiz-markdown-spacing-manual-toolbar-item-padding);line-height:var(--ibiz-markdown-height-manual-toolbar-height);color:var(--ibiz-markdown-color-manual-toolbar-text-save);text-align:center;cursor:pointer;background-color:var(--ibiz-markdown-color-manual-toolbar-bg-save);border-radius:var(--ibiz-markdown-border-radius-manual-toolbar-item)}.ibiz-markdown__footer--cancel{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel);cursor:pointer}.ibiz-markdown__footer--cancel:hover{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel-hover)}.ibiz-markdown__footer.is-fullscreen{position:fixed;right:0;bottom:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2);padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color);border-top:var(--ibiz-markdown-border-manual-toolbar-fullscreen-footer)}.ibiz-markdown__footer.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2)}.ibiz-markdown__img-preview.el-image{position:absolute;height:0}.ibiz-markdown__img-preview .el-image-viewer__wrapper{width:90%;height:90%;margin:auto}.ibiz-markdown__img-preview .el-image-viewer__mask{position:fixed;width:100vw;height:100vh;cursor:zoom-out;opacity:.7}.ibiz-markdown__img-preview .el-image-viewer__close{top:var(--ibiz-markdown-img-preview-top);right:var(--ibiz-markdown-img-preview-right);width:var(--ibiz-markdown-img-preview-width);height:var(--ibiz-markdown-img-preview-height)}.ibiz-markdown .ibiz-markdown-cherry{width:var(--ibiz-markdown-width);outline:0}.ibiz-markdown .ibiz-markdown-cherry .cherry{width:100%;border:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-toolbar{box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-editor{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer img{cursor:zoom-in}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-sidebar{border-left:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown.is-disabled .cherry{min-height:auto}.ibiz-markdown.is-disabled .ibiz-markdown__fullscreen{position:absolute;top:8px;right:12px;z-index:98;font-size:var(--ibiz-font-size-regular);line-height:2.8}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen{color:var(--ibiz-color-text-0)}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen:hover{background-color:var(--ibiz-color-bg-3)}.ibiz-markdown.is-manual{display:flex;flex-direction:column}.ibiz-markdown.is-manual .ibiz-markdown-cherry{flex-grow:1;height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-height))!important}.ibiz-markdown.is-manual.is-editing{flex-direction:column-reverse}.ibiz-markdown.is-manual .ibiz-markdown-menu{display:none}.ibiz-markdown.is-manual.is-editing .ibiz-markdown-menu{display:block}.ibiz-markdown.is-show-editor-switch-menu .ibiz-composite-form-item-ex-menu{--ibiz-composite-form-item-ex-menu-height:47px;--ibiz-composite-form-item-ex-menu-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-tight) 0;max-height:100%}.ibiz-markdown.is-show-editor-switch-menu .cherry-toolbar{padding-right:calc(var(--ibiz-composite-form-item-ex-menu-width) + 36px)}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu{position:absolute;top:1px;right:37px;z-index:var(--ibiz-composite-form-item-ex-menu-z-index);display:flex;align-items:center;height:calc(var(--ibiz-markdown-toolbar-height) - 1px);background:var(--ibiz-composite-form-item-ex-menu-bg-color);border-right:1px solid var(--ibiz-color-border);border-left:1px solid var(--ibiz-color-border)}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu.is-fullscreen{position:fixed;z-index:1000}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu .ibiz-composite-form-item-ex-menu{position:relative}.ibiz-markdown .cherry-preview--full{border-left:none}.ibiz-markdown .theme__dark,.ibiz-markdown .theme__light{color:var(--ibiz-form-item-text-color)}.ibiz-markdown .cherry-markdown h1 a::before,.ibiz-markdown .cherry-markdown h2 a::before,.ibiz-markdown .cherry-markdown h3 a::before,.ibiz-markdown .cherry-markdown h4 a::before,.ibiz-markdown .cherry-markdown h5 a::before,.ibiz-markdown .cherry-markdown h6 a::before{display:none}.ibiz-markdown .cherry.fullscreen{z-index:999}.ibiz-markdown--light .theme__green .cherry-toolbar,.ibiz-markdown--light .theme__light .cherry-toolbar,.ibiz-markdown--light .theme__violet .cherry-toolbar{background-color:var(--ibiz-color-bg-0)}.ibiz-markdown--light .theme__dark.cherry .cherry-flex-toc{color:var(--ibiz-markdown-color-toc-header-text)}.ibiz-markdown--light .theme__dark.cherry ::-webkit-scrollbar-thumb{background:var(--ibiz-markdown-color-light-scrollbar-thumb-dark)}.ibiz-markdown--light .theme__dark.cherry ::-webkit-scrollbar-thumb:hover{background:var(--ibiz-markdown-color-scrollbar-thumb-dark-hover)}.ibiz-markdown--dark.ibiz-markdown-cherry .cherry{border:1px solid var(--ibiz-markdown-color-dark-mardown-border)}.ibiz-markdown--dark .theme__green .cherry-toolbar,.ibiz-markdown--dark .theme__light .cherry-toolbar,.ibiz-markdown--dark .theme__violet .cherry-toolbar{background-color:var(--ibiz-color-shadow)}.ibiz-markdown--dark .theme__dark.cherry .cherry-toc-head{color:var(--ibiz-markdown-color-dark-toc-text)}.ibiz-markdown--dark .theme__dark.cherry ::-webkit-scrollbar-thumb{background:var(--ibiz-markdown-color-dark-scrollbar-thumb-dark)}.ibiz-markdown--dark .theme__dark.cherry ::-webkit-scrollbar-thumb:hover{background:var(--ibiz-markdown-color-scrollbar-thumb-dark-hover)}
@@ -21,7 +21,6 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
21
21
  const currentVal = ref("");
22
22
  let editor = null;
23
23
  const id = createUUID();
24
- const [AIMenu] = initCustomMenu(c);
25
24
  const {
26
25
  onMDEditorCreated,
27
26
  renderImgPreview
@@ -44,10 +43,20 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
44
43
  const isFullScreen = ref(false);
45
44
  const defaultModel = ref("editOnly");
46
45
  let resizeObserver = null;
46
+ let toolbarResizeObserver = null;
47
47
  let lastMarkDownWidth = 0;
48
48
  const cssVars = ref({});
49
+ const toolbarCssVars = ref({});
49
50
  const lastDirectoryState = ref("full");
50
51
  let isIgnoreChange = false;
52
+ let chatInstance;
53
+ const [AIMenu, AIChart] = initCustomMenu(c, {
54
+ props,
55
+ chatInstance,
56
+ isEditing,
57
+ currentVal,
58
+ emit
59
+ });
51
60
  watch(() => props.data, (newVal) => {
52
61
  if (newVal && c) {
53
62
  const editorParams = {
@@ -260,7 +269,11 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
260
269
  nextTick(() => {
261
270
  var _a2;
262
271
  const bubble = ["bold", "italic", "underline", "strikethrough", "sub", "sup", "|", "size", "color"];
272
+ const toolbar = ["bold", "italic", "underline", "strikethrough", "|", "color", "header", "|", "list", "image", {
273
+ insert: ["link", "hr", "br", "code", "formula", "toc", "table", "line-table", "bar-table"]
274
+ }, "settings", "togglePreview"];
263
275
  if (c && c.chatCompletion) {
276
+ toolbar.unshift("AIChart");
264
277
  bubble.unshift("AI");
265
278
  }
266
279
  editor = new Cherry({
@@ -296,13 +309,12 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
296
309
  }
297
310
  },
298
311
  toolbars: {
299
- toolbar: ["bold", "italic", "underline", "strikethrough", "|", "color", "header", "|", "list", "image", {
300
- insert: ["link", "hr", "br", "code", "formula", "toc", "table", "line-table", "bar-table"]
301
- }, "settings", "togglePreview"],
312
+ toolbar,
302
313
  bubble,
303
314
  float: ["h1", "h2", "h3", "|", "checklist", "quote", "quickTable", "code"],
304
315
  customMenu: {
305
- AI: AIMenu
316
+ AI: AIMenu,
317
+ AIChart
306
318
  },
307
319
  // 定义侧边栏,默认为空
308
320
  sidebar: ["theme", "copy"],
@@ -352,6 +364,19 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
352
364
  parentElement == null ? void 0 : parentElement.appendChild(span);
353
365
  c == null ? void 0 : c.setMDEditor(editor);
354
366
  onMDEditorCreated(editor);
367
+ if (slots.editorSwitchMenu && window.ResizeObserver && markDownBox.value) {
368
+ const cherryToolbar = markDownBox.value.querySelector(".cherry-toolbar");
369
+ if (cherryToolbar) {
370
+ toolbarResizeObserver = new ResizeObserver((entries) => {
371
+ var _a3;
372
+ const height = (_a3 = entries[0]) == null ? void 0 : _a3.contentRect.height;
373
+ toolbarCssVars.value = ns.cssVarBlock({
374
+ "toolbar-height": "".concat(height, "px")
375
+ });
376
+ });
377
+ toolbarResizeObserver.observe(cherryToolbar);
378
+ }
379
+ }
355
380
  });
356
381
  };
357
382
  watch(() => UIStore.theme, (newVal) => {
@@ -454,7 +479,8 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
454
479
  const renderEditorSwitchMenu = () => {
455
480
  var _a2;
456
481
  return createVNode("div", {
457
- "class": [ns.b("menu"), ns.is("fullscreen", isFullScreen.value)]
482
+ "class": [ns.b("menu"), ns.is("fullscreen", isFullScreen.value)],
483
+ "style": toolbarCssVars.value
458
484
  }, [(_a2 = slots.editorSwitchMenu) == null ? void 0 : _a2.call(slots)]);
459
485
  };
460
486
  onMounted(() => {
@@ -472,6 +498,12 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
472
498
  if (resizeObserver) {
473
499
  resizeObserver.disconnect();
474
500
  }
501
+ if (toolbarResizeObserver) {
502
+ toolbarResizeObserver.disconnect();
503
+ }
504
+ if (chatInstance && chatInstance.close) {
505
+ chatInstance.close();
506
+ }
475
507
  });
476
508
  return {
477
509
  ns,
@@ -4,6 +4,31 @@ import { ref, nextTick, createVNode, resolveComponent, onBeforeUnmount } from 'v
4
4
  function isElement(element, nodeName) {
5
5
  return !!(element && element.nodeType === 1 && element.nodeName === nodeName);
6
6
  }
7
+ function getMermaidSvg(element) {
8
+ let current = element;
9
+ while (current) {
10
+ if (current.classList.contains("cherry-previewer")) {
11
+ return null;
12
+ }
13
+ const parent = current.parentElement;
14
+ if (isElement(current, "svg") && parent && parent.dataset.type === "mermaid") {
15
+ return current;
16
+ }
17
+ current = current.parentElement;
18
+ }
19
+ return null;
20
+ }
21
+ function svgToBase64(svgElement) {
22
+ const clonedSvg = svgElement.cloneNode(true);
23
+ const width = svgElement.width.baseVal.value || svgElement.clientWidth;
24
+ const height = svgElement.height.baseVal.value || svgElement.clientHeight;
25
+ clonedSvg.setAttribute("width", width);
26
+ clonedSvg.setAttribute("height", height);
27
+ clonedSvg.style.backgroundColor = "white";
28
+ const svgString = new XMLSerializer().serializeToString(clonedSvg);
29
+ const base64 = btoa(unescape(encodeURIComponent(svgString)));
30
+ return "data:image/svg+xml;base64,".concat(base64);
31
+ }
7
32
  function useImgPreviewRender(ns) {
8
33
  const imgPreviewUrl = ref("");
9
34
  const imgPreviewUrlList = ref([]);
@@ -49,10 +74,14 @@ function useImgPreviewRender(ns) {
49
74
  imgViewerWrapper == null ? void 0 : imgViewerWrapper.removeEventListener("keydown", handleKeyPress);
50
75
  };
51
76
  const handlePreviewerImgClick = (event) => {
52
- var _a;
53
- const imgUrl = (_a = event == null ? void 0 : event.target) == null ? void 0 : _a.src;
54
- if (isElement(event == null ? void 0 : event.target, "IMG") && imgUrl) {
55
- openImgPreview(imgUrl);
77
+ const target = event == null ? void 0 : event.target;
78
+ if (isElement(target, "IMG") && target) {
79
+ openImgPreview(target.src);
80
+ return;
81
+ }
82
+ const mermaidSvg = getMermaidSvg(target);
83
+ if (mermaidSvg) {
84
+ openImgPreview(svgToBase64(mermaidSvg));
56
85
  }
57
86
  };
58
87
  const renderImgPreview = () => {
@@ -2,11 +2,9 @@ import { isVNode, defineComponent, createVNode, resolveComponent, mergeProps, re
2
2
  import { debounce } from 'lodash-es';
3
3
  import { useNamespace, useUIStore, useCodeListListen, getEditorEmits, getInputProps } from '@ibiz-template/vue3-util';
4
4
  import { UIActionUtil, SysUIActionTag } from '@ibiz-template/runtime';
5
- import { isEmoji, base64ToStr, IBizContext, StringUtil } from '@ibiz-template/core';
5
+ import { isEmoji, base64ToStr, IBizContext } from '@ibiz-template/core';
6
6
  import { createUUID } from 'qx-util';
7
- import '../../../util/index.mjs';
8
7
  import './input.css';
9
- import { calcAiToolbarItemsByAc } from '../../../util/ai-util/ai-util.mjs';
10
8
 
11
9
  "use strict";
12
10
  function _isSlot(s) {
@@ -30,7 +28,6 @@ const IBizInput = /* @__PURE__ */ defineComponent({
30
28
  if (editorModel.editorType === "TEXTAREA_10") {
31
29
  rows.value = 10;
32
30
  }
33
- let autoClose;
34
31
  if (c.editorParams) {
35
32
  if (c.editorParams.SHOWLIMIT === "false" || c.editorParams.showlimit === "false") {
36
33
  showLimit.value = false;
@@ -38,13 +35,6 @@ const IBizInput = /* @__PURE__ */ defineComponent({
38
35
  if (c.editorParams.ISAUTO === "true" || c.editorParams.isauto === "true") {
39
36
  isAuto.value = true;
40
37
  }
41
- if (c.editorParams.autoclose) {
42
- try {
43
- autoClose = JSON.parse(c.editorParams.autoclose);
44
- } catch (error) {
45
- ibiz.log.error(error);
46
- }
47
- }
48
38
  }
49
39
  const type = computed(() => {
50
40
  switch (editorModel.editorType) {
@@ -179,18 +169,23 @@ const IBizInput = /* @__PURE__ */ defineComponent({
179
169
  footerToolbarItems,
180
170
  questionToolbarItems,
181
171
  otherToolbarItems
182
- } = calcAiToolbarItemsByAc(c.deACMode);
172
+ } = ibiz.aiChatUtil.calcAiToolbarItemsByAc(c.deACMode);
173
+ const aiAgentlist = await ibiz.aiChatUtil.getAIAgentList(c.context, c.params);
174
+ const {
175
+ containerOptions,
176
+ chatOptions
177
+ } = ibiz.aiChatUtil.getEditorExAIChatParams(c.editorParams, c.context, c.params, props.data);
183
178
  const {
184
179
  zIndex
185
180
  } = useUIStore();
186
181
  const containerZIndex = zIndex.increment();
187
- const module = await import('@ibiz-template-plugin/ai-chat');
188
- chatInstance = module.chat || module.default.chat;
182
+ chatInstance = await ibiz.aiChatUtil.getAIChat();
189
183
  let id = "";
190
184
  let abortController;
191
185
  chatInstance.create({
192
186
  containerOptions: {
193
- zIndex: containerZIndex
187
+ zIndex: containerZIndex,
188
+ ...containerOptions
194
189
  },
195
190
  chatOptions: {
196
191
  caption: c.deACMode.logicName,
@@ -201,28 +196,28 @@ const IBizInput = /* @__PURE__ */ defineComponent({
201
196
  ...c.params,
202
197
  srfactag: c.deACMode.codeName
203
198
  },
204
- // 编辑器参数srfaiappendcurdata,是否传入对象参数,用于历史查询传参
205
- appendCurData: c.editorParams.srfaiappendcurdata === "true" ? props.data : void 0,
206
- // 自动提问
207
- autoQuestion: c.editorParams.autoquestion !== "false",
208
- // 自动填充
209
- autoFill: c.editorParams.autofill === "true",
210
- // 窗口的打开模式
211
- openMode: c.editorParams.openmode,
212
- // 窗口的自动关闭模式
213
- autoClose,
214
- // 编辑器参数srfaiappendcurcontent,传入编辑内容作为用户消息,获取历史数据后附加
215
- appendCurContent: c.editorParams.srfaiappendcurcontent ? StringUtil.fill(c.editorParams.srfaiappendcurcontent, c.context, c.params, props.data) : void 0,
216
199
  appDataEntityId,
217
200
  contentToolbarItems,
218
201
  footerToolbarItems,
219
202
  questionToolbarItems,
220
203
  otherToolbarItems,
221
- question: async (aiChat, ctx, param, other, arr, sessionid) => {
204
+ aiAgentlist,
205
+ ...chatOptions,
206
+ question: async (aiChat, ctx, param, other, arr, sessionid, srfaiagent, srfmode) => {
222
207
  id = createUUID();
223
208
  abortController = new AbortController();
224
209
  const deService = await ibiz.hub.getApp(ctx.srfappid).deService.getService(ctx, other.appDataEntityId);
225
210
  try {
211
+ const questionRequestData = {
212
+ messages: arr,
213
+ sessionid
214
+ };
215
+ if (srfaiagent) {
216
+ questionRequestData.srfaiagent = srfaiagent;
217
+ }
218
+ if (srfmode) {
219
+ questionRequestData.mode = srfmode;
220
+ }
226
221
  await deService.aiChatSse((msg) => {
227
222
  if (msg.actionstate === 20 && msg.actionresult) {
228
223
  aiChat.addMessage({
@@ -254,8 +249,7 @@ const IBizInput = /* @__PURE__ */ defineComponent({
254
249
  });
255
250
  }
256
251
  }, abortController, ctx, param, {
257
- messages: arr,
258
- sessionid
252
+ ...questionRequestData
259
253
  });
260
254
  } catch (error) {
261
255
  aiChat.replaceMessage({
@@ -288,8 +282,23 @@ const IBizInput = /* @__PURE__ */ defineComponent({
288
282
  },
289
283
  history: async (ctx, param, other) => {
290
284
  const deService = await ibiz.hub.getApp(ctx.srfappid).deService.getService(ctx, other.appDataEntityId);
291
- const historyData = other.appendCurData ? other.appendCurData : {};
292
- const result = await deService.aiChatHistory(ctx, param, historyData);
285
+ const historyRequestData = {};
286
+ if (other.appendCurData) {
287
+ Object.assign(historyRequestData, {
288
+ ...other.appendCurData
289
+ });
290
+ }
291
+ if (other.srfaiagent) {
292
+ Object.assign(historyRequestData, {
293
+ srfaiagent: other.srfaiagent
294
+ });
295
+ }
296
+ if (other.srfmode) {
297
+ Object.assign(historyRequestData, {
298
+ mode: other.srfmode
299
+ });
300
+ }
301
+ const result = await deService.aiChatHistory(ctx, param, historyRequestData);
293
302
  if (result.data && Array.isArray(result.data)) {
294
303
  let preMsg;
295
304
  result.data.forEach((item) => {
package/es/index.mjs CHANGED
@@ -178,9 +178,9 @@ export { RenderUtil } from './util/render-util/render-util.mjs';
178
178
  export { AppUtil } from './util/app-util/app-util.mjs';
179
179
  export { FullscreenUtil } from './util/fullscreen/fullscreen-util.mjs';
180
180
  export { useFocusByEnter } from './util/keydown-util/keydown-util.mjs';
181
- export { calcAiToolbarItemsByAc } from './util/ai-util/ai-util.mjs';
182
181
  export { convertBtnType } from './util/button-util/button-util.mjs';
183
182
  export { InLineAIUtil } from './util/inline-ai-util/inline-ai-util.mjs';
183
+ export { AIChatUtil } from './util/ai-chat-util/ai-chat-util.mjs';
184
184
  export { parseHtml } from './util/wang-editor-util/wang-editor-util.mjs';
185
185
  export { ArrowLeftBold, ArrowRightBold } from './util/icon/icon.mjs';
186
186
  export { AuthGuard } from './web-app/guard/auth-guard/auth-guard.mjs';
@@ -845,7 +845,9 @@ var index = {
845
845
  info: "The content is generated by AI, please carefully discern.",
846
846
  stopEdit: "Terminate editing",
847
847
  warningTitle: "Confirm termination",
848
- warningDesc: "Are you sure to terminate the creation?"
848
+ warningDesc: "Are you sure to terminate the creation?",
849
+ thinking: "In depth thinking",
850
+ thinked: "Deeply pondered"
849
851
  }
850
852
  },
851
853
  // runTime
@@ -841,7 +841,9 @@ var index = {
841
841
  info: "\u5185\u5BB9\u7531 AI \u751F\u6210\uFF0C\u8BF7\u4ED4\u7EC6\u7504\u522B\u3002",
842
842
  stopEdit: "\u7EC8\u6B62\u7F16\u8F91",
843
843
  warningTitle: "\u786E\u8BA4\u4E2D\u6B62",
844
- warningDesc: "\u786E\u8BA4\u4E2D\u6B62\u521B\u4F5C\u5417\uFF1F"
844
+ warningDesc: "\u786E\u8BA4\u4E2D\u6B62\u521B\u4F5C\u5417\uFF1F",
845
+ thinking: "\u6DF1\u5EA6\u601D\u8003\u4E2D",
846
+ thinked: "\u5DF2\u6DF1\u5EA6\u601D\u8003"
845
847
  }
846
848
  },
847
849
  // runTime