@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
@@ -169,6 +169,17 @@ export type BubbleListProps = {
169
169
  onAvatarClick?: BubbleProps['onAvatarClick'];
170
170
  onDoubleClick?: BubbleProps['onDoubleClick'];
171
171
  markdownRenderConfig?: BubbleProps['markdownRenderConfig'];
172
+ /**
173
+ * 渲染模式快捷设置
174
+ * - 'slate': 使用 Slate 编辑器渲染(默认)
175
+ * - 'markdown': 使用轻量 MarkdownRenderer(无 Slate 实例,性能更优)
176
+ * 等效于 markdownRenderConfig={{ renderMode }}
177
+ */
178
+ renderMode?: 'slate' | 'markdown';
179
+ /**
180
+ * 与 `renderMode` 等价,兼容协议字段 `renderType=markdown`
181
+ */
182
+ renderType?: 'slate' | 'markdown';
172
183
  docListProps?: BubbleProps['docListProps'];
173
184
  /**
174
185
  * 动态控制复制按钮的显隐
@@ -121,7 +121,19 @@ import { useStyle } from "./style";
121
121
  * - 支持滚动和触摸事件
122
122
  * - 提供消息复制功能
123
123
  */ export var BubbleList = function BubbleList(props) {
124
- var bubbleListRef = props.bubbleListRef, bubbleRenderConfig = props.bubbleRenderConfig, className = props.className, legacyLoading = props.loading, isLoading = props.isLoading, styles = props.styles, classNames = props.classNames, markdownRenderConfig = props.markdownRenderConfig, userMeta = props.userMeta, assistantMeta = props.assistantMeta, _props_bubbleList = props.bubbleList, bubbleList = _props_bubbleList === void 0 ? [] : _props_bubbleList, style = props.style, onScroll = props.onScroll, onWheel = props.onWheel, onTouchMove = props.onTouchMove;
124
+ var bubbleListRef = props.bubbleListRef, bubbleRenderConfig = props.bubbleRenderConfig, className = props.className, legacyLoading = props.loading, isLoading = props.isLoading, styles = props.styles, classNames = props.classNames, markdownRenderConfigProp = props.markdownRenderConfig, renderMode = props.renderMode, renderType = props.renderType, userMeta = props.userMeta, assistantMeta = props.assistantMeta, _props_bubbleList = props.bubbleList, bubbleList = _props_bubbleList === void 0 ? [] : _props_bubbleList, style = props.style, onScroll = props.onScroll, onWheel = props.onWheel, onTouchMove = props.onTouchMove;
125
+ // 合并 renderMode / renderType 快捷属性到 markdownRenderConfig
126
+ var markdownRenderConfig = useMemo(function() {
127
+ var _ref, _ref1;
128
+ var mode = (_ref = (_ref1 = renderMode !== null && renderMode !== void 0 ? renderMode : renderType) !== null && _ref1 !== void 0 ? _ref1 : markdownRenderConfigProp === null || markdownRenderConfigProp === void 0 ? void 0 : markdownRenderConfigProp.renderMode) !== null && _ref !== void 0 ? _ref : markdownRenderConfigProp === null || markdownRenderConfigProp === void 0 ? void 0 : markdownRenderConfigProp.renderType;
129
+ return mode ? _object_spread_props(_object_spread({}, markdownRenderConfigProp), {
130
+ renderMode: mode
131
+ }) : markdownRenderConfigProp;
132
+ }, [
133
+ markdownRenderConfigProp,
134
+ renderMode,
135
+ renderType
136
+ ]);
125
137
  // 兼容旧属性
126
138
  var loading = isLoading !== null && isLoading !== void 0 ? isLoading : legacyLoading;
127
139
  var getPrefixCls = useContext(ConfigProvider.ConfigContext).getPrefixCls;
@@ -1,5 +1,7 @@
1
1
  import { theme } from "antd";
2
2
  import React from "react";
3
+ import { AnswerAlert } from "../../AnswerAlert";
4
+ import { useLocale } from "../../I18n";
3
5
  /**
4
6
  * EXCEPTION 组件 - 异常消息组件
5
7
  *
@@ -33,7 +35,9 @@ import React from "react";
33
35
  */ export var EXCEPTION = function EXCEPTION(param) {
34
36
  var extra = param.extra, content = param.content;
35
37
  var token = theme.useToken().token;
36
- return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("div", {
38
+ var locale = useLocale();
39
+ var messageText = String(content !== null && content !== void 0 ? content : '').trim();
40
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, messageText ? /*#__PURE__*/ React.createElement("div", {
37
41
  style: {
38
42
  color: token.colorError,
39
43
  lineHeight: '24px',
@@ -41,5 +45,10 @@ import React from "react";
41
45
  wordBreak: 'break-all',
42
46
  textWrap: 'wrap'
43
47
  }
44
- }, content), extra);
48
+ }, content) : /*#__PURE__*/ React.createElement(AnswerAlert, {
49
+ message: (locale === null || locale === void 0 ? void 0 : locale['chat.message.generateFailed']) || '生成回答失败,请重试',
50
+ type: "error",
51
+ showIcon: true,
52
+ closable: true
53
+ }), extra);
45
54
  };
@@ -55,6 +55,7 @@ import React, { useContext, useEffect, useMemo } from "react";
55
55
  import { ErrorBoundary } from "react-error-boundary";
56
56
  import { MarkdownEditor, parserMdToSchema } from "../..";
57
57
  import { useLocale } from "../../I18n";
58
+ import { MarkdownRenderer } from "../../MarkdownRenderer";
58
59
  import { BubbleConfigContext } from "../BubbleConfigProvide";
59
60
  import { MessagesContext } from "./BubbleContext";
60
61
  /**
@@ -93,7 +94,8 @@ import { MessagesContext } from "./BubbleContext";
93
94
  * />
94
95
  * ```
95
96
  */ export var MarkdownPreview = function MarkdownPreview(props) {
96
- var _props_originData;
97
+ var _ref, _ref1;
98
+ var _props_markdownRenderConfig, _props_markdownRenderConfig1, _props_originData, _props_originData1;
97
99
  var content = props.content, extra = props.extra, typing = props.typing, htmlRef = props.htmlRef, fncProps = props.fncProps, docListNode = props.docListNode, beforeContent = props.beforeContent, afterContent = props.afterContent;
98
100
  var MarkdownEditorRef = React.useRef(undefined);
99
101
  var hidePadding = (useContext(MessagesContext) || {}).hidePadding;
@@ -102,6 +104,7 @@ import { MessagesContext } from "./BubbleContext";
102
104
  var standalone = config === null || config === void 0 ? void 0 : config.standalone;
103
105
  var extraShowOnHover = config === null || config === void 0 ? void 0 : config.extraShowOnHover;
104
106
  var token = theme.useToken().token;
107
+ var renderMode = (_ref = (_ref1 = (_props_markdownRenderConfig = props.markdownRenderConfig) === null || _props_markdownRenderConfig === void 0 ? void 0 : _props_markdownRenderConfig.renderMode) !== null && _ref1 !== void 0 ? _ref1 : (_props_markdownRenderConfig1 = props.markdownRenderConfig) === null || _props_markdownRenderConfig1 === void 0 ? void 0 : _props_markdownRenderConfig1.renderType) !== null && _ref !== void 0 ? _ref : 'slate';
105
108
  var isPaddingHidden = useMemo(function() {
106
109
  return !!extra;
107
110
  }, [
@@ -110,14 +113,35 @@ import { MessagesContext } from "./BubbleContext";
110
113
  ]);
111
114
  useEffect(function() {
112
115
  var _MarkdownEditorRef_current;
116
+ if (renderMode !== 'slate') return;
113
117
  var schema = parserMdToSchema(content).schema;
114
118
  (_MarkdownEditorRef_current = MarkdownEditorRef.current) === null || _MarkdownEditorRef_current === void 0 ? void 0 : _MarkdownEditorRef_current.store.updateNodeList(schema);
115
119
  }, [
116
- content
120
+ content,
121
+ renderMode
117
122
  ]);
118
123
  var markdown = useMemo(function() {
119
124
  var _ref;
120
125
  var _content_includes, _htmlRef_current, _htmlRef_current1, _props_markdownRenderConfig, _props_originData, _props_originData1, _props_originData2, _props_markdownRenderConfig1, _props_markdownRenderConfig2, _props_markdownRenderConfig3;
126
+ // MarkdownRenderer 渲染路径——轻量,不创建 Slate 实例
127
+ if (renderMode === 'markdown') {
128
+ var _props_originData3, _props_markdownRenderConfig4, _props_markdownRenderConfig5, _props_markdownRenderConfig6, _props_markdownRenderConfig7;
129
+ return /*#__PURE__*/ React.createElement(MarkdownRenderer, {
130
+ content: content,
131
+ streaming: typing,
132
+ isFinished: (_props_originData3 = props.originData) === null || _props_originData3 === void 0 ? void 0 : _props_originData3.isFinished,
133
+ plugins: (_props_markdownRenderConfig4 = props.markdownRenderConfig) === null || _props_markdownRenderConfig4 === void 0 ? void 0 : _props_markdownRenderConfig4.plugins,
134
+ fncProps: fncProps,
135
+ style: _object_spread({
136
+ maxWidth: standalone ? '100%' : undefined,
137
+ padding: isPaddingHidden ? 0 : undefined,
138
+ margin: isPaddingHidden ? 0 : undefined
139
+ }, ((_props_markdownRenderConfig5 = props.markdownRenderConfig) === null || _props_markdownRenderConfig5 === void 0 ? void 0 : _props_markdownRenderConfig5.style) || {}),
140
+ codeProps: (_props_markdownRenderConfig6 = props.markdownRenderConfig) === null || _props_markdownRenderConfig6 === void 0 ? void 0 : _props_markdownRenderConfig6.codeProps,
141
+ apaasify: (_props_markdownRenderConfig7 = props.markdownRenderConfig) === null || _props_markdownRenderConfig7 === void 0 ? void 0 : _props_markdownRenderConfig7.apaasify
142
+ });
143
+ }
144
+ // Slate 渲染路径——保持向后兼容
121
145
  var minWidth = (content === null || content === void 0 ? void 0 : (_content_includes = content.includes) === null || _content_includes === void 0 ? void 0 : _content_includes.call(content, 'chartType')) ? standalone ? Math.max(((htmlRef === null || htmlRef === void 0 ? void 0 : (_htmlRef_current = htmlRef.current) === null || _htmlRef_current === void 0 ? void 0 : _htmlRef_current.clientWidth) || 600) - 23, 500) : Math.min(((htmlRef === null || htmlRef === void 0 ? void 0 : (_htmlRef_current1 = htmlRef.current) === null || _htmlRef_current1 === void 0 ? void 0 : _htmlRef_current1.clientWidth) || 600) - 128, 500) : undefined;
122
146
  return /*#__PURE__*/ React.createElement(MarkdownEditor, _object_spread_props(_object_spread({}, props.markdownRenderConfig || {}), {
123
147
  fncProps: fncProps,
@@ -154,8 +178,13 @@ import { MessagesContext } from "./BubbleContext";
154
178
  hidePadding,
155
179
  typing,
156
180
  (_props_originData = props.originData) === null || _props_originData === void 0 ? void 0 : _props_originData.isLast,
181
+ (_props_originData1 = props.originData) === null || _props_originData1 === void 0 ? void 0 : _props_originData1.isFinished,
157
182
  isPaddingHidden,
158
- content
183
+ content,
184
+ renderMode,
185
+ props.markdownRenderConfig,
186
+ fncProps,
187
+ standalone
159
188
  ]);
160
189
  var errorDom = /*#__PURE__*/ React.createElement("div", {
161
190
  style: {
@@ -182,7 +211,8 @@ import { MessagesContext } from "./BubbleContext";
182
211
  }, beforeContent, markdown, docListNode, afterContent), extra);
183
212
  }
184
213
  // extraShowOnHover 开启时,无 extra 直接返回内容,避免 hover 出现空浮层
185
- if (!extra) {
214
+ // 生成中(typing)时不使用 Popover,避免 hover 展示 extra
215
+ if (!extra || typing) {
186
216
  return /*#__PURE__*/ React.createElement("div", {
187
217
  style: {
188
218
  display: 'flex',
@@ -274,6 +274,12 @@ import { EXCEPTION } from "./EXCEPTION";
274
274
  import { MarkdownPreview } from "./MarkdownPreview";
275
275
  import { useMessagesContentStyle } from "./style";
276
276
  export var LOADING_FLAT = '...';
277
+ var THINKING_FALLBACK_TEXT = '思考中...';
278
+ var THINKING_DOT_INDICES = [
279
+ 0,
280
+ 1,
281
+ 2
282
+ ];
277
283
  /**
278
284
  * BubbleMessageDisplay 组件 - 聊天气泡消息显示组件
279
285
  *
@@ -364,14 +370,30 @@ export var LOADING_FLAT = '...';
364
370
  contentAfterDom
365
371
  ]);
366
372
  var messageContent = useMemo(function() {
367
- var _props_originData, _props_bubbleRenderConfig, _props_bubbleRenderConfig1, _props_bubbleRenderConfig2, _props_bubbleRenderConfig3, _props_bubbleRenderConfig_extraRender, _props_bubbleRenderConfig4, _props_originData_extra_tags_includes, _props_originData_extra_tags, _props_originData_extra, _props_originData1, _props_originData2, _props_originData_extra1, _props_originData3, _props_originData_extra2, _props_originData4, _props_originData5, _props_originData_extra3, _props_originData6, _props_docListProps, _props_originData7, _props_markdownRenderConfig, _props_originData8, _props_originData9, _props_originData10;
373
+ var _props_originData, _props_bubbleRenderConfig, _props_bubbleRenderConfig1, _props_bubbleRenderConfig2, _props_bubbleRenderConfig3, _props_bubbleRenderConfig_extraRender, _props_bubbleRenderConfig4, _props_originData_extra_tags_includes, _props_originData_extra_tags, _props_originData_extra, _props_originData1, _props_originData2, _props_originData_extra1, _props_originData3, _props_originData_extra2, _props_originData4, _props_originData5, _props_originData_extra3, _props_originData6, _props_docListProps, _props_originData7, _props_markdownRenderConfig, _props_originData8, _props_originData_extra4, _props_originData9, _props_originData10, _props_originData11;
368
374
  if (content === LOADING_FLAT || !((_props_originData = props.originData) === null || _props_originData === void 0 ? void 0 : _props_originData.isFinished) && !content) {
369
375
  var _context_thoughtChain;
370
376
  if ((context === null || context === void 0 ? void 0 : (_context_thoughtChain = context.thoughtChain) === null || _context_thoughtChain === void 0 ? void 0 : _context_thoughtChain.alwaysRender) !== true) {
377
+ var _props_classNames, _props_styles;
371
378
  return wrapSSR(/*#__PURE__*/ React.createElement("div", {
372
379
  className: classNames('agent-item-default-content', "".concat(baseChatCls, "-messages-content-loading"), (context === null || context === void 0 ? void 0 : context.compact) ? "".concat(baseChatCls, "-messages-content-loading-compact") : "".concat(baseChatCls, "-messages-content-loading-default"), hashId),
373
- "data-testid": "message-content"
374
- }, (locale === null || locale === void 0 ? void 0 : locale['chat.message.thinking']) || '思考中...'));
380
+ "data-testid": "message-content",
381
+ role: "status",
382
+ "aria-live": "polite",
383
+ "aria-atomic": "true",
384
+ "aria-label": (locale === null || locale === void 0 ? void 0 : locale['chat.message.thinking']) || THINKING_FALLBACK_TEXT
385
+ }, /*#__PURE__*/ React.createElement("span", {
386
+ className: classNames("".concat(baseChatCls, "-messages-content-loading-dots"), (_props_classNames = props.classNames) === null || _props_classNames === void 0 ? void 0 : _props_classNames.bubbleLoadingIconClassName),
387
+ style: (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.bubbleLoadingIconStyle,
388
+ "data-testid": "message-thinking-dots",
389
+ "aria-hidden": "true"
390
+ }, THINKING_DOT_INDICES.map(function(dotIndex) {
391
+ return /*#__PURE__*/ React.createElement("span", {
392
+ key: dotIndex,
393
+ className: "".concat(baseChatCls, "-messages-content-loading-dot"),
394
+ "data-testid": "message-thinking-dot"
395
+ });
396
+ }))));
375
397
  }
376
398
  return null;
377
399
  }
@@ -509,8 +531,15 @@ export var LOADING_FLAT = '...';
509
531
  } : undefined
510
532
  });
511
533
  var extra = (props === null || props === void 0 ? void 0 : (_props_bubbleRenderConfig2 = props.bubbleRenderConfig) === null || _props_bubbleRenderConfig2 === void 0 ? void 0 : _props_bubbleRenderConfig2.extraRender) !== false && (props === null || props === void 0 ? void 0 : (_props_bubbleRenderConfig3 = props.bubbleRenderConfig) === null || _props_bubbleRenderConfig3 === void 0 ? void 0 : _props_bubbleRenderConfig3.extraRender) ? props === null || props === void 0 ? void 0 : (_props_bubbleRenderConfig4 = props.bubbleRenderConfig) === null || _props_bubbleRenderConfig4 === void 0 ? void 0 : (_props_bubbleRenderConfig_extraRender = _props_bubbleRenderConfig4.extraRender) === null || _props_bubbleRenderConfig_extraRender === void 0 ? void 0 : _props_bubbleRenderConfig_extraRender.call(_props_bubbleRenderConfig4, props, defaultExtra) : defaultExtra;
512
- if (content === '...' || /*#__PURE__*/ React.isValidElement(content) || props.placement !== 'left' || (props === null || props === void 0 ? void 0 : (_props_originData1 = props.originData) === null || _props_originData1 === void 0 ? void 0 : (_props_originData_extra = _props_originData1.extra) === null || _props_originData_extra === void 0 ? void 0 : (_props_originData_extra_tags = _props_originData_extra.tags) === null || _props_originData_extra_tags === void 0 ? void 0 : (_props_originData_extra_tags_includes = _props_originData_extra_tags.includes) === null || _props_originData_extra_tags_includes === void 0 ? void 0 : _props_originData_extra_tags_includes.call(_props_originData_extra_tags, 'REJECT_TO_ANSWER')) || ((_props_originData2 = props.originData) === null || _props_originData2 === void 0 ? void 0 : _props_originData2.role) === 'bot') {
513
- var _props_originData11, _props_originData12;
534
+ if (/*#__PURE__*/ React.isValidElement(content)) {
535
+ return wrapSSR(/*#__PURE__*/ React.createElement("div", {
536
+ className: classNames('agent-item-default-content', "".concat(baseChatCls, "-messages-content-message"), hashId),
537
+ "data-testid": "message-box-content",
538
+ onDoubleClick: props.onDoubleClick
539
+ }, beforeContent, content, afterContent, extra));
540
+ }
541
+ if (content === '...' || props.placement !== 'left' || (props === null || props === void 0 ? void 0 : (_props_originData1 = props.originData) === null || _props_originData1 === void 0 ? void 0 : (_props_originData_extra = _props_originData1.extra) === null || _props_originData_extra === void 0 ? void 0 : (_props_originData_extra_tags = _props_originData_extra.tags) === null || _props_originData_extra_tags === void 0 ? void 0 : (_props_originData_extra_tags_includes = _props_originData_extra_tags.includes) === null || _props_originData_extra_tags_includes === void 0 ? void 0 : _props_originData_extra_tags_includes.call(_props_originData_extra_tags, 'REJECT_TO_ANSWER')) || ((_props_originData2 = props.originData) === null || _props_originData2 === void 0 ? void 0 : _props_originData2.role) === 'bot') {
542
+ var _props_originData12, _props_originData13;
514
543
  return wrapSSR(/*#__PURE__*/ React.createElement("div", {
515
544
  className: classNames('agent-item-default-content', "".concat(baseChatCls, "-messages-content-message"), hashId),
516
545
  "data-testid": "message-box-content",
@@ -521,14 +550,14 @@ export var LOADING_FLAT = '...';
521
550
  placement: props.placement,
522
551
  markdownRenderConfig: props.markdownRenderConfig,
523
552
  isFinished: true,
524
- style: ((_props_originData11 = props.originData) === null || _props_originData11 === void 0 ? void 0 : _props_originData11.role) === 'bot' ? {} : {
553
+ style: ((_props_originData12 = props.originData) === null || _props_originData12 === void 0 ? void 0 : _props_originData12.role) === 'bot' ? {} : {
525
554
  color: '#343A45'
526
555
  } // 使用类名方式需要传递className,这里保留style以兼容现有API
527
556
  ,
528
557
  extra: extra,
529
558
  typing: false,
530
559
  originData: props.originData,
531
- content: (_props_originData12 = props.originData) === null || _props_originData12 === void 0 ? void 0 : _props_originData12.content
560
+ content: (_props_originData13 = props.originData) === null || _props_originData13 === void 0 ? void 0 : _props_originData13.content
532
561
  })));
533
562
  }
534
563
  // answerStatus= 'EXCEPTION'时 一定是异常情况
@@ -547,7 +576,7 @@ export var LOADING_FLAT = '...';
547
576
  var _item_output_chunks, _item_output;
548
577
  return ((item === null || item === void 0 ? void 0 : (_item_output = item.output) === null || _item_output === void 0 ? void 0 : (_item_output_chunks = _item_output.chunks) === null || _item_output_chunks === void 0 ? void 0 : _item_output_chunks.length) || 0) > 0;
549
578
  })) && ((_props_docListProps = props.docListProps) === null || _props_docListProps === void 0 ? void 0 : _props_docListProps.enable) !== false) {
550
- var _props_docListProps1, _props_originData_extra4, _props_originData13;
579
+ var _props_docListProps1, _props_originData_extra5, _props_originData14;
551
580
  docInfoDom = /*#__PURE__*/ React.createElement(DocInfoList, _object_spread_props(_object_spread({
552
581
  options: docInfoList.map(function(item) {
553
582
  var _item_output;
@@ -556,7 +585,7 @@ export var LOADING_FLAT = '...';
556
585
  return item;
557
586
  })
558
587
  }, props.docListProps), {
559
- reference_url_info_list: ((_props_docListProps1 = props.docListProps) === null || _props_docListProps1 === void 0 ? void 0 : _props_docListProps1.reference_url_info_list) || ((_props_originData13 = props.originData) === null || _props_originData13 === void 0 ? void 0 : (_props_originData_extra4 = _props_originData13.extra) === null || _props_originData_extra4 === void 0 ? void 0 : _props_originData_extra4.reference_url_info_list) || []
588
+ reference_url_info_list: ((_props_docListProps1 = props.docListProps) === null || _props_docListProps1 === void 0 ? void 0 : _props_docListProps1.reference_url_info_list) || ((_props_originData14 = props.originData) === null || _props_originData14 === void 0 ? void 0 : (_props_originData_extra5 = _props_originData14.extra) === null || _props_originData_extra5 === void 0 ? void 0 : _props_originData_extra5.reference_url_info_list) || []
560
589
  }));
561
590
  }
562
591
  return wrapSSR(/*#__PURE__*/ React.createElement(MarkdownPreview, {
@@ -635,7 +664,7 @@ export var LOADING_FLAT = '...';
635
664
  docListNode: docInfoDom,
636
665
  extra: isExtraNull ? null : extra,
637
666
  htmlRef: props.bubbleListRef,
638
- content: ((_props_originData8 = props.originData) === null || _props_originData8 === void 0 ? void 0 : _props_originData8.isFinished) ? ((_props_originData9 = props.originData) === null || _props_originData9 === void 0 ? void 0 : _props_originData9.content) || (locale === null || locale === void 0 ? void 0 : locale['chat.message.generateFailed']) || '生成回答失败,请重试' : ((_props_originData10 = props.originData) === null || _props_originData10 === void 0 ? void 0 : _props_originData10.content) || '',
667
+ content: ((_props_originData8 = props.originData) === null || _props_originData8 === void 0 ? void 0 : _props_originData8.isFinished) && (props === null || props === void 0 ? void 0 : (_props_originData9 = props.originData) === null || _props_originData9 === void 0 ? void 0 : (_props_originData_extra4 = _props_originData9.extra) === null || _props_originData_extra4 === void 0 ? void 0 : _props_originData_extra4.answerStatus) === 'EXCEPTION' ? ((_props_originData10 = props.originData) === null || _props_originData10 === void 0 ? void 0 : _props_originData10.content) || (locale === null || locale === void 0 ? void 0 : locale['chat.message.generateFailed']) || '生成回答失败,请重试' : ((_props_originData11 = props.originData) === null || _props_originData11 === void 0 ? void 0 : _props_originData11.content) || '',
639
668
  originData: props.originData
640
669
  }));
641
670
  }, [
@@ -51,35 +51,59 @@ function _object_spread_props(target, source) {
51
51
  return target;
52
52
  }
53
53
  import { useEditorStyleRegister } from "../../Hooks/useStyle";
54
+ var THINKING_DOT_SIZE = 4;
55
+ var THINKING_DOT_GAP = 4;
56
+ var THINKING_DOT_ANIMATION = 'agenticBubbleThinkingDotPulse';
57
+ var THINKING_DOT_ANIMATION_DURATION = '1.2s';
58
+ var THINKING_LOADING_PADDING = {
59
+ paddingLeft: 'var(--padding-5x)',
60
+ paddingRight: 'var(--padding-5x)',
61
+ paddingTop: 'var(--padding-1x)',
62
+ paddingBottom: 'var(--padding-2x)'
63
+ };
54
64
  var genStyle = function genStyle(token) {
55
- var _obj;
56
- return _obj = {}, // 加载状态容器(compact模式)
57
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-loading"), {
65
+ var _obj, _obj1;
66
+ return _obj1 = {}, // 加载状态容器(compact模式)
67
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-loading"), _object_spread_props(_object_spread({
58
68
  lineHeight: '24px',
59
69
  display: 'flex',
60
70
  alignItems: 'center',
61
- gap: 'var(--padding-2x)',
62
- padding: 'var(--padding-3x)',
63
- '&-compact': {
64
- padding: 'var(--padding-2x)'
65
- },
66
- '&-default': {
67
- padding: 'var(--padding-3x)'
68
- }
69
- }), // 消息内容容器
70
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-message"), {
71
+ gap: 'var(--padding-2x)'
72
+ }, THINKING_LOADING_PADDING), (_obj = {
73
+ color: 'rgb(102, 111, 141)'
74
+ }, _define_property(_obj, "&-dots", {
75
+ display: 'inline-flex',
76
+ alignItems: 'center',
77
+ gap: THINKING_DOT_GAP,
78
+ lineHeight: 1
79
+ }), _define_property(_obj, "&-dot", {
80
+ width: THINKING_DOT_SIZE,
81
+ height: THINKING_DOT_SIZE,
82
+ borderRadius: '50%',
83
+ backgroundColor: 'currentColor',
84
+ opacity: 0.35,
85
+ animationName: THINKING_DOT_ANIMATION,
86
+ animationDuration: THINKING_DOT_ANIMATION_DURATION,
87
+ animationTimingFunction: 'ease-in-out',
88
+ animationIterationCount: 'infinite'
89
+ }), _define_property(_obj, "&-dot:nth-of-type(2)", {
90
+ animationDelay: '0.2s'
91
+ }), _define_property(_obj, "&-dot:nth-of-type(3)", {
92
+ animationDelay: '0.4s'
93
+ }), _define_property(_obj, '&-compact', _object_spread({}, THINKING_LOADING_PADDING)), _define_property(_obj, '&-default', _object_spread({}, THINKING_LOADING_PADDING)), _obj))), // 消息内容容器
94
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-message"), {
71
95
  lineHeight: '24px'
72
96
  }), // 用户消息文本颜色
73
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-user-text"), {
97
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-user-text"), {
74
98
  color: '#343A45'
75
99
  }), // Popover 标题容器
76
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-popover-title"), {
100
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-popover-title"), {
77
101
  display: 'flex',
78
102
  justifyContent: 'space-between',
79
103
  alignItems: 'center',
80
104
  fontSize: '1em'
81
105
  }), // Popover 内容容器
82
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-popover-content"), {
106
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-popover-content"), {
83
107
  width: 400,
84
108
  display: 'flex',
85
109
  maxHeight: 400,
@@ -87,17 +111,17 @@ var genStyle = function genStyle(token) {
87
111
  flexDirection: 'column',
88
112
  gap: 'var(--padding-3x)'
89
113
  }), // MarkdownEditor 容器样式
90
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-markdown-editor"), {
114
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-markdown-editor"), {
91
115
  padding: 0,
92
116
  width: '100%'
93
117
  }), // 重新生成按钮容器
94
- _define_property(_obj, "div[data-messages-content-retry]", {
118
+ _define_property(_obj1, "div[data-messages-content-retry]", {
95
119
  gap: 4,
96
120
  display: 'flex',
97
121
  cursor: 'pointer',
98
122
  alignItems: 'center'
99
123
  }), // 文档标签容器
100
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-doc-tag"), {
124
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-doc-tag"), {
101
125
  borderRadius: 'var(--padding-5x)',
102
126
  opacity: 1,
103
127
  display: 'flex',
@@ -110,16 +134,25 @@ var genStyle = function genStyle(token) {
110
134
  cursor: 'pointer',
111
135
  zIndex: 1
112
136
  }), // 文档标签图标
113
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-doc-tag-icon"), {
137
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-doc-tag-icon"), {
114
138
  width: 24
115
139
  }), // 文档名称文本
116
- _define_property(_obj, "".concat(token.componentCls, "-messages-content-doc-name"), {
140
+ _define_property(_obj1, "".concat(token.componentCls, "-messages-content-doc-name"), {
117
141
  overflow: 'hidden',
118
142
  textOverflow: 'ellipsis',
119
143
  WebkitBoxOrient: 'vertical',
120
144
  WebkitLineClamp: 2,
121
145
  display: '-webkit-box'
122
- }), _obj;
146
+ }), _define_property(_obj1, "@keyframes ".concat(THINKING_DOT_ANIMATION), {
147
+ '0%, 80%, 100%': {
148
+ transform: 'scale(0.6)',
149
+ opacity: 0.35
150
+ },
151
+ '40%': {
152
+ transform: 'scale(1)',
153
+ opacity: 1
154
+ }
155
+ }), _obj1;
123
156
  };
124
157
  export function useMessagesContentStyle(componentCls) {
125
158
  return useEditorStyleRegister('BubbleMessageDisplay', function(token) {
@@ -175,12 +175,14 @@ var getContentStyle = function getContentStyle(standalone, customStyle) {
175
175
  var contentContainerStyle = getContentContainerStyle();
176
176
  var fileViewStyle = getFileViewStyle(standalone, styles === null || styles === void 0 ? void 0 : styles.bubbleListItemExtraStyle);
177
177
  var contentStyle = getContentStyle(standalone, styles === null || styles === void 0 ? void 0 : styles.bubbleListItemContentStyle);
178
+ // 用户气泡默认 hover 展示复制等操作,父级可透传覆盖
179
+ var effectiveExtraShowOnHover = extraShowOnHover !== null && extraShowOnHover !== void 0 ? extraShowOnHover : true;
178
180
  var _obj;
179
181
  var itemDom = wrapSSR(/*#__PURE__*/ React.createElement(BubbleConfigContext.Provider, {
180
182
  value: {
181
183
  compact: compact,
182
184
  standalone: !!standalone,
183
- extraShowOnHover: extraShowOnHover,
185
+ extraShowOnHover: effectiveExtraShowOnHover,
184
186
  bubble: props
185
187
  }
186
188
  }, /*#__PURE__*/ React.createElement(Flex, {
@@ -297,6 +297,17 @@ export interface BubbleProps<T = Record<string, any>> extends BubbleItemStylePro
297
297
  * Markdown 渲染配置
298
298
  */
299
299
  markdownRenderConfig?: MarkdownEditorProps;
300
+ /**
301
+ * 渲染模式快捷设置
302
+ * - 'slate': 使用 Slate 编辑器渲染(默认)
303
+ * - 'markdown': 使用轻量 MarkdownRenderer(无 Slate 实例,性能更优)
304
+ * 等效于 markdownRenderConfig={{ renderMode }}
305
+ */
306
+ renderMode?: 'slate' | 'markdown';
307
+ /**
308
+ * 与 `renderMode` 等价,兼容部分协议字段(如 `renderType=markdown`)
309
+ */
310
+ renderType?: 'slate' | 'markdown';
300
311
  /**
301
312
  * 自定义配置
302
313
  */
@@ -406,6 +406,7 @@ export declare function useLanguage(): {
406
406
  'comment.jumpTo': string;
407
407
  'chart.renderFailed': string;
408
408
  'chart.renderFailedSubTitle': string;
409
+ 'chart.retry': string;
409
410
  'chart.legend.show': string;
410
411
  'chart.legend.hide': string;
411
412
  'chart.legend.prevPage': string;
@@ -368,6 +368,7 @@ export declare const cnLabels: {
368
368
  'comment.jumpTo': string;
369
369
  'chart.renderFailed': string;
370
370
  'chart.renderFailedSubTitle': string;
371
+ 'chart.retry': string;
371
372
  'chart.legend.show': string;
372
373
  'chart.legend.hide': string;
373
374
  'chart.legend.prevPage': string;
@@ -212,7 +212,7 @@
212
212
  'workspace.file.linkCopied': '已复制链接',
213
213
  'workspace.file.copyFailed': '复制失败',
214
214
  // MarkdownInputField 组件相关
215
- 'markdownInput.fileSizeExceeded': '文件大小超过 ${maxSize} KB',
215
+ 'markdownInput.fileSizeExceeded': '超过 ${maxSize} KB',
216
216
  'markdownInput.maxFileCountExceeded': '最多只能上传 ${maxFileCount} 个文件',
217
217
  'markdownInput.minFileCountRequired': '至少需要上传 ${minFileCount} 个文件',
218
218
  // 文档信息相关
@@ -335,7 +335,7 @@
335
335
  'input.selectFile': '选择文件',
336
336
  'input.openGallery': '打开相册',
337
337
  'input.openFile': '打开文件',
338
- 'input.supportedFormatMessage': '支持上传文件,每个文件不超过 ${maxSize},支持 ${extensions}等格式。',
338
+ 'input.supportedFormatMessage': '每个文件不超过 ${maxSize},支持 ${extensions}等格式。',
339
339
  'input.sendButtonTooltip.send': '按 Enter 键发送',
340
340
  'input.sendButtonTooltip.newline': '按 Shift+Enter 键换行',
341
341
  'input.sendButtonTooltip.send.mod': '按 Cmd/Ctrl+Enter 键发送',
@@ -393,6 +393,7 @@
393
393
  // 图表错误相关
394
394
  'chart.renderFailed': '图表渲染失败',
395
395
  'chart.renderFailedSubTitle': '图表组件遇到了一个错误,请稍后重试',
396
+ 'chart.retry': '重新渲染',
396
397
  // DonutChart 图例相关
397
398
  'chart.legend.show': '显示',
398
399
  'chart.legend.hide': '隐藏',
@@ -633,7 +634,7 @@
633
634
  'workspace.file.linkCopied': 'Link copied',
634
635
  'workspace.file.copyFailed': 'Copy failed',
635
636
  // MarkdownInputField component related
636
- 'markdownInput.fileSizeExceeded': 'File size exceeds ${maxSize} KB',
637
+ 'markdownInput.fileSizeExceeded': 'Exceeds ${maxSize} KB',
637
638
  'markdownInput.maxFileCountExceeded': 'Maximum ${maxFileCount} files allowed',
638
639
  'markdownInput.minFileCountRequired': 'At least ${minFileCount} files required',
639
640
  // Document info related
@@ -814,6 +815,7 @@
814
815
  // Chart error related
815
816
  'chart.renderFailed': 'Chart Rendering Failed',
816
817
  'chart.renderFailedSubTitle': 'The chart component encountered an error, please try again later',
818
+ 'chart.retry': 'Retry',
817
819
  // DonutChart legend related
818
820
  'chart.legend.show': 'Show',
819
821
  'chart.legend.hide': 'Hide',
@@ -156,6 +156,7 @@ import { createEditor } from "slate";
156
156
  import { withHistory } from "slate-history";
157
157
  import { withReact } from "slate-react";
158
158
  import { I18nContext, I18nProvide } from "../I18n";
159
+ import { MarkdownRenderer } from "../MarkdownRenderer";
159
160
  import { CommentList } from "./editor/components/CommentList";
160
161
  import { SlateMarkdownEditor } from "./editor/Editor";
161
162
  import { parserMdToSchema } from "./editor/parser/parserMdToSchema";
@@ -248,11 +249,11 @@ var I18nBoundary = function I18nBoundary(param) {
248
249
  * - 支持键盘事件处理
249
250
  * - 提供Markdown解析和渲染
250
251
  */ export var BaseMarkdownEditor = function BaseMarkdownEditor(props) {
251
- var _props_typewriter, _props_readonly;
252
+ var _ref, _props_typewriter, _props_readonly;
252
253
  var _props_jinja, _effectiveJinja_templatePanel, _props_floatBar, _props_floatBar1, _props_textAreaProps;
253
254
  var initValue = props.initValue, width = props.width, _props_toolBar = props.toolBar, toolBar = _props_toolBar === void 0 ? {} : _props_toolBar, editorRef = props.editorRef, _props_toc = props.toc, toc = _props_toc === void 0 ? false : _props_toc, readonly = props.readonly, lazy = props.lazy, style = props.style, _props_contentStyle = props.contentStyle, contentStyle = _props_contentStyle === void 0 ? {
254
255
  height: '100%'
255
- } : _props_contentStyle, editorStyle = props.editorStyle, height = props.height, children = props.children, rest = _object_without_properties(props, [
256
+ } : _props_contentStyle, editorStyle = props.editorStyle, height = props.height, children = props.children, renderMode = props.renderMode, renderType = props.renderType, rest = _object_without_properties(props, [
256
257
  "initValue",
257
258
  "width",
258
259
  "toolBar",
@@ -264,8 +265,11 @@ var I18nBoundary = function I18nBoundary(param) {
264
265
  "contentStyle",
265
266
  "editorStyle",
266
267
  "height",
267
- "children"
268
+ "children",
269
+ "renderMode",
270
+ "renderType"
268
271
  ]);
272
+ var effectiveRenderMode = (_ref = renderMode !== null && renderMode !== void 0 ? renderMode : renderType) !== null && _ref !== void 0 ? _ref : 'slate';
269
273
  // 是否挂载
270
274
  var _useState = _sliced_to_array(useState(false), 2), editorMountStatus = _useState[0], setMountedStatus = _useState[1];
271
275
  var _useState1 = _sliced_to_array(useState(false), 2), isEditorFocused = _useState1[0], setIsEditorFocused = _useState1[1];
@@ -412,7 +416,35 @@ var I18nBoundary = function I18nBoundary(param) {
412
416
  var jinjaTemplatePanelEnabled = jinjaEnabled && effectiveJinja !== undefined && effectiveJinja !== null && effectiveJinja.templatePanel !== false && (_type_of(effectiveJinja.templatePanel) !== 'object' || ((_effectiveJinja_templatePanel = effectiveJinja.templatePanel) === null || _effectiveJinja_templatePanel === void 0 ? void 0 : _effectiveJinja_templatePanel.enable) !== false);
413
417
  var _useState7 = _sliced_to_array(useState(false), 2), openJinjaTemplate = _useState7[0], setOpenJinjaTemplate = _useState7[1];
414
418
  var _useState8 = _sliced_to_array(useState(null), 2), jinjaAnchorPath = _useState8[0], setJinjaAnchorPath = _useState8[1];
415
- var _obj;
419
+ if (readonly && effectiveRenderMode === 'markdown') {
420
+ var _props_typewriter1;
421
+ var _obj;
422
+ return wrapSSR(/*#__PURE__*/ React.createElement(I18nBoundary, null, /*#__PURE__*/ React.createElement(PluginContext.Provider, {
423
+ value: props.plugins || []
424
+ }, /*#__PURE__*/ React.createElement("div", {
425
+ id: props.id ? String(props.id) || undefined : undefined,
426
+ className: classNames(baseClassName, 'markdown-editor', hashId, props.className, (_obj = {}, _define_property(_obj, "".concat(baseClassName, "-readonly"), true), _define_property(_obj, "".concat(baseClassName, "-report"), props.reportMode), _define_property(_obj, "".concat(baseClassName, "-slide"), props.slideMode), _obj)),
427
+ style: _object_spread({
428
+ width: width || '100%',
429
+ height: height || 'auto'
430
+ }, style),
431
+ ref: markdownContainerRef
432
+ }, /*#__PURE__*/ React.createElement(MarkdownRenderer, {
433
+ content: initValue || '',
434
+ streaming: (_props_typewriter1 = props.typewriter) !== null && _props_typewriter1 !== void 0 ? _props_typewriter1 : false,
435
+ plugins: props.plugins,
436
+ remarkPlugins: props.markdownToHtmlOptions,
437
+ codeProps: props.codeProps,
438
+ apaasify: props.apaasify,
439
+ style: _object_spread({
440
+ height: '100%'
441
+ }, contentStyle),
442
+ prefixCls: baseClassName,
443
+ fncProps: props.fncProps,
444
+ linkConfig: props.linkConfig
445
+ }), children))));
446
+ }
447
+ var _obj1;
416
448
  return wrapSSR(/*#__PURE__*/ React.createElement(I18nBoundary, null, /*#__PURE__*/ React.createElement(PluginContext.Provider, {
417
449
  value: props.plugins || []
418
450
  }, /*#__PURE__*/ React.createElement(EditorStoreContext.Provider, {
@@ -445,7 +477,7 @@ var I18nBoundary = function I18nBoundary(param) {
445
477
  }
446
478
  }, /*#__PURE__*/ React.createElement("div", {
447
479
  id: props.id ? String(props.id) || undefined : undefined,
448
- className: classNames(baseClassName, 'markdown-editor', hashId, props.className, (_obj = {}, _define_property(_obj, "".concat(baseClassName, "-readonly"), readonly), _define_property(_obj, "".concat(baseClassName, "-edit"), !readonly), _define_property(_obj, "".concat(baseClassName, "-report"), props.reportMode), _define_property(_obj, "".concat(baseClassName, "-slide"), props.slideMode), _obj)),
480
+ className: classNames(baseClassName, 'markdown-editor', hashId, props.className, (_obj1 = {}, _define_property(_obj1, "".concat(baseClassName, "-readonly"), readonly), _define_property(_obj1, "".concat(baseClassName, "-edit"), !readonly), _define_property(_obj1, "".concat(baseClassName, "-report"), props.reportMode), _define_property(_obj1, "".concat(baseClassName, "-slide"), props.slideMode), _obj1)),
449
481
  style: _object_spread({
450
482
  width: width || '100%',
451
483
  height: height || 'auto'
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { RenderElementProps } from 'slate-react';
3
+ export declare const AgenticUiTaskBlock: React.FC<RenderElementProps>;
4
+ export declare const ReadonlyAgenticUiTaskBlock: React.NamedExoticComponent<RenderElementProps>;