@ant-design/agentic-ui 2.29.59 → 2.30.1

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 (99) hide show
  1. package/dist/Bubble/List/index.d.ts +11 -0
  2. package/dist/Bubble/List/index.js +13 -1
  3. package/dist/Bubble/MessagesContent/EXCEPTION.js +11 -2
  4. package/dist/Bubble/MessagesContent/MarkdownPreview.js +34 -4
  5. package/dist/Bubble/MessagesContent/index.js +39 -10
  6. package/dist/Bubble/MessagesContent/style.js +55 -22
  7. package/dist/Bubble/UserBubble.js +3 -1
  8. package/dist/Bubble/type.d.ts +11 -0
  9. package/dist/Hooks/useLanguage.d.ts +1 -0
  10. package/dist/I18n/locales.d.ts +1 -0
  11. package/dist/I18n/locales.js +5 -3
  12. package/dist/MarkdownEditor/BaseMarkdownEditor.js +37 -5
  13. package/dist/MarkdownEditor/editor/elements/AgenticUiBlocks/AgenticUiTaskBlock.d.ts +4 -0
  14. package/dist/MarkdownEditor/editor/elements/AgenticUiBlocks/AgenticUiTaskBlock.js +74 -0
  15. package/dist/MarkdownEditor/editor/elements/AgenticUiBlocks/AgenticUiToolUseBarBlock.d.ts +4 -0
  16. package/dist/MarkdownEditor/editor/elements/AgenticUiBlocks/AgenticUiToolUseBarBlock.js +114 -0
  17. package/dist/MarkdownEditor/editor/elements/AgenticUiBlocks/agenticUiEmbedUtils.d.ts +20 -0
  18. package/dist/MarkdownEditor/editor/elements/AgenticUiBlocks/agenticUiEmbedUtils.js +169 -0
  19. package/dist/MarkdownEditor/editor/elements/Table/EditableTable.d.ts +11 -0
  20. package/dist/MarkdownEditor/editor/elements/Table/EditableTable.js +207 -0
  21. package/dist/MarkdownEditor/editor/elements/Table/Table.js +10 -276
  22. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndex/index.js +7 -227
  23. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndexSpacer/index.js +20 -229
  24. package/dist/MarkdownEditor/editor/elements/Table/commands/tableCommands.d.ts +9 -0
  25. package/dist/MarkdownEditor/editor/elements/Table/commands/tableCommands.js +242 -0
  26. package/dist/MarkdownEditor/editor/elements/Table/utils/editableTableWidth.d.ts +20 -0
  27. package/dist/MarkdownEditor/editor/elements/Table/utils/editableTableWidth.js +60 -0
  28. package/dist/MarkdownEditor/editor/elements/Table/utils/useEditableTableColWidths.d.ts +6 -0
  29. package/dist/MarkdownEditor/editor/elements/Table/utils/useEditableTableColWidths.js +20 -0
  30. package/dist/MarkdownEditor/editor/elements/Table/utils/useEditableTableContentWidth.d.ts +10 -0
  31. package/dist/MarkdownEditor/editor/elements/Table/utils/useEditableTableContentWidth.js +103 -0
  32. package/dist/MarkdownEditor/editor/elements/index.js +7 -0
  33. package/dist/MarkdownEditor/editor/parser/parse/parseCode.js +33 -2
  34. package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +3 -0
  35. package/dist/MarkdownEditor/editor/plugins/handlePaste.js +4 -1
  36. package/dist/MarkdownEditor/plugin.d.ts +15 -0
  37. package/dist/MarkdownEditor/style.js +258 -326
  38. package/dist/MarkdownEditor/types.d.ts +14 -0
  39. package/dist/MarkdownInputField/AttachmentButton/AttachmentButtonPopover.js +1 -1
  40. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileIcon.js +2 -2
  41. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.js +11 -8
  42. package/dist/MarkdownInputField/AttachmentButton/index.js +7 -2
  43. package/dist/MarkdownInputField/AttachmentButton/types.d.ts +5 -1
  44. package/dist/MarkdownInputField/AttachmentButton/utils.d.ts +7 -0
  45. package/dist/MarkdownInputField/AttachmentButton/utils.js +9 -1
  46. package/dist/MarkdownInputField/FileMapView/FileMapViewItem.js +10 -5
  47. package/dist/MarkdownInputField/FileUploadManager/index.d.ts +9 -0
  48. package/dist/MarkdownInputField/FileUploadManager/index.js +20 -4
  49. package/dist/MarkdownInputField/MarkdownInputField.js +5 -3
  50. package/dist/MarkdownInputField/SendActions/index.d.ts +9 -0
  51. package/dist/MarkdownInputField/SendActions/index.js +3 -2
  52. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.js +10 -3
  53. package/dist/MarkdownInputField/utils/renderHelpers.d.ts +8 -1
  54. package/dist/MarkdownInputField/utils/renderHelpers.js +5 -1
  55. package/dist/MarkdownRenderer/AnimationText.d.ts +19 -0
  56. package/dist/MarkdownRenderer/AnimationText.js +226 -0
  57. package/dist/MarkdownRenderer/CharacterQueue.d.ts +36 -0
  58. package/dist/MarkdownRenderer/CharacterQueue.js +188 -0
  59. package/dist/MarkdownRenderer/MarkdownRenderer.d.ts +13 -0
  60. package/dist/MarkdownRenderer/MarkdownRenderer.js +362 -0
  61. package/dist/MarkdownRenderer/index.d.ts +11 -0
  62. package/dist/MarkdownRenderer/index.js +9 -0
  63. package/dist/MarkdownRenderer/renderers/AgenticUiTaskBlockRenderer.d.ts +6 -0
  64. package/dist/MarkdownRenderer/renderers/AgenticUiTaskBlockRenderer.js +66 -0
  65. package/dist/MarkdownRenderer/renderers/AgenticUiToolUseBarBlockRenderer.d.ts +6 -0
  66. package/dist/MarkdownRenderer/renderers/AgenticUiToolUseBarBlockRenderer.js +134 -0
  67. package/dist/MarkdownRenderer/renderers/ChartRenderer.d.ts +12 -0
  68. package/dist/MarkdownRenderer/renderers/ChartRenderer.js +395 -0
  69. package/dist/MarkdownRenderer/renderers/CodeRenderer.d.ts +7 -0
  70. package/dist/MarkdownRenderer/renderers/CodeRenderer.js +218 -0
  71. package/dist/MarkdownRenderer/renderers/MermaidRenderer.d.ts +7 -0
  72. package/dist/MarkdownRenderer/renderers/MermaidRenderer.js +43 -0
  73. package/dist/MarkdownRenderer/renderers/SchemaRenderer.d.ts +15 -0
  74. package/dist/MarkdownRenderer/renderers/SchemaRenderer.js +115 -0
  75. package/dist/MarkdownRenderer/renderers/index.d.ts +4 -0
  76. package/dist/MarkdownRenderer/renderers/index.js +4 -0
  77. package/dist/MarkdownRenderer/style.d.ts +16 -0
  78. package/dist/MarkdownRenderer/style.js +47 -0
  79. package/dist/MarkdownRenderer/types.d.ts +74 -0
  80. package/dist/MarkdownRenderer/types.js +1 -0
  81. package/dist/MarkdownRenderer/useMarkdownToReact.d.ts +23 -0
  82. package/dist/MarkdownRenderer/useMarkdownToReact.js +1241 -0
  83. package/dist/MarkdownRenderer/useStreaming.d.ts +29 -0
  84. package/dist/MarkdownRenderer/useStreaming.js +399 -0
  85. package/dist/Plugins/chart/AreaChart/index.js +4 -2
  86. package/dist/Plugins/chart/ChartRender.js +1 -0
  87. package/dist/Plugins/chart/LineChart/index.js +4 -2
  88. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.d.ts +8 -0
  89. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.js +31 -6
  90. package/dist/Plugins/chart/index.js +3 -1
  91. package/dist/Plugins/mermaid/style.js +0 -3
  92. package/dist/TaskList/TaskList.js +3 -12
  93. package/dist/TaskList/components/TaskListItem.js +3 -12
  94. package/dist/ThoughtChainList/ThoughtChainListItem.js +2 -4
  95. package/dist/ThoughtChainList/index.js +4 -21
  96. package/dist/ToolUseBarThink/index.js +20 -59
  97. package/dist/index.d.ts +1 -0
  98. package/dist/index.js +2 -0
  99. package/package.json +2 -1
@@ -0,0 +1,29 @@
1
+ /**
2
+ * 流式 token 缓存类型。
3
+ * 在流式场景中,部分 Markdown token(link、image、table 等)可能处于未闭合状态,
4
+ * 直接交给 parser 会产生错误结果。此 hook 将已完成的内容和未完成的 pending 分离,
5
+ * 仅将已完成的部分交给 parser。
6
+ *
7
+ * 移植自 @ant-design/x-markdown 的 useStreaming hook。
8
+ */
9
+ export declare enum StreamCacheTokenType {
10
+ Text = "text",
11
+ Link = "link",
12
+ Image = "image",
13
+ Html = "html",
14
+ Emphasis = "emphasis",
15
+ List = "list",
16
+ Table = "table",
17
+ InlineCode = "inline-code"
18
+ }
19
+ /**
20
+ * 流式 Markdown 缓存 hook。
21
+ *
22
+ * 逐字符扫描输入,识别不完整的 Markdown token(link、image、table、emphasis 等),
23
+ * 将已完成的内容输出,不完整的部分暂缓,避免 parser 错误解析。
24
+ *
25
+ * @param input - 完整的 markdown 内容(持续增长)
26
+ * @param enabled - 是否启用流式缓存(非流式直接透传)
27
+ * @returns 安全的可解析 markdown 字符串
28
+ */
29
+ export declare const useStreaming: (input: string, enabled: boolean) => string;
@@ -0,0 +1,399 @@
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 _define_property(obj, key, value) {
10
+ if (key in obj) {
11
+ Object.defineProperty(obj, key, {
12
+ value: value,
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true
16
+ });
17
+ } else {
18
+ obj[key] = value;
19
+ }
20
+ return obj;
21
+ }
22
+ function _iterable_to_array_limit(arr, i) {
23
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
24
+ if (_i == null) return;
25
+ var _arr = [];
26
+ var _n = true;
27
+ var _d = false;
28
+ var _s, _e;
29
+ try {
30
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
31
+ _arr.push(_s.value);
32
+ if (i && _arr.length === i) break;
33
+ }
34
+ } catch (err) {
35
+ _d = true;
36
+ _e = err;
37
+ } finally{
38
+ try {
39
+ if (!_n && _i["return"] != null) _i["return"]();
40
+ } finally{
41
+ if (_d) throw _e;
42
+ }
43
+ }
44
+ return _arr;
45
+ }
46
+ function _non_iterable_rest() {
47
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
48
+ }
49
+ function _sliced_to_array(arr, i) {
50
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
51
+ }
52
+ function _unsupported_iterable_to_array(o, minLen) {
53
+ if (!o) return;
54
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
55
+ var n = Object.prototype.toString.call(o).slice(8, -1);
56
+ if (n === "Object" && o.constructor) n = o.constructor.name;
57
+ if (n === "Map" || n === "Set") return Array.from(n);
58
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
59
+ }
60
+ import { useCallback, useEffect, useRef, useState } from "react";
61
+ /**
62
+ * 流式 token 缓存类型。
63
+ * 在流式场景中,部分 Markdown token(link、image、table 等)可能处于未闭合状态,
64
+ * 直接交给 parser 会产生错误结果。此 hook 将已完成的内容和未完成的 pending 分离,
65
+ * 仅将已完成的部分交给 parser。
66
+ *
67
+ * 移植自 @ant-design/x-markdown 的 useStreaming hook。
68
+ */ export var StreamCacheTokenType = /*#__PURE__*/ function(StreamCacheTokenType) {
69
+ StreamCacheTokenType["Text"] = "text";
70
+ StreamCacheTokenType["Link"] = "link";
71
+ StreamCacheTokenType["Image"] = "image";
72
+ StreamCacheTokenType["Html"] = "html";
73
+ StreamCacheTokenType["Emphasis"] = "emphasis";
74
+ StreamCacheTokenType["List"] = "list";
75
+ StreamCacheTokenType["Table"] = "table";
76
+ StreamCacheTokenType["InlineCode"] = "inline-code";
77
+ return StreamCacheTokenType;
78
+ }({});
79
+ var STREAM_INCOMPLETE_REGEX = {
80
+ image: [
81
+ /^!\[[^\]\r\n]{0,1000}$/,
82
+ /^!\[[^\r\n]{0,1000}\]\(*[^)\r\n]{0,1000}$/
83
+ ],
84
+ link: [
85
+ /^\[(?!\^)[^\]\r\n]{0,1000}$/,
86
+ /^\[(?!\^)[^\r\n]{0,1000}\]\(+[^)\r\n]{0,1000}$/
87
+ ],
88
+ html: [
89
+ /^<\/$/,
90
+ /^<\/?[a-zA-Z][a-zA-Z0-9-]{0,100}[^>\r\n]{0,1000}$/
91
+ ],
92
+ commonEmphasis: [
93
+ /^(\*{1,3}|_{1,3})(?!\s)(?!.*\1$)[^\r\n]{0,1000}$/
94
+ ],
95
+ list: [
96
+ /^[-+*]\s{0,3}$/,
97
+ /^[-+*]\s{1,3}(\*{1,3}|_{1,3})(?!\s)(?!.*\1$)[^\r\n]{0,1000}$/
98
+ ],
99
+ 'inline-code': [
100
+ /^`[^`\r\n]{0,300}$/
101
+ ]
102
+ };
103
+ var STREAMING_LOADING_PLACEHOLDER = '...';
104
+ /**
105
+ * 判断表格是否仍不完整。
106
+ * 等待 header + separator + 至少一行数据(3 行)后提交。
107
+ */ var isTableIncomplete = function isTableIncomplete(markdown) {
108
+ if (markdown.includes('\n\n')) return false;
109
+ var lines = markdown.split('\n');
110
+ // 需要至少 3 行:header | separator | 第一行数据
111
+ if (lines.length < 3) return true;
112
+ var _lines = _sliced_to_array(lines, 2), header = _lines[0], separator = _lines[1];
113
+ if (!/^\|.*\|$/.test(header.trim())) return false;
114
+ var columns = separator.trim().split('|').map(function(c) {
115
+ return c.trim();
116
+ }).filter(Boolean);
117
+ var isSeparatorValid = columns.every(function(col, i) {
118
+ return i === columns.length - 1 ? col === ':' || /^:?-+:?$/.test(col) : /^:?-+:?$/.test(col);
119
+ });
120
+ if (!isSeparatorValid) return false;
121
+ // separator 完整但还没有数据行
122
+ if (lines.length <= 2) return true;
123
+ // 有数据行了,不再缓存
124
+ return false;
125
+ };
126
+ var _obj;
127
+ var tokenRecognizerMap = (_obj = {}, _define_property(_obj, "link", {
128
+ tokenType: "link",
129
+ isStartOfToken: function isStartOfToken(md) {
130
+ return md.startsWith('[');
131
+ },
132
+ isStreamingValid: function isStreamingValid(md) {
133
+ return STREAM_INCOMPLETE_REGEX.link.some(function(re) {
134
+ return re.test(md);
135
+ });
136
+ }
137
+ }), _define_property(_obj, "image", {
138
+ tokenType: "image",
139
+ isStartOfToken: function isStartOfToken(md) {
140
+ return md.startsWith('!');
141
+ },
142
+ isStreamingValid: function isStreamingValid(md) {
143
+ return STREAM_INCOMPLETE_REGEX.image.some(function(re) {
144
+ return re.test(md);
145
+ });
146
+ }
147
+ }), _define_property(_obj, "html", {
148
+ tokenType: "html",
149
+ isStartOfToken: function isStartOfToken(md) {
150
+ return md.startsWith('<');
151
+ },
152
+ isStreamingValid: function isStreamingValid(md) {
153
+ return STREAM_INCOMPLETE_REGEX.html.some(function(re) {
154
+ return re.test(md);
155
+ });
156
+ }
157
+ }), _define_property(_obj, "emphasis", {
158
+ tokenType: "emphasis",
159
+ isStartOfToken: function isStartOfToken(md) {
160
+ return md.startsWith('*') || md.startsWith('_');
161
+ },
162
+ isStreamingValid: function isStreamingValid(md) {
163
+ return STREAM_INCOMPLETE_REGEX.commonEmphasis.some(function(re) {
164
+ return re.test(md);
165
+ });
166
+ }
167
+ }), _define_property(_obj, "list", {
168
+ tokenType: "list",
169
+ isStartOfToken: function isStartOfToken(md) {
170
+ return /^[-+*]/.test(md);
171
+ },
172
+ isStreamingValid: function isStreamingValid(md) {
173
+ return STREAM_INCOMPLETE_REGEX.list.some(function(re) {
174
+ return re.test(md);
175
+ });
176
+ },
177
+ getCommitPrefix: function getCommitPrefix(pending) {
178
+ var _pending_match;
179
+ var listPrefix = (_pending_match = pending.match(/^([-+*]\s{0,3})/)) === null || _pending_match === void 0 ? void 0 : _pending_match[1];
180
+ var rest = listPrefix ? pending.slice(listPrefix.length) : '';
181
+ return listPrefix && rest.startsWith('`') ? listPrefix : null;
182
+ }
183
+ }), _define_property(_obj, "table", {
184
+ tokenType: "table",
185
+ isStartOfToken: function isStartOfToken(md) {
186
+ return md.startsWith('|');
187
+ },
188
+ isStreamingValid: isTableIncomplete
189
+ }), _define_property(_obj, "inline-code", {
190
+ tokenType: "inline-code",
191
+ isStartOfToken: function isStartOfToken(md) {
192
+ return md.startsWith('`');
193
+ },
194
+ isStreamingValid: function isStreamingValid(md) {
195
+ return STREAM_INCOMPLETE_REGEX['inline-code'].some(function(re) {
196
+ return re.test(md);
197
+ });
198
+ }
199
+ }), _obj);
200
+ var commitCache = function commitCache(cache) {
201
+ if (cache.pending) {
202
+ cache.completeMarkdown += cache.pending;
203
+ cache.pending = '';
204
+ }
205
+ cache.token = "text";
206
+ };
207
+ var recognize = function recognize(cache, tokenType) {
208
+ var recognizer = tokenRecognizerMap[tokenType];
209
+ if (!recognizer) return;
210
+ var token = cache.token, pending = cache.pending;
211
+ if (token === "text" && recognizer.isStartOfToken(pending)) {
212
+ cache.token = tokenType;
213
+ return;
214
+ }
215
+ if (token === tokenType && !recognizer.isStreamingValid(pending)) {
216
+ var _recognizer_getCommitPrefix;
217
+ var prefix = (_recognizer_getCommitPrefix = recognizer.getCommitPrefix) === null || _recognizer_getCommitPrefix === void 0 ? void 0 : _recognizer_getCommitPrefix.call(recognizer, pending);
218
+ if (prefix) {
219
+ cache.completeMarkdown += prefix;
220
+ cache.pending = pending.slice(prefix.length);
221
+ cache.token = "text";
222
+ return;
223
+ }
224
+ commitCache(cache);
225
+ }
226
+ };
227
+ var recognizeHandlers = Object.values(tokenRecognizerMap).map(function(rec) {
228
+ return {
229
+ tokenType: rec.tokenType,
230
+ recognize: function recognize1(cache) {
231
+ return recognize(cache, rec.tokenType);
232
+ }
233
+ };
234
+ });
235
+ var getInitialCache = function getInitialCache() {
236
+ return {
237
+ pending: '',
238
+ token: "text",
239
+ processedLength: 0,
240
+ completeMarkdown: ''
241
+ };
242
+ };
243
+ var getStreamingOutput = function getStreamingOutput(cache) {
244
+ if (cache.completeMarkdown) return cache.completeMarkdown;
245
+ if (cache.pending) return STREAMING_LOADING_PLACEHOLDER;
246
+ return '';
247
+ };
248
+ var isInCodeBlock = function isInCodeBlock(text) {
249
+ var isFinalChunk = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
250
+ var lines = text.split('\n');
251
+ var inFenced = false;
252
+ var fenceChar = '';
253
+ var fenceLen = 0;
254
+ for(var i = 0; i < lines.length; i++){
255
+ var line = lines[i].endsWith('\r') ? lines[i].slice(0, -1) : lines[i];
256
+ var match = line.match(/^(`{3,}|~{3,})(.*)$/);
257
+ if (match) {
258
+ var fence = match[1];
259
+ var after = match[2];
260
+ var char = fence[0];
261
+ var len = fence.length;
262
+ if (!inFenced) {
263
+ inFenced = true;
264
+ fenceChar = char;
265
+ fenceLen = len;
266
+ } else {
267
+ var isValidEnd = char === fenceChar && len >= fenceLen && /^\s*$/.test(after);
268
+ if (isValidEnd && (isFinalChunk || i < lines.length - 1)) {
269
+ inFenced = false;
270
+ fenceChar = '';
271
+ fenceLen = 0;
272
+ }
273
+ }
274
+ }
275
+ }
276
+ return inFenced;
277
+ };
278
+ /**
279
+ * 流式 Markdown 缓存 hook。
280
+ *
281
+ * 逐字符扫描输入,识别不完整的 Markdown token(link、image、table、emphasis 等),
282
+ * 将已完成的内容输出,不完整的部分暂缓,避免 parser 错误解析。
283
+ *
284
+ * @param input - 完整的 markdown 内容(持续增长)
285
+ * @param enabled - 是否启用流式缓存(非流式直接透传)
286
+ * @returns 安全的可解析 markdown 字符串
287
+ */ export var useStreaming = function useStreaming(input, enabled) {
288
+ var _useState = _sliced_to_array(useState(''), 2), output = _useState[0], setOutput = _useState[1];
289
+ var cacheRef = useRef(getInitialCache());
290
+ var processStreaming = useCallback(function(text) {
291
+ if (!text) {
292
+ setOutput('');
293
+ cacheRef.current = getInitialCache();
294
+ return;
295
+ }
296
+ var expectedPrefix = cacheRef.current.completeMarkdown + cacheRef.current.pending;
297
+ if (!text.startsWith(expectedPrefix)) {
298
+ cacheRef.current = getInitialCache();
299
+ }
300
+ var cache = cacheRef.current;
301
+ var chunk = text.slice(cache.processedLength);
302
+ if (!chunk) return;
303
+ cache.processedLength += chunk.length;
304
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
305
+ try {
306
+ for(var _iterator = chunk[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
307
+ var char = _step.value;
308
+ cache.pending += char;
309
+ if (isInCodeBlock(cache.completeMarkdown + cache.pending)) {
310
+ commitCache(cache);
311
+ continue;
312
+ }
313
+ if (cache.token === "text") {
314
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
315
+ try {
316
+ for(var _iterator1 = recognizeHandlers[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
317
+ var handler = _step1.value;
318
+ handler.recognize(cache);
319
+ }
320
+ } catch (err) {
321
+ _didIteratorError1 = true;
322
+ _iteratorError1 = err;
323
+ } finally{
324
+ try {
325
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
326
+ _iterator1.return();
327
+ }
328
+ } finally{
329
+ if (_didIteratorError1) {
330
+ throw _iteratorError1;
331
+ }
332
+ }
333
+ }
334
+ } else {
335
+ var handler1 = recognizeHandlers.find(function(h) {
336
+ return h.tokenType === cache.token;
337
+ });
338
+ handler1 === null || handler1 === void 0 ? void 0 : handler1.recognize(cache);
339
+ if (cache.token === "text") {
340
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
341
+ try {
342
+ for(var _iterator2 = recognizeHandlers[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
343
+ var h = _step2.value;
344
+ h.recognize(cache);
345
+ }
346
+ } catch (err) {
347
+ _didIteratorError2 = true;
348
+ _iteratorError2 = err;
349
+ } finally{
350
+ try {
351
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
352
+ _iterator2.return();
353
+ }
354
+ } finally{
355
+ if (_didIteratorError2) {
356
+ throw _iteratorError2;
357
+ }
358
+ }
359
+ }
360
+ }
361
+ }
362
+ if (cache.token === "text") {
363
+ commitCache(cache);
364
+ }
365
+ }
366
+ } catch (err) {
367
+ _didIteratorError = true;
368
+ _iteratorError = err;
369
+ } finally{
370
+ try {
371
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
372
+ _iterator.return();
373
+ }
374
+ } finally{
375
+ if (_didIteratorError) {
376
+ throw _iteratorError;
377
+ }
378
+ }
379
+ }
380
+ setOutput(getStreamingOutput(cache));
381
+ }, []);
382
+ useEffect(function() {
383
+ if (typeof input !== 'string') {
384
+ setOutput('');
385
+ cacheRef.current = getInitialCache();
386
+ return;
387
+ }
388
+ if (enabled) {
389
+ processStreaming(input);
390
+ } else {
391
+ setOutput(input);
392
+ }
393
+ }, [
394
+ input,
395
+ enabled,
396
+ processStreaming
397
+ ]);
398
+ return output;
399
+ };
@@ -77,7 +77,7 @@ function _unsupported_iterable_to_array(o, minLen) {
77
77
  }
78
78
  import { ConfigProvider } from "antd";
79
79
  import classNames from "clsx";
80
- import React, { useContext, useMemo, useRef } from "react";
80
+ import React, { useContext, useLayoutEffect, useMemo, useRef } from "react";
81
81
  import { Line } from "react-chartjs-2";
82
82
  import { ChartContainer, ChartFilter, ChartStatistic, ChartToolBar, downloadChart } from "../components";
83
83
  import { defaultColorList } from "../const";
@@ -112,8 +112,10 @@ import { useStyle } from "./style";
112
112
  * @since 1.0.0
113
113
  */ var AreaChart = function AreaChart(param) {
114
114
  var title = param.title, data = param.data, _param_width = param.width, width = _param_width === void 0 ? 600 : _param_width, _param_height = param.height, height = _param_height === void 0 ? 400 : _param_height, className = param.className, classNamesProp = param.classNames, style = param.style, stylesProp = param.styles, dataTime = param.dataTime, _param_theme = param.theme, theme = _param_theme === void 0 ? 'light' : _param_theme, color = param.color, _param_showLegend = param.showLegend, showLegend = _param_showLegend === void 0 ? true : _param_showLegend, _param_legendPosition = param.legendPosition, legendPosition = _param_legendPosition === void 0 ? 'bottom' : _param_legendPosition, _param_legendAlign = param.legendAlign, legendAlign = _param_legendAlign === void 0 ? 'start' : _param_legendAlign, _param_showGrid = param.showGrid, showGrid = _param_showGrid === void 0 ? true : _param_showGrid, _param_xPosition = param.xPosition, xPosition = _param_xPosition === void 0 ? 'bottom' : _param_xPosition, _param_yPosition = param.yPosition, yPosition = _param_yPosition === void 0 ? 'left' : _param_yPosition, _param_hiddenX = param.hiddenX, hiddenX = _param_hiddenX === void 0 ? false : _param_hiddenX, _param_hiddenY = param.hiddenY, hiddenY = _param_hiddenY === void 0 ? false : _param_hiddenY, toolbarExtra = param.toolbarExtra, _param_renderFilterInToolbar = param.renderFilterInToolbar, renderFilterInToolbar = _param_renderFilterInToolbar === void 0 ? false : _param_renderFilterInToolbar, statisticConfig = param.statistic, variant = param.variant, _param_loading = param.loading, loading = _param_loading === void 0 ? false : _param_loading;
115
+ useLayoutEffect(function() {
116
+ registerLineChartComponents();
117
+ }, []);
115
118
  // 注册 Chart.js 组件
116
- registerLineChartComponents();
117
119
  // 响应式尺寸
118
120
  var _useResponsiveSize = useResponsiveSize(width, height), responsiveWidth = _useResponsiveSize.responsiveWidth, responsiveHeight = _useResponsiveSize.responsiveHeight, isMobile = _useResponsiveSize.isMobile;
119
121
  // 样式注册
@@ -1195,6 +1195,7 @@ import { debounce, getDataHash, isConfigEqual, isNotEmpty, toNumber } from "./ut
1195
1195
  config === null || config === void 0 ? void 0 : config.y,
1196
1196
  config === null || config === void 0 ? void 0 : config.height,
1197
1197
  config === null || config === void 0 ? void 0 : config.index,
1198
+ renderKey,
1198
1199
  toolBar,
1199
1200
  convertDonutData,
1200
1201
  convertFlatData,
@@ -113,7 +113,7 @@ function _unsupported_iterable_to_array(o, minLen) {
113
113
  }
114
114
  import { ConfigProvider } from "antd";
115
115
  import classNames from "clsx";
116
- import React, { useContext, useMemo, useRef } from "react";
116
+ import React, { useContext, useLayoutEffect, useMemo, useRef } from "react";
117
117
  import { Line } from "react-chartjs-2";
118
118
  import { ChartContainer, ChartFilter, ChartStatistic, ChartToolBar, downloadChart } from "../components";
119
119
  import { defaultColorList } from "../const";
@@ -146,7 +146,9 @@ var LineChart = function LineChart(_0) {
146
146
  ]);
147
147
  var _props_styles, _props_styles1;
148
148
  // 注册 Chart.js 组件
149
- registerLineChartComponents();
149
+ useLayoutEffect(function() {
150
+ registerLineChartComponents();
151
+ }, []);
150
152
  // 响应式尺寸
151
153
  var _useResponsiveSize = useResponsiveSize(width, height), responsiveWidth = _useResponsiveSize.responsiveWidth, responsiveHeight = _useResponsiveSize.responsiveHeight, isMobile = _useResponsiveSize.isMobile;
152
154
  // 样式注册
@@ -10,6 +10,8 @@ export interface ChartErrorBoundaryProps {
10
10
  }
11
11
  export interface ChartErrorBoundaryState {
12
12
  hasError: boolean;
13
+ /** 用于重试时销毁并重建 children */
14
+ retryKey: number;
13
15
  }
14
16
  /**
15
17
  * ChartErrorBoundary 组件 - 图表错误边界组件
@@ -405,6 +407,7 @@ declare class ChartErrorBoundary extends React.Component<ChartErrorBoundaryProps
405
407
  'comment.jumpTo': string;
406
408
  'chart.renderFailed': string;
407
409
  'chart.renderFailedSubTitle': string;
410
+ 'chart.retry': string;
408
411
  'chart.legend.show': string;
409
412
  'chart.legend.hide': string;
410
413
  'chart.legend.prevPage': string;
@@ -794,6 +797,7 @@ declare class ChartErrorBoundary extends React.Component<ChartErrorBoundaryProps
794
797
  'comment.jumpTo': string;
795
798
  'chart.renderFailed': string;
796
799
  'chart.renderFailedSubTitle': string;
800
+ 'chart.retry': string;
797
801
  'chart.legend.show': string;
798
802
  'chart.legend.hide': string;
799
803
  'chart.legend.prevPage': string;
@@ -819,7 +823,11 @@ declare class ChartErrorBoundary extends React.Component<ChartErrorBoundaryProps
819
823
  }) => void) | undefined;
820
824
  }>;
821
825
  context: React.ContextType<typeof I18nContext>;
826
+ /** 本轮错误是否已自动重试过,用于“自动重试一次” */
827
+ private _hasAutoRetried;
822
828
  constructor(props: ChartErrorBoundaryProps);
829
+ /** 重试:清除错误状态并递增 key,使 children 销毁后重建 */
830
+ handleRetry: () => void;
823
831
  static getDerivedStateFromError(_error: Error): Partial<ChartErrorBoundaryState>;
824
832
  componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
825
833
  render(): ReactNode;
@@ -84,7 +84,7 @@ function _is_native_reflect_construct() {
84
84
  return !!result;
85
85
  })();
86
86
  }
87
- import { Result } from "antd";
87
+ import { Button, Result } from "antd";
88
88
  import React from "react";
89
89
  import { I18nContext } from "../../../../I18n";
90
90
  var _React_Component;
@@ -123,9 +123,18 @@ var _React_Component;
123
123
  var _this;
124
124
  _this = _call_super(this, ChartErrorBoundary, [
125
125
  props
126
- ]);
126
+ ]), /** 本轮错误是否已自动重试过,用于“自动重试一次” */ _define_property(_this, "_hasAutoRetried", false), /** 重试:清除错误状态并递增 key,使 children 销毁后重建 */ _define_property(_this, "handleRetry", function() {
127
+ _this._hasAutoRetried = false;
128
+ _this.setState(function(prev) {
129
+ return {
130
+ hasError: false,
131
+ retryKey: prev.retryKey + 1
132
+ };
133
+ });
134
+ });
127
135
  _this.state = {
128
- hasError: false
136
+ hasError: false,
137
+ retryKey: 0
129
138
  };
130
139
  return _this;
131
140
  }
@@ -141,6 +150,16 @@ var _React_Component;
141
150
  if (process.env.NODE_ENV === 'development') {
142
151
  console.error('ChartErrorBoundary caught an error:', error, errorInfo);
143
152
  }
153
+ // 自动重试一次:清除错误并递增 key,使 children 销毁后重建
154
+ if (!this._hasAutoRetried) {
155
+ this._hasAutoRetried = true;
156
+ this.setState(function(prev) {
157
+ return {
158
+ hasError: false,
159
+ retryKey: prev.retryKey + 1
160
+ };
161
+ });
162
+ }
144
163
  }
145
164
  },
146
165
  {
@@ -154,15 +173,21 @@ var _React_Component;
154
173
  if (fallback) {
155
174
  return fallback;
156
175
  }
157
- // 使用 antd Result 组件的简洁错误UI
176
+ // 使用 antd Result 组件的简洁错误 UI,带重试按钮
158
177
  var locale = (_this_context = this.context) === null || _this_context === void 0 ? void 0 : _this_context.locale;
159
178
  return /*#__PURE__*/ React.createElement(Result, {
160
179
  status: "error",
161
180
  title: (locale === null || locale === void 0 ? void 0 : locale['chart.renderFailed']) || '图表渲染失败',
162
- subTitle: (locale === null || locale === void 0 ? void 0 : locale['chart.renderFailedSubTitle']) || '图表组件遇到了一个错误,请稍后重试'
181
+ subTitle: (locale === null || locale === void 0 ? void 0 : locale['chart.renderFailedSubTitle']) || '图表组件遇到了一个错误,请稍后重试',
182
+ extra: /*#__PURE__*/ React.createElement(Button, {
183
+ type: "primary",
184
+ onClick: this.handleRetry
185
+ }, (locale === null || locale === void 0 ? void 0 : locale['chart.retry']) || '重新渲染')
163
186
  });
164
187
  }
165
- return children;
188
+ return /*#__PURE__*/ React.createElement(React.Fragment, {
189
+ key: this.state.retryKey
190
+ }, children);
166
191
  }
167
192
  }
168
193
  ], [
@@ -448,7 +448,7 @@ export { ChartFilter, ChartToolBar, downloadChart } from "./components";
448
448
  left: 0,
449
449
  right: 0,
450
450
  bottom: 0,
451
- zIndex: 1,
451
+ zIndex: 0,
452
452
  width: '100%',
453
453
  opacity: 0,
454
454
  height: '100%',
@@ -457,6 +457,8 @@ export { ChartFilter, ChartToolBar, downloadChart } from "./components";
457
457
  }
458
458
  }, children), /*#__PURE__*/ React.createElement("div", {
459
459
  style: {
460
+ position: 'relative',
461
+ zIndex: 1,
460
462
  display: 'flex',
461
463
  flexWrap: 'wrap',
462
464
  flexDirection: minWidth < 400 ? 'column' : 'row',
@@ -147,9 +147,6 @@ var genStyle = function genStyle(token) {
147
147
  '&-empty': {
148
148
  textAlign: 'center',
149
149
  color: '#6B7280',
150
- backgroundColor: '#fff',
151
- borderRadius: '12px',
152
- border: '1px solid #e1e5e9',
153
150
  padding: '0.5rem',
154
151
  position: 'relative',
155
152
  zIndex: 1,
@@ -59,7 +59,6 @@ function _unsupported_iterable_to_array(o, minLen) {
59
59
  import { ChevronUp } from "@sofa-design/icons";
60
60
  import { ConfigProvider } from "antd";
61
61
  import classNames from "clsx";
62
- import { AnimatePresence, motion } from "framer-motion";
63
62
  import { useMergedState } from "rc-util";
64
63
  import React, { memo, useContext, useMemo } from "react";
65
64
  import { ActionIconBox } from "../Components/ActionIconBox";
@@ -67,7 +66,7 @@ import { useRefFunction } from "../Hooks/useRefFunction";
67
66
  import { I18nContext } from "../I18n";
68
67
  import { StatusIcon } from "./components/StatusIcon";
69
68
  import { TaskListItem } from "./components/TaskListItem";
70
- import { COLLAPSE_TRANSITION, COLLAPSE_VARIANTS, getArrowRotation } from "./constants";
69
+ import { getArrowRotation } from "./constants";
71
70
  import { useStyle } from "./style";
72
71
  var getDefaultExpandedKeys = function getDefaultExpandedKeys(items, isControlled) {
73
72
  return isControlled ? [] : items.map(function(item) {
@@ -193,18 +192,10 @@ export var TaskList = /*#__PURE__*/ memo(function(param) {
193
192
  }
194
193
  }, /*#__PURE__*/ React.createElement(ChevronUp, {
195
194
  "data-testid": "task-list-simple-arrow"
196
- })))), /*#__PURE__*/ React.createElement(AnimatePresence, {
197
- initial: false
198
- }, simpleExpanded && /*#__PURE__*/ React.createElement(motion.div, {
199
- key: "simple-task-list-content",
200
- variants: COLLAPSE_VARIANTS,
201
- initial: "collapsed",
202
- animate: "expanded",
203
- exit: "collapsed",
204
- transition: COLLAPSE_TRANSITION,
195
+ })))), simpleExpanded && /*#__PURE__*/ React.createElement("div", {
205
196
  className: classNames("".concat(simpleCls, "-content"), hashId)
206
197
  }, /*#__PURE__*/ React.createElement("div", {
207
198
  className: classNames("".concat(simpleCls, "-list"), hashId)
208
- }, renderItems())))));
199
+ }, renderItems()))));
209
200
  });
210
201
  TaskList.displayName = 'TaskList';