@ant-design/agentic-ui 2.29.7 → 2.29.8
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/ChatLayout/components/FooterBackgroundLottie/index.js +1 -1
- package/dist/MarkdownEditor/BaseMarkdownEditor.js +1 -1
- package/dist/MarkdownEditor/editor/elements/Blockquote/ReadonlyBlockquote.d.ts +33 -0
- package/dist/MarkdownEditor/editor/elements/Blockquote/ReadonlyBlockquote.js +69 -0
- package/dist/MarkdownEditor/editor/elements/Break/ReadonlyBreak.d.ts +30 -0
- package/dist/MarkdownEditor/editor/elements/Break/ReadonlyBreak.js +88 -0
- package/dist/MarkdownEditor/editor/elements/Card/ReadonlyCard.d.ts +34 -0
- package/dist/MarkdownEditor/editor/elements/Card/ReadonlyCard.js +96 -0
- package/dist/MarkdownEditor/editor/elements/Code/ReadonlyCode.d.ts +33 -0
- package/dist/MarkdownEditor/editor/elements/Code/ReadonlyCode.js +145 -0
- package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/ReadonlyFootnoteDefinition.d.ts +34 -0
- package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/ReadonlyFootnoteDefinition.js +125 -0
- package/dist/MarkdownEditor/editor/elements/FootnoteReference/ReadonlyFootnoteReference.d.ts +34 -0
- package/dist/MarkdownEditor/editor/elements/FootnoteReference/ReadonlyFootnoteReference.js +101 -0
- package/dist/MarkdownEditor/editor/elements/Head/ReadonlyHead.d.ts +35 -0
- package/dist/MarkdownEditor/editor/elements/Head/ReadonlyHead.js +111 -0
- package/dist/MarkdownEditor/editor/elements/Head/index.d.ts +3 -0
- package/dist/MarkdownEditor/editor/elements/Head/index.js +3 -1
- package/dist/MarkdownEditor/editor/elements/Hr/ReadonlyHr.d.ts +30 -0
- package/dist/MarkdownEditor/editor/elements/Hr/ReadonlyHr.js +95 -0
- package/dist/MarkdownEditor/editor/elements/Image/ReadonlyEditorImage.d.ts +35 -0
- package/dist/MarkdownEditor/editor/elements/Image/ReadonlyEditorImage.js +426 -0
- package/dist/MarkdownEditor/editor/elements/Image/index.js +38 -50
- package/dist/MarkdownEditor/editor/elements/InlineKatex/ReadonlyInlineKatex.d.ts +32 -0
- package/dist/MarkdownEditor/editor/elements/InlineKatex/ReadonlyInlineKatex.js +100 -0
- package/dist/MarkdownEditor/editor/elements/Katex/ReadonlyKatex.d.ts +32 -0
- package/dist/MarkdownEditor/editor/elements/Katex/ReadonlyKatex.js +110 -0
- package/dist/MarkdownEditor/editor/elements/LinkCard/ReadonlyLinkCard.d.ts +40 -0
- package/dist/MarkdownEditor/editor/elements/LinkCard/ReadonlyLinkCard.js +215 -0
- package/dist/MarkdownEditor/editor/elements/List/List.js +27 -12
- package/dist/MarkdownEditor/editor/elements/List/ReadonlyList.d.ts +33 -0
- package/dist/MarkdownEditor/editor/elements/List/ReadonlyList.js +93 -0
- package/dist/MarkdownEditor/editor/elements/List/ReadonlyListItem.d.ts +35 -0
- package/dist/MarkdownEditor/editor/elements/List/ReadonlyListItem.js +138 -0
- package/dist/MarkdownEditor/editor/elements/Media/ReadonlyMedia.d.ts +36 -0
- package/dist/MarkdownEditor/editor/elements/Media/ReadonlyMedia.js +600 -0
- package/dist/MarkdownEditor/editor/elements/Mermaid/ReadonlyMermaid.d.ts +32 -0
- package/dist/MarkdownEditor/editor/elements/Mermaid/ReadonlyMermaid.js +101 -0
- package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.d.ts +35 -0
- package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.js +109 -0
- package/dist/MarkdownEditor/editor/elements/Paragraph/index.js +2 -1
- package/dist/MarkdownEditor/editor/elements/Schema/ReadonlySchema.d.ts +33 -0
- package/dist/MarkdownEditor/editor/elements/Schema/ReadonlySchema.js +163 -0
- package/dist/MarkdownEditor/editor/elements/index.d.ts +20 -1
- package/dist/MarkdownEditor/editor/elements/index.js +65 -29
- package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.js +18 -10
- package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +64 -21
- package/dist/MarkdownEditor/editor/plugins/elements.js +60 -6
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/backspace.js +97 -39
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.d.ts +14 -0
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.js +117 -90
- package/dist/MarkdownEditor/editor/plugins/index.d.ts +8 -0
- package/dist/MarkdownEditor/editor/plugins/index.js +8 -0
- package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.d.ts +12 -6
- package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.js +67 -42
- package/dist/MarkdownEditor/editor/plugins/utils.d.ts +31 -0
- package/dist/MarkdownEditor/editor/plugins/utils.js +75 -0
- package/dist/MarkdownEditor/editor/plugins/withCardPlugin.d.ts +15 -0
- package/dist/MarkdownEditor/editor/plugins/withCardPlugin.js +329 -0
- package/dist/MarkdownEditor/editor/plugins/withCodeTagPlugin.d.ts +11 -0
- package/dist/MarkdownEditor/editor/plugins/withCodeTagPlugin.js +299 -0
- package/dist/MarkdownEditor/editor/plugins/withInlineNodes.d.ts +12 -0
- package/dist/MarkdownEditor/editor/plugins/withInlineNodes.js +17 -0
- package/dist/MarkdownEditor/editor/plugins/withLinkAndMediaPlugin.d.ts +11 -0
- package/dist/MarkdownEditor/editor/plugins/withLinkAndMediaPlugin.js +70 -0
- package/dist/MarkdownEditor/editor/plugins/withListsPlugin.d.ts +23 -0
- package/dist/MarkdownEditor/editor/plugins/withListsPlugin.js +204 -0
- package/dist/MarkdownEditor/editor/plugins/withMarkdown.d.ts +9 -12
- package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +17 -764
- package/dist/MarkdownEditor/editor/plugins/withSchemaPlugin.d.ts +11 -0
- package/dist/MarkdownEditor/editor/plugins/withSchemaPlugin.js +55 -0
- package/dist/MarkdownEditor/editor/plugins/withVoidNodes.d.ts +12 -0
- package/dist/MarkdownEditor/editor/plugins/withVoidNodes.js +17 -0
- package/dist/MarkdownEditor/editor/store.js +1 -1
- package/dist/MarkdownEditor/editor/utils/docx/module.js +41 -8
- package/dist/MarkdownEditor/editor/utils/editorCommands.d.ts +97 -0
- package/dist/MarkdownEditor/editor/utils/editorCommands.js +966 -0
- package/dist/MarkdownEditor/editor/utils/editorUtils.js +2 -2
- package/dist/MarkdownEditor/editor/utils/keyboard.js +15 -391
- package/dist/MarkdownEditor/el.d.ts +12 -5
- package/dist/MarkdownInputField/MarkdownInputField.js +10 -23
- package/dist/MarkdownInputField/style.js +9 -4
- package/package.json +8 -8
|
@@ -60,25 +60,44 @@ import { debugInfo } from "../../../Utils/debugUtils";
|
|
|
60
60
|
import { useEditorStore } from "../store";
|
|
61
61
|
import { EditorUtils } from "../utils/editorUtils";
|
|
62
62
|
import { Blockquote } from "./Blockquote";
|
|
63
|
+
import { ReadonlyBlockquote } from "./Blockquote/ReadonlyBlockquote";
|
|
63
64
|
import { Break } from "./Break";
|
|
65
|
+
import { ReadonlyBreak } from "./Break/ReadonlyBreak";
|
|
64
66
|
import { WarpCard } from "./Card";
|
|
67
|
+
import { ReadonlyCard } from "./Card/ReadonlyCard";
|
|
65
68
|
import { Code } from "./Code";
|
|
69
|
+
import { ReadonlyCode } from "./Code/ReadonlyCode";
|
|
66
70
|
import { CommentLeaf } from "./CommentLeaf";
|
|
67
71
|
import { FncLeaf } from "./FncLeaf";
|
|
68
72
|
import { FootnoteDefinition } from "./FootnoteDefinition";
|
|
73
|
+
import { ReadonlyFootnoteDefinition } from "./FootnoteDefinition/ReadonlyFootnoteDefinition";
|
|
69
74
|
import { FootnoteReference } from "./FootnoteReference";
|
|
75
|
+
import { ReadonlyFootnoteReference } from "./FootnoteReference/ReadonlyFootnoteReference";
|
|
70
76
|
import { Head } from "./Head";
|
|
77
|
+
import { ReadonlyHead } from "./Head/ReadonlyHead";
|
|
71
78
|
import { Hr } from "./Hr";
|
|
79
|
+
import { ReadonlyHr } from "./Hr/ReadonlyHr";
|
|
72
80
|
import { EditorImage } from "./Image";
|
|
81
|
+
import { ReadonlyEditorImage } from "./Image/ReadonlyEditorImage";
|
|
73
82
|
import { InlineKatex } from "./InlineKatex";
|
|
83
|
+
import { ReadonlyInlineKatex } from "./InlineKatex/ReadonlyInlineKatex";
|
|
74
84
|
import { Katex } from "./Katex";
|
|
85
|
+
import { ReadonlyKatex } from "./Katex/ReadonlyKatex";
|
|
75
86
|
import { LinkCard } from "./LinkCard";
|
|
87
|
+
import { ReadonlyLinkCard } from "./LinkCard/ReadonlyLinkCard";
|
|
76
88
|
import { List, ListItem } from "./List";
|
|
89
|
+
import { ReadonlyList } from "./List/ReadonlyList";
|
|
90
|
+
import { ReadonlyListItem } from "./List/ReadonlyListItem";
|
|
77
91
|
import { Media } from "./Media";
|
|
92
|
+
import { ReadonlyMedia } from "./Media/ReadonlyMedia";
|
|
78
93
|
import { Mermaid } from "./Mermaid";
|
|
94
|
+
import { ReadonlyMermaid } from "./Mermaid/ReadonlyMermaid";
|
|
79
95
|
import { Paragraph } from "./Paragraph";
|
|
96
|
+
import { ReadonlyParagraph } from "./Paragraph/ReadonlyParagraph";
|
|
80
97
|
import { Schema } from "./Schema";
|
|
98
|
+
import { ReadonlySchema } from "./Schema/ReadonlySchema";
|
|
81
99
|
import { tableRenderElement } from "./Table";
|
|
100
|
+
import { ReadonlyTableComponent } from "./Table/ReadonlyTableComponent";
|
|
82
101
|
import { TagPopup } from "./TagPopup";
|
|
83
102
|
/**
|
|
84
103
|
* 性能优化说明:
|
|
@@ -132,57 +151,61 @@ var MElementComponent = function(props) {
|
|
|
132
151
|
readonly: props.readonly,
|
|
133
152
|
hasChildren: !!props.children
|
|
134
153
|
});
|
|
135
|
-
|
|
154
|
+
// 表格元素特殊处理(tableRenderElement 内部已处理 readonly)
|
|
155
|
+
var tableDom = tableRenderElement(props, {
|
|
136
156
|
readonly: props.readonly
|
|
137
157
|
});
|
|
138
|
-
if (
|
|
158
|
+
if (tableDom) {
|
|
139
159
|
debugInfo('MElementComponent - 使用表格渲染', {
|
|
140
|
-
elementType: props.element.type
|
|
160
|
+
elementType: props.element.type,
|
|
161
|
+
readonly: props.readonly
|
|
141
162
|
});
|
|
142
|
-
return
|
|
163
|
+
return tableDom;
|
|
143
164
|
}
|
|
144
165
|
debugInfo('MElementComponent - 选择元素渲染器', {
|
|
145
|
-
elementType: props.element.type
|
|
166
|
+
elementType: props.element.type,
|
|
167
|
+
readonly: props.readonly
|
|
146
168
|
});
|
|
169
|
+
// 统一处理预览/编辑模式切换
|
|
147
170
|
switch(props.element.type){
|
|
148
171
|
case 'link-card':
|
|
149
|
-
return /*#__PURE__*/ React.createElement(LinkCard, props);
|
|
172
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyLinkCard, props) : /*#__PURE__*/ React.createElement(LinkCard, props);
|
|
150
173
|
case 'blockquote':
|
|
151
|
-
return /*#__PURE__*/ React.createElement(Blockquote, props);
|
|
174
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyBlockquote, props) : /*#__PURE__*/ React.createElement(Blockquote, props);
|
|
152
175
|
case 'head':
|
|
153
|
-
return /*#__PURE__*/ React.createElement(Head, props);
|
|
176
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyHead, props) : /*#__PURE__*/ React.createElement(Head, props);
|
|
154
177
|
case 'hr':
|
|
155
|
-
return /*#__PURE__*/ React.createElement(Hr, props);
|
|
178
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyHr, props) : /*#__PURE__*/ React.createElement(Hr, props);
|
|
156
179
|
case 'break':
|
|
157
|
-
return /*#__PURE__*/ React.createElement(Break, props);
|
|
180
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyBreak, props) : /*#__PURE__*/ React.createElement(Break, props);
|
|
158
181
|
case 'katex':
|
|
159
|
-
return /*#__PURE__*/ React.createElement(Katex, props);
|
|
182
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyKatex, props) : /*#__PURE__*/ React.createElement(Katex, props);
|
|
160
183
|
case 'inline-katex':
|
|
161
|
-
return /*#__PURE__*/ React.createElement(InlineKatex, props);
|
|
184
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyInlineKatex, props) : /*#__PURE__*/ React.createElement(InlineKatex, props);
|
|
162
185
|
case 'mermaid':
|
|
163
|
-
return /*#__PURE__*/ React.createElement(Mermaid, props);
|
|
186
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyMermaid, props) : /*#__PURE__*/ React.createElement(Mermaid, props);
|
|
164
187
|
case 'code':
|
|
165
|
-
return /*#__PURE__*/ React.createElement(Code, props);
|
|
188
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyCode, props) : /*#__PURE__*/ React.createElement(Code, props);
|
|
166
189
|
case 'list-item':
|
|
167
|
-
return /*#__PURE__*/ React.createElement(ListItem, props);
|
|
190
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyListItem, props) : /*#__PURE__*/ React.createElement(ListItem, props);
|
|
191
|
+
case 'bulleted-list':
|
|
192
|
+
case 'numbered-list':
|
|
168
193
|
case 'list':
|
|
169
|
-
return /*#__PURE__*/ React.createElement(List, props);
|
|
194
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyList, props) : /*#__PURE__*/ React.createElement(List, props);
|
|
170
195
|
case 'schema':
|
|
171
|
-
return /*#__PURE__*/ React.createElement(Schema, props);
|
|
172
196
|
case 'apassify':
|
|
173
|
-
return /*#__PURE__*/ React.createElement(Schema, props);
|
|
174
197
|
case 'apaasify':
|
|
175
|
-
return /*#__PURE__*/ React.createElement(Schema, props);
|
|
198
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlySchema, props) : /*#__PURE__*/ React.createElement(Schema, props);
|
|
176
199
|
case 'image':
|
|
177
|
-
return /*#__PURE__*/ React.createElement(EditorImage, props);
|
|
200
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyEditorImage, props) : /*#__PURE__*/ React.createElement(EditorImage, props);
|
|
178
201
|
case 'media':
|
|
179
|
-
return /*#__PURE__*/ React.createElement(Media, props);
|
|
202
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyMedia, props) : /*#__PURE__*/ React.createElement(Media, props);
|
|
180
203
|
case 'footnoteDefinition':
|
|
181
|
-
return /*#__PURE__*/ React.createElement(FootnoteDefinition, props);
|
|
204
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyFootnoteDefinition, props) : /*#__PURE__*/ React.createElement(FootnoteDefinition, props);
|
|
182
205
|
case 'footnoteReference':
|
|
183
|
-
return /*#__PURE__*/ React.createElement(FootnoteReference, props);
|
|
206
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyFootnoteReference, props) : /*#__PURE__*/ React.createElement(FootnoteReference, props);
|
|
184
207
|
case 'card':
|
|
185
|
-
return /*#__PURE__*/ React.createElement(WarpCard, props);
|
|
208
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyCard, props) : /*#__PURE__*/ React.createElement(WarpCard, props);
|
|
186
209
|
case 'card-before':
|
|
187
210
|
return /*#__PURE__*/ React.createElement("span", _object_spread({
|
|
188
211
|
style: {
|
|
@@ -213,9 +236,10 @@ var MElementComponent = function(props) {
|
|
|
213
236
|
}, props.attributes), props.children);
|
|
214
237
|
default:
|
|
215
238
|
debugInfo('MElementComponent - 使用默认段落渲染', {
|
|
216
|
-
elementType: props.element.type
|
|
239
|
+
elementType: props.element.type,
|
|
240
|
+
readonly: props.readonly
|
|
217
241
|
});
|
|
218
|
-
return /*#__PURE__*/ React.createElement(Paragraph, props);
|
|
242
|
+
return props.readonly ? /*#__PURE__*/ React.createElement(ReadonlyParagraph, props) : /*#__PURE__*/ React.createElement(Paragraph, props);
|
|
219
243
|
}
|
|
220
244
|
};
|
|
221
245
|
// 使用 React.memo 优化 MElement 组件的性能
|
|
@@ -279,11 +303,22 @@ var MLeafComponent = function(props) {
|
|
|
279
303
|
var newText = (tagTextRender === null || tagTextRender === void 0 ? void 0 : tagTextRender(_object_spread_props(_object_spread({}, props, props.tagInputProps), {
|
|
280
304
|
text: v
|
|
281
305
|
}), "".concat(triggerText !== null && triggerText !== void 0 ? triggerText : '$').concat(v))) || "".concat(triggerText !== null && triggerText !== void 0 ? triggerText : '$').concat(v);
|
|
306
|
+
// 使用 Point 而不是 Path 来避免 Slate 的 Range 转换问题
|
|
307
|
+
// 先删除节点的全部文本,再在起始位置插入新文本
|
|
308
|
+
var startPoint = Editor.start(markdownEditorRef.current, path);
|
|
309
|
+
var endPoint = Editor.end(markdownEditorRef.current, path);
|
|
310
|
+
// 删除节点的全部文本
|
|
311
|
+
Transforms.delete(markdownEditorRef.current, {
|
|
312
|
+
at: {
|
|
313
|
+
anchor: startPoint,
|
|
314
|
+
focus: endPoint
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
// 在节点起始位置插入新文本
|
|
282
318
|
Transforms.insertText(markdownEditorRef.current, newText, {
|
|
283
|
-
at:
|
|
319
|
+
at: startPoint
|
|
284
320
|
});
|
|
285
321
|
Transforms.setNodes(markdownEditorRef.current, _object_spread({
|
|
286
|
-
text: newText,
|
|
287
322
|
tag: true,
|
|
288
323
|
code: true,
|
|
289
324
|
placeholder: placeholder
|
|
@@ -473,4 +508,5 @@ var MLeafComponent = function(props) {
|
|
|
473
508
|
};
|
|
474
509
|
// 使用 React.memo 优化 MLeaf 组件的性能
|
|
475
510
|
export var MLeaf = /*#__PURE__*/ React.memo(MLeafComponent);
|
|
476
|
-
export { Blockquote, Break, Code, Head, Hr, InlineKatex, Katex, List, ListItem, Media, Mermaid, Paragraph,
|
|
511
|
+
export { Blockquote, Break, Code, Head, Hr, InlineKatex, Katex, List, ListItem, Media, Mermaid, Paragraph, // 预览组件导出
|
|
512
|
+
ReadonlyBlockquote, ReadonlyBreak, ReadonlyCard, ReadonlyCode, ReadonlyEditorImage, ReadonlyFootnoteDefinition, ReadonlyFootnoteReference, ReadonlyHead, ReadonlyHr, ReadonlyInlineKatex, ReadonlyKatex, ReadonlyLinkCard, ReadonlyList, ReadonlyListItem, ReadonlyMedia, ReadonlyMermaid, ReadonlyParagraph, ReadonlySchema, ReadonlyTableComponent, Schema };
|
|
@@ -81,31 +81,39 @@ import { handleTextAndInlineElementsPure, setFinishedProp } from "./parseText";
|
|
|
81
81
|
/**
|
|
82
82
|
* 处理列表节点
|
|
83
83
|
*/ export var handleList = function(currentElement, parseNodes) {
|
|
84
|
-
var _currentElement_children, _el_children
|
|
84
|
+
var _currentElement_children, _el_children;
|
|
85
85
|
debugInfo('handleList - 处理列表', {
|
|
86
86
|
ordered: currentElement.ordered,
|
|
87
87
|
start: currentElement.start,
|
|
88
88
|
finished: currentElement.finished,
|
|
89
89
|
childrenCount: (_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children.length
|
|
90
90
|
});
|
|
91
|
+
var isOrdered = currentElement.ordered;
|
|
92
|
+
var listType = isOrdered ? 'numbered-list' : 'bulleted-list';
|
|
93
|
+
var children = parseNodes(currentElement.children, false, currentElement);
|
|
94
|
+
var hasTask = children === null || children === void 0 ? void 0 : children.some(function(s) {
|
|
95
|
+
return typeof s.checked === 'boolean';
|
|
96
|
+
});
|
|
91
97
|
var el = _object_spread_props(_object_spread({
|
|
92
|
-
type:
|
|
93
|
-
order: currentElement.ordered,
|
|
94
|
-
start: currentElement.start
|
|
98
|
+
type: listType
|
|
95
99
|
}, currentElement.finished !== undefined && {
|
|
96
100
|
finished: currentElement.finished
|
|
97
101
|
}), {
|
|
98
|
-
children:
|
|
99
|
-
});
|
|
100
|
-
el.task = (_el_children = el.children) === null || _el_children === void 0 ? void 0 : _el_children.some(function(s) {
|
|
101
|
-
return typeof s.checked === 'boolean';
|
|
102
|
+
children: children
|
|
102
103
|
});
|
|
104
|
+
// 有序列表需要 start 属性
|
|
105
|
+
if (isOrdered && currentElement.start) {
|
|
106
|
+
el.start = currentElement.start;
|
|
107
|
+
}
|
|
108
|
+
// 任务列表需要 task 属性
|
|
109
|
+
if (hasTask) {
|
|
110
|
+
el.task = true;
|
|
111
|
+
}
|
|
103
112
|
debugInfo('handleList - 列表处理完成', {
|
|
104
113
|
type: el.type,
|
|
105
|
-
order: el.order,
|
|
106
114
|
start: el.start,
|
|
107
115
|
task: el.task,
|
|
108
|
-
childrenCount: (
|
|
116
|
+
childrenCount: (_el_children = el.children) === null || _el_children === void 0 ? void 0 : _el_children.length
|
|
109
117
|
});
|
|
110
118
|
return el;
|
|
111
119
|
};
|
|
@@ -297,6 +297,8 @@ var inlineNode = new Set([
|
|
|
297
297
|
case 'media':
|
|
298
298
|
str += handleMedia(node);
|
|
299
299
|
break;
|
|
300
|
+
case 'bulleted-list':
|
|
301
|
+
case 'numbered-list':
|
|
300
302
|
case 'list':
|
|
301
303
|
str += '\n' + handleList(node, preString, parent, plugins) + '\n\n';
|
|
302
304
|
break;
|
|
@@ -348,7 +350,7 @@ var inlineNode = new Set([
|
|
|
348
350
|
* 对于列表项、引用块、段落等不同类型的节点,会根据其特定的格式生成相应的 Markdown。
|
|
349
351
|
*/ export var parserSlateNodeToMarkdown = function(tree) {
|
|
350
352
|
var _loop = function(i) {
|
|
351
|
-
var _tree_, _tree_1;
|
|
353
|
+
var _tree_, _tree_1, _tree_2, _tree_3, _tree_4, _tree_5;
|
|
352
354
|
var node = tree[i];
|
|
353
355
|
debugInfo("parserSlateNodeToMarkdown - 处理节点 ".concat(i, "/").concat(tree.length), {
|
|
354
356
|
nodeType: node === null || node === void 0 ? void 0 : node.type,
|
|
@@ -543,16 +545,19 @@ var inlineNode = new Set([
|
|
|
543
545
|
debugInfo("parserSlateNodeToMarkdown - 引用块处理完成 ".concat(i), {
|
|
544
546
|
contentLength: blockquoteContent.length
|
|
545
547
|
});
|
|
546
|
-
} else if (node.type === 'list'
|
|
548
|
+
} else if (node.type === 'bulleted-list' || node.type === 'numbered-list' || node.type === 'list' // 向后兼容
|
|
549
|
+
) {
|
|
547
550
|
var _node_children2;
|
|
548
551
|
debugInfo("parserSlateNodeToMarkdown - 处理列表 ".concat(i), {
|
|
549
|
-
|
|
552
|
+
type: node.type,
|
|
553
|
+
isOrdered: node.type === 'numbered-list' || node.order,
|
|
550
554
|
start: node.start,
|
|
551
555
|
childrenCount: (_node_children2 = node.children) === null || _node_children2 === void 0 ? void 0 : _node_children2.length
|
|
552
556
|
});
|
|
553
557
|
// Handle lists
|
|
558
|
+
var isOrdered = node.type === 'numbered-list' || node.type === 'list' && node.order;
|
|
554
559
|
var listItems = node.children.map(function(item, index) {
|
|
555
|
-
var prefix =
|
|
560
|
+
var prefix = isOrdered ? "".concat(index + (node.start || 1), ".") : '-';
|
|
556
561
|
return prefix + ' ' + parserNode(item, '', _to_consumable_array(parent).concat([
|
|
557
562
|
node
|
|
558
563
|
]), plugins).trimEnd();
|
|
@@ -568,7 +573,7 @@ var inlineNode = new Set([
|
|
|
568
573
|
listItemsLength: listItems.length,
|
|
569
574
|
hasContent: !!listItems.trim()
|
|
570
575
|
});
|
|
571
|
-
} else if (node.type === 'paragraph' && ((_tree_ = tree[i - 1]) === null || _tree_ === void 0 ? void 0 : _tree_.type) === 'list'
|
|
576
|
+
} else if (node.type === 'paragraph' && (((_tree_ = tree[i - 1]) === null || _tree_ === void 0 ? void 0 : _tree_.type) === 'list' || ((_tree_1 = tree[i - 1]) === null || _tree_1 === void 0 ? void 0 : _tree_1.type) === 'bulleted-list' || ((_tree_2 = tree[i - 1]) === null || _tree_2 === void 0 ? void 0 : _tree_2.type) === 'numbered-list') && (((_tree_3 = tree[i + 1]) === null || _tree_3 === void 0 ? void 0 : _tree_3.type) === 'list' || ((_tree_4 = tree[i + 1]) === null || _tree_4 === void 0 ? void 0 : _tree_4.type) === 'bulleted-list' || ((_tree_5 = tree[i + 1]) === null || _tree_5 === void 0 ? void 0 : _tree_5.type) === 'numbered-list')) {
|
|
572
577
|
var _Node_string;
|
|
573
578
|
if (!((_Node_string = Node.string(node)) === null || _Node_string === void 0 ? void 0 : _Node_string.replace(/\s|\t/g, ''))) {
|
|
574
579
|
str += '<br/>\n\n';
|
|
@@ -585,7 +590,7 @@ var inlineNode = new Set([
|
|
|
585
590
|
str += '\n';
|
|
586
591
|
} else if (node.type === 'code' || node.type === 'media') {
|
|
587
592
|
str += '\n\n';
|
|
588
|
-
} else if (node.type === 'list') {
|
|
593
|
+
} else if (node.type === 'list' || node.type === 'bulleted-list' || node.type === 'numbered-list') {
|
|
589
594
|
str += '\n\n';
|
|
590
595
|
} else if (i !== tree.length - 1) {
|
|
591
596
|
// Card 节点不添加额外的换行符,让其子节点自行处理
|
|
@@ -1083,11 +1088,14 @@ export var isMix = function(t) {
|
|
|
1083
1088
|
* @returns 处理后的 Markdown 字符串
|
|
1084
1089
|
*/ var handleParagraph = function(node, preString, parent, plugins) {
|
|
1085
1090
|
var str = '';
|
|
1086
|
-
//
|
|
1091
|
+
// 如果有对齐属性,使用 HTML 标签包裹以支持对齐
|
|
1087
1092
|
if (node.align) {
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1093
|
+
// 递归处理子节点
|
|
1094
|
+
var content = parserSlateNodeToMarkdown(node === null || node === void 0 ? void 0 : node.children, '', _to_consumable_array(parent).concat([
|
|
1095
|
+
node
|
|
1096
|
+
]), plugins);
|
|
1097
|
+
// 使用 p 标签并添加 align 属性
|
|
1098
|
+
return '<p align="'.concat(node.align, '">').concat(content, "</p>");
|
|
1091
1099
|
}
|
|
1092
1100
|
str += parserSlateNodeToMarkdown(node === null || node === void 0 ? void 0 : node.children, preString, _to_consumable_array(parent).concat([
|
|
1093
1101
|
node
|
|
@@ -1103,11 +1111,14 @@ export var isMix = function(t) {
|
|
|
1103
1111
|
* @returns 处理后的 Markdown 标题字符串
|
|
1104
1112
|
*/ var handleHead = function(node, preString, parent, plugins) {
|
|
1105
1113
|
var str = '';
|
|
1106
|
-
//
|
|
1114
|
+
// 如果有对齐属性,使用 HTML 标签包裹以支持对齐
|
|
1107
1115
|
if (node.align) {
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1116
|
+
// 递归处理子节点
|
|
1117
|
+
var content = parserSlateNodeToMarkdown(node === null || node === void 0 ? void 0 : node.children, '', _to_consumable_array(parent).concat([
|
|
1118
|
+
node
|
|
1119
|
+
]), plugins);
|
|
1120
|
+
// 使用 h 标签并添加 align 属性
|
|
1121
|
+
return "<h".concat(node.level, ' align="').concat(node.align, '">').concat(content, "</h").concat(node.level, ">");
|
|
1111
1122
|
}
|
|
1112
1123
|
str += '#'.repeat(node.level) + ' ' + parserSlateNodeToMarkdown(node === null || node === void 0 ? void 0 : node.children, preString, _to_consumable_array(parent).concat([
|
|
1113
1124
|
node
|
|
@@ -1254,15 +1265,28 @@ export var isMix = function(t) {
|
|
|
1254
1265
|
};
|
|
1255
1266
|
/**
|
|
1256
1267
|
* 处理列表节点,递归处理其子节点
|
|
1257
|
-
* @param node -
|
|
1268
|
+
* @param node - 列表节点(bulleted-list、numbered-list 或 list)
|
|
1258
1269
|
* @param preString - 前缀字符串,用于处理缩进
|
|
1259
1270
|
* @param parent - 父节点数组
|
|
1260
1271
|
* @param plugins - 可选的插件数组
|
|
1261
1272
|
* @returns 处理后的 Markdown 列表字符串
|
|
1262
1273
|
*/ var handleList = function(node, preString, parent, plugins) {
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
])
|
|
1274
|
+
var _parent_;
|
|
1275
|
+
// 检查是否在嵌套列表中(父节点是 list-item)
|
|
1276
|
+
var isNested = parent.length > 0 && ((_parent_ = parent[parent.length - 1]) === null || _parent_ === void 0 ? void 0 : _parent_.type) === 'list-item';
|
|
1277
|
+
// 如果是嵌套列表,需要添加缩进
|
|
1278
|
+
var indent = isNested ? ' ' : '';
|
|
1279
|
+
// 递归处理列表项,每个列表项都会添加缩进前缀
|
|
1280
|
+
var listItems = node.children.map(function(item, index) {
|
|
1281
|
+
var isOrdered = node.type === 'numbered-list' || node.type === 'list' && node.order;
|
|
1282
|
+
var prefix = isOrdered ? "".concat(index + (node.start || 1), ".") : '-';
|
|
1283
|
+
// 处理列表项内容,如果是嵌套列表,需要额外缩进
|
|
1284
|
+
var itemContent = parserNode(item, indent + preString, _to_consumable_array(parent).concat([
|
|
1285
|
+
node
|
|
1286
|
+
]), plugins).trimEnd();
|
|
1287
|
+
return indent + prefix + ' ' + itemContent;
|
|
1288
|
+
}).join('\n' + indent);
|
|
1289
|
+
return listItems;
|
|
1266
1290
|
};
|
|
1267
1291
|
/**
|
|
1268
1292
|
* 处理列表项节点,递归处理其子节点
|
|
@@ -1272,9 +1296,28 @@ export var isMix = function(t) {
|
|
|
1272
1296
|
* @param plugins - 可选的插件数组
|
|
1273
1297
|
* @returns 处理后的 Markdown 列表项字符串
|
|
1274
1298
|
*/ var handleListItem = function(node, preString, parent, plugins) {
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
]
|
|
1299
|
+
// 列表项的第一个子节点应该是段落或其他块级元素
|
|
1300
|
+
// 后续子节点可能是嵌套的列表
|
|
1301
|
+
var result = [];
|
|
1302
|
+
for(var i = 0; i < node.children.length; i++){
|
|
1303
|
+
var child = node.children[i];
|
|
1304
|
+
var childResult = parserNode(child, preString, _to_consumable_array(parent).concat([
|
|
1305
|
+
node
|
|
1306
|
+
]), plugins);
|
|
1307
|
+
if (i === 0) {
|
|
1308
|
+
// 第一个子节点是主要内容
|
|
1309
|
+
result.push(childResult);
|
|
1310
|
+
} else {
|
|
1311
|
+
// 后续子节点可能是嵌套列表,需要换行并添加缩进
|
|
1312
|
+
if (child.type === 'bulleted-list' || child.type === 'numbered-list' || child.type === 'list') {
|
|
1313
|
+
result.push('\n' + childResult);
|
|
1314
|
+
} else {
|
|
1315
|
+
// 其他块级元素也需要换行
|
|
1316
|
+
result.push('\n' + childResult);
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
return result.join('');
|
|
1278
1321
|
};
|
|
1279
1322
|
/**
|
|
1280
1323
|
* 处理模式定义节点,生成 schema 代码块
|
|
@@ -6,12 +6,64 @@ function _array_like_to_array(arr, len) {
|
|
|
6
6
|
function _array_without_holes(arr) {
|
|
7
7
|
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
8
8
|
}
|
|
9
|
+
function _define_property(obj, key, value) {
|
|
10
|
+
if (key in obj) {
|
|
11
|
+
Object.defineProperty(obj, key, {
|
|
12
|
+
value: value,
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true
|
|
16
|
+
});
|
|
17
|
+
} else {
|
|
18
|
+
obj[key] = value;
|
|
19
|
+
}
|
|
20
|
+
return obj;
|
|
21
|
+
}
|
|
9
22
|
function _iterable_to_array(iter) {
|
|
10
23
|
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
11
24
|
}
|
|
12
25
|
function _non_iterable_spread() {
|
|
13
26
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
14
27
|
}
|
|
28
|
+
function _object_spread(target) {
|
|
29
|
+
for(var i = 1; i < arguments.length; i++){
|
|
30
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
31
|
+
var ownKeys = Object.keys(source);
|
|
32
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
33
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
34
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
ownKeys.forEach(function(key) {
|
|
38
|
+
_define_property(target, key, source[key]);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return target;
|
|
42
|
+
}
|
|
43
|
+
function ownKeys(object, enumerableOnly) {
|
|
44
|
+
var keys = Object.keys(object);
|
|
45
|
+
if (Object.getOwnPropertySymbols) {
|
|
46
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
47
|
+
if (enumerableOnly) {
|
|
48
|
+
symbols = symbols.filter(function(sym) {
|
|
49
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
keys.push.apply(keys, symbols);
|
|
53
|
+
}
|
|
54
|
+
return keys;
|
|
55
|
+
}
|
|
56
|
+
function _object_spread_props(target, source) {
|
|
57
|
+
source = source != null ? source : {};
|
|
58
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
59
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
60
|
+
} else {
|
|
61
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
62
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return target;
|
|
66
|
+
}
|
|
15
67
|
function _to_consumable_array(arr) {
|
|
16
68
|
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
17
69
|
}
|
|
@@ -236,7 +288,7 @@ export var MdElements = {
|
|
|
236
288
|
at: ctx.path
|
|
237
289
|
});
|
|
238
290
|
Transforms.insertNodes(ctx.editor, {
|
|
239
|
-
type: 'list',
|
|
291
|
+
type: 'bulleted-list',
|
|
240
292
|
task: true,
|
|
241
293
|
children: [
|
|
242
294
|
{
|
|
@@ -282,10 +334,12 @@ export var MdElements = {
|
|
|
282
334
|
at: path
|
|
283
335
|
});
|
|
284
336
|
var start = match[1].match(/^\s*(\d+)\./);
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
337
|
+
var listType = start ? 'numbered-list' : 'bulleted-list';
|
|
338
|
+
Transforms.insertNodes(editor, _object_spread_props(_object_spread({
|
|
339
|
+
type: listType
|
|
340
|
+
}, start && {
|
|
341
|
+
start: +start[1]
|
|
342
|
+
}), {
|
|
289
343
|
children: [
|
|
290
344
|
{
|
|
291
345
|
type: 'list-item',
|
|
@@ -297,7 +351,7 @@ export var MdElements = {
|
|
|
297
351
|
]
|
|
298
352
|
}
|
|
299
353
|
]
|
|
300
|
-
}, {
|
|
354
|
+
}), {
|
|
301
355
|
at: path
|
|
302
356
|
});
|
|
303
357
|
Transforms.select(editor, {
|