@ant-design/agentic-ui 2.11.2 → 2.12.0

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 (31) hide show
  1. package/dist/Bubble/MessagesContent/BubbleExtra.js +7 -1
  2. package/dist/MarkdownEditor/editor/types/Table.d.ts +1 -0
  3. package/dist/MarkdownEditor/editor/utils/ace.d.ts +22 -105
  4. package/dist/MarkdownEditor/editor/utils/ace.js +328 -106
  5. package/dist/MarkdownEditor/types.d.ts +1 -1
  6. package/dist/MarkdownInputField/AttachmentButton/index.js +5 -3
  7. package/dist/MarkdownInputField/MarkdownInputField.d.ts +32 -0
  8. package/dist/MarkdownInputField/MarkdownInputField.js +26 -8
  9. package/dist/Plugins/chart/ChartRender.js +75 -13
  10. package/dist/Plugins/chart/LineChart/index.js +10 -4
  11. package/dist/Plugins/chart/index.js +17 -5
  12. package/dist/Plugins/chart/utils.d.ts +40 -0
  13. package/dist/Plugins/chart/utils.js +116 -0
  14. package/dist/Plugins/code/CodeUI/Katex/Katex.d.ts +0 -1
  15. package/dist/Plugins/code/CodeUI/Katex/Katex.js +182 -6
  16. package/dist/Plugins/code/components/AceEditor.d.ts +4 -6
  17. package/dist/Plugins/code/components/AceEditor.js +362 -40
  18. package/dist/Plugins/code/loadAceEditor.d.ts +26 -0
  19. package/dist/Plugins/code/loadAceEditor.js +266 -0
  20. package/dist/Plugins/katex/InlineKatex.d.ts +0 -1
  21. package/dist/Plugins/katex/InlineKatex.js +183 -7
  22. package/dist/Plugins/katex/Katex.d.ts +0 -1
  23. package/dist/Plugins/katex/Katex.js +184 -6
  24. package/dist/Plugins/katex/loadKatex.d.ts +18 -0
  25. package/dist/Plugins/katex/loadKatex.js +181 -0
  26. package/dist/Plugins/mermaid/Mermaid.js +315 -113
  27. package/dist/Schema/SchemaEditor/AceEditorWrapper.d.ts +1 -1
  28. package/dist/Schema/SchemaEditor/AceEditorWrapper.js +342 -53
  29. package/dist/Utils/loadCSS.d.ts +31 -0
  30. package/dist/Utils/loadCSS.js +264 -0
  31. package/package.json +1 -1
@@ -1,3 +1,40 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
+ try {
11
+ var info = gen[key](arg);
12
+ var value = info.value;
13
+ } catch (error) {
14
+ reject(error);
15
+ return;
16
+ }
17
+ if (info.done) {
18
+ resolve(value);
19
+ } else {
20
+ Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ }
23
+ function _async_to_generator(fn) {
24
+ return function() {
25
+ var self = this, args = arguments;
26
+ return new Promise(function(resolve, reject) {
27
+ var gen = fn.apply(self, args);
28
+ function _next(value) {
29
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
+ }
31
+ function _throw(err) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
+ }
34
+ _next(undefined);
35
+ });
36
+ };
37
+ }
1
38
  function _class_call_check(instance, Constructor) {
2
39
  if (!(instance instanceof Constructor)) {
3
40
  throw new TypeError("Cannot call a class as a function");
@@ -30,6 +67,33 @@ function _define_property(obj, key, value) {
30
67
  }
31
68
  return obj;
32
69
  }
70
+ function _iterable_to_array_limit(arr, i) {
71
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
72
+ if (_i == null) return;
73
+ var _arr = [];
74
+ var _n = true;
75
+ var _d = false;
76
+ var _s, _e;
77
+ try {
78
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
79
+ _arr.push(_s.value);
80
+ if (i && _arr.length === i) break;
81
+ }
82
+ } catch (err) {
83
+ _d = true;
84
+ _e = err;
85
+ } finally{
86
+ try {
87
+ if (!_n && _i["return"] != null) _i["return"]();
88
+ } finally{
89
+ if (_d) throw _e;
90
+ }
91
+ }
92
+ return _arr;
93
+ }
94
+ function _non_iterable_rest() {
95
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
96
+ }
33
97
  function _object_spread(target) {
34
98
  for(var i = 1; i < arguments.length; i++){
35
99
  var source = arguments[i] != null ? arguments[i] : {};
@@ -45,9 +109,115 @@ function _object_spread(target) {
45
109
  }
46
110
  return target;
47
111
  }
48
- import ace from "ace-builds";
49
- import React, { useEffect, useRef } from "react";
50
- import { aceLangs, modeMap } from "../../MarkdownEditor/editor/utils/ace";
112
+ function _sliced_to_array(arr, i) {
113
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
114
+ }
115
+ function _unsupported_iterable_to_array(o, minLen) {
116
+ if (!o) return;
117
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
118
+ var n = Object.prototype.toString.call(o).slice(8, -1);
119
+ if (n === "Object" && o.constructor) n = o.constructor.name;
120
+ if (n === "Map" || n === "Set") return Array.from(n);
121
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
122
+ }
123
+ function _ts_generator(thisArg, body) {
124
+ var f, y, t, g, _ = {
125
+ label: 0,
126
+ sent: function() {
127
+ if (t[0] & 1) throw t[1];
128
+ return t[1];
129
+ },
130
+ trys: [],
131
+ ops: []
132
+ };
133
+ return g = {
134
+ next: verb(0),
135
+ "throw": verb(1),
136
+ "return": verb(2)
137
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
138
+ return this;
139
+ }), g;
140
+ function verb(n) {
141
+ return function(v) {
142
+ return step([
143
+ n,
144
+ v
145
+ ]);
146
+ };
147
+ }
148
+ function step(op) {
149
+ if (f) throw new TypeError("Generator is already executing.");
150
+ while(_)try {
151
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
152
+ if (y = 0, t) op = [
153
+ op[0] & 2,
154
+ t.value
155
+ ];
156
+ switch(op[0]){
157
+ case 0:
158
+ case 1:
159
+ t = op;
160
+ break;
161
+ case 4:
162
+ _.label++;
163
+ return {
164
+ value: op[1],
165
+ done: false
166
+ };
167
+ case 5:
168
+ _.label++;
169
+ y = op[1];
170
+ op = [
171
+ 0
172
+ ];
173
+ continue;
174
+ case 7:
175
+ op = _.ops.pop();
176
+ _.trys.pop();
177
+ continue;
178
+ default:
179
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
180
+ _ = 0;
181
+ continue;
182
+ }
183
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
184
+ _.label = op[1];
185
+ break;
186
+ }
187
+ if (op[0] === 6 && _.label < t[1]) {
188
+ _.label = t[1];
189
+ t = op;
190
+ break;
191
+ }
192
+ if (t && _.label < t[2]) {
193
+ _.label = t[2];
194
+ _.ops.push(op);
195
+ break;
196
+ }
197
+ if (t[2]) _.ops.pop();
198
+ _.trys.pop();
199
+ continue;
200
+ }
201
+ op = body.call(thisArg, _);
202
+ } catch (e) {
203
+ op = [
204
+ 6,
205
+ e
206
+ ];
207
+ y = 0;
208
+ } finally{
209
+ f = t = 0;
210
+ }
211
+ if (op[0] & 5) throw op[1];
212
+ return {
213
+ value: op[0] ? op[1] : void 0,
214
+ done: true
215
+ };
216
+ }
217
+ }
218
+ import React, { useEffect, useRef, useState } from "react";
219
+ import { getAceLangs, modeMap } from "../../MarkdownEditor/editor/utils/ace";
220
+ import { loadAceEditor } from "../../Plugins/code/loadAceEditor";
51
221
  // 确保 ResizeObserver 在测试环境中可用
52
222
  if (typeof window !== 'undefined' && !window.ResizeObserver) {
53
223
  window.ResizeObserver = /*#__PURE__*/ function() {
@@ -84,76 +254,195 @@ if (typeof window !== 'undefined' && !window.ResizeObserver) {
84
254
  var containerRef = useRef(null);
85
255
  var editorRef = useRef();
86
256
  var valueRef = useRef(value);
257
+ var aceModuleRef = useRef(null);
258
+ var _useState = _sliced_to_array(useState(false), 2), aceLoaded = _useState[0], setAceLoaded = _useState[1];
259
+ // 异步加载 Ace Editor
260
+ useEffect(function() {
261
+ _async_to_generator(function() {
262
+ var aceModule, error;
263
+ return _ts_generator(this, function(_state) {
264
+ switch(_state.label){
265
+ case 0:
266
+ _state.trys.push([
267
+ 0,
268
+ 2,
269
+ ,
270
+ 3
271
+ ]);
272
+ return [
273
+ 4,
274
+ loadAceEditor()
275
+ ];
276
+ case 1:
277
+ aceModule = _state.sent();
278
+ aceModuleRef.current = aceModule;
279
+ setAceLoaded(true);
280
+ return [
281
+ 3,
282
+ 3
283
+ ];
284
+ case 2:
285
+ error = _state.sent();
286
+ console.error('Failed to load Ace Editor:', error);
287
+ setAceLoaded(true);
288
+ return [
289
+ 3,
290
+ 3
291
+ ];
292
+ case 3:
293
+ return [
294
+ 2
295
+ ];
296
+ }
297
+ });
298
+ })();
299
+ }, []);
87
300
  // 初始化编辑器
88
301
  useEffect(function() {
89
- if (!containerRef.current) return;
90
- var codeEditor = ace.edit(containerRef.current, _object_spread({
91
- useWorker: false,
92
- value: value,
93
- fontSize: 12,
94
- animatedScroll: true,
95
- maxLines: Infinity,
96
- wrap: true,
97
- tabSize: 4,
98
- readOnly: readonly,
99
- showPrintMargin: false,
100
- showLineNumbers: true,
101
- showGutter: true
102
- }, options));
103
- editorRef.current = codeEditor;
104
- // 设置语法高亮
105
- setTimeout(function() {
106
- var lang = language.toLowerCase();
107
- if (modeMap.has(lang)) {
108
- lang = modeMap.get(lang);
109
- }
110
- if (aceLangs.has(lang)) {
111
- codeEditor.session.setMode("ace/mode/".concat(lang));
112
- }
113
- }, 16);
114
- // 配置编辑器事件
115
- if (!readonly && onChange) {
116
- codeEditor.on('change', function() {
117
- var newValue = codeEditor.getValue();
118
- if (newValue !== valueRef.current) {
119
- valueRef.current = newValue;
120
- onChange(newValue);
302
+ if (!aceLoaded || !aceModuleRef.current || !containerRef.current) return;
303
+ _async_to_generator(function() {
304
+ var ace, codeEditor;
305
+ return _ts_generator(this, function(_state) {
306
+ try {
307
+ ace = aceModuleRef.current.default || aceModuleRef.current;
308
+ codeEditor = ace.edit(containerRef.current, _object_spread({
309
+ useWorker: false,
310
+ value: value,
311
+ fontSize: 12,
312
+ animatedScroll: true,
313
+ maxLines: Infinity,
314
+ wrap: true,
315
+ tabSize: 4,
316
+ readOnly: readonly,
317
+ showPrintMargin: false,
318
+ showLineNumbers: true,
319
+ showGutter: true
320
+ }, options));
321
+ editorRef.current = codeEditor;
322
+ // 设置语法高亮
323
+ setTimeout(/*#__PURE__*/ _async_to_generator(function() {
324
+ var lang, aceLangs;
325
+ return _ts_generator(this, function(_state) {
326
+ switch(_state.label){
327
+ case 0:
328
+ lang = language.toLowerCase();
329
+ if (modeMap.has(lang)) {
330
+ lang = modeMap.get(lang);
331
+ }
332
+ return [
333
+ 4,
334
+ getAceLangs()
335
+ ];
336
+ case 1:
337
+ aceLangs = _state.sent();
338
+ if (aceLangs.has(lang)) {
339
+ codeEditor.session.setMode("ace/mode/".concat(lang));
340
+ }
341
+ return [
342
+ 2
343
+ ];
344
+ }
345
+ });
346
+ }), 16);
347
+ // 配置编辑器事件
348
+ if (!readonly && onChange) {
349
+ codeEditor.on('change', function() {
350
+ var newValue = codeEditor.getValue();
351
+ if (newValue !== valueRef.current) {
352
+ valueRef.current = newValue;
353
+ onChange(newValue);
354
+ }
355
+ });
356
+ }
357
+ } catch (error) {
358
+ console.error('Failed to initialize Ace Editor:', error);
121
359
  }
360
+ return [
361
+ 2
362
+ ];
122
363
  });
123
- }
364
+ })();
124
365
  return function() {
125
- codeEditor === null || codeEditor === void 0 ? void 0 : codeEditor.destroy();
366
+ var _editorRef_current;
367
+ (_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.destroy();
126
368
  };
127
- }, []);
369
+ }, [
370
+ aceLoaded
371
+ ]);
128
372
  // 更新值
129
373
  useEffect(function() {
130
374
  if (editorRef.current && value !== valueRef.current) {
131
- editorRef.current.setValue(value);
132
- valueRef.current = value;
375
+ try {
376
+ editorRef.current.setValue(value);
377
+ valueRef.current = value;
378
+ } catch (error) {
379
+ console.error('Failed to set editor value:', error);
380
+ }
133
381
  }
134
382
  }, [
135
383
  value
136
384
  ]);
137
385
  // 更新语言
138
386
  useEffect(function() {
139
- if (editorRef.current) {
140
- var lang = language.toLowerCase();
141
- if (modeMap.has(lang)) {
142
- lang = modeMap.get(lang);
143
- }
144
- if (aceLangs.has(lang)) {
145
- editorRef.current.session.setMode("ace/mode/".concat(lang));
146
- } else {
147
- editorRef.current.session.setMode("ace/mode/text");
148
- }
149
- }
387
+ if (!editorRef.current || !aceLoaded) return;
388
+ _async_to_generator(function() {
389
+ var lang, aceLangs, _editorRef_current, _editorRef_current1, error;
390
+ return _ts_generator(this, function(_state) {
391
+ switch(_state.label){
392
+ case 0:
393
+ _state.trys.push([
394
+ 0,
395
+ 2,
396
+ ,
397
+ 3
398
+ ]);
399
+ lang = language.toLowerCase();
400
+ if (modeMap.has(lang)) {
401
+ lang = modeMap.get(lang);
402
+ }
403
+ return [
404
+ 4,
405
+ getAceLangs()
406
+ ];
407
+ case 1:
408
+ aceLangs = _state.sent();
409
+ if (aceLangs.has(lang)) {
410
+ ;
411
+ (_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.session.setMode("ace/mode/".concat(lang));
412
+ } else {
413
+ ;
414
+ (_editorRef_current1 = editorRef.current) === null || _editorRef_current1 === void 0 ? void 0 : _editorRef_current1.session.setMode("ace/mode/text");
415
+ }
416
+ return [
417
+ 3,
418
+ 3
419
+ ];
420
+ case 2:
421
+ error = _state.sent();
422
+ console.error('Failed to set editor mode:', error);
423
+ return [
424
+ 3,
425
+ 3
426
+ ];
427
+ case 3:
428
+ return [
429
+ 2
430
+ ];
431
+ }
432
+ });
433
+ })();
150
434
  }, [
151
- language
435
+ language,
436
+ aceLoaded
152
437
  ]);
153
438
  // 更新只读状态
154
439
  useEffect(function() {
155
440
  if (editorRef.current) {
156
- editorRef.current.setReadOnly(readonly);
441
+ try {
442
+ editorRef.current.setReadOnly(readonly);
443
+ } catch (error) {
444
+ console.error('Failed to set editor readOnly:', error);
445
+ }
157
446
  }
158
447
  }, [
159
448
  readonly
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @fileoverview CSS 异步加载工具
3
+ *
4
+ * 提供动态加载 CSS 文件的功能,支持按需加载和缓存
5
+ */
6
+ /**
7
+ * 异步加载 CSS 文件
8
+ *
9
+ * 对于 webpack 处理的 CSS 文件,应该使用动态 import 函数形式
10
+ * webpack 会自动处理 CSS 的提取和加载
11
+ *
12
+ * @param cssPath - CSS 文件路径(推荐使用函数形式的动态 import)
13
+ * @returns Promise<void> 加载完成的 Promise
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // 推荐:使用动态 import 加载 CSS 模块(webpack 会自动处理)
18
+ * await loadCSS(() => import('./katex.min.css'));
19
+ *
20
+ * // 不推荐:直接使用字符串路径(仅适用于外部 URL)
21
+ * await loadCSS('https://example.com/style.css');
22
+ * ```
23
+ */
24
+ export declare const loadCSS: (cssPath: string | (() => Promise<unknown>)) => Promise<void>;
25
+ /**
26
+ * 预加载 CSS 文件
27
+ * 使用低优先级加载,不阻塞当前执行
28
+ *
29
+ * @param cssPath - CSS 文件路径
30
+ */
31
+ export declare const preloadCSS: (cssPath: string | (() => Promise<unknown>)) => void;