@ant-design/agentic-ui 2.20.2 → 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 (52) hide show
  1. package/dist/MarkdownEditor/BaseMarkdownEditor.js +1 -1
  2. package/dist/MarkdownEditor/editor/elements/Code.js +1 -1
  3. package/dist/MarkdownEditor/editor/elements/Image/index.js +37 -9
  4. package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +87 -2
  5. package/dist/MarkdownEditor/editor/elements/List/List.js +10 -2
  6. package/dist/MarkdownEditor/editor/elements/Media.js +75 -23
  7. package/dist/MarkdownEditor/editor/elements/Table/ReadonlyTableComponent.js +2 -13
  8. package/dist/MarkdownEditor/editor/elements/Table/SimpleTable.js +89 -15
  9. package/dist/MarkdownEditor/editor/elements/Table/Table.js +3 -75
  10. package/dist/MarkdownEditor/editor/elements/TagPopup/index.js +4 -4
  11. package/dist/MarkdownEditor/editor/elements/TagPopup/style.js +14 -12
  12. package/dist/MarkdownEditor/editor/elements/index.js +1 -32
  13. package/dist/MarkdownEditor/editor/parser/parse/applyContextPropsAndConfig.d.ts +8 -0
  14. package/dist/MarkdownEditor/editor/parser/parse/applyContextPropsAndConfig.js +58 -0
  15. package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.d.ts +67 -0
  16. package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.js +289 -0
  17. package/dist/MarkdownEditor/editor/parser/parse/parseCode.d.ts +32 -0
  18. package/dist/MarkdownEditor/editor/parser/parse/parseCode.js +186 -0
  19. package/dist/MarkdownEditor/editor/parser/parse/parseElements.d.ts +27 -0
  20. package/dist/MarkdownEditor/editor/parser/parse/parseElements.js +83 -0
  21. package/dist/MarkdownEditor/editor/parser/parse/parseEmptyLines.d.ts +9 -0
  22. package/dist/MarkdownEditor/editor/parser/parse/parseEmptyLines.js +60 -0
  23. package/dist/MarkdownEditor/editor/parser/parse/parseFootnote.d.ts +10 -0
  24. package/dist/MarkdownEditor/editor/parser/parse/parseFootnote.js +12 -0
  25. package/dist/MarkdownEditor/editor/parser/parse/parseHtml.d.ts +63 -0
  26. package/dist/MarkdownEditor/editor/parser/parse/parseHtml.js +759 -0
  27. package/dist/MarkdownEditor/editor/parser/parse/parseMath.d.ts +24 -0
  28. package/dist/MarkdownEditor/editor/parser/parse/parseMath.js +58 -0
  29. package/dist/MarkdownEditor/editor/parser/parse/parseMedia.d.ts +27 -0
  30. package/dist/MarkdownEditor/editor/parser/parse/parseMedia.js +127 -0
  31. package/dist/MarkdownEditor/editor/parser/parse/parseTable.d.ts +39 -0
  32. package/dist/MarkdownEditor/editor/parser/parse/parseTable.js +348 -0
  33. package/dist/MarkdownEditor/editor/parser/parse/parseText.d.ts +26 -0
  34. package/dist/MarkdownEditor/editor/parser/parse/parseText.js +304 -0
  35. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.d.ts +3 -44
  36. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +141 -2282
  37. package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +137 -12
  38. package/dist/MarkdownEditor/editor/parser/remarkParse.d.ts +11 -1
  39. package/dist/MarkdownEditor/editor/parser/remarkParse.js +225 -39
  40. package/dist/MarkdownEditor/editor/plugins/elements.js +1 -1
  41. package/dist/MarkdownEditor/editor/types/Table.d.ts +2 -1
  42. package/dist/MarkdownEditor/editor/utils/markdownToHtml.js +2 -1
  43. package/dist/MarkdownEditor/el.d.ts +3 -0
  44. package/dist/MarkdownEditor/style.js +2 -0
  45. package/dist/Plugins/chart/index.js +7 -7
  46. package/dist/Plugins/code/components/CodeRenderer.js +27 -10
  47. package/dist/Plugins/code/components/CodeToolbar.js +3 -16
  48. package/dist/Workspace/Task/index.d.ts +13 -8
  49. package/dist/Workspace/Task/index.js +19 -2
  50. package/dist/Workspace/index.js +3 -2
  51. package/dist/Workspace/types.d.ts +3 -1
  52. 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
+ };
@@ -0,0 +1,39 @@
1
+ import type { RootContent, Table } from 'mdast';
2
+ import { CardNode, Elements } from '../../../el';
3
+ import { MarkdownEditorPlugin } from '../../../plugin';
4
+ import type { ParserMarkdownToSlateNodeConfig } from '../parserMarkdownToSlateNode';
5
+ export declare const MIN_TABLE_CELL_LENGTH = 5;
6
+ export declare const tableRegex: RegExp;
7
+ type AlignType = 'left' | 'center' | 'right' | null;
8
+ /**
9
+ * 规范化字段名,统一处理转义字符
10
+ * 将 `index\_value` 转换为 `index_value`,确保字段名一致
11
+ * @param fieldName - 原始字段名
12
+ * @returns 规范化后的字段名
13
+ */
14
+ export declare const normalizeFieldName: (fieldName: string) => string;
15
+ /**
16
+ * 获取列对齐方式
17
+ */
18
+ export declare const getColumnAlignment: (data: any[], columns: {
19
+ dataIndex: string;
20
+ }[]) => AlignType[];
21
+ /**
22
+ * 解析表格或图表
23
+ * @param table - 表格 AST 节点
24
+ * @param preNode - 前一个节点(可能包含配置信息)
25
+ * @param plugins - 插件数组
26
+ * @param parseNodes - 解析节点的函数,用于解析单元格内容
27
+ * @param parserConfig - 解析配置
28
+ * @returns 返回表格或图表节点
29
+ */
30
+ export declare const parseTableOrChart: (table: Table & {
31
+ finished?: boolean;
32
+ }, preNode: RootContent, plugins: MarkdownEditorPlugin[], parseNodes: (nodes: RootContent[], plugins: MarkdownEditorPlugin[], top?: boolean, parent?: RootContent, parserConfig?: ParserMarkdownToSlateNodeConfig) => (Elements | any)[], parserConfig?: ParserMarkdownToSlateNodeConfig) => CardNode | Elements;
33
+ /**
34
+ * 预处理 Markdown 表格换行符
35
+ * @param markdown - 原始 Markdown 字符串
36
+ * @returns 处理后的 Markdown 字符串
37
+ */
38
+ export declare const preprocessMarkdownTableNewlines: (markdown: string) => string;
39
+ export {};
@@ -0,0 +1,348 @@
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
+ function _type_of(obj) {
54
+ "@swc/helpers - typeof";
55
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
56
+ }
57
+ import rehypeRaw from "rehype-raw";
58
+ import { remark } from "remark";
59
+ import remarkGfm from "remark-gfm";
60
+ import remarkMath from "remark-math";
61
+ import remarkParse from "remark-parse";
62
+ import remarkRehype from "remark-rehype";
63
+ import { convertParagraphToImage, fixStrongWithSpecialChars } from "../remarkParse";
64
+ //@ts-ignore
65
+ import rehypeKatex from "rehype-katex";
66
+ import remarkFrontmatter from "remark-frontmatter";
67
+ import { EditorUtils } from "../../utils";
68
+ // 表格相关常量
69
+ export var MIN_TABLE_CELL_LENGTH = 5; // 表格单元格最小长度
70
+ export var tableRegex = /^\|.*\|\s*\n\|[-:| ]+\|/m;
71
+ // 创建 remark 实例用于 stringify
72
+ var stringifyObj = remark().use(remarkParse).use(fixStrongWithSpecialChars).use(convertParagraphToImage).use(remarkMath, {
73
+ singleDollarTextMath: false
74
+ }).use(remarkRehype, {
75
+ allowDangerousHtml: true
76
+ }).use(rehypeRaw).use(rehypeKatex).use(remarkGfm).use(remarkFrontmatter, [
77
+ 'yaml'
78
+ ]);
79
+ var myRemark = {
80
+ stringify: function(obj) {
81
+ var mdStr = stringifyObj.stringify(obj);
82
+ return mdStr;
83
+ }
84
+ };
85
+ /**
86
+ * 高级数字检查
87
+ */ var advancedNumericCheck = function(value) {
88
+ var numericPattern = /^[-+]?[0-9,]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
89
+ return typeof value === 'number' || typeof value === 'string' && numericPattern.test(value);
90
+ };
91
+ /**
92
+ * 判断是否为数字值
93
+ */ var isNumericValue = function(value) {
94
+ return typeof value === 'number' || !isNaN(parseFloat(value)) && isFinite(value) || advancedNumericCheck(value);
95
+ };
96
+ /**
97
+ * 判断是否包含不完整输入
98
+ * 如果一行中包含可能尚未完成的数字输入,返回 true
99
+ */ var hasIncompleteNumericInput = function(values) {
100
+ // 检查是否有可能是正在输入的不完整数字
101
+ // 例如: '12.' 或 '0.' 或 '-' 或 仅有一个数字字符的情况
102
+ return values.some(function(val) {
103
+ if (typeof val !== 'string') return false;
104
+ return val.endsWith('.') && /\d/.test(val) || // 以小数点结尾
105
+ val === '-' || // 只有负号
106
+ val === '+' || // 只有正号
107
+ val.length === 1 && /\d/.test(val) // 只有一个数字
108
+ ;
109
+ });
110
+ };
111
+ /**
112
+ * 规范化字段名,统一处理转义字符
113
+ * 将 `index\_value` 转换为 `index_value`,确保字段名一致
114
+ * @param fieldName - 原始字段名
115
+ * @returns 规范化后的字段名
116
+ */ export var normalizeFieldName = function(fieldName) {
117
+ if (!fieldName) return fieldName;
118
+ // 移除转义字符:将 `\_` 转换为 `_`,`\\` 转换为 `\`
119
+ return fieldName.replace(/\\_/g, '_').replace(/\\\\/g, '\\').replace(/\\(?=")/g, '') // 移除转义的双引号
120
+ .trim();
121
+ };
122
+ /**
123
+ * 获取列对齐方式
124
+ */ export var getColumnAlignment = function(data, columns) {
125
+ if (!data.length) return [];
126
+ // 缓存上一次的对齐结果,避免频繁切换
127
+ var prevAlignments = [];
128
+ return columns.map(function(col, index) {
129
+ var values = data.map(function(row) {
130
+ return row[col.dataIndex];
131
+ }).filter(Boolean);
132
+ values === null || values === void 0 ? void 0 : values.pop();
133
+ // 如果检测到可能正在输入的数字,保持当前对齐状态
134
+ if (hasIncompleteNumericInput(values)) {
135
+ return prevAlignments[index] || null;
136
+ }
137
+ var alignment = values.every(isNumericValue) ? 'right' : null;
138
+ prevAlignments[index] = alignment;
139
+ return alignment;
140
+ });
141
+ };
142
+ /**
143
+ * 解析表格或图表
144
+ * @param table - 表格 AST 节点
145
+ * @param preNode - 前一个节点(可能包含配置信息)
146
+ * @param plugins - 插件数组
147
+ * @param parseNodes - 解析节点的函数,用于解析单元格内容
148
+ * @param parserConfig - 解析配置
149
+ * @returns 返回表格或图表节点
150
+ */ export var parseTableOrChart = function(table, preNode, plugins, parseNodes, parserConfig) {
151
+ var _table_children, _tableHeader_children, _table_children_slice, _table_children1, _table_align, _chartConfig_, _config_at, _config_at1;
152
+ var keyMap = new Map();
153
+ // @ts-ignore
154
+ var config = // @ts-ignore
155
+ (preNode === null || preNode === void 0 ? void 0 : preNode.type) === 'code' && // @ts-ignore
156
+ (preNode === null || preNode === void 0 ? void 0 : preNode.language) === 'html' && (// @ts-ignore
157
+ preNode === null || preNode === void 0 ? void 0 : preNode.otherProps) ? preNode === null || preNode === void 0 ? void 0 : preNode.otherProps : {};
158
+ var tableHeader = table === null || table === void 0 ? void 0 : (_table_children = table.children) === null || _table_children === void 0 ? void 0 : _table_children.at(0);
159
+ var columns = (tableHeader === null || tableHeader === void 0 ? void 0 : (_tableHeader_children = tableHeader.children) === null || _tableHeader_children === void 0 ? void 0 : _tableHeader_children.map(function(node) {
160
+ var _myRemark_stringify;
161
+ return (_myRemark_stringify = myRemark.stringify({
162
+ type: 'root',
163
+ children: [
164
+ node
165
+ ]
166
+ })) === null || _myRemark_stringify === void 0 ? void 0 : _myRemark_stringify.replace(/\n/g, '').trim();
167
+ }).map(function(title) {
168
+ // 先规范化字段名,统一处理转义字符
169
+ var normalizedTitle = normalizeFieldName(title || ' ');
170
+ return normalizedTitle;
171
+ }).map(function(title, index) {
172
+ if (keyMap.has(title)) {
173
+ keyMap.set(title, keyMap.get(title) + '_' + index);
174
+ return {
175
+ title: title,
176
+ dataIndex: title + '_' + index,
177
+ key: title + '_' + index
178
+ };
179
+ }
180
+ keyMap.set(title, title);
181
+ return {
182
+ title: title,
183
+ dataIndex: title,
184
+ key: title
185
+ };
186
+ })) || [];
187
+ var dataSource = (table === null || table === void 0 ? void 0 : (_table_children1 = table.children) === null || _table_children1 === void 0 ? void 0 : (_table_children_slice = _table_children1.slice(1)) === null || _table_children_slice === void 0 ? void 0 : _table_children_slice.map(function(row) {
188
+ var _row_children;
189
+ return (_row_children = row.children) === null || _row_children === void 0 ? void 0 : _row_children.reduce(function(acc, cell, index) {
190
+ var _myRemark_stringify_replace_replace_replace, _myRemark_stringify_replace_replace, _myRemark_stringify_replace, _myRemark_stringify;
191
+ // 如果数据列数超出表头列数,舍弃多余的数据
192
+ if (index >= columns.length) {
193
+ return acc;
194
+ }
195
+ acc[columns[index].dataIndex] = (_myRemark_stringify = myRemark.stringify({
196
+ type: 'root',
197
+ children: [
198
+ cell
199
+ ]
200
+ })) === null || _myRemark_stringify === void 0 ? void 0 : (_myRemark_stringify_replace = _myRemark_stringify.replace(/\n/g, '')) === null || _myRemark_stringify_replace === void 0 ? void 0 : (_myRemark_stringify_replace_replace = _myRemark_stringify_replace.replace(/\\(?=")/g, '')) === null || _myRemark_stringify_replace_replace === void 0 ? void 0 : (_myRemark_stringify_replace_replace_replace = _myRemark_stringify_replace_replace.replace(/\\_/g, '')) === null || _myRemark_stringify_replace_replace_replace === void 0 ? void 0 : _myRemark_stringify_replace_replace_replace.trim();
201
+ return acc;
202
+ }, {});
203
+ })) || [];
204
+ if ((_table_align = table.align) === null || _table_align === void 0 ? void 0 : _table_align.every(function(item) {
205
+ return !item;
206
+ })) {
207
+ var aligns = getColumnAlignment(dataSource, columns);
208
+ table.align = aligns;
209
+ }
210
+ var aligns1 = table.align;
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);
241
+ // 计算合并单元格信息
242
+ var mergeCells = config.mergeCells || [];
243
+ // 创建合并单元格映射,用于快速查找
244
+ var mergeMap = new Map();
245
+ mergeCells === null || mergeCells === void 0 ? void 0 : mergeCells.forEach(function(param) {
246
+ var row = param.row, col = param.col, rowSpan = param.rowSpan, rowspan = param.rowspan, colSpan = param.colSpan, colspan = param.colspan;
247
+ var rawRowSpan = rowSpan || rowspan;
248
+ var rawColSpan = colSpan || colspan;
249
+ // 主单元格
250
+ mergeMap.set("".concat(row, "-").concat(col), {
251
+ rowSpan: rawRowSpan,
252
+ colSpan: rawColSpan
253
+ });
254
+ // 被合并的单元格标记为隐藏
255
+ for(var r = row; r < row + rawRowSpan; r++){
256
+ for(var c = col; c < col + rawColSpan; c++){
257
+ if (r !== row || c !== col) {
258
+ mergeMap.set("".concat(r, "-").concat(c), {
259
+ rowSpan: 1,
260
+ colSpan: 1,
261
+ hidden: true
262
+ });
263
+ }
264
+ }
265
+ }
266
+ });
267
+ var children = table.children.map(function(r, l) {
268
+ return {
269
+ type: 'table-row',
270
+ align: (aligns1 === null || aligns1 === void 0 ? void 0 : aligns1[l]) || undefined,
271
+ children: r.children.map(function(c, i) {
272
+ var _c_children;
273
+ var mergeInfo = mergeMap.get("".concat(l, "-").concat(i));
274
+ return _object_spread_props(_object_spread({
275
+ type: 'table-cell',
276
+ align: (aligns1 === null || aligns1 === void 0 ? void 0 : aligns1[i]) || undefined,
277
+ title: l === 0,
278
+ rows: l,
279
+ cols: i
280
+ }, (mergeInfo === null || mergeInfo === void 0 ? void 0 : mergeInfo.rowSpan) && mergeInfo.rowSpan > 1 ? {
281
+ rowSpan: mergeInfo.rowSpan
282
+ } : {}, (mergeInfo === null || mergeInfo === void 0 ? void 0 : mergeInfo.colSpan) && mergeInfo.colSpan > 1 ? {
283
+ colSpan: mergeInfo.colSpan
284
+ } : {}, (mergeInfo === null || mergeInfo === void 0 ? void 0 : mergeInfo.hidden) ? {
285
+ hidden: true
286
+ } : {}), {
287
+ children: ((_c_children = c.children) === null || _c_children === void 0 ? void 0 : _c_children.length) ? [
288
+ {
289
+ type: 'paragraph',
290
+ children: parseNodes(c.children, plugins, false, c, parserConfig)
291
+ }
292
+ ] : [
293
+ {
294
+ type: 'paragraph',
295
+ children: [
296
+ {
297
+ text: ''
298
+ }
299
+ ]
300
+ }
301
+ ]
302
+ });
303
+ })
304
+ };
305
+ });
306
+ var otherProps = _object_spread_props(_object_spread({}, isChart ? {
307
+ config: chartConfig
308
+ } : config), {
309
+ columns: columns,
310
+ dataSource: dataSource.map(function(item) {
311
+ item === null || item === void 0 ? true : delete item.chartType;
312
+ return _object_spread({}, item);
313
+ })
314
+ });
315
+ var node = {
316
+ type: isChart ? 'chart' : 'table',
317
+ finished: table.finished,
318
+ children: children,
319
+ otherProps: otherProps
320
+ };
321
+ return EditorUtils.wrapperCardNode(node);
322
+ };
323
+ /**
324
+ * 预处理 Markdown 表格换行符
325
+ * @param markdown - 原始 Markdown 字符串
326
+ * @returns 处理后的 Markdown 字符串
327
+ */ export var preprocessMarkdownTableNewlines = function(markdown) {
328
+ // 检查是否包含表格
329
+ if (!tableRegex.test(markdown)) return markdown; // 如果没有表格,直接返回原始字符串
330
+ // 处理表格结尾的换行符:
331
+ // 1. 如果只有一个换行符,改成两个
332
+ // 2. 如果有两个以上换行符,改成两个
333
+ // 3. 如果已经是两个换行符,保持不变
334
+ var processedMarkdown = markdown.replace(/(\|[^|\n]*\|)\n(?!\n|\|)/g, '$1\n\n').replace(/(\|[^|\n]*\|)\n{3,}(?!\|)/g, '$1\n\n');
335
+ // 如果包含表格,处理换行符
336
+ return processedMarkdown === null || processedMarkdown === void 0 ? void 0 : processedMarkdown.split('\n\n').map(function(line) {
337
+ if (line.includes('```')) return line; // 如果包含代码块,直接返回原始字符串
338
+ // 检查是否包含表格
339
+ if (!tableRegex.test(line)) return line; // 如果没有表格,直接返回原始字符串
340
+ // 匹配所有表格的行(确保我们在表格行内匹配换行符)
341
+ return line.replace(/\|([^|]+)\|/g, function(match) {
342
+ var _match_replaceAll;
343
+ if (((_match_replaceAll = match.replaceAll('\n', '')) === null || _match_replaceAll === void 0 ? void 0 : _match_replaceAll.length) < MIN_TABLE_CELL_LENGTH) return match;
344
+ // 只替换每个表格单元格内的换行符
345
+ return match.split('\n').join('<br>');
346
+ });
347
+ }).join('\n\n');
348
+ };
@@ -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;