@harbour-enterprises/superdoc 0.24.0-next.3 → 0.24.0-next.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.
Files changed (72) hide show
  1. package/dist/chunks/{PdfViewer-DEWI6Uts.es.js → PdfViewer-D7C8g2G4.es.js} +1 -1
  2. package/dist/chunks/{PdfViewer-skWUtg2N.cjs → PdfViewer-kOVuv-4I.cjs} +1 -1
  3. package/dist/chunks/blank-docx-ABm6XYAA.es.js +4 -0
  4. package/dist/chunks/blank-docx-DfW3Eeh2.cjs +3 -0
  5. package/dist/chunks/{index-2QL0aZ2S.cjs → index-BFKwBQjS.cjs} +12 -4
  6. package/dist/chunks/{index-C_AMhrHP.es.js → index-CnEAVnHQ.es.js} +12 -4
  7. package/dist/chunks/{super-editor.es-CfK_qBM9.cjs → super-editor.es-BmGTQ05x.cjs} +1010 -859
  8. package/dist/chunks/{super-editor.es-iMAoOYOw.es.js → super-editor.es-CBPoWvjs.es.js} +1010 -859
  9. package/dist/core/SuperDoc.d.ts.map +1 -1
  10. package/dist/core/types/index.d.ts.map +1 -1
  11. package/dist/style.css +27 -27
  12. package/dist/super-editor/ai-writer.es.js +2 -2
  13. package/dist/super-editor/chunks/{converter-BueCftlx.js → converter-DpPj67OW.js} +916 -863
  14. package/dist/super-editor/chunks/{docx-zipper-C9jmfWYZ.js → docx-zipper-6Kc95yG-.js} +1 -1
  15. package/dist/super-editor/chunks/{editor-BsuNqVvp.js → editor-Dx6AhT5N.js} +124 -6
  16. package/dist/super-editor/chunks/{toolbar-DxhfgAoa.js → toolbar-CXSg2lJ9.js} +2 -2
  17. package/dist/super-editor/converter.es.js +1 -1
  18. package/dist/super-editor/docx-zipper.es.js +2 -2
  19. package/dist/super-editor/editor.es.js +3 -3
  20. package/dist/super-editor/file-zipper.es.js +1 -1
  21. package/dist/super-editor/super-editor/src/core/Editor.d.ts +11 -0
  22. package/dist/super-editor/super-editor/src/core/helpers/canRenderFont.d.ts +12 -0
  23. package/dist/super-editor/super-editor/src/core/super-converter/SuperConverter.d.ts +6 -1
  24. package/dist/super-editor/super-editor/src/core/super-converter/helpers.d.ts +1 -1
  25. package/dist/super-editor/super-editor/src/core/super-converter/v2/importer/docxImporter.d.ts +2 -1
  26. package/dist/super-editor/super-editor/src/core/super-converter/v2/importer/tableImporter.d.ts +5 -3
  27. package/dist/super-editor/super-editor/src/core/super-converter/v2/importer/types/index.d.ts +4 -0
  28. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/utils.d.ts +9 -0
  29. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/gridSpan/gridSpan-translator.d.ts +6 -0
  30. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/gridSpan/index.d.ts +1 -0
  31. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/header/header-translator.d.ts +6 -0
  32. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/header/index.d.ts +1 -0
  33. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/headers/headers-translator.d.ts +7 -0
  34. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/headers/index.d.ts +1 -0
  35. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/hideMark/hideMark-translator.d.ts +6 -0
  36. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/hideMark/index.d.ts +1 -0
  37. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/noWrap/index.d.ts +1 -0
  38. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/noWrap/noWrap-translator.d.ts +6 -0
  39. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/shd/shd-translator.d.ts +1 -1
  40. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tc/helpers/translate-table-cell.d.ts +0 -5
  41. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcBorders/index.d.ts +1 -0
  42. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcBorders/tcBorders-translator.d.ts +6 -0
  43. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcFitText/index.d.ts +1 -0
  44. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcFitText/tcFitText-translator.d.ts +6 -0
  45. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcMar/index.d.ts +1 -0
  46. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcMar/tcMar-translator.d.ts +6 -0
  47. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcPr/index.d.ts +1 -0
  48. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcPr/tcPr-translator.d.ts +5 -0
  49. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcW/index.d.ts +1 -0
  50. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcW/tcW-translator.d.ts +6 -0
  51. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/textDirection/index.d.ts +1 -0
  52. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/textDirection/textDirection-translator.d.ts +6 -0
  53. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tl2br/index.d.ts +1 -0
  54. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tl2br/tl2br-translator.d.ts +6 -0
  55. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tr2bl/index.d.ts +1 -0
  56. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tr2bl/tr2bl-translator.d.ts +6 -0
  57. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/vAlign/index.d.ts +1 -0
  58. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/vAlign/vAlign-translator.d.ts +6 -0
  59. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/vMerge/index.d.ts +1 -0
  60. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/vMerge/vMerge-translator.d.ts +6 -0
  61. package/dist/super-editor/super-editor/src/extensions/table-cell/table-cell.d.ts +112 -0
  62. package/dist/super-editor/super-editor.es.js +91 -76
  63. package/dist/super-editor/toolbar.es.js +2 -2
  64. package/dist/super-editor.cjs +1 -1
  65. package/dist/super-editor.es.js +1 -1
  66. package/dist/superdoc.cjs +3 -3
  67. package/dist/superdoc.es.js +3 -3
  68. package/dist/superdoc.umd.js +1020 -861
  69. package/dist/superdoc.umd.js.map +1 -1
  70. package/package.json +1 -1
  71. package/dist/chunks/blank-docx-CPqX9RF5.cjs +0 -3
  72. package/dist/chunks/blank-docx-iwdyG9RH.es.js +0 -4
@@ -15129,9 +15129,9 @@ function pixelsToEmu(px) {
15129
15129
  if (typeof px === "string") px = parseFloat(px);
15130
15130
  return Math.round(px * 9525);
15131
15131
  }
15132
- function eigthPointsToPixels(eigthPoints) {
15133
- if (eigthPoints == null) return;
15134
- const points = parseFloat(eigthPoints) / 8;
15132
+ function eighthPointsToPixels(eighthPoints) {
15133
+ if (eighthPoints == null) return;
15134
+ const points = parseFloat(eighthPoints) / 8;
15135
15135
  const pixels = points * 1.3333;
15136
15136
  return pixels;
15137
15137
  }
@@ -24535,37 +24535,37 @@ const _NodeTranslator = class _NodeTranslator2 {
24535
24535
  };
24536
24536
  __publicField$2(_NodeTranslator, "translatorTypes", TranslatorTypes);
24537
24537
  let NodeTranslator = _NodeTranslator;
24538
- const encode$1e = (attributes) => {
24538
+ const encode$1b = (attributes) => {
24539
24539
  return attributes["w:type"];
24540
24540
  };
24541
- const decode$16 = (attrs) => {
24541
+ const decode$13 = (attrs) => {
24542
24542
  const { lineBreakType } = attrs;
24543
24543
  return lineBreakType;
24544
24544
  };
24545
24545
  const attrConfig$G = Object.freeze({
24546
24546
  xmlName: "w:type",
24547
24547
  sdName: "lineBreakType",
24548
- encode: encode$1e,
24549
- decode: decode$16
24548
+ encode: encode$1b,
24549
+ decode: decode$13
24550
24550
  });
24551
- const encode$1d = (attributes) => {
24551
+ const encode$1a = (attributes) => {
24552
24552
  const xmlAttrValue = attributes["w:clear"];
24553
24553
  return xmlAttrValue;
24554
24554
  };
24555
- const decode$15 = (attrs) => {
24555
+ const decode$12 = (attrs) => {
24556
24556
  const { clear } = attrs;
24557
24557
  return clear;
24558
24558
  };
24559
24559
  const attrConfig$F = Object.freeze({
24560
24560
  xmlName: "w:clear",
24561
24561
  sdName: "clear",
24562
- encode: encode$1d,
24563
- decode: decode$15
24562
+ encode: encode$1a,
24563
+ decode: decode$12
24564
24564
  });
24565
24565
  const validXmlAttributes$p = [attrConfig$G, attrConfig$F];
24566
- const XML_NODE_NAME$B = "w:br";
24566
+ const XML_NODE_NAME$y = "w:br";
24567
24567
  const SD_NODE_NAME$h = "lineBreak";
24568
- const encode$1c = (_2, encodedAttrs) => {
24568
+ const encode$19 = (_2, encodedAttrs) => {
24569
24569
  const isPageBreak = encodedAttrs?.lineBreakType === "page";
24570
24570
  const translated = {
24571
24571
  type: isPageBreak ? "hardBreak" : "lineBreak"
@@ -24575,7 +24575,7 @@ const encode$1c = (_2, encodedAttrs) => {
24575
24575
  }
24576
24576
  return translated;
24577
24577
  };
24578
- const decode$14 = (params2, decodedAttrs) => {
24578
+ const decode$11 = (params2, decodedAttrs) => {
24579
24579
  const { node } = params2;
24580
24580
  if (!node) return;
24581
24581
  const wBreak = { name: "w:br" };
@@ -24592,39 +24592,39 @@ const decode$14 = (params2, decodedAttrs) => {
24592
24592
  };
24593
24593
  return translated;
24594
24594
  };
24595
- const config$y = {
24596
- xmlName: XML_NODE_NAME$B,
24595
+ const config$x = {
24596
+ xmlName: XML_NODE_NAME$y,
24597
24597
  sdNodeOrKeyName: SD_NODE_NAME$h,
24598
24598
  type: NodeTranslator.translatorTypes.NODE,
24599
- encode: encode$1c,
24600
- decode: decode$14,
24599
+ encode: encode$19,
24600
+ decode: decode$11,
24601
24601
  attributes: validXmlAttributes$p
24602
24602
  };
24603
- const translator$1c = NodeTranslator.from(config$y);
24604
- const encode$1b = (attributes) => attributes?.["w:val"];
24605
- const decode$13 = (attrs) => attrs?.highlight;
24603
+ const translator$1r = NodeTranslator.from(config$x);
24604
+ const encode$18 = (attributes) => attributes?.["w:val"];
24605
+ const decode$10 = (attrs) => attrs?.highlight;
24606
24606
  const attrConfig$E = Object.freeze({
24607
24607
  xmlName: "w:val",
24608
24608
  sdName: "highlight",
24609
- encode: encode$1b,
24610
- decode: decode$13
24609
+ encode: encode$18,
24610
+ decode: decode$10
24611
24611
  });
24612
24612
  const validXmlAttributes$o = [attrConfig$E];
24613
- const XML_NODE_NAME$A = "w:highlight";
24614
- const SD_ATTR_KEY$i = "highlight";
24613
+ const XML_NODE_NAME$x = "w:highlight";
24614
+ const SD_ATTR_KEY$f = "highlight";
24615
24615
  const DISABLED_TOKENS = /* @__PURE__ */ new Set(["transparent", "none", "inherit"]);
24616
- const encode$1a = (params2, encodedAttrs = {}) => {
24616
+ const encode$17 = (params2, encodedAttrs = {}) => {
24617
24617
  const { nodes } = params2;
24618
24618
  const node = nodes?.[0];
24619
24619
  const value = encodedAttrs.highlight ?? node?.attributes?.["w:val"];
24620
24620
  return {
24621
24621
  type: "attr",
24622
- xmlName: XML_NODE_NAME$A,
24623
- sdNodeOrKeyName: SD_ATTR_KEY$i,
24622
+ xmlName: XML_NODE_NAME$x,
24623
+ sdNodeOrKeyName: SD_ATTR_KEY$f,
24624
24624
  attributes: { "w:val": value ?? null }
24625
24625
  };
24626
24626
  };
24627
- const decode$12 = (params2) => {
24627
+ const decode$$ = (params2) => {
24628
24628
  const attrs = params2?.node?.attrs || {};
24629
24629
  const highlightValue = attrs.highlight ?? attrs.color ?? null;
24630
24630
  if (!highlightValue) return void 0;
@@ -24632,14 +24632,14 @@ const decode$12 = (params2) => {
24632
24632
  if (!normalizedValue) return void 0;
24633
24633
  if (DISABLED_TOKENS.has(normalizedValue)) {
24634
24634
  return {
24635
- name: XML_NODE_NAME$A,
24635
+ name: XML_NODE_NAME$x,
24636
24636
  attributes: { "w:val": "none" }
24637
24637
  };
24638
24638
  }
24639
24639
  const keyword = getDocxHighlightKeywordFromHex(highlightValue);
24640
24640
  if (keyword) {
24641
24641
  return {
24642
- name: XML_NODE_NAME$A,
24642
+ name: XML_NODE_NAME$x,
24643
24643
  attributes: { "w:val": keyword }
24644
24644
  };
24645
24645
  }
@@ -24654,63 +24654,63 @@ const decode$12 = (params2) => {
24654
24654
  }
24655
24655
  };
24656
24656
  };
24657
- const config$x = {
24658
- xmlName: XML_NODE_NAME$A,
24659
- sdNodeOrKeyName: SD_ATTR_KEY$i,
24657
+ const config$w = {
24658
+ xmlName: XML_NODE_NAME$x,
24659
+ sdNodeOrKeyName: SD_ATTR_KEY$f,
24660
24660
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
24661
- encode: encode$1a,
24662
- decode: decode$12,
24661
+ encode: encode$17,
24662
+ decode: decode$$,
24663
24663
  attributes: validXmlAttributes$o
24664
24664
  };
24665
- const translator$1b = NodeTranslator.from(config$x);
24666
- const encode$19 = (attributes) => {
24665
+ const translator$1q = NodeTranslator.from(config$w);
24666
+ const encode$16 = (attributes) => {
24667
24667
  return attributes["w:val"];
24668
24668
  };
24669
- const decode$11 = (attrs) => {
24669
+ const decode$_ = (attrs) => {
24670
24670
  const { tabSize } = attrs || {};
24671
24671
  return tabSize;
24672
24672
  };
24673
24673
  const attrConfig$D = Object.freeze({
24674
24674
  xmlName: "w:val",
24675
24675
  sdName: "tabSize",
24676
- encode: encode$19,
24677
- decode: decode$11
24676
+ encode: encode$16,
24677
+ decode: decode$_
24678
24678
  });
24679
- const encode$18 = (attributes) => {
24679
+ const encode$15 = (attributes) => {
24680
24680
  return attributes["w:leader"];
24681
24681
  };
24682
- const decode$10 = (attrs) => {
24682
+ const decode$Z = (attrs) => {
24683
24683
  const { leader } = attrs || {};
24684
24684
  return leader;
24685
24685
  };
24686
24686
  const attrConfig$C = Object.freeze({
24687
24687
  xmlName: "w:leader",
24688
24688
  sdName: "leader",
24689
- encode: encode$18,
24690
- decode: decode$10
24689
+ encode: encode$15,
24690
+ decode: decode$Z
24691
24691
  });
24692
- const encode$17 = (attributes) => {
24692
+ const encode$14 = (attributes) => {
24693
24693
  return attributes["w:pos"];
24694
24694
  };
24695
- const decode$$ = (attrs) => {
24695
+ const decode$Y = (attrs) => {
24696
24696
  const { pos } = attrs || {};
24697
24697
  return pos;
24698
24698
  };
24699
24699
  const attrConfig$B = Object.freeze({
24700
24700
  xmlName: "w:pos",
24701
24701
  sdName: "pos",
24702
- encode: encode$17,
24703
- decode: decode$$
24702
+ encode: encode$14,
24703
+ decode: decode$Y
24704
24704
  });
24705
24705
  const validXmlAttributes$n = [attrConfig$D, attrConfig$B, attrConfig$C];
24706
- const XML_NODE_NAME$z = "w:tab";
24706
+ const XML_NODE_NAME$w = "w:tab";
24707
24707
  const SD_NODE_NAME$g = "tab";
24708
- const encode$16 = (_2, encodedAttrs = {}) => {
24708
+ const encode$13 = (_2, encodedAttrs = {}) => {
24709
24709
  const translated = { type: "tab" };
24710
24710
  if (encodedAttrs) translated.attrs = { ...encodedAttrs };
24711
24711
  return translated;
24712
24712
  };
24713
- const decode$_ = (params2, decodedAttrs = {}) => {
24713
+ const decode$X = (params2, decodedAttrs = {}) => {
24714
24714
  const { node } = params2 || {};
24715
24715
  if (!node) return;
24716
24716
  const wTab = { name: "w:tab" };
@@ -24726,15 +24726,15 @@ const decode$_ = (params2, decodedAttrs = {}) => {
24726
24726
  }
24727
24727
  return translated;
24728
24728
  };
24729
- const config$w = {
24730
- xmlName: XML_NODE_NAME$z,
24729
+ const config$v = {
24730
+ xmlName: XML_NODE_NAME$w,
24731
24731
  sdNodeOrKeyName: SD_NODE_NAME$g,
24732
24732
  type: NodeTranslator.translatorTypes.NODE,
24733
- encode: encode$16,
24734
- decode: decode$_,
24733
+ encode: encode$13,
24734
+ decode: decode$X,
24735
24735
  attributes: validXmlAttributes$n
24736
24736
  };
24737
- const translator$1a = NodeTranslator.from(config$w);
24737
+ const translator$1p = NodeTranslator.from(config$v);
24738
24738
  const mergeTextNodes = (nodes) => {
24739
24739
  if (!nodes || !Array.isArray(nodes)) {
24740
24740
  return nodes;
@@ -24960,9 +24960,9 @@ const parseParagraphBorders = (pBdr) => {
24960
24960
  const { attributes: a } = el;
24961
24961
  if (a["w:val"] === "nil" || a["w:val"] === void 0) return;
24962
24962
  let sizePx;
24963
- if (a["w:sz"] !== void 0) sizePx = eigthPointsToPixels(a["w:sz"]);
24963
+ if (a["w:sz"] !== void 0) sizePx = eighthPointsToPixels(a["w:sz"]);
24964
24964
  let spacePx;
24965
- if (a["w:space"] !== void 0) spacePx = eigthPointsToPixels(a["w:space"]);
24965
+ if (a["w:space"] !== void 0) spacePx = eighthPointsToPixels(a["w:space"]);
24966
24966
  result[side] = {
24967
24967
  val: a["w:val"],
24968
24968
  size: sizePx,
@@ -25252,89 +25252,89 @@ const handleParagraphNode$1 = (params2) => {
25252
25252
  }
25253
25253
  return schemaNode;
25254
25254
  };
25255
- const encode$15 = (attributes) => {
25255
+ const encode$12 = (attributes) => {
25256
25256
  return attributes["w:rsidDel"];
25257
25257
  };
25258
- const decode$Z = (attrs) => {
25258
+ const decode$W = (attrs) => {
25259
25259
  return attrs.rsidDel;
25260
25260
  };
25261
25261
  const attrConfig$A = Object.freeze({
25262
25262
  xmlName: "w:rsidDel",
25263
25263
  sdName: "rsidDel",
25264
- encode: encode$15,
25265
- decode: decode$Z
25264
+ encode: encode$12,
25265
+ decode: decode$W
25266
25266
  });
25267
- const encode$14 = (attributes) => {
25267
+ const encode$11 = (attributes) => {
25268
25268
  return attributes["w:rsidP"];
25269
25269
  };
25270
- const decode$Y = (attrs) => {
25270
+ const decode$V = (attrs) => {
25271
25271
  return attrs.rsidP;
25272
25272
  };
25273
25273
  const attrConfig$z = Object.freeze({
25274
25274
  xmlName: "w:rsidP",
25275
25275
  sdName: "rsidP",
25276
- encode: encode$14,
25277
- decode: decode$Y
25276
+ encode: encode$11,
25277
+ decode: decode$V
25278
25278
  });
25279
- const encode$13 = (attributes) => {
25279
+ const encode$10 = (attributes) => {
25280
25280
  return attributes["w:rsidR"];
25281
25281
  };
25282
- const decode$X = (attrs) => {
25282
+ const decode$U = (attrs) => {
25283
25283
  return attrs.rsidR;
25284
25284
  };
25285
25285
  const attrConfig$y = Object.freeze({
25286
25286
  xmlName: "w:rsidR",
25287
25287
  sdName: "rsidR",
25288
- encode: encode$13,
25289
- decode: decode$X
25288
+ encode: encode$10,
25289
+ decode: decode$U
25290
25290
  });
25291
- const encode$12 = (attributes) => {
25291
+ const encode$$ = (attributes) => {
25292
25292
  return attributes["w:rsidRPr"];
25293
25293
  };
25294
- const decode$W = (attrs) => {
25294
+ const decode$T = (attrs) => {
25295
25295
  return attrs.rsidRPr;
25296
25296
  };
25297
25297
  const attrConfig$x = Object.freeze({
25298
25298
  xmlName: "w:rsidRPr",
25299
25299
  sdName: "rsidRPr",
25300
- encode: encode$12,
25301
- decode: decode$W
25300
+ encode: encode$$,
25301
+ decode: decode$T
25302
25302
  });
25303
- const encode$11 = (attributes) => {
25303
+ const encode$_ = (attributes) => {
25304
25304
  return attributes["w:rsidRDefault"];
25305
25305
  };
25306
- const decode$V = (attrs) => {
25306
+ const decode$S = (attrs) => {
25307
25307
  return attrs.rsidRDefault;
25308
25308
  };
25309
25309
  const attrConfig$w = Object.freeze({
25310
25310
  xmlName: "w:rsidRDefault",
25311
25311
  sdName: "rsidRDefault",
25312
- encode: encode$11,
25313
- decode: decode$V
25312
+ encode: encode$_,
25313
+ decode: decode$S
25314
25314
  });
25315
- const encode$10 = (attributes) => {
25315
+ const encode$Z = (attributes) => {
25316
25316
  return attributes["w14:paraId"];
25317
25317
  };
25318
- const decode$U = (attrs) => {
25318
+ const decode$R = (attrs) => {
25319
25319
  return attrs.paraId;
25320
25320
  };
25321
25321
  const attrConfig$v = Object.freeze({
25322
25322
  xmlName: "w14:paraId",
25323
25323
  sdName: "paraId",
25324
- encode: encode$10,
25325
- decode: decode$U
25324
+ encode: encode$Z,
25325
+ decode: decode$R
25326
25326
  });
25327
- const encode$$ = (attributes) => {
25327
+ const encode$Y = (attributes) => {
25328
25328
  return attributes["w14:textId"];
25329
25329
  };
25330
- const decode$T = (attrs) => {
25330
+ const decode$Q = (attrs) => {
25331
25331
  return attrs.textId;
25332
25332
  };
25333
25333
  const attrConfig$u = Object.freeze({
25334
25334
  xmlName: "w14:textId",
25335
25335
  sdName: "textId",
25336
- encode: encode$$,
25337
- decode: decode$T
25336
+ encode: encode$Y,
25337
+ decode: decode$Q
25338
25338
  });
25339
25339
  const validXmlAttributes$m = [
25340
25340
  attrConfig$v,
@@ -25345,9 +25345,9 @@ const validXmlAttributes$m = [
25345
25345
  attrConfig$x,
25346
25346
  attrConfig$A
25347
25347
  ];
25348
- const XML_NODE_NAME$y = "w:p";
25348
+ const XML_NODE_NAME$v = "w:p";
25349
25349
  const SD_NODE_NAME$f = "paragraph";
25350
- const encode$_ = (params2, encodedAttrs = {}) => {
25350
+ const encode$X = (params2, encodedAttrs = {}) => {
25351
25351
  const node = handleParagraphNode$1(params2);
25352
25352
  if (!node) return void 0;
25353
25353
  if (encodedAttrs && Object.keys(encodedAttrs).length) {
@@ -25355,7 +25355,7 @@ const encode$_ = (params2, encodedAttrs = {}) => {
25355
25355
  }
25356
25356
  return node;
25357
25357
  };
25358
- const decode$S = (params2, decodedAttrs = {}) => {
25358
+ const decode$P = (params2, decodedAttrs = {}) => {
25359
25359
  const translated = translateParagraphNode(params2);
25360
25360
  if (!translated) return void 0;
25361
25361
  if (decodedAttrs && Object.keys(decodedAttrs).length) {
@@ -25363,16 +25363,16 @@ const decode$S = (params2, decodedAttrs = {}) => {
25363
25363
  }
25364
25364
  return translated;
25365
25365
  };
25366
- const config$v = {
25367
- xmlName: XML_NODE_NAME$y,
25366
+ const config$u = {
25367
+ xmlName: XML_NODE_NAME$v,
25368
25368
  sdNodeOrKeyName: SD_NODE_NAME$f,
25369
25369
  type: NodeTranslator.translatorTypes.NODE,
25370
- encode: encode$_,
25371
- decode: decode$S,
25370
+ encode: encode$X,
25371
+ decode: decode$P,
25372
25372
  attributes: validXmlAttributes$m
25373
25373
  };
25374
- const translator$19 = NodeTranslator.from(config$v);
25375
- const encode$Z = (attributes) => {
25374
+ const translator$1o = NodeTranslator.from(config$u);
25375
+ const encode$W = (attributes) => {
25376
25376
  const raw = attributes?.["w:val"];
25377
25377
  if (raw === void 0 || raw === null) return void 0;
25378
25378
  if (typeof raw === "boolean") return raw;
@@ -25382,24 +25382,24 @@ const encode$Z = (attributes) => {
25382
25382
  if (val === "1" || val === "true" || val === "on") return true;
25383
25383
  return void 0;
25384
25384
  };
25385
- const decode$R = (runProps) => {
25385
+ const decode$O = (runProps) => {
25386
25386
  if (runProps?.bold === false) return "0";
25387
25387
  return void 0;
25388
25388
  };
25389
25389
  const attrConfig$t = Object.freeze({
25390
25390
  xmlName: "w:val",
25391
25391
  sdName: "bold",
25392
- encode: encode$Z,
25393
- decode: decode$R
25392
+ encode: encode$W,
25393
+ decode: decode$O
25394
25394
  });
25395
25395
  const validXmlAttributes$l = [attrConfig$t];
25396
- const XML_NODE_NAME$x = "w:b";
25397
- const SD_ATTR_KEY$h = "bold";
25398
- const encode$Y = (params2, encodedAttrs = {}) => {
25396
+ const XML_NODE_NAME$u = "w:b";
25397
+ const SD_ATTR_KEY$e = "bold";
25398
+ const encode$V = (params2, encodedAttrs = {}) => {
25399
25399
  const { nodes } = params2;
25400
25400
  const node = nodes[0];
25401
25401
  if (!node) return void 0;
25402
- const val = encodedAttrs?.[SD_ATTR_KEY$h];
25402
+ const val = encodedAttrs?.[SD_ATTR_KEY$e];
25403
25403
  let attributes;
25404
25404
  if (val === false) attributes = { "w:val": "0" };
25405
25405
  else if (val === true)
@@ -25407,85 +25407,85 @@ const encode$Y = (params2, encodedAttrs = {}) => {
25407
25407
  else attributes = node.attributes || {};
25408
25408
  return {
25409
25409
  type: "attr",
25410
- xmlName: XML_NODE_NAME$x,
25411
- sdNodeOrKeyName: SD_ATTR_KEY$h,
25410
+ xmlName: XML_NODE_NAME$u,
25411
+ sdNodeOrKeyName: SD_ATTR_KEY$e,
25412
25412
  attributes
25413
25413
  };
25414
25414
  };
25415
- const config$u = {
25416
- xmlName: XML_NODE_NAME$x,
25417
- sdNodeOrKeyName: SD_ATTR_KEY$h,
25415
+ const config$t = {
25416
+ xmlName: XML_NODE_NAME$u,
25417
+ sdNodeOrKeyName: SD_ATTR_KEY$e,
25418
25418
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25419
- encode: encode$Y,
25419
+ encode: encode$V,
25420
25420
  attributes: validXmlAttributes$l
25421
25421
  };
25422
- const translator$18 = NodeTranslator.from(config$u);
25423
- const XML_NODE_NAME$w = "w:i";
25424
- const SD_ATTR_KEY$g = "italic";
25425
- const encode$X = (params2) => {
25422
+ const translator$1n = NodeTranslator.from(config$t);
25423
+ const XML_NODE_NAME$t = "w:i";
25424
+ const SD_ATTR_KEY$d = "italic";
25425
+ const encode$U = (params2) => {
25426
25426
  const { nodes } = params2;
25427
25427
  const node = nodes?.[0];
25428
25428
  if (!node) return void 0;
25429
25429
  return {
25430
25430
  type: "attr",
25431
- xmlName: XML_NODE_NAME$w,
25432
- sdNodeOrKeyName: SD_ATTR_KEY$g,
25431
+ xmlName: XML_NODE_NAME$t,
25432
+ sdNodeOrKeyName: SD_ATTR_KEY$d,
25433
25433
  attributes: {
25434
25434
  "w:val": node.attributes?.["w:val"] ?? null
25435
25435
  }
25436
25436
  };
25437
25437
  };
25438
- const config$t = {
25439
- xmlName: XML_NODE_NAME$w,
25440
- sdNodeOrKeyName: SD_ATTR_KEY$g,
25438
+ const config$s = {
25439
+ xmlName: XML_NODE_NAME$t,
25440
+ sdNodeOrKeyName: SD_ATTR_KEY$d,
25441
25441
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25442
- encode: encode$X
25442
+ encode: encode$U
25443
25443
  };
25444
- const translator$17 = NodeTranslator.from(config$t);
25445
- const encode$W = (attributes) => attributes?.["w:val"];
25446
- const decode$Q = (attrs) => attrs?.underline;
25444
+ const translator$1m = NodeTranslator.from(config$s);
25445
+ const encode$T = (attributes) => attributes?.["w:val"];
25446
+ const decode$N = (attrs) => attrs?.underline;
25447
25447
  const attrConfig$s = Object.freeze({
25448
25448
  xmlName: "w:val",
25449
25449
  sdName: "underline",
25450
- encode: encode$W,
25451
- decode: decode$Q
25450
+ encode: encode$T,
25451
+ decode: decode$N
25452
25452
  });
25453
- const encode$V = (attributes) => attributes?.["w:color"];
25454
- const decode$P = (attrs) => attrs?.color;
25453
+ const encode$S = (attributes) => attributes?.["w:color"];
25454
+ const decode$M = (attrs) => attrs?.color;
25455
25455
  const attrConfig$r = Object.freeze({
25456
25456
  xmlName: "w:color",
25457
25457
  sdName: "color",
25458
- encode: encode$V,
25459
- decode: decode$P
25458
+ encode: encode$S,
25459
+ decode: decode$M
25460
25460
  });
25461
- const encode$U = (attributes) => attributes?.["w:themeColor"];
25462
- const decode$O = (attrs) => attrs?.themeColor;
25461
+ const encode$R = (attributes) => attributes?.["w:themeColor"];
25462
+ const decode$L = (attrs) => attrs?.themeColor;
25463
25463
  const attrConfig$q = Object.freeze({
25464
25464
  xmlName: "w:themeColor",
25465
25465
  sdName: "themeColor",
25466
- encode: encode$U,
25467
- decode: decode$O
25466
+ encode: encode$R,
25467
+ decode: decode$L
25468
25468
  });
25469
- const encode$T = (attributes) => attributes?.["w:themeTint"];
25470
- const decode$N = (attrs) => attrs?.themeTint;
25469
+ const encode$Q = (attributes) => attributes?.["w:themeTint"];
25470
+ const decode$K = (attrs) => attrs?.themeTint;
25471
25471
  const attrConfig$p = Object.freeze({
25472
25472
  xmlName: "w:themeTint",
25473
25473
  sdName: "themeTint",
25474
- encode: encode$T,
25475
- decode: decode$N
25474
+ encode: encode$Q,
25475
+ decode: decode$K
25476
25476
  });
25477
- const encode$S = (attributes) => attributes?.["w:themeShade"];
25478
- const decode$M = (attrs) => attrs?.themeShade;
25477
+ const encode$P = (attributes) => attributes?.["w:themeShade"];
25478
+ const decode$J = (attrs) => attrs?.themeShade;
25479
25479
  const attrConfig$o = Object.freeze({
25480
25480
  xmlName: "w:themeShade",
25481
25481
  sdName: "themeShade",
25482
- encode: encode$S,
25483
- decode: decode$M
25482
+ encode: encode$P,
25483
+ decode: decode$J
25484
25484
  });
25485
25485
  const validXmlAttributes$k = [attrConfig$s, attrConfig$r, attrConfig$q, attrConfig$p, attrConfig$o];
25486
- const XML_NODE_NAME$v = "w:u";
25487
- const SD_ATTR_KEY$f = "underline";
25488
- const encode$R = (params2, encodedAttrs = {}) => {
25486
+ const XML_NODE_NAME$s = "w:u";
25487
+ const SD_ATTR_KEY$c = "underline";
25488
+ const encode$O = (params2, encodedAttrs = {}) => {
25489
25489
  const { nodes } = params2;
25490
25490
  const node = nodes?.[0];
25491
25491
  const sourceAttrs = node?.attributes || {};
@@ -25501,12 +25501,12 @@ const encode$R = (params2, encodedAttrs = {}) => {
25501
25501
  if (themeShade !== void 0 && themeShade !== null) attributes["w:themeShade"] = themeShade;
25502
25502
  return {
25503
25503
  type: "attr",
25504
- xmlName: XML_NODE_NAME$v,
25505
- sdNodeOrKeyName: SD_ATTR_KEY$f,
25504
+ xmlName: XML_NODE_NAME$s,
25505
+ sdNodeOrKeyName: SD_ATTR_KEY$c,
25506
25506
  attributes
25507
25507
  };
25508
25508
  };
25509
- const decode$L = (params2) => {
25509
+ const decode$I = (params2) => {
25510
25510
  const attrs = params2?.node?.attrs || {};
25511
25511
  const underlineType = attrs.underlineType ?? attrs.underline ?? null;
25512
25512
  const color = attrs.underlineColor ?? attrs.color ?? null;
@@ -25524,20 +25524,20 @@ const decode$L = (params2) => {
25524
25524
  if (themeTint) attributes["w:themeTint"] = themeTint;
25525
25525
  if (themeShade) attributes["w:themeShade"] = themeShade;
25526
25526
  return {
25527
- name: XML_NODE_NAME$v,
25527
+ name: XML_NODE_NAME$s,
25528
25528
  attributes
25529
25529
  };
25530
25530
  };
25531
- const config$s = {
25532
- xmlName: XML_NODE_NAME$v,
25533
- sdNodeOrKeyName: SD_ATTR_KEY$f,
25531
+ const config$r = {
25532
+ xmlName: XML_NODE_NAME$s,
25533
+ sdNodeOrKeyName: SD_ATTR_KEY$c,
25534
25534
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25535
- encode: encode$R,
25536
- decode: decode$L,
25535
+ encode: encode$O,
25536
+ decode: decode$I,
25537
25537
  attributes: validXmlAttributes$k
25538
25538
  };
25539
- const translator$16 = NodeTranslator.from(config$s);
25540
- const encode$Q = (attributes) => {
25539
+ const translator$1l = NodeTranslator.from(config$r);
25540
+ const encode$N = (attributes) => {
25541
25541
  const raw = attributes?.["w:val"];
25542
25542
  if (raw === void 0 || raw === null) return void 0;
25543
25543
  if (typeof raw === "boolean") return raw;
@@ -25547,24 +25547,24 @@ const encode$Q = (attributes) => {
25547
25547
  if (val === "1" || val === "true" || val === "on") return true;
25548
25548
  return void 0;
25549
25549
  };
25550
- const decode$K = (attrs) => {
25550
+ const decode$H = (attrs) => {
25551
25551
  if (attrs?.strike === false) return "0";
25552
25552
  return void 0;
25553
25553
  };
25554
25554
  const attrConfig$n = Object.freeze({
25555
25555
  xmlName: "w:val",
25556
25556
  sdName: "strike",
25557
- encode: encode$Q,
25558
- decode: decode$K
25557
+ encode: encode$N,
25558
+ decode: decode$H
25559
25559
  });
25560
25560
  const validXmlAttributes$j = [attrConfig$n];
25561
- const XML_NODE_NAME$u = "w:strike";
25562
- const SD_ATTR_KEY$e = "strike";
25563
- const encode$P = (params2, encodedAttrs = {}) => {
25561
+ const XML_NODE_NAME$r = "w:strike";
25562
+ const SD_ATTR_KEY$b = "strike";
25563
+ const encode$M = (params2, encodedAttrs = {}) => {
25564
25564
  const { nodes } = params2;
25565
25565
  const node = nodes?.[0];
25566
25566
  if (!node) return void 0;
25567
- const val = encodedAttrs?.[SD_ATTR_KEY$e];
25567
+ const val = encodedAttrs?.[SD_ATTR_KEY$b];
25568
25568
  let attributes;
25569
25569
  if (val === false) attributes = { "w:val": "0" };
25570
25570
  else if (val === true) attributes = {};
@@ -25573,55 +25573,55 @@ const encode$P = (params2, encodedAttrs = {}) => {
25573
25573
  else if (val === true && attributes["w:val"] === void 0) delete attributes["w:val"];
25574
25574
  return {
25575
25575
  type: "attr",
25576
- xmlName: XML_NODE_NAME$u,
25577
- sdNodeOrKeyName: SD_ATTR_KEY$e,
25576
+ xmlName: XML_NODE_NAME$r,
25577
+ sdNodeOrKeyName: SD_ATTR_KEY$b,
25578
25578
  attributes
25579
25579
  };
25580
25580
  };
25581
- const config$r = {
25582
- xmlName: XML_NODE_NAME$u,
25583
- sdNodeOrKeyName: SD_ATTR_KEY$e,
25581
+ const config$q = {
25582
+ xmlName: XML_NODE_NAME$r,
25583
+ sdNodeOrKeyName: SD_ATTR_KEY$b,
25584
25584
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25585
- encode: encode$P,
25585
+ encode: encode$M,
25586
25586
  attributes: validXmlAttributes$j
25587
25587
  };
25588
- const translator$15 = NodeTranslator.from(config$r);
25589
- const encode$O = (attributes) => attributes?.["w:val"];
25590
- const decode$J = (attrs) => attrs?.color;
25588
+ const translator$1k = NodeTranslator.from(config$q);
25589
+ const encode$L = (attributes) => attributes?.["w:val"];
25590
+ const decode$G = (attrs) => attrs?.color;
25591
25591
  const attrConfig$m = Object.freeze({
25592
25592
  xmlName: "w:val",
25593
25593
  sdName: "color",
25594
- encode: encode$O,
25595
- decode: decode$J
25594
+ encode: encode$L,
25595
+ decode: decode$G
25596
25596
  });
25597
- const encode$N = (attributes) => attributes?.["w:themeColor"];
25598
- const decode$I = (attrs) => attrs?.themeColor;
25597
+ const encode$K = (attributes) => attributes?.["w:themeColor"];
25598
+ const decode$F = (attrs) => attrs?.themeColor;
25599
25599
  const attrConfig$l = Object.freeze({
25600
25600
  xmlName: "w:themeColor",
25601
25601
  sdName: "themeColor",
25602
- encode: encode$N,
25603
- decode: decode$I
25602
+ encode: encode$K,
25603
+ decode: decode$F
25604
25604
  });
25605
- const encode$M = (attributes) => attributes?.["w:themeTint"];
25606
- const decode$H = (attrs) => attrs?.themeTint;
25605
+ const encode$J = (attributes) => attributes?.["w:themeTint"];
25606
+ const decode$E = (attrs) => attrs?.themeTint;
25607
25607
  const attrConfig$k = Object.freeze({
25608
25608
  xmlName: "w:themeTint",
25609
25609
  sdName: "themeTint",
25610
- encode: encode$M,
25611
- decode: decode$H
25610
+ encode: encode$J,
25611
+ decode: decode$E
25612
25612
  });
25613
- const encode$L = (attributes) => attributes?.["w:themeShade"];
25614
- const decode$G = (attrs) => attrs?.themeShade;
25613
+ const encode$I = (attributes) => attributes?.["w:themeShade"];
25614
+ const decode$D = (attrs) => attrs?.themeShade;
25615
25615
  const attrConfig$j = Object.freeze({
25616
25616
  xmlName: "w:themeShade",
25617
25617
  sdName: "themeShade",
25618
- encode: encode$L,
25619
- decode: decode$G
25618
+ encode: encode$I,
25619
+ decode: decode$D
25620
25620
  });
25621
25621
  const validXmlAttributes$i = [attrConfig$m, attrConfig$l, attrConfig$k, attrConfig$j];
25622
- const XML_NODE_NAME$t = "w:color";
25623
- const SD_ATTR_KEY$d = "color";
25624
- const encode$K = (params2, encodedAttrs = {}) => {
25622
+ const XML_NODE_NAME$q = "w:color";
25623
+ const SD_ATTR_KEY$a = "color";
25624
+ const encode$H = (params2, encodedAttrs = {}) => {
25625
25625
  const { nodes } = params2;
25626
25626
  const node = nodes?.[0];
25627
25627
  const sourceAttrs = node?.attributes || {};
@@ -25636,63 +25636,63 @@ const encode$K = (params2, encodedAttrs = {}) => {
25636
25636
  if (themeShade !== void 0 && themeShade !== null) attributes["w:themeShade"] = themeShade;
25637
25637
  return {
25638
25638
  type: "attr",
25639
- xmlName: XML_NODE_NAME$t,
25640
- sdNodeOrKeyName: SD_ATTR_KEY$d,
25639
+ xmlName: XML_NODE_NAME$q,
25640
+ sdNodeOrKeyName: SD_ATTR_KEY$a,
25641
25641
  attributes
25642
25642
  };
25643
25643
  };
25644
- const config$q = {
25645
- xmlName: XML_NODE_NAME$t,
25646
- sdNodeOrKeyName: SD_ATTR_KEY$d,
25644
+ const config$p = {
25645
+ xmlName: XML_NODE_NAME$q,
25646
+ sdNodeOrKeyName: SD_ATTR_KEY$a,
25647
25647
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25648
- encode: encode$K,
25648
+ encode: encode$H,
25649
25649
  attributes: validXmlAttributes$i
25650
25650
  };
25651
- const translator$14 = NodeTranslator.from(config$q);
25652
- const encode$J = (attributes) => attributes?.["w:eastAsia"];
25653
- const decode$F = (attrs) => attrs?.eastAsia;
25651
+ const translator$1j = NodeTranslator.from(config$p);
25652
+ const encode$G = (attributes) => attributes?.["w:eastAsia"];
25653
+ const decode$C = (attrs) => attrs?.eastAsia;
25654
25654
  const attrConfig$i = Object.freeze({
25655
25655
  xmlName: "w:eastAsia",
25656
25656
  sdName: "eastAsia",
25657
- encode: encode$J,
25658
- decode: decode$F
25657
+ encode: encode$G,
25658
+ decode: decode$C
25659
25659
  });
25660
- const encode$I = (attributes) => attributes?.["w:ascii"];
25661
- const decode$E = (attrs) => attrs?.ascii;
25660
+ const encode$F = (attributes) => attributes?.["w:ascii"];
25661
+ const decode$B = (attrs) => attrs?.ascii;
25662
25662
  const attrConfig$h = Object.freeze({
25663
25663
  xmlName: "w:ascii",
25664
25664
  sdName: "ascii",
25665
- encode: encode$I,
25666
- decode: decode$E
25665
+ encode: encode$F,
25666
+ decode: decode$B
25667
25667
  });
25668
- const encode$H = (attributes) => attributes?.["w:hAnsi"];
25669
- const decode$D = (attrs) => attrs?.hAnsi;
25668
+ const encode$E = (attributes) => attributes?.["w:hAnsi"];
25669
+ const decode$A = (attrs) => attrs?.hAnsi;
25670
25670
  const attrConfig$g = Object.freeze({
25671
25671
  xmlName: "w:hAnsi",
25672
25672
  sdName: "hAnsi",
25673
- encode: encode$H,
25674
- decode: decode$D
25673
+ encode: encode$E,
25674
+ decode: decode$A
25675
25675
  });
25676
- const encode$G = (attributes) => attributes?.["w:cs"];
25677
- const decode$C = (attrs) => attrs?.cs;
25676
+ const encode$D = (attributes) => attributes?.["w:cs"];
25677
+ const decode$z = (attrs) => attrs?.cs;
25678
25678
  const attrConfig$f = Object.freeze({
25679
25679
  xmlName: "w:cs",
25680
25680
  sdName: "cs",
25681
- encode: encode$G,
25682
- decode: decode$C
25681
+ encode: encode$D,
25682
+ decode: decode$z
25683
25683
  });
25684
- const encode$F = (attributes) => attributes?.["w:val"];
25685
- const decode$B = (attrs) => attrs?.value;
25684
+ const encode$C = (attributes) => attributes?.["w:val"];
25685
+ const decode$y = (attrs) => attrs?.value;
25686
25686
  const attrConfig$e = Object.freeze({
25687
25687
  xmlName: "w:val",
25688
25688
  sdName: "value",
25689
- encode: encode$F,
25690
- decode: decode$B
25689
+ encode: encode$C,
25690
+ decode: decode$y
25691
25691
  });
25692
25692
  const validXmlAttributes$h = [attrConfig$i, attrConfig$h, attrConfig$g, attrConfig$f, attrConfig$e];
25693
- const XML_NODE_NAME$s = "w:rFonts";
25694
- const SD_ATTR_KEY$c = "fontFamily";
25695
- const encode$E = (params2, encodedAttrs = {}) => {
25693
+ const XML_NODE_NAME$p = "w:rFonts";
25694
+ const SD_ATTR_KEY$9 = "fontFamily";
25695
+ const encode$B = (params2, encodedAttrs = {}) => {
25696
25696
  const { nodes } = params2;
25697
25697
  const node = nodes?.[0];
25698
25698
  const sourceAttrs = node?.attributes || {};
@@ -25716,111 +25716,119 @@ const encode$E = (params2, encodedAttrs = {}) => {
25716
25716
  attributes["w:val"] = attributes["w:eastAsia"];
25717
25717
  }
25718
25718
  if (attributes["w:val"] === void 0) delete attributes["w:val"];
25719
+ if (params2.inlineDocumentFonts) {
25720
+ const font = attributes["w:ascii"];
25721
+ if (font) {
25722
+ if (!params2.inlineDocumentFonts.includes(font)) {
25723
+ params2.inlineDocumentFonts.push(font);
25724
+ }
25725
+ }
25726
+ }
25719
25727
  return {
25720
25728
  type: "attr",
25721
- xmlName: XML_NODE_NAME$s,
25722
- sdNodeOrKeyName: SD_ATTR_KEY$c,
25729
+ xmlName: XML_NODE_NAME$p,
25730
+ sdNodeOrKeyName: SD_ATTR_KEY$9,
25723
25731
  attributes
25724
25732
  };
25725
25733
  };
25726
- const config$p = {
25727
- xmlName: XML_NODE_NAME$s,
25728
- sdNodeOrKeyName: SD_ATTR_KEY$c,
25734
+ const config$o = {
25735
+ xmlName: XML_NODE_NAME$p,
25736
+ sdNodeOrKeyName: SD_ATTR_KEY$9,
25729
25737
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25730
- encode: encode$E,
25738
+ encode: encode$B,
25731
25739
  attributes: validXmlAttributes$h
25732
25740
  };
25733
- const translator$13 = NodeTranslator.from(config$p);
25734
- const encode$D = (attributes) => attributes?.["w:val"];
25735
- const decode$A = (attrs) => attrs?.styleId;
25741
+ const translator$1i = NodeTranslator.from(config$o);
25742
+ const encode$A = (attributes) => attributes?.["w:val"];
25743
+ const decode$x = (attrs) => attrs?.styleId;
25736
25744
  const attrConfig$d = Object.freeze({
25737
25745
  xmlName: "w:val",
25738
25746
  sdName: "styleId",
25739
- encode: encode$D,
25740
- decode: decode$A
25747
+ encode: encode$A,
25748
+ decode: decode$x
25741
25749
  });
25742
25750
  const validXmlAttributes$g = [attrConfig$d];
25743
- const XML_NODE_NAME$r = "w:rStyle";
25744
- const SD_ATTR_KEY$b = "styleId";
25745
- const encode$C = (params2, encodedAttrs = {}) => {
25751
+ const XML_NODE_NAME$o = "w:rStyle";
25752
+ const SD_ATTR_KEY$8 = "styleId";
25753
+ const encode$z = (params2, encodedAttrs = {}) => {
25746
25754
  const { nodes } = params2;
25747
25755
  const node = nodes?.[0];
25748
25756
  const value = encodedAttrs.styleId ?? node?.attributes?.["w:val"];
25749
25757
  return {
25750
25758
  type: "attr",
25751
- xmlName: XML_NODE_NAME$r,
25752
- sdNodeOrKeyName: SD_ATTR_KEY$b,
25759
+ xmlName: XML_NODE_NAME$o,
25760
+ sdNodeOrKeyName: SD_ATTR_KEY$8,
25753
25761
  attributes: { "w:val": value ?? null }
25754
25762
  };
25755
25763
  };
25756
- const config$o = {
25757
- xmlName: XML_NODE_NAME$r,
25758
- sdNodeOrKeyName: SD_ATTR_KEY$b,
25764
+ const config$n = {
25765
+ xmlName: XML_NODE_NAME$o,
25766
+ sdNodeOrKeyName: SD_ATTR_KEY$8,
25759
25767
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25760
- encode: encode$C,
25768
+ encode: encode$z,
25761
25769
  attributes: validXmlAttributes$g
25762
25770
  };
25763
- const translator$12 = NodeTranslator.from(config$o);
25764
- const encode$B = (attributes) => attributes?.["w:val"];
25765
- const decode$z = (attrs) => attrs?.fontSize;
25771
+ const translator$1h = NodeTranslator.from(config$n);
25772
+ const encode$y = (attributes) => attributes?.["w:val"];
25773
+ const decode$w = (attrs) => attrs?.fontSize;
25766
25774
  const attrConfig$c = Object.freeze({
25767
25775
  xmlName: "w:val",
25768
25776
  sdName: "fontSize",
25769
- encode: encode$B,
25770
- decode: decode$z
25777
+ encode: encode$y,
25778
+ decode: decode$w
25771
25779
  });
25772
25780
  const validXmlAttributes$f = [attrConfig$c];
25773
- const XML_NODE_NAME$q = "w:sz";
25774
- const SD_ATTR_KEY$a = "fontSize";
25775
- const encode$A = (params2, encodedAttrs = {}) => {
25781
+ const XML_NODE_NAME$n = "w:sz";
25782
+ const SD_ATTR_KEY$7 = "fontSize";
25783
+ const encode$x = (params2, encodedAttrs = {}) => {
25776
25784
  const { nodes } = params2;
25777
25785
  const node = nodes?.[0];
25778
25786
  const value = encodedAttrs.fontSize ?? node?.attributes?.["w:val"];
25779
25787
  return {
25780
25788
  type: "attr",
25781
- xmlName: XML_NODE_NAME$q,
25782
- sdNodeOrKeyName: SD_ATTR_KEY$a,
25789
+ xmlName: XML_NODE_NAME$n,
25790
+ sdNodeOrKeyName: SD_ATTR_KEY$7,
25783
25791
  attributes: { "w:val": value ?? null }
25784
25792
  };
25785
25793
  };
25786
- const config$n = {
25787
- xmlName: XML_NODE_NAME$q,
25788
- sdNodeOrKeyName: SD_ATTR_KEY$a,
25794
+ const config$m = {
25795
+ xmlName: XML_NODE_NAME$n,
25796
+ sdNodeOrKeyName: SD_ATTR_KEY$7,
25789
25797
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25790
- encode: encode$A,
25798
+ encode: encode$x,
25791
25799
  attributes: validXmlAttributes$f
25792
25800
  };
25793
- const translator$11 = NodeTranslator.from(config$n);
25794
- const encode$z = (attributes) => attributes?.["w:val"];
25795
- const decode$y = (attrs) => attrs?.fontSizeCs;
25801
+ const translator$1g = NodeTranslator.from(config$m);
25802
+ const encode$w = (attributes) => attributes?.["w:val"];
25803
+ const decode$v = (attrs) => attrs?.fontSizeCs;
25796
25804
  const attrConfig$b = Object.freeze({
25797
25805
  xmlName: "w:val",
25798
25806
  sdName: "fontSizeCs",
25799
- encode: encode$z,
25800
- decode: decode$y
25807
+ encode: encode$w,
25808
+ decode: decode$v
25801
25809
  });
25802
25810
  const validXmlAttributes$e = [attrConfig$b];
25803
- const XML_NODE_NAME$p = "w:szCs";
25804
- const SD_ATTR_KEY$9 = "fontSizeCs";
25805
- const encode$y = (params2, encodedAttrs = {}) => {
25811
+ const XML_NODE_NAME$m = "w:szCs";
25812
+ const SD_ATTR_KEY$6 = "fontSizeCs";
25813
+ const encode$v = (params2, encodedAttrs = {}) => {
25806
25814
  const { nodes } = params2;
25807
25815
  const node = nodes?.[0];
25808
25816
  const value = encodedAttrs.fontSizeCs ?? node?.attributes?.["w:val"];
25809
25817
  return {
25810
25818
  type: "attr",
25811
- xmlName: XML_NODE_NAME$p,
25812
- sdNodeOrKeyName: SD_ATTR_KEY$9,
25819
+ xmlName: XML_NODE_NAME$m,
25820
+ sdNodeOrKeyName: SD_ATTR_KEY$6,
25813
25821
  attributes: { "w:val": value ?? null }
25814
25822
  };
25815
25823
  };
25816
- const config$m = {
25817
- xmlName: XML_NODE_NAME$p,
25818
- sdNodeOrKeyName: SD_ATTR_KEY$9,
25824
+ const config$l = {
25825
+ xmlName: XML_NODE_NAME$m,
25826
+ sdNodeOrKeyName: SD_ATTR_KEY$6,
25819
25827
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25820
- encode: encode$y,
25828
+ encode: encode$v,
25821
25829
  attributes: validXmlAttributes$e
25822
25830
  };
25823
- const translator$10 = NodeTranslator.from(config$m);
25831
+ const translator$1f = NodeTranslator.from(config$l);
25824
25832
  const generateV2HandlerEntity = (handlerName, translator2) => ({
25825
25833
  handlerName,
25826
25834
  handler: (params2) => {
@@ -25844,7 +25852,7 @@ function createSingleAttrPropertyHandler(xmlName, sdName = null, attrName = "w:v
25844
25852
  xmlName,
25845
25853
  sdNodeOrKeyName: sdName,
25846
25854
  encode: ({ nodes }) => {
25847
- return transformEncode(nodes[0].attributes[attrName]) ?? void 0;
25855
+ return transformEncode(nodes[0]?.attributes?.[attrName]) ?? void 0;
25848
25856
  },
25849
25857
  decode: ({ node }) => {
25850
25858
  const value = node.attrs?.[sdName] != null ? transformDecode(node.attrs[sdName]) : void 0;
@@ -25876,8 +25884,32 @@ function createBorderPropertyHandler(xmlName, sdName = null) {
25876
25884
  xmlName,
25877
25885
  sdNodeOrKeyName: sdName,
25878
25886
  attributes: [
25879
- createAttributeHandler("w:val"),
25880
- createAttributeHandler("w:color"),
25887
+ createAttributeHandler(
25888
+ "w:val",
25889
+ "val",
25890
+ (v2) => v2 === "nil" ? "none" : v2,
25891
+ (v2) => v2 === "none" ? "nil" : v2
25892
+ ),
25893
+ createAttributeHandler(
25894
+ "w:color",
25895
+ "color",
25896
+ (v2) => {
25897
+ if (v2 === "auto") {
25898
+ return null;
25899
+ } else if (v2) {
25900
+ return `#${v2}`;
25901
+ } else {
25902
+ return void 0;
25903
+ }
25904
+ },
25905
+ (v2) => {
25906
+ if (v2) {
25907
+ return v2.replace("#", "");
25908
+ } else {
25909
+ return void 0;
25910
+ }
25911
+ }
25912
+ ),
25881
25913
  createAttributeHandler("w:themeColor"),
25882
25914
  createAttributeHandler("w:themeTint"),
25883
25915
  createAttributeHandler("w:themeShade"),
@@ -25943,6 +25975,37 @@ function decodeProperties(translatorsBySdName, properties) {
25943
25975
  });
25944
25976
  return elements;
25945
25977
  }
25978
+ function createNestedPropertiesTranslator(xmlName, sdName, propertyTranslators2, defaultEncodedAttrs = {}) {
25979
+ const propertyTranslatorsByXmlName = {};
25980
+ const propertyTranslatorsBySdName = {};
25981
+ propertyTranslators2.forEach((translator2) => {
25982
+ propertyTranslatorsByXmlName[translator2.xmlName] = translator2;
25983
+ propertyTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
25984
+ });
25985
+ return {
25986
+ xmlName,
25987
+ sdNodeOrKeyName: sdName,
25988
+ type: NodeTranslator.translatorTypes.NODE,
25989
+ attributes: [],
25990
+ encode: (params2) => {
25991
+ const { nodes } = params2;
25992
+ const node = nodes[0];
25993
+ const attributes = { ...defaultEncodedAttrs, ...encodeProperties(node, propertyTranslatorsByXmlName) };
25994
+ return Object.keys(attributes).length > 0 ? attributes : void 0;
25995
+ },
25996
+ decode: (params2) => {
25997
+ const currentValue = params2.node.attrs?.[sdName];
25998
+ const elements = decodeProperties(propertyTranslatorsBySdName, currentValue);
25999
+ const newNode = {
26000
+ name: xmlName,
26001
+ type: "element",
26002
+ attributes: {},
26003
+ elements
26004
+ };
26005
+ return newNode;
26006
+ }
26007
+ };
26008
+ }
25946
26009
  const parseBoolean = (value) => value != null ? ["1", "true"].includes(value) : void 0;
25947
26010
  const booleanToString = (value) => value != null ? value ? "1" : "0" : void 0;
25948
26011
  const parseInteger = (value) => {
@@ -25954,9 +26017,9 @@ const integerToString = (value) => {
25954
26017
  const intValue = parseInteger(value);
25955
26018
  return intValue != void 0 ? String(intValue) : void 0;
25956
26019
  };
25957
- const XML_NODE_NAME$o = "w:caps";
25958
- const SD_ATTR_KEY$8 = "textTransform";
25959
- const encode$x = (params2, encodedAttrs = {}) => {
26020
+ const XML_NODE_NAME$l = "w:caps";
26021
+ const SD_ATTR_KEY$5 = "textTransform";
26022
+ const encode$u = (params2, encodedAttrs = {}) => {
25960
26023
  const { nodes } = params2;
25961
26024
  const node = nodes[0];
25962
26025
  if (!node) return void 0;
@@ -25968,31 +26031,31 @@ const encode$x = (params2, encodedAttrs = {}) => {
25968
26031
  }
25969
26032
  return {
25970
26033
  type: "attr",
25971
- xmlName: XML_NODE_NAME$o,
25972
- sdNodeOrKeyName: SD_ATTR_KEY$8,
25973
- attributes: { [SD_ATTR_KEY$8]: result }
26034
+ xmlName: XML_NODE_NAME$l,
26035
+ sdNodeOrKeyName: SD_ATTR_KEY$5,
26036
+ attributes: { [SD_ATTR_KEY$5]: result }
25974
26037
  };
25975
26038
  };
25976
- const config$l = {
25977
- xmlName: XML_NODE_NAME$o,
25978
- sdNodeOrKeyName: SD_ATTR_KEY$8,
26039
+ const config$k = {
26040
+ xmlName: XML_NODE_NAME$l,
26041
+ sdNodeOrKeyName: SD_ATTR_KEY$5,
25979
26042
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25980
- encode: encode$x,
26043
+ encode: encode$u,
25981
26044
  attributes: [createAttributeHandler("w:val")]
25982
26045
  };
25983
- const translator$$ = NodeTranslator.from(config$l);
26046
+ const translator$1e = NodeTranslator.from(config$k);
25984
26047
  const runPropertyTranslators = Object.freeze({
25985
- "w:b": translator$18,
25986
- "w:i": translator$17,
25987
- "w:u": translator$16,
25988
- "w:strike": translator$15,
25989
- "w:color": translator$14,
25990
- "w:highlight": translator$1b,
25991
- "w:rFonts": translator$13,
25992
- "w:rStyle": translator$12,
25993
- "w:sz": translator$11,
25994
- "w:szCs": translator$10,
25995
- "w:caps": translator$$
26048
+ "w:b": translator$1n,
26049
+ "w:i": translator$1m,
26050
+ "w:u": translator$1l,
26051
+ "w:strike": translator$1k,
26052
+ "w:color": translator$1j,
26053
+ "w:highlight": translator$1q,
26054
+ "w:rFonts": translator$1i,
26055
+ "w:rStyle": translator$1h,
26056
+ "w:sz": translator$1g,
26057
+ "w:szCs": translator$1f,
26058
+ "w:caps": translator$1e
25996
26059
  });
25997
26060
  const rawRunPropertyXmlNames = Object.freeze(["w:lang", "w:shd"]);
25998
26061
  const RAW_CHILD_NAME_SET = new Set(rawRunPropertyXmlNames);
@@ -26006,9 +26069,9 @@ const toRunPropertyEntry = (candidate) => {
26006
26069
  attributes: { ...candidate.attributes || {} }
26007
26070
  };
26008
26071
  };
26009
- const XML_NODE_NAME$n = "w:rPr";
26010
- const SD_ATTR_KEY$7 = "runProperties";
26011
- const encode$w = (params2) => {
26072
+ const XML_NODE_NAME$k = "w:rPr";
26073
+ const SD_ATTR_KEY$4 = "runProperties";
26074
+ const encode$t = (params2) => {
26012
26075
  const { nodes } = params2;
26013
26076
  const node = nodes?.[0] || {};
26014
26077
  const contents = Array.isArray(node.elements) ? node.elements : [];
@@ -26042,16 +26105,16 @@ const encode$w = (params2) => {
26042
26105
  attributes: runPropsArray
26043
26106
  };
26044
26107
  };
26045
- const config$k = {
26046
- xmlName: XML_NODE_NAME$n,
26047
- sdNodeOrKeyName: SD_ATTR_KEY$7,
26108
+ const config$j = {
26109
+ xmlName: XML_NODE_NAME$k,
26110
+ sdNodeOrKeyName: SD_ATTR_KEY$4,
26048
26111
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
26049
- encode: encode$w
26112
+ encode: encode$t
26050
26113
  };
26051
- const translator$_ = NodeTranslator.from(config$k);
26114
+ const translator$1d = NodeTranslator.from(config$j);
26052
26115
  const EAST_ASIAN_CHARACTER_REGEX = /[\u1100-\u11FF\u2E80-\u2EFF\u2F00-\u2FDF\u3040-\u30FF\u3100-\u312F\u3130-\u318F\u31A0-\u31BF\u3400-\u4DBF\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7AF\uF900-\uFAFF\uFF00-\uFFEF]/u;
26053
26116
  const containsEastAsianCharacters = (text) => EAST_ASIAN_CHARACTER_REGEX.test(text);
26054
- const collectRunProperties = (params2, rPrNode, translator2 = translator$_) => {
26117
+ const collectRunProperties = (params2, rPrNode, translator2 = translator$1d) => {
26055
26118
  if (!rPrNode) return { entries: [], hadRPr: false, styleChangeMarks: [] };
26056
26119
  const result = translator2.encode({ ...params2, nodes: [rPrNode] }) || {};
26057
26120
  let entries = [];
@@ -26524,7 +26587,7 @@ const ensureTrackedWrapper = (runs, trackingMarksByType = /* @__PURE__ */ new Ma
26524
26587
  }
26525
26588
  return runs;
26526
26589
  };
26527
- const XML_NODE_NAME$m = "w:hyperlink";
26590
+ const XML_NODE_NAME$j = "w:hyperlink";
26528
26591
  const SD_NODE_NAME$e = "link";
26529
26592
  const _createAttributeHandler = (xmlName, sdName) => ({
26530
26593
  xmlName,
@@ -26545,7 +26608,7 @@ const validXmlAttributes$d = [
26545
26608
  _createAttributeHandler("r:id", "rId"),
26546
26609
  _createAttributeHandler("w:tgtFrame", "target")
26547
26610
  ];
26548
- const encode$v = (params2, encodedAttrs) => {
26611
+ const encode$s = (params2, encodedAttrs) => {
26549
26612
  const { nodes, docx, nodeListHandler } = params2;
26550
26613
  const node = nodes[0];
26551
26614
  let href = _resolveHref(docx, encodedAttrs);
@@ -26579,7 +26642,7 @@ const _resolveHref = (docx, encodedAttrs) => {
26579
26642
  }
26580
26643
  return href;
26581
26644
  };
26582
- function decode$x(params2) {
26645
+ function decode$u(params2) {
26583
26646
  const { hyperlinkGroup = [params2.node] } = params2.extraParams || {};
26584
26647
  const node = hyperlinkGroup[0];
26585
26648
  const linkMark = node.marks.find((m2) => m2.type === "link");
@@ -26628,55 +26691,55 @@ function _addNewLinkRelationship(params2, link) {
26628
26691
  });
26629
26692
  return id;
26630
26693
  }
26631
- const config$j = {
26632
- xmlName: XML_NODE_NAME$m,
26694
+ const config$i = {
26695
+ xmlName: XML_NODE_NAME$j,
26633
26696
  sdNodeOrKeyName: SD_NODE_NAME$e,
26634
26697
  type: NodeTranslator.translatorTypes.NODE,
26635
- encode: encode$v,
26636
- decode: decode$x,
26698
+ encode: encode$s,
26699
+ decode: decode$u,
26637
26700
  attributes: validXmlAttributes$d
26638
26701
  };
26639
- const translator$Z = NodeTranslator.from(config$j);
26640
- const encode$u = (attributes) => {
26702
+ const translator$1c = NodeTranslator.from(config$i);
26703
+ const encode$r = (attributes) => {
26641
26704
  return attributes["w:rsidR"];
26642
26705
  };
26643
- const decode$w = (attrs) => {
26706
+ const decode$t = (attrs) => {
26644
26707
  return attrs.rsidR;
26645
26708
  };
26646
26709
  const attrConfig$a = Object.freeze({
26647
26710
  xmlName: "w:rsidR",
26648
26711
  sdName: "rsidR",
26649
- encode: encode$u,
26650
- decode: decode$w
26712
+ encode: encode$r,
26713
+ decode: decode$t
26651
26714
  });
26652
- const encode$t = (attributes) => {
26715
+ const encode$q = (attributes) => {
26653
26716
  return attributes["w:rsidRPr"];
26654
26717
  };
26655
- const decode$v = (attrs) => {
26718
+ const decode$s = (attrs) => {
26656
26719
  return attrs.rsidRPr;
26657
26720
  };
26658
26721
  const attrConfig$9 = Object.freeze({
26659
26722
  xmlName: "w:rsidRPr",
26660
26723
  sdName: "rsidRPr",
26661
- encode: encode$t,
26662
- decode: decode$v
26724
+ encode: encode$q,
26725
+ decode: decode$s
26663
26726
  });
26664
- const encode$s = (attributes) => {
26727
+ const encode$p = (attributes) => {
26665
26728
  return attributes["w:rsidDel"];
26666
26729
  };
26667
- const decode$u = (attrs) => {
26730
+ const decode$r = (attrs) => {
26668
26731
  return attrs.rsidDel;
26669
26732
  };
26670
26733
  const attrConfig$8 = Object.freeze({
26671
26734
  xmlName: "w:rsidDel",
26672
26735
  sdName: "rsidDel",
26673
- encode: encode$s,
26674
- decode: decode$u
26736
+ encode: encode$p,
26737
+ decode: decode$r
26675
26738
  });
26676
26739
  const validXmlAttributes$c = [attrConfig$a, attrConfig$9, attrConfig$8];
26677
- const XML_NODE_NAME$l = "w:r";
26740
+ const XML_NODE_NAME$i = "w:r";
26678
26741
  const SD_KEY_NAME = "run";
26679
- const encode$r = (params2, encodedAttrs = {}) => {
26742
+ const encode$o = (params2, encodedAttrs = {}) => {
26680
26743
  const { nodes = [], nodeListHandler } = params2 || {};
26681
26744
  const runNode = nodes[0];
26682
26745
  if (!runNode) return void 0;
@@ -26724,7 +26787,7 @@ const encode$r = (params2, encodedAttrs = {}) => {
26724
26787
  }
26725
26788
  return runNodeResult;
26726
26789
  };
26727
- const decode$t = (params2, decodedAttrs = {}) => {
26790
+ const decode$q = (params2, decodedAttrs = {}) => {
26728
26791
  const { node } = params2 || {};
26729
26792
  if (!node) return void 0;
26730
26793
  const isLinkNode = node.marks?.some((m2) => m2.type === "link");
@@ -26733,7 +26796,7 @@ const decode$t = (params2, decodedAttrs = {}) => {
26733
26796
  ...params2.extraParams,
26734
26797
  linkProcessed: true
26735
26798
  };
26736
- return translator$Z.decode({ ...params2, extraParams });
26799
+ return translator$1c.decode({ ...params2, extraParams });
26737
26800
  }
26738
26801
  const { runNode: runNodeForExport, trackingMarksByType } = prepareRunTrackingContext(node);
26739
26802
  const runAttrs = runNodeForExport.attrs || {};
@@ -26789,7 +26852,7 @@ const decode$t = (params2, decodedAttrs = {}) => {
26789
26852
  runs.push(trackedClone);
26790
26853
  return;
26791
26854
  }
26792
- const runWrapper = { name: XML_NODE_NAME$l, elements: [] };
26855
+ const runWrapper = { name: XML_NODE_NAME$i, elements: [] };
26793
26856
  applyBaseRunProps(runWrapper);
26794
26857
  if (!Array.isArray(runWrapper.elements)) runWrapper.elements = [];
26795
26858
  runWrapper.elements.push(cloneXmlNode(child));
@@ -26797,7 +26860,7 @@ const decode$t = (params2, decodedAttrs = {}) => {
26797
26860
  });
26798
26861
  const trackedRuns = ensureTrackedWrapper(runs, trackingMarksByType);
26799
26862
  if (!trackedRuns.length) {
26800
- const emptyRun = { name: XML_NODE_NAME$l, elements: [] };
26863
+ const emptyRun = { name: XML_NODE_NAME$i, elements: [] };
26801
26864
  applyBaseRunProps(emptyRun);
26802
26865
  trackedRuns.push(emptyRun);
26803
26866
  }
@@ -26811,15 +26874,15 @@ const decode$t = (params2, decodedAttrs = {}) => {
26811
26874
  }
26812
26875
  return trackedRuns;
26813
26876
  };
26814
- const config$i = {
26815
- xmlName: XML_NODE_NAME$l,
26877
+ const config$h = {
26878
+ xmlName: XML_NODE_NAME$i,
26816
26879
  sdNodeOrKeyName: SD_KEY_NAME,
26817
26880
  type: NodeTranslator.translatorTypes.NODE,
26818
- encode: encode$r,
26819
- decode: decode$t,
26881
+ encode: encode$o,
26882
+ decode: decode$q,
26820
26883
  attributes: validXmlAttributes$c
26821
26884
  };
26822
- const translator$Y = NodeTranslator.from(config$i);
26885
+ const translator$1b = NodeTranslator.from(config$h);
26823
26886
  function preProcessVerticalMergeCells(table, { editorSchema }) {
26824
26887
  if (!table || !Array.isArray(table.content)) {
26825
26888
  return table;
@@ -26860,13 +26923,13 @@ function preProcessVerticalMergeCells(table, { editorSchema }) {
26860
26923
  }
26861
26924
  return table;
26862
26925
  }
26863
- const translator$X = NodeTranslator.from({
26926
+ const translator$1a = NodeTranslator.from({
26864
26927
  xmlName: "w:cantSplit",
26865
26928
  sdNodeOrKeyName: "cantSplit",
26866
26929
  encode: ({ nodes }) => ["1", "true"].includes(nodes[0].attributes?.["w:val"] ?? "1"),
26867
26930
  decode: ({ node }) => node.attrs?.cantSplit ? { attributes: {} } : void 0
26868
26931
  });
26869
- const translator$W = NodeTranslator.from({
26932
+ const translator$19 = NodeTranslator.from({
26870
26933
  xmlName: "w:cnfStyle",
26871
26934
  sdNodeOrKeyName: "cnfStyle",
26872
26935
  attributes: [
@@ -26892,8 +26955,8 @@ const translator$W = NodeTranslator.from({
26892
26955
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
26893
26956
  }
26894
26957
  });
26895
- const translator$V = NodeTranslator.from(createSingleAttrPropertyHandler("w:divId"));
26896
- const translator$U = NodeTranslator.from(
26958
+ const translator$18 = NodeTranslator.from(createSingleAttrPropertyHandler("w:divId"));
26959
+ const translator$17 = NodeTranslator.from(
26897
26960
  createSingleAttrPropertyHandler(
26898
26961
  "w:gridAfter",
26899
26962
  null,
@@ -26902,7 +26965,7 @@ const translator$U = NodeTranslator.from(
26902
26965
  (v2) => integerToString(v2)
26903
26966
  )
26904
26967
  );
26905
- const translator$T = NodeTranslator.from(
26968
+ const translator$16 = NodeTranslator.from(
26906
26969
  createSingleAttrPropertyHandler(
26907
26970
  "w:gridBefore",
26908
26971
  null,
@@ -26911,21 +26974,21 @@ const translator$T = NodeTranslator.from(
26911
26974
  (v2) => integerToString(v2)
26912
26975
  )
26913
26976
  );
26914
- const translator$S = NodeTranslator.from({
26977
+ const translator$15 = NodeTranslator.from({
26915
26978
  xmlName: "w:hidden",
26916
26979
  sdNodeOrKeyName: "hidden",
26917
26980
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
26918
26981
  decode: ({ node }) => node.attrs.hidden ? { attributes: {} } : void 0
26919
26982
  });
26920
- const translator$R = NodeTranslator.from(createSingleAttrPropertyHandler("w:jc", "justification"));
26921
- const translator$Q = NodeTranslator.from(createMeasurementPropertyHandler("w:tblCellSpacing", "tableCellSpacing"));
26922
- const translator$P = NodeTranslator.from({
26983
+ const translator$14 = NodeTranslator.from(createSingleAttrPropertyHandler("w:jc", "justification"));
26984
+ const translator$13 = NodeTranslator.from(createMeasurementPropertyHandler("w:tblCellSpacing", "tableCellSpacing"));
26985
+ const translator$12 = NodeTranslator.from({
26923
26986
  xmlName: "w:tblHeader",
26924
26987
  sdNodeOrKeyName: "repeatHeader",
26925
26988
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
26926
26989
  decode: ({ node }) => node.attrs.repeatHeader ? { attributes: {} } : void 0
26927
26990
  });
26928
- const translator$O = NodeTranslator.from({
26991
+ const translator$11 = NodeTranslator.from({
26929
26992
  xmlName: "w:trHeight",
26930
26993
  sdNodeOrKeyName: "rowHeight",
26931
26994
  encode: ({ nodes }) => {
@@ -26952,84 +27015,43 @@ const translator$O = NodeTranslator.from({
26952
27015
  return Object.keys(heightAttrs).length > 0 ? { attributes: heightAttrs } : void 0;
26953
27016
  }
26954
27017
  });
26955
- const translator$N = NodeTranslator.from(createMeasurementPropertyHandler("w:wAfter"));
26956
- const translator$M = NodeTranslator.from(createMeasurementPropertyHandler("w:wBefore"));
26957
- const XML_NODE_NAME$k = "w:trPr";
26958
- const SD_ATTR_KEY$6 = "tableRowProperties";
26959
- const encode$q = (params2) => {
26960
- const { nodes } = params2;
26961
- const node = nodes[0];
26962
- let attributes = {
27018
+ const translator$10 = NodeTranslator.from(createMeasurementPropertyHandler("w:wAfter"));
27019
+ const translator$$ = NodeTranslator.from(createMeasurementPropertyHandler("w:wBefore"));
27020
+ const propertyTranslators$6 = [
27021
+ translator$1a,
27022
+ translator$19,
27023
+ translator$18,
27024
+ translator$17,
27025
+ translator$16,
27026
+ translator$15,
27027
+ translator$14,
27028
+ translator$13,
27029
+ translator$12,
27030
+ translator$11,
27031
+ translator$10,
27032
+ translator$$
27033
+ ];
27034
+ const translator$_ = NodeTranslator.from(
27035
+ createNestedPropertiesTranslator("w:trPr", "tableRowProperties", propertyTranslators$6, {
26963
27036
  cantSplit: false,
26964
27037
  hidden: false,
26965
27038
  repeatHeader: false
26966
- };
26967
- attributes = {
26968
- ...attributes,
26969
- ...encodeProperties(node, propertyTranslatorsByXmlName$2)
26970
- };
26971
- return {
26972
- type: NodeTranslator.translatorTypes.ATTRIBUTE,
26973
- xmlName: XML_NODE_NAME$k,
26974
- sdNodeOrKeyName: SD_ATTR_KEY$6,
26975
- attributes
26976
- };
26977
- };
26978
- const decode$s = (params2) => {
26979
- const { tableRowProperties = {} } = params2.node.attrs || {};
26980
- const elements = decodeProperties(propertyTranslatorsBySdName$2, tableRowProperties);
26981
- const newNode = {
26982
- name: "w:trPr",
26983
- type: "element",
26984
- attributes: {},
26985
- elements
26986
- };
26987
- return newNode;
26988
- };
26989
- const propertyTranslators$3 = [
26990
- translator$X,
26991
- translator$W,
26992
- translator$V,
26993
- translator$U,
26994
- translator$T,
26995
- translator$S,
26996
- translator$R,
26997
- translator$Q,
26998
- translator$P,
26999
- translator$O,
27000
- translator$N,
27001
- translator$M
27002
- ];
27003
- const propertyTranslatorsByXmlName$2 = {};
27004
- propertyTranslators$3.forEach((translator2) => {
27005
- propertyTranslatorsByXmlName$2[translator2.xmlName] = translator2;
27006
- });
27007
- const propertyTranslatorsBySdName$2 = {};
27008
- propertyTranslators$3.forEach((translator2) => {
27009
- propertyTranslatorsBySdName$2[translator2.sdNodeOrKeyName] = translator2;
27010
- });
27011
- const config$h = {
27012
- xmlName: XML_NODE_NAME$k,
27013
- sdNodeOrKeyName: SD_ATTR_KEY$6,
27014
- type: NodeTranslator.translatorTypes.ATTRIBUTE,
27015
- encode: encode$q,
27016
- decode: decode$s
27017
- };
27018
- const translator$L = NodeTranslator.from(config$h);
27019
- const XML_NODE_NAME$j = "w:tr";
27039
+ })
27040
+ );
27041
+ const XML_NODE_NAME$h = "w:tr";
27020
27042
  const SD_NODE_NAME$d = "tableRow";
27021
27043
  const validXmlAttributes$b = ["w:rsidDel", "w:rsidR", "w:rsidRPr", "w:rsidTr", "w14:paraId", "w14:textId"].map(
27022
27044
  (xmlName) => createAttributeHandler(xmlName)
27023
27045
  );
27024
- const encode$p = (params2, encodedAttrs) => {
27046
+ const encode$n = (params2, encodedAttrs) => {
27025
27047
  const { row } = params2.extraParams;
27026
27048
  let tableRowProperties = {};
27027
27049
  const tPr = row.elements.find((el) => el.name === "w:trPr");
27028
27050
  if (tPr) {
27029
- ({ attributes: tableRowProperties } = translator$L.encode({
27051
+ tableRowProperties = translator$_.encode({
27030
27052
  ...params2,
27031
27053
  nodes: [tPr]
27032
- }));
27054
+ });
27033
27055
  }
27034
27056
  encodedAttrs["tableRowProperties"] = Object.freeze(tableRowProperties);
27035
27057
  encodedAttrs["rowHeight"] = twipsToPixels(tableRowProperties["rowHeight"]?.value);
@@ -27061,7 +27083,7 @@ const encode$p = (params2, encodedAttrs) => {
27061
27083
  };
27062
27084
  return newNode;
27063
27085
  };
27064
- const decode$r = (params2, decodedAttrs) => {
27086
+ const decode$p = (params2, decodedAttrs) => {
27065
27087
  const { node } = params2;
27066
27088
  const elements = translateChildNodes(params2);
27067
27089
  if (node.attrs?.tableRowProperties) {
@@ -27073,7 +27095,7 @@ const decode$r = (params2, decodedAttrs) => {
27073
27095
  }
27074
27096
  }
27075
27097
  tableRowProperties["cantSplit"] = node.attrs["cantSplit"];
27076
- const trPr = translator$L.decode({
27098
+ const trPr = translator$_.decode({
27077
27099
  ...params2,
27078
27100
  node: { ...node, attrs: { ...node.attrs, tableRowProperties } }
27079
27101
  });
@@ -27086,21 +27108,21 @@ const decode$r = (params2, decodedAttrs) => {
27086
27108
  };
27087
27109
  };
27088
27110
  const config$g = {
27089
- xmlName: XML_NODE_NAME$j,
27111
+ xmlName: XML_NODE_NAME$h,
27090
27112
  sdNodeOrKeyName: SD_NODE_NAME$d,
27091
27113
  type: NodeTranslator.translatorTypes.NODE,
27092
- encode: encode$p,
27093
- decode: decode$r,
27114
+ encode: encode$n,
27115
+ decode: decode$p,
27094
27116
  attributes: validXmlAttributes$b
27095
27117
  };
27096
- const translator$K = NodeTranslator.from(config$g);
27097
- const translator$J = NodeTranslator.from({
27118
+ const translator$Z = NodeTranslator.from(config$g);
27119
+ const translator$Y = NodeTranslator.from({
27098
27120
  xmlName: "w:bidiVisual",
27099
27121
  sdNodeOrKeyName: "rightToLeft",
27100
27122
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
27101
27123
  decode: ({ node }) => node.attrs.rightToLeft ? { attributes: {} } : void 0
27102
27124
  });
27103
- const translator$I = NodeTranslator.from({
27125
+ const translator$X = NodeTranslator.from({
27104
27126
  xmlName: "w:shd",
27105
27127
  sdNodeOrKeyName: "shading",
27106
27128
  attributes: [
@@ -27122,11 +27144,11 @@ const translator$I = NodeTranslator.from({
27122
27144
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
27123
27145
  }
27124
27146
  });
27125
- const translator$H = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblCaption", "caption"));
27126
- const translator$G = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblDescription", "description"));
27127
- const translator$F = NodeTranslator.from(createMeasurementPropertyHandler("w:tblInd", "tableIndent"));
27128
- const translator$E = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblLayout", "tableLayout", "w:type"));
27129
- const translator$D = NodeTranslator.from({
27147
+ const translator$W = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblCaption", "caption"));
27148
+ const translator$V = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblDescription", "description"));
27149
+ const translator$U = NodeTranslator.from(createMeasurementPropertyHandler("w:tblInd", "tableIndent"));
27150
+ const translator$T = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblLayout", "tableLayout", "w:type"));
27151
+ const translator$S = NodeTranslator.from({
27130
27152
  xmlName: "w:tblLook",
27131
27153
  sdNodeOrKeyName: "tblLook",
27132
27154
  attributes: ["w:firstColumn", "w:firstRow", "w:lastColumn", "w:lastRow", "w:noHBand", "w:noVBand"].map((attr) => createAttributeHandler(attr, null, parseBoolean, booleanToString)).concat([createAttributeHandler("w:val")]),
@@ -27138,16 +27160,16 @@ const translator$D = NodeTranslator.from({
27138
27160
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
27139
27161
  }
27140
27162
  });
27141
- const translator$C = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblOverlap", "overlap"));
27142
- const translator$B = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblStyle", "tableStyleId"));
27143
- const translator$A = NodeTranslator.from(
27163
+ const translator$R = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblOverlap", "overlap"));
27164
+ const translator$Q = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblStyle", "tableStyleId"));
27165
+ const translator$P = NodeTranslator.from(
27144
27166
  createSingleAttrPropertyHandler("w:tblStyleColBandSize", "tableStyleColBandSize")
27145
27167
  );
27146
- const translator$z = NodeTranslator.from(
27168
+ const translator$O = NodeTranslator.from(
27147
27169
  createSingleAttrPropertyHandler("w:tblStyleRowBandSize", "tableStyleRowBandSize")
27148
27170
  );
27149
- const translator$y = NodeTranslator.from(createMeasurementPropertyHandler("w:tblW", "tableWidth"));
27150
- const translator$x = NodeTranslator.from({
27171
+ const translator$N = NodeTranslator.from(createMeasurementPropertyHandler("w:tblW", "tableWidth"));
27172
+ const translator$M = NodeTranslator.from({
27151
27173
  xmlName: "w:tblpPr",
27152
27174
  sdNodeOrKeyName: "floatingTableProperties",
27153
27175
  attributes: ["w:leftFromText", "w:rightFromText", "w:topFromText", "w:bottomFromText", "w:tblpX", "w:tblpY"].map((attr) => createAttributeHandler(attr, null, parseInteger, integerToString)).concat(["w:horzAnchor", "w:vertAnchor", "w:tblpXSpec", "w:tblpYSpec"].map((attr) => createAttributeHandler(attr))),
@@ -27159,160 +27181,67 @@ const translator$x = NodeTranslator.from({
27159
27181
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
27160
27182
  }
27161
27183
  });
27162
- const translator$w = NodeTranslator.from(createBorderPropertyHandler("w:bottom"));
27163
- const translator$v = NodeTranslator.from(createMeasurementPropertyHandler("w:bottom", "marginBottom"));
27164
- const translator$u = NodeTranslator.from(createBorderPropertyHandler("w:end"));
27165
- const translator$t = NodeTranslator.from(createMeasurementPropertyHandler("w:end", "marginEnd"));
27166
- const translator$s = NodeTranslator.from(createBorderPropertyHandler("w:insideH"));
27167
- const translator$r = NodeTranslator.from(createBorderPropertyHandler("w:insideV"));
27168
- const translator$q = NodeTranslator.from(createBorderPropertyHandler("w:left"));
27169
- const translator$p = NodeTranslator.from(createMeasurementPropertyHandler("w:left", "marginLeft"));
27170
- const translator$o = NodeTranslator.from(createBorderPropertyHandler("w:right"));
27171
- const translator$n = NodeTranslator.from(createMeasurementPropertyHandler("w:right", "marginRight"));
27172
- const translator$m = NodeTranslator.from(createBorderPropertyHandler("w:start"));
27173
- const translator$l = NodeTranslator.from(createMeasurementPropertyHandler("w:start", "marginStart"));
27174
- const translator$k = NodeTranslator.from(createBorderPropertyHandler("w:top"));
27175
- const translator$j = NodeTranslator.from(createMeasurementPropertyHandler("w:top", "marginTop"));
27176
- const XML_NODE_NAME$i = "w:tblBorders";
27177
- const SD_ATTR_KEY$5 = "borders";
27178
- const encode$o = (params2) => {
27179
- const { nodes } = params2;
27180
- const node = nodes[0];
27181
- const attributes = encodeProperties(node, tblBordersTranslatorsByXmlName);
27182
- return Object.keys(attributes).length > 0 ? attributes : void 0;
27183
- };
27184
- const decode$q = (params2) => {
27185
- const { borders = {} } = params2.node.attrs || {};
27186
- const elements = decodeProperties(tblBordersTranslatorsBySdName, borders);
27187
- const newNode = {
27188
- name: "w:tblBorders",
27189
- type: "element",
27190
- attributes: {},
27191
- elements
27192
- };
27193
- return newNode;
27194
- };
27195
- const propertyTranslators$2 = [
27196
- translator$w,
27197
- translator$u,
27198
- translator$s,
27199
- translator$r,
27200
- translator$q,
27201
- translator$o,
27202
- translator$m,
27203
- translator$k
27204
- ];
27205
- const tblBordersTranslatorsByXmlName = {};
27206
- const tblBordersTranslatorsBySdName = {};
27207
- propertyTranslators$2.forEach((translator2) => {
27208
- tblBordersTranslatorsByXmlName[translator2.xmlName] = translator2;
27209
- tblBordersTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
27210
- });
27211
- const translator$i = NodeTranslator.from({
27212
- xmlName: XML_NODE_NAME$i,
27213
- sdNodeOrKeyName: SD_ATTR_KEY$5,
27214
- type: NodeTranslator.translatorTypes.NODE,
27215
- attributes: [],
27216
- encode: encode$o,
27217
- decode: decode$q
27218
- });
27219
- const XML_NODE_NAME$h = "w:tblCellMar";
27220
- const SD_ATTR_KEY$4 = "cellMargins";
27221
- const encode$n = (params2) => {
27222
- const { nodes } = params2;
27223
- const node = nodes[0];
27224
- const attributes = encodeProperties(node, propertyTranslatorsByXmlName$1);
27225
- return Object.keys(attributes).length > 0 ? attributes : void 0;
27226
- };
27227
- const decode$p = (params2) => {
27228
- const { cellMargins = {} } = params2.node.attrs || {};
27229
- const elements = decodeProperties(propertyTranslatorsBySdName$1, cellMargins);
27230
- const newNode = {
27231
- name: XML_NODE_NAME$h,
27232
- type: "element",
27233
- attributes: {},
27234
- elements
27235
- };
27236
- return newNode;
27237
- };
27238
- const propertyTranslators$1 = [
27239
- translator$v,
27240
- translator$t,
27241
- translator$p,
27242
- translator$n,
27243
- translator$l,
27244
- translator$j
27245
- ];
27246
- const propertyTranslatorsByXmlName$1 = {};
27247
- const propertyTranslatorsBySdName$1 = {};
27248
- propertyTranslators$1.forEach((translator2) => {
27249
- propertyTranslatorsByXmlName$1[translator2.xmlName] = translator2;
27250
- propertyTranslatorsBySdName$1[translator2.sdNodeOrKeyName] = translator2;
27251
- });
27252
- const translator$h = NodeTranslator.from({
27253
- xmlName: XML_NODE_NAME$h,
27254
- sdNodeOrKeyName: SD_ATTR_KEY$4,
27255
- type: NodeTranslator.translatorTypes.NODE,
27256
- attributes: [],
27257
- encode: encode$n,
27258
- decode: decode$p
27259
- });
27260
- const XML_NODE_NAME$g = "w:tblPr";
27261
- const SD_ATTR_KEY$3 = "tableProperties";
27262
- const encode$m = (params2) => {
27263
- const { nodes } = params2;
27264
- const node = nodes[0];
27265
- const attributes = encodeProperties(node, propertyTranslatorsByXmlName);
27266
- return {
27267
- xmlName: XML_NODE_NAME$g,
27268
- sdNodeOrKeyName: SD_ATTR_KEY$3,
27269
- attributes
27270
- };
27271
- };
27272
- const decode$o = (params2) => {
27273
- const { tableProperties = {} } = params2.node.attrs || {};
27274
- const elements = decodeProperties(propertyTranslatorsBySdName, tableProperties);
27275
- const newNode = {
27276
- name: "w:tblPr",
27277
- type: "element",
27278
- attributes: {},
27279
- elements
27280
- };
27281
- return newNode;
27282
- };
27283
- const propertyTranslators = [
27184
+ const translator$L = NodeTranslator.from(createBorderPropertyHandler("w:bottom"));
27185
+ const translator$K = NodeTranslator.from(createMeasurementPropertyHandler("w:bottom", "marginBottom"));
27186
+ const translator$J = NodeTranslator.from(createBorderPropertyHandler("w:end"));
27187
+ const translator$I = NodeTranslator.from(createMeasurementPropertyHandler("w:end", "marginEnd"));
27188
+ const translator$H = NodeTranslator.from(createBorderPropertyHandler("w:insideH"));
27189
+ const translator$G = NodeTranslator.from(createBorderPropertyHandler("w:insideV"));
27190
+ const translator$F = NodeTranslator.from(createBorderPropertyHandler("w:left"));
27191
+ const translator$E = NodeTranslator.from(createMeasurementPropertyHandler("w:left", "marginLeft"));
27192
+ const translator$D = NodeTranslator.from(createBorderPropertyHandler("w:right"));
27193
+ const translator$C = NodeTranslator.from(createMeasurementPropertyHandler("w:right", "marginRight"));
27194
+ const translator$B = NodeTranslator.from(createBorderPropertyHandler("w:start"));
27195
+ const translator$A = NodeTranslator.from(createMeasurementPropertyHandler("w:start", "marginStart"));
27196
+ const translator$z = NodeTranslator.from(createBorderPropertyHandler("w:top"));
27197
+ const translator$y = NodeTranslator.from(createMeasurementPropertyHandler("w:top", "marginTop"));
27198
+ const propertyTranslators$5 = [
27199
+ translator$L,
27284
27200
  translator$J,
27285
- translator$R,
27286
- translator$I,
27287
27201
  translator$H,
27288
- translator$Q,
27289
27202
  translator$G,
27290
27203
  translator$F,
27291
- translator$E,
27292
27204
  translator$D,
27293
- translator$C,
27294
27205
  translator$B,
27206
+ translator$z
27207
+ ];
27208
+ const translator$x = NodeTranslator.from(
27209
+ createNestedPropertiesTranslator("w:tblBorders", "borders", propertyTranslators$5)
27210
+ );
27211
+ const propertyTranslators$4 = [
27212
+ translator$K,
27213
+ translator$I,
27214
+ translator$E,
27215
+ translator$C,
27295
27216
  translator$A,
27296
- translator$z,
27297
- translator$y,
27217
+ translator$y
27218
+ ];
27219
+ const translator$w = NodeTranslator.from(
27220
+ createNestedPropertiesTranslator("w:tblCellMar", "cellMargins", propertyTranslators$4)
27221
+ );
27222
+ const propertyTranslators$3 = [
27223
+ translator$Y,
27224
+ translator$14,
27225
+ translator$X,
27226
+ translator$W,
27227
+ translator$13,
27228
+ translator$V,
27229
+ translator$U,
27230
+ translator$T,
27231
+ translator$S,
27232
+ translator$R,
27233
+ translator$Q,
27234
+ translator$P,
27235
+ translator$O,
27236
+ translator$N,
27237
+ translator$M,
27298
27238
  translator$x,
27299
- translator$i,
27300
- translator$h
27239
+ translator$w
27301
27240
  ];
27302
- const propertyTranslatorsByXmlName = {};
27303
- const propertyTranslatorsBySdName = {};
27304
- propertyTranslators.forEach((translator2) => {
27305
- propertyTranslatorsByXmlName[translator2.xmlName] = translator2;
27306
- propertyTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
27307
- });
27308
- const config$f = {
27309
- xmlName: XML_NODE_NAME$g,
27310
- sdNodeOrKeyName: SD_ATTR_KEY$3,
27311
- encode: encode$m,
27312
- decode: decode$o
27313
- };
27314
- const translator$g = NodeTranslator.from(config$f);
27315
- const translator$f = NodeTranslator.from(
27241
+ const translator$v = NodeTranslator.from(
27242
+ createNestedPropertiesTranslator("w:tblPr", "tableProperties", propertyTranslators$3)
27243
+ );
27244
+ const translator$u = NodeTranslator.from(
27316
27245
  createSingleAttrPropertyHandler("w:gridCol", "col", "w:w", parseInteger, integerToString)
27317
27246
  );
27318
27247
  const DEFAULT_COLUMN_WIDTH_PX = 100;
@@ -27362,20 +27291,20 @@ const resolveFallbackColumnWidthTwips = (params2, totalColumns, cellMinWidthTwip
27362
27291
  }
27363
27292
  return Math.max(fallbackWidthTwips, cellMinWidthTwips);
27364
27293
  };
27365
- const XML_NODE_NAME$f = "w:tblGrid";
27366
- const SD_ATTR_KEY$2 = "grid";
27294
+ const XML_NODE_NAME$g = "w:tblGrid";
27295
+ const SD_ATTR_KEY$3 = "grid";
27367
27296
  const cellMinWidth = pixelsToTwips(10);
27368
- const encode$l = (params2) => {
27297
+ const encode$m = (params2) => {
27369
27298
  const { nodes } = params2;
27370
27299
  const node = nodes[0];
27371
- const attributes = encodeProperties(node, { [translator$f.xmlName]: translator$f }, true);
27300
+ const attributes = encodeProperties(node, { [translator$u.xmlName]: translator$u }, true);
27372
27301
  return {
27373
- xmlName: XML_NODE_NAME$f,
27374
- sdNodeOrKeyName: SD_ATTR_KEY$2,
27302
+ xmlName: XML_NODE_NAME$g,
27303
+ sdNodeOrKeyName: SD_ATTR_KEY$3,
27375
27304
  attributes
27376
27305
  };
27377
27306
  };
27378
- const decode$n = (params2) => {
27307
+ const decode$o = (params2) => {
27379
27308
  const { grid: rawGrid } = params2.node.attrs || {};
27380
27309
  const grid = Array.isArray(rawGrid) ? rawGrid : [];
27381
27310
  const { firstRow = {} } = params2.extraParams || {};
@@ -27394,10 +27323,10 @@ const decode$n = (params2) => {
27394
27323
  numericWidth = fallbackColumnWidthTwips;
27395
27324
  }
27396
27325
  numericWidth = Math.max(numericWidth, cellMinWidth);
27397
- const decoded = translator$f.decode({
27326
+ const decoded = translator$u.decode({
27398
27327
  node: { type: (
27399
27328
  /** @type {string} */
27400
- translator$f.sdNodeOrKeyName
27329
+ translator$u.sdNodeOrKeyName
27401
27330
  ), attrs: { col: numericWidth } }
27402
27331
  });
27403
27332
  if (decoded) elements.push(decoded);
@@ -27432,19 +27361,19 @@ const decode$n = (params2) => {
27432
27361
  columnIndex++;
27433
27362
  }
27434
27363
  const newNode = {
27435
- name: XML_NODE_NAME$f,
27364
+ name: XML_NODE_NAME$g,
27436
27365
  attributes: {},
27437
27366
  elements
27438
27367
  };
27439
27368
  return newNode;
27440
27369
  };
27441
- const config$e = {
27442
- xmlName: XML_NODE_NAME$f,
27443
- sdNodeOrKeyName: SD_ATTR_KEY$2,
27444
- encode: encode$l,
27445
- decode: decode$n
27370
+ const config$f = {
27371
+ xmlName: XML_NODE_NAME$g,
27372
+ sdNodeOrKeyName: SD_ATTR_KEY$3,
27373
+ encode: encode$m,
27374
+ decode: decode$o
27446
27375
  };
27447
- const translator$e = NodeTranslator.from(config$e);
27376
+ const translator$t = NodeTranslator.from(config$f);
27448
27377
  const DEFAULT_PAGE_WIDTH_TWIPS = 12240;
27449
27378
  const DEFAULT_PAGE_MARGIN_TWIPS = 1440;
27450
27379
  const DEFAULT_CONTENT_WIDTH_TWIPS = DEFAULT_PAGE_WIDTH_TWIPS - 2 * DEFAULT_PAGE_MARGIN_TWIPS;
@@ -27507,19 +27436,19 @@ const buildFallbackGridForTable = ({ params: params2, rows, tableWidth, tableWid
27507
27436
  columnWidths: Array(columnCount).fill(fallbackColumnWidthPx)
27508
27437
  };
27509
27438
  };
27510
- const XML_NODE_NAME$e = "w:tbl";
27439
+ const XML_NODE_NAME$f = "w:tbl";
27511
27440
  const SD_NODE_NAME$c = "table";
27512
- const encode$k = (params2, encodedAttrs) => {
27441
+ const encode$l = (params2, encodedAttrs) => {
27513
27442
  const { nodes } = params2;
27514
27443
  const node = nodes[0];
27515
27444
  const tblPr = node.elements.find((el) => el.name === "w:tblPr");
27516
27445
  if (tblPr) {
27517
- const encodedProperties = translator$g.encode({ ...params2, nodes: [tblPr] });
27518
- encodedAttrs["tableProperties"] = encodedProperties?.attributes || {};
27446
+ const encodedProperties = translator$v.encode({ ...params2, nodes: [tblPr] });
27447
+ encodedAttrs["tableProperties"] = encodedProperties || {};
27519
27448
  }
27520
27449
  const tblGrid = node.elements.find((el) => el.name === "w:tblGrid");
27521
27450
  if (tblGrid) {
27522
- encodedAttrs["grid"] = translator$e.encode({ ...params2, nodes: [tblGrid] }).attributes;
27451
+ encodedAttrs["grid"] = translator$t.encode({ ...params2, nodes: [tblGrid] }).attributes;
27523
27452
  }
27524
27453
  [
27525
27454
  "tableStyleId",
@@ -27586,7 +27515,7 @@ const encode$k = (params2, encodedAttrs) => {
27586
27515
  }
27587
27516
  const content = [];
27588
27517
  rows.forEach((row) => {
27589
- const result = translator$K.encode({
27518
+ const result = translator$Z.encode({
27590
27519
  ...params2,
27591
27520
  nodes: [row],
27592
27521
  extraParams: {
@@ -27605,13 +27534,13 @@ const encode$k = (params2, encodedAttrs) => {
27605
27534
  attrs: encodedAttrs
27606
27535
  };
27607
27536
  };
27608
- const decode$m = (params2, decodedAttrs) => {
27537
+ const decode$n = (params2, decodedAttrs) => {
27609
27538
  params2.node = preProcessVerticalMergeCells(params2.node, params2);
27610
27539
  const { node } = params2;
27611
27540
  const elements = translateChildNodes(params2);
27612
27541
  const firstRow = node.content?.find((n) => n.type === "tableRow");
27613
27542
  const properties = node.attrs.grid;
27614
- const element = translator$e.decode({
27543
+ const element = translator$t.decode({
27615
27544
  ...params2,
27616
27545
  node: { ...node, attrs: { ...node.attrs, grid: properties } },
27617
27546
  extraParams: {
@@ -27621,7 +27550,7 @@ const decode$m = (params2, decodedAttrs) => {
27621
27550
  if (element) elements.unshift(element);
27622
27551
  if (node.attrs?.tableProperties) {
27623
27552
  const properties2 = { ...node.attrs.tableProperties };
27624
- const element2 = translator$g.decode({
27553
+ const element2 = translator$v.decode({
27625
27554
  ...params2,
27626
27555
  node: { ...node, attrs: { ...node.attrs, tableProperties: properties2 } }
27627
27556
  });
@@ -27641,7 +27570,7 @@ function _processTableBorders(rawBorders) {
27641
27570
  const color = attributes.color;
27642
27571
  const size2 = attributes.size;
27643
27572
  if (color && color !== "auto") attrs["color"] = color.startsWith("#") ? color : `#${color}`;
27644
- if (size2 && size2 !== "auto") attrs["size"] = eigthPointsToPixels(size2);
27573
+ if (size2 && size2 !== "auto") attrs["size"] = eighthPointsToPixels(size2);
27645
27574
  const rowBorderNames = ["insideH", "insideV"];
27646
27575
  if (rowBorderNames.includes(name)) rowBorders[name] = attrs;
27647
27576
  borders[name] = attrs;
@@ -27687,7 +27616,7 @@ function _getReferencedTableStyles(tableStyleReference, params2) {
27687
27616
  if (baseTblPr && baseTblPr.elements) {
27688
27617
  tblPr.elements.push(...baseTblPr.elements);
27689
27618
  }
27690
- const tableProperties = translator$g.encode({ ...params2, nodes: [tblPr] }).attributes;
27619
+ const tableProperties = translator$v.encode({ ...params2, nodes: [tblPr] });
27691
27620
  const { borders, rowBorders } = _processTableBorders(tableProperties.borders || {});
27692
27621
  if (borders) stylesToReturn.borders = borders;
27693
27622
  if (rowBorders) stylesToReturn.rowBorders = rowBorders;
@@ -27704,16 +27633,16 @@ function _getReferencedTableStyles(tableStyleReference, params2) {
27704
27633
  }
27705
27634
  return stylesToReturn;
27706
27635
  }
27707
- const config$d = {
27708
- xmlName: XML_NODE_NAME$e,
27636
+ const config$e = {
27637
+ xmlName: XML_NODE_NAME$f,
27709
27638
  sdNodeOrKeyName: SD_NODE_NAME$c,
27710
27639
  type: NodeTranslator.translatorTypes.NODE,
27711
- encode: encode$k,
27712
- decode: decode$m,
27640
+ encode: encode$l,
27641
+ decode: decode$n,
27713
27642
  attributes: []
27714
27643
  };
27715
- const translator$d = NodeTranslator.from(config$d);
27716
- const tableNodeHandlerEntity = generateV2HandlerEntity("tableNodeHandler", translator$d);
27644
+ const translator$s = NodeTranslator.from(config$e);
27645
+ const tableNodeHandlerEntity = generateV2HandlerEntity("tableNodeHandler", translator$s);
27717
27646
  function getReferencedTableStyles(tblStyleTag, docx) {
27718
27647
  if (!tblStyleTag) return null;
27719
27648
  const stylesToReturn = {};
@@ -27784,7 +27713,7 @@ function processTableBorders(borderElements) {
27784
27713
  const color = attributes["w:color"];
27785
27714
  const size2 = attributes["w:sz"];
27786
27715
  if (color && color !== "auto") attrs["color"] = color.startsWith("#") ? color : `#${color}`;
27787
- if (size2 && size2 !== "auto") attrs["size"] = eigthPointsToPixels(size2);
27716
+ if (size2 && size2 !== "auto") attrs["size"] = eighthPointsToPixels(size2);
27788
27717
  const rowBorderNames = ["insideH", "insideV"];
27789
27718
  if (rowBorderNames.includes(borderName)) rowBorders[borderName] = attrs;
27790
27719
  borders[borderName] = attrs;
@@ -27794,6 +27723,125 @@ function processTableBorders(borderElements) {
27794
27723
  rowBorders
27795
27724
  };
27796
27725
  }
27726
+ const translator$r = NodeTranslator.from(createMeasurementPropertyHandler("w:tcW", "cellWidth"));
27727
+ const translator$q = NodeTranslator.from(
27728
+ createSingleAttrPropertyHandler(
27729
+ "w:gridSpan",
27730
+ null,
27731
+ "w:val",
27732
+ (v2) => parseInteger(v2) ?? void 0,
27733
+ (v2) => integerToString(v2)
27734
+ )
27735
+ );
27736
+ const translator$p = NodeTranslator.from(createSingleAttrPropertyHandler("w:vMerge"));
27737
+ const translator$o = NodeTranslator.from(createBorderPropertyHandler("w:tl2br"));
27738
+ const translator$n = NodeTranslator.from(createBorderPropertyHandler("w:tr2bl"));
27739
+ const propertyTranslators$2 = [
27740
+ translator$z,
27741
+ translator$B,
27742
+ translator$F,
27743
+ translator$L,
27744
+ translator$J,
27745
+ translator$D,
27746
+ translator$H,
27747
+ translator$G,
27748
+ translator$o,
27749
+ translator$n
27750
+ ];
27751
+ const translator$m = NodeTranslator.from(
27752
+ createNestedPropertiesTranslator("w:tcBorders", "borders", propertyTranslators$2)
27753
+ );
27754
+ const translator$l = NodeTranslator.from(
27755
+ createSingleAttrPropertyHandler(
27756
+ "w:noWrap",
27757
+ null,
27758
+ "w:val",
27759
+ (v2) => parseBoolean(v2 ?? "true"),
27760
+ (v2) => booleanToString(v2)
27761
+ )
27762
+ );
27763
+ const propertyTranslators$1 = [
27764
+ translator$K,
27765
+ translator$I,
27766
+ translator$E,
27767
+ translator$C,
27768
+ translator$A,
27769
+ translator$y
27770
+ ];
27771
+ const translator$k = NodeTranslator.from(
27772
+ createNestedPropertiesTranslator("w:tcMar", "cellMargins", propertyTranslators$1)
27773
+ );
27774
+ const translator$j = NodeTranslator.from(createSingleAttrPropertyHandler("w:textDirection"));
27775
+ const translator$i = NodeTranslator.from(
27776
+ createSingleAttrPropertyHandler(
27777
+ "w:tcFitText",
27778
+ null,
27779
+ "w:val",
27780
+ (v2) => parseBoolean(v2 ?? "true"),
27781
+ (v2) => booleanToString(v2)
27782
+ )
27783
+ );
27784
+ const translator$h = NodeTranslator.from(createSingleAttrPropertyHandler("w:vAlign"));
27785
+ const translator$g = NodeTranslator.from(
27786
+ createSingleAttrPropertyHandler(
27787
+ "w:hideMark",
27788
+ null,
27789
+ "w:val",
27790
+ (v2) => parseBoolean(v2 ?? "true"),
27791
+ (v2) => booleanToString(v2)
27792
+ )
27793
+ );
27794
+ const translator$f = NodeTranslator.from(createSingleAttrPropertyHandler("w:header"));
27795
+ const XML_NODE_NAME$e = "w:headers";
27796
+ const SD_ATTR_KEY$2 = "headers";
27797
+ const encode$k = (params2) => {
27798
+ const { nodes } = params2;
27799
+ const node = nodes[0];
27800
+ const attributes = encodeProperties(node, { [translator$f.xmlName]: translator$f }, true);
27801
+ return {
27802
+ xmlName: XML_NODE_NAME$e,
27803
+ sdNodeOrKeyName: SD_ATTR_KEY$2,
27804
+ attributes
27805
+ };
27806
+ };
27807
+ const decode$m = (params2) => {
27808
+ const { headers = [] } = params2.node.attrs || {};
27809
+ const newNode = {
27810
+ name: XML_NODE_NAME$e,
27811
+ attributes: {},
27812
+ elements: headers.map(
27813
+ (header) => translator$f.decode({
27814
+ node: { type: "header", attrs: header }
27815
+ })
27816
+ )
27817
+ };
27818
+ return newNode;
27819
+ };
27820
+ const config$d = {
27821
+ xmlName: XML_NODE_NAME$e,
27822
+ sdNodeOrKeyName: SD_ATTR_KEY$2,
27823
+ encode: encode$k,
27824
+ decode: decode$m
27825
+ };
27826
+ const translator$e = NodeTranslator.from(config$d);
27827
+ const propertyTranslators = [
27828
+ translator$19,
27829
+ translator$r,
27830
+ translator$q,
27831
+ translator$p,
27832
+ translator$m,
27833
+ translator$X,
27834
+ translator$l,
27835
+ translator$k,
27836
+ translator$j,
27837
+ translator$i,
27838
+ translator$h,
27839
+ translator$g,
27840
+ translator$e
27841
+ ];
27842
+ const translator$d = NodeTranslator.from(
27843
+ createNestedPropertiesTranslator("w:tcPr", "tableCellProperties", propertyTranslators)
27844
+ );
27797
27845
  function handleTableCellNode({
27798
27846
  params: params2,
27799
27847
  node,
@@ -27806,8 +27854,10 @@ function handleTableCellNode({
27806
27854
  allColumnWidths = []
27807
27855
  }) {
27808
27856
  const { docx, nodeListHandler } = params2;
27857
+ const attributes = {};
27809
27858
  const tcPr = node.elements.find((el) => el.name === "w:tcPr");
27810
- const borders = tcPr?.elements?.find((el) => el.name === "w:tcBorders");
27859
+ const tableCellProperties = tcPr ? translator$d.encode({ ...params2, nodes: [tcPr] }) ?? {} : {};
27860
+ attributes["tableCellProperties"] = tableCellProperties;
27811
27861
  if (rowBorders?.insideH) {
27812
27862
  rowBorders["bottom"] = rowBorders.insideH;
27813
27863
  delete rowBorders.insideH;
@@ -27816,33 +27866,20 @@ function handleTableCellNode({
27816
27866
  rowBorders["right"] = rowBorders.insideV;
27817
27867
  delete rowBorders?.insideV;
27818
27868
  }
27819
- const inlineBorders = processInlineCellBorders(borders, rowBorders);
27820
- const gridColumnWidths = allColumnWidths;
27821
- const tcWidth = tcPr?.elements?.find((el) => el.name === "w:tcW");
27822
- let width = tcWidth ? twipsToPixels(tcWidth.attributes["w:w"]) : null;
27823
- const widthType = tcWidth?.attributes["w:type"];
27869
+ if (rowBorders) attributes["borders"] = { ...rowBorders };
27870
+ const inlineBorders = processInlineCellBorders(tableCellProperties.borders, rowBorders);
27871
+ if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
27872
+ const colspan = tableCellProperties.gridSpan;
27873
+ if (colspan && !isNaN(parseInt(colspan, 10))) attributes["colspan"] = parseInt(colspan, 10);
27874
+ let width = tableCellProperties.cellWidth?.value ? twipsToPixels(tableCellProperties.cellWidth?.value) : null;
27875
+ const widthType = tableCellProperties.cellWidth?.type;
27876
+ if (widthType) attributes["widthType"] = widthType;
27824
27877
  if (!width && columnWidth) width = columnWidth;
27825
- const vMerge = getTableCellMergeTag(node);
27826
- const { attributes: vMergeAttrs } = vMerge || {};
27827
- const backgroundColor = tcPr?.elements?.find((el) => el.name === "w:shd");
27828
- const background = {
27829
- color: backgroundColor?.attributes["w:fill"]
27830
- };
27831
- const colspanTag = tcPr?.elements?.find((el) => el.name === "w:gridSpan");
27832
- const colspan = colspanTag?.attributes["w:val"];
27833
- const marginTag = tcPr?.elements?.find((el) => el.name === "w:tcMar");
27834
- const verticalAlignTag = tcPr?.elements?.find((el) => el.name === "w:vAlign");
27835
- const verticalAlign = verticalAlignTag?.attributes["w:val"] || "top";
27836
- const attributes = {};
27837
- const referencedStyles = getReferencedTableStyles(styleTag, docx) || {};
27838
- attributes.cellMargins = getTableCellMargins(marginTag, referencedStyles);
27839
- const { fontSize: fontSize2, fonts = {} } = referencedStyles;
27840
- const fontFamily2 = fonts["ascii"];
27841
27878
  if (width) {
27842
27879
  attributes["colwidth"] = [width];
27843
27880
  attributes["widthUnit"] = "px";
27844
- const defaultColWidths = gridColumnWidths;
27845
- const hasDefaultColWidths = gridColumnWidths && gridColumnWidths.length > 0;
27881
+ const defaultColWidths = allColumnWidths;
27882
+ const hasDefaultColWidths = allColumnWidths && allColumnWidths.length > 0;
27846
27883
  const colspanNum = parseInt(colspan || 1, 10);
27847
27884
  if (colspanNum && colspanNum > 1 && hasDefaultColWidths) {
27848
27885
  let colwidth = [];
@@ -27860,15 +27897,19 @@ function handleTableCellNode({
27860
27897
  }
27861
27898
  }
27862
27899
  }
27863
- if (widthType) attributes["widthType"] = widthType;
27864
- if (colspan) attributes["colspan"] = parseInt(colspan, 10);
27865
- if (background) attributes["background"] = background;
27866
- attributes["verticalAlign"] = verticalAlign;
27900
+ const background = {
27901
+ color: tableCellProperties.shading?.fill
27902
+ };
27903
+ if (background.color) attributes["background"] = background;
27904
+ const verticalAlign = tableCellProperties.vAlign;
27905
+ if (verticalAlign) attributes["verticalAlign"] = verticalAlign;
27906
+ const referencedStyles = getReferencedTableStyles(styleTag, docx) || { fontSize: null, fonts: {}, cellMargins: {} };
27907
+ attributes.cellMargins = getTableCellMargins(tableCellProperties.cellMargins, referencedStyles);
27908
+ const { fontSize: fontSize2, fonts = {} } = referencedStyles;
27909
+ const fontFamily2 = fonts["ascii"];
27867
27910
  if (fontSize2) attributes["fontSize"] = fontSize2;
27868
- if (fontFamily2) attributes["fontFamily"] = fontFamily2["ascii"];
27869
- if (rowBorders) attributes["borders"] = { ...rowBorders };
27870
- if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
27871
- if (vMergeAttrs && vMergeAttrs["w:val"] === "restart") {
27911
+ if (fontFamily2) attributes["fontFamily"] = fontFamily2;
27912
+ if (tableCellProperties.vMerge === "restart") {
27872
27913
  const rows = table.elements.filter((el) => el.name === "w:tr");
27873
27914
  const currentRowIndex = rows.findIndex((r2) => r2 === row);
27874
27915
  const remainingRows = rows.slice(currentRowIndex + 1);
@@ -27879,9 +27920,8 @@ function handleTableCellNode({
27879
27920
  const firstCell = remainingRow.elements.findIndex((el) => el.name === "w:tc");
27880
27921
  const cellAtIndex = remainingRow.elements[firstCell + cellIndex];
27881
27922
  if (!cellAtIndex) break;
27882
- const vMerge2 = getTableCellMergeTag(cellAtIndex);
27883
- const { attributes: currentCellMergeAttrs } = vMerge2 || {};
27884
- if (!vMerge2 && !currentCellMergeAttrs || currentCellMergeAttrs && currentCellMergeAttrs["w:val"] === "restart") {
27923
+ const vMerge = getTableCellVMerge(cellAtIndex);
27924
+ if (!vMerge || vMerge === "restart") {
27885
27925
  break;
27886
27926
  }
27887
27927
  rowspan++;
@@ -27901,69 +27941,52 @@ function handleTableCellNode({
27901
27941
  }
27902
27942
  const processInlineCellBorders = (borders, rowBorders) => {
27903
27943
  if (!borders) return null;
27904
- const processedBorders = {};
27905
- const inlineBorderBottom = processBorder(borders, "bottom", rowBorders);
27906
- if (inlineBorderBottom) processedBorders["bottom"] = inlineBorderBottom;
27907
- const inlineBorderTop = processBorder(borders, "top", rowBorders);
27908
- if (inlineBorderTop) processedBorders["top"] = inlineBorderTop;
27909
- const inlineBorderLeft = processBorder(borders, "left", rowBorders);
27910
- if (inlineBorderLeft) processedBorders["left"] = inlineBorderLeft;
27911
- const inlineBorderRight = processBorder(borders, "right", rowBorders);
27912
- if (inlineBorderRight) processedBorders["right"] = inlineBorderRight;
27913
- return processedBorders;
27914
- };
27915
- const processBorder = (borders, direction, rowBorders = {}) => {
27916
- const borderAttrs = borders?.elements?.find((el) => el.name === `w:${direction}`)?.attributes;
27917
- if (borderAttrs && borderAttrs["w:val"] !== "nil") {
27918
- const border = {};
27919
- const color = borderAttrs["w:color"];
27920
- if (color) border["color"] = color === "auto" ? "#000000" : `#${color}`;
27921
- const size2 = borderAttrs["w:sz"];
27922
- if (size2) border["size"] = eigthPointsToPixels(size2);
27923
- return border;
27924
- }
27925
- if (borderAttrs && borderAttrs["w:val"] === "nil") {
27926
- const border = Object.assign({}, rowBorders[direction] || {});
27927
- if (!Object.keys(border)) return null;
27928
- border["val"] = "none";
27929
- return border;
27930
- }
27931
- return null;
27944
+ return ["bottom", "top", "left", "right"].reduce((acc, direction) => {
27945
+ const borderAttrs = borders[direction];
27946
+ const rowBorderAttrs = rowBorders[direction];
27947
+ if (borderAttrs && borderAttrs["val"] !== "nil") {
27948
+ const color = borderAttrs["color"];
27949
+ let size2 = borderAttrs["size"];
27950
+ if (size2) size2 = eighthPointsToPixels(size2);
27951
+ acc[direction] = { color, size: size2, val: borderAttrs["val"] };
27952
+ return acc;
27953
+ }
27954
+ if (borderAttrs && borderAttrs["val"] === "nil") {
27955
+ const border = Object.assign({}, rowBorderAttrs || {});
27956
+ if (!Object.keys(border).length) {
27957
+ return acc;
27958
+ } else {
27959
+ border["val"] = "none";
27960
+ acc[direction] = border;
27961
+ return acc;
27962
+ }
27963
+ }
27964
+ return acc;
27965
+ }, {});
27932
27966
  };
27933
- const getTableCellMergeTag = (node) => {
27967
+ const getTableCellVMerge = (node) => {
27934
27968
  const tcPr = node.elements.find((el) => el.name === "w:tcPr");
27935
27969
  const vMerge = tcPr?.elements?.find((el) => el.name === "w:vMerge");
27936
- return vMerge;
27937
- };
27938
- const getTableCellMargins = (marginTag, referencedStyles) => {
27939
- const inlineMarginLeftTag = marginTag?.elements?.find((el) => el.name === "w:left");
27940
- const inlineMarginRightTag = marginTag?.elements?.find((el) => el.name === "w:right");
27941
- const inlineMarginTopTag = marginTag?.elements?.find((el) => el.name === "w:top");
27942
- const inlineMarginBottomTag = marginTag?.elements?.find((el) => el.name === "w:bottom");
27943
- const inlineMarginLeftValue = inlineMarginLeftTag?.attributes["w:w"];
27944
- const inlineMarginRightValue = inlineMarginRightTag?.attributes["w:w"];
27945
- const inlineMarginTopValue = inlineMarginTopTag?.attributes["w:w"];
27946
- const inlineMarginBottomValue = inlineMarginBottomTag?.attributes["w:w"];
27970
+ if (!vMerge) return null;
27971
+ return vMerge.attributes?.["w:val"] || "continue";
27972
+ };
27973
+ const getTableCellMargins = (inlineMargins, referencedStyles) => {
27947
27974
  const { cellMargins = {} } = referencedStyles;
27948
- const {
27949
- marginLeft: marginLeftStyle,
27950
- marginRight: marginRightStyle,
27951
- marginTop: marginTopStyle,
27952
- marginBottom: marginBottomStyle
27953
- } = cellMargins;
27954
- const resolveMargin = (inlineValue, styleValue) => {
27955
- if (inlineValue != null) return inlineValue;
27956
- if (styleValue == null) return void 0;
27957
- if (typeof styleValue === "object") return styleValue.value;
27958
- return styleValue;
27959
- };
27960
- const margins = {
27961
- left: twipsToPixels(resolveMargin(inlineMarginLeftValue, marginLeftStyle)),
27962
- right: twipsToPixels(resolveMargin(inlineMarginRightValue, marginRightStyle)),
27963
- top: twipsToPixels(resolveMargin(inlineMarginTopValue, marginTopStyle)),
27964
- bottom: twipsToPixels(resolveMargin(inlineMarginBottomValue, marginBottomStyle))
27965
- };
27966
- return margins;
27975
+ return ["left", "right", "top", "bottom"].reduce((acc, direction) => {
27976
+ const key2 = `margin${direction.charAt(0).toUpperCase() + direction.slice(1)}`;
27977
+ const inlineValue = inlineMargins ? inlineMargins?.[key2]?.value : null;
27978
+ const styleValue = cellMargins ? cellMargins[key2] : null;
27979
+ if (inlineValue != null) {
27980
+ acc[direction] = twipsToPixels(inlineValue);
27981
+ } else if (styleValue == null) {
27982
+ acc[direction] = void 0;
27983
+ } else if (typeof styleValue === "object") {
27984
+ acc[direction] = twipsToPixels(styleValue.value);
27985
+ } else {
27986
+ acc[direction] = twipsToPixels(styleValue);
27987
+ }
27988
+ return acc;
27989
+ }, {});
27967
27990
  };
27968
27991
  function translateTableCell(params2) {
27969
27992
  const elements = translateChildNodes({
@@ -27978,102 +28001,86 @@ function translateTableCell(params2) {
27978
28001
  };
27979
28002
  }
27980
28003
  function generateTableCellProperties(node) {
27981
- const elements = [];
28004
+ const tableCellProperties = { ...node.attrs?.tableCellProperties || {} };
27982
28005
  const { attrs } = node;
27983
- const { colwidth = [], cellWidthType = "dxa", background = {}, colspan, rowspan, widthUnit } = attrs;
28006
+ const { colwidth = [], cellWidthType = "dxa", widthUnit } = attrs;
27984
28007
  const colwidthSum = colwidth.reduce((acc, curr) => acc + curr, 0);
27985
- const cellWidthElement = {
27986
- name: "w:tcW",
27987
- attributes: {
27988
- "w:w": widthUnit === "px" ? pixelsToTwips(colwidthSum) : inchesToTwips(colwidthSum),
27989
- "w:type": cellWidthType
27990
- }
27991
- };
27992
- elements.push(cellWidthElement);
27993
- if (colspan) {
27994
- const gridSpanElement = {
27995
- name: "w:gridSpan",
27996
- attributes: { "w:val": `${colspan}` }
28008
+ const propertiesWidthPixels = twipsToPixels(tableCellProperties.cellWidth?.value);
28009
+ if (propertiesWidthPixels !== colwidthSum) {
28010
+ tableCellProperties["cellWidth"] = {
28011
+ value: widthUnit === "px" ? pixelsToTwips(colwidthSum) : inchesToTwips(colwidthSum),
28012
+ type: cellWidthType
27997
28013
  };
27998
- elements.push(gridSpanElement);
27999
28014
  }
28000
- const { color } = background || {};
28001
- if (color) {
28002
- const cellBgElement = {
28003
- name: "w:shd",
28004
- attributes: { "w:fill": color }
28005
- };
28006
- elements.push(cellBgElement);
28015
+ const { colspan } = attrs;
28016
+ if (colspan > 1 && tableCellProperties.gridSpan !== colspan) {
28017
+ tableCellProperties["gridSpan"] = colspan;
28018
+ } else if (!colspan || tableCellProperties?.gridSpan === 1) {
28019
+ delete tableCellProperties.gridSpan;
28020
+ }
28021
+ const { background = {} } = attrs;
28022
+ if (background?.color && tableCellProperties.shading?.fill !== background?.color) {
28023
+ tableCellProperties["shading"] = { fill: background.color };
28024
+ } else if (!background?.color && tableCellProperties?.shading?.fill) {
28025
+ delete tableCellProperties.shading;
28007
28026
  }
28008
28027
  const { cellMargins } = attrs;
28009
28028
  if (cellMargins) {
28010
- const cellMarginsElement = {
28011
- name: "w:tcMar",
28012
- elements: generateCellMargins(cellMargins)
28013
- };
28014
- elements.push(cellMarginsElement);
28029
+ ["left", "right", "top", "bottom"].forEach((side) => {
28030
+ const key2 = `margin${side.charAt(0).toUpperCase() + side.slice(1)}`;
28031
+ if (cellMargins[side] != null) {
28032
+ if (!tableCellProperties.cellMargins) tableCellProperties["cellMargins"] = {};
28033
+ let currentPropertyValuePixels = twipsToPixels(tableCellProperties.cellMargins?.[key2]?.value);
28034
+ if (currentPropertyValuePixels !== cellMargins[side]) {
28035
+ tableCellProperties.cellMargins[key2] = { value: pixelsToTwips(cellMargins[side]), type: "dxa" };
28036
+ }
28037
+ } else if (tableCellProperties?.cellMargins?.[key2]) {
28038
+ delete tableCellProperties.cellMargins[key2];
28039
+ }
28040
+ });
28015
28041
  }
28016
28042
  const { verticalAlign } = attrs;
28017
- if (verticalAlign) {
28018
- const vertAlignElement = {
28019
- name: "w:vAlign",
28020
- attributes: { "w:val": verticalAlign }
28021
- };
28022
- elements.push(vertAlignElement);
28023
- }
28024
- if (rowspan && rowspan > 1) {
28025
- const vMergeElement = {
28026
- name: "w:vMerge",
28027
- type: "element",
28028
- attributes: { "w:val": "restart" }
28029
- };
28030
- elements.push(vMergeElement);
28043
+ if (verticalAlign && verticalAlign !== tableCellProperties.vAlign) {
28044
+ tableCellProperties["vAlign"] = verticalAlign;
28045
+ } else if (!verticalAlign && tableCellProperties?.vAlign) {
28046
+ delete tableCellProperties.vAlign;
28047
+ }
28048
+ const { rowspan } = attrs;
28049
+ if (rowspan && rowspan > 1 && tableCellProperties.vMerge !== "restart") {
28050
+ tableCellProperties["vMerge"] = "restart";
28031
28051
  } else if (attrs.continueMerge) {
28032
- const vMergeElement = {
28033
- name: "w:vMerge",
28034
- type: "element"
28035
- };
28036
- elements.push(vMergeElement);
28052
+ tableCellProperties["vMerge"] = "continue";
28053
+ } else if (tableCellProperties?.vMerge) {
28054
+ delete tableCellProperties.vMerge;
28037
28055
  }
28038
28056
  const { borders = {} } = attrs;
28039
28057
  if (!!borders && Object.keys(borders).length) {
28040
- const cellBordersElement = {
28041
- name: "w:tcBorders",
28042
- elements: Object.entries(borders).map(([key2, value]) => {
28043
- if (!value.size || value.val === "none") {
28044
- return {
28045
- name: `w:${key2}`,
28046
- attributes: {
28047
- "w:val": "nil"
28048
- }
28058
+ ["top", "bottom", "left", "right"].forEach((side) => {
28059
+ if (borders[side]) {
28060
+ let currentPropertyValue = tableCellProperties.borders?.[side];
28061
+ let currentPropertySizePixels = eighthPointsToPixels(currentPropertyValue?.size);
28062
+ let color = borders[side].color;
28063
+ if (borders[side].color && color === "#000000") {
28064
+ color = "auto";
28065
+ }
28066
+ if (currentPropertySizePixels !== borders[side].size || currentPropertyValue?.color !== color || borders[side].val !== currentPropertyValue?.val) {
28067
+ if (!tableCellProperties.borders) tableCellProperties["borders"] = {};
28068
+ tableCellProperties.borders[side] = {
28069
+ size: pixelsToEightPoints(borders[side].size || 0),
28070
+ color,
28071
+ space: borders[side].space || 0,
28072
+ val: borders[side].val || "single"
28049
28073
  };
28050
28074
  }
28051
- return {
28052
- name: `w:${key2}`,
28053
- attributes: {
28054
- "w:val": "single",
28055
- "w:color": value.color ? value.color.substring(1) : "auto",
28056
- "w:sz": pixelsToEightPoints(value.size),
28057
- "w:space": value.space || 0
28058
- }
28059
- };
28060
- })
28061
- };
28062
- elements.push(cellBordersElement);
28075
+ } else if (tableCellProperties.borders?.[side]) {
28076
+ delete tableCellProperties.borders[side];
28077
+ }
28078
+ });
28079
+ } else if (tableCellProperties?.borders) {
28080
+ delete tableCellProperties.borders;
28063
28081
  }
28064
- return {
28065
- name: "w:tcPr",
28066
- elements
28067
- };
28068
- }
28069
- function generateCellMargins(cellMargins) {
28070
- const elements = [];
28071
- const { top: top2, right: right2, bottom: bottom2, left: left2 } = cellMargins;
28072
- if (top2 != null) elements.push({ name: "w:top", attributes: { "w:w": pixelsToTwips(top2) } });
28073
- if (right2 != null) elements.push({ name: "w:right", attributes: { "w:w": pixelsToTwips(right2) } });
28074
- if (bottom2 != null) elements.push({ name: "w:bottom", attributes: { "w:w": pixelsToTwips(bottom2) } });
28075
- if (left2 != null) elements.push({ name: "w:left", attributes: { "w:w": pixelsToTwips(left2) } });
28076
- return elements;
28082
+ const result = translator$d.decode({ node: { ...node, attrs: { ...node.attrs, tableCellProperties } } });
28083
+ return result;
28077
28084
  }
28078
28085
  const XML_NODE_NAME$d = "w:tc";
28079
28086
  const SD_NODE_NAME$b = "tableCell";
@@ -31685,8 +31692,8 @@ const trackChangeNodeHandlerEntity = {
31685
31692
  handlerName: "trackChangeNodeHandler",
31686
31693
  handler: handleTrackChangeNode
31687
31694
  };
31688
- const hyperlinkNodeHandlerEntity = generateV2HandlerEntity("hyperlinkNodeHandler", translator$Z);
31689
- const runNodeHandlerEntity = generateV2HandlerEntity("runNodeHandler", translator$Y);
31695
+ const hyperlinkNodeHandlerEntity = generateV2HandlerEntity("hyperlinkNodeHandler", translator$1c);
31696
+ const runNodeHandlerEntity = generateV2HandlerEntity("runNodeHandler", translator$1b);
31690
31697
  function parseProperties(node) {
31691
31698
  const marks = [];
31692
31699
  const unknownMarks = [];
@@ -31778,7 +31785,7 @@ const handleParagraphNode = (params2) => {
31778
31785
  if (nodes.length === 0 || nodes[0].name !== "w:p") {
31779
31786
  return { nodes: [], consumed: 0 };
31780
31787
  }
31781
- const schemaNode = translator$19.encode(params2);
31788
+ const schemaNode = translator$1o.encode(params2);
31782
31789
  const newNodes = schemaNode ? [schemaNode] : [];
31783
31790
  return { nodes: newNodes, consumed: 1 };
31784
31791
  };
@@ -31881,7 +31888,7 @@ const handler = (params2) => {
31881
31888
  if (nodes.length === 0 || nodes[0].name !== "w:br") {
31882
31889
  return { nodes: [], consumed: 0 };
31883
31890
  }
31884
- const result = translator$1c.encode(params2);
31891
+ const result = translator$1r.encode(params2);
31885
31892
  if (!result) return { nodes: [], consumed: 0 };
31886
31893
  return {
31887
31894
  nodes: [result],
@@ -32507,7 +32514,7 @@ const handleTabNode = (params2) => {
32507
32514
  if (!nodes.length || nodes[0].name !== "w:tab") {
32508
32515
  return { nodes: [], consumed: 0 };
32509
32516
  }
32510
- const node = translator$1a.encode(params2);
32517
+ const node = translator$1p.encode(params2);
32511
32518
  return { nodes: [node], consumed: 1 };
32512
32519
  };
32513
32520
  const tabNodeEntityHandler = {
@@ -32759,12 +32766,14 @@ const createDocumentJson = (docx, converter, editor) => {
32759
32766
  const content = pruneIgnoredNodes(contentElements);
32760
32767
  const comments = importCommentData({ docx, converter, editor });
32761
32768
  const lists = {};
32769
+ const inlineDocumentFonts = [];
32762
32770
  let parsedContent = nodeListHandler.handler({
32763
32771
  nodes: content,
32764
32772
  nodeListHandler,
32765
32773
  docx,
32766
32774
  converter,
32767
32775
  editor,
32776
+ inlineDocumentFonts,
32768
32777
  lists,
32769
32778
  path: []
32770
32779
  });
@@ -32787,6 +32796,7 @@ const createDocumentJson = (docx, converter, editor) => {
32787
32796
  savedTagsToRestore: node,
32788
32797
  pageStyles: getDocumentStyles(node, docx, converter, editor),
32789
32798
  comments,
32799
+ inlineDocumentFonts,
32790
32800
  linkedStyles: getStyleDefinitions(docx),
32791
32801
  numbering: getNumberingDefinitions(docx)
32792
32802
  };
@@ -32850,6 +32860,7 @@ const createNodeListHandler = (nodeHandlers) => {
32850
32860
  filename,
32851
32861
  parentStyleId,
32852
32862
  lists,
32863
+ inlineDocumentFonts,
32853
32864
  path = []
32854
32865
  }) => {
32855
32866
  if (!elements || !elements.length) return [];
@@ -32876,6 +32887,7 @@ const createNodeListHandler = (nodeHandlers) => {
32876
32887
  filename,
32877
32888
  parentStyleId,
32878
32889
  lists,
32890
+ inlineDocumentFonts,
32879
32891
  path
32880
32892
  });
32881
32893
  },
@@ -33455,7 +33467,7 @@ function translateVRectContentBlock(params2) {
33455
33467
  const XML_NODE_NAME = "w:pict";
33456
33468
  const SD_NODE_NAME = ["shapeContainer", "contentBlock"];
33457
33469
  const validXmlAttributes = [];
33458
- function encode$1f(params2) {
33470
+ function encode$1c(params2) {
33459
33471
  const { node, pNode } = params2.extraParams;
33460
33472
  const { type: pictType, handler: handler2 } = pictNodeTypeStrategy(node);
33461
33473
  if (!handler2 || pictType === "unknown") {
@@ -33487,7 +33499,7 @@ const config = {
33487
33499
  xmlName: XML_NODE_NAME,
33488
33500
  sdNodeOrKeyName: SD_NODE_NAME,
33489
33501
  type: NodeTranslator.translatorTypes.NODE,
33490
- encode: encode$1f,
33502
+ encode: encode$1c,
33491
33503
  decode,
33492
33504
  attributes: validXmlAttributes
33493
33505
  };
@@ -33563,21 +33575,21 @@ function exportSchemaToJson(params2) {
33563
33575
  doc: translateDocumentNode,
33564
33576
  body: translateBodyNode,
33565
33577
  heading: translateHeadingNode,
33566
- paragraph: translator$19,
33567
- run: translator$Y,
33578
+ paragraph: translator$1o,
33579
+ run: translator$1b,
33568
33580
  text: translateTextNode,
33569
33581
  bulletList: translateList,
33570
33582
  orderedList: translateList,
33571
- lineBreak: translator$1c,
33572
- table: translator$d,
33573
- tableRow: translator$K,
33583
+ lineBreak: translator$1r,
33584
+ table: translator$s,
33585
+ tableRow: translator$Z,
33574
33586
  tableCell: translator$c,
33575
33587
  bookmarkStart: translator$7,
33576
33588
  bookmarkEnd: translator$6,
33577
33589
  fieldAnnotation: translator$8,
33578
- tab: translator$1a,
33590
+ tab: translator$1p,
33579
33591
  image: translator$9,
33580
- hardBreak: translator$1c,
33592
+ hardBreak: translator$1r,
33581
33593
  commentRangeStart: commentRangeStartTranslator,
33582
33594
  commentRangeEnd: commentRangeEndTranslator,
33583
33595
  commentReference: () => null,
@@ -33938,7 +33950,7 @@ function translateTextNode(params2) {
33938
33950
  }
33939
33951
  const isLinkNode = node.marks?.some((m2) => m2.type === "link");
33940
33952
  if (isLinkNode && !extraParams?.linkProcessed) {
33941
- return translator$Z.decode(params2);
33953
+ return translator$1c.decode(params2);
33942
33954
  }
33943
33955
  const { text, marks = [] } = node;
33944
33956
  return getTextNodeForExport(text, marks, params2);
@@ -34198,7 +34210,7 @@ function translateMark(mark) {
34198
34210
  markElement.type = "element";
34199
34211
  break;
34200
34212
  case "underline": {
34201
- const translated = translator$16.decode({
34213
+ const translated = translator$1l.decode({
34202
34214
  node: {
34203
34215
  attrs: {
34204
34216
  underlineType: attrs.underlineType ?? attrs.underline ?? null,
@@ -34262,7 +34274,7 @@ function translateMark(mark) {
34262
34274
  break;
34263
34275
  case "highlight": {
34264
34276
  const highlightValue = attrs.color ?? attrs.highlight ?? null;
34265
- const translated = translator$1b.decode({ node: { attrs: { highlight: highlightValue } } });
34277
+ const translated = translator$1q.decode({ node: { attrs: { highlight: highlightValue } } });
34266
34278
  return translated || {};
34267
34279
  }
34268
34280
  case "link":
@@ -34641,6 +34653,7 @@ const _SuperConverter = class _SuperConverter2 {
34641
34653
  this.fonts = params2?.fonts || {};
34642
34654
  this.addedMedia = {};
34643
34655
  this.comments = [];
34656
+ this.inlineDocumentFonts = [];
34644
34657
  this.docHiglightColors = /* @__PURE__ */ new Set([]);
34645
34658
  this.xml = params2?.xml;
34646
34659
  this.declaration = null;
@@ -34927,6 +34940,23 @@ const _SuperConverter = class _SuperConverter2 {
34927
34940
  return result;
34928
34941
  }
34929
34942
  getDocumentFonts() {
34943
+ const inlineDocumentFonts = [...new Set(this.inlineDocumentFonts || [])];
34944
+ const fontTable = this.convertedXml["word/fontTable.xml"];
34945
+ if (!fontTable) {
34946
+ return inlineDocumentFonts;
34947
+ }
34948
+ const wFonts = fontTable.elements?.find((element) => element.name === "w:fonts");
34949
+ if (!wFonts) {
34950
+ return inlineDocumentFonts;
34951
+ }
34952
+ if (!wFonts.elements) {
34953
+ return inlineDocumentFonts;
34954
+ }
34955
+ const fontsInFontTable = wFonts.elements.filter((element) => element.name === "w:font").map((element) => element.attributes["w:name"]);
34956
+ const allFonts = [...inlineDocumentFonts, ...fontsInFontTable];
34957
+ return [...new Set(allFonts)];
34958
+ }
34959
+ getFontFaceImportString() {
34930
34960
  const fontTable = this.convertedXml["word/fontTable.xml"];
34931
34961
  if (!fontTable || !Object.keys(this.fonts).length) return;
34932
34962
  const fonts = fontTable.elements.find((el) => el.name === "w:fonts");
@@ -34940,6 +34970,7 @@ const _SuperConverter = class _SuperConverter2 {
34940
34970
  const rels = this.convertedXml["word/_rels/fontTable.xml.rels"];
34941
34971
  const relationships = rels?.elements.find((el) => el.name === "Relationships") || {};
34942
34972
  const { elements } = relationships;
34973
+ const fontsImported = [];
34943
34974
  let styleString = "";
34944
34975
  for (const font of fontsToInclude) {
34945
34976
  const filePath = elements.find((el) => el.attributes.Id === font.attributes["r:id"])?.attributes?.Target;
@@ -34956,6 +34987,9 @@ const _SuperConverter = class _SuperConverter2 {
34956
34987
  const isItalic = font.name.includes("Italic");
34957
34988
  const isLight = font.name.includes("Light");
34958
34989
  const fontWeight = isNormal ? "normal" : isBold ? "bold" : isLight ? "200" : "normal";
34990
+ if (!fontsImported.includes(font.fontFamily)) {
34991
+ fontsImported.push(font.fontFamily);
34992
+ }
34959
34993
  styleString += `
34960
34994
  @font-face {
34961
34995
  font-style: ${isItalic ? "italic" : "normal"};
@@ -34966,7 +35000,10 @@ const _SuperConverter = class _SuperConverter2 {
34966
35000
  }
34967
35001
  `;
34968
35002
  }
34969
- return styleString;
35003
+ return {
35004
+ styleString,
35005
+ fontsImported
35006
+ };
34970
35007
  }
34971
35008
  getDocumentInternalId() {
34972
35009
  const settingsLocation = "word/settings.xml";
@@ -35021,6 +35058,7 @@ const _SuperConverter = class _SuperConverter2 {
35021
35058
  this.numbering = result.numbering;
35022
35059
  this.comments = result.comments;
35023
35060
  this.linkedStyles = result.linkedStyles;
35061
+ this.inlineDocumentFonts = result.inlineDocumentFonts;
35024
35062
  return result.pmDoc;
35025
35063
  } else {
35026
35064
  return null;
@@ -37982,7 +38020,7 @@ var __privateGet$1 = (obj, member, getter) => (__accessCheck$1(obj, member, "rea
37982
38020
  var __privateAdd$1 = (obj, member, value) => member.has(obj) ? __typeError$1("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
37983
38021
  var __privateSet = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), member.set(obj, value), value);
37984
38022
  var __privateMethod$1 = (obj, member, method) => (__accessCheck$1(obj, member, "access private method"), method);
37985
- var _Attribute_static, getGlobalAttributes_fn, getNodeAndMarksAttributes_fn, _Schema_static, createNodesSchema_fn, createMarksSchema_fn, _events, _ExtensionService_instances, setupExtensions_fn, attachEditorEvents_fn, _editor, _stateValidators, _xmlValidators, _requiredNodeTypes, _requiredMarkTypes, _SuperValidator_instances, initializeValidators_fn, collectValidatorRequirements_fn, analyzeDocument_fn, _commandService, _Editor_instances, initContainerElement_fn, init_fn, initRichText_fn, onFocus_fn, checkHeadless_fn, registerCopyHandler_fn, insertNewFileData_fn, registerPluginByNameIfNotExists_fn, createExtensionService_fn, createCommandService_fn, createConverter_fn, initMedia_fn, initFonts_fn, createSchema_fn, generatePmData_fn, createView_fn, onCollaborationReady_fn, initComments_fn, initPagination_fn, dispatchTransaction_fn, handleNodeSelection_fn, prepareDocumentForImport_fn, prepareDocumentForExport_fn, endCollaboration_fn, validateDocumentInit_fn, validateDocumentExport_fn, initDevTools_fn, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ListItemNodeView_instances, init_fn3, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_fn;
38023
+ var _Attribute_static, getGlobalAttributes_fn, getNodeAndMarksAttributes_fn, _Schema_static, createNodesSchema_fn, createMarksSchema_fn, _events, _ExtensionService_instances, setupExtensions_fn, attachEditorEvents_fn, _editor, _stateValidators, _xmlValidators, _requiredNodeTypes, _requiredMarkTypes, _SuperValidator_instances, initializeValidators_fn, collectValidatorRequirements_fn, analyzeDocument_fn, _commandService, _Editor_instances, initContainerElement_fn, init_fn, initRichText_fn, onFocus_fn, checkHeadless_fn, registerCopyHandler_fn, insertNewFileData_fn, registerPluginByNameIfNotExists_fn, createExtensionService_fn, createCommandService_fn, createConverter_fn, initMedia_fn, initFonts_fn, checkFonts_fn, determineUnsupportedFontsWithLocalFonts_fn, determineUnsupportedFontsWithCanvas_fn, createSchema_fn, generatePmData_fn, createView_fn, onCollaborationReady_fn, initComments_fn, initPagination_fn, dispatchTransaction_fn, handleNodeSelection_fn, prepareDocumentForImport_fn, prepareDocumentForExport_fn, endCollaboration_fn, validateDocumentInit_fn, validateDocumentExport_fn, initDevTools_fn, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ListItemNodeView_instances, init_fn3, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_fn;
37986
38024
  var GOOD_LEAF_SIZE = 200;
37987
38025
  var RopeSequence = function RopeSequence2() {
37988
38026
  };
@@ -51051,6 +51089,29 @@ const setImageNodeSelection = (view, pos) => {
51051
51089
  }
51052
51090
  return false;
51053
51091
  };
51092
+ function canRenderFont(fontName, fallbackFont = "sans-serif") {
51093
+ const _canRenderFont = (fontName2, fallbackFont2) => {
51094
+ const canvas = document.createElement("canvas");
51095
+ const ctx2 = canvas.getContext("2d");
51096
+ ctx2.textBaseline = "top";
51097
+ const text = "abcdefghijklmnopqrstuvwxyz0123456789";
51098
+ ctx2.font = `72px ${fallbackFont2}`;
51099
+ const initialTextMeasurement = ctx2.measureText(text);
51100
+ const fallbackWidth = initialTextMeasurement.width;
51101
+ const fallbackHeight = initialTextMeasurement.actualBoundingBoxDescent;
51102
+ ctx2.font = `72px "${fontName2}", ${fallbackFont2}`;
51103
+ const customTextMeasurement = ctx2.measureText(text);
51104
+ const customFontWidth = customTextMeasurement.width;
51105
+ const customFontHeight = customTextMeasurement.actualBoundingBoxDescent;
51106
+ const isAvailable = customFontWidth !== fallbackWidth || customFontHeight !== fallbackHeight;
51107
+ return isAvailable;
51108
+ };
51109
+ if (_canRenderFont(fontName, fallbackFont)) {
51110
+ return true;
51111
+ }
51112
+ const oppositeFallbackFont = fallbackFont === "sans-serif" ? "serif" : "sans-serif";
51113
+ return _canRenderFont(fontName, oppositeFallbackFont);
51114
+ }
51054
51115
  const { findChildren: findChildren$3 } = helpers;
51055
51116
  function getAllFieldAnnotations(state2) {
51056
51117
  let fieldAnnotations = findChildren$3(state2.doc, (node) => node.type.name === "fieldAnnotation");
@@ -52100,6 +52161,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
52100
52161
  __publicField$1(this, "schema");
52101
52162
  __publicField$1(this, "view");
52102
52163
  __publicField$1(this, "isFocused", false);
52164
+ __publicField$1(this, "fontsImported", []);
52103
52165
  __publicField$1(this, "options", {
52104
52166
  element: null,
52105
52167
  selector: null,
@@ -52160,6 +52222,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
52160
52222
  onPaginationUpdate: () => null,
52161
52223
  onException: () => null,
52162
52224
  onListDefinitionsChange: () => null,
52225
+ onFontsResolved: null,
52163
52226
  // async (file) => url;
52164
52227
  handleImageUpload: null,
52165
52228
  // telemetry
@@ -53136,6 +53199,9 @@ init_fn = function() {
53136
53199
  this.emit("beforeCreate", { editor: this });
53137
53200
  this.on("contentError", this.options.onContentError);
53138
53201
  this.mount(this.options.element);
53202
+ if (!this.options.isHeadless) {
53203
+ __privateMethod$1(this, _Editor_instances, checkFonts_fn).call(this);
53204
+ }
53139
53205
  this.on("create", this.options.onCreate);
53140
53206
  this.on("update", this.options.onUpdate);
53141
53207
  this.on("selectionUpdate", this.options.onSelectionUpdate);
@@ -53283,13 +53349,74 @@ initMedia_fn = function() {
53283
53349
  }
53284
53350
  };
53285
53351
  initFonts_fn = function() {
53286
- const styleString = this.converter.getDocumentFonts();
53287
- if (styleString?.length) {
53352
+ const results = this.converter.getFontFaceImportString();
53353
+ if (results?.styleString?.length) {
53288
53354
  const style2 = document.createElement("style");
53289
- style2.textContent = styleString;
53355
+ style2.textContent = results.styleString;
53290
53356
  document.head.appendChild(style2);
53357
+ this.fontsImported = results.fontsImported;
53291
53358
  }
53292
53359
  };
53360
+ checkFonts_fn = async function() {
53361
+ if (!this.options.onFontsResolved || typeof this.options.onFontsResolved !== "function") {
53362
+ return;
53363
+ }
53364
+ if (this.options.isHeadless) {
53365
+ return;
53366
+ }
53367
+ const fontsUsedInDocument = this.converter.getDocumentFonts();
53368
+ if (!("queryLocalFonts" in window)) {
53369
+ console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
53370
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
53371
+ this.options.onFontsResolved({
53372
+ documentFonts: fontsUsedInDocument,
53373
+ unsupportedFonts
53374
+ });
53375
+ return;
53376
+ }
53377
+ const localFontAccess = await navigator.permissions.query({ name: "local-fonts" });
53378
+ if (localFontAccess.state === "denied") {
53379
+ console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
53380
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
53381
+ this.options.onFontsResolved({
53382
+ documentFonts: fontsUsedInDocument,
53383
+ unsupportedFonts
53384
+ });
53385
+ return;
53386
+ }
53387
+ try {
53388
+ const localFonts = await window.queryLocalFonts();
53389
+ const uniqueLocalFonts = [...new Set(localFonts.map((font) => font.family))];
53390
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithLocalFonts_fn).call(this, fontsUsedInDocument, uniqueLocalFonts);
53391
+ this.options.onFontsResolved({
53392
+ documentFonts: fontsUsedInDocument,
53393
+ unsupportedFonts
53394
+ });
53395
+ } catch {
53396
+ console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
53397
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
53398
+ this.options.onFontsResolved({
53399
+ documentFonts: fontsUsedInDocument,
53400
+ unsupportedFonts
53401
+ });
53402
+ }
53403
+ };
53404
+ determineUnsupportedFontsWithLocalFonts_fn = function(fonts, localFonts) {
53405
+ const unsupportedFonts = fonts.filter((font) => {
53406
+ const isLocalFont = localFonts.includes(font);
53407
+ const isFontImported = this.fontsImported.includes(font);
53408
+ return !isLocalFont && !isFontImported;
53409
+ });
53410
+ return unsupportedFonts;
53411
+ };
53412
+ determineUnsupportedFontsWithCanvas_fn = function(fonts) {
53413
+ const unsupportedFonts = fonts.filter((font) => {
53414
+ const canRender = canRenderFont(font);
53415
+ const isFontImported = this.fontsImported.includes(font);
53416
+ return !canRender && !isFontImported;
53417
+ });
53418
+ return unsupportedFonts;
53419
+ };
53293
53420
  createSchema_fn = function() {
53294
53421
  this.schema = this.extensionService.schema;
53295
53422
  };
@@ -62046,6 +62173,15 @@ const TableCell = Node$1.create({
62046
62173
  widthUnit: {
62047
62174
  default: "px",
62048
62175
  rendered: false
62176
+ },
62177
+ /**
62178
+ * @category Attribute
62179
+ * @param {TableCellProperties} tableCellProperties - Properties for the table cell.
62180
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 463
62181
+ */
62182
+ tableCellProperties: {
62183
+ default: null,
62184
+ rendered: false
62049
62185
  }
62050
62186
  };
62051
62187
  },
@@ -87755,7 +87891,7 @@ const _sfc_main$2 = {
87755
87891
  }
87756
87892
  };
87757
87893
  const GenericPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-cbddcc0f"]]);
87758
- const BlankDOCX = "data:application/octet-stream;base64,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";
87894
+ const BlankDOCX = "data:application/octet-stream;base64,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";
87759
87895
  const _hoisted_1$1 = { class: "super-editor-container" };
87760
87896
  const _hoisted_2 = {
87761
87897
  key: 1,
@@ -88150,72 +88286,87 @@ const additionalHandlers = Object.freeze({
88150
88286
  "mc:AlternateContent": translator$1,
88151
88287
  "sd:pageReference": translator$5,
88152
88288
  "sd:tableOfContents": translator$4,
88153
- "w:b": translator$18,
88154
- "w:bidiVisual": translator$J,
88289
+ "w:b": translator$1n,
88290
+ "w:bidiVisual": translator$Y,
88155
88291
  "w:bookmarkEnd": translator$6,
88156
88292
  "w:bookmarkStart": translator$7,
88157
- "w:bottom": translator$w,
88158
- "w:br": translator$1c,
88159
- "w:cantSplit": translator$X,
88160
- "w:cnfStyle": translator$W,
88161
- "w:color": translator$14,
88162
- "w:divId": translator$V,
88293
+ "w:bottom": translator$L,
88294
+ "w:br": translator$1r,
88295
+ "w:cantSplit": translator$1a,
88296
+ "w:cnfStyle": translator$19,
88297
+ "w:color": translator$1j,
88298
+ "w:divId": translator$18,
88163
88299
  "w:drawing": translator$9,
88164
- "w:end": translator$u,
88165
- "w:gridAfter": translator$U,
88166
- "w:gridBefore": translator$T,
88167
- "w:gridCol": translator$f,
88168
- "w:hidden": translator$S,
88169
- "w:highlight": translator$1b,
88170
- "w:hyperlink": translator$Z,
88171
- "w:i": translator$17,
88172
- "w:insideH": translator$s,
88173
- "w:insideV": translator$r,
88174
- "w:jc": translator$R,
88175
- "w:left": translator$q,
88176
- "w:p": translator$19,
88177
- "w:r": translator$Y,
88178
- "w:rFonts": translator$13,
88179
- "w:rPr": translator$_,
88180
- "w:rStyle": translator$12,
88181
- "w:right": translator$o,
88300
+ "w:end": translator$J,
88301
+ "w:gridAfter": translator$17,
88302
+ "w:gridBefore": translator$16,
88303
+ "w:gridCol": translator$u,
88304
+ "w:hidden": translator$15,
88305
+ "w:highlight": translator$1q,
88306
+ "w:hyperlink": translator$1c,
88307
+ "w:i": translator$1m,
88308
+ "w:insideH": translator$H,
88309
+ "w:insideV": translator$G,
88310
+ "w:jc": translator$14,
88311
+ "w:left": translator$F,
88312
+ "w:p": translator$1o,
88313
+ "w:r": translator$1b,
88314
+ "w:rFonts": translator$1i,
88315
+ "w:rPr": translator$1d,
88316
+ "w:rStyle": translator$1h,
88317
+ "w:right": translator$D,
88182
88318
  "w:sdt": translator$8,
88183
- "w:shd": translator$I,
88184
- "w:start": translator$m,
88185
- "w:strike": translator$15,
88186
- "w:sz": translator$11,
88187
- "w:szCs": translator$10,
88188
- "w:tab": translator$1a,
88189
- "w:tbl": translator$d,
88190
- "w:tblBorders": translator$i,
88191
- "w:tblCaption": translator$H,
88192
- "w:tblCellMar": translator$h,
88193
- "w:tblCellSpacing": translator$Q,
88194
- "w:tblDescription": translator$G,
88195
- "w:tblGrid": translator$e,
88196
- "w:tblHeader": translator$P,
88197
- "w:tblInd": translator$F,
88198
- "w:tblLayout": translator$E,
88199
- "w:tblLook": translator$D,
88200
- "w:tblOverlap": translator$C,
88201
- "w:tblPr": translator$g,
88202
- "w:tblStyle": translator$B,
88203
- "w:tblStyleColBandSize": translator$A,
88204
- "w:tblStyleRowBandSize": translator$z,
88205
- "w:tblW": translator$y,
88206
- "w:tblpPr": translator$x,
88319
+ "w:shd": translator$X,
88320
+ "w:start": translator$B,
88321
+ "w:strike": translator$1k,
88322
+ "w:sz": translator$1g,
88323
+ "w:szCs": translator$1f,
88324
+ "w:tab": translator$1p,
88325
+ "w:tbl": translator$s,
88326
+ "w:tblBorders": translator$x,
88327
+ "w:tblCaption": translator$W,
88328
+ "w:tblCellMar": translator$w,
88329
+ "w:tblCellSpacing": translator$13,
88330
+ "w:tblDescription": translator$V,
88331
+ "w:tblGrid": translator$t,
88332
+ "w:tblHeader": translator$12,
88333
+ "w:tblInd": translator$U,
88334
+ "w:tblLayout": translator$T,
88335
+ "w:tblLook": translator$S,
88336
+ "w:tblOverlap": translator$R,
88337
+ "w:tblPr": translator$v,
88338
+ "w:tblStyle": translator$Q,
88339
+ "w:tblStyleColBandSize": translator$P,
88340
+ "w:tblStyleRowBandSize": translator$O,
88341
+ "w:tblW": translator$N,
88342
+ "w:tblpPr": translator$M,
88207
88343
  "w:tc": translator$c,
88208
- "w:top": translator$k,
88209
- "w:tr": translator$K,
88210
- "w:trHeight": translator$O,
88211
- "w:trPr": translator$L,
88212
- "w:u": translator$16,
88213
- "w:wAfter": translator$N,
88214
- "w:wBefore": translator$M,
88344
+ "w:top": translator$z,
88345
+ "w:tr": translator$Z,
88346
+ "w:trHeight": translator$11,
88347
+ "w:trPr": translator$_,
88348
+ "w:u": translator$1l,
88349
+ "w:wAfter": translator$10,
88350
+ "w:wBefore": translator$$,
88215
88351
  "wp:anchor": translator$b,
88216
88352
  "wp:inline": translator$a,
88217
88353
  "w:commentRangeStart": commentRangeStartTranslator,
88218
- "w:commentRangeEnd": commentRangeEndTranslator
88354
+ "w:commentRangeEnd": commentRangeEndTranslator,
88355
+ "w:vMerge": translator$p,
88356
+ "w:gridSpan": translator$q,
88357
+ "w:vAlign": translator$h,
88358
+ "w:noWrap": translator$l,
88359
+ "w:tcFitText": translator$i,
88360
+ "w:tcW": translator$r,
88361
+ "w:hideMark": translator$g,
88362
+ "w:textDirection": translator$j,
88363
+ "w:tl2br": translator$o,
88364
+ "w:tr2bl": translator$n,
88365
+ "w:header": translator$f,
88366
+ "w:headers": translator$e,
88367
+ "w:tcBorders": translator$m,
88368
+ "w:tcMar": translator$k,
88369
+ "w:tcPr": translator$d
88219
88370
  });
88220
88371
  const baseHandlers = {
88221
88372
  ...runPropertyTranslators,