@ant-design/agentic-ui 2.29.58 → 2.30.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 (55) hide show
  1. package/dist/Bubble/List/index.d.ts +7 -0
  2. package/dist/Bubble/List/index.js +10 -1
  3. package/dist/Bubble/MessagesContent/BubbleExtra.js +9 -4
  4. package/dist/Bubble/MessagesContent/MarkdownPreview.js +27 -3
  5. package/dist/Bubble/UserBubble.js +3 -1
  6. package/dist/Bubble/type.d.ts +7 -0
  7. package/dist/Hooks/useLanguage.d.ts +1 -0
  8. package/dist/I18n/locales.d.ts +1 -0
  9. package/dist/I18n/locales.js +3 -1
  10. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +1 -1
  11. package/dist/MarkdownEditor/plugin.d.ts +15 -0
  12. package/dist/MarkdownEditor/style.js +156 -326
  13. package/dist/MarkdownEditor/types.d.ts +9 -0
  14. package/dist/MarkdownInputField/AttachmentButton/AttachmentButtonPopover.js +1 -1
  15. package/dist/MarkdownInputField/FileUploadManager/index.js +3 -2
  16. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.js +10 -3
  17. package/dist/MarkdownRenderer/AnimationText.d.ts +22 -0
  18. package/dist/MarkdownRenderer/AnimationText.js +124 -0
  19. package/dist/MarkdownRenderer/CharacterQueue.d.ts +36 -0
  20. package/dist/MarkdownRenderer/CharacterQueue.js +188 -0
  21. package/dist/MarkdownRenderer/MarkdownRenderer.d.ts +13 -0
  22. package/dist/MarkdownRenderer/MarkdownRenderer.js +348 -0
  23. package/dist/MarkdownRenderer/index.d.ts +11 -0
  24. package/dist/MarkdownRenderer/index.js +9 -0
  25. package/dist/MarkdownRenderer/renderers/ChartRenderer.d.ts +12 -0
  26. package/dist/MarkdownRenderer/renderers/ChartRenderer.js +395 -0
  27. package/dist/MarkdownRenderer/renderers/CodeRenderer.d.ts +7 -0
  28. package/dist/MarkdownRenderer/renderers/CodeRenderer.js +218 -0
  29. package/dist/MarkdownRenderer/renderers/MermaidRenderer.d.ts +7 -0
  30. package/dist/MarkdownRenderer/renderers/MermaidRenderer.js +43 -0
  31. package/dist/MarkdownRenderer/renderers/SchemaRenderer.d.ts +15 -0
  32. package/dist/MarkdownRenderer/renderers/SchemaRenderer.js +115 -0
  33. package/dist/MarkdownRenderer/renderers/index.d.ts +4 -0
  34. package/dist/MarkdownRenderer/renderers/index.js +4 -0
  35. package/dist/MarkdownRenderer/style.d.ts +16 -0
  36. package/dist/MarkdownRenderer/style.js +46 -0
  37. package/dist/MarkdownRenderer/types.d.ts +74 -0
  38. package/dist/MarkdownRenderer/types.js +1 -0
  39. package/dist/MarkdownRenderer/useMarkdownToReact.d.ts +23 -0
  40. package/dist/MarkdownRenderer/useMarkdownToReact.js +1240 -0
  41. package/dist/MarkdownRenderer/useStreaming.d.ts +29 -0
  42. package/dist/MarkdownRenderer/useStreaming.js +392 -0
  43. package/dist/Plugins/chart/AreaChart/index.js +4 -2
  44. package/dist/Plugins/chart/LineChart/index.js +4 -2
  45. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.d.ts +8 -0
  46. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.js +31 -6
  47. package/dist/Plugins/mermaid/style.js +0 -3
  48. package/dist/TaskList/TaskList.js +3 -12
  49. package/dist/TaskList/components/TaskListItem.js +3 -12
  50. package/dist/ThoughtChainList/ThoughtChainListItem.js +2 -4
  51. package/dist/ThoughtChainList/index.js +4 -21
  52. package/dist/ToolUseBarThink/index.js +20 -59
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.js +2 -0
  55. package/package.json +2 -1
@@ -0,0 +1,348 @@
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 _object_spread(target) {
50
+ for(var i = 1; i < arguments.length; i++){
51
+ var source = arguments[i] != null ? arguments[i] : {};
52
+ var ownKeys = Object.keys(source);
53
+ if (typeof Object.getOwnPropertySymbols === "function") {
54
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
55
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
56
+ }));
57
+ }
58
+ ownKeys.forEach(function(key) {
59
+ _define_property(target, key, source[key]);
60
+ });
61
+ }
62
+ return target;
63
+ }
64
+ function ownKeys(object, enumerableOnly) {
65
+ var keys = Object.keys(object);
66
+ if (Object.getOwnPropertySymbols) {
67
+ var symbols = Object.getOwnPropertySymbols(object);
68
+ if (enumerableOnly) {
69
+ symbols = symbols.filter(function(sym) {
70
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
71
+ });
72
+ }
73
+ keys.push.apply(keys, symbols);
74
+ }
75
+ return keys;
76
+ }
77
+ function _object_spread_props(target, source) {
78
+ source = source != null ? source : {};
79
+ if (Object.getOwnPropertyDescriptors) {
80
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
81
+ } else {
82
+ ownKeys(Object(source)).forEach(function(key) {
83
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
84
+ });
85
+ }
86
+ return target;
87
+ }
88
+ function _object_without_properties(source, excluded) {
89
+ if (source == null) return {};
90
+ var target = {}, sourceKeys, key, i;
91
+ if (typeof Reflect !== "undefined" && Reflect.ownKeys) {
92
+ sourceKeys = Reflect.ownKeys(source);
93
+ for(i = 0; i < sourceKeys.length; i++){
94
+ key = sourceKeys[i];
95
+ if (excluded.indexOf(key) >= 0) continue;
96
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
97
+ target[key] = source[key];
98
+ }
99
+ return target;
100
+ }
101
+ target = _object_without_properties_loose(source, excluded);
102
+ if (Object.getOwnPropertySymbols) {
103
+ sourceKeys = Object.getOwnPropertySymbols(source);
104
+ for(i = 0; i < sourceKeys.length; i++){
105
+ key = sourceKeys[i];
106
+ if (excluded.indexOf(key) >= 0) continue;
107
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
108
+ target[key] = source[key];
109
+ }
110
+ }
111
+ return target;
112
+ }
113
+ function _object_without_properties_loose(source, excluded) {
114
+ if (source == null) return {};
115
+ var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;
116
+ for(i = 0; i < sourceKeys.length; i++){
117
+ key = sourceKeys[i];
118
+ if (excluded.indexOf(key) >= 0) continue;
119
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
120
+ target[key] = source[key];
121
+ }
122
+ return target;
123
+ }
124
+ function _sliced_to_array(arr, i) {
125
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
126
+ }
127
+ function _unsupported_iterable_to_array(o, minLen) {
128
+ if (!o) return;
129
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
130
+ var n = Object.prototype.toString.call(o).slice(8, -1);
131
+ if (n === "Object" && o.constructor) n = o.constructor.name;
132
+ if (n === "Map" || n === "Set") return Array.from(n);
133
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
134
+ }
135
+ import { ConfigProvider } from "antd";
136
+ import clsx from "clsx";
137
+ import React, { forwardRef, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
138
+ import { useStyle as useContentStyle } from "../MarkdownEditor/editor/style";
139
+ import { useStyle as useEditorStyle } from "../MarkdownEditor/style";
140
+ import { CharacterQueue } from "./CharacterQueue";
141
+ import { ChartBlockRenderer } from "./renderers/ChartRenderer";
142
+ import { CodeBlockRenderer } from "./renderers/CodeRenderer";
143
+ import { MermaidBlockRenderer } from "./renderers/MermaidRenderer";
144
+ import { SchemaBlockRenderer } from "./renderers/SchemaRenderer";
145
+ import { useRendererVarStyle } from "./style";
146
+ import { useStreaming } from "./useStreaming";
147
+ import { useMarkdownToReact } from "./useMarkdownToReact";
148
+ var SCHEMA_LANGUAGES = new Set([
149
+ 'schema',
150
+ 'apaasify',
151
+ 'apassify',
152
+ 'agentar-card'
153
+ ]);
154
+ /**
155
+ * 从插件列表中收集 rendererComponents
156
+ */ var collectRendererComponents = function collectRendererComponents(plugins) {
157
+ var components = {};
158
+ if (!plugins) return components;
159
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
160
+ try {
161
+ for(var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
162
+ var plugin = _step.value;
163
+ var renderer = plugin.renderer;
164
+ if (renderer === null || renderer === void 0 ? void 0 : renderer.rendererComponents) {
165
+ Object.assign(components, renderer.rendererComponents);
166
+ }
167
+ }
168
+ } catch (err) {
169
+ _didIteratorError = true;
170
+ _iteratorError = err;
171
+ } finally{
172
+ try {
173
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
174
+ _iterator.return();
175
+ }
176
+ } finally{
177
+ if (_didIteratorError) {
178
+ throw _iteratorError;
179
+ }
180
+ }
181
+ }
182
+ return components;
183
+ };
184
+ /**
185
+ * 默认的代码块路由——根据语言分发到对应渲染器
186
+ */ var DefaultCodeRouter = function DefaultCodeRouter(props) {
187
+ var language = props.language, pluginComponents = props.pluginComponents, apaasifyRender = props.apaasifyRender, rest = _object_without_properties(props, [
188
+ "language",
189
+ "pluginComponents",
190
+ "apaasifyRender"
191
+ ]);
192
+ if (language === 'mermaid') {
193
+ var MermaidComp = pluginComponents.mermaid || MermaidBlockRenderer;
194
+ return /*#__PURE__*/ React.createElement(MermaidComp, _object_spread_props(_object_spread({}, rest), {
195
+ language: language
196
+ }));
197
+ }
198
+ if (language === 'chart' || language === 'json-chart') {
199
+ var ChartComp = pluginComponents.chart || ChartBlockRenderer;
200
+ return /*#__PURE__*/ React.createElement(ChartComp, _object_spread_props(_object_spread({}, rest), {
201
+ language: language
202
+ }));
203
+ }
204
+ if (SCHEMA_LANGUAGES.has(language)) {
205
+ var SchemaComp = pluginComponents.schema || SchemaBlockRenderer;
206
+ return /*#__PURE__*/ React.createElement(SchemaComp, _object_spread_props(_object_spread({}, rest), {
207
+ language: language,
208
+ apaasifyRender: apaasifyRender
209
+ }));
210
+ }
211
+ var CodeComp = pluginComponents.code || CodeBlockRenderer;
212
+ return /*#__PURE__*/ React.createElement(CodeComp, _object_spread_props(_object_spread({}, rest), {
213
+ language: language
214
+ }));
215
+ };
216
+ /**
217
+ * MarkdownRenderer —— 流式/只读场景下的轻量 Markdown 渲染器。
218
+ *
219
+ * 核心优势:
220
+ * - 不创建 Slate 实例,无编辑态开销
221
+ * - 字符队列驱动流式逐字输出动画
222
+ * - Markdown → hast → React 元素树(hast-util-to-jsx-runtime)
223
+ * - 特殊块(code / mermaid / chart / katex)通过组件映射拦截渲染
224
+ */ var InternalMarkdownRenderer = /*#__PURE__*/ forwardRef(function(props, ref) {
225
+ var content = props.content, _props_streaming = props.streaming, streaming = _props_streaming === void 0 ? false : _props_streaming, isFinished = props.isFinished, queueOptions = props.queueOptions, plugins = props.plugins, remarkPlugins = props.remarkPlugins, htmlConfig = props.htmlConfig, className = props.className, style = props.style, customPrefixCls = props.prefixCls, linkConfig = props.linkConfig, apaasify = props.apaasify;
226
+ var getPrefixCls = useContext(ConfigProvider.ConfigContext).getPrefixCls;
227
+ // 复用 MarkdownEditor 的 CSS 前缀和样式,保持渲染一致性
228
+ var prefixCls = getPrefixCls('agentic-md-editor', customPrefixCls);
229
+ var _useEditorStyle = useEditorStyle(prefixCls), wrapSSR = _useEditorStyle.wrapSSR, hashId = _useEditorStyle.hashId;
230
+ // 注册 content 层的样式(段落间距、链接、blockquote 等)
231
+ var contentCls = "".concat(prefixCls, "-content");
232
+ var _useContentStyle = useContentStyle(contentCls, {}), wrapContentSSR = _useContentStyle.wrapSSR;
233
+ // 注册间距 CSS 变量回退值(:where 低优先级,不覆盖宿主定义)
234
+ var _useRendererVarStyle = useRendererVarStyle(prefixCls), wrapVarSSR = _useRendererVarStyle.wrapSSR;
235
+ var containerRef = useRef(null);
236
+ var _useState = _sliced_to_array(useState(content || ''), 2), displayedContent = _useState[0], setDisplayedContent = _useState[1];
237
+ var queueRef = useRef(null);
238
+ useImperativeHandle(ref, function() {
239
+ return {
240
+ nativeElement: containerRef.current,
241
+ getDisplayedContent: function getDisplayedContent() {
242
+ return displayedContent;
243
+ }
244
+ };
245
+ });
246
+ // 收集插件的 rendererComponents
247
+ var pluginComponents = useMemo(function() {
248
+ return collectRendererComponents(plugins);
249
+ }, [
250
+ plugins
251
+ ]);
252
+ // 字符队列管理
253
+ useEffect(function() {
254
+ if (!streaming) {
255
+ // 非流式:直接展示全部内容
256
+ setDisplayedContent(content || '');
257
+ return;
258
+ }
259
+ if (!queueRef.current) {
260
+ queueRef.current = new CharacterQueue(function(displayed) {
261
+ return setDisplayedContent(displayed);
262
+ }, queueOptions);
263
+ }
264
+ queueRef.current.push(content || '');
265
+ return undefined;
266
+ }, [
267
+ content,
268
+ streaming,
269
+ queueOptions
270
+ ]);
271
+ // 流式完成时 flush 所有剩余内容
272
+ useEffect(function() {
273
+ if (isFinished && queueRef.current) {
274
+ queueRef.current.complete();
275
+ }
276
+ }, [
277
+ isFinished
278
+ ]);
279
+ // 清理
280
+ useEffect(function() {
281
+ return function() {
282
+ var _queueRef_current;
283
+ (_queueRef_current = queueRef.current) === null || _queueRef_current === void 0 ? void 0 : _queueRef_current.dispose();
284
+ queueRef.current = null;
285
+ };
286
+ }, []);
287
+ // 非流式内容变化时同步
288
+ useEffect(function() {
289
+ if (!streaming) {
290
+ setDisplayedContent(content || '');
291
+ }
292
+ }, [
293
+ content,
294
+ streaming
295
+ ]);
296
+ // 构建组件映射
297
+ // code 渲染器通过 pre override 在 useMarkdownToReact 中路由,
298
+ // 不直接映射到 <code> 标签(否则会影响行内代码 `code`)
299
+ var apaasifyRender = useMemo(function() {
300
+ if ((apaasify === null || apaasify === void 0 ? void 0 : apaasify.enable) && apaasify.render) return apaasify.render;
301
+ return undefined;
302
+ }, [
303
+ apaasify
304
+ ]);
305
+ var components = useMemo(function() {
306
+ var codeRouter = function codeRouter(codeProps) {
307
+ return /*#__PURE__*/ React.createElement(DefaultCodeRouter, _object_spread_props(_object_spread({}, codeProps), {
308
+ pluginComponents: pluginComponents,
309
+ apaasifyRender: apaasifyRender
310
+ }));
311
+ };
312
+ codeRouter.displayName = 'CodeRouter';
313
+ return _object_spread({
314
+ __codeBlock: codeRouter
315
+ }, pluginComponents);
316
+ }, [
317
+ pluginComponents,
318
+ apaasifyRender
319
+ ]);
320
+ // 流式缓存:将不完整的 Markdown token 暂缓,避免 parser 错误解析
321
+ var safeContent = useStreaming(displayedContent, streaming);
322
+ var reactContent = useMarkdownToReact(safeContent, {
323
+ remarkPlugins: remarkPlugins,
324
+ htmlConfig: htmlConfig,
325
+ components: components,
326
+ prefixCls: prefixCls,
327
+ linkConfig: linkConfig,
328
+ streaming: streaming
329
+ });
330
+ return wrapVarSSR(wrapSSR(wrapContentSSR(/*#__PURE__*/ React.createElement("div", {
331
+ ref: containerRef,
332
+ className: clsx(prefixCls, "".concat(prefixCls, "-readonly"), hashId, className),
333
+ style: style
334
+ }, /*#__PURE__*/ React.createElement("div", {
335
+ className: clsx("".concat(prefixCls, "-container"), hashId),
336
+ style: {
337
+ display: 'block'
338
+ }
339
+ }, /*#__PURE__*/ React.createElement("div", {
340
+ className: clsx(contentCls, hashId),
341
+ style: {
342
+ whiteSpace: 'normal',
343
+ wordWrap: 'normal'
344
+ }
345
+ }, reactContent))))));
346
+ });
347
+ InternalMarkdownRenderer.displayName = 'MarkdownRenderer';
348
+ export default InternalMarkdownRenderer;
@@ -0,0 +1,11 @@
1
+ export { CharacterQueue } from './CharacterQueue';
2
+ export { default as MarkdownRenderer } from './MarkdownRenderer';
3
+ export { ChartBlockRenderer } from './renderers/ChartRenderer';
4
+ export { CodeBlockRenderer } from './renderers/CodeRenderer';
5
+ export { MermaidBlockRenderer } from './renderers/MermaidRenderer';
6
+ export { SchemaBlockRenderer } from './renderers/SchemaRenderer';
7
+ export type { CharacterQueueOptions, MarkdownRendererProps, MarkdownRendererRef, RenderMode, RendererBlockProps, } from './types';
8
+ export { default as AnimationText } from './AnimationText';
9
+ export type { AnimationConfig, AnimationTextProps } from './AnimationText';
10
+ export { markdownToReactSync, useMarkdownToReact } from './useMarkdownToReact';
11
+ export { useStreaming } from './useStreaming';
@@ -0,0 +1,9 @@
1
+ export { CharacterQueue } from "./CharacterQueue";
2
+ export { default as MarkdownRenderer } from "./MarkdownRenderer";
3
+ export { ChartBlockRenderer } from "./renderers/ChartRenderer";
4
+ export { CodeBlockRenderer } from "./renderers/CodeRenderer";
5
+ export { MermaidBlockRenderer } from "./renderers/MermaidRenderer";
6
+ export { SchemaBlockRenderer } from "./renderers/SchemaRenderer";
7
+ export { default as AnimationText } from "./AnimationText";
8
+ export { markdownToReactSync, useMarkdownToReact } from "./useMarkdownToReact";
9
+ export { useStreaming } from "./useStreaming";
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { RendererBlockProps } from '../types';
3
+ /**
4
+ * 图表渲染器——复用 MarkdownEditor 的 ChartRender 组件。
5
+ *
6
+ * 在 MarkdownEditor 中,图表由 HTML 注释(配置)+ 表格(数据)组合而成,
7
+ * Slate 解析器将其合并为 chart 节点(otherProps.config / dataSource / columns)。
8
+ *
9
+ * 在 MarkdownRenderer 中,chart 代码块的内容是序列化后的 JSON,
10
+ * 包含 config、dataSource、columns 等字段。
11
+ */
12
+ export declare const ChartBlockRenderer: React.FC<RendererBlockProps>;