@ant-design/agentic-ui 2.21.0 → 2.22.0

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 (28) hide show
  1. package/dist/MarkdownEditor/editor/elements/TagPopup/index.js +4 -4
  2. package/dist/MarkdownEditor/editor/elements/TagPopup/style.js +14 -12
  3. package/dist/MarkdownEditor/editor/parser/parse/applyContextPropsAndConfig.d.ts +8 -0
  4. package/dist/MarkdownEditor/editor/parser/parse/applyContextPropsAndConfig.js +58 -0
  5. package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.d.ts +67 -0
  6. package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.js +289 -0
  7. package/dist/MarkdownEditor/editor/parser/parse/parseElements.d.ts +27 -0
  8. package/dist/MarkdownEditor/editor/parser/parse/parseElements.js +83 -0
  9. package/dist/MarkdownEditor/editor/parser/parse/parseEmptyLines.d.ts +9 -0
  10. package/dist/MarkdownEditor/editor/parser/parse/parseEmptyLines.js +60 -0
  11. package/dist/MarkdownEditor/editor/parser/parse/parseFootnote.d.ts +10 -0
  12. package/dist/MarkdownEditor/editor/parser/parse/parseFootnote.js +12 -0
  13. package/dist/MarkdownEditor/editor/parser/parse/parseHtml.d.ts +63 -0
  14. package/dist/MarkdownEditor/editor/parser/parse/parseHtml.js +759 -0
  15. package/dist/MarkdownEditor/editor/parser/parse/parseMath.d.ts +24 -0
  16. package/dist/MarkdownEditor/editor/parser/parse/parseMath.js +58 -0
  17. package/dist/MarkdownEditor/editor/parser/parse/parseMedia.d.ts +27 -0
  18. package/dist/MarkdownEditor/editor/parser/parse/parseMedia.js +127 -0
  19. package/dist/MarkdownEditor/editor/parser/parse/parseTable.js +36 -3
  20. package/dist/MarkdownEditor/editor/parser/parse/parseText.d.ts +26 -0
  21. package/dist/MarkdownEditor/editor/parser/parse/parseText.js +304 -0
  22. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.d.ts +3 -40
  23. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +128 -1855
  24. package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +131 -18
  25. package/dist/MarkdownEditor/editor/parser/remarkParse.js +24 -17
  26. package/dist/MarkdownEditor/editor/plugins/elements.js +1 -1
  27. package/dist/Plugins/code/components/CodeToolbar.js +3 -16
  28. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 判断是否应该将内联数学公式作为文本处理
3
+ */
4
+ export declare const shouldTreatInlineMathAsText: (rawValue: string) => boolean;
5
+ /**
6
+ * 处理内联数学公式
7
+ * @param currentElement - 当前处理的内联数学公式元素
8
+ * @returns 返回格式化的内联KaTeX节点对象
9
+ */
10
+ export declare const handleInlineMath: (currentElement: any) => any;
11
+ /**
12
+ * 处理数学公式块
13
+ * @param currentElement - 当前处理的数学公式块元素
14
+ * @returns 返回格式化的KaTeX块节点对象
15
+ */
16
+ export declare const handleMath: (currentElement: any) => {
17
+ type: string;
18
+ language: string;
19
+ katex: boolean;
20
+ value: any;
21
+ children: {
22
+ text: string;
23
+ }[];
24
+ };
@@ -0,0 +1,58 @@
1
+ // 常量定义
2
+ var INLINE_MATH_SUFFIX_PATTERN = '(?:%|[kKmMbB]|千|万|亿|兆|万亿|百万|亿万)?';
3
+ var INLINE_MATH_CURRENCY_PATTERN = new RegExp("^[+-]?\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?".concat(INLINE_MATH_SUFFIX_PATTERN, "$"));
4
+ var INLINE_MATH_SIMPLE_NUMBER_PATTERN = new RegExp("^[+-]?\\d+(?:\\.\\d+)?".concat(INLINE_MATH_SUFFIX_PATTERN, "$"));
5
+ /**
6
+ * 判断是否应该将内联数学公式作为文本处理
7
+ */ export var shouldTreatInlineMathAsText = function(rawValue) {
8
+ var trimmedValue = rawValue.trim();
9
+ if (!trimmedValue) {
10
+ return true;
11
+ }
12
+ if (/[=^_\\{}]/.test(trimmedValue)) {
13
+ return false;
14
+ }
15
+ return INLINE_MATH_CURRENCY_PATTERN.test(trimmedValue) || INLINE_MATH_SIMPLE_NUMBER_PATTERN.test(trimmedValue);
16
+ };
17
+ /**
18
+ * 处理内联数学公式
19
+ * @param currentElement - 当前处理的内联数学公式元素
20
+ * @returns 返回格式化的内联KaTeX节点对象
21
+ */ export var handleInlineMath = function(currentElement) {
22
+ var inlineMathValue = typeof (currentElement === null || currentElement === void 0 ? void 0 : currentElement.value) === 'string' ? currentElement.value : '';
23
+ if (shouldTreatInlineMathAsText(inlineMathValue)) {
24
+ return {
25
+ type: 'paragraph',
26
+ children: [
27
+ {
28
+ text: "$".concat(inlineMathValue, "$")
29
+ }
30
+ ]
31
+ };
32
+ }
33
+ return {
34
+ type: 'inline-katex',
35
+ children: [
36
+ {
37
+ text: inlineMathValue
38
+ }
39
+ ]
40
+ };
41
+ };
42
+ /**
43
+ * 处理数学公式块
44
+ * @param currentElement - 当前处理的数学公式块元素
45
+ * @returns 返回格式化的KaTeX块节点对象
46
+ */ export var handleMath = function(currentElement) {
47
+ return {
48
+ type: 'katex',
49
+ language: 'latex',
50
+ katex: true,
51
+ value: currentElement.value,
52
+ children: [
53
+ {
54
+ text: ''
55
+ }
56
+ ]
57
+ };
58
+ };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 处理图片节点
3
+ * @param currentElement - 当前处理的图片元素,包含url和alt属性
4
+ * @returns 返回格式化的图片节点对象
5
+ */
6
+ export declare const handleImage: (currentElement: any) => import("../../../..").CardNode | {
7
+ text: string;
8
+ };
9
+ /**
10
+ * 处理附件链接
11
+ */
12
+ export declare const handleAttachmentLink: (currentElement: any) => {
13
+ type: string;
14
+ url: string;
15
+ size: number;
16
+ children: {
17
+ type: string;
18
+ children: {
19
+ text: string;
20
+ }[];
21
+ }[];
22
+ name: any;
23
+ } | null;
24
+ /**
25
+ * 处理链接卡片
26
+ */
27
+ export declare const handleLinkCard: (currentElement: any, config: any) => any;
@@ -0,0 +1,127 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ function ownKeys(object, enumerableOnly) {
30
+ var keys = Object.keys(object);
31
+ if (Object.getOwnPropertySymbols) {
32
+ var symbols = Object.getOwnPropertySymbols(object);
33
+ if (enumerableOnly) {
34
+ symbols = symbols.filter(function(sym) {
35
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
36
+ });
37
+ }
38
+ keys.push.apply(keys, symbols);
39
+ }
40
+ return keys;
41
+ }
42
+ function _object_spread_props(target, source) {
43
+ source = source != null ? source : {};
44
+ if (Object.getOwnPropertyDescriptors) {
45
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
46
+ } else {
47
+ ownKeys(Object(source)).forEach(function(key) {
48
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
49
+ });
50
+ }
51
+ return target;
52
+ }
53
+ import { EditorUtils } from "../../utils";
54
+ import { decodeURIComponentUrl, findAttachment } from "./parseHtml";
55
+ /**
56
+ * 处理图片节点
57
+ * @param currentElement - 当前处理的图片元素,包含url和alt属性
58
+ * @returns 返回格式化的图片节点对象
59
+ */ export var handleImage = function(currentElement) {
60
+ return EditorUtils.createMediaNode(decodeURIComponentUrl(currentElement === null || currentElement === void 0 ? void 0 : currentElement.url), 'image', {
61
+ alt: currentElement.alt,
62
+ finished: currentElement.finished
63
+ });
64
+ };
65
+ /**
66
+ * 处理附件链接
67
+ */ export var handleAttachmentLink = function(currentElement) {
68
+ var text = currentElement.children.map(function(n) {
69
+ return n.value || '';
70
+ }).join('');
71
+ var attach = findAttachment(text);
72
+ if (!attach) return null;
73
+ var name = text.match(/>(.*)<\/a>/);
74
+ return {
75
+ type: 'attach',
76
+ url: decodeURIComponentUrl(attach === null || attach === void 0 ? void 0 : attach.url),
77
+ size: attach.size,
78
+ children: [
79
+ {
80
+ type: 'card-before',
81
+ children: [
82
+ {
83
+ text: ''
84
+ }
85
+ ]
86
+ },
87
+ {
88
+ type: 'card-after',
89
+ children: [
90
+ {
91
+ text: ''
92
+ }
93
+ ]
94
+ }
95
+ ],
96
+ name: name ? name[1] : attach === null || attach === void 0 ? void 0 : attach.url
97
+ };
98
+ };
99
+ /**
100
+ * 处理链接卡片
101
+ */ export var handleLinkCard = function(currentElement, config) {
102
+ var _currentElement_children;
103
+ var link = currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children.at(0);
104
+ return _object_spread_props(_object_spread({}, config), {
105
+ type: 'link-card',
106
+ url: decodeURIComponentUrl(link === null || link === void 0 ? void 0 : link.url),
107
+ children: [
108
+ {
109
+ type: 'card-before',
110
+ children: [
111
+ {
112
+ text: ''
113
+ }
114
+ ]
115
+ },
116
+ {
117
+ type: 'card-after',
118
+ children: [
119
+ {
120
+ text: ''
121
+ }
122
+ ]
123
+ }
124
+ ],
125
+ name: link.title
126
+ });
127
+ };
@@ -50,6 +50,10 @@ function _object_spread_props(target, source) {
50
50
  }
51
51
  return target;
52
52
  }
53
+ function _type_of(obj) {
54
+ "@swc/helpers - typeof";
55
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
56
+ }
53
57
  import rehypeRaw from "rehype-raw";
54
58
  import { remark } from "remark";
55
59
  import remarkGfm from "remark-gfm";
@@ -144,7 +148,7 @@ var myRemark = {
144
148
  * @param parserConfig - 解析配置
145
149
  * @returns 返回表格或图表节点
146
150
  */ export var parseTableOrChart = function(table, preNode, plugins, parseNodes, parserConfig) {
147
- var _table_children, _tableHeader_children, _table_children_slice, _table_children1, _table_align, _config_at, _config_at1;
151
+ var _table_children, _tableHeader_children, _table_children_slice, _table_children1, _table_align, _chartConfig_, _config_at, _config_at1;
148
152
  var keyMap = new Map();
149
153
  // @ts-ignore
150
154
  var config = // @ts-ignore
@@ -204,7 +208,36 @@ var myRemark = {
204
208
  table.align = aligns;
205
209
  }
206
210
  var aligns1 = table.align;
207
- var isChart = (config === null || config === void 0 ? void 0 : config.chartType) || (config === null || config === void 0 ? void 0 : (_config_at1 = config.at) === null || _config_at1 === void 0 ? void 0 : (_config_at = _config_at1.call(config, 0)) === null || _config_at === void 0 ? void 0 : _config_at.chartType);
211
+ /**
212
+ * 将对象转换为数组(处理 {0: {...}, 1: {...}} 这种错误格式)
213
+ * @param obj - 要转换的对象
214
+ * @returns 转换后的数组,如果不是数字键对象则返回原对象
215
+ */ var convertObjectToArray = function(obj) {
216
+ if (!obj || (typeof obj === "undefined" ? "undefined" : _type_of(obj)) !== 'object' || Array.isArray(obj)) {
217
+ return obj;
218
+ }
219
+ var keys = Object.keys(obj);
220
+ // 检查是否所有键都是数字字符串(如 "0", "1", "2")
221
+ var allNumericKeys = keys.length > 0 && keys.every(function(key) {
222
+ return /^\d+$/.test(key);
223
+ });
224
+ if (allNumericKeys) {
225
+ // 按数字顺序排序并转换为数组
226
+ var sortedKeys = keys.sort(function(a, b) {
227
+ return parseInt(a, 10) - parseInt(b, 10);
228
+ });
229
+ return sortedKeys.map(function(key) {
230
+ return obj[key];
231
+ });
232
+ }
233
+ return obj;
234
+ };
235
+ // 如果 config 对象包含 config 属性(数组格式的配置),使用它
236
+ // 否则使用 config 本身(对象格式的配置)
237
+ var chartConfig = Array.isArray(config === null || config === void 0 ? void 0 : config.config) ? config.config : (config === null || config === void 0 ? void 0 : config.config) || config;
238
+ // 如果 chartConfig 是对象且键都是数字(如 {0: {...}}),转换为数组
239
+ chartConfig = convertObjectToArray(chartConfig);
240
+ var isChart = (chartConfig === null || chartConfig === void 0 ? void 0 : chartConfig.chartType) || Array.isArray(chartConfig) && (chartConfig === null || chartConfig === void 0 ? void 0 : (_chartConfig_ = chartConfig[0]) === null || _chartConfig_ === void 0 ? void 0 : _chartConfig_.chartType) || (config === null || config === void 0 ? void 0 : config.chartType) || (config === null || config === void 0 ? void 0 : (_config_at1 = config.at) === null || _config_at1 === void 0 ? void 0 : (_config_at = _config_at1.call(config, 0)) === null || _config_at === void 0 ? void 0 : _config_at.chartType);
208
241
  // 计算合并单元格信息
209
242
  var mergeCells = config.mergeCells || [];
210
243
  // 创建合并单元格映射,用于快速查找
@@ -271,7 +304,7 @@ var myRemark = {
271
304
  };
272
305
  });
273
306
  var otherProps = _object_spread_props(_object_spread({}, isChart ? {
274
- config: config
307
+ config: chartConfig
275
308
  } : config), {
276
309
  columns: columns,
277
310
  dataSource: dataSource.map(function(item) {
@@ -0,0 +1,26 @@
1
+ import type { RootContent } from 'mdast';
2
+ import { CustomLeaf } from '../../../el';
3
+ /**
4
+ * 设置节点的 finished 属性
5
+ */
6
+ export declare const setFinishedProp: (leaf: CustomLeaf, finished: any) => CustomLeaf;
7
+ /**
8
+ * 解析文本节点和内联元素
9
+ */
10
+ export declare const parseText: (els: RootContent[], leaf?: CustomLeaf) => CustomLeaf[];
11
+ /**
12
+ * 应用HTML标签样式到元素(纯函数版本)
13
+ * @param el - 目标元素对象
14
+ * @param htmlTag - HTML标签数组,包含样式信息
15
+ * @returns 返回应用了样式的新元素对象
16
+ */
17
+ export declare const applyHtmlTagsToElement: (el: any, htmlTag: any[]) => any;
18
+ /**
19
+ * 处理文本和内联元素节点(纯函数版本)
20
+ * @param currentElement - 当前处理的元素
21
+ * @param htmlTag - HTML标签数组
22
+ * @param applyInlineFormattingFn - 应用内联格式的函数
23
+ * @param parseNodesFn - 解析节点的函数
24
+ * @returns 处理后的元素对象
25
+ */
26
+ export declare const handleTextAndInlineElementsPure: (currentElement: any, htmlTag: any[], applyInlineFormattingFn: (leaf: CustomLeaf, element: any) => CustomLeaf, parseNodesFn: (children: any[], top: boolean, parent: any) => any[]) => any;
@@ -0,0 +1,304 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ function ownKeys(object, enumerableOnly) {
30
+ var keys = Object.keys(object);
31
+ if (Object.getOwnPropertySymbols) {
32
+ var symbols = Object.getOwnPropertySymbols(object);
33
+ if (enumerableOnly) {
34
+ symbols = symbols.filter(function(sym) {
35
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
36
+ });
37
+ }
38
+ keys.push.apply(keys, symbols);
39
+ }
40
+ return keys;
41
+ }
42
+ function _object_spread_props(target, source) {
43
+ source = source != null ? source : {};
44
+ if (Object.getOwnPropertyDescriptors) {
45
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
46
+ } else {
47
+ ownKeys(Object(source)).forEach(function(key) {
48
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
49
+ });
50
+ }
51
+ return target;
52
+ }
53
+ import { handleInlineCode } from "./parseElements";
54
+ import { shouldTreatInlineMathAsText } from "./parseMath";
55
+ /**
56
+ * 设置节点的 finished 属性
57
+ */ export var setFinishedProp = function(leaf, finished) {
58
+ if (finished !== false) {
59
+ return leaf;
60
+ }
61
+ return _object_spread_props(_object_spread({}, leaf), {
62
+ otherProps: _object_spread_props(_object_spread({}, leaf.otherProps), {
63
+ finished: finished
64
+ })
65
+ });
66
+ };
67
+ /**
68
+ * 检查 leaf 是否有格式属性需要保留
69
+ */ var hasFormattingProps = function(leaf) {
70
+ var _leaf_otherProps;
71
+ return !!(leaf.bold || leaf.italic || leaf.strikethrough || leaf.url || leaf.code || ((_leaf_otherProps = leaf.otherProps) === null || _leaf_otherProps === void 0 ? void 0 : _leaf_otherProps.finished) === false);
72
+ };
73
+ /**
74
+ * 解析文本节点和内联元素
75
+ */ export var parseText = function(els) {
76
+ var leaf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
77
+ data: {}
78
+ };
79
+ var leafs = [];
80
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
81
+ try {
82
+ for(var _iterator = els[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
83
+ var n = _step.value;
84
+ if (n.type === 'strong') {
85
+ var strongLeaf = setFinishedProp(_object_spread_props(_object_spread({}, leaf), {
86
+ bold: true
87
+ }), n.finished);
88
+ var strongResult = parseText(n.children, strongLeaf);
89
+ leafs = leafs.concat(strongResult);
90
+ // 如果处理完嵌套节点后没有生成任何节点,且 leaf 有格式属性,生成空文本节点以保留格式
91
+ if (strongResult.length === 0 && hasFormattingProps(strongLeaf)) {
92
+ leafs.push(_object_spread_props(_object_spread({}, strongLeaf), {
93
+ text: ''
94
+ }));
95
+ }
96
+ continue;
97
+ }
98
+ if (n.type === 'emphasis') {
99
+ var emphasisLeaf = setFinishedProp(_object_spread_props(_object_spread({}, leaf), {
100
+ italic: true
101
+ }), n.finished);
102
+ var emphasisResult = parseText(n.children, emphasisLeaf);
103
+ leafs = leafs.concat(emphasisResult);
104
+ // 如果处理完嵌套节点后没有生成任何节点,且 leaf 有格式属性,生成空文本节点以保留格式
105
+ if (emphasisResult.length === 0 && hasFormattingProps(emphasisLeaf)) {
106
+ leafs.push(_object_spread_props(_object_spread({}, emphasisLeaf), {
107
+ text: ''
108
+ }));
109
+ }
110
+ continue;
111
+ }
112
+ if (n.type === 'delete') {
113
+ var deleteLeaf = _object_spread_props(_object_spread({}, leaf), {
114
+ strikethrough: true
115
+ });
116
+ var deleteResult = parseText(n.children, deleteLeaf);
117
+ leafs = leafs.concat(deleteResult);
118
+ // 如果处理完嵌套节点后没有生成任何节点,且 leaf 有格式属性,生成空文本节点以保留格式
119
+ if (deleteResult.length === 0 && hasFormattingProps(deleteLeaf)) {
120
+ leafs.push(_object_spread_props(_object_spread({}, deleteLeaf), {
121
+ text: ''
122
+ }));
123
+ }
124
+ continue;
125
+ }
126
+ if (n.type === 'link') {
127
+ // 只有当 link 节点有 URL 时才处理为链接,否则按普通文本处理
128
+ if (n === null || n === void 0 ? void 0 : n.url) {
129
+ var linkLeaf = _object_spread_props(_object_spread({}, leaf), {
130
+ url: n === null || n === void 0 ? void 0 : n.url
131
+ });
132
+ var linkResult = parseText(n.children, linkLeaf);
133
+ leafs = leafs.concat(linkResult);
134
+ // 如果处理完嵌套节点后没有生成任何节点,且 leaf 有格式属性,生成空文本节点以保留格式
135
+ if (linkResult.length === 0 && hasFormattingProps(linkLeaf)) {
136
+ leafs.push(_object_spread_props(_object_spread({}, linkLeaf), {
137
+ text: ''
138
+ }));
139
+ }
140
+ } else {
141
+ // 没有 URL,按普通文本处理
142
+ var textResult = parseText(n.children, leaf);
143
+ leafs = leafs.concat(textResult);
144
+ }
145
+ continue;
146
+ }
147
+ if (n.type === 'inlineCode') {
148
+ var inlineCodeResult = handleInlineCode(n);
149
+ leafs.push(_object_spread({}, leaf, inlineCodeResult));
150
+ continue;
151
+ }
152
+ if (n.type === 'inlineMath') {
153
+ var inlineMathValue = typeof n.value === 'string' ? n.value : '';
154
+ if (shouldTreatInlineMathAsText(inlineMathValue)) {
155
+ leafs.push(_object_spread_props(_object_spread({}, leaf), {
156
+ text: "$".concat(inlineMathValue, "$")
157
+ }));
158
+ } else {
159
+ leafs.push(_object_spread_props(_object_spread({}, leaf), {
160
+ type: 'inline-katex',
161
+ children: [
162
+ {
163
+ text: inlineMathValue
164
+ }
165
+ ]
166
+ }));
167
+ }
168
+ continue;
169
+ }
170
+ // @ts-ignore
171
+ leafs.push(_object_spread_props(_object_spread({}, leaf), {
172
+ text: n.value || ''
173
+ }));
174
+ }
175
+ } catch (err) {
176
+ _didIteratorError = true;
177
+ _iteratorError = err;
178
+ } finally{
179
+ try {
180
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
181
+ _iterator.return();
182
+ }
183
+ } finally{
184
+ if (_didIteratorError) {
185
+ throw _iteratorError;
186
+ }
187
+ }
188
+ }
189
+ return leafs;
190
+ };
191
+ /**
192
+ * 应用HTML标签样式到元素(纯函数版本)
193
+ * @param el - 目标元素对象
194
+ * @param htmlTag - HTML标签数组,包含样式信息
195
+ * @returns 返回应用了样式的新元素对象
196
+ */ export var applyHtmlTagsToElement = function(el, htmlTag) {
197
+ if (!htmlTag.length) {
198
+ return el;
199
+ }
200
+ var result = _object_spread({}, el);
201
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
202
+ try {
203
+ for(var _iterator = htmlTag[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
204
+ var t = _step.value;
205
+ if (t.tag === 'font') {
206
+ result.color = t.color;
207
+ }
208
+ if (t.tag === 'sup') result.identifier = el.text;
209
+ if (t.tag === 'sub') result.identifier = el.text;
210
+ if (t.tag === 'code') result.code = true;
211
+ if (t.tag === 'i') result.italic = true;
212
+ if (t.tag === 'b' || t.tag === 'strong') result.bold = true;
213
+ if (t.tag === 'del') result.strikethrough = true;
214
+ if ((t.tag === 'span' || t.tag === 'font') && t.color) {
215
+ result.highColor = t.color;
216
+ }
217
+ if (t.tag === 'a' && (t === null || t === void 0 ? void 0 : t.url)) {
218
+ result.url = t === null || t === void 0 ? void 0 : t.url;
219
+ }
220
+ }
221
+ } catch (err) {
222
+ _didIteratorError = true;
223
+ _iteratorError = err;
224
+ } finally{
225
+ try {
226
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
227
+ _iterator.return();
228
+ }
229
+ } finally{
230
+ if (_didIteratorError) {
231
+ throw _iteratorError;
232
+ }
233
+ }
234
+ }
235
+ return result;
236
+ };
237
+ /**
238
+ * 处理文本和内联元素节点(纯函数版本)
239
+ * @param currentElement - 当前处理的元素
240
+ * @param htmlTag - HTML标签数组
241
+ * @param applyInlineFormattingFn - 应用内联格式的函数
242
+ * @param parseNodesFn - 解析节点的函数
243
+ * @returns 处理后的元素对象
244
+ */ export var handleTextAndInlineElementsPure = function(currentElement, htmlTag, applyInlineFormattingFn, parseNodesFn) {
245
+ var elementType = currentElement.type;
246
+ // 处理文本节点
247
+ if (elementType === 'text') {
248
+ var el = {
249
+ text: currentElement.value
250
+ };
251
+ return htmlTag.length > 0 && currentElement.value ? applyHtmlTagsToElement(el, htmlTag) : el;
252
+ }
253
+ // 处理换行
254
+ if (elementType === 'break') {
255
+ return {
256
+ text: '\n'
257
+ };
258
+ }
259
+ // 处理内联代码(特殊处理,因为它没有 children)
260
+ if (elementType === 'inlineCode') {
261
+ var finished = currentElement.finished;
262
+ var leaf = _object_spread({}, finished === false && {
263
+ otherProps: {
264
+ finished: finished
265
+ }
266
+ });
267
+ var formattedLeaf = applyInlineFormattingFn(leaf, currentElement);
268
+ var leafWithHtmlTags = applyHtmlTagsToElement(formattedLeaf, htmlTag);
269
+ var inlineCodeResult = handleInlineCode(currentElement);
270
+ return _object_spread({}, leafWithHtmlTags, inlineCodeResult);
271
+ }
272
+ // 处理内联元素(strong, link, emphasis, delete)
273
+ var inlineElementTypes = [
274
+ 'strong',
275
+ 'link',
276
+ 'emphasis',
277
+ 'delete'
278
+ ];
279
+ if (inlineElementTypes.includes(elementType)) {
280
+ var _currentElement_children, _parseNodesFn, _currentElement_children1;
281
+ var finished1 = currentElement.finished;
282
+ var leaf1 = _object_spread({}, finished1 === false && {
283
+ otherProps: {
284
+ finished: finished1
285
+ }
286
+ });
287
+ var formattedLeaf1 = applyInlineFormattingFn(leaf1, currentElement);
288
+ var leafWithHtmlTags1 = applyHtmlTagsToElement(formattedLeaf1, htmlTag);
289
+ var hasHtmlChildren = currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children.some(function(n) {
290
+ return n.type === 'html';
291
+ });
292
+ return hasHtmlChildren ? _object_spread_props(_object_spread({}, (_parseNodesFn = parseNodesFn(currentElement === null || currentElement === void 0 ? void 0 : currentElement.children, false, currentElement)) === null || _parseNodesFn === void 0 ? void 0 : _parseNodesFn.at(0)), {
293
+ url: leafWithHtmlTags1.url
294
+ }) : parseText(((_currentElement_children1 = currentElement.children) === null || _currentElement_children1 === void 0 ? void 0 : _currentElement_children1.length) ? currentElement.children : [
295
+ {
296
+ value: (leafWithHtmlTags1 === null || leafWithHtmlTags1 === void 0 ? void 0 : leafWithHtmlTags1.url) || ''
297
+ }
298
+ ], leafWithHtmlTags1);
299
+ }
300
+ // 默认返回空文本
301
+ return {
302
+ text: ''
303
+ };
304
+ };