@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.
- package/dist/Bubble/AIBubble.js +2 -3
- package/dist/Bubble/Bubble.js +3 -2
- package/dist/Bubble/List/index.js +130 -23
- package/dist/Bubble/MessagesContent/index.js +94 -74
- package/dist/Bubble/OpenAIMessageBubble/index.d.ts +6 -6
- package/dist/Bubble/OpenAIMessageBubble/index.js +3 -3
- package/dist/Bubble/OpenAIMessageBubble/mapOllamaMessages.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/mapOpenClawMessages.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/normalizeOllamaMessages.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/normalizeOpenClawMessages.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/types.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/useOllamaMessageBubbleData.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/useOpenClawMessageBubbleData.d.ts +1 -1
- package/dist/Bubble/bubblePropsAreEqual.d.ts +23 -0
- package/dist/Bubble/bubblePropsAreEqual.js +272 -0
- package/dist/Components/TypingAnimation/index.d.ts +4 -1
- package/dist/Components/TypingAnimation/index.js +5 -3
- package/dist/MarkdownEditor/BaseMarkdownEditor.js +3 -2
- package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/index.js +1 -2
- package/dist/MarkdownEditor/editor/elements/FootnoteReference/index.js +1 -2
- package/dist/MarkdownEditor/editor/elements/Head/index.js +1 -2
- package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +1 -2
- package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.js +6 -3
- package/dist/MarkdownEditor/editor/elements/Paragraph/index.js +10 -30
- package/dist/MarkdownEditor/editor/elements/Table/EditableTable.js +1 -1
- package/dist/MarkdownEditor/editor/elements/index.js +1 -1
- package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +1 -1
- package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +1 -1
- package/dist/MarkdownEditor/editor/plugins/withSanitizeInvalidChildren.js +69 -38
- package/dist/MarkdownEditor/editor/store.d.ts +3 -0
- package/dist/MarkdownEditor/editor/store.js +1 -0
- package/dist/MarkdownEditor/editor/tools/InsertAutocomplete.js +1 -0
- package/dist/MarkdownEditor/style.js +0 -6
- package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.js +0 -3
- package/dist/MarkdownRenderer/MarkdownRenderer.js +2 -2
- package/dist/MarkdownRenderer/index.d.ts +2 -2
- package/dist/MarkdownRenderer/index.js +1 -1
- package/dist/MarkdownRenderer/streaming/MarkdownBlockPiece.d.ts +1 -1
- package/dist/MarkdownRenderer/streaming/MarkdownBlockPiece.js +15 -3
- package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.d.ts +2 -1
- package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.js +4 -4
- package/dist/Plugins/chart/BarChart/index.js +1 -1
- package/dist/Plugins/chart/ChartAttrToolBar/index.js +1 -1
- package/dist/Plugins/chart/index.d.ts +1 -1
- package/dist/Plugins/code/utils/index.d.ts +1 -1
- package/dist/Plugins/mermaid/MermaidRendererImpl.js +53 -419
- package/dist/Plugins/mermaid/index.js +1 -2
- package/dist/Plugins/mermaid/style.js +57 -59
- package/dist/Plugins/mermaid/utils.js +67 -8
- package/dist/Schema/SchemaForm/index.js +1 -1
- package/dist/Workspace/File/FileComponent.js +1 -1
- package/dist/Workspace/File/PreviewComponent.js +16 -2
- package/dist/Workspace/File/index.d.ts +1 -1
- package/dist/Workspace/File/index.js +2 -1
- 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' &&
|
|
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
|
-
|
|
209
|
-
var
|
|
210
|
-
if (
|
|
211
|
-
|
|
212
|
-
|
|
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
|
-
|
|
221
|
-
|
|
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
|
|
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
|
|
248
|
-
if (fixBranch(editor.children[
|
|
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
|
-
|
|
262
|
-
|
|
263
|
-
|
|
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
|
-
//
|
|
271
|
-
|
|
272
|
-
|
|
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
|
|
279
|
-
return !isValidChild(c);
|
|
280
|
-
});
|
|
316
|
+
var hasInvalid = childArrayHasInvalidEntries(childList);
|
|
281
317
|
if (hasInvalid || childList.length === 0) {
|
|
282
|
-
var
|
|
318
|
+
var fixedTop = compactEditorRootChildren(childList);
|
|
319
|
+
var nextNodes = fixedTop.length === 0 ? [
|
|
283
320
|
createDefaultBlock()
|
|
284
|
-
] :
|
|
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
|
-
|
|
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
|
-
|
|
304
|
-
if (Node.isElement(node)) {
|
|
337
|
+
if (Element.isElement(node)) {
|
|
305
338
|
var childList1 = getChildList(node);
|
|
306
|
-
var hasInvalid1 = childList1
|
|
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() {
|
|
@@ -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";
|
|
@@ -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,
|
|
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,
|
|
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:每块独立
|
|
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:每块独立
|
|
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: !!(
|
|
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
|
|
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';
|