@hyebook/vue3-adapter 2.3.2 → 2.3.4

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.
@@ -399,12 +399,35 @@ export class PlayerEngine {
399
399
  return this.doc.pages.findIndex((page) => page.id === pageId);
400
400
  }
401
401
  normalizeRange(range) {
402
- const safeStart = Math.max(0, Math.floor(range.start || 0));
403
- const safeEnd = Math.max(0, Math.floor(range.end || 0));
402
+ const safeStart = Math.max(0, Math.floor(range?.start || 0));
403
+ const safeEnd = Math.max(0, Math.floor(range?.end || 0));
404
404
  return safeStart <= safeEnd
405
405
  ? { start: safeStart, end: safeEnd }
406
406
  : { start: safeEnd, end: safeStart };
407
407
  }
408
+ normalizeSegments(segments) {
409
+ if (!Array.isArray(segments) || !segments.length) {
410
+ return undefined;
411
+ }
412
+ const normalized = segments
413
+ .map((segment) => {
414
+ const pageId = typeof segment?.pageId === "string" ? segment.pageId : "";
415
+ const blockId = typeof segment?.blockId === "string" ? segment.blockId : "";
416
+ if (!pageId || !blockId) {
417
+ return null;
418
+ }
419
+ return {
420
+ pageId,
421
+ blockId,
422
+ range: this.normalizeRange(segment?.range),
423
+ ...(segment?.selectedText !== undefined
424
+ ? { selectedText: String(segment.selectedText) }
425
+ : {}),
426
+ };
427
+ })
428
+ .filter((segment) => segment !== null);
429
+ return normalized.length ? normalized : undefined;
430
+ }
408
431
  normalizeAnnotations(annotations, bookId) {
409
432
  const now = Date.now();
410
433
  const highlights = Array.isArray(annotations?.highlights)
@@ -419,13 +442,16 @@ export class PlayerEngine {
419
442
  const fallbackId = `highlight-${Date.now()}-${index}`;
420
443
  const createdAt = toTimestamp(item.createdAt, now);
421
444
  const updatedAt = toTimestamp(item.updatedAt, createdAt);
445
+ const segments = this.normalizeSegments(item.segments);
446
+ const firstSegment = segments?.[0];
422
447
  return {
423
448
  ...clone(item),
424
449
  id: item.id || fallbackId,
425
450
  bookId: item.bookId || bookId || "",
426
- pageId: item.pageId || "",
427
- blockId: item.blockId || "preview-flow-text",
428
- range: this.normalizeRange(item.range),
451
+ pageId: item.pageId || firstSegment?.pageId || "",
452
+ blockId: item.blockId || firstSegment?.blockId || "preview-flow-text",
453
+ range: this.normalizeRange(item.range || firstSegment?.range),
454
+ ...(segments ? { segments } : {}),
429
455
  createdAt,
430
456
  updatedAt,
431
457
  };
@@ -434,13 +460,17 @@ export class PlayerEngine {
434
460
  const fallbackId = `note-${Date.now()}-${index}`;
435
461
  const createdAt = toTimestamp(item.createdAt, now);
436
462
  const updatedAt = toTimestamp(item.updatedAt, createdAt);
463
+ const segments = this.normalizeSegments(item.segments);
464
+ const firstSegment = segments?.[0];
465
+ const resolvedRange = item.range || firstSegment?.range;
437
466
  return {
438
467
  ...clone(item),
439
468
  id: item.id || fallbackId,
440
469
  bookId: item.bookId || bookId || "",
441
- pageId: item.pageId || "",
442
- blockId: item.blockId || "preview-flow-text",
443
- ...(item.range ? { range: this.normalizeRange(item.range) } : {}),
470
+ pageId: item.pageId || firstSegment?.pageId || "",
471
+ blockId: item.blockId || firstSegment?.blockId || "preview-flow-text",
472
+ ...(resolvedRange ? { range: this.normalizeRange(resolvedRange) } : {}),
473
+ ...(segments ? { segments } : {}),
444
474
  content: item.content || "",
445
475
  createdAt,
446
476
  updatedAt,
@@ -9,6 +9,12 @@ export interface ReaderProgress {
9
9
  zoom: number;
10
10
  updatedAt: number;
11
11
  }
12
+ export interface ReaderAnnotationSegment {
13
+ pageId: string;
14
+ blockId: string;
15
+ range: ReaderRange;
16
+ selectedText?: string;
17
+ }
12
18
  export interface ReaderNote {
13
19
  id: string;
14
20
  bookId: string;
@@ -17,6 +23,8 @@ export interface ReaderNote {
17
23
  range?: ReaderRange;
18
24
  content: string;
19
25
  color?: string;
26
+ selectedText?: string;
27
+ segments?: ReaderAnnotationSegment[];
20
28
  createdAt: number;
21
29
  updatedAt: number;
22
30
  }
@@ -28,6 +36,7 @@ export interface ReaderHighlight {
28
36
  range: ReaderRange;
29
37
  selectedText?: string;
30
38
  color?: string;
39
+ segments?: ReaderAnnotationSegment[];
31
40
  createdAt: number;
32
41
  updatedAt: number;
33
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"player.d.ts","sourceRoot":"","sources":["../../../../../core/src/types/player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"player.d.ts","sourceRoot":"","sources":["../../../../../core/src/types/player.ts"],"names":[],"mappings":"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"}
@@ -41,9 +41,13 @@ export interface EditorWorkbenchExtensionActionButton {
41
41
  export interface EditorWorkbenchExtensionOptions {
42
42
  actions?: EditorWorkbenchExtensionActionButton[];
43
43
  }
44
+ export type EditorWorkbenchDebugLevel = "info" | "warn" | "error";
44
45
  export interface EditorWorkbenchDebugOptions {
45
46
  enabled?: boolean;
46
47
  prefix?: string;
48
+ level?: EditorWorkbenchDebugLevel;
49
+ groups?: string[];
50
+ includeWordImportSource?: boolean;
47
51
  }
48
52
  export interface EditorWorkbenchPreviewAnnotationActions {
49
53
  canDelete?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"editor-workbench.d.ts","sourceRoot":"","sources":["../../../../../core/src/workbench/editor-workbench.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor-workbench.d.ts","sourceRoot":"","sources":["../../../../../core/src/workbench/editor-workbench.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,12 @@ const WORKBENCH_STYLE_ID = "hy-ebook-workbench-style";
4
4
  const WORKBENCH_STYLE_VERSION = "0.3.0";
5
5
  const WORKBENCH_CSS = `
6
6
  .hyewb-root{font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;color:#0f172a;background:#f8fbff;border:1px solid #d8e0ea;border-radius:12px;padding:12px;display:grid;gap:10px;position:relative;--hyewb-top-shield-height:0px}
7
- .hyewb-root::before{content:"";position:absolute;left:0;right:0;top:0;height:var(--hyewb-top-shield-height);background:#f8fbff;z-index:119500;pointer-events:none}
7
+ .hyewb-root::before{content:"";position:absolute;left:0;right:0;top:0;height:var(--hyewb-top-shield-height);background:#f8fbff;z-index:10030;pointer-events:none}
8
8
  .hyewb-header{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
9
9
  .hyewb-title{font-size:14px;font-weight:600}
10
10
  .hyewb-header-actions{margin-left:auto;display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
11
11
  .hyewb-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
12
- .hyewb-top-control{position:relative;z-index:120000;background:#f8fbff;isolation:isolate}
12
+ .hyewb-top-control{position:relative;z-index:10040;background:#f8fbff;isolation:isolate}
13
13
  .hyewb-btn{border:1px solid #94a3b8;background:#fff;color:#0f172a;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;width:34px;height:34px;flex:0 0 auto}
14
14
  .hyewb-btn.hyewb-btn-text{width:auto;min-width:96px;padding:0 12px}
15
15
  .hyewb-header-action-btn{height:34px}
@@ -33,7 +33,7 @@ const WORKBENCH_CSS = `
33
33
  .hyewb-preview-layout.with-annotation-panel{grid-template-columns:minmax(0,1fr) 300px}
34
34
  .hyewb-canvas{position:relative;background:#fff;border:1px solid #d9e3ee;border-radius:8px;min-height:420px;padding:20px 24px;box-shadow:0 6px 16px rgba(15,23,42,.08);margin:16px auto;max-width:100%;box-sizing:border-box;}
35
35
  .hyewb-editor{min-height:360px;outline:none;line-height:1.7;font-size:16px;color:#1e293b}
36
- .hyewb-float{position:fixed;z-index:9999;display:none;align-items:center;gap:6px;padding:6px 8px;border-radius:10px;border:1px solid #0f172a;background:rgba(15,23,42,.96);box-shadow:0 10px 24px rgba(15,23,42,.22)}
36
+ .hyewb-float{position:fixed;z-index:10070;display:none;align-items:center;gap:6px;padding:6px 8px;border-radius:10px;border:1px solid #0f172a;background:rgba(15,23,42,.96);box-shadow:0 10px 24px rgba(15,23,42,.22)}
37
37
  .hyewb-float.show{display:inline-flex}
38
38
  .hyewb-float .hyewb-btn{border-color:#334155;background:#1e293b;color:#f8fafc;width:30px;height:30px}
39
39
  .hyewb-float .hyewb-btn:hover{background:#334155}
@@ -138,7 +138,7 @@ const WORKBENCH_CSS = `
138
138
  .hyewb-media-handle[data-handle="w"]{left:-6px;top:calc(50% - 5px);cursor:ew-resize}
139
139
  .hyewb-media-list{margin:0;padding-left:18px;color:#334155;font-size:13px;display:grid;gap:4px}
140
140
  .hyewb-status{font-size:12px;color:#475569}
141
- .hyewb-upload-backdrop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.45);z-index:10020;padding:16px}
141
+ .hyewb-upload-backdrop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.45);z-index:10100;padding:16px}
142
142
  .hyewb-upload-backdrop.show{display:flex}
143
143
  .hyewb-upload-dialog{position:relative;width:min(520px,100%);background:#fff;border:1px solid #cbd5e1;border-radius:12px;padding:14px;display:grid;gap:10px;box-shadow:0 16px 34px rgba(15,23,42,.28)}
144
144
  .hyewb-upload-title{font-size:14px;font-weight:600;color:#0f172a}
@@ -147,7 +147,7 @@ const WORKBENCH_CSS = `
147
147
  .hyewb-upload-progress{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden}
148
148
  .hyewb-upload-progress > span{display:block;height:100%;width:0;background:#0b7285;transition:width .18s ease}
149
149
  .hyewb-upload-error{min-height:18px;font-size:12px;color:#b91c1c;margin:0}
150
- .hyewb-preview-note-backdrop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.45);z-index:10080;padding:16px}
150
+ .hyewb-preview-note-backdrop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.45);z-index:10110;padding:16px}
151
151
  .hyewb-preview-note-backdrop.show{display:flex}
152
152
  .hyewb-preview-note-dialog{width:min(520px,100%);background:#fff;border:1px solid #cbd5e1;border-radius:12px;padding:14px;display:grid;gap:10px;box-shadow:0 16px 34px rgba(15,23,42,.28)}
153
153
  .hyewb-preview-note-title{margin:0;font-size:14px;font-weight:600;color:#0f172a}
@@ -171,7 +171,7 @@ const WORKBENCH_CSS = `
171
171
  .hyewb-preview-annotation-item:hover .hyewb-preview-annotation-delete{opacity:1;pointer-events:auto}
172
172
  .hyewb-preview-annotation-delete svg{width:14px;height:14px}
173
173
  .hyewb-preview-annotation-empty{margin:0;color:#64748b;font-size:13px}
174
- .hyewb-preview-selection-toolbar{position:fixed;z-index:10060;display:none;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;border:1px solid #0f172a;background:rgba(15,23,42,.96);box-shadow:0 10px 24px rgba(15,23,42,.22);transform:translate(-50%,-100%)}
174
+ .hyewb-preview-selection-toolbar{position:fixed;z-index:10070;display:none;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;border:1px solid #0f172a;background:rgba(15,23,42,.96);box-shadow:0 10px 24px rgba(15,23,42,.22);transform:translate(-50%,-100%)}
175
175
  .hyewb-preview-selection-toolbar.show{display:inline-flex}
176
176
  .hyewb-preview-selection-btn{width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid #334155;background:#1e293b;color:#f8fafc;border-radius:8px;cursor:pointer}
177
177
  .hyewb-preview-selection-btn:hover{background:#334155}
@@ -425,20 +425,6 @@ export function createDefaultWorkbenchDocument() {
425
425
  },
426
426
  ],
427
427
  },
428
- {
429
- id: "page-2",
430
- index: 1,
431
- blocks: [
432
- {
433
- id: "video-1",
434
- type: "video",
435
- rect: { x: 80, y: 80, width: 520, height: 300 },
436
- zIndex: 1,
437
- src: "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
438
- controls: true,
439
- },
440
- ],
441
- },
442
428
  ],
443
429
  };
444
430
  }
@@ -572,11 +558,11 @@ export function mountEditorWorkbench(container, options = {}) {
572
558
  bgColorInput.append(bgColorChip);
573
559
  const lineHeightSelect = document.createElement("select");
574
560
  lineHeightSelect.className = "hyewb-select";
575
- ["1.2", "1.4", "1.6", "1.8", "2"].forEach((value) => {
561
+ ["1.0", "1.15", "1.5", "2.0", "2.5", "3.0"].forEach((value) => {
576
562
  const optionNode = document.createElement("option");
577
563
  optionNode.value = value;
578
564
  optionNode.textContent = value;
579
- if (value === "1.6") {
565
+ if (value === "1.5") {
580
566
  optionNode.selected = true;
581
567
  }
582
568
  lineHeightSelect.append(optionNode);
@@ -897,20 +883,66 @@ export function mountEditorWorkbench(container, options = {}) {
897
883
  const status = document.createElement("p");
898
884
  status.className = "hyewb-status";
899
885
  status.textContent = "已加载默认编辑器能力";
886
+ const debugConfig = typeof options.debug === "object" && options.debug !== null
887
+ ? options.debug
888
+ : undefined;
900
889
  const debugEnabled = options.debug === true ||
901
- (typeof options.debug === "object" &&
902
- options.debug !== null &&
903
- options.debug.enabled !== false);
904
- const debugPrefix = typeof options.debug === "object" &&
905
- options.debug !== null &&
906
- options.debug.prefix
907
- ? options.debug.prefix
908
- : "[hyebook:workbench]";
909
- const debugLog = (message) => {
890
+ Boolean(debugConfig && debugConfig.enabled !== false);
891
+ const debugPrefix = debugConfig?.prefix || "[hyebook:workbench]";
892
+ const normalizeDebugLevel = (level) => {
893
+ if (level === "warn" || level === "error") {
894
+ return level;
895
+ }
896
+ return "info";
897
+ };
898
+ const debugLevel = normalizeDebugLevel(debugConfig?.level);
899
+ const debugLevelRank = {
900
+ info: 1,
901
+ warn: 2,
902
+ error: 3,
903
+ };
904
+ const debugGroups = Array.isArray(debugConfig?.groups) && debugConfig.groups.length
905
+ ? new Set(debugConfig.groups
906
+ .map((group) => String(group || "").trim())
907
+ .filter(Boolean))
908
+ : null;
909
+ const shouldLogDebugGroup = (group) => {
910
+ if (!debugGroups || !debugGroups.size || !group) {
911
+ return true;
912
+ }
913
+ return debugGroups.has(group);
914
+ };
915
+ const debugLog = (message, logOptions) => {
910
916
  if (!debugEnabled) {
911
917
  return;
912
918
  }
913
- console.log(`${debugPrefix} ${message}`);
919
+ const level = normalizeDebugLevel(logOptions?.level);
920
+ if (debugLevelRank[level] < debugLevelRank[debugLevel]) {
921
+ return;
922
+ }
923
+ if (!shouldLogDebugGroup(logOptions?.group)) {
924
+ return;
925
+ }
926
+ const scopedPrefix = logOptions?.group
927
+ ? `${debugPrefix}:${logOptions.group}`
928
+ : debugPrefix;
929
+ const messageText = `${scopedPrefix} ${message}`;
930
+ if (logOptions &&
931
+ Object.prototype.hasOwnProperty.call(logOptions, "payload")) {
932
+ console[level](messageText, logOptions.payload);
933
+ return;
934
+ }
935
+ console[level](messageText);
936
+ };
937
+ const wordImportSourceLoggingEnabled = debugEnabled && (debugConfig?.includeWordImportSource ?? true);
938
+ const debugWordImport = (message, logOptions) => {
939
+ if (!wordImportSourceLoggingEnabled) {
940
+ return;
941
+ }
942
+ debugLog(message, {
943
+ ...logOptions,
944
+ group: logOptions?.group || "word-import",
945
+ });
914
946
  };
915
947
  let lastDebugStatusMessage = "";
916
948
  const flushDebugStatus = () => {
@@ -919,7 +951,7 @@ export function mountEditorWorkbench(container, options = {}) {
919
951
  return;
920
952
  }
921
953
  lastDebugStatusMessage = nextMessage;
922
- debugLog(nextMessage);
954
+ debugLog(nextMessage, { group: "status" });
923
955
  };
924
956
  const statusObserver = debugEnabled && typeof MutationObserver !== "undefined"
925
957
  ? new MutationObserver(() => {
@@ -1356,28 +1388,77 @@ export function mountEditorWorkbench(container, options = {}) {
1356
1388
  }
1357
1389
  };
1358
1390
  const importDocxFile = async (file) => {
1391
+ const maxSize = options.importDocx?.maxSizeBytes;
1392
+ debugWordImport("收到 Word 导入请求", {
1393
+ group: "word-import-file",
1394
+ payload: {
1395
+ fileName: file.name,
1396
+ mimeType: file.type || "",
1397
+ sizeBytes: file.size,
1398
+ maxSizeBytes: maxSize ?? null,
1399
+ },
1400
+ });
1359
1401
  const isDocx = isDocxMime(file.type) || file.name.toLowerCase().endsWith(".docx");
1360
1402
  if (!isDocx) {
1403
+ debugWordImport("文件校验失败:非 docx", {
1404
+ level: "warn",
1405
+ group: "word-import-file",
1406
+ });
1361
1407
  status.textContent = "仅支持导入 .docx 文件";
1362
1408
  return;
1363
1409
  }
1364
- const maxSize = options.importDocx?.maxSizeBytes;
1365
1410
  if (maxSize && file.size > maxSize) {
1411
+ debugWordImport("文件校验失败:超过大小限制", {
1412
+ level: "warn",
1413
+ group: "word-import-file",
1414
+ payload: {
1415
+ sizeBytes: file.size,
1416
+ maxSizeBytes: maxSize,
1417
+ },
1418
+ });
1366
1419
  status.textContent = `Word 文件大小不能超过 ${Math.round(maxSize / 1024 / 1024)}MB`;
1367
1420
  return;
1368
1421
  }
1369
1422
  status.textContent = `正在导入 Word:${file.name}`;
1370
1423
  let imageUploadIndex = 0;
1424
+ let importRoute = "ooxml";
1425
+ const xmlSourceInfo = createDocxXmlParseDebugInfo();
1371
1426
  try {
1372
1427
  const mammothNamespace = await import("mammoth");
1373
1428
  const mammothModule = resolveMammothModule(mammothNamespace);
1374
1429
  const arrayBuffer = await file.arrayBuffer();
1375
- const xmlPreferredFlowBlocks = await parseDocxFlowBlocksFromXml(arrayBuffer, resolveDocxImportMaxFlowBlockWidth(state.doc.settings.page, paperWidth));
1430
+ debugWordImport("文件已读取为 ArrayBuffer", {
1431
+ group: "word-import-file",
1432
+ payload: {
1433
+ byteLength: arrayBuffer.byteLength,
1434
+ },
1435
+ });
1436
+ const xmlPreferredFlowBlocks = await parseDocxFlowBlocksFromXml(arrayBuffer, resolveDocxImportMaxFlowBlockWidth(state.doc.settings.page, paperWidth), xmlSourceInfo);
1437
+ debugWordImport("OOXML 源信息摘要", {
1438
+ group: "word-import-xml",
1439
+ payload: xmlSourceInfo,
1440
+ });
1376
1441
  if (xmlPreferredFlowBlocks?.length) {
1442
+ debugWordImport("命中 OOXML 高保真解析路径", {
1443
+ group: "word-import-result",
1444
+ payload: {
1445
+ route: "ooxml",
1446
+ flowBlockCount: xmlPreferredFlowBlocks.length,
1447
+ paragraphCount: xmlSourceInfo.paragraphCount,
1448
+ tableCount: xmlSourceInfo.tableCount,
1449
+ },
1450
+ });
1377
1451
  syncEditorToDoc();
1378
1452
  const nextDoc = clone(state.doc);
1379
1453
  const page = getCurrentPage(nextDoc, state.pageIndex);
1380
1454
  if (!page) {
1455
+ debugWordImport("导入失败:当前页不存在", {
1456
+ level: "error",
1457
+ group: "word-import-result",
1458
+ payload: {
1459
+ route: "ooxml",
1460
+ },
1461
+ });
1381
1462
  status.textContent = "当前页面不存在,导入失败";
1382
1463
  return;
1383
1464
  }
@@ -1385,9 +1466,31 @@ export function mountEditorWorkbench(container, options = {}) {
1385
1466
  nextDoc.meta.updatedAt = new Date().toISOString();
1386
1467
  editorRenderKey = "";
1387
1468
  updateStateDoc(nextDoc, "Word 导入成功(高保真文本样式)");
1469
+ debugWordImport("Word 导入成功", {
1470
+ group: "word-import-result",
1471
+ payload: {
1472
+ route: "ooxml",
1473
+ flowBlockCount: xmlPreferredFlowBlocks.length,
1474
+ },
1475
+ });
1388
1476
  return;
1389
1477
  }
1478
+ importRoute = "mammoth";
1479
+ debugWordImport("OOXML 结果为空,回退到 Mammoth 路径", {
1480
+ level: "warn",
1481
+ group: "word-import-xml",
1482
+ payload: {
1483
+ reason: xmlSourceInfo.error || "OOXML parser returned empty result",
1484
+ },
1485
+ });
1390
1486
  const defaultTextStyle = await extractDocxDefaultTextStyle(arrayBuffer);
1487
+ debugWordImport("默认文本样式提取结果", {
1488
+ group: "word-import-mammoth",
1489
+ payload: {
1490
+ hasDefaultTextStyle: Boolean(defaultTextStyle),
1491
+ defaultTextStyle: defaultTextStyle || null,
1492
+ },
1493
+ });
1391
1494
  const result = await mammothModule.convertToHtml({ arrayBuffer }, {
1392
1495
  convertImage: mammothModule.images.imgElement(async (image) => {
1393
1496
  const imageUploader = ensureMediaUploader("image");
@@ -1400,23 +1503,72 @@ export function mountEditorWorkbench(container, options = {}) {
1400
1503
  const contentType = normalizeDocxImageMime(image.contentType) || "image/png";
1401
1504
  const extension = fileExtensionByMime(contentType);
1402
1505
  const imageFile = base64ToFile(base64, contentType, `docx-image-${Date.now()}-${imageUploadIndex}.${extension}`);
1506
+ debugWordImport("开始上传内嵌图片", {
1507
+ group: "word-import-mammoth",
1508
+ payload: {
1509
+ index: imageUploadIndex,
1510
+ contentType,
1511
+ fileName: imageFile.name,
1512
+ sizeBytes: imageFile.size,
1513
+ },
1514
+ });
1403
1515
  const uploadResult = await uploadMediaFile(imageFile, "image", (percent) => {
1404
1516
  status.textContent = `第 ${imageUploadIndex} 张图片上传中:${formatUploadProgress(percent)}%`;
1405
1517
  });
1406
1518
  if (!uploadResult?.url) {
1407
1519
  throw new Error(`第 ${imageUploadIndex} 张图片上传成功但未返回可用地址`);
1408
1520
  }
1521
+ debugWordImport("内嵌图片上传完成", {
1522
+ group: "word-import-mammoth",
1523
+ payload: {
1524
+ index: imageUploadIndex,
1525
+ url: uploadResult.url,
1526
+ },
1527
+ });
1409
1528
  return {
1410
1529
  src: uploadResult.url,
1411
1530
  alt: uploadResult.alt || imageFile.name,
1412
1531
  };
1413
1532
  }),
1414
1533
  });
1534
+ const mammothMessages = result.messages || [];
1535
+ if (mammothMessages.length) {
1536
+ debugWordImport("Mammoth 兼容性提示", {
1537
+ level: "warn",
1538
+ group: "word-import-mammoth",
1539
+ payload: mammothMessages.map((item, index) => ({
1540
+ index: index + 1,
1541
+ type: item.type,
1542
+ message: item.message,
1543
+ })),
1544
+ });
1545
+ }
1546
+ else {
1547
+ debugWordImport("Mammoth 未返回兼容性提示", {
1548
+ group: "word-import-mammoth",
1549
+ });
1550
+ }
1415
1551
  const flowBlocks = parseRichHTMLToFlowBlocks(result.value || "", defaultTextStyle);
1552
+ debugWordImport("Mammoth HTML 已转换为 FlowBlocks", {
1553
+ group: "word-import-result",
1554
+ payload: {
1555
+ route: importRoute,
1556
+ flowBlockCount: flowBlocks.length,
1557
+ compatibilityMessageCount: mammothMessages.length,
1558
+ embeddedImageCount: imageUploadIndex,
1559
+ },
1560
+ });
1416
1561
  syncEditorToDoc();
1417
1562
  const nextDoc = clone(state.doc);
1418
1563
  const page = getCurrentPage(nextDoc, state.pageIndex);
1419
1564
  if (!page) {
1565
+ debugWordImport("导入失败:当前页不存在", {
1566
+ level: "error",
1567
+ group: "word-import-result",
1568
+ payload: {
1569
+ route: importRoute,
1570
+ },
1571
+ });
1420
1572
  status.textContent = "当前页面不存在,导入失败";
1421
1573
  return;
1422
1574
  }
@@ -1424,11 +1576,31 @@ export function mountEditorWorkbench(container, options = {}) {
1424
1576
  nextDoc.meta.updatedAt = new Date().toISOString();
1425
1577
  editorRenderKey = "";
1426
1578
  updateStateDoc(nextDoc, "Word 导入成功");
1427
- if (result.messages?.length) {
1428
- status.textContent = `Word 导入成功(${result.messages.length} 条兼容性提示)`;
1429
- }
1579
+ if (mammothMessages.length) {
1580
+ status.textContent = `Word 导入成功(${mammothMessages.length} 条兼容性提示)`;
1581
+ }
1582
+ debugWordImport("Word 导入成功", {
1583
+ group: "word-import-result",
1584
+ payload: {
1585
+ route: importRoute,
1586
+ flowBlockCount: flowBlocks.length,
1587
+ compatibilityMessageCount: mammothMessages.length,
1588
+ embeddedImageCount: imageUploadIndex,
1589
+ },
1590
+ });
1430
1591
  }
1431
1592
  catch (error) {
1593
+ const errorMessage = error instanceof Error ? error.message : String(error);
1594
+ debugWordImport("Word 导入失败", {
1595
+ level: "error",
1596
+ group: "word-import-result",
1597
+ payload: {
1598
+ route: importRoute,
1599
+ embeddedImageCount: imageUploadIndex,
1600
+ error: errorMessage,
1601
+ xmlSourceInfo,
1602
+ },
1603
+ });
1432
1604
  status.textContent =
1433
1605
  error instanceof Error
1434
1606
  ? `Word 导入失败:${error.message}`
@@ -5716,25 +5888,89 @@ function resolveMammothModule(namespace) {
5716
5888
  const candidate = namespace?.default ?? namespace;
5717
5889
  return candidate;
5718
5890
  }
5719
- async function parseDocxFlowBlocksFromXml(arrayBuffer, maxFlowBlockWidth) {
5891
+ function createDocxXmlParseDebugInfo() {
5892
+ return {
5893
+ archiveLoaded: false,
5894
+ hasDocumentXml: false,
5895
+ hasStylesXml: false,
5896
+ hasThemeXml: false,
5897
+ paragraphCount: 0,
5898
+ tableCount: 0,
5899
+ blockCount: 0,
5900
+ };
5901
+ }
5902
+ function countDocxBodyNodeKinds(documentXml) {
5903
+ const parser = new DOMParser();
5904
+ const documentDoc = parser.parseFromString(documentXml, "application/xml");
5905
+ const body = findDescendantByLocalName(documentDoc.documentElement, "body");
5906
+ if (!body) {
5907
+ return {
5908
+ paragraphCount: 0,
5909
+ tableCount: 0,
5910
+ };
5911
+ }
5912
+ let paragraphCount = 0;
5913
+ let tableCount = 0;
5914
+ for (const child of Array.from(body.children)) {
5915
+ const name = xmlLocalName(child);
5916
+ if (name === "p") {
5917
+ paragraphCount += 1;
5918
+ continue;
5919
+ }
5920
+ if (name === "tbl") {
5921
+ tableCount += 1;
5922
+ }
5923
+ }
5924
+ return {
5925
+ paragraphCount,
5926
+ tableCount,
5927
+ };
5928
+ }
5929
+ async function parseDocxFlowBlocksFromXml(arrayBuffer, maxFlowBlockWidth, debugInfo) {
5720
5930
  try {
5721
5931
  const archive = await loadDocxArchive(arrayBuffer);
5722
5932
  if (!archive) {
5933
+ if (debugInfo) {
5934
+ debugInfo.error = "DOCX archive load failed";
5935
+ }
5723
5936
  return undefined;
5724
5937
  }
5725
- const documentXml = await archive
5726
- .file("word/document.xml")
5727
- ?.async("string");
5938
+ const documentEntry = archive.file("word/document.xml");
5939
+ const stylesEntry = archive.file("word/styles.xml");
5940
+ const themeEntry = archive.file("word/theme/theme1.xml");
5941
+ if (debugInfo) {
5942
+ debugInfo.archiveLoaded = true;
5943
+ debugInfo.hasDocumentXml = Boolean(documentEntry);
5944
+ debugInfo.hasStylesXml = Boolean(stylesEntry);
5945
+ debugInfo.hasThemeXml = Boolean(themeEntry);
5946
+ }
5947
+ const documentXml = await documentEntry?.async("string");
5728
5948
  if (!documentXml) {
5949
+ if (debugInfo) {
5950
+ debugInfo.error = "word/document.xml missing or empty";
5951
+ }
5729
5952
  return undefined;
5730
5953
  }
5731
- const stylesXml = await archive.file("word/styles.xml")?.async("string");
5732
- const themeXml = await archive
5733
- .file("word/theme/theme1.xml")
5734
- ?.async("string");
5735
- return parseDocxBodyToFlowBlocks(documentXml, stylesXml, themeXml, maxFlowBlockWidth);
5954
+ if (debugInfo) {
5955
+ const counts = countDocxBodyNodeKinds(documentXml);
5956
+ debugInfo.paragraphCount = counts.paragraphCount;
5957
+ debugInfo.tableCount = counts.tableCount;
5958
+ }
5959
+ const stylesXml = await stylesEntry?.async("string");
5960
+ const themeXml = await themeEntry?.async("string");
5961
+ const blocks = parseDocxBodyToFlowBlocks(documentXml, stylesXml, themeXml, maxFlowBlockWidth);
5962
+ if (debugInfo) {
5963
+ debugInfo.blockCount = blocks?.length || 0;
5964
+ if (!blocks?.length && !debugInfo.error) {
5965
+ debugInfo.error = "OOXML parser returned no flow blocks";
5966
+ }
5967
+ }
5968
+ return blocks;
5736
5969
  }
5737
- catch {
5970
+ catch (error) {
5971
+ if (debugInfo) {
5972
+ debugInfo.error = error instanceof Error ? error.message : String(error);
5973
+ }
5738
5974
  return undefined;
5739
5975
  }
5740
5976
  }