@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.
- package/dist/MarkdownEditor/BaseMarkdownEditor.js +1 -1
- package/dist/MarkdownEditor/editor/elements/Code.js +1 -1
- package/dist/MarkdownEditor/editor/elements/Image/index.js +37 -9
- package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +87 -2
- package/dist/MarkdownEditor/editor/elements/List/List.js +10 -2
- package/dist/MarkdownEditor/editor/elements/Media.js +75 -23
- package/dist/MarkdownEditor/editor/elements/Table/ReadonlyTableComponent.js +2 -13
- package/dist/MarkdownEditor/editor/elements/Table/SimpleTable.js +89 -15
- package/dist/MarkdownEditor/editor/elements/Table/Table.js +3 -75
- package/dist/MarkdownEditor/editor/elements/TagPopup/index.js +4 -4
- package/dist/MarkdownEditor/editor/elements/TagPopup/style.js +14 -12
- package/dist/MarkdownEditor/editor/elements/index.js +1 -32
- package/dist/MarkdownEditor/editor/parser/parse/applyContextPropsAndConfig.d.ts +8 -0
- package/dist/MarkdownEditor/editor/parser/parse/applyContextPropsAndConfig.js +58 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.d.ts +67 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.js +289 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseCode.d.ts +32 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseCode.js +186 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseElements.d.ts +27 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseElements.js +83 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseEmptyLines.d.ts +9 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseEmptyLines.js +60 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseFootnote.d.ts +10 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseFootnote.js +12 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseHtml.d.ts +63 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseHtml.js +759 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseMath.d.ts +24 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseMath.js +58 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseMedia.d.ts +27 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseMedia.js +127 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseTable.d.ts +39 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseTable.js +348 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseText.d.ts +26 -0
- package/dist/MarkdownEditor/editor/parser/parse/parseText.js +304 -0
- package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.d.ts +3 -44
- package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +141 -2282
- package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +137 -12
- package/dist/MarkdownEditor/editor/parser/remarkParse.d.ts +11 -1
- package/dist/MarkdownEditor/editor/parser/remarkParse.js +225 -39
- package/dist/MarkdownEditor/editor/plugins/elements.js +1 -1
- package/dist/MarkdownEditor/editor/types/Table.d.ts +2 -1
- package/dist/MarkdownEditor/editor/utils/markdownToHtml.js +2 -1
- package/dist/MarkdownEditor/el.d.ts +3 -0
- package/dist/MarkdownEditor/style.js +2 -0
- package/dist/Plugins/chart/index.js +7 -7
- package/dist/Plugins/code/components/CodeRenderer.js +27 -10
- package/dist/Plugins/code/components/CodeToolbar.js +3 -16
- package/dist/Workspace/Task/index.d.ts +13 -8
- package/dist/Workspace/Task/index.js +19 -2
- package/dist/Workspace/index.js +3 -2
- package/dist/Workspace/types.d.ts +3 -1
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type CodeElement = {
|
|
2
|
+
type: string;
|
|
3
|
+
language?: string | null;
|
|
4
|
+
render?: boolean;
|
|
5
|
+
value: any;
|
|
6
|
+
isConfig?: boolean;
|
|
7
|
+
children: Array<{
|
|
8
|
+
text: string;
|
|
9
|
+
}>;
|
|
10
|
+
otherProps?: Record<string, any>;
|
|
11
|
+
};
|
|
12
|
+
export type LanguageHandler = (element: CodeElement, value: string) => CodeElement;
|
|
13
|
+
/**
|
|
14
|
+
* 处理代码块节点
|
|
15
|
+
* @param currentElement - 当前处理的代码块元素,包含语言和内容
|
|
16
|
+
* @returns 返回格式化的代码块节点对象,根据语言类型进行特殊处理
|
|
17
|
+
*/
|
|
18
|
+
export declare const handleCode: (currentElement: any) => CodeElement;
|
|
19
|
+
/**
|
|
20
|
+
* 处理YAML节点
|
|
21
|
+
* @param currentElement - 当前处理的YAML元素
|
|
22
|
+
* @returns 返回格式化的YAML代码块节点对象
|
|
23
|
+
*/
|
|
24
|
+
export declare const handleYaml: (currentElement: any) => {
|
|
25
|
+
type: string;
|
|
26
|
+
language: string;
|
|
27
|
+
value: any;
|
|
28
|
+
frontmatter: boolean;
|
|
29
|
+
children: {
|
|
30
|
+
text: any;
|
|
31
|
+
}[];
|
|
32
|
+
};
|
|
@@ -0,0 +1,186 @@
|
|
|
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 json5 from "json5";
|
|
54
|
+
import { isCodeBlockLikelyComplete } from "../../utils/findMatchingClose";
|
|
55
|
+
import partialJsonParse from "../json-parse";
|
|
56
|
+
// 代码块检测相关的常量
|
|
57
|
+
var NOT_SPACE_START = /^\S*/;
|
|
58
|
+
var ENDING_NEWLINE = /\n$/;
|
|
59
|
+
/**
|
|
60
|
+
* 处理schema类型语言的辅助函数
|
|
61
|
+
*/ var processSchemaLanguage = function(element, value) {
|
|
62
|
+
var json = [];
|
|
63
|
+
try {
|
|
64
|
+
json = json5.parse(value || '[]');
|
|
65
|
+
} catch (e) {
|
|
66
|
+
try {
|
|
67
|
+
json = partialJsonParse(value || '[]');
|
|
68
|
+
} catch (error) {
|
|
69
|
+
json = value;
|
|
70
|
+
console.error('parse schema error', error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return _object_spread_props(_object_spread({}, element), {
|
|
74
|
+
type: 'apaasify',
|
|
75
|
+
value: json,
|
|
76
|
+
children: [
|
|
77
|
+
{
|
|
78
|
+
text: value
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* 语言类型处理策略配置
|
|
85
|
+
*/ var LANGUAGE_HANDLERS = {
|
|
86
|
+
mermaid: function(element) {
|
|
87
|
+
return _object_spread_props(_object_spread({}, element), {
|
|
88
|
+
type: 'mermaid'
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
schema: processSchemaLanguage,
|
|
92
|
+
apaasify: processSchemaLanguage,
|
|
93
|
+
apassify: processSchemaLanguage,
|
|
94
|
+
katex: function(element) {
|
|
95
|
+
return _object_spread_props(_object_spread({}, element), {
|
|
96
|
+
type: 'katex'
|
|
97
|
+
});
|
|
98
|
+
},
|
|
99
|
+
'agentar-card': processSchemaLanguage
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* 处理代码块节点
|
|
103
|
+
* @param currentElement - 当前处理的代码块元素,包含语言和内容
|
|
104
|
+
* @returns 返回格式化的代码块节点对象,根据语言类型进行特殊处理
|
|
105
|
+
*/ export var handleCode = function(currentElement) {
|
|
106
|
+
var _match, _currentElement_otherProps, _currentElement_value_trim;
|
|
107
|
+
var rawValue = currentElement.value || '';
|
|
108
|
+
var langString = ((_match = (currentElement.lang || '').match(NOT_SPACE_START)) === null || _match === void 0 ? void 0 : _match[0]) || '';
|
|
109
|
+
var code = "".concat(rawValue.replace(ENDING_NEWLINE, ''), "\n");
|
|
110
|
+
// 检查代码块是否完整
|
|
111
|
+
// 如果是缩进代码块,认为是完整的(因为没有结束标记)
|
|
112
|
+
var isIndentedCode = currentElement.meta === 'indented';
|
|
113
|
+
// 使用更智能的方法判断代码块是否完整
|
|
114
|
+
var streamStatus = 'loading';
|
|
115
|
+
if (isIndentedCode) {
|
|
116
|
+
// 缩进代码块没有结束标记,认为是完整的
|
|
117
|
+
streamStatus = 'done';
|
|
118
|
+
} else {
|
|
119
|
+
// 对于围栏代码块,使用多种方法判断
|
|
120
|
+
var endsWithNewline = code.match(ENDING_NEWLINE);
|
|
121
|
+
// 如果代码以换行结尾,可能是完整的
|
|
122
|
+
if (endsWithNewline) {
|
|
123
|
+
// 进一步检查代码内容是否完整(特别是对于 Mermaid 等需要完整语法的情况)
|
|
124
|
+
var isLikelyComplete = isCodeBlockLikelyComplete(rawValue, currentElement.lang);
|
|
125
|
+
streamStatus = isLikelyComplete ? 'done' : 'loading';
|
|
126
|
+
} else {
|
|
127
|
+
// 没有换行结尾,肯定不完整
|
|
128
|
+
streamStatus = 'loading';
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// 如果已经在 parseNodes 中设置了 finished(基于是否是最后一个节点),优先使用它
|
|
132
|
+
// 否则使用 streamStatus 判断
|
|
133
|
+
var finishValue = ((_currentElement_otherProps = currentElement.otherProps) === null || _currentElement_otherProps === void 0 ? void 0 : _currentElement_otherProps.finished) !== undefined ? currentElement.otherProps.finished : streamStatus === 'done';
|
|
134
|
+
var otherProps = _object_spread(_object_spread_props(_object_spread({}, currentElement.otherProps || {}), {
|
|
135
|
+
'data-block': 'true',
|
|
136
|
+
'data-state': streamStatus,
|
|
137
|
+
// 优先使用 parseNodes 中设置的 finish,否则使用 streamStatus 判断
|
|
138
|
+
finished: finishValue
|
|
139
|
+
}), langString ? {
|
|
140
|
+
'data-language': langString
|
|
141
|
+
} : {});
|
|
142
|
+
if (finishValue !== false) {
|
|
143
|
+
delete otherProps.finished;
|
|
144
|
+
}
|
|
145
|
+
var baseCodeElement = {
|
|
146
|
+
type: 'code',
|
|
147
|
+
language: currentElement.lang === 'apaasify' ? 'apaasify' : currentElement.lang,
|
|
148
|
+
render: currentElement.meta === 'render',
|
|
149
|
+
value: currentElement.value,
|
|
150
|
+
isConfig: currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_value_trim = currentElement.value.trim()) === null || _currentElement_value_trim === void 0 ? void 0 : _currentElement_value_trim.startsWith('<!--'),
|
|
151
|
+
children: [
|
|
152
|
+
{
|
|
153
|
+
text: currentElement.value
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
// 添加流式状态支持
|
|
157
|
+
otherProps: otherProps
|
|
158
|
+
};
|
|
159
|
+
var handler = LANGUAGE_HANDLERS[currentElement.lang];
|
|
160
|
+
var result = handler ? handler(baseCodeElement, currentElement.value) : baseCodeElement;
|
|
161
|
+
// 确保 otherProps 被保留
|
|
162
|
+
var resultWithProps = result;
|
|
163
|
+
if (baseCodeElement.otherProps && !resultWithProps.otherProps) {
|
|
164
|
+
resultWithProps.otherProps = baseCodeElement.otherProps;
|
|
165
|
+
} else if (baseCodeElement.otherProps && resultWithProps.otherProps) {
|
|
166
|
+
resultWithProps.otherProps = _object_spread({}, resultWithProps.otherProps, baseCodeElement.otherProps);
|
|
167
|
+
}
|
|
168
|
+
return resultWithProps;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* 处理YAML节点
|
|
172
|
+
* @param currentElement - 当前处理的YAML元素
|
|
173
|
+
* @returns 返回格式化的YAML代码块节点对象
|
|
174
|
+
*/ export var handleYaml = function(currentElement) {
|
|
175
|
+
return {
|
|
176
|
+
type: 'code',
|
|
177
|
+
language: 'yaml',
|
|
178
|
+
value: currentElement.value,
|
|
179
|
+
frontmatter: true,
|
|
180
|
+
children: [
|
|
181
|
+
{
|
|
182
|
+
text: currentElement.value
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
};
|
|
186
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 处理内联代码节点
|
|
3
|
+
* @param currentElement - 当前处理的内联代码元素
|
|
4
|
+
* @returns 返回格式化的内联代码节点对象,支持占位符和初始值
|
|
5
|
+
*/
|
|
6
|
+
export declare const handleInlineCode: (currentElement: any) => any;
|
|
7
|
+
/**
|
|
8
|
+
* 处理分割线节点
|
|
9
|
+
* @returns 返回格式化的分割线节点对象
|
|
10
|
+
*/
|
|
11
|
+
export declare const handleThematicBreak: () => {
|
|
12
|
+
type: string;
|
|
13
|
+
children: {
|
|
14
|
+
text: string;
|
|
15
|
+
}[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* 处理定义节点
|
|
19
|
+
* @param currentElement - 当前处理的定义元素,包含标签和URL
|
|
20
|
+
* @returns 返回格式化的定义段落节点对象
|
|
21
|
+
*/
|
|
22
|
+
export declare const handleDefinition: (currentElement: any) => {
|
|
23
|
+
type: string;
|
|
24
|
+
children: {
|
|
25
|
+
text: string;
|
|
26
|
+
}[];
|
|
27
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 处理内联代码节点
|
|
3
|
+
* @param currentElement - 当前处理的内联代码元素
|
|
4
|
+
* @returns 返回格式化的内联代码节点对象,支持占位符和初始值
|
|
5
|
+
*/ export var handleInlineCode = function(currentElement) {
|
|
6
|
+
var _currentElement_value, _currentElement_value1;
|
|
7
|
+
var hasPlaceHolder = (_currentElement_value = currentElement.value) === null || _currentElement_value === void 0 ? void 0 : _currentElement_value.match(/\$\{(.*?)\}/);
|
|
8
|
+
var values = undefined;
|
|
9
|
+
if (hasPlaceHolder) {
|
|
10
|
+
// 使用逗号分割多个键值对,例如:placeholder:目标场景,initialValue:已选择
|
|
11
|
+
var content = hasPlaceHolder[1];
|
|
12
|
+
values = {};
|
|
13
|
+
// 匹配 key:value 格式,支持逗号分隔
|
|
14
|
+
var keyValuePattern = /(\w+):([^,]+)/g;
|
|
15
|
+
var match;
|
|
16
|
+
while((match = keyValuePattern.exec(content)) !== null){
|
|
17
|
+
var key = match[1];
|
|
18
|
+
var value = match[2];
|
|
19
|
+
if (key && value !== undefined && value !== null) {
|
|
20
|
+
values[key] = value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
var isTag = (_currentElement_value1 = currentElement.value) === null || _currentElement_value1 === void 0 ? void 0 : _currentElement_value1.startsWith('${');
|
|
25
|
+
var result = {
|
|
26
|
+
code: true,
|
|
27
|
+
tag: isTag ? true : false
|
|
28
|
+
};
|
|
29
|
+
// 优先使用 initialValue,其次使用 placeholder,最后使用原始值
|
|
30
|
+
if (values === null || values === void 0 ? void 0 : values.initialValue) {
|
|
31
|
+
result.text = values.initialValue || ' ';
|
|
32
|
+
}
|
|
33
|
+
if (!result.text && (values === null || values === void 0 ? void 0 : values.placeholder)) {
|
|
34
|
+
// 当有 placeholder 时,text 设置为空格,避免空字符串导致 tag 被移除
|
|
35
|
+
result.text = ' ';
|
|
36
|
+
}
|
|
37
|
+
if (!result.text) {
|
|
38
|
+
// 只有当不是 ${ 开头的占位符时,才使用原始值
|
|
39
|
+
if (!isTag) {
|
|
40
|
+
result.text = currentElement.value;
|
|
41
|
+
} else {
|
|
42
|
+
// 如果是 ${ 开头但没有匹配到值,使用空格避免空字符串
|
|
43
|
+
result.text = ' ';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// 设置 placeholder 和 initialValue
|
|
47
|
+
// 如果是 tag 且值存在,设置实际值;否则设置为 undefined(符合测试期望)
|
|
48
|
+
if (isTag) {
|
|
49
|
+
result.placeholder = values === null || values === void 0 ? void 0 : values.placeholder;
|
|
50
|
+
result.initialValue = values === null || values === void 0 ? void 0 : values.initialValue;
|
|
51
|
+
} else {
|
|
52
|
+
result.placeholder = undefined;
|
|
53
|
+
result.initialValue = undefined;
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* 处理分割线节点
|
|
59
|
+
* @returns 返回格式化的分割线节点对象
|
|
60
|
+
*/ export var handleThematicBreak = function() {
|
|
61
|
+
return {
|
|
62
|
+
type: 'hr',
|
|
63
|
+
children: [
|
|
64
|
+
{
|
|
65
|
+
text: ''
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* 处理定义节点
|
|
72
|
+
* @param currentElement - 当前处理的定义元素,包含标签和URL
|
|
73
|
+
* @returns 返回格式化的定义段落节点对象
|
|
74
|
+
*/ export var handleDefinition = function(currentElement) {
|
|
75
|
+
return {
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
children: [
|
|
78
|
+
{
|
|
79
|
+
text: "[".concat(currentElement.label, "]: ") + (currentElement.url ? "".concat(currentElement.url) : '')
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
};
|
|
83
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 根据行间距添加空行元素(纯函数版本)
|
|
3
|
+
* @param els - 目标元素数组
|
|
4
|
+
* @param preNode - 前一个节点
|
|
5
|
+
* @param currentElement - 当前处理的元素
|
|
6
|
+
* @param top - 是否为顶级解析
|
|
7
|
+
* @returns 返回添加了空行元素的新数组
|
|
8
|
+
*/
|
|
9
|
+
export declare const addEmptyLinesIfNeeded: (els: any[], preNode: any, currentElement: any, top: boolean) => any[];
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// 常量定义
|
|
2
|
+
function _array_like_to_array(arr, len) {
|
|
3
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
4
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
5
|
+
return arr2;
|
|
6
|
+
}
|
|
7
|
+
function _array_without_holes(arr) {
|
|
8
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
9
|
+
}
|
|
10
|
+
function _iterable_to_array(iter) {
|
|
11
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
12
|
+
}
|
|
13
|
+
function _non_iterable_spread() {
|
|
14
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
15
|
+
}
|
|
16
|
+
function _to_consumable_array(arr) {
|
|
17
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
18
|
+
}
|
|
19
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
20
|
+
if (!o) return;
|
|
21
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
22
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
23
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
24
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
25
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
26
|
+
}
|
|
27
|
+
var EMPTY_LINE_DISTANCE_THRESHOLD = 4; // 两个元素之间的行距阈值
|
|
28
|
+
var EMPTY_LINE_CALCULATION_OFFSET = 2; // 计算空行数量时的偏移量
|
|
29
|
+
var EMPTY_LINE_DIVISOR = 2; // 计算空行数量的除数
|
|
30
|
+
/**
|
|
31
|
+
* 根据行间距添加空行元素(纯函数版本)
|
|
32
|
+
* @param els - 目标元素数组
|
|
33
|
+
* @param preNode - 前一个节点
|
|
34
|
+
* @param currentElement - 当前处理的元素
|
|
35
|
+
* @param top - 是否为顶级解析
|
|
36
|
+
* @returns 返回添加了空行元素的新数组
|
|
37
|
+
*/ export var addEmptyLinesIfNeeded = function(els, preNode, currentElement, top) {
|
|
38
|
+
var _currentElement_position, _preNode_position;
|
|
39
|
+
if (!preNode || !top) {
|
|
40
|
+
return els;
|
|
41
|
+
}
|
|
42
|
+
var distance = (((_currentElement_position = currentElement.position) === null || _currentElement_position === void 0 ? void 0 : _currentElement_position.start.line) || 0) - (((_preNode_position = preNode.position) === null || _preNode_position === void 0 ? void 0 : _preNode_position.end.line) || 0);
|
|
43
|
+
if (distance < EMPTY_LINE_DISTANCE_THRESHOLD) {
|
|
44
|
+
return els;
|
|
45
|
+
}
|
|
46
|
+
var lines = Math.floor((distance - EMPTY_LINE_CALCULATION_OFFSET) / EMPTY_LINE_DIVISOR);
|
|
47
|
+
var emptyLines = Array.from({
|
|
48
|
+
length: lines
|
|
49
|
+
}, function() {
|
|
50
|
+
return {
|
|
51
|
+
type: 'paragraph',
|
|
52
|
+
children: [
|
|
53
|
+
{
|
|
54
|
+
text: ''
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
return _to_consumable_array(els).concat(_to_consumable_array(emptyLines));
|
|
60
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 处理脚注引用
|
|
3
|
+
* @param currentElement - 当前处理的脚注引用元素
|
|
4
|
+
* @returns 返回格式化的脚注引用节点对象
|
|
5
|
+
*/ export var handleFootnoteReference = function(currentElement) {
|
|
6
|
+
var _currentElement_identifier;
|
|
7
|
+
return {
|
|
8
|
+
text: "".concat((_currentElement_identifier = currentElement.identifier) === null || _currentElement_identifier === void 0 ? void 0 : _currentElement_identifier.toUpperCase()),
|
|
9
|
+
identifier: currentElement.identifier,
|
|
10
|
+
type: 'footnoteReference'
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 解码 URI 组件,处理错误情况
|
|
3
|
+
*/
|
|
4
|
+
export declare const decodeURIComponentUrl: (url: string) => string;
|
|
5
|
+
/**
|
|
6
|
+
* 查找并解析媒体元素(img/video/iframe)
|
|
7
|
+
*/
|
|
8
|
+
export declare const findImageElement: (str: string) => any;
|
|
9
|
+
/**
|
|
10
|
+
* 根据媒体元素信息创建编辑器节点
|
|
11
|
+
*/
|
|
12
|
+
export declare const createMediaNodeFromElement: (mediaElement: ReturnType<typeof findImageElement>) => import("../../../..").CardNode | {
|
|
13
|
+
text: string;
|
|
14
|
+
} | null;
|
|
15
|
+
/**
|
|
16
|
+
* 标准 HTML 元素列表
|
|
17
|
+
* 这些标签会被正常解析为 HTML,其他标签会被当作普通文本处理
|
|
18
|
+
*/
|
|
19
|
+
export declare const STANDARD_HTML_ELEMENTS: Set<string>;
|
|
20
|
+
/**
|
|
21
|
+
* 检查 HTML 标签是否为标准元素
|
|
22
|
+
* @param htmlString - HTML 字符串
|
|
23
|
+
* @returns 是否为标准 HTML 元素
|
|
24
|
+
*/
|
|
25
|
+
export declare function isStandardHtmlElement(htmlString: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 查找附件链接
|
|
28
|
+
*/
|
|
29
|
+
export declare const findAttachment: (str: string) => {
|
|
30
|
+
url: string;
|
|
31
|
+
size: number;
|
|
32
|
+
} | null;
|
|
33
|
+
/**
|
|
34
|
+
* 处理HTML节点
|
|
35
|
+
* @param currentElement - 当前处理的HTML元素
|
|
36
|
+
* @param parent - 父级元素,用于判断上下文
|
|
37
|
+
* @param htmlTag - HTML标签栈,用于跟踪嵌套的HTML标签
|
|
38
|
+
* @returns 返回包含解析后元素和上下文属性的对象
|
|
39
|
+
*/
|
|
40
|
+
export declare const handleHtml: (currentElement: any, parent: any, htmlTag: any[]) => {
|
|
41
|
+
el: any;
|
|
42
|
+
contextProps: any;
|
|
43
|
+
htmlTag: any[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* 预处理特殊标签(think/answer),将其转换为代码块格式
|
|
47
|
+
* @param markdown - 原始 Markdown 字符串
|
|
48
|
+
* @param tagName - 标签名称(think 或 answer)
|
|
49
|
+
* @returns 处理后的 Markdown 字符串
|
|
50
|
+
*/
|
|
51
|
+
export declare function preprocessSpecialTags(markdown: string, tagName: 'think' | 'answer'): string;
|
|
52
|
+
/**
|
|
53
|
+
* 预处理 <think> 标签,将其转换为 ```think 代码块格式
|
|
54
|
+
* @param markdown - 原始 Markdown 字符串
|
|
55
|
+
* @returns 处理后的 Markdown 字符串
|
|
56
|
+
*/
|
|
57
|
+
export declare function preprocessThinkTags(markdown: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* 预处理所有非标准 HTML 标签,提取其内容(删除标签本身)
|
|
60
|
+
* @param markdown - 原始 Markdown 字符串
|
|
61
|
+
* @returns 处理后的 Markdown 字符串
|
|
62
|
+
*/
|
|
63
|
+
export declare function preprocessNonStandardHtmlTags(markdown: string): string;
|