larkcc 0.3.0 → 0.5.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/CHANGELOG.md +34 -0
- package/README.md +177 -23
- package/dist/agent.js +138 -32
- package/dist/agent.js.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/cardkit.d.ts +92 -0
- package/dist/cardkit.js +407 -0
- package/dist/cardkit.js.map +1 -0
- package/dist/config.d.ts +28 -2
- package/dist/config.js +49 -45
- package/dist/config.js.map +1 -1
- package/dist/feishu.d.ts +36 -5
- package/dist/feishu.js +343 -41
- package/dist/feishu.js.map +1 -1
- package/dist/format/builder.d.ts +126 -37
- package/dist/format/builder.js +276 -116
- package/dist/format/builder.js.map +1 -1
- package/dist/format/card-optimize.d.ts +42 -0
- package/dist/format/card-optimize.js +74 -0
- package/dist/format/card-optimize.js.map +1 -0
- package/dist/format/constants.d.ts +87 -14
- package/dist/format/constants.js +147 -58
- package/dist/format/constants.js.map +1 -1
- package/dist/format/document.d.ts +4 -2
- package/dist/format/document.js +57 -35
- package/dist/format/document.js.map +1 -1
- package/dist/format/guide.d.ts +19 -0
- package/dist/format/guide.js +201 -0
- package/dist/format/guide.js.map +1 -0
- package/dist/format/image-resolver.d.ts +31 -0
- package/dist/format/image-resolver.js +202 -0
- package/dist/format/image-resolver.js.map +1 -0
- package/dist/format/index.d.ts +8 -3
- package/dist/format/index.js +8 -2
- package/dist/format/index.js.map +1 -1
- package/dist/format/parser.d.ts +22 -0
- package/dist/format/parser.js +55 -12
- package/dist/format/parser.js.map +1 -1
- package/dist/format/sanitize.d.ts +3 -0
- package/dist/format/sanitize.js +16 -7
- package/dist/format/sanitize.js.map +1 -1
- package/dist/format/thinking.d.ts +29 -0
- package/dist/format/thinking.js +50 -0
- package/dist/format/thinking.js.map +1 -0
- package/dist/resources/format-guide.md +109 -0
- package/dist/streaming.d.ts +77 -0
- package/dist/streaming.js +293 -0
- package/dist/streaming.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
package/dist/format/builder.js
CHANGED
|
@@ -1,85 +1,178 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 飞书文档块构建器
|
|
3
|
+
*
|
|
4
|
+
* 所有数据结构严格对齐 @larksuiteoapi/node-sdk 类型定义
|
|
3
5
|
*/
|
|
4
|
-
import { BlockType,
|
|
5
|
-
// ──
|
|
6
|
+
import { BlockType, CalloutColorMap, LanguageMap, FontColorNameMap, FontBgColorNameMap, FontColor, FontBgColor, } from "./constants.js";
|
|
7
|
+
// ── 颜色映射 ───────────────────────────────────────────────────
|
|
8
|
+
/**
|
|
9
|
+
* RGB 转 HSL 色相值(0-360)
|
|
10
|
+
*/
|
|
11
|
+
function rgbToHue(r, g, b) {
|
|
12
|
+
const max = Math.max(r, g, b);
|
|
13
|
+
const min = Math.min(r, g, b);
|
|
14
|
+
const l = (max + min) / 2;
|
|
15
|
+
if (max === min)
|
|
16
|
+
return 0; // 灰色,无色相
|
|
17
|
+
const d = max - min;
|
|
18
|
+
let h;
|
|
19
|
+
if (max === r) {
|
|
20
|
+
h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
|
|
21
|
+
}
|
|
22
|
+
else if (max === g) {
|
|
23
|
+
h = ((b - r) / d + 2) / 6;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
h = ((r - g) / d + 4) / 6;
|
|
27
|
+
}
|
|
28
|
+
return h * 360;
|
|
29
|
+
}
|
|
6
30
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
31
|
+
* 将 Hex 颜色值近似匹配到飞书 FontColor 枚举
|
|
32
|
+
* 通过 HSL 色相区间分配到最近的 7 种颜色
|
|
9
33
|
*/
|
|
10
|
-
function
|
|
34
|
+
function hexToFontColor(hex) {
|
|
35
|
+
try {
|
|
36
|
+
let h = hex.replace("#", "");
|
|
37
|
+
// 扩展 3 位 hex 到 6 位
|
|
38
|
+
if (h.length === 3)
|
|
39
|
+
h = `${h[0]}${h[0]}${h[1]}${h[1]}${h[2]}${h[2]}`;
|
|
40
|
+
if (h.length !== 6)
|
|
41
|
+
return FontColor.GRAY;
|
|
42
|
+
const r = parseInt(h.slice(0, 2), 16) / 255;
|
|
43
|
+
const g = parseInt(h.slice(2, 4), 16) / 255;
|
|
44
|
+
const b = parseInt(h.slice(4, 6), 16) / 255;
|
|
45
|
+
const hue = rgbToHue(r, g, b);
|
|
46
|
+
// 检查是否接近灰色(低饱和度)
|
|
47
|
+
const max = Math.max(r, g, b);
|
|
48
|
+
const min = Math.min(r, g, b);
|
|
49
|
+
const saturation = max === 0 ? 0 : (max - min) / (1 - Math.abs(2 * ((max + min) / 2) - 1));
|
|
50
|
+
if (saturation < 0.15)
|
|
51
|
+
return FontColor.GRAY;
|
|
52
|
+
// 按色相区间分配
|
|
53
|
+
if (hue < 15 || hue >= 345)
|
|
54
|
+
return FontColor.PINK; // Pink/Red
|
|
55
|
+
if (hue < 45)
|
|
56
|
+
return FontColor.ORANGE; // Orange
|
|
57
|
+
if (hue < 75)
|
|
58
|
+
return FontColor.YELLOW; // Yellow
|
|
59
|
+
if (hue < 165)
|
|
60
|
+
return FontColor.GREEN; // Green
|
|
61
|
+
if (hue < 255)
|
|
62
|
+
return FontColor.BLUE; // Blue
|
|
63
|
+
if (hue < 285)
|
|
64
|
+
return FontColor.PURPLE; // Purple
|
|
65
|
+
return FontColor.GRAY;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return FontColor.GRAY;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 将 Hex 颜色值近似匹配到飞书 FontBgColor 枚举
|
|
73
|
+
* 通过明度区分 light (1-7) 和 dark (8-14) 变体
|
|
74
|
+
*/
|
|
75
|
+
function hexToFontBgColor(hex) {
|
|
76
|
+
try {
|
|
77
|
+
let h = hex.replace("#", "");
|
|
78
|
+
if (h.length === 3)
|
|
79
|
+
h = `${h[0]}${h[0]}${h[1]}${h[1]}${h[2]}${h[2]}`;
|
|
80
|
+
if (h.length !== 6)
|
|
81
|
+
return FontBgColor.LIGHT_GRAY;
|
|
82
|
+
const r = parseInt(h.slice(0, 2), 16) / 255;
|
|
83
|
+
const g = parseInt(h.slice(2, 4), 16) / 255;
|
|
84
|
+
const b = parseInt(h.slice(4, 6), 16) / 255;
|
|
85
|
+
const hue = rgbToHue(r, g, b);
|
|
86
|
+
const lightness = (Math.max(r, g, b) + Math.min(r, g, b)) / 2;
|
|
87
|
+
const isDark = lightness < 0.5;
|
|
88
|
+
// 按色相 + 明度分配
|
|
89
|
+
if (hue < 15 || hue >= 345)
|
|
90
|
+
return isDark ? FontBgColor.DARK_PINK : FontBgColor.LIGHT_PINK;
|
|
91
|
+
if (hue < 45)
|
|
92
|
+
return isDark ? FontBgColor.DARK_ORANGE : FontBgColor.LIGHT_ORANGE;
|
|
93
|
+
if (hue < 75)
|
|
94
|
+
return isDark ? FontBgColor.DARK_YELLOW : FontBgColor.LIGHT_YELLOW;
|
|
95
|
+
if (hue < 165)
|
|
96
|
+
return isDark ? FontBgColor.DARK_GREEN : FontBgColor.LIGHT_GREEN;
|
|
97
|
+
if (hue < 255)
|
|
98
|
+
return isDark ? FontBgColor.DARK_BLUE : FontBgColor.LIGHT_BLUE;
|
|
99
|
+
if (hue < 285)
|
|
100
|
+
return isDark ? FontBgColor.DARK_PURPLE : FontBgColor.LIGHT_PURPLE;
|
|
101
|
+
return isDark ? FontBgColor.DARK_GRAY : FontBgColor.LIGHT_GRAY;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return FontBgColor.LIGHT_GRAY;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 解析 CSS 颜色值为飞书 FontColor 数字枚举
|
|
109
|
+
* 支持颜色名(red)和 Hex(#FF0000)
|
|
110
|
+
*/
|
|
111
|
+
function parseCssToFontColor(value) {
|
|
11
112
|
const trimmed = value.trim().toLowerCase();
|
|
12
|
-
// 十六进制颜色
|
|
13
113
|
if (trimmed.startsWith("#")) {
|
|
14
|
-
|
|
15
|
-
if (/^#[0-9A-F]{6}$/i.test(hex) || /^#[0-9A-F]{3}$/i.test(hex)) {
|
|
16
|
-
return hex;
|
|
17
|
-
}
|
|
18
|
-
// 扩展 3 位十六进制到 6 位
|
|
19
|
-
if (/^#[0-9A-F]{3}$/i.test(hex)) {
|
|
20
|
-
return `#${hex[1]}${hex[1]}${hex[2]}${hex[2]}${hex[3]}${hex[3]}`.toUpperCase();
|
|
21
|
-
}
|
|
22
|
-
return hex;
|
|
114
|
+
return hexToFontColor(trimmed);
|
|
23
115
|
}
|
|
24
|
-
|
|
25
|
-
|
|
116
|
+
return FontColorNameMap[trimmed];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* 解析 CSS 颜色值为飞书 FontBgColor 数字枚举
|
|
120
|
+
* 支持颜色名(lightgreen)和 Hex(#90EE90)
|
|
121
|
+
*/
|
|
122
|
+
function parseCssToFontBgColor(value) {
|
|
123
|
+
const trimmed = value.trim().toLowerCase();
|
|
124
|
+
if (trimmed.startsWith("#")) {
|
|
125
|
+
return hexToFontBgColor(trimmed);
|
|
126
|
+
}
|
|
127
|
+
return FontBgColorNameMap[trimmed];
|
|
26
128
|
}
|
|
27
129
|
/**
|
|
28
130
|
* 解析 style 属性中的颜色
|
|
29
131
|
* 支持:color:red, background-color:yellow, color:#FF0000
|
|
132
|
+
* 返回飞书数字枚举值
|
|
30
133
|
*/
|
|
31
134
|
function parseStyleColors(style) {
|
|
32
135
|
const result = {};
|
|
33
|
-
// 匹配 color 和 background-color
|
|
34
136
|
const colorMatch = style.match(/color\s*:\s*([^;]+)/i);
|
|
35
137
|
const bgColorMatch = style.match(/background-color\s*:\s*([^;]+)/i);
|
|
36
138
|
if (colorMatch) {
|
|
37
|
-
const color =
|
|
139
|
+
const color = parseCssToFontColor(colorMatch[1]);
|
|
38
140
|
if (color)
|
|
39
141
|
result.textColor = color;
|
|
40
142
|
else
|
|
41
|
-
console.warn(`⚠️ [format]
|
|
143
|
+
console.warn(`⚠️ [format] 无法映射颜色值: "${colorMatch[1]}"`);
|
|
42
144
|
}
|
|
43
145
|
if (bgColorMatch) {
|
|
44
|
-
const color =
|
|
146
|
+
const color = parseCssToFontBgColor(bgColorMatch[1]);
|
|
45
147
|
if (color)
|
|
46
148
|
result.bgColor = color;
|
|
47
149
|
else
|
|
48
|
-
console.warn(`⚠️ [format]
|
|
150
|
+
console.warn(`⚠️ [format] 无法映射背景色值: "${bgColorMatch[1]}"`);
|
|
49
151
|
}
|
|
50
152
|
return result;
|
|
51
153
|
}
|
|
154
|
+
// ── 内联格式解析 ───────────────────────────────────────────────────
|
|
52
155
|
/**
|
|
53
156
|
* 解析内联 Markdown 和 HTML 格式
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* -
|
|
57
|
-
* -
|
|
58
|
-
* -
|
|
59
|
-
* -
|
|
157
|
+
*
|
|
158
|
+
* 输出严格对齐飞书 SDK 的 TextElement 结构:
|
|
159
|
+
* - 所有样式属性放在 text_run.text_element_style 内
|
|
160
|
+
* - 链接通过 text_element_style.link 实现
|
|
161
|
+
* - 行内代码通过 text_element_style.inline_code 布尔值实现
|
|
162
|
+
* - 颜色为数字枚举值
|
|
60
163
|
*/
|
|
61
164
|
export function parseInlineText(text) {
|
|
62
165
|
const elements = [];
|
|
63
166
|
let remaining = text;
|
|
64
|
-
// 处理转义后的文本
|
|
65
167
|
const unescape = (s) => s.replace(/\\([<>*_~`\[\]])/g, "$1");
|
|
66
|
-
// 正则匹配各种内联格式
|
|
67
168
|
const patterns = [
|
|
68
|
-
// 转义字符 \* \_ \< 等 - 先匹配,避免被其他规则捕获
|
|
69
169
|
{ regex: /\\([<>*_~`\[\]])/, type: "escape" },
|
|
70
|
-
// 下划线 <u>text</u>
|
|
71
170
|
{ regex: /<u>([^<]*)<\/u>/i, type: "underline" },
|
|
72
|
-
// 带颜色的 span <span style="color:red">text</span>
|
|
73
171
|
{ regex: /<span\s+style\s*=\s*["']([^"']+)["']\s*>([^<]*)<\/span>/i, type: "span" },
|
|
74
|
-
// 粗体 **text**
|
|
75
172
|
{ regex: /\*\*([^*]+)\*\*/, type: "bold" },
|
|
76
|
-
// 斜体 *text* 或 _text_
|
|
77
173
|
{ regex: /(?:\*([^*]+)\*|_([^_]+)_)/, type: "italic" },
|
|
78
|
-
// 行内代码 `code`
|
|
79
174
|
{ regex: /`([^`]+)`/, type: "code" },
|
|
80
|
-
// 删除线 ~~text~~
|
|
81
175
|
{ regex: /~~([^~]+)~~/, type: "strikethrough" },
|
|
82
|
-
// 链接 [text](url)
|
|
83
176
|
{ regex: /\[([^\]]+)\]\(([^)]+)\)/, type: "link" },
|
|
84
177
|
];
|
|
85
178
|
while (remaining.length > 0) {
|
|
@@ -94,31 +187,32 @@ export function parseInlineText(text) {
|
|
|
94
187
|
element = { text_run: { content: match[1] } };
|
|
95
188
|
break;
|
|
96
189
|
case "underline":
|
|
97
|
-
element = { text_run: { content: unescape(match[1])
|
|
190
|
+
element = { text_run: { content: unescape(match[1]), text_element_style: { underline: true } } };
|
|
98
191
|
break;
|
|
99
|
-
case "span":
|
|
192
|
+
case "span": {
|
|
100
193
|
const colors = parseStyleColors(match[1]);
|
|
101
|
-
const
|
|
102
|
-
element = { text_run: { content } };
|
|
194
|
+
const style = {};
|
|
103
195
|
if (colors.textColor)
|
|
104
|
-
|
|
196
|
+
style.text_color = colors.textColor;
|
|
105
197
|
if (colors.bgColor)
|
|
106
|
-
|
|
198
|
+
style.background_color = colors.bgColor;
|
|
199
|
+
element = { text_run: { content: unescape(match[2]), text_element_style: Object.keys(style).length > 0 ? style : undefined } };
|
|
107
200
|
break;
|
|
201
|
+
}
|
|
108
202
|
case "bold":
|
|
109
|
-
element = { text_run: { content: unescape(match[1])
|
|
203
|
+
element = { text_run: { content: unescape(match[1]), text_element_style: { bold: true } } };
|
|
110
204
|
break;
|
|
111
205
|
case "italic":
|
|
112
|
-
element = { text_run: { content: unescape(match[1] || match[2])
|
|
206
|
+
element = { text_run: { content: unescape(match[1] || match[2]), text_element_style: { italic: true } } };
|
|
113
207
|
break;
|
|
114
208
|
case "code":
|
|
115
|
-
element = {
|
|
209
|
+
element = { text_run: { content: unescape(match[1]), text_element_style: { inline_code: true } } };
|
|
116
210
|
break;
|
|
117
211
|
case "strikethrough":
|
|
118
|
-
element = { text_run: { content: unescape(match[1])
|
|
212
|
+
element = { text_run: { content: unescape(match[1]), text_element_style: { strikethrough: true } } };
|
|
119
213
|
break;
|
|
120
214
|
case "link":
|
|
121
|
-
element = {
|
|
215
|
+
element = { text_run: { content: unescape(match[1]), text_element_style: { link: { url: match[2] } } } };
|
|
122
216
|
break;
|
|
123
217
|
default:
|
|
124
218
|
continue;
|
|
@@ -131,7 +225,6 @@ export function parseInlineText(text) {
|
|
|
131
225
|
remaining = remaining.slice(earliestMatch.length);
|
|
132
226
|
}
|
|
133
227
|
else if (earliestMatch) {
|
|
134
|
-
// 匹配前有普通文本
|
|
135
228
|
const plainText = remaining.slice(0, earliestMatch.index);
|
|
136
229
|
if (plainText) {
|
|
137
230
|
elements.push({ text_run: { content: unescape(plainText) } });
|
|
@@ -140,14 +233,18 @@ export function parseInlineText(text) {
|
|
|
140
233
|
remaining = remaining.slice(earliestMatch.index + earliestMatch.length);
|
|
141
234
|
}
|
|
142
235
|
else {
|
|
143
|
-
// 没有匹配,全部作为普通文本
|
|
144
236
|
if (remaining) {
|
|
145
237
|
elements.push({ text_run: { content: unescape(remaining) } });
|
|
146
238
|
}
|
|
147
239
|
break;
|
|
148
240
|
}
|
|
149
241
|
}
|
|
150
|
-
|
|
242
|
+
// 过滤掉 content 为空的 text_run(避免 API 校验失败)
|
|
243
|
+
return elements.filter(e => {
|
|
244
|
+
if (e.text_run && e.text_run.content === "")
|
|
245
|
+
return false;
|
|
246
|
+
return true;
|
|
247
|
+
});
|
|
151
248
|
}
|
|
152
249
|
// ── 块构建函数 ───────────────────────────────────────────────────
|
|
153
250
|
export function buildTextBlock(content) {
|
|
@@ -179,16 +276,16 @@ export function buildCodeBlock(code, lang = "") {
|
|
|
179
276
|
},
|
|
180
277
|
};
|
|
181
278
|
}
|
|
182
|
-
export function buildBulletBlock(content) {
|
|
279
|
+
export function buildBulletBlock(content, level = 0) {
|
|
183
280
|
return {
|
|
184
281
|
block_type: BlockType.BULLET,
|
|
185
|
-
bullet: { elements: parseInlineText(content) },
|
|
282
|
+
bullet: { elements: parseInlineText(content), ...(level > 0 ? { level } : {}) },
|
|
186
283
|
};
|
|
187
284
|
}
|
|
188
|
-
export function buildOrderedBlock(content) {
|
|
285
|
+
export function buildOrderedBlock(content, level = 0) {
|
|
189
286
|
return {
|
|
190
287
|
block_type: BlockType.ORDERED,
|
|
191
|
-
ordered: { elements: parseInlineText(content) },
|
|
288
|
+
ordered: { elements: parseInlineText(content), ...(level > 0 ? { level } : {}) },
|
|
192
289
|
};
|
|
193
290
|
}
|
|
194
291
|
export function buildQuoteBlock(content) {
|
|
@@ -201,7 +298,7 @@ export function buildTodoBlock(content, checked) {
|
|
|
201
298
|
return {
|
|
202
299
|
block_type: BlockType.TODO,
|
|
203
300
|
todo: {
|
|
204
|
-
style: { checked },
|
|
301
|
+
style: { done: checked },
|
|
205
302
|
elements: parseInlineText(content),
|
|
206
303
|
},
|
|
207
304
|
};
|
|
@@ -209,17 +306,34 @@ export function buildTodoBlock(content, checked) {
|
|
|
209
306
|
export function buildEquationBlock(latex) {
|
|
210
307
|
return {
|
|
211
308
|
block_type: BlockType.EQUATION,
|
|
212
|
-
equation: {
|
|
309
|
+
equation: {
|
|
310
|
+
elements: [{ equation: { content: latex } }],
|
|
311
|
+
},
|
|
213
312
|
};
|
|
214
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* 构建高亮块(Descendants API)
|
|
316
|
+
* callout 是容器块,没有 elements,内容通过子块实现
|
|
317
|
+
*/
|
|
215
318
|
export function buildCalloutBlock(type, content) {
|
|
216
|
-
const
|
|
319
|
+
const { bg, border } = CalloutColorMap[type];
|
|
320
|
+
const calloutId = crypto.randomUUID();
|
|
321
|
+
// 内容按行拆分为多个 TEXT 子块
|
|
322
|
+
const lines = content.split("\n");
|
|
323
|
+
const textIds = lines.map((_, i) => `${calloutId}-text-${i}`);
|
|
324
|
+
const textBlocks = lines.map((line, i) => ({
|
|
325
|
+
block_type: BlockType.TEXT,
|
|
326
|
+
block_id: textIds[i],
|
|
327
|
+
text: { elements: parseInlineText(line) },
|
|
328
|
+
}));
|
|
217
329
|
return {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
330
|
+
calloutBlock: {
|
|
331
|
+
block_type: BlockType.CALLOUT,
|
|
332
|
+
block_id: calloutId,
|
|
333
|
+
children: textIds,
|
|
334
|
+
callout: { background_color: bg, border_color: border },
|
|
222
335
|
},
|
|
336
|
+
contentDescendants: textBlocks,
|
|
223
337
|
};
|
|
224
338
|
}
|
|
225
339
|
export function buildDividerBlock() {
|
|
@@ -228,13 +342,18 @@ export function buildDividerBlock() {
|
|
|
228
342
|
divider: {},
|
|
229
343
|
};
|
|
230
344
|
}
|
|
345
|
+
export function buildImageBlock(imageKey) {
|
|
346
|
+
return {
|
|
347
|
+
block_type: BlockType.IMAGE,
|
|
348
|
+
image: { token: imageKey },
|
|
349
|
+
};
|
|
350
|
+
}
|
|
231
351
|
/**
|
|
232
352
|
* 计算字符串显示宽度(中文算 2,英文算 1)
|
|
233
353
|
*/
|
|
234
354
|
function calculateTextWidth(text) {
|
|
235
355
|
let width = 0;
|
|
236
356
|
for (const char of text) {
|
|
237
|
-
// CJK 字符范围
|
|
238
357
|
if (/[\u4e00-\u9fff\u3000-\u303f\uff00-\uffef]/.test(char)) {
|
|
239
358
|
width += 2;
|
|
240
359
|
}
|
|
@@ -245,103 +364,144 @@ function calculateTextWidth(text) {
|
|
|
245
364
|
return width;
|
|
246
365
|
}
|
|
247
366
|
/**
|
|
248
|
-
*
|
|
367
|
+
* 构建表格 Descendants 结构
|
|
368
|
+
*
|
|
369
|
+
* 表格创建流程:
|
|
370
|
+
* 1. table.cells 是 string[](block ID 引用),不是 Block 对象
|
|
371
|
+
* 2. table_cell 是空壳容器 {},内容通过子块实现
|
|
372
|
+
* 3. 使用 Descendants API 一次性创建表格 + 单元格 + 单元格内容
|
|
249
373
|
*/
|
|
250
|
-
function buildTableCell(cell) {
|
|
251
|
-
const alignMap = {
|
|
252
|
-
left: AlignType.LEFT,
|
|
253
|
-
center: AlignType.CENTER,
|
|
254
|
-
right: AlignType.RIGHT,
|
|
255
|
-
};
|
|
256
|
-
const block = {
|
|
257
|
-
block_type: BlockType.TABLE_CELL,
|
|
258
|
-
text: { elements: parseInlineText(cell.content.trim()) },
|
|
259
|
-
};
|
|
260
|
-
// 添加对齐属性
|
|
261
|
-
if (cell.align && cell.align !== "left") {
|
|
262
|
-
block.property = { align: alignMap[cell.align] };
|
|
263
|
-
}
|
|
264
|
-
return block;
|
|
265
|
-
}
|
|
266
374
|
export function buildTableBlock(data) {
|
|
267
375
|
const { rows } = data;
|
|
376
|
+
const tableId = crypto.randomUUID();
|
|
268
377
|
if (rows.length === 0 || rows[0].length === 0) {
|
|
269
378
|
return {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
379
|
+
tableBlock: {
|
|
380
|
+
block_type: BlockType.TABLE,
|
|
381
|
+
block_id: tableId,
|
|
382
|
+
children: [],
|
|
383
|
+
table: {
|
|
384
|
+
property: { row_size: 0, column_size: 0, column_width: [] },
|
|
385
|
+
cells: [],
|
|
386
|
+
},
|
|
274
387
|
},
|
|
388
|
+
cellDescendants: [],
|
|
275
389
|
};
|
|
276
390
|
}
|
|
277
391
|
const rowSize = rows.length;
|
|
278
392
|
const columnSize = rows[0].length;
|
|
279
|
-
// 构建单元格和合并信息
|
|
280
|
-
const cells = [];
|
|
281
393
|
const mergeInfo = [];
|
|
282
394
|
// 追踪被合并的单元格位置
|
|
283
395
|
const mergedCells = new Set();
|
|
396
|
+
// 生成所有单元格的 descendants
|
|
397
|
+
const cellDescendants = [];
|
|
398
|
+
const cellIds = [];
|
|
284
399
|
for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
|
|
285
400
|
for (let colIndex = 0; colIndex < rows[rowIndex].length; colIndex++) {
|
|
286
401
|
const cell = rows[rowIndex][colIndex];
|
|
287
402
|
const key = `${rowIndex}-${colIndex}`;
|
|
288
|
-
//
|
|
289
|
-
if (mergedCells.has(key))
|
|
403
|
+
// 跳过被合并的单元格(仍然占位在 cells[] 中)
|
|
404
|
+
if (mergedCells.has(key)) {
|
|
405
|
+
cellIds.push(`${tableId}-cell-${rowIndex}-${colIndex}`);
|
|
406
|
+
// 被合并的单元格仍然需要创建 table_cell(占位)
|
|
407
|
+
cellDescendants.push({
|
|
408
|
+
block_type: BlockType.TABLE_CELL,
|
|
409
|
+
block_id: `${tableId}-cell-${rowIndex}-${colIndex}`,
|
|
410
|
+
children: [],
|
|
411
|
+
table_cell: {},
|
|
412
|
+
});
|
|
290
413
|
continue;
|
|
414
|
+
}
|
|
415
|
+
const cellId = `${tableId}-cell-${rowIndex}-${colIndex}`;
|
|
416
|
+
const textId = `${cellId}-txt`;
|
|
417
|
+
cellIds.push(cellId);
|
|
291
418
|
// 处理合并
|
|
292
419
|
if (cell.merge && (cell.merge.colspan > 1 || cell.merge.rowspan > 1)) {
|
|
293
|
-
const colspan = cell.merge.colspan || 1;
|
|
294
|
-
const rowspan = cell.merge.rowspan || 1;
|
|
295
420
|
mergeInfo.push({
|
|
296
|
-
row_span: rowspan,
|
|
297
|
-
col_span: colspan,
|
|
298
|
-
row_index: rowIndex,
|
|
299
|
-
col_index: colIndex,
|
|
421
|
+
row_span: cell.merge.rowspan || 1,
|
|
422
|
+
col_span: cell.merge.colspan || 1,
|
|
300
423
|
});
|
|
301
424
|
// 标记被合并的单元格
|
|
302
|
-
for (let r = rowIndex; r < rowIndex + rowspan && r < rows.length; r++) {
|
|
303
|
-
for (let c = colIndex; c < colIndex + colspan && c < rows[r].length; c++) {
|
|
425
|
+
for (let r = rowIndex; r < rowIndex + (cell.merge.rowspan || 1) && r < rows.length; r++) {
|
|
426
|
+
for (let c = colIndex; c < colIndex + (cell.merge.colspan || 1) && c < rows[r].length; c++) {
|
|
304
427
|
if (r !== rowIndex || c !== colIndex) {
|
|
305
428
|
mergedCells.add(`${r}-${c}`);
|
|
306
429
|
}
|
|
307
430
|
}
|
|
308
431
|
}
|
|
309
432
|
}
|
|
310
|
-
|
|
433
|
+
// table_cell 容器
|
|
434
|
+
cellDescendants.push({
|
|
435
|
+
block_type: BlockType.TABLE_CELL,
|
|
436
|
+
block_id: cellId,
|
|
437
|
+
children: [textId],
|
|
438
|
+
table_cell: {},
|
|
439
|
+
});
|
|
440
|
+
// 单元格文本内容
|
|
441
|
+
cellDescendants.push({
|
|
442
|
+
block_type: BlockType.TEXT,
|
|
443
|
+
block_id: textId,
|
|
444
|
+
text: { elements: parseInlineText(cell.content.trim()) },
|
|
445
|
+
});
|
|
311
446
|
}
|
|
312
447
|
}
|
|
313
|
-
//
|
|
448
|
+
// 计算每列最大宽度(基于总可用宽度 720px 按比例分配)
|
|
449
|
+
const TOTAL_WIDTH = 720;
|
|
450
|
+
const MIN_COL_WIDTH = 60;
|
|
314
451
|
const columnWidths = [];
|
|
452
|
+
const columnTextWidths = [];
|
|
315
453
|
for (let colIndex = 0; colIndex < columnSize; colIndex++) {
|
|
316
|
-
let
|
|
454
|
+
let maxTextWidth = 0;
|
|
317
455
|
for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
|
|
318
456
|
if (colIndex < rows[rowIndex].length) {
|
|
319
457
|
const cell = rows[rowIndex][colIndex];
|
|
320
458
|
const width = calculateTextWidth(cell.content);
|
|
321
|
-
// 考虑合并单元格的宽度
|
|
322
459
|
const colspan = cell.merge?.colspan || 1;
|
|
323
460
|
if (colspan === 1) {
|
|
324
|
-
|
|
461
|
+
maxTextWidth = Math.max(maxTextWidth, width);
|
|
325
462
|
}
|
|
326
463
|
}
|
|
327
464
|
}
|
|
328
|
-
|
|
465
|
+
columnTextWidths.push(Math.max(maxTextWidth, 3)); // 最少 3 个字符宽度
|
|
466
|
+
}
|
|
467
|
+
// 按比例分配总宽度
|
|
468
|
+
const totalTextWidth = columnTextWidths.reduce((sum, w) => sum + w, 0);
|
|
469
|
+
if (totalTextWidth === 0) {
|
|
470
|
+
// 所有列为空时均分宽度
|
|
471
|
+
const equalWidth = Math.max(Math.floor(TOTAL_WIDTH / columnTextWidths.length), MIN_COL_WIDTH);
|
|
472
|
+
for (let i = 0; i < columnTextWidths.length; i++) {
|
|
473
|
+
columnWidths.push(equalWidth);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
for (const textWidth of columnTextWidths) {
|
|
478
|
+
const proportional = Math.round((textWidth / totalTextWidth) * TOTAL_WIDTH);
|
|
479
|
+
columnWidths.push(Math.max(proportional, MIN_COL_WIDTH));
|
|
480
|
+
}
|
|
329
481
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
482
|
+
// 如果总宽度超出 TOTAL_WIDTH(由 MIN_COL_WIDTH 导致),按比例缩减
|
|
483
|
+
const totalAllocated = columnWidths.reduce((sum, w) => sum + w, 0);
|
|
484
|
+
if (totalAllocated > TOTAL_WIDTH) {
|
|
485
|
+
for (let i = 0; i < columnWidths.length; i++) {
|
|
486
|
+
columnWidths[i] = Math.max(Math.round(columnWidths[i] * TOTAL_WIDTH / totalAllocated), MIN_COL_WIDTH);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
return {
|
|
490
|
+
tableBlock: {
|
|
491
|
+
block_type: BlockType.TABLE,
|
|
492
|
+
block_id: tableId,
|
|
493
|
+
children: cellIds,
|
|
494
|
+
table: {
|
|
495
|
+
property: {
|
|
496
|
+
row_size: rowSize,
|
|
497
|
+
column_size: columnSize,
|
|
498
|
+
column_width: columnWidths,
|
|
499
|
+
...(mergeInfo.length > 0 ? { merge_info: mergeInfo } : {}),
|
|
500
|
+
},
|
|
501
|
+
cells: cellIds,
|
|
337
502
|
},
|
|
338
|
-
cells,
|
|
339
503
|
},
|
|
504
|
+
cellDescendants,
|
|
340
505
|
};
|
|
341
|
-
// 添加合并信息
|
|
342
|
-
if (mergeInfo.length > 0) {
|
|
343
|
-
tableBlock.table.merge_info = mergeInfo;
|
|
344
|
-
}
|
|
345
|
-
return tableBlock;
|
|
346
506
|
}
|
|
347
507
|
//# sourceMappingURL=builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/format/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/format/builder.ts"],"names":[],"mappings":"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"}
|