@ant-design/agentic-ui 2.30.25 → 2.30.26

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/AIBubble.js +2 -3
  2. package/dist/Bubble/Bubble.js +3 -2
  3. package/dist/Bubble/List/index.js +130 -23
  4. package/dist/Bubble/MessagesContent/index.js +94 -74
  5. package/dist/Bubble/OpenAIMessageBubble/index.d.ts +6 -6
  6. package/dist/Bubble/OpenAIMessageBubble/index.js +3 -3
  7. package/dist/Bubble/OpenAIMessageBubble/mapOllamaMessages.d.ts +1 -1
  8. package/dist/Bubble/OpenAIMessageBubble/mapOpenClawMessages.d.ts +1 -1
  9. package/dist/Bubble/OpenAIMessageBubble/normalizeOllamaMessages.d.ts +1 -1
  10. package/dist/Bubble/OpenAIMessageBubble/normalizeOpenClawMessages.d.ts +1 -1
  11. package/dist/Bubble/OpenAIMessageBubble/types.d.ts +1 -1
  12. package/dist/Bubble/OpenAIMessageBubble/useOllamaMessageBubbleData.d.ts +1 -1
  13. package/dist/Bubble/OpenAIMessageBubble/useOpenClawMessageBubbleData.d.ts +1 -1
  14. package/dist/Bubble/bubblePropsAreEqual.d.ts +23 -0
  15. package/dist/Bubble/bubblePropsAreEqual.js +272 -0
  16. package/dist/Components/TypingAnimation/index.d.ts +4 -1
  17. package/dist/Components/TypingAnimation/index.js +5 -3
  18. package/dist/MarkdownEditor/BaseMarkdownEditor.js +3 -2
  19. package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/index.js +1 -2
  20. package/dist/MarkdownEditor/editor/elements/FootnoteReference/index.js +1 -2
  21. package/dist/MarkdownEditor/editor/elements/Head/index.js +1 -2
  22. package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +1 -2
  23. package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.js +6 -3
  24. package/dist/MarkdownEditor/editor/elements/Paragraph/index.js +10 -30
  25. package/dist/MarkdownEditor/editor/elements/Table/EditableTable.js +1 -1
  26. package/dist/MarkdownEditor/editor/elements/index.js +1 -1
  27. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +1 -1
  28. package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +1 -1
  29. package/dist/MarkdownEditor/editor/plugins/withSanitizeInvalidChildren.js +69 -38
  30. package/dist/MarkdownEditor/editor/store.d.ts +3 -0
  31. package/dist/MarkdownEditor/editor/store.js +1 -0
  32. package/dist/MarkdownEditor/editor/tools/InsertAutocomplete.js +1 -0
  33. package/dist/MarkdownEditor/style.js +0 -6
  34. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.js +0 -3
  35. package/dist/MarkdownRenderer/MarkdownRenderer.js +2 -2
  36. package/dist/MarkdownRenderer/index.d.ts +2 -2
  37. package/dist/MarkdownRenderer/index.js +1 -1
  38. package/dist/MarkdownRenderer/streaming/MarkdownBlockPiece.d.ts +1 -1
  39. package/dist/MarkdownRenderer/streaming/MarkdownBlockPiece.js +15 -3
  40. package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.d.ts +2 -1
  41. package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.js +4 -4
  42. package/dist/Plugins/chart/BarChart/index.js +1 -1
  43. package/dist/Plugins/chart/ChartAttrToolBar/index.js +1 -1
  44. package/dist/Plugins/chart/index.d.ts +1 -1
  45. package/dist/Plugins/code/utils/index.d.ts +1 -1
  46. package/dist/Plugins/mermaid/MermaidRendererImpl.js +53 -419
  47. package/dist/Plugins/mermaid/index.js +1 -2
  48. package/dist/Plugins/mermaid/style.js +57 -59
  49. package/dist/Plugins/mermaid/utils.js +67 -8
  50. package/dist/Schema/SchemaForm/index.js +1 -1
  51. package/dist/Workspace/File/FileComponent.js +1 -1
  52. package/dist/Workspace/File/PreviewComponent.js +16 -2
  53. package/dist/Workspace/File/index.d.ts +1 -1
  54. package/dist/Workspace/File/index.js +2 -1
  55. package/package.json +2 -1
@@ -136,12 +136,23 @@ function _unsupported_iterable_to_array(o, minLen) {
136
136
  if (n === "Map" || n === "Set") return Array.from(n);
137
137
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
138
138
  }
139
- import { Editor, Node, Transforms } from "slate";
139
+ import { Editor, Element, Node, Text, Transforms } from "slate";
140
140
  import { HistoryEditor } from "slate-history";
141
141
  import { EditorUtils } from "../utils/editorUtils";
142
142
  var isValidChild = function isValidChild(child) {
143
143
  return child !== undefined && child !== null && Node.isNode(child);
144
144
  };
145
+ /**
146
+ * `Array.prototype.some` skips sparse holes; Slate still sees missing indices and
147
+ * can pass `undefined` as `leaf` into `renderLeaf`, which then throws in `Text.isText`.
148
+ */ var childArrayHasInvalidEntries = function childArrayHasInvalidEntries(rawChildren) {
149
+ for(var i = 0; i < rawChildren.length; i += 1){
150
+ if (!(i in rawChildren) || !isValidChild(rawChildren[i])) {
151
+ return true;
152
+ }
153
+ }
154
+ return false;
155
+ };
145
156
  var getChildList = function getChildList(node) {
146
157
  if (!('children' in node)) {
147
158
  return [];
@@ -186,12 +197,29 @@ var runWithoutHistory = function runWithoutHistory(editor, fn) {
186
197
  * Slate 的 `Node.nodes` / `Editor.normalize` 在遍历时假定非文本节点必有数组型 `children`。
187
198
  * 若仅有 `type` 而缺少 `children`,会在进入自定义 `normalizeNode` 之前就抛错,必须先修树。
188
199
  */ var rebuildOrDefaultBlock = function rebuildOrDefaultBlock(raw) {
189
- if (raw && (typeof raw === "undefined" ? "undefined" : _type_of(raw)) === 'object' && //@ts-ignore
190
- !(Node === null || Node === void 0 ? void 0 : Node.isText(raw)) && typeof raw.type === 'string') {
200
+ if (raw && (typeof raw === "undefined" ? "undefined" : _type_of(raw)) === 'object' && !Text.isText(raw) && typeof raw.type === 'string') {
191
201
  return rebuildElement(raw);
192
202
  }
193
203
  return createDefaultBlock();
194
204
  };
205
+ /** 压缩根级子节点:去掉空洞与 null/undefined;残缺元素对象则 rebuild,不凭空多插空段落。 */ var compactEditorRootChildren = function compactEditorRootChildren(raw) {
206
+ var out = [];
207
+ for(var i = 0; i < raw.length; i += 1){
208
+ if (!(i in raw)) {
209
+ continue;
210
+ }
211
+ var c = raw[i];
212
+ if (isValidChild(c)) {
213
+ out.push(c);
214
+ continue;
215
+ }
216
+ if (c === undefined || c === null) {
217
+ continue;
218
+ }
219
+ out.push(rebuildOrDefaultBlock(c));
220
+ }
221
+ return out;
222
+ };
195
223
  var repairBrokenChildArrays = function repairBrokenChildArrays(editor) {
196
224
  if (!Array.isArray(editor.children)) {
197
225
  /* eslint-disable no-param-reassign */ editor.children = [
@@ -205,20 +233,26 @@ var repairBrokenChildArrays = function repairBrokenChildArrays(editor) {
205
233
  ]);
206
234
  return true;
207
235
  }
208
- for(var i = 0; i < editor.children.length; i++){
209
- var child = editor.children[i];
210
- if (!isValidChild(child)) {
211
- /* eslint-disable no-param-reassign */ editor.children[i] = rebuildOrDefaultBlock(child);
212
- /* eslint-enable no-param-reassign */ return true;
213
- }
236
+ if (childArrayHasInvalidEntries(editor.children)) {
237
+ var fixedRoot = compactEditorRootChildren(editor.children);
238
+ if (fixedRoot.length === 0) {
239
+ EditorUtils.replaceEditorContent(editor, [
240
+ createDefaultBlock()
241
+ ]);
242
+ } else {
243
+ /* eslint-disable no-param-reassign */ editor.children = fixedRoot;
244
+ /* eslint-enable no-param-reassign */ }
245
+ return true;
214
246
  }
215
247
  var fixBranch = function fixBranch1(node) {
216
- var _Node_isText;
217
248
  if (!node || (typeof node === "undefined" ? "undefined" : _type_of(node)) !== 'object') {
218
249
  return false;
219
250
  }
220
- //@ts-ignore
221
- if (Node === null || Node === void 0 ? void 0 : (_Node_isText = Node.isText) === null || _Node_isText === void 0 ? void 0 : _Node_isText.call(Node, node)) {
251
+ if (Text.isText(node)) {
252
+ if ('children' in node) {
253
+ delete node.children;
254
+ return true;
255
+ }
222
256
  return false;
223
257
  }
224
258
  var rawChildren = node.children;
@@ -226,9 +260,7 @@ var repairBrokenChildArrays = function repairBrokenChildArrays(editor) {
226
260
  Object.assign(node, rebuildElement(node));
227
261
  return true;
228
262
  }
229
- if (rawChildren === null || rawChildren === void 0 ? void 0 : rawChildren.some(function(c) {
230
- return !isValidChild(c);
231
- })) {
263
+ if (childArrayHasInvalidEntries(rawChildren)) {
232
264
  var fixedChildren = rawChildren.filter(isValidChild);
233
265
  node.children = fixedChildren.length === 0 ? [
234
266
  {
@@ -244,8 +276,8 @@ var repairBrokenChildArrays = function repairBrokenChildArrays(editor) {
244
276
  }
245
277
  return false;
246
278
  };
247
- for(var i1 = 0; i1 < editor.children.length; i1++){
248
- if (fixBranch(editor.children[i1])) {
279
+ for(var i = 0; i < editor.children.length; i++){
280
+ if (fixBranch(editor.children[i])) {
249
281
  return true;
250
282
  }
251
283
  }
@@ -258,32 +290,35 @@ var repairBrokenChildArrays = function repairBrokenChildArrays(editor) {
258
290
  */ export var withSanitizeInvalidChildren = function withSanitizeInvalidChildren(editor) {
259
291
  var normalizeNode = editor.normalizeNode, normalize = editor.normalize;
260
292
  editor.normalize = function(options) {
261
- var guard = 0;
262
- while(guard < 100 && repairBrokenChildArrays(editor)){
263
- guard += 1;
293
+ // Slate 默认 `normalize` 一致:在 `withoutNormalizing` 嵌套批次末尾仍会调用
294
+ // `Editor.normalize`,此时 `isNormalizing` false,文档可能短暂为空(合法中间态)。
295
+ // 若在此处 `repairBrokenChildArrays` 强行插入默认块,会与后续 `insertNodes` 叠成双段落。
296
+ if (Editor.isNormalizing(editor)) {
297
+ var guard = 0;
298
+ while(guard < 100 && repairBrokenChildArrays(editor)){
299
+ guard += 1;
300
+ }
264
301
  }
265
302
  return normalize.call(editor, options);
266
303
  };
267
304
  editor.normalizeNode = function(entry) {
268
- var _Node_isText;
269
305
  var _entry = _sliced_to_array(entry, 2), node = _entry[0], path = _entry[1];
270
- // `Node.isNode` is true for text leaves, but they have no `children`; never call `.some` on them.
271
- //@ts-ignore
272
- if (Node === null || Node === void 0 ? void 0 : (_Node_isText = Node.isText) === null || _Node_isText === void 0 ? void 0 : _Node_isText.call(Node, node)) {
306
+ // Text leaves have no `children`; also strip invalid `children` on text (Slate may treat as element).
307
+ if (Text.isText(node)) {
308
+ if ('children' in node) {
309
+ delete node.children;
310
+ }
273
311
  normalizeNode(entry);
274
312
  return;
275
313
  }
276
314
  if (Editor.isEditor(node) && path.length === 0) {
277
315
  var childList = getChildList(node);
278
- var hasInvalid = childList.some(function(c) {
279
- return !isValidChild(c);
280
- });
316
+ var hasInvalid = childArrayHasInvalidEntries(childList);
281
317
  if (hasInvalid || childList.length === 0) {
282
- var nextNodes = childList.length === 0 ? [
318
+ var fixedTop = compactEditorRootChildren(childList);
319
+ var nextNodes = fixedTop.length === 0 ? [
283
320
  createDefaultBlock()
284
- ] : childList.map(function(c) {
285
- return isValidChild(c) ? c : rebuildOrDefaultBlock(c);
286
- });
321
+ ] : fixedTop;
287
322
  EditorUtils.replaceEditorContent(editor, nextNodes);
288
323
  normalizeNode(entry);
289
324
  return;
@@ -291,8 +326,7 @@ var repairBrokenChildArrays = function repairBrokenChildArrays(editor) {
291
326
  normalizeNode(entry);
292
327
  return;
293
328
  }
294
- //@ts-ignore
295
- if (!Editor.isEditor(node) && !Node.isText(node)) {
329
+ if (!Editor.isEditor(node) && !Text.isText(node)) {
296
330
  var rawChildren = node.children;
297
331
  if (!Array.isArray(rawChildren)) {
298
332
  Object.assign(node, rebuildElement(node));
@@ -300,12 +334,9 @@ var repairBrokenChildArrays = function repairBrokenChildArrays(editor) {
300
334
  return;
301
335
  }
302
336
  }
303
- //@ts-ignore
304
- if (Node.isElement(node)) {
337
+ if (Element.isElement(node)) {
305
338
  var childList1 = getChildList(node);
306
- var hasInvalid1 = childList1.some(function(c) {
307
- return !isValidChild(c);
308
- });
339
+ var hasInvalid1 = childArrayHasInvalidEntries(childList1);
309
340
  if (hasInvalid1) {
310
341
  var applyRebuild = function applyRebuild() {
311
342
  Editor.withoutNormalizing(editor, function() {
@@ -670,6 +670,9 @@ export declare class EditorStore {
670
670
  end: number;
671
671
  };
672
672
  lineContent: string;
673
+ /**
674
+ * 更新结构不同的表格
675
+ */
673
676
  nodeType?: string | undefined;
674
677
  searchVariant?: string | undefined;
675
678
  isLink?: boolean | undefined;
@@ -436,6 +436,7 @@ export var EditorStoreContext = createContext(null);
436
436
  var _ref, _ref1, _ref2, _ref3;
437
437
  if (md === undefined) return;
438
438
  if (!md) {
439
+ if (this._shouldSkipSetContent('')) return;
439
440
  this.clearContent();
440
441
  return;
441
442
  }
@@ -994,6 +994,7 @@ export var InsertAutocomplete = function InsertAutocomplete(props) {
994
994
  e.preventDefault();
995
995
  }
996
996
  }, !state.insertLink && !state.insertAttachment && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Menu, {
997
+ _internalDisableMenuItemTitleTooltip: true,
997
998
  items: (_props_optionsRender = props.optionsRender) === null || _props_optionsRender === void 0 ? void 0 : _props_optionsRender.call(props, state.filterOptions.map(function(l) {
998
999
  var _l_label, _l_children_, _l_children, _l_children1;
999
1000
  return {
@@ -580,12 +580,6 @@ var genStyle = function genStyle(token) {
580
580
  fill: '#fff'
581
581
  }
582
582
  },
583
- // 强制设置所有文字样式
584
- '& text': {
585
- // 确保文字不会被裁剪
586
- dominantBaseline: 'middle',
587
- textAnchor: 'middle'
588
- },
589
583
  // 节点标签 - 更大的字体
590
584
  '& .nodeLabel': {
591
585
  fontWeight: 500,
@@ -94,9 +94,6 @@ import { ReactEditor } from "slate-react";
94
94
  // ReactEditor.isFocused can throw if the editor is being torn down
95
95
  }
96
96
  }
97
- if (props.value === undefined || props.value === '') {
98
- return;
99
- }
100
97
  (_markdownEditorRef_current1 = markdownEditorRef.current) === null || _markdownEditorRef_current1 === void 0 ? void 0 : (_markdownEditorRef_current_store = _markdownEditorRef_current1.store) === null || _markdownEditorRef_current_store === void 0 ? void 0 : _markdownEditorRef_current_store.setMDContent((_props_value = props.value) !== null && _props_value !== void 0 ? _props_value : '');
101
98
  }, [
102
99
  props.value
@@ -138,15 +138,15 @@ import React, { forwardRef, useContext, useEffect, useImperativeHandle, useMemo,
138
138
  import { useStyle as useContentStyle } from "../MarkdownEditor/editor/style";
139
139
  import { useStyle as useEditorStyle } from "../MarkdownEditor/style";
140
140
  import { CharacterQueue } from "./CharacterQueue";
141
+ import { extractFootnoteDefinitionsFromMarkdown } from "./extractFootnoteDefinitions";
142
+ import { AgenticUiFileMapBlockRenderer } from "./renderers/AgenticUiFileMapBlockRenderer";
141
143
  import { AgenticUiTaskBlockRenderer } from "./renderers/AgenticUiTaskBlockRenderer";
142
144
  import { AgenticUiToolUseBarBlockRenderer } from "./renderers/AgenticUiToolUseBarBlockRenderer";
143
- import { AgenticUiFileMapBlockRenderer } from "./renderers/AgenticUiFileMapBlockRenderer";
144
145
  import { ChartBlockRenderer } from "./renderers/ChartRenderer";
145
146
  import { CodeBlockRenderer } from "./renderers/CodeRenderer";
146
147
  import { MermaidBlockRenderer } from "./renderers/MermaidRenderer";
147
148
  import { SchemaBlockRenderer } from "./renderers/SchemaRenderer";
148
149
  import { useRendererVarStyle } from "./style";
149
- import { extractFootnoteDefinitionsFromMarkdown } from "./extractFootnoteDefinitions";
150
150
  import { useMarkdownToReact } from "./useMarkdownToReact";
151
151
  import { useStreaming } from "./useStreaming";
152
152
  var SCHEMA_LANGUAGES = new Set([
@@ -1,6 +1,7 @@
1
1
  export { default as AnimationText } from './AnimationText';
2
2
  export type { AnimationConfig, AnimationTextProps } from './AnimationText';
3
3
  export { CharacterQueue } from './CharacterQueue';
4
+ export type { UseMarkdownToReactOptions } from './markdownReactShared';
4
5
  export { default as MarkdownRenderer } from './MarkdownRenderer';
5
6
  export { AgenticUiFileMapBlockRenderer } from './renderers/AgenticUiFileMapBlockRenderer';
6
7
  export { AgenticUiTaskBlockRenderer } from './renderers/AgenticUiTaskBlockRenderer';
@@ -9,8 +10,7 @@ export { ChartBlockRenderer } from './renderers/ChartRenderer';
9
10
  export { CodeBlockRenderer } from './renderers/CodeRenderer';
10
11
  export { MermaidBlockRenderer } from './renderers/MermaidRenderer';
11
12
  export { SchemaBlockRenderer } from './renderers/SchemaRenderer';
13
+ export { useStreamingMarkdownReact } from './streaming/useStreamingMarkdownReact';
12
14
  export type { CharacterQueueOptions, FileMapConfig, MarkdownRendererEleProps, MarkdownRendererProps, MarkdownRendererRef, RenderMode, RendererBlockProps, } from './types';
13
- export type { UseMarkdownToReactOptions } from './markdownReactShared';
14
15
  export { markdownToReactSync, useMarkdownToReact } from './useMarkdownToReact';
15
- export { useStreamingMarkdownReact } from './streaming/useStreamingMarkdownReact';
16
16
  export { useStreaming } from './useStreaming';
@@ -8,6 +8,6 @@ export { ChartBlockRenderer } from "./renderers/ChartRenderer";
8
8
  export { CodeBlockRenderer } from "./renderers/CodeRenderer";
9
9
  export { MermaidBlockRenderer } from "./renderers/MermaidRenderer";
10
10
  export { SchemaBlockRenderer } from "./renderers/SchemaRenderer";
11
- export { markdownToReactSync, useMarkdownToReact } from "./useMarkdownToReact";
12
11
  export { useStreamingMarkdownReact } from "./streaming/useStreamingMarkdownReact";
12
+ export { markdownToReactSync, useMarkdownToReact } from "./useMarkdownToReact";
13
13
  export { useStreaming } from "./useStreaming";
@@ -1,5 +1,5 @@
1
- import type { Processor } from 'unified';
2
1
  import React from 'react';
2
+ import type { Processor } from 'unified';
3
3
  export interface MarkdownBlockPieceProps {
4
4
  variant: 'sealed' | 'tail';
5
5
  blockSource: string;
@@ -9,11 +9,24 @@ import { shouldReparseLastBlock } from "./lastBlockThrottle";
9
9
  var variant = param.variant, blockSource = param.blockSource, processor = param.processor, components = param.components, streaming = param.streaming;
10
10
  var lastParsedRef = useRef(null);
11
11
  var cacheRef = useRef(new Map());
12
+ var processorRef = useRef(null);
13
+ /**
14
+ * 宿主常把 `components: { __codeBlock: X }` 内联在每次 render,引用恒变。
15
+ * 若列入 useMemo 依赖,末块晋升为 sealed 时会误触发重 parse,子树卸载重挂。
16
+ * 密封命中缓存时故意不随 components 引用抖动;需重算时由 variant / blockSource / processor 驱动。
17
+ */ var componentsRef = useRef(components);
18
+ componentsRef.current = components;
12
19
  var node = useMemo(function() {
20
+ if (processorRef.current !== processor) {
21
+ processorRef.current = processor;
22
+ cacheRef.current.clear();
23
+ lastParsedRef.current = null;
24
+ }
25
+ var comps = componentsRef.current;
13
26
  var cached = cacheRef.current.get(blockSource);
14
27
  if (cached && variant === 'sealed') return cached;
15
28
  if (variant === 'sealed' || !streaming) {
16
- var el = renderMarkdownBlock(blockSource, processor, components);
29
+ var el = renderMarkdownBlock(blockSource, processor, comps);
17
30
  cacheRef.current.set(blockSource, el);
18
31
  if (variant === 'tail') lastParsedRef.current = {
19
32
  source: blockSource,
@@ -25,7 +38,7 @@ import { shouldReparseLastBlock } from "./lastBlockThrottle";
25
38
  if (prev && !shouldReparseLastBlock(prev.source, blockSource, true)) {
26
39
  return prev.node;
27
40
  }
28
- var el1 = renderMarkdownBlock(blockSource, processor, components);
41
+ var el1 = renderMarkdownBlock(blockSource, processor, comps);
29
42
  cacheRef.current.set(blockSource, el1);
30
43
  lastParsedRef.current = {
31
44
  source: blockSource,
@@ -36,7 +49,6 @@ import { shouldReparseLastBlock } from "./lastBlockThrottle";
36
49
  variant,
37
50
  blockSource,
38
51
  processor,
39
- components,
40
52
  streaming
41
53
  ]);
42
54
  var animateBlock = variant === 'tail' && streaming;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type UseMarkdownToReactOptions } from '../markdownReactShared';
3
3
  /**
4
- * 流式优先的 Markdown → React:每块独立 memo 组件;tail sealed 共用组件类型以便块晋升时复用实例。
4
+ * 流式优先的 Markdown → React:每块独立 MarkdownBlockPiece,末块 tail、其余 sealed
5
+ * 块 key 仅用修订代 + 下标,使「末块晋升为 sealed」时外层组件类型不变,避免子树卸载重挂。
5
6
  */
6
7
  export declare const useStreamingMarkdownReact: (content: string, options?: UseMarkdownToReactOptions) => React.ReactNode;
@@ -1,11 +1,12 @@
1
- import { JINJA_DOLLAR_PLACEHOLDER, preprocessNormalizeLeafToContainerDirective } from "../../MarkdownEditor/editor/parser/constants";
2
1
  import React, { useMemo, useRef } from "react";
3
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { JINJA_DOLLAR_PLACEHOLDER, preprocessNormalizeLeafToContainerDirective } from "../../MarkdownEditor/editor/parser/constants";
4
4
  import { buildEditorAlignedComponents, createHastProcessor, splitMarkdownBlocks } from "../markdownReactShared";
5
5
  import { MarkdownBlockPiece } from "./MarkdownBlockPiece";
6
6
  import { shouldResetRevisionProgress } from "./revisionPolicy";
7
7
  /**
8
- * 流式优先的 Markdown → React:每块独立 memo 组件;tail sealed 共用组件类型以便块晋升时复用实例。
8
+ * 流式优先的 Markdown → React:每块独立 MarkdownBlockPiece,末块 tail、其余 sealed
9
+ * 块 key 仅用修订代 + 下标,使「末块晋升为 sealed」时外层组件类型不变,避免子树卸载重挂。
9
10
  */ export var useStreamingMarkdownReact = function useStreamingMarkdownReact(content, options) {
10
11
  var revisionSource = (options === null || options === void 0 ? void 0 : options.contentRevisionSource) !== undefined ? options.contentRevisionSource : content;
11
12
  var prevRevisionRef = useRef(undefined);
@@ -45,14 +46,13 @@ import { shouldResetRevisionProgress } from "./revisionPolicy";
45
46
  var gen = revisionGenerationRef.current;
46
47
  var elements = blocks.map(function(blockSource, index) {
47
48
  var isLast = index === blocks.length - 1;
48
- // 仅用修订代 + 块下标作 key,避免末块随文本增长导致 identity 变化而整段 remount
49
49
  var key = "b-".concat(gen, "-").concat(index);
50
50
  return jsx(MarkdownBlockPiece, {
51
51
  variant: isLast ? 'tail' : 'sealed',
52
52
  blockSource: blockSource,
53
53
  processor: processor,
54
54
  components: components,
55
- streaming: !!((options === null || options === void 0 ? void 0 : options.streaming) && isLast)
55
+ streaming: !!(options === null || options === void 0 ? void 0 : options.streaming)
56
56
  }, key);
57
57
  });
58
58
  return jsxs(Fragment, {
@@ -120,8 +120,8 @@ import React, { useContext, useEffect, useMemo, useRef, useState } from "react";
120
120
  import { Bar } from "react-chartjs-2";
121
121
  import { ChartContainer, ChartFilter, ChartStatistic, ChartToolBar, downloadChart } from "../components";
122
122
  import { defaultColorList } from "../const";
123
- import { extractAndSortXValues, findDataPointByXValue, hexToRgba, resolveCssVariable, toNumber } from "../utils";
124
123
  import { useChartTheme } from "../hooks";
124
+ import { extractAndSortXValues, findDataPointByXValue, hexToRgba, resolveCssVariable, toNumber } from "../utils";
125
125
  import { useStyle } from "./style";
126
126
  /**
127
127
  * @fileoverview 柱状图组件文件
@@ -1,7 +1,7 @@
1
1
  import { DeleteOutlined } from "@ant-design/icons";
2
2
  import { ConfigProvider, Tooltip } from "antd";
3
- import React, { useContext, useRef } from "react";
4
3
  import clsx from "clsx";
4
+ import React, { useContext, useRef } from "react";
5
5
  import { Transforms } from "slate";
6
6
  import { ReactEditor } from "slate-react";
7
7
  import { I18nContext } from "../../../I18n";
@@ -29,7 +29,7 @@ export { default as RadarChart } from './RadarChart';
29
29
  export { default as ScatterChart } from './ScatterChart';
30
30
  export type { AreaChartConfigItem, AreaChartDataItem, AreaChartProps, } from './AreaChart';
31
31
  export type { BarChartConfigItem, BarChartDataItem, BarChartProps, } from './BarChart';
32
- export type { BoxPlotChartDataItem, BoxPlotChartProps, } from './BoxPlotChart';
32
+ export type { BoxPlotChartDataItem, BoxPlotChartProps } from './BoxPlotChart';
33
33
  export type { ChartStatisticClassNames, ChartStatisticProps, ChartStatisticStyles, } from './ChartStatistic';
34
34
  export type { DonutChartConfig, DonutChartData, DonutChartProps, } from './DonutChart';
35
35
  export type { FunnelChartDataItem, FunnelChartProps } from './FunnelChart';
@@ -4,4 +4,4 @@
4
4
  * @author Code Plugin Team
5
5
  */
6
6
  export { langOptions } from './langOptions';
7
- export { openHtmlLocalPreview, openMarkdownLocalPreview, } from './localPreview';
7
+ export { openHtmlLocalPreview, openMarkdownLocalPreview } from './localPreview';