@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.
Files changed (83) hide show
  1. package/dist/ChatLayout/components/FooterBackgroundLottie/index.js +1 -1
  2. package/dist/MarkdownEditor/BaseMarkdownEditor.js +1 -1
  3. package/dist/MarkdownEditor/editor/elements/Blockquote/ReadonlyBlockquote.d.ts +33 -0
  4. package/dist/MarkdownEditor/editor/elements/Blockquote/ReadonlyBlockquote.js +69 -0
  5. package/dist/MarkdownEditor/editor/elements/Break/ReadonlyBreak.d.ts +30 -0
  6. package/dist/MarkdownEditor/editor/elements/Break/ReadonlyBreak.js +88 -0
  7. package/dist/MarkdownEditor/editor/elements/Card/ReadonlyCard.d.ts +34 -0
  8. package/dist/MarkdownEditor/editor/elements/Card/ReadonlyCard.js +96 -0
  9. package/dist/MarkdownEditor/editor/elements/Code/ReadonlyCode.d.ts +33 -0
  10. package/dist/MarkdownEditor/editor/elements/Code/ReadonlyCode.js +145 -0
  11. package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/ReadonlyFootnoteDefinition.d.ts +34 -0
  12. package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/ReadonlyFootnoteDefinition.js +125 -0
  13. package/dist/MarkdownEditor/editor/elements/FootnoteReference/ReadonlyFootnoteReference.d.ts +34 -0
  14. package/dist/MarkdownEditor/editor/elements/FootnoteReference/ReadonlyFootnoteReference.js +101 -0
  15. package/dist/MarkdownEditor/editor/elements/Head/ReadonlyHead.d.ts +35 -0
  16. package/dist/MarkdownEditor/editor/elements/Head/ReadonlyHead.js +111 -0
  17. package/dist/MarkdownEditor/editor/elements/Head/index.d.ts +3 -0
  18. package/dist/MarkdownEditor/editor/elements/Head/index.js +3 -1
  19. package/dist/MarkdownEditor/editor/elements/Hr/ReadonlyHr.d.ts +30 -0
  20. package/dist/MarkdownEditor/editor/elements/Hr/ReadonlyHr.js +95 -0
  21. package/dist/MarkdownEditor/editor/elements/Image/ReadonlyEditorImage.d.ts +35 -0
  22. package/dist/MarkdownEditor/editor/elements/Image/ReadonlyEditorImage.js +426 -0
  23. package/dist/MarkdownEditor/editor/elements/Image/index.js +38 -50
  24. package/dist/MarkdownEditor/editor/elements/InlineKatex/ReadonlyInlineKatex.d.ts +32 -0
  25. package/dist/MarkdownEditor/editor/elements/InlineKatex/ReadonlyInlineKatex.js +100 -0
  26. package/dist/MarkdownEditor/editor/elements/Katex/ReadonlyKatex.d.ts +32 -0
  27. package/dist/MarkdownEditor/editor/elements/Katex/ReadonlyKatex.js +110 -0
  28. package/dist/MarkdownEditor/editor/elements/LinkCard/ReadonlyLinkCard.d.ts +40 -0
  29. package/dist/MarkdownEditor/editor/elements/LinkCard/ReadonlyLinkCard.js +215 -0
  30. package/dist/MarkdownEditor/editor/elements/List/List.js +27 -12
  31. package/dist/MarkdownEditor/editor/elements/List/ReadonlyList.d.ts +33 -0
  32. package/dist/MarkdownEditor/editor/elements/List/ReadonlyList.js +93 -0
  33. package/dist/MarkdownEditor/editor/elements/List/ReadonlyListItem.d.ts +35 -0
  34. package/dist/MarkdownEditor/editor/elements/List/ReadonlyListItem.js +138 -0
  35. package/dist/MarkdownEditor/editor/elements/Media/ReadonlyMedia.d.ts +36 -0
  36. package/dist/MarkdownEditor/editor/elements/Media/ReadonlyMedia.js +600 -0
  37. package/dist/MarkdownEditor/editor/elements/Mermaid/ReadonlyMermaid.d.ts +32 -0
  38. package/dist/MarkdownEditor/editor/elements/Mermaid/ReadonlyMermaid.js +101 -0
  39. package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.d.ts +35 -0
  40. package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.js +109 -0
  41. package/dist/MarkdownEditor/editor/elements/Paragraph/index.js +2 -1
  42. package/dist/MarkdownEditor/editor/elements/Schema/ReadonlySchema.d.ts +33 -0
  43. package/dist/MarkdownEditor/editor/elements/Schema/ReadonlySchema.js +163 -0
  44. package/dist/MarkdownEditor/editor/elements/index.d.ts +20 -1
  45. package/dist/MarkdownEditor/editor/elements/index.js +65 -29
  46. package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.js +18 -10
  47. package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +64 -21
  48. package/dist/MarkdownEditor/editor/plugins/elements.js +60 -6
  49. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/backspace.js +97 -39
  50. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.d.ts +14 -0
  51. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.js +117 -90
  52. package/dist/MarkdownEditor/editor/plugins/index.d.ts +8 -0
  53. package/dist/MarkdownEditor/editor/plugins/index.js +8 -0
  54. package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.d.ts +12 -6
  55. package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.js +67 -42
  56. package/dist/MarkdownEditor/editor/plugins/utils.d.ts +31 -0
  57. package/dist/MarkdownEditor/editor/plugins/utils.js +75 -0
  58. package/dist/MarkdownEditor/editor/plugins/withCardPlugin.d.ts +15 -0
  59. package/dist/MarkdownEditor/editor/plugins/withCardPlugin.js +329 -0
  60. package/dist/MarkdownEditor/editor/plugins/withCodeTagPlugin.d.ts +11 -0
  61. package/dist/MarkdownEditor/editor/plugins/withCodeTagPlugin.js +299 -0
  62. package/dist/MarkdownEditor/editor/plugins/withInlineNodes.d.ts +12 -0
  63. package/dist/MarkdownEditor/editor/plugins/withInlineNodes.js +17 -0
  64. package/dist/MarkdownEditor/editor/plugins/withLinkAndMediaPlugin.d.ts +11 -0
  65. package/dist/MarkdownEditor/editor/plugins/withLinkAndMediaPlugin.js +70 -0
  66. package/dist/MarkdownEditor/editor/plugins/withListsPlugin.d.ts +23 -0
  67. package/dist/MarkdownEditor/editor/plugins/withListsPlugin.js +204 -0
  68. package/dist/MarkdownEditor/editor/plugins/withMarkdown.d.ts +9 -12
  69. package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +17 -764
  70. package/dist/MarkdownEditor/editor/plugins/withSchemaPlugin.d.ts +11 -0
  71. package/dist/MarkdownEditor/editor/plugins/withSchemaPlugin.js +55 -0
  72. package/dist/MarkdownEditor/editor/plugins/withVoidNodes.d.ts +12 -0
  73. package/dist/MarkdownEditor/editor/plugins/withVoidNodes.js +17 -0
  74. package/dist/MarkdownEditor/editor/store.js +1 -1
  75. package/dist/MarkdownEditor/editor/utils/docx/module.js +41 -8
  76. package/dist/MarkdownEditor/editor/utils/editorCommands.d.ts +97 -0
  77. package/dist/MarkdownEditor/editor/utils/editorCommands.js +966 -0
  78. package/dist/MarkdownEditor/editor/utils/editorUtils.js +2 -2
  79. package/dist/MarkdownEditor/editor/utils/keyboard.js +15 -391
  80. package/dist/MarkdownEditor/el.d.ts +12 -5
  81. package/dist/MarkdownInputField/MarkdownInputField.js +10 -23
  82. package/dist/MarkdownInputField/style.js +9 -4
  83. 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
- var dom = tableRenderElement(props, {
154
+ // 表格元素特殊处理(tableRenderElement 内部已处理 readonly)
155
+ var tableDom = tableRenderElement(props, {
136
156
  readonly: props.readonly
137
157
  });
138
- if (dom) {
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 dom;
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: path
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, Schema };
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, _el_children1;
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: 'list',
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: parseNodes(currentElement.children, false, currentElement)
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: (_el_children1 = el.children) === null || _el_children1 === void 0 ? void 0 : _el_children1.length
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
- isOrdered: node.order,
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 = node.order ? "".concat(index + (node.start || 1), ".") : '-';
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' && ((_tree_1 = tree[i + 1]) === null || _tree_1 === void 0 ? void 0 : _tree_1.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
- str += "<!--".concat(JSON.stringify({
1089
- align: node.align
1090
- }), "-->\n").concat(preString);
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
- str += "<!--".concat(JSON.stringify({
1109
- align: node.align
1110
- }), "-->\n").concat(preString);
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
- return parserSlateNodeToMarkdown(node.children, preString, _to_consumable_array(parent).concat([
1264
- node
1265
- ]), plugins);
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
- return parserSlateNodeToMarkdown(node.children, preString, _to_consumable_array(parent).concat([
1276
- node
1277
- ]), plugins);
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
- Transforms.insertNodes(editor, {
286
- type: 'list',
287
- order: !!start,
288
- start: start ? +start[1] : undefined,
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, {