@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
@@ -15146,9 +15146,9 @@ function pixelsToEmu(px) {
15146
15146
  if (typeof px === "string") px = parseFloat(px);
15147
15147
  return Math.round(px * 9525);
15148
15148
  }
15149
- function eigthPointsToPixels(eigthPoints) {
15150
- if (eigthPoints == null) return;
15151
- const points = parseFloat(eigthPoints) / 8;
15149
+ function eighthPointsToPixels(eighthPoints) {
15150
+ if (eighthPoints == null) return;
15151
+ const points = parseFloat(eighthPoints) / 8;
15152
15152
  const pixels = points * 1.3333;
15153
15153
  return pixels;
15154
15154
  }
@@ -24552,37 +24552,37 @@ const _NodeTranslator = class _NodeTranslator2 {
24552
24552
  };
24553
24553
  __publicField$2(_NodeTranslator, "translatorTypes", TranslatorTypes);
24554
24554
  let NodeTranslator = _NodeTranslator;
24555
- const encode$1e = (attributes) => {
24555
+ const encode$1b = (attributes) => {
24556
24556
  return attributes["w:type"];
24557
24557
  };
24558
- const decode$16 = (attrs) => {
24558
+ const decode$13 = (attrs) => {
24559
24559
  const { lineBreakType } = attrs;
24560
24560
  return lineBreakType;
24561
24561
  };
24562
24562
  const attrConfig$G = Object.freeze({
24563
24563
  xmlName: "w:type",
24564
24564
  sdName: "lineBreakType",
24565
- encode: encode$1e,
24566
- decode: decode$16
24565
+ encode: encode$1b,
24566
+ decode: decode$13
24567
24567
  });
24568
- const encode$1d = (attributes) => {
24568
+ const encode$1a = (attributes) => {
24569
24569
  const xmlAttrValue = attributes["w:clear"];
24570
24570
  return xmlAttrValue;
24571
24571
  };
24572
- const decode$15 = (attrs) => {
24572
+ const decode$12 = (attrs) => {
24573
24573
  const { clear } = attrs;
24574
24574
  return clear;
24575
24575
  };
24576
24576
  const attrConfig$F = Object.freeze({
24577
24577
  xmlName: "w:clear",
24578
24578
  sdName: "clear",
24579
- encode: encode$1d,
24580
- decode: decode$15
24579
+ encode: encode$1a,
24580
+ decode: decode$12
24581
24581
  });
24582
24582
  const validXmlAttributes$p = [attrConfig$G, attrConfig$F];
24583
- const XML_NODE_NAME$B = "w:br";
24583
+ const XML_NODE_NAME$y = "w:br";
24584
24584
  const SD_NODE_NAME$h = "lineBreak";
24585
- const encode$1c = (_2, encodedAttrs) => {
24585
+ const encode$19 = (_2, encodedAttrs) => {
24586
24586
  const isPageBreak = encodedAttrs?.lineBreakType === "page";
24587
24587
  const translated = {
24588
24588
  type: isPageBreak ? "hardBreak" : "lineBreak"
@@ -24592,7 +24592,7 @@ const encode$1c = (_2, encodedAttrs) => {
24592
24592
  }
24593
24593
  return translated;
24594
24594
  };
24595
- const decode$14 = (params2, decodedAttrs) => {
24595
+ const decode$11 = (params2, decodedAttrs) => {
24596
24596
  const { node } = params2;
24597
24597
  if (!node) return;
24598
24598
  const wBreak = { name: "w:br" };
@@ -24609,39 +24609,39 @@ const decode$14 = (params2, decodedAttrs) => {
24609
24609
  };
24610
24610
  return translated;
24611
24611
  };
24612
- const config$y = {
24613
- xmlName: XML_NODE_NAME$B,
24612
+ const config$x = {
24613
+ xmlName: XML_NODE_NAME$y,
24614
24614
  sdNodeOrKeyName: SD_NODE_NAME$h,
24615
24615
  type: NodeTranslator.translatorTypes.NODE,
24616
- encode: encode$1c,
24617
- decode: decode$14,
24616
+ encode: encode$19,
24617
+ decode: decode$11,
24618
24618
  attributes: validXmlAttributes$p
24619
24619
  };
24620
- const translator$1c = NodeTranslator.from(config$y);
24621
- const encode$1b = (attributes) => attributes?.["w:val"];
24622
- const decode$13 = (attrs) => attrs?.highlight;
24620
+ const translator$1r = NodeTranslator.from(config$x);
24621
+ const encode$18 = (attributes) => attributes?.["w:val"];
24622
+ const decode$10 = (attrs) => attrs?.highlight;
24623
24623
  const attrConfig$E = Object.freeze({
24624
24624
  xmlName: "w:val",
24625
24625
  sdName: "highlight",
24626
- encode: encode$1b,
24627
- decode: decode$13
24626
+ encode: encode$18,
24627
+ decode: decode$10
24628
24628
  });
24629
24629
  const validXmlAttributes$o = [attrConfig$E];
24630
- const XML_NODE_NAME$A = "w:highlight";
24631
- const SD_ATTR_KEY$i = "highlight";
24630
+ const XML_NODE_NAME$x = "w:highlight";
24631
+ const SD_ATTR_KEY$f = "highlight";
24632
24632
  const DISABLED_TOKENS = /* @__PURE__ */ new Set(["transparent", "none", "inherit"]);
24633
- const encode$1a = (params2, encodedAttrs = {}) => {
24633
+ const encode$17 = (params2, encodedAttrs = {}) => {
24634
24634
  const { nodes } = params2;
24635
24635
  const node = nodes?.[0];
24636
24636
  const value = encodedAttrs.highlight ?? node?.attributes?.["w:val"];
24637
24637
  return {
24638
24638
  type: "attr",
24639
- xmlName: XML_NODE_NAME$A,
24640
- sdNodeOrKeyName: SD_ATTR_KEY$i,
24639
+ xmlName: XML_NODE_NAME$x,
24640
+ sdNodeOrKeyName: SD_ATTR_KEY$f,
24641
24641
  attributes: { "w:val": value ?? null }
24642
24642
  };
24643
24643
  };
24644
- const decode$12 = (params2) => {
24644
+ const decode$$ = (params2) => {
24645
24645
  const attrs = params2?.node?.attrs || {};
24646
24646
  const highlightValue = attrs.highlight ?? attrs.color ?? null;
24647
24647
  if (!highlightValue) return void 0;
@@ -24649,14 +24649,14 @@ const decode$12 = (params2) => {
24649
24649
  if (!normalizedValue) return void 0;
24650
24650
  if (DISABLED_TOKENS.has(normalizedValue)) {
24651
24651
  return {
24652
- name: XML_NODE_NAME$A,
24652
+ name: XML_NODE_NAME$x,
24653
24653
  attributes: { "w:val": "none" }
24654
24654
  };
24655
24655
  }
24656
24656
  const keyword = getDocxHighlightKeywordFromHex(highlightValue);
24657
24657
  if (keyword) {
24658
24658
  return {
24659
- name: XML_NODE_NAME$A,
24659
+ name: XML_NODE_NAME$x,
24660
24660
  attributes: { "w:val": keyword }
24661
24661
  };
24662
24662
  }
@@ -24671,63 +24671,63 @@ const decode$12 = (params2) => {
24671
24671
  }
24672
24672
  };
24673
24673
  };
24674
- const config$x = {
24675
- xmlName: XML_NODE_NAME$A,
24676
- sdNodeOrKeyName: SD_ATTR_KEY$i,
24674
+ const config$w = {
24675
+ xmlName: XML_NODE_NAME$x,
24676
+ sdNodeOrKeyName: SD_ATTR_KEY$f,
24677
24677
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
24678
- encode: encode$1a,
24679
- decode: decode$12,
24678
+ encode: encode$17,
24679
+ decode: decode$$,
24680
24680
  attributes: validXmlAttributes$o
24681
24681
  };
24682
- const translator$1b = NodeTranslator.from(config$x);
24683
- const encode$19 = (attributes) => {
24682
+ const translator$1q = NodeTranslator.from(config$w);
24683
+ const encode$16 = (attributes) => {
24684
24684
  return attributes["w:val"];
24685
24685
  };
24686
- const decode$11 = (attrs) => {
24686
+ const decode$_ = (attrs) => {
24687
24687
  const { tabSize } = attrs || {};
24688
24688
  return tabSize;
24689
24689
  };
24690
24690
  const attrConfig$D = Object.freeze({
24691
24691
  xmlName: "w:val",
24692
24692
  sdName: "tabSize",
24693
- encode: encode$19,
24694
- decode: decode$11
24693
+ encode: encode$16,
24694
+ decode: decode$_
24695
24695
  });
24696
- const encode$18 = (attributes) => {
24696
+ const encode$15 = (attributes) => {
24697
24697
  return attributes["w:leader"];
24698
24698
  };
24699
- const decode$10 = (attrs) => {
24699
+ const decode$Z = (attrs) => {
24700
24700
  const { leader } = attrs || {};
24701
24701
  return leader;
24702
24702
  };
24703
24703
  const attrConfig$C = Object.freeze({
24704
24704
  xmlName: "w:leader",
24705
24705
  sdName: "leader",
24706
- encode: encode$18,
24707
- decode: decode$10
24706
+ encode: encode$15,
24707
+ decode: decode$Z
24708
24708
  });
24709
- const encode$17 = (attributes) => {
24709
+ const encode$14 = (attributes) => {
24710
24710
  return attributes["w:pos"];
24711
24711
  };
24712
- const decode$$ = (attrs) => {
24712
+ const decode$Y = (attrs) => {
24713
24713
  const { pos } = attrs || {};
24714
24714
  return pos;
24715
24715
  };
24716
24716
  const attrConfig$B = Object.freeze({
24717
24717
  xmlName: "w:pos",
24718
24718
  sdName: "pos",
24719
- encode: encode$17,
24720
- decode: decode$$
24719
+ encode: encode$14,
24720
+ decode: decode$Y
24721
24721
  });
24722
24722
  const validXmlAttributes$n = [attrConfig$D, attrConfig$B, attrConfig$C];
24723
- const XML_NODE_NAME$z = "w:tab";
24723
+ const XML_NODE_NAME$w = "w:tab";
24724
24724
  const SD_NODE_NAME$g = "tab";
24725
- const encode$16 = (_2, encodedAttrs = {}) => {
24725
+ const encode$13 = (_2, encodedAttrs = {}) => {
24726
24726
  const translated = { type: "tab" };
24727
24727
  if (encodedAttrs) translated.attrs = { ...encodedAttrs };
24728
24728
  return translated;
24729
24729
  };
24730
- const decode$_ = (params2, decodedAttrs = {}) => {
24730
+ const decode$X = (params2, decodedAttrs = {}) => {
24731
24731
  const { node } = params2 || {};
24732
24732
  if (!node) return;
24733
24733
  const wTab = { name: "w:tab" };
@@ -24743,15 +24743,15 @@ const decode$_ = (params2, decodedAttrs = {}) => {
24743
24743
  }
24744
24744
  return translated;
24745
24745
  };
24746
- const config$w = {
24747
- xmlName: XML_NODE_NAME$z,
24746
+ const config$v = {
24747
+ xmlName: XML_NODE_NAME$w,
24748
24748
  sdNodeOrKeyName: SD_NODE_NAME$g,
24749
24749
  type: NodeTranslator.translatorTypes.NODE,
24750
- encode: encode$16,
24751
- decode: decode$_,
24750
+ encode: encode$13,
24751
+ decode: decode$X,
24752
24752
  attributes: validXmlAttributes$n
24753
24753
  };
24754
- const translator$1a = NodeTranslator.from(config$w);
24754
+ const translator$1p = NodeTranslator.from(config$v);
24755
24755
  const mergeTextNodes = (nodes) => {
24756
24756
  if (!nodes || !Array.isArray(nodes)) {
24757
24757
  return nodes;
@@ -24977,9 +24977,9 @@ const parseParagraphBorders = (pBdr) => {
24977
24977
  const { attributes: a } = el;
24978
24978
  if (a["w:val"] === "nil" || a["w:val"] === void 0) return;
24979
24979
  let sizePx;
24980
- if (a["w:sz"] !== void 0) sizePx = eigthPointsToPixels(a["w:sz"]);
24980
+ if (a["w:sz"] !== void 0) sizePx = eighthPointsToPixels(a["w:sz"]);
24981
24981
  let spacePx;
24982
- if (a["w:space"] !== void 0) spacePx = eigthPointsToPixels(a["w:space"]);
24982
+ if (a["w:space"] !== void 0) spacePx = eighthPointsToPixels(a["w:space"]);
24983
24983
  result[side] = {
24984
24984
  val: a["w:val"],
24985
24985
  size: sizePx,
@@ -25269,89 +25269,89 @@ const handleParagraphNode$1 = (params2) => {
25269
25269
  }
25270
25270
  return schemaNode;
25271
25271
  };
25272
- const encode$15 = (attributes) => {
25272
+ const encode$12 = (attributes) => {
25273
25273
  return attributes["w:rsidDel"];
25274
25274
  };
25275
- const decode$Z = (attrs) => {
25275
+ const decode$W = (attrs) => {
25276
25276
  return attrs.rsidDel;
25277
25277
  };
25278
25278
  const attrConfig$A = Object.freeze({
25279
25279
  xmlName: "w:rsidDel",
25280
25280
  sdName: "rsidDel",
25281
- encode: encode$15,
25282
- decode: decode$Z
25281
+ encode: encode$12,
25282
+ decode: decode$W
25283
25283
  });
25284
- const encode$14 = (attributes) => {
25284
+ const encode$11 = (attributes) => {
25285
25285
  return attributes["w:rsidP"];
25286
25286
  };
25287
- const decode$Y = (attrs) => {
25287
+ const decode$V = (attrs) => {
25288
25288
  return attrs.rsidP;
25289
25289
  };
25290
25290
  const attrConfig$z = Object.freeze({
25291
25291
  xmlName: "w:rsidP",
25292
25292
  sdName: "rsidP",
25293
- encode: encode$14,
25294
- decode: decode$Y
25293
+ encode: encode$11,
25294
+ decode: decode$V
25295
25295
  });
25296
- const encode$13 = (attributes) => {
25296
+ const encode$10 = (attributes) => {
25297
25297
  return attributes["w:rsidR"];
25298
25298
  };
25299
- const decode$X = (attrs) => {
25299
+ const decode$U = (attrs) => {
25300
25300
  return attrs.rsidR;
25301
25301
  };
25302
25302
  const attrConfig$y = Object.freeze({
25303
25303
  xmlName: "w:rsidR",
25304
25304
  sdName: "rsidR",
25305
- encode: encode$13,
25306
- decode: decode$X
25305
+ encode: encode$10,
25306
+ decode: decode$U
25307
25307
  });
25308
- const encode$12 = (attributes) => {
25308
+ const encode$$ = (attributes) => {
25309
25309
  return attributes["w:rsidRPr"];
25310
25310
  };
25311
- const decode$W = (attrs) => {
25311
+ const decode$T = (attrs) => {
25312
25312
  return attrs.rsidRPr;
25313
25313
  };
25314
25314
  const attrConfig$x = Object.freeze({
25315
25315
  xmlName: "w:rsidRPr",
25316
25316
  sdName: "rsidRPr",
25317
- encode: encode$12,
25318
- decode: decode$W
25317
+ encode: encode$$,
25318
+ decode: decode$T
25319
25319
  });
25320
- const encode$11 = (attributes) => {
25320
+ const encode$_ = (attributes) => {
25321
25321
  return attributes["w:rsidRDefault"];
25322
25322
  };
25323
- const decode$V = (attrs) => {
25323
+ const decode$S = (attrs) => {
25324
25324
  return attrs.rsidRDefault;
25325
25325
  };
25326
25326
  const attrConfig$w = Object.freeze({
25327
25327
  xmlName: "w:rsidRDefault",
25328
25328
  sdName: "rsidRDefault",
25329
- encode: encode$11,
25330
- decode: decode$V
25329
+ encode: encode$_,
25330
+ decode: decode$S
25331
25331
  });
25332
- const encode$10 = (attributes) => {
25332
+ const encode$Z = (attributes) => {
25333
25333
  return attributes["w14:paraId"];
25334
25334
  };
25335
- const decode$U = (attrs) => {
25335
+ const decode$R = (attrs) => {
25336
25336
  return attrs.paraId;
25337
25337
  };
25338
25338
  const attrConfig$v = Object.freeze({
25339
25339
  xmlName: "w14:paraId",
25340
25340
  sdName: "paraId",
25341
- encode: encode$10,
25342
- decode: decode$U
25341
+ encode: encode$Z,
25342
+ decode: decode$R
25343
25343
  });
25344
- const encode$$ = (attributes) => {
25344
+ const encode$Y = (attributes) => {
25345
25345
  return attributes["w14:textId"];
25346
25346
  };
25347
- const decode$T = (attrs) => {
25347
+ const decode$Q = (attrs) => {
25348
25348
  return attrs.textId;
25349
25349
  };
25350
25350
  const attrConfig$u = Object.freeze({
25351
25351
  xmlName: "w14:textId",
25352
25352
  sdName: "textId",
25353
- encode: encode$$,
25354
- decode: decode$T
25353
+ encode: encode$Y,
25354
+ decode: decode$Q
25355
25355
  });
25356
25356
  const validXmlAttributes$m = [
25357
25357
  attrConfig$v,
@@ -25362,9 +25362,9 @@ const validXmlAttributes$m = [
25362
25362
  attrConfig$x,
25363
25363
  attrConfig$A
25364
25364
  ];
25365
- const XML_NODE_NAME$y = "w:p";
25365
+ const XML_NODE_NAME$v = "w:p";
25366
25366
  const SD_NODE_NAME$f = "paragraph";
25367
- const encode$_ = (params2, encodedAttrs = {}) => {
25367
+ const encode$X = (params2, encodedAttrs = {}) => {
25368
25368
  const node = handleParagraphNode$1(params2);
25369
25369
  if (!node) return void 0;
25370
25370
  if (encodedAttrs && Object.keys(encodedAttrs).length) {
@@ -25372,7 +25372,7 @@ const encode$_ = (params2, encodedAttrs = {}) => {
25372
25372
  }
25373
25373
  return node;
25374
25374
  };
25375
- const decode$S = (params2, decodedAttrs = {}) => {
25375
+ const decode$P = (params2, decodedAttrs = {}) => {
25376
25376
  const translated = translateParagraphNode(params2);
25377
25377
  if (!translated) return void 0;
25378
25378
  if (decodedAttrs && Object.keys(decodedAttrs).length) {
@@ -25380,16 +25380,16 @@ const decode$S = (params2, decodedAttrs = {}) => {
25380
25380
  }
25381
25381
  return translated;
25382
25382
  };
25383
- const config$v = {
25384
- xmlName: XML_NODE_NAME$y,
25383
+ const config$u = {
25384
+ xmlName: XML_NODE_NAME$v,
25385
25385
  sdNodeOrKeyName: SD_NODE_NAME$f,
25386
25386
  type: NodeTranslator.translatorTypes.NODE,
25387
- encode: encode$_,
25388
- decode: decode$S,
25387
+ encode: encode$X,
25388
+ decode: decode$P,
25389
25389
  attributes: validXmlAttributes$m
25390
25390
  };
25391
- const translator$19 = NodeTranslator.from(config$v);
25392
- const encode$Z = (attributes) => {
25391
+ const translator$1o = NodeTranslator.from(config$u);
25392
+ const encode$W = (attributes) => {
25393
25393
  const raw = attributes?.["w:val"];
25394
25394
  if (raw === void 0 || raw === null) return void 0;
25395
25395
  if (typeof raw === "boolean") return raw;
@@ -25399,24 +25399,24 @@ const encode$Z = (attributes) => {
25399
25399
  if (val === "1" || val === "true" || val === "on") return true;
25400
25400
  return void 0;
25401
25401
  };
25402
- const decode$R = (runProps) => {
25402
+ const decode$O = (runProps) => {
25403
25403
  if (runProps?.bold === false) return "0";
25404
25404
  return void 0;
25405
25405
  };
25406
25406
  const attrConfig$t = Object.freeze({
25407
25407
  xmlName: "w:val",
25408
25408
  sdName: "bold",
25409
- encode: encode$Z,
25410
- decode: decode$R
25409
+ encode: encode$W,
25410
+ decode: decode$O
25411
25411
  });
25412
25412
  const validXmlAttributes$l = [attrConfig$t];
25413
- const XML_NODE_NAME$x = "w:b";
25414
- const SD_ATTR_KEY$h = "bold";
25415
- const encode$Y = (params2, encodedAttrs = {}) => {
25413
+ const XML_NODE_NAME$u = "w:b";
25414
+ const SD_ATTR_KEY$e = "bold";
25415
+ const encode$V = (params2, encodedAttrs = {}) => {
25416
25416
  const { nodes } = params2;
25417
25417
  const node = nodes[0];
25418
25418
  if (!node) return void 0;
25419
- const val = encodedAttrs?.[SD_ATTR_KEY$h];
25419
+ const val = encodedAttrs?.[SD_ATTR_KEY$e];
25420
25420
  let attributes;
25421
25421
  if (val === false) attributes = { "w:val": "0" };
25422
25422
  else if (val === true)
@@ -25424,85 +25424,85 @@ const encode$Y = (params2, encodedAttrs = {}) => {
25424
25424
  else attributes = node.attributes || {};
25425
25425
  return {
25426
25426
  type: "attr",
25427
- xmlName: XML_NODE_NAME$x,
25428
- sdNodeOrKeyName: SD_ATTR_KEY$h,
25427
+ xmlName: XML_NODE_NAME$u,
25428
+ sdNodeOrKeyName: SD_ATTR_KEY$e,
25429
25429
  attributes
25430
25430
  };
25431
25431
  };
25432
- const config$u = {
25433
- xmlName: XML_NODE_NAME$x,
25434
- sdNodeOrKeyName: SD_ATTR_KEY$h,
25432
+ const config$t = {
25433
+ xmlName: XML_NODE_NAME$u,
25434
+ sdNodeOrKeyName: SD_ATTR_KEY$e,
25435
25435
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25436
- encode: encode$Y,
25436
+ encode: encode$V,
25437
25437
  attributes: validXmlAttributes$l
25438
25438
  };
25439
- const translator$18 = NodeTranslator.from(config$u);
25440
- const XML_NODE_NAME$w = "w:i";
25441
- const SD_ATTR_KEY$g = "italic";
25442
- const encode$X = (params2) => {
25439
+ const translator$1n = NodeTranslator.from(config$t);
25440
+ const XML_NODE_NAME$t = "w:i";
25441
+ const SD_ATTR_KEY$d = "italic";
25442
+ const encode$U = (params2) => {
25443
25443
  const { nodes } = params2;
25444
25444
  const node = nodes?.[0];
25445
25445
  if (!node) return void 0;
25446
25446
  return {
25447
25447
  type: "attr",
25448
- xmlName: XML_NODE_NAME$w,
25449
- sdNodeOrKeyName: SD_ATTR_KEY$g,
25448
+ xmlName: XML_NODE_NAME$t,
25449
+ sdNodeOrKeyName: SD_ATTR_KEY$d,
25450
25450
  attributes: {
25451
25451
  "w:val": node.attributes?.["w:val"] ?? null
25452
25452
  }
25453
25453
  };
25454
25454
  };
25455
- const config$t = {
25456
- xmlName: XML_NODE_NAME$w,
25457
- sdNodeOrKeyName: SD_ATTR_KEY$g,
25455
+ const config$s = {
25456
+ xmlName: XML_NODE_NAME$t,
25457
+ sdNodeOrKeyName: SD_ATTR_KEY$d,
25458
25458
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25459
- encode: encode$X
25459
+ encode: encode$U
25460
25460
  };
25461
- const translator$17 = NodeTranslator.from(config$t);
25462
- const encode$W = (attributes) => attributes?.["w:val"];
25463
- const decode$Q = (attrs) => attrs?.underline;
25461
+ const translator$1m = NodeTranslator.from(config$s);
25462
+ const encode$T = (attributes) => attributes?.["w:val"];
25463
+ const decode$N = (attrs) => attrs?.underline;
25464
25464
  const attrConfig$s = Object.freeze({
25465
25465
  xmlName: "w:val",
25466
25466
  sdName: "underline",
25467
- encode: encode$W,
25468
- decode: decode$Q
25467
+ encode: encode$T,
25468
+ decode: decode$N
25469
25469
  });
25470
- const encode$V = (attributes) => attributes?.["w:color"];
25471
- const decode$P = (attrs) => attrs?.color;
25470
+ const encode$S = (attributes) => attributes?.["w:color"];
25471
+ const decode$M = (attrs) => attrs?.color;
25472
25472
  const attrConfig$r = Object.freeze({
25473
25473
  xmlName: "w:color",
25474
25474
  sdName: "color",
25475
- encode: encode$V,
25476
- decode: decode$P
25475
+ encode: encode$S,
25476
+ decode: decode$M
25477
25477
  });
25478
- const encode$U = (attributes) => attributes?.["w:themeColor"];
25479
- const decode$O = (attrs) => attrs?.themeColor;
25478
+ const encode$R = (attributes) => attributes?.["w:themeColor"];
25479
+ const decode$L = (attrs) => attrs?.themeColor;
25480
25480
  const attrConfig$q = Object.freeze({
25481
25481
  xmlName: "w:themeColor",
25482
25482
  sdName: "themeColor",
25483
- encode: encode$U,
25484
- decode: decode$O
25483
+ encode: encode$R,
25484
+ decode: decode$L
25485
25485
  });
25486
- const encode$T = (attributes) => attributes?.["w:themeTint"];
25487
- const decode$N = (attrs) => attrs?.themeTint;
25486
+ const encode$Q = (attributes) => attributes?.["w:themeTint"];
25487
+ const decode$K = (attrs) => attrs?.themeTint;
25488
25488
  const attrConfig$p = Object.freeze({
25489
25489
  xmlName: "w:themeTint",
25490
25490
  sdName: "themeTint",
25491
- encode: encode$T,
25492
- decode: decode$N
25491
+ encode: encode$Q,
25492
+ decode: decode$K
25493
25493
  });
25494
- const encode$S = (attributes) => attributes?.["w:themeShade"];
25495
- const decode$M = (attrs) => attrs?.themeShade;
25494
+ const encode$P = (attributes) => attributes?.["w:themeShade"];
25495
+ const decode$J = (attrs) => attrs?.themeShade;
25496
25496
  const attrConfig$o = Object.freeze({
25497
25497
  xmlName: "w:themeShade",
25498
25498
  sdName: "themeShade",
25499
- encode: encode$S,
25500
- decode: decode$M
25499
+ encode: encode$P,
25500
+ decode: decode$J
25501
25501
  });
25502
25502
  const validXmlAttributes$k = [attrConfig$s, attrConfig$r, attrConfig$q, attrConfig$p, attrConfig$o];
25503
- const XML_NODE_NAME$v = "w:u";
25504
- const SD_ATTR_KEY$f = "underline";
25505
- const encode$R = (params2, encodedAttrs = {}) => {
25503
+ const XML_NODE_NAME$s = "w:u";
25504
+ const SD_ATTR_KEY$c = "underline";
25505
+ const encode$O = (params2, encodedAttrs = {}) => {
25506
25506
  const { nodes } = params2;
25507
25507
  const node = nodes?.[0];
25508
25508
  const sourceAttrs = node?.attributes || {};
@@ -25518,12 +25518,12 @@ const encode$R = (params2, encodedAttrs = {}) => {
25518
25518
  if (themeShade !== void 0 && themeShade !== null) attributes["w:themeShade"] = themeShade;
25519
25519
  return {
25520
25520
  type: "attr",
25521
- xmlName: XML_NODE_NAME$v,
25522
- sdNodeOrKeyName: SD_ATTR_KEY$f,
25521
+ xmlName: XML_NODE_NAME$s,
25522
+ sdNodeOrKeyName: SD_ATTR_KEY$c,
25523
25523
  attributes
25524
25524
  };
25525
25525
  };
25526
- const decode$L = (params2) => {
25526
+ const decode$I = (params2) => {
25527
25527
  const attrs = params2?.node?.attrs || {};
25528
25528
  const underlineType = attrs.underlineType ?? attrs.underline ?? null;
25529
25529
  const color = attrs.underlineColor ?? attrs.color ?? null;
@@ -25541,20 +25541,20 @@ const decode$L = (params2) => {
25541
25541
  if (themeTint) attributes["w:themeTint"] = themeTint;
25542
25542
  if (themeShade) attributes["w:themeShade"] = themeShade;
25543
25543
  return {
25544
- name: XML_NODE_NAME$v,
25544
+ name: XML_NODE_NAME$s,
25545
25545
  attributes
25546
25546
  };
25547
25547
  };
25548
- const config$s = {
25549
- xmlName: XML_NODE_NAME$v,
25550
- sdNodeOrKeyName: SD_ATTR_KEY$f,
25548
+ const config$r = {
25549
+ xmlName: XML_NODE_NAME$s,
25550
+ sdNodeOrKeyName: SD_ATTR_KEY$c,
25551
25551
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25552
- encode: encode$R,
25553
- decode: decode$L,
25552
+ encode: encode$O,
25553
+ decode: decode$I,
25554
25554
  attributes: validXmlAttributes$k
25555
25555
  };
25556
- const translator$16 = NodeTranslator.from(config$s);
25557
- const encode$Q = (attributes) => {
25556
+ const translator$1l = NodeTranslator.from(config$r);
25557
+ const encode$N = (attributes) => {
25558
25558
  const raw = attributes?.["w:val"];
25559
25559
  if (raw === void 0 || raw === null) return void 0;
25560
25560
  if (typeof raw === "boolean") return raw;
@@ -25564,24 +25564,24 @@ const encode$Q = (attributes) => {
25564
25564
  if (val === "1" || val === "true" || val === "on") return true;
25565
25565
  return void 0;
25566
25566
  };
25567
- const decode$K = (attrs) => {
25567
+ const decode$H = (attrs) => {
25568
25568
  if (attrs?.strike === false) return "0";
25569
25569
  return void 0;
25570
25570
  };
25571
25571
  const attrConfig$n = Object.freeze({
25572
25572
  xmlName: "w:val",
25573
25573
  sdName: "strike",
25574
- encode: encode$Q,
25575
- decode: decode$K
25574
+ encode: encode$N,
25575
+ decode: decode$H
25576
25576
  });
25577
25577
  const validXmlAttributes$j = [attrConfig$n];
25578
- const XML_NODE_NAME$u = "w:strike";
25579
- const SD_ATTR_KEY$e = "strike";
25580
- const encode$P = (params2, encodedAttrs = {}) => {
25578
+ const XML_NODE_NAME$r = "w:strike";
25579
+ const SD_ATTR_KEY$b = "strike";
25580
+ const encode$M = (params2, encodedAttrs = {}) => {
25581
25581
  const { nodes } = params2;
25582
25582
  const node = nodes?.[0];
25583
25583
  if (!node) return void 0;
25584
- const val = encodedAttrs?.[SD_ATTR_KEY$e];
25584
+ const val = encodedAttrs?.[SD_ATTR_KEY$b];
25585
25585
  let attributes;
25586
25586
  if (val === false) attributes = { "w:val": "0" };
25587
25587
  else if (val === true) attributes = {};
@@ -25590,55 +25590,55 @@ const encode$P = (params2, encodedAttrs = {}) => {
25590
25590
  else if (val === true && attributes["w:val"] === void 0) delete attributes["w:val"];
25591
25591
  return {
25592
25592
  type: "attr",
25593
- xmlName: XML_NODE_NAME$u,
25594
- sdNodeOrKeyName: SD_ATTR_KEY$e,
25593
+ xmlName: XML_NODE_NAME$r,
25594
+ sdNodeOrKeyName: SD_ATTR_KEY$b,
25595
25595
  attributes
25596
25596
  };
25597
25597
  };
25598
- const config$r = {
25599
- xmlName: XML_NODE_NAME$u,
25600
- sdNodeOrKeyName: SD_ATTR_KEY$e,
25598
+ const config$q = {
25599
+ xmlName: XML_NODE_NAME$r,
25600
+ sdNodeOrKeyName: SD_ATTR_KEY$b,
25601
25601
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25602
- encode: encode$P,
25602
+ encode: encode$M,
25603
25603
  attributes: validXmlAttributes$j
25604
25604
  };
25605
- const translator$15 = NodeTranslator.from(config$r);
25606
- const encode$O = (attributes) => attributes?.["w:val"];
25607
- const decode$J = (attrs) => attrs?.color;
25605
+ const translator$1k = NodeTranslator.from(config$q);
25606
+ const encode$L = (attributes) => attributes?.["w:val"];
25607
+ const decode$G = (attrs) => attrs?.color;
25608
25608
  const attrConfig$m = Object.freeze({
25609
25609
  xmlName: "w:val",
25610
25610
  sdName: "color",
25611
- encode: encode$O,
25612
- decode: decode$J
25611
+ encode: encode$L,
25612
+ decode: decode$G
25613
25613
  });
25614
- const encode$N = (attributes) => attributes?.["w:themeColor"];
25615
- const decode$I = (attrs) => attrs?.themeColor;
25614
+ const encode$K = (attributes) => attributes?.["w:themeColor"];
25615
+ const decode$F = (attrs) => attrs?.themeColor;
25616
25616
  const attrConfig$l = Object.freeze({
25617
25617
  xmlName: "w:themeColor",
25618
25618
  sdName: "themeColor",
25619
- encode: encode$N,
25620
- decode: decode$I
25619
+ encode: encode$K,
25620
+ decode: decode$F
25621
25621
  });
25622
- const encode$M = (attributes) => attributes?.["w:themeTint"];
25623
- const decode$H = (attrs) => attrs?.themeTint;
25622
+ const encode$J = (attributes) => attributes?.["w:themeTint"];
25623
+ const decode$E = (attrs) => attrs?.themeTint;
25624
25624
  const attrConfig$k = Object.freeze({
25625
25625
  xmlName: "w:themeTint",
25626
25626
  sdName: "themeTint",
25627
- encode: encode$M,
25628
- decode: decode$H
25627
+ encode: encode$J,
25628
+ decode: decode$E
25629
25629
  });
25630
- const encode$L = (attributes) => attributes?.["w:themeShade"];
25631
- const decode$G = (attrs) => attrs?.themeShade;
25630
+ const encode$I = (attributes) => attributes?.["w:themeShade"];
25631
+ const decode$D = (attrs) => attrs?.themeShade;
25632
25632
  const attrConfig$j = Object.freeze({
25633
25633
  xmlName: "w:themeShade",
25634
25634
  sdName: "themeShade",
25635
- encode: encode$L,
25636
- decode: decode$G
25635
+ encode: encode$I,
25636
+ decode: decode$D
25637
25637
  });
25638
25638
  const validXmlAttributes$i = [attrConfig$m, attrConfig$l, attrConfig$k, attrConfig$j];
25639
- const XML_NODE_NAME$t = "w:color";
25640
- const SD_ATTR_KEY$d = "color";
25641
- const encode$K = (params2, encodedAttrs = {}) => {
25639
+ const XML_NODE_NAME$q = "w:color";
25640
+ const SD_ATTR_KEY$a = "color";
25641
+ const encode$H = (params2, encodedAttrs = {}) => {
25642
25642
  const { nodes } = params2;
25643
25643
  const node = nodes?.[0];
25644
25644
  const sourceAttrs = node?.attributes || {};
@@ -25653,63 +25653,63 @@ const encode$K = (params2, encodedAttrs = {}) => {
25653
25653
  if (themeShade !== void 0 && themeShade !== null) attributes["w:themeShade"] = themeShade;
25654
25654
  return {
25655
25655
  type: "attr",
25656
- xmlName: XML_NODE_NAME$t,
25657
- sdNodeOrKeyName: SD_ATTR_KEY$d,
25656
+ xmlName: XML_NODE_NAME$q,
25657
+ sdNodeOrKeyName: SD_ATTR_KEY$a,
25658
25658
  attributes
25659
25659
  };
25660
25660
  };
25661
- const config$q = {
25662
- xmlName: XML_NODE_NAME$t,
25663
- sdNodeOrKeyName: SD_ATTR_KEY$d,
25661
+ const config$p = {
25662
+ xmlName: XML_NODE_NAME$q,
25663
+ sdNodeOrKeyName: SD_ATTR_KEY$a,
25664
25664
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25665
- encode: encode$K,
25665
+ encode: encode$H,
25666
25666
  attributes: validXmlAttributes$i
25667
25667
  };
25668
- const translator$14 = NodeTranslator.from(config$q);
25669
- const encode$J = (attributes) => attributes?.["w:eastAsia"];
25670
- const decode$F = (attrs) => attrs?.eastAsia;
25668
+ const translator$1j = NodeTranslator.from(config$p);
25669
+ const encode$G = (attributes) => attributes?.["w:eastAsia"];
25670
+ const decode$C = (attrs) => attrs?.eastAsia;
25671
25671
  const attrConfig$i = Object.freeze({
25672
25672
  xmlName: "w:eastAsia",
25673
25673
  sdName: "eastAsia",
25674
- encode: encode$J,
25675
- decode: decode$F
25674
+ encode: encode$G,
25675
+ decode: decode$C
25676
25676
  });
25677
- const encode$I = (attributes) => attributes?.["w:ascii"];
25678
- const decode$E = (attrs) => attrs?.ascii;
25677
+ const encode$F = (attributes) => attributes?.["w:ascii"];
25678
+ const decode$B = (attrs) => attrs?.ascii;
25679
25679
  const attrConfig$h = Object.freeze({
25680
25680
  xmlName: "w:ascii",
25681
25681
  sdName: "ascii",
25682
- encode: encode$I,
25683
- decode: decode$E
25682
+ encode: encode$F,
25683
+ decode: decode$B
25684
25684
  });
25685
- const encode$H = (attributes) => attributes?.["w:hAnsi"];
25686
- const decode$D = (attrs) => attrs?.hAnsi;
25685
+ const encode$E = (attributes) => attributes?.["w:hAnsi"];
25686
+ const decode$A = (attrs) => attrs?.hAnsi;
25687
25687
  const attrConfig$g = Object.freeze({
25688
25688
  xmlName: "w:hAnsi",
25689
25689
  sdName: "hAnsi",
25690
- encode: encode$H,
25691
- decode: decode$D
25690
+ encode: encode$E,
25691
+ decode: decode$A
25692
25692
  });
25693
- const encode$G = (attributes) => attributes?.["w:cs"];
25694
- const decode$C = (attrs) => attrs?.cs;
25693
+ const encode$D = (attributes) => attributes?.["w:cs"];
25694
+ const decode$z = (attrs) => attrs?.cs;
25695
25695
  const attrConfig$f = Object.freeze({
25696
25696
  xmlName: "w:cs",
25697
25697
  sdName: "cs",
25698
- encode: encode$G,
25699
- decode: decode$C
25698
+ encode: encode$D,
25699
+ decode: decode$z
25700
25700
  });
25701
- const encode$F = (attributes) => attributes?.["w:val"];
25702
- const decode$B = (attrs) => attrs?.value;
25701
+ const encode$C = (attributes) => attributes?.["w:val"];
25702
+ const decode$y = (attrs) => attrs?.value;
25703
25703
  const attrConfig$e = Object.freeze({
25704
25704
  xmlName: "w:val",
25705
25705
  sdName: "value",
25706
- encode: encode$F,
25707
- decode: decode$B
25706
+ encode: encode$C,
25707
+ decode: decode$y
25708
25708
  });
25709
25709
  const validXmlAttributes$h = [attrConfig$i, attrConfig$h, attrConfig$g, attrConfig$f, attrConfig$e];
25710
- const XML_NODE_NAME$s = "w:rFonts";
25711
- const SD_ATTR_KEY$c = "fontFamily";
25712
- const encode$E = (params2, encodedAttrs = {}) => {
25710
+ const XML_NODE_NAME$p = "w:rFonts";
25711
+ const SD_ATTR_KEY$9 = "fontFamily";
25712
+ const encode$B = (params2, encodedAttrs = {}) => {
25713
25713
  const { nodes } = params2;
25714
25714
  const node = nodes?.[0];
25715
25715
  const sourceAttrs = node?.attributes || {};
@@ -25733,111 +25733,119 @@ const encode$E = (params2, encodedAttrs = {}) => {
25733
25733
  attributes["w:val"] = attributes["w:eastAsia"];
25734
25734
  }
25735
25735
  if (attributes["w:val"] === void 0) delete attributes["w:val"];
25736
+ if (params2.inlineDocumentFonts) {
25737
+ const font = attributes["w:ascii"];
25738
+ if (font) {
25739
+ if (!params2.inlineDocumentFonts.includes(font)) {
25740
+ params2.inlineDocumentFonts.push(font);
25741
+ }
25742
+ }
25743
+ }
25736
25744
  return {
25737
25745
  type: "attr",
25738
- xmlName: XML_NODE_NAME$s,
25739
- sdNodeOrKeyName: SD_ATTR_KEY$c,
25746
+ xmlName: XML_NODE_NAME$p,
25747
+ sdNodeOrKeyName: SD_ATTR_KEY$9,
25740
25748
  attributes
25741
25749
  };
25742
25750
  };
25743
- const config$p = {
25744
- xmlName: XML_NODE_NAME$s,
25745
- sdNodeOrKeyName: SD_ATTR_KEY$c,
25751
+ const config$o = {
25752
+ xmlName: XML_NODE_NAME$p,
25753
+ sdNodeOrKeyName: SD_ATTR_KEY$9,
25746
25754
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25747
- encode: encode$E,
25755
+ encode: encode$B,
25748
25756
  attributes: validXmlAttributes$h
25749
25757
  };
25750
- const translator$13 = NodeTranslator.from(config$p);
25751
- const encode$D = (attributes) => attributes?.["w:val"];
25752
- const decode$A = (attrs) => attrs?.styleId;
25758
+ const translator$1i = NodeTranslator.from(config$o);
25759
+ const encode$A = (attributes) => attributes?.["w:val"];
25760
+ const decode$x = (attrs) => attrs?.styleId;
25753
25761
  const attrConfig$d = Object.freeze({
25754
25762
  xmlName: "w:val",
25755
25763
  sdName: "styleId",
25756
- encode: encode$D,
25757
- decode: decode$A
25764
+ encode: encode$A,
25765
+ decode: decode$x
25758
25766
  });
25759
25767
  const validXmlAttributes$g = [attrConfig$d];
25760
- const XML_NODE_NAME$r = "w:rStyle";
25761
- const SD_ATTR_KEY$b = "styleId";
25762
- const encode$C = (params2, encodedAttrs = {}) => {
25768
+ const XML_NODE_NAME$o = "w:rStyle";
25769
+ const SD_ATTR_KEY$8 = "styleId";
25770
+ const encode$z = (params2, encodedAttrs = {}) => {
25763
25771
  const { nodes } = params2;
25764
25772
  const node = nodes?.[0];
25765
25773
  const value = encodedAttrs.styleId ?? node?.attributes?.["w:val"];
25766
25774
  return {
25767
25775
  type: "attr",
25768
- xmlName: XML_NODE_NAME$r,
25769
- sdNodeOrKeyName: SD_ATTR_KEY$b,
25776
+ xmlName: XML_NODE_NAME$o,
25777
+ sdNodeOrKeyName: SD_ATTR_KEY$8,
25770
25778
  attributes: { "w:val": value ?? null }
25771
25779
  };
25772
25780
  };
25773
- const config$o = {
25774
- xmlName: XML_NODE_NAME$r,
25775
- sdNodeOrKeyName: SD_ATTR_KEY$b,
25781
+ const config$n = {
25782
+ xmlName: XML_NODE_NAME$o,
25783
+ sdNodeOrKeyName: SD_ATTR_KEY$8,
25776
25784
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25777
- encode: encode$C,
25785
+ encode: encode$z,
25778
25786
  attributes: validXmlAttributes$g
25779
25787
  };
25780
- const translator$12 = NodeTranslator.from(config$o);
25781
- const encode$B = (attributes) => attributes?.["w:val"];
25782
- const decode$z = (attrs) => attrs?.fontSize;
25788
+ const translator$1h = NodeTranslator.from(config$n);
25789
+ const encode$y = (attributes) => attributes?.["w:val"];
25790
+ const decode$w = (attrs) => attrs?.fontSize;
25783
25791
  const attrConfig$c = Object.freeze({
25784
25792
  xmlName: "w:val",
25785
25793
  sdName: "fontSize",
25786
- encode: encode$B,
25787
- decode: decode$z
25794
+ encode: encode$y,
25795
+ decode: decode$w
25788
25796
  });
25789
25797
  const validXmlAttributes$f = [attrConfig$c];
25790
- const XML_NODE_NAME$q = "w:sz";
25791
- const SD_ATTR_KEY$a = "fontSize";
25792
- const encode$A = (params2, encodedAttrs = {}) => {
25798
+ const XML_NODE_NAME$n = "w:sz";
25799
+ const SD_ATTR_KEY$7 = "fontSize";
25800
+ const encode$x = (params2, encodedAttrs = {}) => {
25793
25801
  const { nodes } = params2;
25794
25802
  const node = nodes?.[0];
25795
25803
  const value = encodedAttrs.fontSize ?? node?.attributes?.["w:val"];
25796
25804
  return {
25797
25805
  type: "attr",
25798
- xmlName: XML_NODE_NAME$q,
25799
- sdNodeOrKeyName: SD_ATTR_KEY$a,
25806
+ xmlName: XML_NODE_NAME$n,
25807
+ sdNodeOrKeyName: SD_ATTR_KEY$7,
25800
25808
  attributes: { "w:val": value ?? null }
25801
25809
  };
25802
25810
  };
25803
- const config$n = {
25804
- xmlName: XML_NODE_NAME$q,
25805
- sdNodeOrKeyName: SD_ATTR_KEY$a,
25811
+ const config$m = {
25812
+ xmlName: XML_NODE_NAME$n,
25813
+ sdNodeOrKeyName: SD_ATTR_KEY$7,
25806
25814
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25807
- encode: encode$A,
25815
+ encode: encode$x,
25808
25816
  attributes: validXmlAttributes$f
25809
25817
  };
25810
- const translator$11 = NodeTranslator.from(config$n);
25811
- const encode$z = (attributes) => attributes?.["w:val"];
25812
- const decode$y = (attrs) => attrs?.fontSizeCs;
25818
+ const translator$1g = NodeTranslator.from(config$m);
25819
+ const encode$w = (attributes) => attributes?.["w:val"];
25820
+ const decode$v = (attrs) => attrs?.fontSizeCs;
25813
25821
  const attrConfig$b = Object.freeze({
25814
25822
  xmlName: "w:val",
25815
25823
  sdName: "fontSizeCs",
25816
- encode: encode$z,
25817
- decode: decode$y
25824
+ encode: encode$w,
25825
+ decode: decode$v
25818
25826
  });
25819
25827
  const validXmlAttributes$e = [attrConfig$b];
25820
- const XML_NODE_NAME$p = "w:szCs";
25821
- const SD_ATTR_KEY$9 = "fontSizeCs";
25822
- const encode$y = (params2, encodedAttrs = {}) => {
25828
+ const XML_NODE_NAME$m = "w:szCs";
25829
+ const SD_ATTR_KEY$6 = "fontSizeCs";
25830
+ const encode$v = (params2, encodedAttrs = {}) => {
25823
25831
  const { nodes } = params2;
25824
25832
  const node = nodes?.[0];
25825
25833
  const value = encodedAttrs.fontSizeCs ?? node?.attributes?.["w:val"];
25826
25834
  return {
25827
25835
  type: "attr",
25828
- xmlName: XML_NODE_NAME$p,
25829
- sdNodeOrKeyName: SD_ATTR_KEY$9,
25836
+ xmlName: XML_NODE_NAME$m,
25837
+ sdNodeOrKeyName: SD_ATTR_KEY$6,
25830
25838
  attributes: { "w:val": value ?? null }
25831
25839
  };
25832
25840
  };
25833
- const config$m = {
25834
- xmlName: XML_NODE_NAME$p,
25835
- sdNodeOrKeyName: SD_ATTR_KEY$9,
25841
+ const config$l = {
25842
+ xmlName: XML_NODE_NAME$m,
25843
+ sdNodeOrKeyName: SD_ATTR_KEY$6,
25836
25844
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25837
- encode: encode$y,
25845
+ encode: encode$v,
25838
25846
  attributes: validXmlAttributes$e
25839
25847
  };
25840
- const translator$10 = NodeTranslator.from(config$m);
25848
+ const translator$1f = NodeTranslator.from(config$l);
25841
25849
  const generateV2HandlerEntity = (handlerName, translator2) => ({
25842
25850
  handlerName,
25843
25851
  handler: (params2) => {
@@ -25861,7 +25869,7 @@ function createSingleAttrPropertyHandler(xmlName, sdName = null, attrName = "w:v
25861
25869
  xmlName,
25862
25870
  sdNodeOrKeyName: sdName,
25863
25871
  encode: ({ nodes }) => {
25864
- return transformEncode(nodes[0].attributes[attrName]) ?? void 0;
25872
+ return transformEncode(nodes[0]?.attributes?.[attrName]) ?? void 0;
25865
25873
  },
25866
25874
  decode: ({ node }) => {
25867
25875
  const value = node.attrs?.[sdName] != null ? transformDecode(node.attrs[sdName]) : void 0;
@@ -25893,8 +25901,32 @@ function createBorderPropertyHandler(xmlName, sdName = null) {
25893
25901
  xmlName,
25894
25902
  sdNodeOrKeyName: sdName,
25895
25903
  attributes: [
25896
- createAttributeHandler("w:val"),
25897
- createAttributeHandler("w:color"),
25904
+ createAttributeHandler(
25905
+ "w:val",
25906
+ "val",
25907
+ (v2) => v2 === "nil" ? "none" : v2,
25908
+ (v2) => v2 === "none" ? "nil" : v2
25909
+ ),
25910
+ createAttributeHandler(
25911
+ "w:color",
25912
+ "color",
25913
+ (v2) => {
25914
+ if (v2 === "auto") {
25915
+ return null;
25916
+ } else if (v2) {
25917
+ return `#${v2}`;
25918
+ } else {
25919
+ return void 0;
25920
+ }
25921
+ },
25922
+ (v2) => {
25923
+ if (v2) {
25924
+ return v2.replace("#", "");
25925
+ } else {
25926
+ return void 0;
25927
+ }
25928
+ }
25929
+ ),
25898
25930
  createAttributeHandler("w:themeColor"),
25899
25931
  createAttributeHandler("w:themeTint"),
25900
25932
  createAttributeHandler("w:themeShade"),
@@ -25960,6 +25992,37 @@ function decodeProperties(translatorsBySdName, properties) {
25960
25992
  });
25961
25993
  return elements;
25962
25994
  }
25995
+ function createNestedPropertiesTranslator(xmlName, sdName, propertyTranslators2, defaultEncodedAttrs = {}) {
25996
+ const propertyTranslatorsByXmlName = {};
25997
+ const propertyTranslatorsBySdName = {};
25998
+ propertyTranslators2.forEach((translator2) => {
25999
+ propertyTranslatorsByXmlName[translator2.xmlName] = translator2;
26000
+ propertyTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
26001
+ });
26002
+ return {
26003
+ xmlName,
26004
+ sdNodeOrKeyName: sdName,
26005
+ type: NodeTranslator.translatorTypes.NODE,
26006
+ attributes: [],
26007
+ encode: (params2) => {
26008
+ const { nodes } = params2;
26009
+ const node = nodes[0];
26010
+ const attributes = { ...defaultEncodedAttrs, ...encodeProperties(node, propertyTranslatorsByXmlName) };
26011
+ return Object.keys(attributes).length > 0 ? attributes : void 0;
26012
+ },
26013
+ decode: (params2) => {
26014
+ const currentValue = params2.node.attrs?.[sdName];
26015
+ const elements = decodeProperties(propertyTranslatorsBySdName, currentValue);
26016
+ const newNode = {
26017
+ name: xmlName,
26018
+ type: "element",
26019
+ attributes: {},
26020
+ elements
26021
+ };
26022
+ return newNode;
26023
+ }
26024
+ };
26025
+ }
25963
26026
  const parseBoolean = (value) => value != null ? ["1", "true"].includes(value) : void 0;
25964
26027
  const booleanToString = (value) => value != null ? value ? "1" : "0" : void 0;
25965
26028
  const parseInteger = (value) => {
@@ -25971,9 +26034,9 @@ const integerToString = (value) => {
25971
26034
  const intValue = parseInteger(value);
25972
26035
  return intValue != void 0 ? String(intValue) : void 0;
25973
26036
  };
25974
- const XML_NODE_NAME$o = "w:caps";
25975
- const SD_ATTR_KEY$8 = "textTransform";
25976
- const encode$x = (params2, encodedAttrs = {}) => {
26037
+ const XML_NODE_NAME$l = "w:caps";
26038
+ const SD_ATTR_KEY$5 = "textTransform";
26039
+ const encode$u = (params2, encodedAttrs = {}) => {
25977
26040
  const { nodes } = params2;
25978
26041
  const node = nodes[0];
25979
26042
  if (!node) return void 0;
@@ -25985,31 +26048,31 @@ const encode$x = (params2, encodedAttrs = {}) => {
25985
26048
  }
25986
26049
  return {
25987
26050
  type: "attr",
25988
- xmlName: XML_NODE_NAME$o,
25989
- sdNodeOrKeyName: SD_ATTR_KEY$8,
25990
- attributes: { [SD_ATTR_KEY$8]: result }
26051
+ xmlName: XML_NODE_NAME$l,
26052
+ sdNodeOrKeyName: SD_ATTR_KEY$5,
26053
+ attributes: { [SD_ATTR_KEY$5]: result }
25991
26054
  };
25992
26055
  };
25993
- const config$l = {
25994
- xmlName: XML_NODE_NAME$o,
25995
- sdNodeOrKeyName: SD_ATTR_KEY$8,
26056
+ const config$k = {
26057
+ xmlName: XML_NODE_NAME$l,
26058
+ sdNodeOrKeyName: SD_ATTR_KEY$5,
25996
26059
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
25997
- encode: encode$x,
26060
+ encode: encode$u,
25998
26061
  attributes: [createAttributeHandler("w:val")]
25999
26062
  };
26000
- const translator$$ = NodeTranslator.from(config$l);
26063
+ const translator$1e = NodeTranslator.from(config$k);
26001
26064
  const runPropertyTranslators = Object.freeze({
26002
- "w:b": translator$18,
26003
- "w:i": translator$17,
26004
- "w:u": translator$16,
26005
- "w:strike": translator$15,
26006
- "w:color": translator$14,
26007
- "w:highlight": translator$1b,
26008
- "w:rFonts": translator$13,
26009
- "w:rStyle": translator$12,
26010
- "w:sz": translator$11,
26011
- "w:szCs": translator$10,
26012
- "w:caps": translator$$
26065
+ "w:b": translator$1n,
26066
+ "w:i": translator$1m,
26067
+ "w:u": translator$1l,
26068
+ "w:strike": translator$1k,
26069
+ "w:color": translator$1j,
26070
+ "w:highlight": translator$1q,
26071
+ "w:rFonts": translator$1i,
26072
+ "w:rStyle": translator$1h,
26073
+ "w:sz": translator$1g,
26074
+ "w:szCs": translator$1f,
26075
+ "w:caps": translator$1e
26013
26076
  });
26014
26077
  const rawRunPropertyXmlNames = Object.freeze(["w:lang", "w:shd"]);
26015
26078
  const RAW_CHILD_NAME_SET = new Set(rawRunPropertyXmlNames);
@@ -26023,9 +26086,9 @@ const toRunPropertyEntry = (candidate) => {
26023
26086
  attributes: { ...candidate.attributes || {} }
26024
26087
  };
26025
26088
  };
26026
- const XML_NODE_NAME$n = "w:rPr";
26027
- const SD_ATTR_KEY$7 = "runProperties";
26028
- const encode$w = (params2) => {
26089
+ const XML_NODE_NAME$k = "w:rPr";
26090
+ const SD_ATTR_KEY$4 = "runProperties";
26091
+ const encode$t = (params2) => {
26029
26092
  const { nodes } = params2;
26030
26093
  const node = nodes?.[0] || {};
26031
26094
  const contents = Array.isArray(node.elements) ? node.elements : [];
@@ -26059,16 +26122,16 @@ const encode$w = (params2) => {
26059
26122
  attributes: runPropsArray
26060
26123
  };
26061
26124
  };
26062
- const config$k = {
26063
- xmlName: XML_NODE_NAME$n,
26064
- sdNodeOrKeyName: SD_ATTR_KEY$7,
26125
+ const config$j = {
26126
+ xmlName: XML_NODE_NAME$k,
26127
+ sdNodeOrKeyName: SD_ATTR_KEY$4,
26065
26128
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
26066
- encode: encode$w
26129
+ encode: encode$t
26067
26130
  };
26068
- const translator$_ = NodeTranslator.from(config$k);
26131
+ const translator$1d = NodeTranslator.from(config$j);
26069
26132
  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;
26070
26133
  const containsEastAsianCharacters = (text) => EAST_ASIAN_CHARACTER_REGEX.test(text);
26071
- const collectRunProperties = (params2, rPrNode, translator2 = translator$_) => {
26134
+ const collectRunProperties = (params2, rPrNode, translator2 = translator$1d) => {
26072
26135
  if (!rPrNode) return { entries: [], hadRPr: false, styleChangeMarks: [] };
26073
26136
  const result = translator2.encode({ ...params2, nodes: [rPrNode] }) || {};
26074
26137
  let entries = [];
@@ -26541,7 +26604,7 @@ const ensureTrackedWrapper = (runs, trackingMarksByType = /* @__PURE__ */ new Ma
26541
26604
  }
26542
26605
  return runs;
26543
26606
  };
26544
- const XML_NODE_NAME$m = "w:hyperlink";
26607
+ const XML_NODE_NAME$j = "w:hyperlink";
26545
26608
  const SD_NODE_NAME$e = "link";
26546
26609
  const _createAttributeHandler = (xmlName, sdName) => ({
26547
26610
  xmlName,
@@ -26562,7 +26625,7 @@ const validXmlAttributes$d = [
26562
26625
  _createAttributeHandler("r:id", "rId"),
26563
26626
  _createAttributeHandler("w:tgtFrame", "target")
26564
26627
  ];
26565
- const encode$v = (params2, encodedAttrs) => {
26628
+ const encode$s = (params2, encodedAttrs) => {
26566
26629
  const { nodes, docx, nodeListHandler } = params2;
26567
26630
  const node = nodes[0];
26568
26631
  let href = _resolveHref(docx, encodedAttrs);
@@ -26596,7 +26659,7 @@ const _resolveHref = (docx, encodedAttrs) => {
26596
26659
  }
26597
26660
  return href;
26598
26661
  };
26599
- function decode$x(params2) {
26662
+ function decode$u(params2) {
26600
26663
  const { hyperlinkGroup = [params2.node] } = params2.extraParams || {};
26601
26664
  const node = hyperlinkGroup[0];
26602
26665
  const linkMark = node.marks.find((m2) => m2.type === "link");
@@ -26645,55 +26708,55 @@ function _addNewLinkRelationship(params2, link) {
26645
26708
  });
26646
26709
  return id;
26647
26710
  }
26648
- const config$j = {
26649
- xmlName: XML_NODE_NAME$m,
26711
+ const config$i = {
26712
+ xmlName: XML_NODE_NAME$j,
26650
26713
  sdNodeOrKeyName: SD_NODE_NAME$e,
26651
26714
  type: NodeTranslator.translatorTypes.NODE,
26652
- encode: encode$v,
26653
- decode: decode$x,
26715
+ encode: encode$s,
26716
+ decode: decode$u,
26654
26717
  attributes: validXmlAttributes$d
26655
26718
  };
26656
- const translator$Z = NodeTranslator.from(config$j);
26657
- const encode$u = (attributes) => {
26719
+ const translator$1c = NodeTranslator.from(config$i);
26720
+ const encode$r = (attributes) => {
26658
26721
  return attributes["w:rsidR"];
26659
26722
  };
26660
- const decode$w = (attrs) => {
26723
+ const decode$t = (attrs) => {
26661
26724
  return attrs.rsidR;
26662
26725
  };
26663
26726
  const attrConfig$a = Object.freeze({
26664
26727
  xmlName: "w:rsidR",
26665
26728
  sdName: "rsidR",
26666
- encode: encode$u,
26667
- decode: decode$w
26729
+ encode: encode$r,
26730
+ decode: decode$t
26668
26731
  });
26669
- const encode$t = (attributes) => {
26732
+ const encode$q = (attributes) => {
26670
26733
  return attributes["w:rsidRPr"];
26671
26734
  };
26672
- const decode$v = (attrs) => {
26735
+ const decode$s = (attrs) => {
26673
26736
  return attrs.rsidRPr;
26674
26737
  };
26675
26738
  const attrConfig$9 = Object.freeze({
26676
26739
  xmlName: "w:rsidRPr",
26677
26740
  sdName: "rsidRPr",
26678
- encode: encode$t,
26679
- decode: decode$v
26741
+ encode: encode$q,
26742
+ decode: decode$s
26680
26743
  });
26681
- const encode$s = (attributes) => {
26744
+ const encode$p = (attributes) => {
26682
26745
  return attributes["w:rsidDel"];
26683
26746
  };
26684
- const decode$u = (attrs) => {
26747
+ const decode$r = (attrs) => {
26685
26748
  return attrs.rsidDel;
26686
26749
  };
26687
26750
  const attrConfig$8 = Object.freeze({
26688
26751
  xmlName: "w:rsidDel",
26689
26752
  sdName: "rsidDel",
26690
- encode: encode$s,
26691
- decode: decode$u
26753
+ encode: encode$p,
26754
+ decode: decode$r
26692
26755
  });
26693
26756
  const validXmlAttributes$c = [attrConfig$a, attrConfig$9, attrConfig$8];
26694
- const XML_NODE_NAME$l = "w:r";
26757
+ const XML_NODE_NAME$i = "w:r";
26695
26758
  const SD_KEY_NAME = "run";
26696
- const encode$r = (params2, encodedAttrs = {}) => {
26759
+ const encode$o = (params2, encodedAttrs = {}) => {
26697
26760
  const { nodes = [], nodeListHandler } = params2 || {};
26698
26761
  const runNode = nodes[0];
26699
26762
  if (!runNode) return void 0;
@@ -26741,7 +26804,7 @@ const encode$r = (params2, encodedAttrs = {}) => {
26741
26804
  }
26742
26805
  return runNodeResult;
26743
26806
  };
26744
- const decode$t = (params2, decodedAttrs = {}) => {
26807
+ const decode$q = (params2, decodedAttrs = {}) => {
26745
26808
  const { node } = params2 || {};
26746
26809
  if (!node) return void 0;
26747
26810
  const isLinkNode = node.marks?.some((m2) => m2.type === "link");
@@ -26750,7 +26813,7 @@ const decode$t = (params2, decodedAttrs = {}) => {
26750
26813
  ...params2.extraParams,
26751
26814
  linkProcessed: true
26752
26815
  };
26753
- return translator$Z.decode({ ...params2, extraParams });
26816
+ return translator$1c.decode({ ...params2, extraParams });
26754
26817
  }
26755
26818
  const { runNode: runNodeForExport, trackingMarksByType } = prepareRunTrackingContext(node);
26756
26819
  const runAttrs = runNodeForExport.attrs || {};
@@ -26806,7 +26869,7 @@ const decode$t = (params2, decodedAttrs = {}) => {
26806
26869
  runs.push(trackedClone);
26807
26870
  return;
26808
26871
  }
26809
- const runWrapper = { name: XML_NODE_NAME$l, elements: [] };
26872
+ const runWrapper = { name: XML_NODE_NAME$i, elements: [] };
26810
26873
  applyBaseRunProps(runWrapper);
26811
26874
  if (!Array.isArray(runWrapper.elements)) runWrapper.elements = [];
26812
26875
  runWrapper.elements.push(cloneXmlNode(child));
@@ -26814,7 +26877,7 @@ const decode$t = (params2, decodedAttrs = {}) => {
26814
26877
  });
26815
26878
  const trackedRuns = ensureTrackedWrapper(runs, trackingMarksByType);
26816
26879
  if (!trackedRuns.length) {
26817
- const emptyRun = { name: XML_NODE_NAME$l, elements: [] };
26880
+ const emptyRun = { name: XML_NODE_NAME$i, elements: [] };
26818
26881
  applyBaseRunProps(emptyRun);
26819
26882
  trackedRuns.push(emptyRun);
26820
26883
  }
@@ -26828,15 +26891,15 @@ const decode$t = (params2, decodedAttrs = {}) => {
26828
26891
  }
26829
26892
  return trackedRuns;
26830
26893
  };
26831
- const config$i = {
26832
- xmlName: XML_NODE_NAME$l,
26894
+ const config$h = {
26895
+ xmlName: XML_NODE_NAME$i,
26833
26896
  sdNodeOrKeyName: SD_KEY_NAME,
26834
26897
  type: NodeTranslator.translatorTypes.NODE,
26835
- encode: encode$r,
26836
- decode: decode$t,
26898
+ encode: encode$o,
26899
+ decode: decode$q,
26837
26900
  attributes: validXmlAttributes$c
26838
26901
  };
26839
- const translator$Y = NodeTranslator.from(config$i);
26902
+ const translator$1b = NodeTranslator.from(config$h);
26840
26903
  function preProcessVerticalMergeCells(table, { editorSchema }) {
26841
26904
  if (!table || !Array.isArray(table.content)) {
26842
26905
  return table;
@@ -26877,13 +26940,13 @@ function preProcessVerticalMergeCells(table, { editorSchema }) {
26877
26940
  }
26878
26941
  return table;
26879
26942
  }
26880
- const translator$X = NodeTranslator.from({
26943
+ const translator$1a = NodeTranslator.from({
26881
26944
  xmlName: "w:cantSplit",
26882
26945
  sdNodeOrKeyName: "cantSplit",
26883
26946
  encode: ({ nodes }) => ["1", "true"].includes(nodes[0].attributes?.["w:val"] ?? "1"),
26884
26947
  decode: ({ node }) => node.attrs?.cantSplit ? { attributes: {} } : void 0
26885
26948
  });
26886
- const translator$W = NodeTranslator.from({
26949
+ const translator$19 = NodeTranslator.from({
26887
26950
  xmlName: "w:cnfStyle",
26888
26951
  sdNodeOrKeyName: "cnfStyle",
26889
26952
  attributes: [
@@ -26909,8 +26972,8 @@ const translator$W = NodeTranslator.from({
26909
26972
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
26910
26973
  }
26911
26974
  });
26912
- const translator$V = NodeTranslator.from(createSingleAttrPropertyHandler("w:divId"));
26913
- const translator$U = NodeTranslator.from(
26975
+ const translator$18 = NodeTranslator.from(createSingleAttrPropertyHandler("w:divId"));
26976
+ const translator$17 = NodeTranslator.from(
26914
26977
  createSingleAttrPropertyHandler(
26915
26978
  "w:gridAfter",
26916
26979
  null,
@@ -26919,7 +26982,7 @@ const translator$U = NodeTranslator.from(
26919
26982
  (v2) => integerToString(v2)
26920
26983
  )
26921
26984
  );
26922
- const translator$T = NodeTranslator.from(
26985
+ const translator$16 = NodeTranslator.from(
26923
26986
  createSingleAttrPropertyHandler(
26924
26987
  "w:gridBefore",
26925
26988
  null,
@@ -26928,21 +26991,21 @@ const translator$T = NodeTranslator.from(
26928
26991
  (v2) => integerToString(v2)
26929
26992
  )
26930
26993
  );
26931
- const translator$S = NodeTranslator.from({
26994
+ const translator$15 = NodeTranslator.from({
26932
26995
  xmlName: "w:hidden",
26933
26996
  sdNodeOrKeyName: "hidden",
26934
26997
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
26935
26998
  decode: ({ node }) => node.attrs.hidden ? { attributes: {} } : void 0
26936
26999
  });
26937
- const translator$R = NodeTranslator.from(createSingleAttrPropertyHandler("w:jc", "justification"));
26938
- const translator$Q = NodeTranslator.from(createMeasurementPropertyHandler("w:tblCellSpacing", "tableCellSpacing"));
26939
- const translator$P = NodeTranslator.from({
27000
+ const translator$14 = NodeTranslator.from(createSingleAttrPropertyHandler("w:jc", "justification"));
27001
+ const translator$13 = NodeTranslator.from(createMeasurementPropertyHandler("w:tblCellSpacing", "tableCellSpacing"));
27002
+ const translator$12 = NodeTranslator.from({
26940
27003
  xmlName: "w:tblHeader",
26941
27004
  sdNodeOrKeyName: "repeatHeader",
26942
27005
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
26943
27006
  decode: ({ node }) => node.attrs.repeatHeader ? { attributes: {} } : void 0
26944
27007
  });
26945
- const translator$O = NodeTranslator.from({
27008
+ const translator$11 = NodeTranslator.from({
26946
27009
  xmlName: "w:trHeight",
26947
27010
  sdNodeOrKeyName: "rowHeight",
26948
27011
  encode: ({ nodes }) => {
@@ -26969,84 +27032,43 @@ const translator$O = NodeTranslator.from({
26969
27032
  return Object.keys(heightAttrs).length > 0 ? { attributes: heightAttrs } : void 0;
26970
27033
  }
26971
27034
  });
26972
- const translator$N = NodeTranslator.from(createMeasurementPropertyHandler("w:wAfter"));
26973
- const translator$M = NodeTranslator.from(createMeasurementPropertyHandler("w:wBefore"));
26974
- const XML_NODE_NAME$k = "w:trPr";
26975
- const SD_ATTR_KEY$6 = "tableRowProperties";
26976
- const encode$q = (params2) => {
26977
- const { nodes } = params2;
26978
- const node = nodes[0];
26979
- let attributes = {
27035
+ const translator$10 = NodeTranslator.from(createMeasurementPropertyHandler("w:wAfter"));
27036
+ const translator$$ = NodeTranslator.from(createMeasurementPropertyHandler("w:wBefore"));
27037
+ const propertyTranslators$6 = [
27038
+ translator$1a,
27039
+ translator$19,
27040
+ translator$18,
27041
+ translator$17,
27042
+ translator$16,
27043
+ translator$15,
27044
+ translator$14,
27045
+ translator$13,
27046
+ translator$12,
27047
+ translator$11,
27048
+ translator$10,
27049
+ translator$$
27050
+ ];
27051
+ const translator$_ = NodeTranslator.from(
27052
+ createNestedPropertiesTranslator("w:trPr", "tableRowProperties", propertyTranslators$6, {
26980
27053
  cantSplit: false,
26981
27054
  hidden: false,
26982
27055
  repeatHeader: false
26983
- };
26984
- attributes = {
26985
- ...attributes,
26986
- ...encodeProperties(node, propertyTranslatorsByXmlName$2)
26987
- };
26988
- return {
26989
- type: NodeTranslator.translatorTypes.ATTRIBUTE,
26990
- xmlName: XML_NODE_NAME$k,
26991
- sdNodeOrKeyName: SD_ATTR_KEY$6,
26992
- attributes
26993
- };
26994
- };
26995
- const decode$s = (params2) => {
26996
- const { tableRowProperties = {} } = params2.node.attrs || {};
26997
- const elements = decodeProperties(propertyTranslatorsBySdName$2, tableRowProperties);
26998
- const newNode = {
26999
- name: "w:trPr",
27000
- type: "element",
27001
- attributes: {},
27002
- elements
27003
- };
27004
- return newNode;
27005
- };
27006
- const propertyTranslators$3 = [
27007
- translator$X,
27008
- translator$W,
27009
- translator$V,
27010
- translator$U,
27011
- translator$T,
27012
- translator$S,
27013
- translator$R,
27014
- translator$Q,
27015
- translator$P,
27016
- translator$O,
27017
- translator$N,
27018
- translator$M
27019
- ];
27020
- const propertyTranslatorsByXmlName$2 = {};
27021
- propertyTranslators$3.forEach((translator2) => {
27022
- propertyTranslatorsByXmlName$2[translator2.xmlName] = translator2;
27023
- });
27024
- const propertyTranslatorsBySdName$2 = {};
27025
- propertyTranslators$3.forEach((translator2) => {
27026
- propertyTranslatorsBySdName$2[translator2.sdNodeOrKeyName] = translator2;
27027
- });
27028
- const config$h = {
27029
- xmlName: XML_NODE_NAME$k,
27030
- sdNodeOrKeyName: SD_ATTR_KEY$6,
27031
- type: NodeTranslator.translatorTypes.ATTRIBUTE,
27032
- encode: encode$q,
27033
- decode: decode$s
27034
- };
27035
- const translator$L = NodeTranslator.from(config$h);
27036
- const XML_NODE_NAME$j = "w:tr";
27056
+ })
27057
+ );
27058
+ const XML_NODE_NAME$h = "w:tr";
27037
27059
  const SD_NODE_NAME$d = "tableRow";
27038
27060
  const validXmlAttributes$b = ["w:rsidDel", "w:rsidR", "w:rsidRPr", "w:rsidTr", "w14:paraId", "w14:textId"].map(
27039
27061
  (xmlName) => createAttributeHandler(xmlName)
27040
27062
  );
27041
- const encode$p = (params2, encodedAttrs) => {
27063
+ const encode$n = (params2, encodedAttrs) => {
27042
27064
  const { row } = params2.extraParams;
27043
27065
  let tableRowProperties = {};
27044
27066
  const tPr = row.elements.find((el) => el.name === "w:trPr");
27045
27067
  if (tPr) {
27046
- ({ attributes: tableRowProperties } = translator$L.encode({
27068
+ tableRowProperties = translator$_.encode({
27047
27069
  ...params2,
27048
27070
  nodes: [tPr]
27049
- }));
27071
+ });
27050
27072
  }
27051
27073
  encodedAttrs["tableRowProperties"] = Object.freeze(tableRowProperties);
27052
27074
  encodedAttrs["rowHeight"] = twipsToPixels(tableRowProperties["rowHeight"]?.value);
@@ -27078,7 +27100,7 @@ const encode$p = (params2, encodedAttrs) => {
27078
27100
  };
27079
27101
  return newNode;
27080
27102
  };
27081
- const decode$r = (params2, decodedAttrs) => {
27103
+ const decode$p = (params2, decodedAttrs) => {
27082
27104
  const { node } = params2;
27083
27105
  const elements = translateChildNodes(params2);
27084
27106
  if (node.attrs?.tableRowProperties) {
@@ -27090,7 +27112,7 @@ const decode$r = (params2, decodedAttrs) => {
27090
27112
  }
27091
27113
  }
27092
27114
  tableRowProperties["cantSplit"] = node.attrs["cantSplit"];
27093
- const trPr = translator$L.decode({
27115
+ const trPr = translator$_.decode({
27094
27116
  ...params2,
27095
27117
  node: { ...node, attrs: { ...node.attrs, tableRowProperties } }
27096
27118
  });
@@ -27103,21 +27125,21 @@ const decode$r = (params2, decodedAttrs) => {
27103
27125
  };
27104
27126
  };
27105
27127
  const config$g = {
27106
- xmlName: XML_NODE_NAME$j,
27128
+ xmlName: XML_NODE_NAME$h,
27107
27129
  sdNodeOrKeyName: SD_NODE_NAME$d,
27108
27130
  type: NodeTranslator.translatorTypes.NODE,
27109
- encode: encode$p,
27110
- decode: decode$r,
27131
+ encode: encode$n,
27132
+ decode: decode$p,
27111
27133
  attributes: validXmlAttributes$b
27112
27134
  };
27113
- const translator$K = NodeTranslator.from(config$g);
27114
- const translator$J = NodeTranslator.from({
27135
+ const translator$Z = NodeTranslator.from(config$g);
27136
+ const translator$Y = NodeTranslator.from({
27115
27137
  xmlName: "w:bidiVisual",
27116
27138
  sdNodeOrKeyName: "rightToLeft",
27117
27139
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
27118
27140
  decode: ({ node }) => node.attrs.rightToLeft ? { attributes: {} } : void 0
27119
27141
  });
27120
- const translator$I = NodeTranslator.from({
27142
+ const translator$X = NodeTranslator.from({
27121
27143
  xmlName: "w:shd",
27122
27144
  sdNodeOrKeyName: "shading",
27123
27145
  attributes: [
@@ -27139,11 +27161,11 @@ const translator$I = NodeTranslator.from({
27139
27161
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
27140
27162
  }
27141
27163
  });
27142
- const translator$H = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblCaption", "caption"));
27143
- const translator$G = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblDescription", "description"));
27144
- const translator$F = NodeTranslator.from(createMeasurementPropertyHandler("w:tblInd", "tableIndent"));
27145
- const translator$E = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblLayout", "tableLayout", "w:type"));
27146
- const translator$D = NodeTranslator.from({
27164
+ const translator$W = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblCaption", "caption"));
27165
+ const translator$V = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblDescription", "description"));
27166
+ const translator$U = NodeTranslator.from(createMeasurementPropertyHandler("w:tblInd", "tableIndent"));
27167
+ const translator$T = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblLayout", "tableLayout", "w:type"));
27168
+ const translator$S = NodeTranslator.from({
27147
27169
  xmlName: "w:tblLook",
27148
27170
  sdNodeOrKeyName: "tblLook",
27149
27171
  attributes: ["w:firstColumn", "w:firstRow", "w:lastColumn", "w:lastRow", "w:noHBand", "w:noVBand"].map((attr) => createAttributeHandler(attr, null, parseBoolean, booleanToString)).concat([createAttributeHandler("w:val")]),
@@ -27155,16 +27177,16 @@ const translator$D = NodeTranslator.from({
27155
27177
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
27156
27178
  }
27157
27179
  });
27158
- const translator$C = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblOverlap", "overlap"));
27159
- const translator$B = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblStyle", "tableStyleId"));
27160
- const translator$A = NodeTranslator.from(
27180
+ const translator$R = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblOverlap", "overlap"));
27181
+ const translator$Q = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblStyle", "tableStyleId"));
27182
+ const translator$P = NodeTranslator.from(
27161
27183
  createSingleAttrPropertyHandler("w:tblStyleColBandSize", "tableStyleColBandSize")
27162
27184
  );
27163
- const translator$z = NodeTranslator.from(
27185
+ const translator$O = NodeTranslator.from(
27164
27186
  createSingleAttrPropertyHandler("w:tblStyleRowBandSize", "tableStyleRowBandSize")
27165
27187
  );
27166
- const translator$y = NodeTranslator.from(createMeasurementPropertyHandler("w:tblW", "tableWidth"));
27167
- const translator$x = NodeTranslator.from({
27188
+ const translator$N = NodeTranslator.from(createMeasurementPropertyHandler("w:tblW", "tableWidth"));
27189
+ const translator$M = NodeTranslator.from({
27168
27190
  xmlName: "w:tblpPr",
27169
27191
  sdNodeOrKeyName: "floatingTableProperties",
27170
27192
  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))),
@@ -27176,160 +27198,67 @@ const translator$x = NodeTranslator.from({
27176
27198
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
27177
27199
  }
27178
27200
  });
27179
- const translator$w = NodeTranslator.from(createBorderPropertyHandler("w:bottom"));
27180
- const translator$v = NodeTranslator.from(createMeasurementPropertyHandler("w:bottom", "marginBottom"));
27181
- const translator$u = NodeTranslator.from(createBorderPropertyHandler("w:end"));
27182
- const translator$t = NodeTranslator.from(createMeasurementPropertyHandler("w:end", "marginEnd"));
27183
- const translator$s = NodeTranslator.from(createBorderPropertyHandler("w:insideH"));
27184
- const translator$r = NodeTranslator.from(createBorderPropertyHandler("w:insideV"));
27185
- const translator$q = NodeTranslator.from(createBorderPropertyHandler("w:left"));
27186
- const translator$p = NodeTranslator.from(createMeasurementPropertyHandler("w:left", "marginLeft"));
27187
- const translator$o = NodeTranslator.from(createBorderPropertyHandler("w:right"));
27188
- const translator$n = NodeTranslator.from(createMeasurementPropertyHandler("w:right", "marginRight"));
27189
- const translator$m = NodeTranslator.from(createBorderPropertyHandler("w:start"));
27190
- const translator$l = NodeTranslator.from(createMeasurementPropertyHandler("w:start", "marginStart"));
27191
- const translator$k = NodeTranslator.from(createBorderPropertyHandler("w:top"));
27192
- const translator$j = NodeTranslator.from(createMeasurementPropertyHandler("w:top", "marginTop"));
27193
- const XML_NODE_NAME$i = "w:tblBorders";
27194
- const SD_ATTR_KEY$5 = "borders";
27195
- const encode$o = (params2) => {
27196
- const { nodes } = params2;
27197
- const node = nodes[0];
27198
- const attributes = encodeProperties(node, tblBordersTranslatorsByXmlName);
27199
- return Object.keys(attributes).length > 0 ? attributes : void 0;
27200
- };
27201
- const decode$q = (params2) => {
27202
- const { borders = {} } = params2.node.attrs || {};
27203
- const elements = decodeProperties(tblBordersTranslatorsBySdName, borders);
27204
- const newNode = {
27205
- name: "w:tblBorders",
27206
- type: "element",
27207
- attributes: {},
27208
- elements
27209
- };
27210
- return newNode;
27211
- };
27212
- const propertyTranslators$2 = [
27213
- translator$w,
27214
- translator$u,
27215
- translator$s,
27216
- translator$r,
27217
- translator$q,
27218
- translator$o,
27219
- translator$m,
27220
- translator$k
27221
- ];
27222
- const tblBordersTranslatorsByXmlName = {};
27223
- const tblBordersTranslatorsBySdName = {};
27224
- propertyTranslators$2.forEach((translator2) => {
27225
- tblBordersTranslatorsByXmlName[translator2.xmlName] = translator2;
27226
- tblBordersTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
27227
- });
27228
- const translator$i = NodeTranslator.from({
27229
- xmlName: XML_NODE_NAME$i,
27230
- sdNodeOrKeyName: SD_ATTR_KEY$5,
27231
- type: NodeTranslator.translatorTypes.NODE,
27232
- attributes: [],
27233
- encode: encode$o,
27234
- decode: decode$q
27235
- });
27236
- const XML_NODE_NAME$h = "w:tblCellMar";
27237
- const SD_ATTR_KEY$4 = "cellMargins";
27238
- const encode$n = (params2) => {
27239
- const { nodes } = params2;
27240
- const node = nodes[0];
27241
- const attributes = encodeProperties(node, propertyTranslatorsByXmlName$1);
27242
- return Object.keys(attributes).length > 0 ? attributes : void 0;
27243
- };
27244
- const decode$p = (params2) => {
27245
- const { cellMargins = {} } = params2.node.attrs || {};
27246
- const elements = decodeProperties(propertyTranslatorsBySdName$1, cellMargins);
27247
- const newNode = {
27248
- name: XML_NODE_NAME$h,
27249
- type: "element",
27250
- attributes: {},
27251
- elements
27252
- };
27253
- return newNode;
27254
- };
27255
- const propertyTranslators$1 = [
27256
- translator$v,
27257
- translator$t,
27258
- translator$p,
27259
- translator$n,
27260
- translator$l,
27261
- translator$j
27262
- ];
27263
- const propertyTranslatorsByXmlName$1 = {};
27264
- const propertyTranslatorsBySdName$1 = {};
27265
- propertyTranslators$1.forEach((translator2) => {
27266
- propertyTranslatorsByXmlName$1[translator2.xmlName] = translator2;
27267
- propertyTranslatorsBySdName$1[translator2.sdNodeOrKeyName] = translator2;
27268
- });
27269
- const translator$h = NodeTranslator.from({
27270
- xmlName: XML_NODE_NAME$h,
27271
- sdNodeOrKeyName: SD_ATTR_KEY$4,
27272
- type: NodeTranslator.translatorTypes.NODE,
27273
- attributes: [],
27274
- encode: encode$n,
27275
- decode: decode$p
27276
- });
27277
- const XML_NODE_NAME$g = "w:tblPr";
27278
- const SD_ATTR_KEY$3 = "tableProperties";
27279
- const encode$m = (params2) => {
27280
- const { nodes } = params2;
27281
- const node = nodes[0];
27282
- const attributes = encodeProperties(node, propertyTranslatorsByXmlName);
27283
- return {
27284
- xmlName: XML_NODE_NAME$g,
27285
- sdNodeOrKeyName: SD_ATTR_KEY$3,
27286
- attributes
27287
- };
27288
- };
27289
- const decode$o = (params2) => {
27290
- const { tableProperties = {} } = params2.node.attrs || {};
27291
- const elements = decodeProperties(propertyTranslatorsBySdName, tableProperties);
27292
- const newNode = {
27293
- name: "w:tblPr",
27294
- type: "element",
27295
- attributes: {},
27296
- elements
27297
- };
27298
- return newNode;
27299
- };
27300
- const propertyTranslators = [
27201
+ const translator$L = NodeTranslator.from(createBorderPropertyHandler("w:bottom"));
27202
+ const translator$K = NodeTranslator.from(createMeasurementPropertyHandler("w:bottom", "marginBottom"));
27203
+ const translator$J = NodeTranslator.from(createBorderPropertyHandler("w:end"));
27204
+ const translator$I = NodeTranslator.from(createMeasurementPropertyHandler("w:end", "marginEnd"));
27205
+ const translator$H = NodeTranslator.from(createBorderPropertyHandler("w:insideH"));
27206
+ const translator$G = NodeTranslator.from(createBorderPropertyHandler("w:insideV"));
27207
+ const translator$F = NodeTranslator.from(createBorderPropertyHandler("w:left"));
27208
+ const translator$E = NodeTranslator.from(createMeasurementPropertyHandler("w:left", "marginLeft"));
27209
+ const translator$D = NodeTranslator.from(createBorderPropertyHandler("w:right"));
27210
+ const translator$C = NodeTranslator.from(createMeasurementPropertyHandler("w:right", "marginRight"));
27211
+ const translator$B = NodeTranslator.from(createBorderPropertyHandler("w:start"));
27212
+ const translator$A = NodeTranslator.from(createMeasurementPropertyHandler("w:start", "marginStart"));
27213
+ const translator$z = NodeTranslator.from(createBorderPropertyHandler("w:top"));
27214
+ const translator$y = NodeTranslator.from(createMeasurementPropertyHandler("w:top", "marginTop"));
27215
+ const propertyTranslators$5 = [
27216
+ translator$L,
27301
27217
  translator$J,
27302
- translator$R,
27303
- translator$I,
27304
27218
  translator$H,
27305
- translator$Q,
27306
27219
  translator$G,
27307
27220
  translator$F,
27308
- translator$E,
27309
27221
  translator$D,
27310
- translator$C,
27311
27222
  translator$B,
27223
+ translator$z
27224
+ ];
27225
+ const translator$x = NodeTranslator.from(
27226
+ createNestedPropertiesTranslator("w:tblBorders", "borders", propertyTranslators$5)
27227
+ );
27228
+ const propertyTranslators$4 = [
27229
+ translator$K,
27230
+ translator$I,
27231
+ translator$E,
27232
+ translator$C,
27312
27233
  translator$A,
27313
- translator$z,
27314
- translator$y,
27234
+ translator$y
27235
+ ];
27236
+ const translator$w = NodeTranslator.from(
27237
+ createNestedPropertiesTranslator("w:tblCellMar", "cellMargins", propertyTranslators$4)
27238
+ );
27239
+ const propertyTranslators$3 = [
27240
+ translator$Y,
27241
+ translator$14,
27242
+ translator$X,
27243
+ translator$W,
27244
+ translator$13,
27245
+ translator$V,
27246
+ translator$U,
27247
+ translator$T,
27248
+ translator$S,
27249
+ translator$R,
27250
+ translator$Q,
27251
+ translator$P,
27252
+ translator$O,
27253
+ translator$N,
27254
+ translator$M,
27315
27255
  translator$x,
27316
- translator$i,
27317
- translator$h
27256
+ translator$w
27318
27257
  ];
27319
- const propertyTranslatorsByXmlName = {};
27320
- const propertyTranslatorsBySdName = {};
27321
- propertyTranslators.forEach((translator2) => {
27322
- propertyTranslatorsByXmlName[translator2.xmlName] = translator2;
27323
- propertyTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
27324
- });
27325
- const config$f = {
27326
- xmlName: XML_NODE_NAME$g,
27327
- sdNodeOrKeyName: SD_ATTR_KEY$3,
27328
- encode: encode$m,
27329
- decode: decode$o
27330
- };
27331
- const translator$g = NodeTranslator.from(config$f);
27332
- const translator$f = NodeTranslator.from(
27258
+ const translator$v = NodeTranslator.from(
27259
+ createNestedPropertiesTranslator("w:tblPr", "tableProperties", propertyTranslators$3)
27260
+ );
27261
+ const translator$u = NodeTranslator.from(
27333
27262
  createSingleAttrPropertyHandler("w:gridCol", "col", "w:w", parseInteger, integerToString)
27334
27263
  );
27335
27264
  const DEFAULT_COLUMN_WIDTH_PX = 100;
@@ -27379,20 +27308,20 @@ const resolveFallbackColumnWidthTwips = (params2, totalColumns, cellMinWidthTwip
27379
27308
  }
27380
27309
  return Math.max(fallbackWidthTwips, cellMinWidthTwips);
27381
27310
  };
27382
- const XML_NODE_NAME$f = "w:tblGrid";
27383
- const SD_ATTR_KEY$2 = "grid";
27311
+ const XML_NODE_NAME$g = "w:tblGrid";
27312
+ const SD_ATTR_KEY$3 = "grid";
27384
27313
  const cellMinWidth = pixelsToTwips(10);
27385
- const encode$l = (params2) => {
27314
+ const encode$m = (params2) => {
27386
27315
  const { nodes } = params2;
27387
27316
  const node = nodes[0];
27388
- const attributes = encodeProperties(node, { [translator$f.xmlName]: translator$f }, true);
27317
+ const attributes = encodeProperties(node, { [translator$u.xmlName]: translator$u }, true);
27389
27318
  return {
27390
- xmlName: XML_NODE_NAME$f,
27391
- sdNodeOrKeyName: SD_ATTR_KEY$2,
27319
+ xmlName: XML_NODE_NAME$g,
27320
+ sdNodeOrKeyName: SD_ATTR_KEY$3,
27392
27321
  attributes
27393
27322
  };
27394
27323
  };
27395
- const decode$n = (params2) => {
27324
+ const decode$o = (params2) => {
27396
27325
  const { grid: rawGrid } = params2.node.attrs || {};
27397
27326
  const grid = Array.isArray(rawGrid) ? rawGrid : [];
27398
27327
  const { firstRow = {} } = params2.extraParams || {};
@@ -27411,10 +27340,10 @@ const decode$n = (params2) => {
27411
27340
  numericWidth = fallbackColumnWidthTwips;
27412
27341
  }
27413
27342
  numericWidth = Math.max(numericWidth, cellMinWidth);
27414
- const decoded = translator$f.decode({
27343
+ const decoded = translator$u.decode({
27415
27344
  node: { type: (
27416
27345
  /** @type {string} */
27417
- translator$f.sdNodeOrKeyName
27346
+ translator$u.sdNodeOrKeyName
27418
27347
  ), attrs: { col: numericWidth } }
27419
27348
  });
27420
27349
  if (decoded) elements.push(decoded);
@@ -27449,19 +27378,19 @@ const decode$n = (params2) => {
27449
27378
  columnIndex++;
27450
27379
  }
27451
27380
  const newNode = {
27452
- name: XML_NODE_NAME$f,
27381
+ name: XML_NODE_NAME$g,
27453
27382
  attributes: {},
27454
27383
  elements
27455
27384
  };
27456
27385
  return newNode;
27457
27386
  };
27458
- const config$e = {
27459
- xmlName: XML_NODE_NAME$f,
27460
- sdNodeOrKeyName: SD_ATTR_KEY$2,
27461
- encode: encode$l,
27462
- decode: decode$n
27387
+ const config$f = {
27388
+ xmlName: XML_NODE_NAME$g,
27389
+ sdNodeOrKeyName: SD_ATTR_KEY$3,
27390
+ encode: encode$m,
27391
+ decode: decode$o
27463
27392
  };
27464
- const translator$e = NodeTranslator.from(config$e);
27393
+ const translator$t = NodeTranslator.from(config$f);
27465
27394
  const DEFAULT_PAGE_WIDTH_TWIPS = 12240;
27466
27395
  const DEFAULT_PAGE_MARGIN_TWIPS = 1440;
27467
27396
  const DEFAULT_CONTENT_WIDTH_TWIPS = DEFAULT_PAGE_WIDTH_TWIPS - 2 * DEFAULT_PAGE_MARGIN_TWIPS;
@@ -27524,19 +27453,19 @@ const buildFallbackGridForTable = ({ params: params2, rows, tableWidth, tableWid
27524
27453
  columnWidths: Array(columnCount).fill(fallbackColumnWidthPx)
27525
27454
  };
27526
27455
  };
27527
- const XML_NODE_NAME$e = "w:tbl";
27456
+ const XML_NODE_NAME$f = "w:tbl";
27528
27457
  const SD_NODE_NAME$c = "table";
27529
- const encode$k = (params2, encodedAttrs) => {
27458
+ const encode$l = (params2, encodedAttrs) => {
27530
27459
  const { nodes } = params2;
27531
27460
  const node = nodes[0];
27532
27461
  const tblPr = node.elements.find((el) => el.name === "w:tblPr");
27533
27462
  if (tblPr) {
27534
- const encodedProperties = translator$g.encode({ ...params2, nodes: [tblPr] });
27535
- encodedAttrs["tableProperties"] = encodedProperties?.attributes || {};
27463
+ const encodedProperties = translator$v.encode({ ...params2, nodes: [tblPr] });
27464
+ encodedAttrs["tableProperties"] = encodedProperties || {};
27536
27465
  }
27537
27466
  const tblGrid = node.elements.find((el) => el.name === "w:tblGrid");
27538
27467
  if (tblGrid) {
27539
- encodedAttrs["grid"] = translator$e.encode({ ...params2, nodes: [tblGrid] }).attributes;
27468
+ encodedAttrs["grid"] = translator$t.encode({ ...params2, nodes: [tblGrid] }).attributes;
27540
27469
  }
27541
27470
  [
27542
27471
  "tableStyleId",
@@ -27603,7 +27532,7 @@ const encode$k = (params2, encodedAttrs) => {
27603
27532
  }
27604
27533
  const content = [];
27605
27534
  rows.forEach((row) => {
27606
- const result = translator$K.encode({
27535
+ const result = translator$Z.encode({
27607
27536
  ...params2,
27608
27537
  nodes: [row],
27609
27538
  extraParams: {
@@ -27622,13 +27551,13 @@ const encode$k = (params2, encodedAttrs) => {
27622
27551
  attrs: encodedAttrs
27623
27552
  };
27624
27553
  };
27625
- const decode$m = (params2, decodedAttrs) => {
27554
+ const decode$n = (params2, decodedAttrs) => {
27626
27555
  params2.node = preProcessVerticalMergeCells(params2.node, params2);
27627
27556
  const { node } = params2;
27628
27557
  const elements = translateChildNodes(params2);
27629
27558
  const firstRow = node.content?.find((n) => n.type === "tableRow");
27630
27559
  const properties = node.attrs.grid;
27631
- const element = translator$e.decode({
27560
+ const element = translator$t.decode({
27632
27561
  ...params2,
27633
27562
  node: { ...node, attrs: { ...node.attrs, grid: properties } },
27634
27563
  extraParams: {
@@ -27638,7 +27567,7 @@ const decode$m = (params2, decodedAttrs) => {
27638
27567
  if (element) elements.unshift(element);
27639
27568
  if (node.attrs?.tableProperties) {
27640
27569
  const properties2 = { ...node.attrs.tableProperties };
27641
- const element2 = translator$g.decode({
27570
+ const element2 = translator$v.decode({
27642
27571
  ...params2,
27643
27572
  node: { ...node, attrs: { ...node.attrs, tableProperties: properties2 } }
27644
27573
  });
@@ -27658,7 +27587,7 @@ function _processTableBorders(rawBorders) {
27658
27587
  const color = attributes.color;
27659
27588
  const size2 = attributes.size;
27660
27589
  if (color && color !== "auto") attrs["color"] = color.startsWith("#") ? color : `#${color}`;
27661
- if (size2 && size2 !== "auto") attrs["size"] = eigthPointsToPixels(size2);
27590
+ if (size2 && size2 !== "auto") attrs["size"] = eighthPointsToPixels(size2);
27662
27591
  const rowBorderNames = ["insideH", "insideV"];
27663
27592
  if (rowBorderNames.includes(name)) rowBorders[name] = attrs;
27664
27593
  borders[name] = attrs;
@@ -27704,7 +27633,7 @@ function _getReferencedTableStyles(tableStyleReference, params2) {
27704
27633
  if (baseTblPr && baseTblPr.elements) {
27705
27634
  tblPr.elements.push(...baseTblPr.elements);
27706
27635
  }
27707
- const tableProperties = translator$g.encode({ ...params2, nodes: [tblPr] }).attributes;
27636
+ const tableProperties = translator$v.encode({ ...params2, nodes: [tblPr] });
27708
27637
  const { borders, rowBorders } = _processTableBorders(tableProperties.borders || {});
27709
27638
  if (borders) stylesToReturn.borders = borders;
27710
27639
  if (rowBorders) stylesToReturn.rowBorders = rowBorders;
@@ -27721,16 +27650,16 @@ function _getReferencedTableStyles(tableStyleReference, params2) {
27721
27650
  }
27722
27651
  return stylesToReturn;
27723
27652
  }
27724
- const config$d = {
27725
- xmlName: XML_NODE_NAME$e,
27653
+ const config$e = {
27654
+ xmlName: XML_NODE_NAME$f,
27726
27655
  sdNodeOrKeyName: SD_NODE_NAME$c,
27727
27656
  type: NodeTranslator.translatorTypes.NODE,
27728
- encode: encode$k,
27729
- decode: decode$m,
27657
+ encode: encode$l,
27658
+ decode: decode$n,
27730
27659
  attributes: []
27731
27660
  };
27732
- const translator$d = NodeTranslator.from(config$d);
27733
- const tableNodeHandlerEntity = generateV2HandlerEntity("tableNodeHandler", translator$d);
27661
+ const translator$s = NodeTranslator.from(config$e);
27662
+ const tableNodeHandlerEntity = generateV2HandlerEntity("tableNodeHandler", translator$s);
27734
27663
  function getReferencedTableStyles(tblStyleTag, docx) {
27735
27664
  if (!tblStyleTag) return null;
27736
27665
  const stylesToReturn = {};
@@ -27801,7 +27730,7 @@ function processTableBorders(borderElements) {
27801
27730
  const color = attributes["w:color"];
27802
27731
  const size2 = attributes["w:sz"];
27803
27732
  if (color && color !== "auto") attrs["color"] = color.startsWith("#") ? color : `#${color}`;
27804
- if (size2 && size2 !== "auto") attrs["size"] = eigthPointsToPixels(size2);
27733
+ if (size2 && size2 !== "auto") attrs["size"] = eighthPointsToPixels(size2);
27805
27734
  const rowBorderNames = ["insideH", "insideV"];
27806
27735
  if (rowBorderNames.includes(borderName)) rowBorders[borderName] = attrs;
27807
27736
  borders[borderName] = attrs;
@@ -27811,6 +27740,125 @@ function processTableBorders(borderElements) {
27811
27740
  rowBorders
27812
27741
  };
27813
27742
  }
27743
+ const translator$r = NodeTranslator.from(createMeasurementPropertyHandler("w:tcW", "cellWidth"));
27744
+ const translator$q = NodeTranslator.from(
27745
+ createSingleAttrPropertyHandler(
27746
+ "w:gridSpan",
27747
+ null,
27748
+ "w:val",
27749
+ (v2) => parseInteger(v2) ?? void 0,
27750
+ (v2) => integerToString(v2)
27751
+ )
27752
+ );
27753
+ const translator$p = NodeTranslator.from(createSingleAttrPropertyHandler("w:vMerge"));
27754
+ const translator$o = NodeTranslator.from(createBorderPropertyHandler("w:tl2br"));
27755
+ const translator$n = NodeTranslator.from(createBorderPropertyHandler("w:tr2bl"));
27756
+ const propertyTranslators$2 = [
27757
+ translator$z,
27758
+ translator$B,
27759
+ translator$F,
27760
+ translator$L,
27761
+ translator$J,
27762
+ translator$D,
27763
+ translator$H,
27764
+ translator$G,
27765
+ translator$o,
27766
+ translator$n
27767
+ ];
27768
+ const translator$m = NodeTranslator.from(
27769
+ createNestedPropertiesTranslator("w:tcBorders", "borders", propertyTranslators$2)
27770
+ );
27771
+ const translator$l = NodeTranslator.from(
27772
+ createSingleAttrPropertyHandler(
27773
+ "w:noWrap",
27774
+ null,
27775
+ "w:val",
27776
+ (v2) => parseBoolean(v2 ?? "true"),
27777
+ (v2) => booleanToString(v2)
27778
+ )
27779
+ );
27780
+ const propertyTranslators$1 = [
27781
+ translator$K,
27782
+ translator$I,
27783
+ translator$E,
27784
+ translator$C,
27785
+ translator$A,
27786
+ translator$y
27787
+ ];
27788
+ const translator$k = NodeTranslator.from(
27789
+ createNestedPropertiesTranslator("w:tcMar", "cellMargins", propertyTranslators$1)
27790
+ );
27791
+ const translator$j = NodeTranslator.from(createSingleAttrPropertyHandler("w:textDirection"));
27792
+ const translator$i = NodeTranslator.from(
27793
+ createSingleAttrPropertyHandler(
27794
+ "w:tcFitText",
27795
+ null,
27796
+ "w:val",
27797
+ (v2) => parseBoolean(v2 ?? "true"),
27798
+ (v2) => booleanToString(v2)
27799
+ )
27800
+ );
27801
+ const translator$h = NodeTranslator.from(createSingleAttrPropertyHandler("w:vAlign"));
27802
+ const translator$g = NodeTranslator.from(
27803
+ createSingleAttrPropertyHandler(
27804
+ "w:hideMark",
27805
+ null,
27806
+ "w:val",
27807
+ (v2) => parseBoolean(v2 ?? "true"),
27808
+ (v2) => booleanToString(v2)
27809
+ )
27810
+ );
27811
+ const translator$f = NodeTranslator.from(createSingleAttrPropertyHandler("w:header"));
27812
+ const XML_NODE_NAME$e = "w:headers";
27813
+ const SD_ATTR_KEY$2 = "headers";
27814
+ const encode$k = (params2) => {
27815
+ const { nodes } = params2;
27816
+ const node = nodes[0];
27817
+ const attributes = encodeProperties(node, { [translator$f.xmlName]: translator$f }, true);
27818
+ return {
27819
+ xmlName: XML_NODE_NAME$e,
27820
+ sdNodeOrKeyName: SD_ATTR_KEY$2,
27821
+ attributes
27822
+ };
27823
+ };
27824
+ const decode$m = (params2) => {
27825
+ const { headers = [] } = params2.node.attrs || {};
27826
+ const newNode = {
27827
+ name: XML_NODE_NAME$e,
27828
+ attributes: {},
27829
+ elements: headers.map(
27830
+ (header) => translator$f.decode({
27831
+ node: { type: "header", attrs: header }
27832
+ })
27833
+ )
27834
+ };
27835
+ return newNode;
27836
+ };
27837
+ const config$d = {
27838
+ xmlName: XML_NODE_NAME$e,
27839
+ sdNodeOrKeyName: SD_ATTR_KEY$2,
27840
+ encode: encode$k,
27841
+ decode: decode$m
27842
+ };
27843
+ const translator$e = NodeTranslator.from(config$d);
27844
+ const propertyTranslators = [
27845
+ translator$19,
27846
+ translator$r,
27847
+ translator$q,
27848
+ translator$p,
27849
+ translator$m,
27850
+ translator$X,
27851
+ translator$l,
27852
+ translator$k,
27853
+ translator$j,
27854
+ translator$i,
27855
+ translator$h,
27856
+ translator$g,
27857
+ translator$e
27858
+ ];
27859
+ const translator$d = NodeTranslator.from(
27860
+ createNestedPropertiesTranslator("w:tcPr", "tableCellProperties", propertyTranslators)
27861
+ );
27814
27862
  function handleTableCellNode({
27815
27863
  params: params2,
27816
27864
  node,
@@ -27823,8 +27871,10 @@ function handleTableCellNode({
27823
27871
  allColumnWidths = []
27824
27872
  }) {
27825
27873
  const { docx, nodeListHandler } = params2;
27874
+ const attributes = {};
27826
27875
  const tcPr = node.elements.find((el) => el.name === "w:tcPr");
27827
- const borders = tcPr?.elements?.find((el) => el.name === "w:tcBorders");
27876
+ const tableCellProperties = tcPr ? translator$d.encode({ ...params2, nodes: [tcPr] }) ?? {} : {};
27877
+ attributes["tableCellProperties"] = tableCellProperties;
27828
27878
  if (rowBorders?.insideH) {
27829
27879
  rowBorders["bottom"] = rowBorders.insideH;
27830
27880
  delete rowBorders.insideH;
@@ -27833,33 +27883,20 @@ function handleTableCellNode({
27833
27883
  rowBorders["right"] = rowBorders.insideV;
27834
27884
  delete rowBorders?.insideV;
27835
27885
  }
27836
- const inlineBorders = processInlineCellBorders(borders, rowBorders);
27837
- const gridColumnWidths = allColumnWidths;
27838
- const tcWidth = tcPr?.elements?.find((el) => el.name === "w:tcW");
27839
- let width = tcWidth ? twipsToPixels(tcWidth.attributes["w:w"]) : null;
27840
- const widthType = tcWidth?.attributes["w:type"];
27886
+ if (rowBorders) attributes["borders"] = { ...rowBorders };
27887
+ const inlineBorders = processInlineCellBorders(tableCellProperties.borders, rowBorders);
27888
+ if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
27889
+ const colspan = tableCellProperties.gridSpan;
27890
+ if (colspan && !isNaN(parseInt(colspan, 10))) attributes["colspan"] = parseInt(colspan, 10);
27891
+ let width = tableCellProperties.cellWidth?.value ? twipsToPixels(tableCellProperties.cellWidth?.value) : null;
27892
+ const widthType = tableCellProperties.cellWidth?.type;
27893
+ if (widthType) attributes["widthType"] = widthType;
27841
27894
  if (!width && columnWidth) width = columnWidth;
27842
- const vMerge = getTableCellMergeTag(node);
27843
- const { attributes: vMergeAttrs } = vMerge || {};
27844
- const backgroundColor = tcPr?.elements?.find((el) => el.name === "w:shd");
27845
- const background = {
27846
- color: backgroundColor?.attributes["w:fill"]
27847
- };
27848
- const colspanTag = tcPr?.elements?.find((el) => el.name === "w:gridSpan");
27849
- const colspan = colspanTag?.attributes["w:val"];
27850
- const marginTag = tcPr?.elements?.find((el) => el.name === "w:tcMar");
27851
- const verticalAlignTag = tcPr?.elements?.find((el) => el.name === "w:vAlign");
27852
- const verticalAlign = verticalAlignTag?.attributes["w:val"] || "top";
27853
- const attributes = {};
27854
- const referencedStyles = getReferencedTableStyles(styleTag, docx) || {};
27855
- attributes.cellMargins = getTableCellMargins(marginTag, referencedStyles);
27856
- const { fontSize: fontSize2, fonts = {} } = referencedStyles;
27857
- const fontFamily2 = fonts["ascii"];
27858
27895
  if (width) {
27859
27896
  attributes["colwidth"] = [width];
27860
27897
  attributes["widthUnit"] = "px";
27861
- const defaultColWidths = gridColumnWidths;
27862
- const hasDefaultColWidths = gridColumnWidths && gridColumnWidths.length > 0;
27898
+ const defaultColWidths = allColumnWidths;
27899
+ const hasDefaultColWidths = allColumnWidths && allColumnWidths.length > 0;
27863
27900
  const colspanNum = parseInt(colspan || 1, 10);
27864
27901
  if (colspanNum && colspanNum > 1 && hasDefaultColWidths) {
27865
27902
  let colwidth = [];
@@ -27877,15 +27914,19 @@ function handleTableCellNode({
27877
27914
  }
27878
27915
  }
27879
27916
  }
27880
- if (widthType) attributes["widthType"] = widthType;
27881
- if (colspan) attributes["colspan"] = parseInt(colspan, 10);
27882
- if (background) attributes["background"] = background;
27883
- attributes["verticalAlign"] = verticalAlign;
27917
+ const background = {
27918
+ color: tableCellProperties.shading?.fill
27919
+ };
27920
+ if (background.color) attributes["background"] = background;
27921
+ const verticalAlign = tableCellProperties.vAlign;
27922
+ if (verticalAlign) attributes["verticalAlign"] = verticalAlign;
27923
+ const referencedStyles = getReferencedTableStyles(styleTag, docx) || { fontSize: null, fonts: {}, cellMargins: {} };
27924
+ attributes.cellMargins = getTableCellMargins(tableCellProperties.cellMargins, referencedStyles);
27925
+ const { fontSize: fontSize2, fonts = {} } = referencedStyles;
27926
+ const fontFamily2 = fonts["ascii"];
27884
27927
  if (fontSize2) attributes["fontSize"] = fontSize2;
27885
- if (fontFamily2) attributes["fontFamily"] = fontFamily2["ascii"];
27886
- if (rowBorders) attributes["borders"] = { ...rowBorders };
27887
- if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
27888
- if (vMergeAttrs && vMergeAttrs["w:val"] === "restart") {
27928
+ if (fontFamily2) attributes["fontFamily"] = fontFamily2;
27929
+ if (tableCellProperties.vMerge === "restart") {
27889
27930
  const rows = table.elements.filter((el) => el.name === "w:tr");
27890
27931
  const currentRowIndex = rows.findIndex((r2) => r2 === row);
27891
27932
  const remainingRows = rows.slice(currentRowIndex + 1);
@@ -27896,9 +27937,8 @@ function handleTableCellNode({
27896
27937
  const firstCell = remainingRow.elements.findIndex((el) => el.name === "w:tc");
27897
27938
  const cellAtIndex = remainingRow.elements[firstCell + cellIndex];
27898
27939
  if (!cellAtIndex) break;
27899
- const vMerge2 = getTableCellMergeTag(cellAtIndex);
27900
- const { attributes: currentCellMergeAttrs } = vMerge2 || {};
27901
- if (!vMerge2 && !currentCellMergeAttrs || currentCellMergeAttrs && currentCellMergeAttrs["w:val"] === "restart") {
27940
+ const vMerge = getTableCellVMerge(cellAtIndex);
27941
+ if (!vMerge || vMerge === "restart") {
27902
27942
  break;
27903
27943
  }
27904
27944
  rowspan++;
@@ -27918,69 +27958,52 @@ function handleTableCellNode({
27918
27958
  }
27919
27959
  const processInlineCellBorders = (borders, rowBorders) => {
27920
27960
  if (!borders) return null;
27921
- const processedBorders = {};
27922
- const inlineBorderBottom = processBorder(borders, "bottom", rowBorders);
27923
- if (inlineBorderBottom) processedBorders["bottom"] = inlineBorderBottom;
27924
- const inlineBorderTop = processBorder(borders, "top", rowBorders);
27925
- if (inlineBorderTop) processedBorders["top"] = inlineBorderTop;
27926
- const inlineBorderLeft = processBorder(borders, "left", rowBorders);
27927
- if (inlineBorderLeft) processedBorders["left"] = inlineBorderLeft;
27928
- const inlineBorderRight = processBorder(borders, "right", rowBorders);
27929
- if (inlineBorderRight) processedBorders["right"] = inlineBorderRight;
27930
- return processedBorders;
27931
- };
27932
- const processBorder = (borders, direction, rowBorders = {}) => {
27933
- const borderAttrs = borders?.elements?.find((el) => el.name === `w:${direction}`)?.attributes;
27934
- if (borderAttrs && borderAttrs["w:val"] !== "nil") {
27935
- const border = {};
27936
- const color = borderAttrs["w:color"];
27937
- if (color) border["color"] = color === "auto" ? "#000000" : `#${color}`;
27938
- const size2 = borderAttrs["w:sz"];
27939
- if (size2) border["size"] = eigthPointsToPixels(size2);
27940
- return border;
27941
- }
27942
- if (borderAttrs && borderAttrs["w:val"] === "nil") {
27943
- const border = Object.assign({}, rowBorders[direction] || {});
27944
- if (!Object.keys(border)) return null;
27945
- border["val"] = "none";
27946
- return border;
27947
- }
27948
- return null;
27961
+ return ["bottom", "top", "left", "right"].reduce((acc, direction) => {
27962
+ const borderAttrs = borders[direction];
27963
+ const rowBorderAttrs = rowBorders[direction];
27964
+ if (borderAttrs && borderAttrs["val"] !== "nil") {
27965
+ const color = borderAttrs["color"];
27966
+ let size2 = borderAttrs["size"];
27967
+ if (size2) size2 = eighthPointsToPixels(size2);
27968
+ acc[direction] = { color, size: size2, val: borderAttrs["val"] };
27969
+ return acc;
27970
+ }
27971
+ if (borderAttrs && borderAttrs["val"] === "nil") {
27972
+ const border = Object.assign({}, rowBorderAttrs || {});
27973
+ if (!Object.keys(border).length) {
27974
+ return acc;
27975
+ } else {
27976
+ border["val"] = "none";
27977
+ acc[direction] = border;
27978
+ return acc;
27979
+ }
27980
+ }
27981
+ return acc;
27982
+ }, {});
27949
27983
  };
27950
- const getTableCellMergeTag = (node) => {
27984
+ const getTableCellVMerge = (node) => {
27951
27985
  const tcPr = node.elements.find((el) => el.name === "w:tcPr");
27952
27986
  const vMerge = tcPr?.elements?.find((el) => el.name === "w:vMerge");
27953
- return vMerge;
27954
- };
27955
- const getTableCellMargins = (marginTag, referencedStyles) => {
27956
- const inlineMarginLeftTag = marginTag?.elements?.find((el) => el.name === "w:left");
27957
- const inlineMarginRightTag = marginTag?.elements?.find((el) => el.name === "w:right");
27958
- const inlineMarginTopTag = marginTag?.elements?.find((el) => el.name === "w:top");
27959
- const inlineMarginBottomTag = marginTag?.elements?.find((el) => el.name === "w:bottom");
27960
- const inlineMarginLeftValue = inlineMarginLeftTag?.attributes["w:w"];
27961
- const inlineMarginRightValue = inlineMarginRightTag?.attributes["w:w"];
27962
- const inlineMarginTopValue = inlineMarginTopTag?.attributes["w:w"];
27963
- const inlineMarginBottomValue = inlineMarginBottomTag?.attributes["w:w"];
27987
+ if (!vMerge) return null;
27988
+ return vMerge.attributes?.["w:val"] || "continue";
27989
+ };
27990
+ const getTableCellMargins = (inlineMargins, referencedStyles) => {
27964
27991
  const { cellMargins = {} } = referencedStyles;
27965
- const {
27966
- marginLeft: marginLeftStyle,
27967
- marginRight: marginRightStyle,
27968
- marginTop: marginTopStyle,
27969
- marginBottom: marginBottomStyle
27970
- } = cellMargins;
27971
- const resolveMargin = (inlineValue, styleValue) => {
27972
- if (inlineValue != null) return inlineValue;
27973
- if (styleValue == null) return void 0;
27974
- if (typeof styleValue === "object") return styleValue.value;
27975
- return styleValue;
27976
- };
27977
- const margins = {
27978
- left: twipsToPixels(resolveMargin(inlineMarginLeftValue, marginLeftStyle)),
27979
- right: twipsToPixels(resolveMargin(inlineMarginRightValue, marginRightStyle)),
27980
- top: twipsToPixels(resolveMargin(inlineMarginTopValue, marginTopStyle)),
27981
- bottom: twipsToPixels(resolveMargin(inlineMarginBottomValue, marginBottomStyle))
27982
- };
27983
- return margins;
27992
+ return ["left", "right", "top", "bottom"].reduce((acc, direction) => {
27993
+ const key2 = `margin${direction.charAt(0).toUpperCase() + direction.slice(1)}`;
27994
+ const inlineValue = inlineMargins ? inlineMargins?.[key2]?.value : null;
27995
+ const styleValue = cellMargins ? cellMargins[key2] : null;
27996
+ if (inlineValue != null) {
27997
+ acc[direction] = twipsToPixels(inlineValue);
27998
+ } else if (styleValue == null) {
27999
+ acc[direction] = void 0;
28000
+ } else if (typeof styleValue === "object") {
28001
+ acc[direction] = twipsToPixels(styleValue.value);
28002
+ } else {
28003
+ acc[direction] = twipsToPixels(styleValue);
28004
+ }
28005
+ return acc;
28006
+ }, {});
27984
28007
  };
27985
28008
  function translateTableCell(params2) {
27986
28009
  const elements = translateChildNodes({
@@ -27995,102 +28018,86 @@ function translateTableCell(params2) {
27995
28018
  };
27996
28019
  }
27997
28020
  function generateTableCellProperties(node) {
27998
- const elements = [];
28021
+ const tableCellProperties = { ...node.attrs?.tableCellProperties || {} };
27999
28022
  const { attrs } = node;
28000
- const { colwidth = [], cellWidthType = "dxa", background = {}, colspan, rowspan, widthUnit } = attrs;
28023
+ const { colwidth = [], cellWidthType = "dxa", widthUnit } = attrs;
28001
28024
  const colwidthSum = colwidth.reduce((acc, curr) => acc + curr, 0);
28002
- const cellWidthElement = {
28003
- name: "w:tcW",
28004
- attributes: {
28005
- "w:w": widthUnit === "px" ? pixelsToTwips(colwidthSum) : inchesToTwips(colwidthSum),
28006
- "w:type": cellWidthType
28007
- }
28008
- };
28009
- elements.push(cellWidthElement);
28010
- if (colspan) {
28011
- const gridSpanElement = {
28012
- name: "w:gridSpan",
28013
- attributes: { "w:val": `${colspan}` }
28025
+ const propertiesWidthPixels = twipsToPixels(tableCellProperties.cellWidth?.value);
28026
+ if (propertiesWidthPixels !== colwidthSum) {
28027
+ tableCellProperties["cellWidth"] = {
28028
+ value: widthUnit === "px" ? pixelsToTwips(colwidthSum) : inchesToTwips(colwidthSum),
28029
+ type: cellWidthType
28014
28030
  };
28015
- elements.push(gridSpanElement);
28016
28031
  }
28017
- const { color } = background || {};
28018
- if (color) {
28019
- const cellBgElement = {
28020
- name: "w:shd",
28021
- attributes: { "w:fill": color }
28022
- };
28023
- elements.push(cellBgElement);
28032
+ const { colspan } = attrs;
28033
+ if (colspan > 1 && tableCellProperties.gridSpan !== colspan) {
28034
+ tableCellProperties["gridSpan"] = colspan;
28035
+ } else if (!colspan || tableCellProperties?.gridSpan === 1) {
28036
+ delete tableCellProperties.gridSpan;
28037
+ }
28038
+ const { background = {} } = attrs;
28039
+ if (background?.color && tableCellProperties.shading?.fill !== background?.color) {
28040
+ tableCellProperties["shading"] = { fill: background.color };
28041
+ } else if (!background?.color && tableCellProperties?.shading?.fill) {
28042
+ delete tableCellProperties.shading;
28024
28043
  }
28025
28044
  const { cellMargins } = attrs;
28026
28045
  if (cellMargins) {
28027
- const cellMarginsElement = {
28028
- name: "w:tcMar",
28029
- elements: generateCellMargins(cellMargins)
28030
- };
28031
- elements.push(cellMarginsElement);
28046
+ ["left", "right", "top", "bottom"].forEach((side) => {
28047
+ const key2 = `margin${side.charAt(0).toUpperCase() + side.slice(1)}`;
28048
+ if (cellMargins[side] != null) {
28049
+ if (!tableCellProperties.cellMargins) tableCellProperties["cellMargins"] = {};
28050
+ let currentPropertyValuePixels = twipsToPixels(tableCellProperties.cellMargins?.[key2]?.value);
28051
+ if (currentPropertyValuePixels !== cellMargins[side]) {
28052
+ tableCellProperties.cellMargins[key2] = { value: pixelsToTwips(cellMargins[side]), type: "dxa" };
28053
+ }
28054
+ } else if (tableCellProperties?.cellMargins?.[key2]) {
28055
+ delete tableCellProperties.cellMargins[key2];
28056
+ }
28057
+ });
28032
28058
  }
28033
28059
  const { verticalAlign } = attrs;
28034
- if (verticalAlign) {
28035
- const vertAlignElement = {
28036
- name: "w:vAlign",
28037
- attributes: { "w:val": verticalAlign }
28038
- };
28039
- elements.push(vertAlignElement);
28040
- }
28041
- if (rowspan && rowspan > 1) {
28042
- const vMergeElement = {
28043
- name: "w:vMerge",
28044
- type: "element",
28045
- attributes: { "w:val": "restart" }
28046
- };
28047
- elements.push(vMergeElement);
28060
+ if (verticalAlign && verticalAlign !== tableCellProperties.vAlign) {
28061
+ tableCellProperties["vAlign"] = verticalAlign;
28062
+ } else if (!verticalAlign && tableCellProperties?.vAlign) {
28063
+ delete tableCellProperties.vAlign;
28064
+ }
28065
+ const { rowspan } = attrs;
28066
+ if (rowspan && rowspan > 1 && tableCellProperties.vMerge !== "restart") {
28067
+ tableCellProperties["vMerge"] = "restart";
28048
28068
  } else if (attrs.continueMerge) {
28049
- const vMergeElement = {
28050
- name: "w:vMerge",
28051
- type: "element"
28052
- };
28053
- elements.push(vMergeElement);
28069
+ tableCellProperties["vMerge"] = "continue";
28070
+ } else if (tableCellProperties?.vMerge) {
28071
+ delete tableCellProperties.vMerge;
28054
28072
  }
28055
28073
  const { borders = {} } = attrs;
28056
28074
  if (!!borders && Object.keys(borders).length) {
28057
- const cellBordersElement = {
28058
- name: "w:tcBorders",
28059
- elements: Object.entries(borders).map(([key2, value]) => {
28060
- if (!value.size || value.val === "none") {
28061
- return {
28062
- name: `w:${key2}`,
28063
- attributes: {
28064
- "w:val": "nil"
28065
- }
28075
+ ["top", "bottom", "left", "right"].forEach((side) => {
28076
+ if (borders[side]) {
28077
+ let currentPropertyValue = tableCellProperties.borders?.[side];
28078
+ let currentPropertySizePixels = eighthPointsToPixels(currentPropertyValue?.size);
28079
+ let color = borders[side].color;
28080
+ if (borders[side].color && color === "#000000") {
28081
+ color = "auto";
28082
+ }
28083
+ if (currentPropertySizePixels !== borders[side].size || currentPropertyValue?.color !== color || borders[side].val !== currentPropertyValue?.val) {
28084
+ if (!tableCellProperties.borders) tableCellProperties["borders"] = {};
28085
+ tableCellProperties.borders[side] = {
28086
+ size: pixelsToEightPoints(borders[side].size || 0),
28087
+ color,
28088
+ space: borders[side].space || 0,
28089
+ val: borders[side].val || "single"
28066
28090
  };
28067
28091
  }
28068
- return {
28069
- name: `w:${key2}`,
28070
- attributes: {
28071
- "w:val": "single",
28072
- "w:color": value.color ? value.color.substring(1) : "auto",
28073
- "w:sz": pixelsToEightPoints(value.size),
28074
- "w:space": value.space || 0
28075
- }
28076
- };
28077
- })
28078
- };
28079
- elements.push(cellBordersElement);
28092
+ } else if (tableCellProperties.borders?.[side]) {
28093
+ delete tableCellProperties.borders[side];
28094
+ }
28095
+ });
28096
+ } else if (tableCellProperties?.borders) {
28097
+ delete tableCellProperties.borders;
28080
28098
  }
28081
- return {
28082
- name: "w:tcPr",
28083
- elements
28084
- };
28085
- }
28086
- function generateCellMargins(cellMargins) {
28087
- const elements = [];
28088
- const { top: top2, right: right2, bottom: bottom2, left: left2 } = cellMargins;
28089
- if (top2 != null) elements.push({ name: "w:top", attributes: { "w:w": pixelsToTwips(top2) } });
28090
- if (right2 != null) elements.push({ name: "w:right", attributes: { "w:w": pixelsToTwips(right2) } });
28091
- if (bottom2 != null) elements.push({ name: "w:bottom", attributes: { "w:w": pixelsToTwips(bottom2) } });
28092
- if (left2 != null) elements.push({ name: "w:left", attributes: { "w:w": pixelsToTwips(left2) } });
28093
- return elements;
28099
+ const result = translator$d.decode({ node: { ...node, attrs: { ...node.attrs, tableCellProperties } } });
28100
+ return result;
28094
28101
  }
28095
28102
  const XML_NODE_NAME$d = "w:tc";
28096
28103
  const SD_NODE_NAME$b = "tableCell";
@@ -31702,8 +31709,8 @@ const trackChangeNodeHandlerEntity = {
31702
31709
  handlerName: "trackChangeNodeHandler",
31703
31710
  handler: handleTrackChangeNode
31704
31711
  };
31705
- const hyperlinkNodeHandlerEntity = generateV2HandlerEntity("hyperlinkNodeHandler", translator$Z);
31706
- const runNodeHandlerEntity = generateV2HandlerEntity("runNodeHandler", translator$Y);
31712
+ const hyperlinkNodeHandlerEntity = generateV2HandlerEntity("hyperlinkNodeHandler", translator$1c);
31713
+ const runNodeHandlerEntity = generateV2HandlerEntity("runNodeHandler", translator$1b);
31707
31714
  function parseProperties(node) {
31708
31715
  const marks = [];
31709
31716
  const unknownMarks = [];
@@ -31795,7 +31802,7 @@ const handleParagraphNode = (params2) => {
31795
31802
  if (nodes.length === 0 || nodes[0].name !== "w:p") {
31796
31803
  return { nodes: [], consumed: 0 };
31797
31804
  }
31798
- const schemaNode = translator$19.encode(params2);
31805
+ const schemaNode = translator$1o.encode(params2);
31799
31806
  const newNodes = schemaNode ? [schemaNode] : [];
31800
31807
  return { nodes: newNodes, consumed: 1 };
31801
31808
  };
@@ -31898,7 +31905,7 @@ const handler = (params2) => {
31898
31905
  if (nodes.length === 0 || nodes[0].name !== "w:br") {
31899
31906
  return { nodes: [], consumed: 0 };
31900
31907
  }
31901
- const result = translator$1c.encode(params2);
31908
+ const result = translator$1r.encode(params2);
31902
31909
  if (!result) return { nodes: [], consumed: 0 };
31903
31910
  return {
31904
31911
  nodes: [result],
@@ -32524,7 +32531,7 @@ const handleTabNode = (params2) => {
32524
32531
  if (!nodes.length || nodes[0].name !== "w:tab") {
32525
32532
  return { nodes: [], consumed: 0 };
32526
32533
  }
32527
- const node = translator$1a.encode(params2);
32534
+ const node = translator$1p.encode(params2);
32528
32535
  return { nodes: [node], consumed: 1 };
32529
32536
  };
32530
32537
  const tabNodeEntityHandler = {
@@ -32776,12 +32783,14 @@ const createDocumentJson = (docx, converter, editor) => {
32776
32783
  const content = pruneIgnoredNodes(contentElements);
32777
32784
  const comments = importCommentData({ docx, converter, editor });
32778
32785
  const lists = {};
32786
+ const inlineDocumentFonts = [];
32779
32787
  let parsedContent = nodeListHandler.handler({
32780
32788
  nodes: content,
32781
32789
  nodeListHandler,
32782
32790
  docx,
32783
32791
  converter,
32784
32792
  editor,
32793
+ inlineDocumentFonts,
32785
32794
  lists,
32786
32795
  path: []
32787
32796
  });
@@ -32804,6 +32813,7 @@ const createDocumentJson = (docx, converter, editor) => {
32804
32813
  savedTagsToRestore: node,
32805
32814
  pageStyles: getDocumentStyles(node, docx, converter, editor),
32806
32815
  comments,
32816
+ inlineDocumentFonts,
32807
32817
  linkedStyles: getStyleDefinitions(docx),
32808
32818
  numbering: getNumberingDefinitions(docx)
32809
32819
  };
@@ -32867,6 +32877,7 @@ const createNodeListHandler = (nodeHandlers) => {
32867
32877
  filename,
32868
32878
  parentStyleId,
32869
32879
  lists,
32880
+ inlineDocumentFonts,
32870
32881
  path = []
32871
32882
  }) => {
32872
32883
  if (!elements || !elements.length) return [];
@@ -32893,6 +32904,7 @@ const createNodeListHandler = (nodeHandlers) => {
32893
32904
  filename,
32894
32905
  parentStyleId,
32895
32906
  lists,
32907
+ inlineDocumentFonts,
32896
32908
  path
32897
32909
  });
32898
32910
  },
@@ -33472,7 +33484,7 @@ function translateVRectContentBlock(params2) {
33472
33484
  const XML_NODE_NAME = "w:pict";
33473
33485
  const SD_NODE_NAME = ["shapeContainer", "contentBlock"];
33474
33486
  const validXmlAttributes = [];
33475
- function encode$1f(params2) {
33487
+ function encode$1c(params2) {
33476
33488
  const { node, pNode } = params2.extraParams;
33477
33489
  const { type: pictType, handler: handler2 } = pictNodeTypeStrategy(node);
33478
33490
  if (!handler2 || pictType === "unknown") {
@@ -33504,7 +33516,7 @@ const config = {
33504
33516
  xmlName: XML_NODE_NAME,
33505
33517
  sdNodeOrKeyName: SD_NODE_NAME,
33506
33518
  type: NodeTranslator.translatorTypes.NODE,
33507
- encode: encode$1f,
33519
+ encode: encode$1c,
33508
33520
  decode,
33509
33521
  attributes: validXmlAttributes
33510
33522
  };
@@ -33580,21 +33592,21 @@ function exportSchemaToJson(params2) {
33580
33592
  doc: translateDocumentNode,
33581
33593
  body: translateBodyNode,
33582
33594
  heading: translateHeadingNode,
33583
- paragraph: translator$19,
33584
- run: translator$Y,
33595
+ paragraph: translator$1o,
33596
+ run: translator$1b,
33585
33597
  text: translateTextNode,
33586
33598
  bulletList: translateList,
33587
33599
  orderedList: translateList,
33588
- lineBreak: translator$1c,
33589
- table: translator$d,
33590
- tableRow: translator$K,
33600
+ lineBreak: translator$1r,
33601
+ table: translator$s,
33602
+ tableRow: translator$Z,
33591
33603
  tableCell: translator$c,
33592
33604
  bookmarkStart: translator$7,
33593
33605
  bookmarkEnd: translator$6,
33594
33606
  fieldAnnotation: translator$8,
33595
- tab: translator$1a,
33607
+ tab: translator$1p,
33596
33608
  image: translator$9,
33597
- hardBreak: translator$1c,
33609
+ hardBreak: translator$1r,
33598
33610
  commentRangeStart: commentRangeStartTranslator,
33599
33611
  commentRangeEnd: commentRangeEndTranslator,
33600
33612
  commentReference: () => null,
@@ -33955,7 +33967,7 @@ function translateTextNode(params2) {
33955
33967
  }
33956
33968
  const isLinkNode = node.marks?.some((m2) => m2.type === "link");
33957
33969
  if (isLinkNode && !extraParams?.linkProcessed) {
33958
- return translator$Z.decode(params2);
33970
+ return translator$1c.decode(params2);
33959
33971
  }
33960
33972
  const { text, marks = [] } = node;
33961
33973
  return getTextNodeForExport(text, marks, params2);
@@ -34215,7 +34227,7 @@ function translateMark(mark) {
34215
34227
  markElement.type = "element";
34216
34228
  break;
34217
34229
  case "underline": {
34218
- const translated = translator$16.decode({
34230
+ const translated = translator$1l.decode({
34219
34231
  node: {
34220
34232
  attrs: {
34221
34233
  underlineType: attrs.underlineType ?? attrs.underline ?? null,
@@ -34279,7 +34291,7 @@ function translateMark(mark) {
34279
34291
  break;
34280
34292
  case "highlight": {
34281
34293
  const highlightValue = attrs.color ?? attrs.highlight ?? null;
34282
- const translated = translator$1b.decode({ node: { attrs: { highlight: highlightValue } } });
34294
+ const translated = translator$1q.decode({ node: { attrs: { highlight: highlightValue } } });
34283
34295
  return translated || {};
34284
34296
  }
34285
34297
  case "link":
@@ -34658,6 +34670,7 @@ const _SuperConverter = class _SuperConverter2 {
34658
34670
  this.fonts = params2?.fonts || {};
34659
34671
  this.addedMedia = {};
34660
34672
  this.comments = [];
34673
+ this.inlineDocumentFonts = [];
34661
34674
  this.docHiglightColors = /* @__PURE__ */ new Set([]);
34662
34675
  this.xml = params2?.xml;
34663
34676
  this.declaration = null;
@@ -34944,6 +34957,23 @@ const _SuperConverter = class _SuperConverter2 {
34944
34957
  return result;
34945
34958
  }
34946
34959
  getDocumentFonts() {
34960
+ const inlineDocumentFonts = [...new Set(this.inlineDocumentFonts || [])];
34961
+ const fontTable = this.convertedXml["word/fontTable.xml"];
34962
+ if (!fontTable) {
34963
+ return inlineDocumentFonts;
34964
+ }
34965
+ const wFonts = fontTable.elements?.find((element) => element.name === "w:fonts");
34966
+ if (!wFonts) {
34967
+ return inlineDocumentFonts;
34968
+ }
34969
+ if (!wFonts.elements) {
34970
+ return inlineDocumentFonts;
34971
+ }
34972
+ const fontsInFontTable = wFonts.elements.filter((element) => element.name === "w:font").map((element) => element.attributes["w:name"]);
34973
+ const allFonts = [...inlineDocumentFonts, ...fontsInFontTable];
34974
+ return [...new Set(allFonts)];
34975
+ }
34976
+ getFontFaceImportString() {
34947
34977
  const fontTable = this.convertedXml["word/fontTable.xml"];
34948
34978
  if (!fontTable || !Object.keys(this.fonts).length) return;
34949
34979
  const fonts = fontTable.elements.find((el) => el.name === "w:fonts");
@@ -34957,6 +34987,7 @@ const _SuperConverter = class _SuperConverter2 {
34957
34987
  const rels = this.convertedXml["word/_rels/fontTable.xml.rels"];
34958
34988
  const relationships = rels?.elements.find((el) => el.name === "Relationships") || {};
34959
34989
  const { elements } = relationships;
34990
+ const fontsImported = [];
34960
34991
  let styleString = "";
34961
34992
  for (const font of fontsToInclude) {
34962
34993
  const filePath = elements.find((el) => el.attributes.Id === font.attributes["r:id"])?.attributes?.Target;
@@ -34973,6 +35004,9 @@ const _SuperConverter = class _SuperConverter2 {
34973
35004
  const isItalic = font.name.includes("Italic");
34974
35005
  const isLight = font.name.includes("Light");
34975
35006
  const fontWeight = isNormal ? "normal" : isBold ? "bold" : isLight ? "200" : "normal";
35007
+ if (!fontsImported.includes(font.fontFamily)) {
35008
+ fontsImported.push(font.fontFamily);
35009
+ }
34976
35010
  styleString += `
34977
35011
  @font-face {
34978
35012
  font-style: ${isItalic ? "italic" : "normal"};
@@ -34983,7 +35017,10 @@ const _SuperConverter = class _SuperConverter2 {
34983
35017
  }
34984
35018
  `;
34985
35019
  }
34986
- return styleString;
35020
+ return {
35021
+ styleString,
35022
+ fontsImported
35023
+ };
34987
35024
  }
34988
35025
  getDocumentInternalId() {
34989
35026
  const settingsLocation = "word/settings.xml";
@@ -35038,6 +35075,7 @@ const _SuperConverter = class _SuperConverter2 {
35038
35075
  this.numbering = result.numbering;
35039
35076
  this.comments = result.comments;
35040
35077
  this.linkedStyles = result.linkedStyles;
35078
+ this.inlineDocumentFonts = result.inlineDocumentFonts;
35041
35079
  return result.pmDoc;
35042
35080
  } else {
35043
35081
  return null;
@@ -37999,7 +38037,7 @@ var __privateGet$1 = (obj, member, getter) => (__accessCheck$1(obj, member, "rea
37999
38037
  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);
38000
38038
  var __privateSet = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), member.set(obj, value), value);
38001
38039
  var __privateMethod$1 = (obj, member, method) => (__accessCheck$1(obj, member, "access private method"), method);
38002
- 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;
38040
+ 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;
38003
38041
  var GOOD_LEAF_SIZE = 200;
38004
38042
  var RopeSequence = function RopeSequence2() {
38005
38043
  };
@@ -51068,6 +51106,29 @@ const setImageNodeSelection = (view, pos) => {
51068
51106
  }
51069
51107
  return false;
51070
51108
  };
51109
+ function canRenderFont(fontName, fallbackFont = "sans-serif") {
51110
+ const _canRenderFont = (fontName2, fallbackFont2) => {
51111
+ const canvas = document.createElement("canvas");
51112
+ const ctx2 = canvas.getContext("2d");
51113
+ ctx2.textBaseline = "top";
51114
+ const text = "abcdefghijklmnopqrstuvwxyz0123456789";
51115
+ ctx2.font = `72px ${fallbackFont2}`;
51116
+ const initialTextMeasurement = ctx2.measureText(text);
51117
+ const fallbackWidth = initialTextMeasurement.width;
51118
+ const fallbackHeight = initialTextMeasurement.actualBoundingBoxDescent;
51119
+ ctx2.font = `72px "${fontName2}", ${fallbackFont2}`;
51120
+ const customTextMeasurement = ctx2.measureText(text);
51121
+ const customFontWidth = customTextMeasurement.width;
51122
+ const customFontHeight = customTextMeasurement.actualBoundingBoxDescent;
51123
+ const isAvailable = customFontWidth !== fallbackWidth || customFontHeight !== fallbackHeight;
51124
+ return isAvailable;
51125
+ };
51126
+ if (_canRenderFont(fontName, fallbackFont)) {
51127
+ return true;
51128
+ }
51129
+ const oppositeFallbackFont = fallbackFont === "sans-serif" ? "serif" : "sans-serif";
51130
+ return _canRenderFont(fontName, oppositeFallbackFont);
51131
+ }
51071
51132
  const { findChildren: findChildren$3 } = helpers;
51072
51133
  function getAllFieldAnnotations(state2) {
51073
51134
  let fieldAnnotations = findChildren$3(state2.doc, (node) => node.type.name === "fieldAnnotation");
@@ -52117,6 +52178,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
52117
52178
  __publicField$1(this, "schema");
52118
52179
  __publicField$1(this, "view");
52119
52180
  __publicField$1(this, "isFocused", false);
52181
+ __publicField$1(this, "fontsImported", []);
52120
52182
  __publicField$1(this, "options", {
52121
52183
  element: null,
52122
52184
  selector: null,
@@ -52177,6 +52239,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
52177
52239
  onPaginationUpdate: () => null,
52178
52240
  onException: () => null,
52179
52241
  onListDefinitionsChange: () => null,
52242
+ onFontsResolved: null,
52180
52243
  // async (file) => url;
52181
52244
  handleImageUpload: null,
52182
52245
  // telemetry
@@ -53153,6 +53216,9 @@ init_fn = function() {
53153
53216
  this.emit("beforeCreate", { editor: this });
53154
53217
  this.on("contentError", this.options.onContentError);
53155
53218
  this.mount(this.options.element);
53219
+ if (!this.options.isHeadless) {
53220
+ __privateMethod$1(this, _Editor_instances, checkFonts_fn).call(this);
53221
+ }
53156
53222
  this.on("create", this.options.onCreate);
53157
53223
  this.on("update", this.options.onUpdate);
53158
53224
  this.on("selectionUpdate", this.options.onSelectionUpdate);
@@ -53300,13 +53366,74 @@ initMedia_fn = function() {
53300
53366
  }
53301
53367
  };
53302
53368
  initFonts_fn = function() {
53303
- const styleString = this.converter.getDocumentFonts();
53304
- if (styleString?.length) {
53369
+ const results = this.converter.getFontFaceImportString();
53370
+ if (results?.styleString?.length) {
53305
53371
  const style2 = document.createElement("style");
53306
- style2.textContent = styleString;
53372
+ style2.textContent = results.styleString;
53307
53373
  document.head.appendChild(style2);
53374
+ this.fontsImported = results.fontsImported;
53308
53375
  }
53309
53376
  };
53377
+ checkFonts_fn = async function() {
53378
+ if (!this.options.onFontsResolved || typeof this.options.onFontsResolved !== "function") {
53379
+ return;
53380
+ }
53381
+ if (this.options.isHeadless) {
53382
+ return;
53383
+ }
53384
+ const fontsUsedInDocument = this.converter.getDocumentFonts();
53385
+ if (!("queryLocalFonts" in window)) {
53386
+ console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
53387
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
53388
+ this.options.onFontsResolved({
53389
+ documentFonts: fontsUsedInDocument,
53390
+ unsupportedFonts
53391
+ });
53392
+ return;
53393
+ }
53394
+ const localFontAccess = await navigator.permissions.query({ name: "local-fonts" });
53395
+ if (localFontAccess.state === "denied") {
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
+ return;
53403
+ }
53404
+ try {
53405
+ const localFonts = await window.queryLocalFonts();
53406
+ const uniqueLocalFonts = [...new Set(localFonts.map((font) => font.family))];
53407
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithLocalFonts_fn).call(this, fontsUsedInDocument, uniqueLocalFonts);
53408
+ this.options.onFontsResolved({
53409
+ documentFonts: fontsUsedInDocument,
53410
+ unsupportedFonts
53411
+ });
53412
+ } catch {
53413
+ console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
53414
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
53415
+ this.options.onFontsResolved({
53416
+ documentFonts: fontsUsedInDocument,
53417
+ unsupportedFonts
53418
+ });
53419
+ }
53420
+ };
53421
+ determineUnsupportedFontsWithLocalFonts_fn = function(fonts, localFonts) {
53422
+ const unsupportedFonts = fonts.filter((font) => {
53423
+ const isLocalFont = localFonts.includes(font);
53424
+ const isFontImported = this.fontsImported.includes(font);
53425
+ return !isLocalFont && !isFontImported;
53426
+ });
53427
+ return unsupportedFonts;
53428
+ };
53429
+ determineUnsupportedFontsWithCanvas_fn = function(fonts) {
53430
+ const unsupportedFonts = fonts.filter((font) => {
53431
+ const canRender = canRenderFont(font);
53432
+ const isFontImported = this.fontsImported.includes(font);
53433
+ return !canRender && !isFontImported;
53434
+ });
53435
+ return unsupportedFonts;
53436
+ };
53310
53437
  createSchema_fn = function() {
53311
53438
  this.schema = this.extensionService.schema;
53312
53439
  };
@@ -62063,6 +62190,15 @@ const TableCell = Node$1.create({
62063
62190
  widthUnit: {
62064
62191
  default: "px",
62065
62192
  rendered: false
62193
+ },
62194
+ /**
62195
+ * @category Attribute
62196
+ * @param {TableCellProperties} tableCellProperties - Properties for the table cell.
62197
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 463
62198
+ */
62199
+ tableCellProperties: {
62200
+ default: null,
62201
+ rendered: false
62066
62202
  }
62067
62203
  };
62068
62204
  },
@@ -87772,7 +87908,7 @@ const _sfc_main$2 = {
87772
87908
  }
87773
87909
  };
87774
87910
  const GenericPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-cbddcc0f"]]);
87775
- const BlankDOCX = "data:application/octet-stream;base64,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";
87911
+ const BlankDOCX = "data:application/octet-stream;base64,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";
87776
87912
  const _hoisted_1$1 = { class: "super-editor-container" };
87777
87913
  const _hoisted_2 = {
87778
87914
  key: 1,
@@ -88167,72 +88303,87 @@ const additionalHandlers = Object.freeze({
88167
88303
  "mc:AlternateContent": translator$1,
88168
88304
  "sd:pageReference": translator$5,
88169
88305
  "sd:tableOfContents": translator$4,
88170
- "w:b": translator$18,
88171
- "w:bidiVisual": translator$J,
88306
+ "w:b": translator$1n,
88307
+ "w:bidiVisual": translator$Y,
88172
88308
  "w:bookmarkEnd": translator$6,
88173
88309
  "w:bookmarkStart": translator$7,
88174
- "w:bottom": translator$w,
88175
- "w:br": translator$1c,
88176
- "w:cantSplit": translator$X,
88177
- "w:cnfStyle": translator$W,
88178
- "w:color": translator$14,
88179
- "w:divId": translator$V,
88310
+ "w:bottom": translator$L,
88311
+ "w:br": translator$1r,
88312
+ "w:cantSplit": translator$1a,
88313
+ "w:cnfStyle": translator$19,
88314
+ "w:color": translator$1j,
88315
+ "w:divId": translator$18,
88180
88316
  "w:drawing": translator$9,
88181
- "w:end": translator$u,
88182
- "w:gridAfter": translator$U,
88183
- "w:gridBefore": translator$T,
88184
- "w:gridCol": translator$f,
88185
- "w:hidden": translator$S,
88186
- "w:highlight": translator$1b,
88187
- "w:hyperlink": translator$Z,
88188
- "w:i": translator$17,
88189
- "w:insideH": translator$s,
88190
- "w:insideV": translator$r,
88191
- "w:jc": translator$R,
88192
- "w:left": translator$q,
88193
- "w:p": translator$19,
88194
- "w:r": translator$Y,
88195
- "w:rFonts": translator$13,
88196
- "w:rPr": translator$_,
88197
- "w:rStyle": translator$12,
88198
- "w:right": translator$o,
88317
+ "w:end": translator$J,
88318
+ "w:gridAfter": translator$17,
88319
+ "w:gridBefore": translator$16,
88320
+ "w:gridCol": translator$u,
88321
+ "w:hidden": translator$15,
88322
+ "w:highlight": translator$1q,
88323
+ "w:hyperlink": translator$1c,
88324
+ "w:i": translator$1m,
88325
+ "w:insideH": translator$H,
88326
+ "w:insideV": translator$G,
88327
+ "w:jc": translator$14,
88328
+ "w:left": translator$F,
88329
+ "w:p": translator$1o,
88330
+ "w:r": translator$1b,
88331
+ "w:rFonts": translator$1i,
88332
+ "w:rPr": translator$1d,
88333
+ "w:rStyle": translator$1h,
88334
+ "w:right": translator$D,
88199
88335
  "w:sdt": translator$8,
88200
- "w:shd": translator$I,
88201
- "w:start": translator$m,
88202
- "w:strike": translator$15,
88203
- "w:sz": translator$11,
88204
- "w:szCs": translator$10,
88205
- "w:tab": translator$1a,
88206
- "w:tbl": translator$d,
88207
- "w:tblBorders": translator$i,
88208
- "w:tblCaption": translator$H,
88209
- "w:tblCellMar": translator$h,
88210
- "w:tblCellSpacing": translator$Q,
88211
- "w:tblDescription": translator$G,
88212
- "w:tblGrid": translator$e,
88213
- "w:tblHeader": translator$P,
88214
- "w:tblInd": translator$F,
88215
- "w:tblLayout": translator$E,
88216
- "w:tblLook": translator$D,
88217
- "w:tblOverlap": translator$C,
88218
- "w:tblPr": translator$g,
88219
- "w:tblStyle": translator$B,
88220
- "w:tblStyleColBandSize": translator$A,
88221
- "w:tblStyleRowBandSize": translator$z,
88222
- "w:tblW": translator$y,
88223
- "w:tblpPr": translator$x,
88336
+ "w:shd": translator$X,
88337
+ "w:start": translator$B,
88338
+ "w:strike": translator$1k,
88339
+ "w:sz": translator$1g,
88340
+ "w:szCs": translator$1f,
88341
+ "w:tab": translator$1p,
88342
+ "w:tbl": translator$s,
88343
+ "w:tblBorders": translator$x,
88344
+ "w:tblCaption": translator$W,
88345
+ "w:tblCellMar": translator$w,
88346
+ "w:tblCellSpacing": translator$13,
88347
+ "w:tblDescription": translator$V,
88348
+ "w:tblGrid": translator$t,
88349
+ "w:tblHeader": translator$12,
88350
+ "w:tblInd": translator$U,
88351
+ "w:tblLayout": translator$T,
88352
+ "w:tblLook": translator$S,
88353
+ "w:tblOverlap": translator$R,
88354
+ "w:tblPr": translator$v,
88355
+ "w:tblStyle": translator$Q,
88356
+ "w:tblStyleColBandSize": translator$P,
88357
+ "w:tblStyleRowBandSize": translator$O,
88358
+ "w:tblW": translator$N,
88359
+ "w:tblpPr": translator$M,
88224
88360
  "w:tc": translator$c,
88225
- "w:top": translator$k,
88226
- "w:tr": translator$K,
88227
- "w:trHeight": translator$O,
88228
- "w:trPr": translator$L,
88229
- "w:u": translator$16,
88230
- "w:wAfter": translator$N,
88231
- "w:wBefore": translator$M,
88361
+ "w:top": translator$z,
88362
+ "w:tr": translator$Z,
88363
+ "w:trHeight": translator$11,
88364
+ "w:trPr": translator$_,
88365
+ "w:u": translator$1l,
88366
+ "w:wAfter": translator$10,
88367
+ "w:wBefore": translator$$,
88232
88368
  "wp:anchor": translator$b,
88233
88369
  "wp:inline": translator$a,
88234
88370
  "w:commentRangeStart": commentRangeStartTranslator,
88235
- "w:commentRangeEnd": commentRangeEndTranslator
88371
+ "w:commentRangeEnd": commentRangeEndTranslator,
88372
+ "w:vMerge": translator$p,
88373
+ "w:gridSpan": translator$q,
88374
+ "w:vAlign": translator$h,
88375
+ "w:noWrap": translator$l,
88376
+ "w:tcFitText": translator$i,
88377
+ "w:tcW": translator$r,
88378
+ "w:hideMark": translator$g,
88379
+ "w:textDirection": translator$j,
88380
+ "w:tl2br": translator$o,
88381
+ "w:tr2bl": translator$n,
88382
+ "w:header": translator$f,
88383
+ "w:headers": translator$e,
88384
+ "w:tcBorders": translator$m,
88385
+ "w:tcMar": translator$k,
88386
+ "w:tcPr": translator$d
88236
88387
  });
88237
88388
  const baseHandlers = {
88238
88389
  ...runPropertyTranslators,