@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
@@ -369,7 +369,7 @@ export var EditorUtils = /*#__PURE__*/ function() {
369
369
  if (nodeEntries.length > 0) {
370
370
  var _nodeEntries_ = _sliced_to_array(nodeEntries[0], 2), selectNodes = _nodeEntries_[0], selectPath = _nodeEntries_[1];
371
371
  // 处理列表转段落的特殊情况
372
- if (selectNodes.type === 'list') {
372
+ if (selectNodes.type === 'list' || selectNodes.type === 'bulleted-list' || selectNodes.type === 'numbered-list') {
373
373
  Transforms.removeNodes(editor, {
374
374
  at: selectPath,
375
375
  voids: true
@@ -417,7 +417,7 @@ export var EditorUtils = /*#__PURE__*/ function() {
417
417
  item.children.forEach(function(child) {
418
418
  if (child.type === 'paragraph') {
419
419
  paragraphNodes.push(child);
420
- } else if (child.type === 'list') {
420
+ } else if (child.type === 'list' || child.type === 'bulleted-list' || child.type === 'numbered-list') {
421
421
  var _paragraphNodes;
422
422
  // 递归处理嵌套列表
423
423
  var nestedParagraphs = EditorUtils.listToParagraph(editor, child);
@@ -219,11 +219,12 @@ function _ts_generator(thisArg, body) {
219
219
  import { message } from "antd";
220
220
  import copy from "copy-to-clipboard";
221
221
  import isHotkey from "is-hotkey";
222
- import { useCallback, useEffect, useMemo } from "react";
223
- import { Editor, Element, Node, Path, Range, Text, Transforms } from "slate";
222
+ import { useEffect, useMemo } from "react";
223
+ import { Editor, Element, Node, Path, Range, Transforms } from "slate";
224
224
  import { ReactEditor } from "slate-react";
225
+ import { useRefFunction } from "../../../Hooks/useRefFunction";
225
226
  import { useSubject } from "../../hooks/subscribe";
226
- import { NativeTableEditor } from "../../utils/native-table";
227
+ import { convertToParagraph, createList, decreaseHeadingLevel, increaseHeadingLevel, insertCodeBlock, insertHorizontalLine, insertTable as insertTableCommand, setHeading, toggleQuote } from "./editorCommands";
227
228
  import { EditorUtils } from "./editorUtils";
228
229
  export var KeyboardTask = /*#__PURE__*/ function() {
229
230
  "use strict";
@@ -525,23 +526,11 @@ export var KeyboardTask = /*#__PURE__*/ function() {
525
526
  * @param level 标题级别(1-3)或4(表示普通段落)
526
527
  */ key: "head",
527
528
  value: function head(level) {
528
- var _node_;
529
- var _this_curNodes = _sliced_to_array(this.curNodes, 1), node = _this_curNodes[0];
530
529
  if (level === 4) {
531
530
  this.paragraph();
532
531
  return;
533
532
  }
534
- if (node && [
535
- 'paragraph',
536
- 'head'
537
- ].includes(node === null || node === void 0 ? void 0 : (_node_ = node[0]) === null || _node_ === void 0 ? void 0 : _node_.type) && EditorUtils.isTop(this.editor, node[1])) {
538
- Transforms.setNodes(this.editor, {
539
- type: 'head',
540
- level: level
541
- }, {
542
- at: node[1]
543
- });
544
- }
533
+ setHeading(this.editor, level);
545
534
  }
546
535
  },
547
536
  {
@@ -551,17 +540,7 @@ export var KeyboardTask = /*#__PURE__*/ function() {
551
540
  * 如果当前节点是标题类型,将其转换为普通段落
552
541
  */ key: "paragraph",
553
542
  value: function paragraph() {
554
- var _node_;
555
- var _this_curNodes = _sliced_to_array(this.curNodes, 1), node = _this_curNodes[0];
556
- if (node && [
557
- 'head'
558
- ].includes(node === null || node === void 0 ? void 0 : (_node_ = node[0]) === null || _node_ === void 0 ? void 0 : _node_.type)) {
559
- Transforms.setNodes(this.editor, {
560
- type: 'paragraph'
561
- }, {
562
- at: node[1]
563
- });
564
- }
543
+ convertToParagraph(this.editor);
565
544
  }
566
545
  },
567
546
  {
@@ -573,34 +552,7 @@ export var KeyboardTask = /*#__PURE__*/ function() {
573
552
  * 或将其他级别标题升级一级(数字变小)
574
553
  */ key: "increaseHead",
575
554
  value: function increaseHead() {
576
- var _node_;
577
- var _this_curNodes = _sliced_to_array(this.curNodes, 1), node = _this_curNodes[0];
578
- if (node && [
579
- 'paragraph',
580
- 'head'
581
- ].includes(node === null || node === void 0 ? void 0 : (_node_ = node[0]) === null || _node_ === void 0 ? void 0 : _node_.type) && EditorUtils.isTop(this.editor, node[1])) {
582
- var _node_1;
583
- if ((node === null || node === void 0 ? void 0 : (_node_1 = node[0]) === null || _node_1 === void 0 ? void 0 : _node_1.type) === 'paragraph') {
584
- Transforms.setNodes(this.editor, {
585
- type: 'head',
586
- level: 4
587
- }, {
588
- at: node[1]
589
- });
590
- } else if (node[0].level === 1) {
591
- Transforms.setNodes(this.editor, {
592
- type: 'paragraph'
593
- }, {
594
- at: node[1]
595
- });
596
- } else {
597
- Transforms.setNodes(this.editor, {
598
- level: node[0].level - 1
599
- }, {
600
- at: node[1]
601
- });
602
- }
603
- }
555
+ increaseHeadingLevel(this.editor);
604
556
  }
605
557
  },
606
558
  {
@@ -612,34 +564,7 @@ export var KeyboardTask = /*#__PURE__*/ function() {
612
564
  * 或将其他级别标题降级一级(数字变大)
613
565
  */ key: "decreaseHead",
614
566
  value: function decreaseHead() {
615
- var _node_;
616
- var _this_curNodes = _sliced_to_array(this.curNodes, 1), node = _this_curNodes[0];
617
- if (node && [
618
- 'paragraph',
619
- 'head'
620
- ].includes(node === null || node === void 0 ? void 0 : (_node_ = node[0]) === null || _node_ === void 0 ? void 0 : _node_.type) && EditorUtils.isTop(this.editor, node[1])) {
621
- var _node_1;
622
- if ((node === null || node === void 0 ? void 0 : (_node_1 = node[0]) === null || _node_1 === void 0 ? void 0 : _node_1.type) === 'paragraph') {
623
- Transforms.setNodes(this.editor, {
624
- type: 'head',
625
- level: 1
626
- }, {
627
- at: node[1]
628
- });
629
- } else if (node[0].level === 4) {
630
- Transforms.setNodes(this.editor, {
631
- type: 'paragraph'
632
- }, {
633
- at: node[1]
634
- });
635
- } else {
636
- Transforms.setNodes(this.editor, {
637
- level: node[0].level + 1
638
- }, {
639
- at: node[1]
640
- });
641
- }
642
- }
567
+ decreaseHeadingLevel(this.editor);
643
568
  }
644
569
  },
645
570
  {
@@ -651,29 +576,8 @@ export var KeyboardTask = /*#__PURE__*/ function() {
651
576
  * 如果当前节点是标题,先将其转换为普通段落。
652
577
  */ key: "insertQuote",
653
578
  value: function insertQuote() {
654
- var _node_, _node_1;
655
579
  var _this_curNodes = _sliced_to_array(this.curNodes, 1), node = _this_curNodes[0];
656
- if (![
657
- 'paragraph',
658
- 'head'
659
- ].includes(node === null || node === void 0 ? void 0 : (_node_ = node[0]) === null || _node_ === void 0 ? void 0 : _node_.type)) return;
660
- if (Node.parent(this.editor, node[1]).type === 'blockquote') {
661
- Transforms.unwrapNodes(this.editor, {
662
- at: Path.parent(node[1])
663
- });
664
- return;
665
- }
666
- if ((node === null || node === void 0 ? void 0 : (_node_1 = node[0]) === null || _node_1 === void 0 ? void 0 : _node_1.type) === 'head') {
667
- Transforms.setNodes(this.editor, {
668
- type: 'paragraph'
669
- }, {
670
- at: node[1]
671
- });
672
- }
673
- Transforms.wrapNodes(this.editor, {
674
- type: 'blockquote',
675
- children: []
676
- });
580
+ toggleQuote(this.editor, node);
677
581
  }
678
582
  },
679
583
  {
@@ -685,38 +589,8 @@ export var KeyboardTask = /*#__PURE__*/ function() {
685
589
  * 决定在何处插入表格及如何处理现有内容。
686
590
  */ key: "insertTable",
687
591
  value: function insertTable() {
688
- var _node_, _node_1;
689
592
  var _this_curNodes = _sliced_to_array(this.curNodes, 1), node = _this_curNodes[0];
690
- if (node && [
691
- 'paragraph',
692
- 'head'
693
- ].includes(node === null || node === void 0 ? void 0 : (_node_ = node[0]) === null || _node_ === void 0 ? void 0 : _node_.type)) {
694
- var _node_2, _node_3;
695
- var path = (node === null || node === void 0 ? void 0 : (_node_2 = node[0]) === null || _node_2 === void 0 ? void 0 : _node_2.type) === 'paragraph' && !Node.string(node[0]) ? node[1] : Path.next(node[1]);
696
- // 使用原生表格编辑器插入表格
697
- NativeTableEditor.insertTable(this.editor, {
698
- rows: 3,
699
- cols: 3,
700
- at: path
701
- });
702
- if ((node === null || node === void 0 ? void 0 : (_node_3 = node[0]) === null || _node_3 === void 0 ? void 0 : _node_3.type) === 'paragraph' && !Node.string(node[0])) {
703
- Transforms.delete(this.editor, {
704
- at: Path.next(path)
705
- });
706
- }
707
- Transforms.select(this.editor, Editor.start(this.editor, path));
708
- }
709
- if (node && [
710
- 'column-cell'
711
- ].includes(node === null || node === void 0 ? void 0 : (_node_1 = node[0]) === null || _node_1 === void 0 ? void 0 : _node_1.type)) {
712
- NativeTableEditor.insertTable(this.editor, {
713
- rows: 3,
714
- cols: 3,
715
- at: _to_consumable_array(node[1]).concat([
716
- 0
717
- ])
718
- });
719
- }
593
+ insertTableCommand(this.editor, node);
720
594
  }
721
595
  },
722
596
  {
@@ -735,29 +609,7 @@ export var KeyboardTask = /*#__PURE__*/ function() {
735
609
  */ key: "insertCode",
736
610
  value: function insertCode(type) {
737
611
  var _this_curNodes = _sliced_to_array(this.curNodes, 1), node = _this_curNodes[0];
738
- if (node && node[0] && [
739
- 'paragraph',
740
- 'head'
741
- ].includes(node[0].type)) {
742
- var path = node[0].type === 'paragraph' && !Node.string(node[0]) ? node[1] : Path.next(node[1]);
743
- var lang = '';
744
- if (type === 'mermaid') {
745
- lang = 'mermaid';
746
- }
747
- Transforms.insertNodes(this.editor, {
748
- type: 'code',
749
- language: lang ? lang : undefined,
750
- children: [
751
- {
752
- text: "flowchart TD\n Start --> Stop"
753
- }
754
- ],
755
- render: type === 'html' ? true : undefined
756
- }, {
757
- at: path
758
- });
759
- Transforms.select(this.editor, Editor.end(this.editor, path));
760
- }
612
+ insertCodeBlock(this.editor, type, node);
761
613
  }
762
614
  },
763
615
  {
@@ -768,40 +620,8 @@ export var KeyboardTask = /*#__PURE__*/ function() {
768
620
  * 如果分割线后没有内容,则自动插入一个空段落并将光标定位到该段落。
769
621
  */ key: "horizontalLine",
770
622
  value: function horizontalLine() {
771
- var _node_;
772
623
  var _this_curNodes = _sliced_to_array(this.curNodes, 1), node = _this_curNodes[0];
773
- if (node && [
774
- 'paragraph',
775
- 'head'
776
- ].includes(node === null || node === void 0 ? void 0 : (_node_ = node[0]) === null || _node_ === void 0 ? void 0 : _node_.type)) {
777
- var _node_1;
778
- var path = (node === null || node === void 0 ? void 0 : (_node_1 = node[0]) === null || _node_1 === void 0 ? void 0 : _node_1.type) === 'paragraph' && !Node.string(node[0]) ? node[1] : Path.next(node[1]);
779
- Transforms.insertNodes(this.editor, {
780
- type: 'hr',
781
- children: [
782
- {
783
- text: ''
784
- }
785
- ]
786
- }, {
787
- at: path
788
- });
789
- if (Editor.hasPath(this.editor, Path.next(path))) {
790
- Transforms.select(this.editor, Editor.start(this.editor, Path.next(path)));
791
- } else {
792
- Transforms.insertNodes(this.editor, {
793
- type: 'paragraph',
794
- children: [
795
- {
796
- text: ''
797
- }
798
- ]
799
- }, {
800
- at: Path.next(path),
801
- select: true
802
- });
803
- }
804
- }
624
+ insertHorizontalLine(this.editor, node);
805
625
  }
806
626
  },
807
627
  {
@@ -814,203 +634,7 @@ export var KeyboardTask = /*#__PURE__*/ function() {
814
634
  * @param mode 列表类型 'ordered'(有序列表), 'unordered'(无序列表), 'task'(任务列表)
815
635
  */ key: "list",
816
636
  value: function list(mode) {
817
- var _this_curNodes = _sliced_to_array(this.curNodes, 1), curNode = _this_curNodes[0];
818
- if (curNode && [
819
- 'paragraph',
820
- 'head'
821
- ].includes(curNode[0].type)) {
822
- var parent = Editor.parent(this.editor, curNode[1]);
823
- if (parent[0].type === 'list-item' && !Path.hasPrevious(curNode[1])) {
824
- Transforms.setNodes(this.editor, {
825
- order: mode === 'ordered',
826
- task: mode === 'task'
827
- }, {
828
- at: Path.parent(parent[1])
829
- });
830
- var listItems = Array.from(Editor.nodes(this.editor, {
831
- match: function(n) {
832
- return n.type === 'list-item';
833
- },
834
- at: Path.parent(parent[1]),
835
- reverse: true,
836
- mode: 'lowest'
837
- }));
838
- Transforms.setNodes(this.editor, {
839
- start: undefined
840
- }, {
841
- at: Path.parent(parent[1])
842
- });
843
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
844
- try {
845
- for(var _iterator = listItems[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
846
- var l = _step.value;
847
- Transforms.setNodes(this.editor, {
848
- checked: mode === 'task' ? l[0].checked || false : undefined
849
- }, {
850
- at: l[1]
851
- });
852
- }
853
- } catch (err) {
854
- _didIteratorError = true;
855
- _iteratorError = err;
856
- } finally{
857
- try {
858
- if (!_iteratorNormalCompletion && _iterator.return != null) {
859
- _iterator.return();
860
- }
861
- } finally{
862
- if (_didIteratorError) {
863
- throw _iteratorError;
864
- }
865
- }
866
- }
867
- } else {
868
- var childrenList = [];
869
- var selection = this.editor.selection;
870
- if (!selection || Range.isCollapsed(selection)) {
871
- // 如果没有选区或选区已折叠,使用当前节点
872
- var textNodes = curNode[0].type === 'paragraph' ? curNode[0].children : [
873
- {
874
- text: Node.string(curNode[0])
875
- }
876
- ];
877
- var item = {
878
- type: 'list-item',
879
- checked: mode === 'task' ? false : undefined,
880
- children: [
881
- {
882
- type: 'paragraph',
883
- children: textNodes
884
- }
885
- ]
886
- };
887
- childrenList.push(item);
888
- // 删除原节点
889
- Transforms.delete(this.editor, {
890
- at: curNode[1]
891
- });
892
- } else {
893
- // 有选区时,获取选区内的所有节点
894
- var selectedNodes = Array.from(Editor.nodes(this.editor, {
895
- at: selection,
896
- match: function(n) {
897
- return Element.isElement(n) && [
898
- 'paragraph',
899
- 'head'
900
- ].includes(n.type);
901
- }
902
- }));
903
- if (selectedNodes.length === 0) {
904
- // 如果没有选中块级元素,尝试选中文本节点
905
- var textNodes1 = Array.from(Editor.nodes(this.editor, {
906
- at: selection,
907
- match: function(n) {
908
- return Text.isText(n);
909
- }
910
- }));
911
- if (textNodes1.length > 0) {
912
- // 获取文本节点的父节点
913
- var parentPath = Path.parent(textNodes1[0][1]);
914
- var _Editor_node = _sliced_to_array(Editor.node(this.editor, parentPath), 1), parentNode = _Editor_node[0];
915
- if (Element.isElement(parentNode) && [
916
- 'paragraph',
917
- 'head'
918
- ].includes(parentNode.type)) {
919
- selectedNodes.push([
920
- parentNode,
921
- parentPath
922
- ]);
923
- }
924
- }
925
- }
926
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
927
- try {
928
- // 处理选中的节点
929
- for(var _iterator1 = selectedNodes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
930
- var _step_value = _sliced_to_array(_step1.value, 2), node = _step_value[0], path = _step_value[1];
931
- // 检查节点是否完全被选中
932
- var nodeRange = Editor.range(this.editor, path);
933
- var isFullySelected = Range.equals(selection, nodeRange) || Range.includes(selection, nodeRange) && Range.includes(nodeRange, selection);
934
- if (isFullySelected) {
935
- // 完全选中的节点,直接删除并转换为列表项
936
- var textNodes2 = node.type === 'paragraph' ? node.children : [
937
- {
938
- text: Node.string(node)
939
- }
940
- ];
941
- var item1 = {
942
- type: 'list-item',
943
- checked: mode === 'task' ? false : undefined,
944
- children: [
945
- {
946
- type: 'paragraph',
947
- children: textNodes2
948
- }
949
- ]
950
- };
951
- childrenList.push(item1);
952
- Transforms.delete(this.editor, {
953
- at: path
954
- });
955
- } else {
956
- // 部分选中的节点,使用选区内容创建列表项
957
- var selectedText = Editor.string(this.editor, selection);
958
- if (selectedText.trim()) {
959
- var item2 = {
960
- type: 'list-item',
961
- checked: mode === 'task' ? false : undefined,
962
- children: [
963
- {
964
- type: 'paragraph',
965
- children: [
966
- {
967
- text: selectedText
968
- }
969
- ]
970
- }
971
- ]
972
- };
973
- childrenList.push(item2);
974
- // 删除选中的内容
975
- Transforms.delete(this.editor, {
976
- at: selection
977
- });
978
- }
979
- }
980
- }
981
- } catch (err) {
982
- _didIteratorError1 = true;
983
- _iteratorError1 = err;
984
- } finally{
985
- try {
986
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
987
- _iterator1.return();
988
- }
989
- } finally{
990
- if (_didIteratorError1) {
991
- throw _iteratorError1;
992
- }
993
- }
994
- }
995
- }
996
- Transforms.insertNodes(this.editor, {
997
- type: 'list',
998
- order: mode === 'ordered',
999
- task: mode === 'task',
1000
- children: childrenList
1001
- }, {
1002
- at: this.editor.selection || curNode[1],
1003
- select: true
1004
- });
1005
- }
1006
- } else if (curNode && curNode[0].type === 'list-item') {
1007
- Transforms.setNodes(this.editor, {
1008
- order: mode === 'ordered',
1009
- task: mode === 'task'
1010
- }, {
1011
- at: curNode[1]
1012
- });
1013
- }
637
+ createList(this.editor, mode);
1014
638
  }
1015
639
  },
1016
640
  {
@@ -1248,7 +872,7 @@ export var useSystemKeyboard = function(keyTask$, store, props, markdownContaine
1248
872
  (_task = task)[key].apply(_task, _to_consumable_array(args || []));
1249
873
  });
1250
874
  // eslint-disable-next-line react-hooks/exhaustive-deps
1251
- var keydown = useCallback(function(e) {
875
+ var keydown = useRefFunction(function(e) {
1252
876
  if (!store) return;
1253
877
  if (isHotkey('mod+c', e) || isHotkey('mod+x', e)) {
1254
878
  var _node_, _node_1, _node_2;
@@ -1339,7 +963,7 @@ export var useSystemKeyboard = function(keyTask$, store, props, markdownContaine
1339
963
  }
1340
964
  }
1341
965
  }
1342
- }, []);
966
+ });
1343
967
  useEffect(function() {
1344
968
  var _markdownContainerRef_current;
1345
969
  if (props.readonly) return;
@@ -73,17 +73,24 @@ export type BlockQuoteNode<T = Record<string, any>> = {
73
73
  type: 'blockquote';
74
74
  children: (BlockQuoteNode | ParagraphNode)[];
75
75
  };
76
- export type ListNode<T = Record<string, any>> = {
76
+ export type BulletedListNode<T = Record<string, any>> = {
77
77
  contextProps?: T;
78
78
  otherProps?: T;
79
- type: 'list';
79
+ type: 'bulleted-list';
80
80
  children: ListItemNode[];
81
- order?: boolean;
82
- start?: number;
83
81
  task?: boolean;
84
82
  finished?: boolean;
85
83
  h?: number;
86
84
  };
85
+ export type NumberedListNode<T = Record<string, any>> = {
86
+ contextProps?: T;
87
+ otherProps?: T;
88
+ type: 'numbered-list';
89
+ children: ListItemNode[];
90
+ start?: number;
91
+ h?: number;
92
+ };
93
+ export type ListNode<T = Record<string, any>> = BulletedListNode<T> | NumberedListNode<T>;
87
94
  export type ChartTypeConfig<T = Record<string, any>> = {
88
95
  contextProps?: T;
89
96
  otherProps?: T;
@@ -202,7 +209,7 @@ export type SchemaNode<T = Record<string, any>> = {
202
209
  };
203
210
  export type Elements<T = Record<string, any>> = CodeNode<T> | FootnoteDefinitionNode<T> | SchemaNode<{
204
211
  valueType: string;
205
- } & T> | ParagraphNode<T> | BlockQuoteNode<T> | ListNode<T> | ListItemNode<T> | HeadNode<T> | HrNode<T> | MediaNode<T> | BreakNode<T> | ChartNode<T> | AttachNode<T> | LinkCardNode<T> | CardNode | CardBeforeNode | CardAfterNode | TableCustomElement;
212
+ } & T> | ParagraphNode<T> | BlockQuoteNode<T> | BulletedListNode<T> | NumberedListNode<T> | ListNode<T> | ListItemNode<T> | HeadNode<T> | HrNode<T> | MediaNode<T> | BreakNode<T> | ChartNode<T> | AttachNode<T> | LinkCardNode<T> | CardNode | CardBeforeNode | CardAfterNode | TableCustomElement;
206
213
  export type CustomLeaf<T = Record<string, any>> = {
207
214
  contextProps?: T;
208
215
  otherProps?: T;
@@ -134,7 +134,7 @@ function _unsupported_iterable_to_array(o, minLen) {
134
134
  }
135
135
  import { ConfigProvider } from "antd";
136
136
  import classNames from "classnames";
137
- import React, { memo, useContext, useMemo, useState } from "react";
137
+ import React, { memo, useContext, useState } from "react";
138
138
  import { BaseMarkdownEditor } from "../MarkdownEditor";
139
139
  import { BorderBeamAnimation } from "./BorderBeamAnimation";
140
140
  import { useFileUploadManager } from "./FileUploadManager";
@@ -202,7 +202,7 @@ import { useVoiceInputManager } from "./VoiceInputManager";
202
202
  "isShowTopOperatingArea"
203
203
  ]);
204
204
  var _ref;
205
- var _props_style, _props_attachment, _props_enlargeable, _props_refinePrompt, _props_enlargeable1, _props_enlargeable2;
205
+ var _props_skillMode, _props_enlargeable, _props_refinePrompt, _props_enlargeable1, _props_enlargeable2;
206
206
  var getPrefixCls = useContext(ConfigProvider.ConfigContext).getPrefixCls;
207
207
  var baseCls = getPrefixCls('agentic-md-input-field');
208
208
  var _useStyle = useStyle(baseCls, props.disableHoverAnimation), wrapSSR = _useStyle.wrapSSR, hashId = _useStyle.hashId;
@@ -325,21 +325,6 @@ import { useVoiceInputManager } from "./VoiceInputManager";
325
325
  baseCls: baseCls,
326
326
  hashId: hashId
327
327
  });
328
- // 计算编辑器容器的 maxHeight(用于内部样式)
329
- var editorMaxHeight = useMemo(function() {
330
- var _props_maxHeight;
331
- var _props_style, _props_attachment;
332
- if (isEnlarged) return 'none';
333
- var maxHeightValue = (_props_maxHeight = props.maxHeight) !== null && _props_maxHeight !== void 0 ? _props_maxHeight : (_props_style = props.style) === null || _props_style === void 0 ? void 0 : _props_style.maxHeight;
334
- var base = typeof maxHeightValue === 'number' ? maxHeightValue : maxHeightValue ? parseFloat(String(maxHeightValue)) || 400 : 400;
335
- var extra = ((_props_attachment = props.attachment) === null || _props_attachment === void 0 ? void 0 : _props_attachment.enable) ? 90 : 0;
336
- return "min(".concat(base + extra, "px)");
337
- }, [
338
- isEnlarged,
339
- props.maxHeight,
340
- (_props_style = props.style) === null || _props_style === void 0 ? void 0 : _props_style.maxHeight,
341
- (_props_attachment = props.attachment) === null || _props_attachment === void 0 ? void 0 : _props_attachment.enable
342
- ]);
343
328
  var _obj, _obj1;
344
329
  return wrapSSR(/*#__PURE__*/ React.createElement(React.Fragment, null, isShowTopOperatingArea && /*#__PURE__*/ React.createElement("div", {
345
330
  className: classNames("".concat(baseCls, "-top-area"), hashId)
@@ -356,7 +341,7 @@ import { useVoiceInputManager } from "./VoiceInputManager";
356
341
  }, tagInputProps)
357
342
  }, /*#__PURE__*/ React.createElement("div", {
358
343
  ref: inputRef,
359
- className: classNames(baseCls, hashId, props.className, (_obj = {}, _define_property(_obj, "".concat(baseCls, "-disabled"), props.disabled), _define_property(_obj, "".concat(baseCls, "-typing"), false), _define_property(_obj, "".concat(baseCls, "-loading"), isLoading), _define_property(_obj, "".concat(baseCls, "-is-multi-row"), isMultiRowLayout), _define_property(_obj, "".concat(baseCls, "-enlarged"), isEnlarged), _define_property(_obj, "".concat(baseCls, "-focused"), isFocused), _define_property(_obj, "".concat(baseCls, "-has-tools-wrapper"), !!props.toolsRender), _obj)),
344
+ className: classNames(baseCls, hashId, props.className, (_obj = {}, _define_property(_obj, "".concat(baseCls, "-disabled"), props.disabled), _define_property(_obj, "".concat(baseCls, "-skill-mode"), (_props_skillMode = props.skillMode) === null || _props_skillMode === void 0 ? void 0 : _props_skillMode.open), _define_property(_obj, "".concat(baseCls, "-typing"), false), _define_property(_obj, "".concat(baseCls, "-loading"), isLoading), _define_property(_obj, "".concat(baseCls, "-is-multi-row"), isMultiRowLayout), _define_property(_obj, "".concat(baseCls, "-enlarged"), isEnlarged), _define_property(_obj, "".concat(baseCls, "-focused"), isFocused), _define_property(_obj, "".concat(baseCls, "-has-tools-wrapper"), !!props.toolsRender), _obj)),
360
345
  style: _object_spread_props(_object_spread({}, props.style, enlargedStyle), {
361
346
  height: isEnlarged ? "".concat((_ref = (_props_enlargeable = props.enlargeable) === null || _props_enlargeable === void 0 ? void 0 : _props_enlargeable.height) !== null && _ref !== void 0 ? _ref : 980, "px") : "min(".concat(collapsedHeightPx, "px,100%)"),
362
347
  borderRadius: borderRadius || 12,
@@ -384,9 +369,9 @@ import { useVoiceInputManager } from "./VoiceInputManager";
384
369
  borderRadius: !!props.toolsRender ? 0 : 'inherit',
385
370
  borderTopLeftRadius: 'inherit',
386
371
  borderTopRightRadius: 'inherit',
387
- maxHeight: editorMaxHeight,
388
372
  height: isEnlarged ? '100%' : 'auto',
389
- flex: 1
373
+ flex: 1,
374
+ minHeight: 0
390
375
  },
391
376
  className: classNames("".concat(baseCls, "-editor"), hashId, (_obj1 = {}, _define_property(_obj1, "".concat(baseCls, "-editor-hover"), isHover), _define_property(_obj1, "".concat(baseCls, "-editor-disabled"), props.disabled), _obj1))
392
377
  }, /*#__PURE__*/ React.createElement(SkillModeBar, {
@@ -399,9 +384,9 @@ import { useVoiceInputManager } from "./VoiceInputManager";
399
384
  leafRender: props.leafRender,
400
385
  style: {
401
386
  width: '100%',
387
+ minHeight: 0,
402
388
  flex: 1,
403
- padding: 0,
404
- paddingRight: computedRightPadding
389
+ padding: 0
405
390
  },
406
391
  toolBar: {
407
392
  enable: false
@@ -411,7 +396,9 @@ import { useVoiceInputManager } from "./VoiceInputManager";
411
396
  },
412
397
  readonly: isLoading,
413
398
  contentStyle: {
414
- padding: 'var(--padding-3x)'
399
+ alignItems: 'flex-start',
400
+ padding: 'var(--padding-3x)',
401
+ paddingRight: computedRightPadding || 'var(--padding-3x)'
415
402
  },
416
403
  textAreaProps: {
417
404
  enable: true,