larkcc 0.4.0 → 0.6.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 (56) hide show
  1. package/CHANGELOG.md +61 -12
  2. package/README.md +188 -27
  3. package/dist/agent.d.ts +2 -1
  4. package/dist/agent.js +189 -38
  5. package/dist/agent.js.map +1 -1
  6. package/dist/app.js +14 -5
  7. package/dist/app.js.map +1 -1
  8. package/dist/cardkit.d.ts +125 -0
  9. package/dist/cardkit.js +448 -0
  10. package/dist/cardkit.js.map +1 -0
  11. package/dist/config.d.ts +23 -3
  12. package/dist/config.js +43 -47
  13. package/dist/config.js.map +1 -1
  14. package/dist/feishu.d.ts +50 -4
  15. package/dist/feishu.js +287 -97
  16. package/dist/feishu.js.map +1 -1
  17. package/dist/format/builder.d.ts +126 -37
  18. package/dist/format/builder.js +276 -116
  19. package/dist/format/builder.js.map +1 -1
  20. package/dist/format/card-optimize.d.ts +42 -0
  21. package/dist/format/card-optimize.js +74 -0
  22. package/dist/format/card-optimize.js.map +1 -0
  23. package/dist/format/constants.d.ts +80 -9
  24. package/dist/format/constants.js +140 -53
  25. package/dist/format/constants.js.map +1 -1
  26. package/dist/format/document.d.ts +4 -2
  27. package/dist/format/document.js +57 -35
  28. package/dist/format/document.js.map +1 -1
  29. package/dist/format/duration.d.ts +24 -0
  30. package/dist/format/duration.js +72 -0
  31. package/dist/format/duration.js.map +1 -0
  32. package/dist/format/guide.d.ts +19 -0
  33. package/dist/format/guide.js +201 -0
  34. package/dist/format/guide.js.map +1 -0
  35. package/dist/format/image-resolver.d.ts +31 -0
  36. package/dist/format/image-resolver.js +202 -0
  37. package/dist/format/image-resolver.js.map +1 -0
  38. package/dist/format/index.d.ts +8 -3
  39. package/dist/format/index.js +8 -2
  40. package/dist/format/index.js.map +1 -1
  41. package/dist/format/parser.d.ts +16 -0
  42. package/dist/format/parser.js +26 -12
  43. package/dist/format/parser.js.map +1 -1
  44. package/dist/format/sanitize.d.ts +3 -0
  45. package/dist/format/sanitize.js +16 -7
  46. package/dist/format/sanitize.js.map +1 -1
  47. package/dist/format/thinking.d.ts +29 -0
  48. package/dist/format/thinking.js +50 -0
  49. package/dist/format/thinking.js.map +1 -0
  50. package/dist/resources/format-guide.md +109 -0
  51. package/dist/streaming.d.ts +83 -0
  52. package/dist/streaming.js +301 -0
  53. package/dist/streaming.js.map +1 -0
  54. package/dist/version.d.ts +1 -1
  55. package/dist/version.js +1 -1
  56. package/package.json +5 -4
@@ -1,85 +1,178 @@
1
1
  /**
2
2
  * 飞书文档块构建器
3
+ *
4
+ * 所有数据结构严格对齐 @larksuiteoapi/node-sdk 类型定义
3
5
  */
4
- import { BlockType, CalloutColors, LanguageMap, ColorNameMap, AlignType } from "./constants.js";
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
- * 支持颜色名称(red)和十六进制(#FF0000)
31
+ * 将 Hex 颜色值近似匹配到飞书 FontColor 枚举
32
+ * 通过 HSL 色相区间分配到最近的 7 种颜色
9
33
  */
10
- function parseColorValue(value) {
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
- const hex = trimmed.toUpperCase();
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
- return ColorNameMap[trimmed] || null;
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 = parseColorValue(colorMatch[1]);
139
+ const color = parseCssToFontColor(colorMatch[1]);
38
140
  if (color)
39
141
  result.textColor = color;
40
142
  else
41
- console.warn(`⚠️ [format] 无效颜色值: "${colorMatch[1]}",已忽略`);
143
+ console.warn(`⚠️ [format] 无法映射颜色值: "${colorMatch[1]}"`);
42
144
  }
43
145
  if (bgColorMatch) {
44
- const color = parseColorValue(bgColorMatch[1]);
146
+ const color = parseCssToFontBgColor(bgColorMatch[1]);
45
147
  if (color)
46
148
  result.bgColor = color;
47
149
  else
48
- console.warn(`⚠️ [format] 无效背景色值: "${bgColorMatch[1]}",已忽略`);
150
+ console.warn(`⚠️ [format] 无法映射背景色值: "${bgColorMatch[1]}"`);
49
151
  }
50
152
  return result;
51
153
  }
154
+ // ── 内联格式解析 ───────────────────────────────────────────────────
52
155
  /**
53
156
  * 解析内联 Markdown 和 HTML 格式
54
- * 支持:
55
- * - **bold**、*italic*、`code`、[link](url)、~~strikethrough~~
56
- * - <u>underline</u>
57
- * - <span style="color:red">colored text</span>
58
- * - <span style="background-color:yellow">highlighted text</span>
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]) }, underline: true };
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 content = unescape(match[2]);
102
- element = { text_run: { content } };
194
+ const style = {};
103
195
  if (colors.textColor)
104
- element.text_color = colors.textColor;
196
+ style.text_color = colors.textColor;
105
197
  if (colors.bgColor)
106
- element.background_color = colors.bgColor;
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]) }, bold: true };
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]) }, italic: true };
206
+ element = { text_run: { content: unescape(match[1] || match[2]), text_element_style: { italic: true } } };
113
207
  break;
114
208
  case "code":
115
- element = { inline_code: { content: match[1] } };
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]) }, strikethrough: true };
212
+ element = { text_run: { content: unescape(match[1]), text_element_style: { strikethrough: true } } };
119
213
  break;
120
214
  case "link":
121
- element = { link: { text_run: { content: unescape(match[1]) }, href: match[2] } };
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
- return elements;
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: { content: latex },
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 color = CalloutColors[type] || CalloutColors.NOTE;
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
- block_type: BlockType.CALLOUT,
219
- callout: {
220
- style: { background_color: color },
221
- elements: parseInlineText(content),
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
- * 构建表格单元格 Block
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
- block_type: BlockType.TABLE,
271
- table: {
272
- property: { row_size: 0, column_size: 0, column_width: [] },
273
- cells: [],
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
- cells.push(buildTableCell(cell));
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 maxWidth = 50; // 最小宽度
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
- maxWidth = Math.max(maxWidth, Math.min(width * 10 + 20, 300));
461
+ maxTextWidth = Math.max(maxTextWidth, width);
325
462
  }
326
463
  }
327
464
  }
328
- columnWidths.push(maxWidth);
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
- const tableBlock = {
331
- block_type: BlockType.TABLE,
332
- table: {
333
- property: {
334
- row_size: rowSize,
335
- column_size: columnSize,
336
- column_width: columnWidths,
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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"}