@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
@@ -22871,9 +22871,9 @@
22871
22871
  if (typeof px === "string") px = parseFloat(px);
22872
22872
  return Math.round(px * 9525);
22873
22873
  }
22874
- function eigthPointsToPixels(eigthPoints) {
22875
- if (eigthPoints == null) return;
22876
- const points = parseFloat(eigthPoints) / 8;
22874
+ function eighthPointsToPixels(eighthPoints) {
22875
+ if (eighthPoints == null) return;
22876
+ const points = parseFloat(eighthPoints) / 8;
22877
22877
  const pixels = points * 1.3333;
22878
22878
  return pixels;
22879
22879
  }
@@ -32277,37 +32277,37 @@ Please report this to https://github.com/markedjs/marked.`, e) {
32277
32277
  };
32278
32278
  __publicField$2(_NodeTranslator, "translatorTypes", TranslatorTypes);
32279
32279
  let NodeTranslator = _NodeTranslator;
32280
- const encode$1e = (attributes) => {
32280
+ const encode$1b = (attributes) => {
32281
32281
  return attributes["w:type"];
32282
32282
  };
32283
- const decode$16 = (attrs) => {
32283
+ const decode$13 = (attrs) => {
32284
32284
  const { lineBreakType } = attrs;
32285
32285
  return lineBreakType;
32286
32286
  };
32287
32287
  const attrConfig$G = Object.freeze({
32288
32288
  xmlName: "w:type",
32289
32289
  sdName: "lineBreakType",
32290
- encode: encode$1e,
32291
- decode: decode$16
32290
+ encode: encode$1b,
32291
+ decode: decode$13
32292
32292
  });
32293
- const encode$1d = (attributes) => {
32293
+ const encode$1a = (attributes) => {
32294
32294
  const xmlAttrValue = attributes["w:clear"];
32295
32295
  return xmlAttrValue;
32296
32296
  };
32297
- const decode$15 = (attrs) => {
32297
+ const decode$12 = (attrs) => {
32298
32298
  const { clear } = attrs;
32299
32299
  return clear;
32300
32300
  };
32301
32301
  const attrConfig$F = Object.freeze({
32302
32302
  xmlName: "w:clear",
32303
32303
  sdName: "clear",
32304
- encode: encode$1d,
32305
- decode: decode$15
32304
+ encode: encode$1a,
32305
+ decode: decode$12
32306
32306
  });
32307
32307
  const validXmlAttributes$p = [attrConfig$G, attrConfig$F];
32308
- const XML_NODE_NAME$B = "w:br";
32308
+ const XML_NODE_NAME$y = "w:br";
32309
32309
  const SD_NODE_NAME$h = "lineBreak";
32310
- const encode$1c = (_2, encodedAttrs) => {
32310
+ const encode$19 = (_2, encodedAttrs) => {
32311
32311
  const isPageBreak = encodedAttrs?.lineBreakType === "page";
32312
32312
  const translated = {
32313
32313
  type: isPageBreak ? "hardBreak" : "lineBreak"
@@ -32317,7 +32317,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
32317
32317
  }
32318
32318
  return translated;
32319
32319
  };
32320
- const decode$14 = (params2, decodedAttrs) => {
32320
+ const decode$11 = (params2, decodedAttrs) => {
32321
32321
  const { node } = params2;
32322
32322
  if (!node) return;
32323
32323
  const wBreak = { name: "w:br" };
@@ -32334,39 +32334,39 @@ Please report this to https://github.com/markedjs/marked.`, e) {
32334
32334
  };
32335
32335
  return translated;
32336
32336
  };
32337
- const config$y = {
32338
- xmlName: XML_NODE_NAME$B,
32337
+ const config$x = {
32338
+ xmlName: XML_NODE_NAME$y,
32339
32339
  sdNodeOrKeyName: SD_NODE_NAME$h,
32340
32340
  type: NodeTranslator.translatorTypes.NODE,
32341
- encode: encode$1c,
32342
- decode: decode$14,
32341
+ encode: encode$19,
32342
+ decode: decode$11,
32343
32343
  attributes: validXmlAttributes$p
32344
32344
  };
32345
- const translator$1c = NodeTranslator.from(config$y);
32346
- const encode$1b = (attributes) => attributes?.["w:val"];
32347
- const decode$13 = (attrs) => attrs?.highlight;
32345
+ const translator$1r = NodeTranslator.from(config$x);
32346
+ const encode$18 = (attributes) => attributes?.["w:val"];
32347
+ const decode$10 = (attrs) => attrs?.highlight;
32348
32348
  const attrConfig$E = Object.freeze({
32349
32349
  xmlName: "w:val",
32350
32350
  sdName: "highlight",
32351
- encode: encode$1b,
32352
- decode: decode$13
32351
+ encode: encode$18,
32352
+ decode: decode$10
32353
32353
  });
32354
32354
  const validXmlAttributes$o = [attrConfig$E];
32355
- const XML_NODE_NAME$A = "w:highlight";
32356
- const SD_ATTR_KEY$i = "highlight";
32355
+ const XML_NODE_NAME$x = "w:highlight";
32356
+ const SD_ATTR_KEY$f = "highlight";
32357
32357
  const DISABLED_TOKENS = /* @__PURE__ */ new Set(["transparent", "none", "inherit"]);
32358
- const encode$1a = (params2, encodedAttrs = {}) => {
32358
+ const encode$17 = (params2, encodedAttrs = {}) => {
32359
32359
  const { nodes } = params2;
32360
32360
  const node = nodes?.[0];
32361
32361
  const value = encodedAttrs.highlight ?? node?.attributes?.["w:val"];
32362
32362
  return {
32363
32363
  type: "attr",
32364
- xmlName: XML_NODE_NAME$A,
32365
- sdNodeOrKeyName: SD_ATTR_KEY$i,
32364
+ xmlName: XML_NODE_NAME$x,
32365
+ sdNodeOrKeyName: SD_ATTR_KEY$f,
32366
32366
  attributes: { "w:val": value ?? null }
32367
32367
  };
32368
32368
  };
32369
- const decode$12 = (params2) => {
32369
+ const decode$$ = (params2) => {
32370
32370
  const attrs = params2?.node?.attrs || {};
32371
32371
  const highlightValue = attrs.highlight ?? attrs.color ?? null;
32372
32372
  if (!highlightValue) return void 0;
@@ -32374,14 +32374,14 @@ Please report this to https://github.com/markedjs/marked.`, e) {
32374
32374
  if (!normalizedValue) return void 0;
32375
32375
  if (DISABLED_TOKENS.has(normalizedValue)) {
32376
32376
  return {
32377
- name: XML_NODE_NAME$A,
32377
+ name: XML_NODE_NAME$x,
32378
32378
  attributes: { "w:val": "none" }
32379
32379
  };
32380
32380
  }
32381
32381
  const keyword = getDocxHighlightKeywordFromHex(highlightValue);
32382
32382
  if (keyword) {
32383
32383
  return {
32384
- name: XML_NODE_NAME$A,
32384
+ name: XML_NODE_NAME$x,
32385
32385
  attributes: { "w:val": keyword }
32386
32386
  };
32387
32387
  }
@@ -32396,63 +32396,63 @@ Please report this to https://github.com/markedjs/marked.`, e) {
32396
32396
  }
32397
32397
  };
32398
32398
  };
32399
- const config$x = {
32400
- xmlName: XML_NODE_NAME$A,
32401
- sdNodeOrKeyName: SD_ATTR_KEY$i,
32399
+ const config$w = {
32400
+ xmlName: XML_NODE_NAME$x,
32401
+ sdNodeOrKeyName: SD_ATTR_KEY$f,
32402
32402
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
32403
- encode: encode$1a,
32404
- decode: decode$12,
32403
+ encode: encode$17,
32404
+ decode: decode$$,
32405
32405
  attributes: validXmlAttributes$o
32406
32406
  };
32407
- const translator$1b = NodeTranslator.from(config$x);
32408
- const encode$19 = (attributes) => {
32407
+ const translator$1q = NodeTranslator.from(config$w);
32408
+ const encode$16 = (attributes) => {
32409
32409
  return attributes["w:val"];
32410
32410
  };
32411
- const decode$11 = (attrs) => {
32411
+ const decode$_ = (attrs) => {
32412
32412
  const { tabSize } = attrs || {};
32413
32413
  return tabSize;
32414
32414
  };
32415
32415
  const attrConfig$D = Object.freeze({
32416
32416
  xmlName: "w:val",
32417
32417
  sdName: "tabSize",
32418
- encode: encode$19,
32419
- decode: decode$11
32418
+ encode: encode$16,
32419
+ decode: decode$_
32420
32420
  });
32421
- const encode$18 = (attributes) => {
32421
+ const encode$15 = (attributes) => {
32422
32422
  return attributes["w:leader"];
32423
32423
  };
32424
- const decode$10 = (attrs) => {
32424
+ const decode$Z = (attrs) => {
32425
32425
  const { leader } = attrs || {};
32426
32426
  return leader;
32427
32427
  };
32428
32428
  const attrConfig$C = Object.freeze({
32429
32429
  xmlName: "w:leader",
32430
32430
  sdName: "leader",
32431
- encode: encode$18,
32432
- decode: decode$10
32431
+ encode: encode$15,
32432
+ decode: decode$Z
32433
32433
  });
32434
- const encode$17 = (attributes) => {
32434
+ const encode$14 = (attributes) => {
32435
32435
  return attributes["w:pos"];
32436
32436
  };
32437
- const decode$$ = (attrs) => {
32437
+ const decode$Y = (attrs) => {
32438
32438
  const { pos } = attrs || {};
32439
32439
  return pos;
32440
32440
  };
32441
32441
  const attrConfig$B = Object.freeze({
32442
32442
  xmlName: "w:pos",
32443
32443
  sdName: "pos",
32444
- encode: encode$17,
32445
- decode: decode$$
32444
+ encode: encode$14,
32445
+ decode: decode$Y
32446
32446
  });
32447
32447
  const validXmlAttributes$n = [attrConfig$D, attrConfig$B, attrConfig$C];
32448
- const XML_NODE_NAME$z = "w:tab";
32448
+ const XML_NODE_NAME$w = "w:tab";
32449
32449
  const SD_NODE_NAME$g = "tab";
32450
- const encode$16 = (_2, encodedAttrs = {}) => {
32450
+ const encode$13 = (_2, encodedAttrs = {}) => {
32451
32451
  const translated = { type: "tab" };
32452
32452
  if (encodedAttrs) translated.attrs = { ...encodedAttrs };
32453
32453
  return translated;
32454
32454
  };
32455
- const decode$_ = (params2, decodedAttrs = {}) => {
32455
+ const decode$X = (params2, decodedAttrs = {}) => {
32456
32456
  const { node } = params2 || {};
32457
32457
  if (!node) return;
32458
32458
  const wTab = { name: "w:tab" };
@@ -32468,15 +32468,15 @@ Please report this to https://github.com/markedjs/marked.`, e) {
32468
32468
  }
32469
32469
  return translated;
32470
32470
  };
32471
- const config$w = {
32472
- xmlName: XML_NODE_NAME$z,
32471
+ const config$v = {
32472
+ xmlName: XML_NODE_NAME$w,
32473
32473
  sdNodeOrKeyName: SD_NODE_NAME$g,
32474
32474
  type: NodeTranslator.translatorTypes.NODE,
32475
- encode: encode$16,
32476
- decode: decode$_,
32475
+ encode: encode$13,
32476
+ decode: decode$X,
32477
32477
  attributes: validXmlAttributes$n
32478
32478
  };
32479
- const translator$1a = NodeTranslator.from(config$w);
32479
+ const translator$1p = NodeTranslator.from(config$v);
32480
32480
  const mergeTextNodes = (nodes) => {
32481
32481
  if (!nodes || !Array.isArray(nodes)) {
32482
32482
  return nodes;
@@ -32702,9 +32702,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
32702
32702
  const { attributes: a } = el;
32703
32703
  if (a["w:val"] === "nil" || a["w:val"] === void 0) return;
32704
32704
  let sizePx;
32705
- if (a["w:sz"] !== void 0) sizePx = eigthPointsToPixels(a["w:sz"]);
32705
+ if (a["w:sz"] !== void 0) sizePx = eighthPointsToPixels(a["w:sz"]);
32706
32706
  let spacePx;
32707
- if (a["w:space"] !== void 0) spacePx = eigthPointsToPixels(a["w:space"]);
32707
+ if (a["w:space"] !== void 0) spacePx = eighthPointsToPixels(a["w:space"]);
32708
32708
  result[side] = {
32709
32709
  val: a["w:val"],
32710
32710
  size: sizePx,
@@ -32994,89 +32994,89 @@ Please report this to https://github.com/markedjs/marked.`, e) {
32994
32994
  }
32995
32995
  return schemaNode;
32996
32996
  };
32997
- const encode$15 = (attributes) => {
32997
+ const encode$12 = (attributes) => {
32998
32998
  return attributes["w:rsidDel"];
32999
32999
  };
33000
- const decode$Z = (attrs) => {
33000
+ const decode$W = (attrs) => {
33001
33001
  return attrs.rsidDel;
33002
33002
  };
33003
33003
  const attrConfig$A = Object.freeze({
33004
33004
  xmlName: "w:rsidDel",
33005
33005
  sdName: "rsidDel",
33006
- encode: encode$15,
33007
- decode: decode$Z
33006
+ encode: encode$12,
33007
+ decode: decode$W
33008
33008
  });
33009
- const encode$14 = (attributes) => {
33009
+ const encode$11 = (attributes) => {
33010
33010
  return attributes["w:rsidP"];
33011
33011
  };
33012
- const decode$Y = (attrs) => {
33012
+ const decode$V = (attrs) => {
33013
33013
  return attrs.rsidP;
33014
33014
  };
33015
33015
  const attrConfig$z = Object.freeze({
33016
33016
  xmlName: "w:rsidP",
33017
33017
  sdName: "rsidP",
33018
- encode: encode$14,
33019
- decode: decode$Y
33018
+ encode: encode$11,
33019
+ decode: decode$V
33020
33020
  });
33021
- const encode$13 = (attributes) => {
33021
+ const encode$10 = (attributes) => {
33022
33022
  return attributes["w:rsidR"];
33023
33023
  };
33024
- const decode$X = (attrs) => {
33024
+ const decode$U = (attrs) => {
33025
33025
  return attrs.rsidR;
33026
33026
  };
33027
33027
  const attrConfig$y = Object.freeze({
33028
33028
  xmlName: "w:rsidR",
33029
33029
  sdName: "rsidR",
33030
- encode: encode$13,
33031
- decode: decode$X
33030
+ encode: encode$10,
33031
+ decode: decode$U
33032
33032
  });
33033
- const encode$12 = (attributes) => {
33033
+ const encode$$ = (attributes) => {
33034
33034
  return attributes["w:rsidRPr"];
33035
33035
  };
33036
- const decode$W = (attrs) => {
33036
+ const decode$T = (attrs) => {
33037
33037
  return attrs.rsidRPr;
33038
33038
  };
33039
33039
  const attrConfig$x = Object.freeze({
33040
33040
  xmlName: "w:rsidRPr",
33041
33041
  sdName: "rsidRPr",
33042
- encode: encode$12,
33043
- decode: decode$W
33042
+ encode: encode$$,
33043
+ decode: decode$T
33044
33044
  });
33045
- const encode$11 = (attributes) => {
33045
+ const encode$_ = (attributes) => {
33046
33046
  return attributes["w:rsidRDefault"];
33047
33047
  };
33048
- const decode$V = (attrs) => {
33048
+ const decode$S = (attrs) => {
33049
33049
  return attrs.rsidRDefault;
33050
33050
  };
33051
33051
  const attrConfig$w = Object.freeze({
33052
33052
  xmlName: "w:rsidRDefault",
33053
33053
  sdName: "rsidRDefault",
33054
- encode: encode$11,
33055
- decode: decode$V
33054
+ encode: encode$_,
33055
+ decode: decode$S
33056
33056
  });
33057
- const encode$10 = (attributes) => {
33057
+ const encode$Z = (attributes) => {
33058
33058
  return attributes["w14:paraId"];
33059
33059
  };
33060
- const decode$U = (attrs) => {
33060
+ const decode$R = (attrs) => {
33061
33061
  return attrs.paraId;
33062
33062
  };
33063
33063
  const attrConfig$v = Object.freeze({
33064
33064
  xmlName: "w14:paraId",
33065
33065
  sdName: "paraId",
33066
- encode: encode$10,
33067
- decode: decode$U
33066
+ encode: encode$Z,
33067
+ decode: decode$R
33068
33068
  });
33069
- const encode$$ = (attributes) => {
33069
+ const encode$Y = (attributes) => {
33070
33070
  return attributes["w14:textId"];
33071
33071
  };
33072
- const decode$T = (attrs) => {
33072
+ const decode$Q = (attrs) => {
33073
33073
  return attrs.textId;
33074
33074
  };
33075
33075
  const attrConfig$u = Object.freeze({
33076
33076
  xmlName: "w14:textId",
33077
33077
  sdName: "textId",
33078
- encode: encode$$,
33079
- decode: decode$T
33078
+ encode: encode$Y,
33079
+ decode: decode$Q
33080
33080
  });
33081
33081
  const validXmlAttributes$m = [
33082
33082
  attrConfig$v,
@@ -33087,9 +33087,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33087
33087
  attrConfig$x,
33088
33088
  attrConfig$A
33089
33089
  ];
33090
- const XML_NODE_NAME$y = "w:p";
33090
+ const XML_NODE_NAME$v = "w:p";
33091
33091
  const SD_NODE_NAME$f = "paragraph";
33092
- const encode$_ = (params2, encodedAttrs = {}) => {
33092
+ const encode$X = (params2, encodedAttrs = {}) => {
33093
33093
  const node = handleParagraphNode$1(params2);
33094
33094
  if (!node) return void 0;
33095
33095
  if (encodedAttrs && Object.keys(encodedAttrs).length) {
@@ -33097,7 +33097,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33097
33097
  }
33098
33098
  return node;
33099
33099
  };
33100
- const decode$S = (params2, decodedAttrs = {}) => {
33100
+ const decode$P = (params2, decodedAttrs = {}) => {
33101
33101
  const translated = translateParagraphNode(params2);
33102
33102
  if (!translated) return void 0;
33103
33103
  if (decodedAttrs && Object.keys(decodedAttrs).length) {
@@ -33105,16 +33105,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33105
33105
  }
33106
33106
  return translated;
33107
33107
  };
33108
- const config$v = {
33109
- xmlName: XML_NODE_NAME$y,
33108
+ const config$u = {
33109
+ xmlName: XML_NODE_NAME$v,
33110
33110
  sdNodeOrKeyName: SD_NODE_NAME$f,
33111
33111
  type: NodeTranslator.translatorTypes.NODE,
33112
- encode: encode$_,
33113
- decode: decode$S,
33112
+ encode: encode$X,
33113
+ decode: decode$P,
33114
33114
  attributes: validXmlAttributes$m
33115
33115
  };
33116
- const translator$19 = NodeTranslator.from(config$v);
33117
- const encode$Z = (attributes) => {
33116
+ const translator$1o = NodeTranslator.from(config$u);
33117
+ const encode$W = (attributes) => {
33118
33118
  const raw = attributes?.["w:val"];
33119
33119
  if (raw === void 0 || raw === null) return void 0;
33120
33120
  if (typeof raw === "boolean") return raw;
@@ -33124,24 +33124,24 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33124
33124
  if (val === "1" || val === "true" || val === "on") return true;
33125
33125
  return void 0;
33126
33126
  };
33127
- const decode$R = (runProps) => {
33127
+ const decode$O = (runProps) => {
33128
33128
  if (runProps?.bold === false) return "0";
33129
33129
  return void 0;
33130
33130
  };
33131
33131
  const attrConfig$t = Object.freeze({
33132
33132
  xmlName: "w:val",
33133
33133
  sdName: "bold",
33134
- encode: encode$Z,
33135
- decode: decode$R
33134
+ encode: encode$W,
33135
+ decode: decode$O
33136
33136
  });
33137
33137
  const validXmlAttributes$l = [attrConfig$t];
33138
- const XML_NODE_NAME$x = "w:b";
33139
- const SD_ATTR_KEY$h = "bold";
33140
- const encode$Y = (params2, encodedAttrs = {}) => {
33138
+ const XML_NODE_NAME$u = "w:b";
33139
+ const SD_ATTR_KEY$e = "bold";
33140
+ const encode$V = (params2, encodedAttrs = {}) => {
33141
33141
  const { nodes } = params2;
33142
33142
  const node = nodes[0];
33143
33143
  if (!node) return void 0;
33144
- const val = encodedAttrs?.[SD_ATTR_KEY$h];
33144
+ const val = encodedAttrs?.[SD_ATTR_KEY$e];
33145
33145
  let attributes;
33146
33146
  if (val === false) attributes = { "w:val": "0" };
33147
33147
  else if (val === true)
@@ -33149,85 +33149,85 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33149
33149
  else attributes = node.attributes || {};
33150
33150
  return {
33151
33151
  type: "attr",
33152
- xmlName: XML_NODE_NAME$x,
33153
- sdNodeOrKeyName: SD_ATTR_KEY$h,
33152
+ xmlName: XML_NODE_NAME$u,
33153
+ sdNodeOrKeyName: SD_ATTR_KEY$e,
33154
33154
  attributes
33155
33155
  };
33156
33156
  };
33157
- const config$u = {
33158
- xmlName: XML_NODE_NAME$x,
33159
- sdNodeOrKeyName: SD_ATTR_KEY$h,
33157
+ const config$t = {
33158
+ xmlName: XML_NODE_NAME$u,
33159
+ sdNodeOrKeyName: SD_ATTR_KEY$e,
33160
33160
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33161
- encode: encode$Y,
33161
+ encode: encode$V,
33162
33162
  attributes: validXmlAttributes$l
33163
33163
  };
33164
- const translator$18 = NodeTranslator.from(config$u);
33165
- const XML_NODE_NAME$w = "w:i";
33166
- const SD_ATTR_KEY$g = "italic";
33167
- const encode$X = (params2) => {
33164
+ const translator$1n = NodeTranslator.from(config$t);
33165
+ const XML_NODE_NAME$t = "w:i";
33166
+ const SD_ATTR_KEY$d = "italic";
33167
+ const encode$U = (params2) => {
33168
33168
  const { nodes } = params2;
33169
33169
  const node = nodes?.[0];
33170
33170
  if (!node) return void 0;
33171
33171
  return {
33172
33172
  type: "attr",
33173
- xmlName: XML_NODE_NAME$w,
33174
- sdNodeOrKeyName: SD_ATTR_KEY$g,
33173
+ xmlName: XML_NODE_NAME$t,
33174
+ sdNodeOrKeyName: SD_ATTR_KEY$d,
33175
33175
  attributes: {
33176
33176
  "w:val": node.attributes?.["w:val"] ?? null
33177
33177
  }
33178
33178
  };
33179
33179
  };
33180
- const config$t = {
33181
- xmlName: XML_NODE_NAME$w,
33182
- sdNodeOrKeyName: SD_ATTR_KEY$g,
33180
+ const config$s = {
33181
+ xmlName: XML_NODE_NAME$t,
33182
+ sdNodeOrKeyName: SD_ATTR_KEY$d,
33183
33183
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33184
- encode: encode$X
33184
+ encode: encode$U
33185
33185
  };
33186
- const translator$17 = NodeTranslator.from(config$t);
33187
- const encode$W = (attributes) => attributes?.["w:val"];
33188
- const decode$Q = (attrs) => attrs?.underline;
33186
+ const translator$1m = NodeTranslator.from(config$s);
33187
+ const encode$T = (attributes) => attributes?.["w:val"];
33188
+ const decode$N = (attrs) => attrs?.underline;
33189
33189
  const attrConfig$s = Object.freeze({
33190
33190
  xmlName: "w:val",
33191
33191
  sdName: "underline",
33192
- encode: encode$W,
33193
- decode: decode$Q
33192
+ encode: encode$T,
33193
+ decode: decode$N
33194
33194
  });
33195
- const encode$V = (attributes) => attributes?.["w:color"];
33196
- const decode$P = (attrs) => attrs?.color;
33195
+ const encode$S = (attributes) => attributes?.["w:color"];
33196
+ const decode$M = (attrs) => attrs?.color;
33197
33197
  const attrConfig$r = Object.freeze({
33198
33198
  xmlName: "w:color",
33199
33199
  sdName: "color",
33200
- encode: encode$V,
33201
- decode: decode$P
33200
+ encode: encode$S,
33201
+ decode: decode$M
33202
33202
  });
33203
- const encode$U = (attributes) => attributes?.["w:themeColor"];
33204
- const decode$O = (attrs) => attrs?.themeColor;
33203
+ const encode$R = (attributes) => attributes?.["w:themeColor"];
33204
+ const decode$L = (attrs) => attrs?.themeColor;
33205
33205
  const attrConfig$q = Object.freeze({
33206
33206
  xmlName: "w:themeColor",
33207
33207
  sdName: "themeColor",
33208
- encode: encode$U,
33209
- decode: decode$O
33208
+ encode: encode$R,
33209
+ decode: decode$L
33210
33210
  });
33211
- const encode$T = (attributes) => attributes?.["w:themeTint"];
33212
- const decode$N = (attrs) => attrs?.themeTint;
33211
+ const encode$Q = (attributes) => attributes?.["w:themeTint"];
33212
+ const decode$K = (attrs) => attrs?.themeTint;
33213
33213
  const attrConfig$p = Object.freeze({
33214
33214
  xmlName: "w:themeTint",
33215
33215
  sdName: "themeTint",
33216
- encode: encode$T,
33217
- decode: decode$N
33216
+ encode: encode$Q,
33217
+ decode: decode$K
33218
33218
  });
33219
- const encode$S = (attributes) => attributes?.["w:themeShade"];
33220
- const decode$M = (attrs) => attrs?.themeShade;
33219
+ const encode$P = (attributes) => attributes?.["w:themeShade"];
33220
+ const decode$J = (attrs) => attrs?.themeShade;
33221
33221
  const attrConfig$o = Object.freeze({
33222
33222
  xmlName: "w:themeShade",
33223
33223
  sdName: "themeShade",
33224
- encode: encode$S,
33225
- decode: decode$M
33224
+ encode: encode$P,
33225
+ decode: decode$J
33226
33226
  });
33227
33227
  const validXmlAttributes$k = [attrConfig$s, attrConfig$r, attrConfig$q, attrConfig$p, attrConfig$o];
33228
- const XML_NODE_NAME$v = "w:u";
33229
- const SD_ATTR_KEY$f = "underline";
33230
- const encode$R = (params2, encodedAttrs = {}) => {
33228
+ const XML_NODE_NAME$s = "w:u";
33229
+ const SD_ATTR_KEY$c = "underline";
33230
+ const encode$O = (params2, encodedAttrs = {}) => {
33231
33231
  const { nodes } = params2;
33232
33232
  const node = nodes?.[0];
33233
33233
  const sourceAttrs = node?.attributes || {};
@@ -33243,12 +33243,12 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33243
33243
  if (themeShade !== void 0 && themeShade !== null) attributes["w:themeShade"] = themeShade;
33244
33244
  return {
33245
33245
  type: "attr",
33246
- xmlName: XML_NODE_NAME$v,
33247
- sdNodeOrKeyName: SD_ATTR_KEY$f,
33246
+ xmlName: XML_NODE_NAME$s,
33247
+ sdNodeOrKeyName: SD_ATTR_KEY$c,
33248
33248
  attributes
33249
33249
  };
33250
33250
  };
33251
- const decode$L = (params2) => {
33251
+ const decode$I = (params2) => {
33252
33252
  const attrs = params2?.node?.attrs || {};
33253
33253
  const underlineType = attrs.underlineType ?? attrs.underline ?? null;
33254
33254
  const color = attrs.underlineColor ?? attrs.color ?? null;
@@ -33266,20 +33266,20 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33266
33266
  if (themeTint) attributes["w:themeTint"] = themeTint;
33267
33267
  if (themeShade) attributes["w:themeShade"] = themeShade;
33268
33268
  return {
33269
- name: XML_NODE_NAME$v,
33269
+ name: XML_NODE_NAME$s,
33270
33270
  attributes
33271
33271
  };
33272
33272
  };
33273
- const config$s = {
33274
- xmlName: XML_NODE_NAME$v,
33275
- sdNodeOrKeyName: SD_ATTR_KEY$f,
33273
+ const config$r = {
33274
+ xmlName: XML_NODE_NAME$s,
33275
+ sdNodeOrKeyName: SD_ATTR_KEY$c,
33276
33276
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33277
- encode: encode$R,
33278
- decode: decode$L,
33277
+ encode: encode$O,
33278
+ decode: decode$I,
33279
33279
  attributes: validXmlAttributes$k
33280
33280
  };
33281
- const translator$16 = NodeTranslator.from(config$s);
33282
- const encode$Q = (attributes) => {
33281
+ const translator$1l = NodeTranslator.from(config$r);
33282
+ const encode$N = (attributes) => {
33283
33283
  const raw = attributes?.["w:val"];
33284
33284
  if (raw === void 0 || raw === null) return void 0;
33285
33285
  if (typeof raw === "boolean") return raw;
@@ -33289,24 +33289,24 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33289
33289
  if (val === "1" || val === "true" || val === "on") return true;
33290
33290
  return void 0;
33291
33291
  };
33292
- const decode$K = (attrs) => {
33292
+ const decode$H = (attrs) => {
33293
33293
  if (attrs?.strike === false) return "0";
33294
33294
  return void 0;
33295
33295
  };
33296
33296
  const attrConfig$n = Object.freeze({
33297
33297
  xmlName: "w:val",
33298
33298
  sdName: "strike",
33299
- encode: encode$Q,
33300
- decode: decode$K
33299
+ encode: encode$N,
33300
+ decode: decode$H
33301
33301
  });
33302
33302
  const validXmlAttributes$j = [attrConfig$n];
33303
- const XML_NODE_NAME$u = "w:strike";
33304
- const SD_ATTR_KEY$e = "strike";
33305
- const encode$P = (params2, encodedAttrs = {}) => {
33303
+ const XML_NODE_NAME$r = "w:strike";
33304
+ const SD_ATTR_KEY$b = "strike";
33305
+ const encode$M = (params2, encodedAttrs = {}) => {
33306
33306
  const { nodes } = params2;
33307
33307
  const node = nodes?.[0];
33308
33308
  if (!node) return void 0;
33309
- const val = encodedAttrs?.[SD_ATTR_KEY$e];
33309
+ const val = encodedAttrs?.[SD_ATTR_KEY$b];
33310
33310
  let attributes;
33311
33311
  if (val === false) attributes = { "w:val": "0" };
33312
33312
  else if (val === true) attributes = {};
@@ -33315,55 +33315,55 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33315
33315
  else if (val === true && attributes["w:val"] === void 0) delete attributes["w:val"];
33316
33316
  return {
33317
33317
  type: "attr",
33318
- xmlName: XML_NODE_NAME$u,
33319
- sdNodeOrKeyName: SD_ATTR_KEY$e,
33318
+ xmlName: XML_NODE_NAME$r,
33319
+ sdNodeOrKeyName: SD_ATTR_KEY$b,
33320
33320
  attributes
33321
33321
  };
33322
33322
  };
33323
- const config$r = {
33324
- xmlName: XML_NODE_NAME$u,
33325
- sdNodeOrKeyName: SD_ATTR_KEY$e,
33323
+ const config$q = {
33324
+ xmlName: XML_NODE_NAME$r,
33325
+ sdNodeOrKeyName: SD_ATTR_KEY$b,
33326
33326
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33327
- encode: encode$P,
33327
+ encode: encode$M,
33328
33328
  attributes: validXmlAttributes$j
33329
33329
  };
33330
- const translator$15 = NodeTranslator.from(config$r);
33331
- const encode$O = (attributes) => attributes?.["w:val"];
33332
- const decode$J = (attrs) => attrs?.color;
33330
+ const translator$1k = NodeTranslator.from(config$q);
33331
+ const encode$L = (attributes) => attributes?.["w:val"];
33332
+ const decode$G = (attrs) => attrs?.color;
33333
33333
  const attrConfig$m = Object.freeze({
33334
33334
  xmlName: "w:val",
33335
33335
  sdName: "color",
33336
- encode: encode$O,
33337
- decode: decode$J
33336
+ encode: encode$L,
33337
+ decode: decode$G
33338
33338
  });
33339
- const encode$N = (attributes) => attributes?.["w:themeColor"];
33340
- const decode$I = (attrs) => attrs?.themeColor;
33339
+ const encode$K = (attributes) => attributes?.["w:themeColor"];
33340
+ const decode$F = (attrs) => attrs?.themeColor;
33341
33341
  const attrConfig$l = Object.freeze({
33342
33342
  xmlName: "w:themeColor",
33343
33343
  sdName: "themeColor",
33344
- encode: encode$N,
33345
- decode: decode$I
33344
+ encode: encode$K,
33345
+ decode: decode$F
33346
33346
  });
33347
- const encode$M = (attributes) => attributes?.["w:themeTint"];
33348
- const decode$H = (attrs) => attrs?.themeTint;
33347
+ const encode$J = (attributes) => attributes?.["w:themeTint"];
33348
+ const decode$E = (attrs) => attrs?.themeTint;
33349
33349
  const attrConfig$k = Object.freeze({
33350
33350
  xmlName: "w:themeTint",
33351
33351
  sdName: "themeTint",
33352
- encode: encode$M,
33353
- decode: decode$H
33352
+ encode: encode$J,
33353
+ decode: decode$E
33354
33354
  });
33355
- const encode$L = (attributes) => attributes?.["w:themeShade"];
33356
- const decode$G = (attrs) => attrs?.themeShade;
33355
+ const encode$I = (attributes) => attributes?.["w:themeShade"];
33356
+ const decode$D = (attrs) => attrs?.themeShade;
33357
33357
  const attrConfig$j = Object.freeze({
33358
33358
  xmlName: "w:themeShade",
33359
33359
  sdName: "themeShade",
33360
- encode: encode$L,
33361
- decode: decode$G
33360
+ encode: encode$I,
33361
+ decode: decode$D
33362
33362
  });
33363
33363
  const validXmlAttributes$i = [attrConfig$m, attrConfig$l, attrConfig$k, attrConfig$j];
33364
- const XML_NODE_NAME$t = "w:color";
33365
- const SD_ATTR_KEY$d = "color";
33366
- const encode$K = (params2, encodedAttrs = {}) => {
33364
+ const XML_NODE_NAME$q = "w:color";
33365
+ const SD_ATTR_KEY$a = "color";
33366
+ const encode$H = (params2, encodedAttrs = {}) => {
33367
33367
  const { nodes } = params2;
33368
33368
  const node = nodes?.[0];
33369
33369
  const sourceAttrs = node?.attributes || {};
@@ -33378,63 +33378,63 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33378
33378
  if (themeShade !== void 0 && themeShade !== null) attributes["w:themeShade"] = themeShade;
33379
33379
  return {
33380
33380
  type: "attr",
33381
- xmlName: XML_NODE_NAME$t,
33382
- sdNodeOrKeyName: SD_ATTR_KEY$d,
33381
+ xmlName: XML_NODE_NAME$q,
33382
+ sdNodeOrKeyName: SD_ATTR_KEY$a,
33383
33383
  attributes
33384
33384
  };
33385
33385
  };
33386
- const config$q = {
33387
- xmlName: XML_NODE_NAME$t,
33388
- sdNodeOrKeyName: SD_ATTR_KEY$d,
33386
+ const config$p = {
33387
+ xmlName: XML_NODE_NAME$q,
33388
+ sdNodeOrKeyName: SD_ATTR_KEY$a,
33389
33389
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33390
- encode: encode$K,
33390
+ encode: encode$H,
33391
33391
  attributes: validXmlAttributes$i
33392
33392
  };
33393
- const translator$14 = NodeTranslator.from(config$q);
33394
- const encode$J = (attributes) => attributes?.["w:eastAsia"];
33395
- const decode$F = (attrs) => attrs?.eastAsia;
33393
+ const translator$1j = NodeTranslator.from(config$p);
33394
+ const encode$G = (attributes) => attributes?.["w:eastAsia"];
33395
+ const decode$C = (attrs) => attrs?.eastAsia;
33396
33396
  const attrConfig$i = Object.freeze({
33397
33397
  xmlName: "w:eastAsia",
33398
33398
  sdName: "eastAsia",
33399
- encode: encode$J,
33400
- decode: decode$F
33399
+ encode: encode$G,
33400
+ decode: decode$C
33401
33401
  });
33402
- const encode$I = (attributes) => attributes?.["w:ascii"];
33403
- const decode$E = (attrs) => attrs?.ascii;
33402
+ const encode$F = (attributes) => attributes?.["w:ascii"];
33403
+ const decode$B = (attrs) => attrs?.ascii;
33404
33404
  const attrConfig$h = Object.freeze({
33405
33405
  xmlName: "w:ascii",
33406
33406
  sdName: "ascii",
33407
- encode: encode$I,
33408
- decode: decode$E
33407
+ encode: encode$F,
33408
+ decode: decode$B
33409
33409
  });
33410
- const encode$H = (attributes) => attributes?.["w:hAnsi"];
33411
- const decode$D = (attrs) => attrs?.hAnsi;
33410
+ const encode$E = (attributes) => attributes?.["w:hAnsi"];
33411
+ const decode$A = (attrs) => attrs?.hAnsi;
33412
33412
  const attrConfig$g = Object.freeze({
33413
33413
  xmlName: "w:hAnsi",
33414
33414
  sdName: "hAnsi",
33415
- encode: encode$H,
33416
- decode: decode$D
33415
+ encode: encode$E,
33416
+ decode: decode$A
33417
33417
  });
33418
- const encode$G = (attributes) => attributes?.["w:cs"];
33419
- const decode$C = (attrs) => attrs?.cs;
33418
+ const encode$D = (attributes) => attributes?.["w:cs"];
33419
+ const decode$z = (attrs) => attrs?.cs;
33420
33420
  const attrConfig$f = Object.freeze({
33421
33421
  xmlName: "w:cs",
33422
33422
  sdName: "cs",
33423
- encode: encode$G,
33424
- decode: decode$C
33423
+ encode: encode$D,
33424
+ decode: decode$z
33425
33425
  });
33426
- const encode$F = (attributes) => attributes?.["w:val"];
33427
- const decode$B = (attrs) => attrs?.value;
33426
+ const encode$C = (attributes) => attributes?.["w:val"];
33427
+ const decode$y = (attrs) => attrs?.value;
33428
33428
  const attrConfig$e = Object.freeze({
33429
33429
  xmlName: "w:val",
33430
33430
  sdName: "value",
33431
- encode: encode$F,
33432
- decode: decode$B
33431
+ encode: encode$C,
33432
+ decode: decode$y
33433
33433
  });
33434
33434
  const validXmlAttributes$h = [attrConfig$i, attrConfig$h, attrConfig$g, attrConfig$f, attrConfig$e];
33435
- const XML_NODE_NAME$s = "w:rFonts";
33436
- const SD_ATTR_KEY$c = "fontFamily";
33437
- const encode$E = (params2, encodedAttrs = {}) => {
33435
+ const XML_NODE_NAME$p = "w:rFonts";
33436
+ const SD_ATTR_KEY$9 = "fontFamily";
33437
+ const encode$B = (params2, encodedAttrs = {}) => {
33438
33438
  const { nodes } = params2;
33439
33439
  const node = nodes?.[0];
33440
33440
  const sourceAttrs = node?.attributes || {};
@@ -33458,111 +33458,119 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33458
33458
  attributes["w:val"] = attributes["w:eastAsia"];
33459
33459
  }
33460
33460
  if (attributes["w:val"] === void 0) delete attributes["w:val"];
33461
+ if (params2.inlineDocumentFonts) {
33462
+ const font = attributes["w:ascii"];
33463
+ if (font) {
33464
+ if (!params2.inlineDocumentFonts.includes(font)) {
33465
+ params2.inlineDocumentFonts.push(font);
33466
+ }
33467
+ }
33468
+ }
33461
33469
  return {
33462
33470
  type: "attr",
33463
- xmlName: XML_NODE_NAME$s,
33464
- sdNodeOrKeyName: SD_ATTR_KEY$c,
33471
+ xmlName: XML_NODE_NAME$p,
33472
+ sdNodeOrKeyName: SD_ATTR_KEY$9,
33465
33473
  attributes
33466
33474
  };
33467
33475
  };
33468
- const config$p = {
33469
- xmlName: XML_NODE_NAME$s,
33470
- sdNodeOrKeyName: SD_ATTR_KEY$c,
33476
+ const config$o = {
33477
+ xmlName: XML_NODE_NAME$p,
33478
+ sdNodeOrKeyName: SD_ATTR_KEY$9,
33471
33479
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33472
- encode: encode$E,
33480
+ encode: encode$B,
33473
33481
  attributes: validXmlAttributes$h
33474
33482
  };
33475
- const translator$13 = NodeTranslator.from(config$p);
33476
- const encode$D = (attributes) => attributes?.["w:val"];
33477
- const decode$A = (attrs) => attrs?.styleId;
33483
+ const translator$1i = NodeTranslator.from(config$o);
33484
+ const encode$A = (attributes) => attributes?.["w:val"];
33485
+ const decode$x = (attrs) => attrs?.styleId;
33478
33486
  const attrConfig$d = Object.freeze({
33479
33487
  xmlName: "w:val",
33480
33488
  sdName: "styleId",
33481
- encode: encode$D,
33482
- decode: decode$A
33489
+ encode: encode$A,
33490
+ decode: decode$x
33483
33491
  });
33484
33492
  const validXmlAttributes$g = [attrConfig$d];
33485
- const XML_NODE_NAME$r = "w:rStyle";
33486
- const SD_ATTR_KEY$b = "styleId";
33487
- const encode$C = (params2, encodedAttrs = {}) => {
33493
+ const XML_NODE_NAME$o = "w:rStyle";
33494
+ const SD_ATTR_KEY$8 = "styleId";
33495
+ const encode$z = (params2, encodedAttrs = {}) => {
33488
33496
  const { nodes } = params2;
33489
33497
  const node = nodes?.[0];
33490
33498
  const value = encodedAttrs.styleId ?? node?.attributes?.["w:val"];
33491
33499
  return {
33492
33500
  type: "attr",
33493
- xmlName: XML_NODE_NAME$r,
33494
- sdNodeOrKeyName: SD_ATTR_KEY$b,
33501
+ xmlName: XML_NODE_NAME$o,
33502
+ sdNodeOrKeyName: SD_ATTR_KEY$8,
33495
33503
  attributes: { "w:val": value ?? null }
33496
33504
  };
33497
33505
  };
33498
- const config$o = {
33499
- xmlName: XML_NODE_NAME$r,
33500
- sdNodeOrKeyName: SD_ATTR_KEY$b,
33506
+ const config$n = {
33507
+ xmlName: XML_NODE_NAME$o,
33508
+ sdNodeOrKeyName: SD_ATTR_KEY$8,
33501
33509
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33502
- encode: encode$C,
33510
+ encode: encode$z,
33503
33511
  attributes: validXmlAttributes$g
33504
33512
  };
33505
- const translator$12 = NodeTranslator.from(config$o);
33506
- const encode$B = (attributes) => attributes?.["w:val"];
33507
- const decode$z = (attrs) => attrs?.fontSize;
33513
+ const translator$1h = NodeTranslator.from(config$n);
33514
+ const encode$y = (attributes) => attributes?.["w:val"];
33515
+ const decode$w = (attrs) => attrs?.fontSize;
33508
33516
  const attrConfig$c = Object.freeze({
33509
33517
  xmlName: "w:val",
33510
33518
  sdName: "fontSize",
33511
- encode: encode$B,
33512
- decode: decode$z
33519
+ encode: encode$y,
33520
+ decode: decode$w
33513
33521
  });
33514
33522
  const validXmlAttributes$f = [attrConfig$c];
33515
- const XML_NODE_NAME$q = "w:sz";
33516
- const SD_ATTR_KEY$a = "fontSize";
33517
- const encode$A = (params2, encodedAttrs = {}) => {
33523
+ const XML_NODE_NAME$n = "w:sz";
33524
+ const SD_ATTR_KEY$7 = "fontSize";
33525
+ const encode$x = (params2, encodedAttrs = {}) => {
33518
33526
  const { nodes } = params2;
33519
33527
  const node = nodes?.[0];
33520
33528
  const value = encodedAttrs.fontSize ?? node?.attributes?.["w:val"];
33521
33529
  return {
33522
33530
  type: "attr",
33523
- xmlName: XML_NODE_NAME$q,
33524
- sdNodeOrKeyName: SD_ATTR_KEY$a,
33531
+ xmlName: XML_NODE_NAME$n,
33532
+ sdNodeOrKeyName: SD_ATTR_KEY$7,
33525
33533
  attributes: { "w:val": value ?? null }
33526
33534
  };
33527
33535
  };
33528
- const config$n = {
33529
- xmlName: XML_NODE_NAME$q,
33530
- sdNodeOrKeyName: SD_ATTR_KEY$a,
33536
+ const config$m = {
33537
+ xmlName: XML_NODE_NAME$n,
33538
+ sdNodeOrKeyName: SD_ATTR_KEY$7,
33531
33539
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33532
- encode: encode$A,
33540
+ encode: encode$x,
33533
33541
  attributes: validXmlAttributes$f
33534
33542
  };
33535
- const translator$11 = NodeTranslator.from(config$n);
33536
- const encode$z = (attributes) => attributes?.["w:val"];
33537
- const decode$y = (attrs) => attrs?.fontSizeCs;
33543
+ const translator$1g = NodeTranslator.from(config$m);
33544
+ const encode$w = (attributes) => attributes?.["w:val"];
33545
+ const decode$v = (attrs) => attrs?.fontSizeCs;
33538
33546
  const attrConfig$b = Object.freeze({
33539
33547
  xmlName: "w:val",
33540
33548
  sdName: "fontSizeCs",
33541
- encode: encode$z,
33542
- decode: decode$y
33549
+ encode: encode$w,
33550
+ decode: decode$v
33543
33551
  });
33544
33552
  const validXmlAttributes$e = [attrConfig$b];
33545
- const XML_NODE_NAME$p = "w:szCs";
33546
- const SD_ATTR_KEY$9 = "fontSizeCs";
33547
- const encode$y = (params2, encodedAttrs = {}) => {
33553
+ const XML_NODE_NAME$m = "w:szCs";
33554
+ const SD_ATTR_KEY$6 = "fontSizeCs";
33555
+ const encode$v = (params2, encodedAttrs = {}) => {
33548
33556
  const { nodes } = params2;
33549
33557
  const node = nodes?.[0];
33550
33558
  const value = encodedAttrs.fontSizeCs ?? node?.attributes?.["w:val"];
33551
33559
  return {
33552
33560
  type: "attr",
33553
- xmlName: XML_NODE_NAME$p,
33554
- sdNodeOrKeyName: SD_ATTR_KEY$9,
33561
+ xmlName: XML_NODE_NAME$m,
33562
+ sdNodeOrKeyName: SD_ATTR_KEY$6,
33555
33563
  attributes: { "w:val": value ?? null }
33556
33564
  };
33557
33565
  };
33558
- const config$m = {
33559
- xmlName: XML_NODE_NAME$p,
33560
- sdNodeOrKeyName: SD_ATTR_KEY$9,
33566
+ const config$l = {
33567
+ xmlName: XML_NODE_NAME$m,
33568
+ sdNodeOrKeyName: SD_ATTR_KEY$6,
33561
33569
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33562
- encode: encode$y,
33570
+ encode: encode$v,
33563
33571
  attributes: validXmlAttributes$e
33564
33572
  };
33565
- const translator$10 = NodeTranslator.from(config$m);
33573
+ const translator$1f = NodeTranslator.from(config$l);
33566
33574
  const generateV2HandlerEntity = (handlerName, translator2) => ({
33567
33575
  handlerName,
33568
33576
  handler: (params2) => {
@@ -33586,7 +33594,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33586
33594
  xmlName,
33587
33595
  sdNodeOrKeyName: sdName,
33588
33596
  encode: ({ nodes }) => {
33589
- return transformEncode(nodes[0].attributes[attrName]) ?? void 0;
33597
+ return transformEncode(nodes[0]?.attributes?.[attrName]) ?? void 0;
33590
33598
  },
33591
33599
  decode: ({ node }) => {
33592
33600
  const value = node.attrs?.[sdName] != null ? transformDecode(node.attrs[sdName]) : void 0;
@@ -33618,8 +33626,32 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33618
33626
  xmlName,
33619
33627
  sdNodeOrKeyName: sdName,
33620
33628
  attributes: [
33621
- createAttributeHandler("w:val"),
33622
- createAttributeHandler("w:color"),
33629
+ createAttributeHandler(
33630
+ "w:val",
33631
+ "val",
33632
+ (v2) => v2 === "nil" ? "none" : v2,
33633
+ (v2) => v2 === "none" ? "nil" : v2
33634
+ ),
33635
+ createAttributeHandler(
33636
+ "w:color",
33637
+ "color",
33638
+ (v2) => {
33639
+ if (v2 === "auto") {
33640
+ return null;
33641
+ } else if (v2) {
33642
+ return `#${v2}`;
33643
+ } else {
33644
+ return void 0;
33645
+ }
33646
+ },
33647
+ (v2) => {
33648
+ if (v2) {
33649
+ return v2.replace("#", "");
33650
+ } else {
33651
+ return void 0;
33652
+ }
33653
+ }
33654
+ ),
33623
33655
  createAttributeHandler("w:themeColor"),
33624
33656
  createAttributeHandler("w:themeTint"),
33625
33657
  createAttributeHandler("w:themeShade"),
@@ -33685,6 +33717,37 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33685
33717
  });
33686
33718
  return elements;
33687
33719
  }
33720
+ function createNestedPropertiesTranslator(xmlName, sdName, propertyTranslators2, defaultEncodedAttrs = {}) {
33721
+ const propertyTranslatorsByXmlName = {};
33722
+ const propertyTranslatorsBySdName = {};
33723
+ propertyTranslators2.forEach((translator2) => {
33724
+ propertyTranslatorsByXmlName[translator2.xmlName] = translator2;
33725
+ propertyTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
33726
+ });
33727
+ return {
33728
+ xmlName,
33729
+ sdNodeOrKeyName: sdName,
33730
+ type: NodeTranslator.translatorTypes.NODE,
33731
+ attributes: [],
33732
+ encode: (params2) => {
33733
+ const { nodes } = params2;
33734
+ const node = nodes[0];
33735
+ const attributes = { ...defaultEncodedAttrs, ...encodeProperties(node, propertyTranslatorsByXmlName) };
33736
+ return Object.keys(attributes).length > 0 ? attributes : void 0;
33737
+ },
33738
+ decode: (params2) => {
33739
+ const currentValue = params2.node.attrs?.[sdName];
33740
+ const elements = decodeProperties(propertyTranslatorsBySdName, currentValue);
33741
+ const newNode = {
33742
+ name: xmlName,
33743
+ type: "element",
33744
+ attributes: {},
33745
+ elements
33746
+ };
33747
+ return newNode;
33748
+ }
33749
+ };
33750
+ }
33688
33751
  const parseBoolean = (value) => value != null ? ["1", "true"].includes(value) : void 0;
33689
33752
  const booleanToString = (value) => value != null ? value ? "1" : "0" : void 0;
33690
33753
  const parseInteger = (value) => {
@@ -33696,9 +33759,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33696
33759
  const intValue = parseInteger(value);
33697
33760
  return intValue != void 0 ? String(intValue) : void 0;
33698
33761
  };
33699
- const XML_NODE_NAME$o = "w:caps";
33700
- const SD_ATTR_KEY$8 = "textTransform";
33701
- const encode$x = (params2, encodedAttrs = {}) => {
33762
+ const XML_NODE_NAME$l = "w:caps";
33763
+ const SD_ATTR_KEY$5 = "textTransform";
33764
+ const encode$u = (params2, encodedAttrs = {}) => {
33702
33765
  const { nodes } = params2;
33703
33766
  const node = nodes[0];
33704
33767
  if (!node) return void 0;
@@ -33710,31 +33773,31 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33710
33773
  }
33711
33774
  return {
33712
33775
  type: "attr",
33713
- xmlName: XML_NODE_NAME$o,
33714
- sdNodeOrKeyName: SD_ATTR_KEY$8,
33715
- attributes: { [SD_ATTR_KEY$8]: result }
33776
+ xmlName: XML_NODE_NAME$l,
33777
+ sdNodeOrKeyName: SD_ATTR_KEY$5,
33778
+ attributes: { [SD_ATTR_KEY$5]: result }
33716
33779
  };
33717
33780
  };
33718
- const config$l = {
33719
- xmlName: XML_NODE_NAME$o,
33720
- sdNodeOrKeyName: SD_ATTR_KEY$8,
33781
+ const config$k = {
33782
+ xmlName: XML_NODE_NAME$l,
33783
+ sdNodeOrKeyName: SD_ATTR_KEY$5,
33721
33784
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33722
- encode: encode$x,
33785
+ encode: encode$u,
33723
33786
  attributes: [createAttributeHandler("w:val")]
33724
33787
  };
33725
- const translator$$ = NodeTranslator.from(config$l);
33788
+ const translator$1e = NodeTranslator.from(config$k);
33726
33789
  const runPropertyTranslators = Object.freeze({
33727
- "w:b": translator$18,
33728
- "w:i": translator$17,
33729
- "w:u": translator$16,
33730
- "w:strike": translator$15,
33731
- "w:color": translator$14,
33732
- "w:highlight": translator$1b,
33733
- "w:rFonts": translator$13,
33734
- "w:rStyle": translator$12,
33735
- "w:sz": translator$11,
33736
- "w:szCs": translator$10,
33737
- "w:caps": translator$$
33790
+ "w:b": translator$1n,
33791
+ "w:i": translator$1m,
33792
+ "w:u": translator$1l,
33793
+ "w:strike": translator$1k,
33794
+ "w:color": translator$1j,
33795
+ "w:highlight": translator$1q,
33796
+ "w:rFonts": translator$1i,
33797
+ "w:rStyle": translator$1h,
33798
+ "w:sz": translator$1g,
33799
+ "w:szCs": translator$1f,
33800
+ "w:caps": translator$1e
33738
33801
  });
33739
33802
  const rawRunPropertyXmlNames = Object.freeze(["w:lang", "w:shd"]);
33740
33803
  const RAW_CHILD_NAME_SET = new Set(rawRunPropertyXmlNames);
@@ -33748,9 +33811,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33748
33811
  attributes: { ...candidate.attributes || {} }
33749
33812
  };
33750
33813
  };
33751
- const XML_NODE_NAME$n = "w:rPr";
33752
- const SD_ATTR_KEY$7 = "runProperties";
33753
- const encode$w = (params2) => {
33814
+ const XML_NODE_NAME$k = "w:rPr";
33815
+ const SD_ATTR_KEY$4 = "runProperties";
33816
+ const encode$t = (params2) => {
33754
33817
  const { nodes } = params2;
33755
33818
  const node = nodes?.[0] || {};
33756
33819
  const contents = Array.isArray(node.elements) ? node.elements : [];
@@ -33784,16 +33847,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
33784
33847
  attributes: runPropsArray
33785
33848
  };
33786
33849
  };
33787
- const config$k = {
33788
- xmlName: XML_NODE_NAME$n,
33789
- sdNodeOrKeyName: SD_ATTR_KEY$7,
33850
+ const config$j = {
33851
+ xmlName: XML_NODE_NAME$k,
33852
+ sdNodeOrKeyName: SD_ATTR_KEY$4,
33790
33853
  type: NodeTranslator.translatorTypes.ATTRIBUTE,
33791
- encode: encode$w
33854
+ encode: encode$t
33792
33855
  };
33793
- const translator$_ = NodeTranslator.from(config$k);
33856
+ const translator$1d = NodeTranslator.from(config$j);
33794
33857
  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;
33795
33858
  const containsEastAsianCharacters = (text) => EAST_ASIAN_CHARACTER_REGEX.test(text);
33796
- const collectRunProperties = (params2, rPrNode, translator2 = translator$_) => {
33859
+ const collectRunProperties = (params2, rPrNode, translator2 = translator$1d) => {
33797
33860
  if (!rPrNode) return { entries: [], hadRPr: false, styleChangeMarks: [] };
33798
33861
  const result = translator2.encode({ ...params2, nodes: [rPrNode] }) || {};
33799
33862
  let entries = [];
@@ -34266,7 +34329,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34266
34329
  }
34267
34330
  return runs;
34268
34331
  };
34269
- const XML_NODE_NAME$m = "w:hyperlink";
34332
+ const XML_NODE_NAME$j = "w:hyperlink";
34270
34333
  const SD_NODE_NAME$e = "link";
34271
34334
  const _createAttributeHandler = (xmlName, sdName) => ({
34272
34335
  xmlName,
@@ -34287,7 +34350,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34287
34350
  _createAttributeHandler("r:id", "rId"),
34288
34351
  _createAttributeHandler("w:tgtFrame", "target")
34289
34352
  ];
34290
- const encode$v = (params2, encodedAttrs) => {
34353
+ const encode$s = (params2, encodedAttrs) => {
34291
34354
  const { nodes, docx, nodeListHandler } = params2;
34292
34355
  const node = nodes[0];
34293
34356
  let href = _resolveHref(docx, encodedAttrs);
@@ -34321,7 +34384,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34321
34384
  }
34322
34385
  return href;
34323
34386
  };
34324
- function decode$x(params2) {
34387
+ function decode$u(params2) {
34325
34388
  const { hyperlinkGroup = [params2.node] } = params2.extraParams || {};
34326
34389
  const node = hyperlinkGroup[0];
34327
34390
  const linkMark = node.marks.find((m2) => m2.type === "link");
@@ -34370,55 +34433,55 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34370
34433
  });
34371
34434
  return id;
34372
34435
  }
34373
- const config$j = {
34374
- xmlName: XML_NODE_NAME$m,
34436
+ const config$i = {
34437
+ xmlName: XML_NODE_NAME$j,
34375
34438
  sdNodeOrKeyName: SD_NODE_NAME$e,
34376
34439
  type: NodeTranslator.translatorTypes.NODE,
34377
- encode: encode$v,
34378
- decode: decode$x,
34440
+ encode: encode$s,
34441
+ decode: decode$u,
34379
34442
  attributes: validXmlAttributes$d
34380
34443
  };
34381
- const translator$Z = NodeTranslator.from(config$j);
34382
- const encode$u = (attributes) => {
34444
+ const translator$1c = NodeTranslator.from(config$i);
34445
+ const encode$r = (attributes) => {
34383
34446
  return attributes["w:rsidR"];
34384
34447
  };
34385
- const decode$w = (attrs) => {
34448
+ const decode$t = (attrs) => {
34386
34449
  return attrs.rsidR;
34387
34450
  };
34388
34451
  const attrConfig$a = Object.freeze({
34389
34452
  xmlName: "w:rsidR",
34390
34453
  sdName: "rsidR",
34391
- encode: encode$u,
34392
- decode: decode$w
34454
+ encode: encode$r,
34455
+ decode: decode$t
34393
34456
  });
34394
- const encode$t = (attributes) => {
34457
+ const encode$q = (attributes) => {
34395
34458
  return attributes["w:rsidRPr"];
34396
34459
  };
34397
- const decode$v = (attrs) => {
34460
+ const decode$s = (attrs) => {
34398
34461
  return attrs.rsidRPr;
34399
34462
  };
34400
34463
  const attrConfig$9 = Object.freeze({
34401
34464
  xmlName: "w:rsidRPr",
34402
34465
  sdName: "rsidRPr",
34403
- encode: encode$t,
34404
- decode: decode$v
34466
+ encode: encode$q,
34467
+ decode: decode$s
34405
34468
  });
34406
- const encode$s = (attributes) => {
34469
+ const encode$p = (attributes) => {
34407
34470
  return attributes["w:rsidDel"];
34408
34471
  };
34409
- const decode$u = (attrs) => {
34472
+ const decode$r = (attrs) => {
34410
34473
  return attrs.rsidDel;
34411
34474
  };
34412
34475
  const attrConfig$8 = Object.freeze({
34413
34476
  xmlName: "w:rsidDel",
34414
34477
  sdName: "rsidDel",
34415
- encode: encode$s,
34416
- decode: decode$u
34478
+ encode: encode$p,
34479
+ decode: decode$r
34417
34480
  });
34418
34481
  const validXmlAttributes$c = [attrConfig$a, attrConfig$9, attrConfig$8];
34419
- const XML_NODE_NAME$l = "w:r";
34482
+ const XML_NODE_NAME$i = "w:r";
34420
34483
  const SD_KEY_NAME = "run";
34421
- const encode$r = (params2, encodedAttrs = {}) => {
34484
+ const encode$o = (params2, encodedAttrs = {}) => {
34422
34485
  const { nodes = [], nodeListHandler } = params2 || {};
34423
34486
  const runNode = nodes[0];
34424
34487
  if (!runNode) return void 0;
@@ -34466,7 +34529,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34466
34529
  }
34467
34530
  return runNodeResult;
34468
34531
  };
34469
- const decode$t = (params2, decodedAttrs = {}) => {
34532
+ const decode$q = (params2, decodedAttrs = {}) => {
34470
34533
  const { node } = params2 || {};
34471
34534
  if (!node) return void 0;
34472
34535
  const isLinkNode = node.marks?.some((m2) => m2.type === "link");
@@ -34475,7 +34538,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34475
34538
  ...params2.extraParams,
34476
34539
  linkProcessed: true
34477
34540
  };
34478
- return translator$Z.decode({ ...params2, extraParams });
34541
+ return translator$1c.decode({ ...params2, extraParams });
34479
34542
  }
34480
34543
  const { runNode: runNodeForExport, trackingMarksByType } = prepareRunTrackingContext(node);
34481
34544
  const runAttrs = runNodeForExport.attrs || {};
@@ -34531,7 +34594,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34531
34594
  runs.push(trackedClone);
34532
34595
  return;
34533
34596
  }
34534
- const runWrapper = { name: XML_NODE_NAME$l, elements: [] };
34597
+ const runWrapper = { name: XML_NODE_NAME$i, elements: [] };
34535
34598
  applyBaseRunProps(runWrapper);
34536
34599
  if (!Array.isArray(runWrapper.elements)) runWrapper.elements = [];
34537
34600
  runWrapper.elements.push(cloneXmlNode(child));
@@ -34539,7 +34602,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34539
34602
  });
34540
34603
  const trackedRuns = ensureTrackedWrapper(runs, trackingMarksByType);
34541
34604
  if (!trackedRuns.length) {
34542
- const emptyRun = { name: XML_NODE_NAME$l, elements: [] };
34605
+ const emptyRun = { name: XML_NODE_NAME$i, elements: [] };
34543
34606
  applyBaseRunProps(emptyRun);
34544
34607
  trackedRuns.push(emptyRun);
34545
34608
  }
@@ -34553,15 +34616,15 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34553
34616
  }
34554
34617
  return trackedRuns;
34555
34618
  };
34556
- const config$i = {
34557
- xmlName: XML_NODE_NAME$l,
34619
+ const config$h = {
34620
+ xmlName: XML_NODE_NAME$i,
34558
34621
  sdNodeOrKeyName: SD_KEY_NAME,
34559
34622
  type: NodeTranslator.translatorTypes.NODE,
34560
- encode: encode$r,
34561
- decode: decode$t,
34623
+ encode: encode$o,
34624
+ decode: decode$q,
34562
34625
  attributes: validXmlAttributes$c
34563
34626
  };
34564
- const translator$Y = NodeTranslator.from(config$i);
34627
+ const translator$1b = NodeTranslator.from(config$h);
34565
34628
  function preProcessVerticalMergeCells(table, { editorSchema }) {
34566
34629
  if (!table || !Array.isArray(table.content)) {
34567
34630
  return table;
@@ -34602,13 +34665,13 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34602
34665
  }
34603
34666
  return table;
34604
34667
  }
34605
- const translator$X = NodeTranslator.from({
34668
+ const translator$1a = NodeTranslator.from({
34606
34669
  xmlName: "w:cantSplit",
34607
34670
  sdNodeOrKeyName: "cantSplit",
34608
34671
  encode: ({ nodes }) => ["1", "true"].includes(nodes[0].attributes?.["w:val"] ?? "1"),
34609
34672
  decode: ({ node }) => node.attrs?.cantSplit ? { attributes: {} } : void 0
34610
34673
  });
34611
- const translator$W = NodeTranslator.from({
34674
+ const translator$19 = NodeTranslator.from({
34612
34675
  xmlName: "w:cnfStyle",
34613
34676
  sdNodeOrKeyName: "cnfStyle",
34614
34677
  attributes: [
@@ -34634,8 +34697,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34634
34697
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
34635
34698
  }
34636
34699
  });
34637
- const translator$V = NodeTranslator.from(createSingleAttrPropertyHandler("w:divId"));
34638
- const translator$U = NodeTranslator.from(
34700
+ const translator$18 = NodeTranslator.from(createSingleAttrPropertyHandler("w:divId"));
34701
+ const translator$17 = NodeTranslator.from(
34639
34702
  createSingleAttrPropertyHandler(
34640
34703
  "w:gridAfter",
34641
34704
  null,
@@ -34644,7 +34707,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34644
34707
  (v2) => integerToString(v2)
34645
34708
  )
34646
34709
  );
34647
- const translator$T = NodeTranslator.from(
34710
+ const translator$16 = NodeTranslator.from(
34648
34711
  createSingleAttrPropertyHandler(
34649
34712
  "w:gridBefore",
34650
34713
  null,
@@ -34653,21 +34716,21 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34653
34716
  (v2) => integerToString(v2)
34654
34717
  )
34655
34718
  );
34656
- const translator$S = NodeTranslator.from({
34719
+ const translator$15 = NodeTranslator.from({
34657
34720
  xmlName: "w:hidden",
34658
34721
  sdNodeOrKeyName: "hidden",
34659
34722
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
34660
34723
  decode: ({ node }) => node.attrs.hidden ? { attributes: {} } : void 0
34661
34724
  });
34662
- const translator$R = NodeTranslator.from(createSingleAttrPropertyHandler("w:jc", "justification"));
34663
- const translator$Q = NodeTranslator.from(createMeasurementPropertyHandler("w:tblCellSpacing", "tableCellSpacing"));
34664
- const translator$P = NodeTranslator.from({
34725
+ const translator$14 = NodeTranslator.from(createSingleAttrPropertyHandler("w:jc", "justification"));
34726
+ const translator$13 = NodeTranslator.from(createMeasurementPropertyHandler("w:tblCellSpacing", "tableCellSpacing"));
34727
+ const translator$12 = NodeTranslator.from({
34665
34728
  xmlName: "w:tblHeader",
34666
34729
  sdNodeOrKeyName: "repeatHeader",
34667
34730
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
34668
34731
  decode: ({ node }) => node.attrs.repeatHeader ? { attributes: {} } : void 0
34669
34732
  });
34670
- const translator$O = NodeTranslator.from({
34733
+ const translator$11 = NodeTranslator.from({
34671
34734
  xmlName: "w:trHeight",
34672
34735
  sdNodeOrKeyName: "rowHeight",
34673
34736
  encode: ({ nodes }) => {
@@ -34694,84 +34757,43 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34694
34757
  return Object.keys(heightAttrs).length > 0 ? { attributes: heightAttrs } : void 0;
34695
34758
  }
34696
34759
  });
34697
- const translator$N = NodeTranslator.from(createMeasurementPropertyHandler("w:wAfter"));
34698
- const translator$M = NodeTranslator.from(createMeasurementPropertyHandler("w:wBefore"));
34699
- const XML_NODE_NAME$k = "w:trPr";
34700
- const SD_ATTR_KEY$6 = "tableRowProperties";
34701
- const encode$q = (params2) => {
34702
- const { nodes } = params2;
34703
- const node = nodes[0];
34704
- let attributes = {
34760
+ const translator$10 = NodeTranslator.from(createMeasurementPropertyHandler("w:wAfter"));
34761
+ const translator$$ = NodeTranslator.from(createMeasurementPropertyHandler("w:wBefore"));
34762
+ const propertyTranslators$6 = [
34763
+ translator$1a,
34764
+ translator$19,
34765
+ translator$18,
34766
+ translator$17,
34767
+ translator$16,
34768
+ translator$15,
34769
+ translator$14,
34770
+ translator$13,
34771
+ translator$12,
34772
+ translator$11,
34773
+ translator$10,
34774
+ translator$$
34775
+ ];
34776
+ const translator$_ = NodeTranslator.from(
34777
+ createNestedPropertiesTranslator("w:trPr", "tableRowProperties", propertyTranslators$6, {
34705
34778
  cantSplit: false,
34706
34779
  hidden: false,
34707
34780
  repeatHeader: false
34708
- };
34709
- attributes = {
34710
- ...attributes,
34711
- ...encodeProperties(node, propertyTranslatorsByXmlName$2)
34712
- };
34713
- return {
34714
- type: NodeTranslator.translatorTypes.ATTRIBUTE,
34715
- xmlName: XML_NODE_NAME$k,
34716
- sdNodeOrKeyName: SD_ATTR_KEY$6,
34717
- attributes
34718
- };
34719
- };
34720
- const decode$s = (params2) => {
34721
- const { tableRowProperties = {} } = params2.node.attrs || {};
34722
- const elements = decodeProperties(propertyTranslatorsBySdName$2, tableRowProperties);
34723
- const newNode = {
34724
- name: "w:trPr",
34725
- type: "element",
34726
- attributes: {},
34727
- elements
34728
- };
34729
- return newNode;
34730
- };
34731
- const propertyTranslators$3 = [
34732
- translator$X,
34733
- translator$W,
34734
- translator$V,
34735
- translator$U,
34736
- translator$T,
34737
- translator$S,
34738
- translator$R,
34739
- translator$Q,
34740
- translator$P,
34741
- translator$O,
34742
- translator$N,
34743
- translator$M
34744
- ];
34745
- const propertyTranslatorsByXmlName$2 = {};
34746
- propertyTranslators$3.forEach((translator2) => {
34747
- propertyTranslatorsByXmlName$2[translator2.xmlName] = translator2;
34748
- });
34749
- const propertyTranslatorsBySdName$2 = {};
34750
- propertyTranslators$3.forEach((translator2) => {
34751
- propertyTranslatorsBySdName$2[translator2.sdNodeOrKeyName] = translator2;
34752
- });
34753
- const config$h = {
34754
- xmlName: XML_NODE_NAME$k,
34755
- sdNodeOrKeyName: SD_ATTR_KEY$6,
34756
- type: NodeTranslator.translatorTypes.ATTRIBUTE,
34757
- encode: encode$q,
34758
- decode: decode$s
34759
- };
34760
- const translator$L = NodeTranslator.from(config$h);
34761
- const XML_NODE_NAME$j = "w:tr";
34781
+ })
34782
+ );
34783
+ const XML_NODE_NAME$h = "w:tr";
34762
34784
  const SD_NODE_NAME$d = "tableRow";
34763
34785
  const validXmlAttributes$b = ["w:rsidDel", "w:rsidR", "w:rsidRPr", "w:rsidTr", "w14:paraId", "w14:textId"].map(
34764
34786
  (xmlName) => createAttributeHandler(xmlName)
34765
34787
  );
34766
- const encode$p = (params2, encodedAttrs) => {
34788
+ const encode$n = (params2, encodedAttrs) => {
34767
34789
  const { row } = params2.extraParams;
34768
34790
  let tableRowProperties = {};
34769
34791
  const tPr = row.elements.find((el) => el.name === "w:trPr");
34770
34792
  if (tPr) {
34771
- ({ attributes: tableRowProperties } = translator$L.encode({
34793
+ tableRowProperties = translator$_.encode({
34772
34794
  ...params2,
34773
34795
  nodes: [tPr]
34774
- }));
34796
+ });
34775
34797
  }
34776
34798
  encodedAttrs["tableRowProperties"] = Object.freeze(tableRowProperties);
34777
34799
  encodedAttrs["rowHeight"] = twipsToPixels(tableRowProperties["rowHeight"]?.value);
@@ -34803,7 +34825,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34803
34825
  };
34804
34826
  return newNode;
34805
34827
  };
34806
- const decode$r = (params2, decodedAttrs) => {
34828
+ const decode$p = (params2, decodedAttrs) => {
34807
34829
  const { node } = params2;
34808
34830
  const elements = translateChildNodes(params2);
34809
34831
  if (node.attrs?.tableRowProperties) {
@@ -34815,7 +34837,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34815
34837
  }
34816
34838
  }
34817
34839
  tableRowProperties["cantSplit"] = node.attrs["cantSplit"];
34818
- const trPr = translator$L.decode({
34840
+ const trPr = translator$_.decode({
34819
34841
  ...params2,
34820
34842
  node: { ...node, attrs: { ...node.attrs, tableRowProperties } }
34821
34843
  });
@@ -34828,21 +34850,21 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34828
34850
  };
34829
34851
  };
34830
34852
  const config$g = {
34831
- xmlName: XML_NODE_NAME$j,
34853
+ xmlName: XML_NODE_NAME$h,
34832
34854
  sdNodeOrKeyName: SD_NODE_NAME$d,
34833
34855
  type: NodeTranslator.translatorTypes.NODE,
34834
- encode: encode$p,
34835
- decode: decode$r,
34856
+ encode: encode$n,
34857
+ decode: decode$p,
34836
34858
  attributes: validXmlAttributes$b
34837
34859
  };
34838
- const translator$K = NodeTranslator.from(config$g);
34839
- const translator$J = NodeTranslator.from({
34860
+ const translator$Z = NodeTranslator.from(config$g);
34861
+ const translator$Y = NodeTranslator.from({
34840
34862
  xmlName: "w:bidiVisual",
34841
34863
  sdNodeOrKeyName: "rightToLeft",
34842
34864
  encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
34843
34865
  decode: ({ node }) => node.attrs.rightToLeft ? { attributes: {} } : void 0
34844
34866
  });
34845
- const translator$I = NodeTranslator.from({
34867
+ const translator$X = NodeTranslator.from({
34846
34868
  xmlName: "w:shd",
34847
34869
  sdNodeOrKeyName: "shading",
34848
34870
  attributes: [
@@ -34864,11 +34886,11 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34864
34886
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
34865
34887
  }
34866
34888
  });
34867
- const translator$H = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblCaption", "caption"));
34868
- const translator$G = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblDescription", "description"));
34869
- const translator$F = NodeTranslator.from(createMeasurementPropertyHandler("w:tblInd", "tableIndent"));
34870
- const translator$E = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblLayout", "tableLayout", "w:type"));
34871
- const translator$D = NodeTranslator.from({
34889
+ const translator$W = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblCaption", "caption"));
34890
+ const translator$V = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblDescription", "description"));
34891
+ const translator$U = NodeTranslator.from(createMeasurementPropertyHandler("w:tblInd", "tableIndent"));
34892
+ const translator$T = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblLayout", "tableLayout", "w:type"));
34893
+ const translator$S = NodeTranslator.from({
34872
34894
  xmlName: "w:tblLook",
34873
34895
  sdNodeOrKeyName: "tblLook",
34874
34896
  attributes: ["w:firstColumn", "w:firstRow", "w:lastColumn", "w:lastRow", "w:noHBand", "w:noVBand"].map((attr) => createAttributeHandler(attr, null, parseBoolean, booleanToString)).concat([createAttributeHandler("w:val")]),
@@ -34880,16 +34902,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34880
34902
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
34881
34903
  }
34882
34904
  });
34883
- const translator$C = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblOverlap", "overlap"));
34884
- const translator$B = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblStyle", "tableStyleId"));
34885
- const translator$A = NodeTranslator.from(
34905
+ const translator$R = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblOverlap", "overlap"));
34906
+ const translator$Q = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblStyle", "tableStyleId"));
34907
+ const translator$P = NodeTranslator.from(
34886
34908
  createSingleAttrPropertyHandler("w:tblStyleColBandSize", "tableStyleColBandSize")
34887
34909
  );
34888
- const translator$z = NodeTranslator.from(
34910
+ const translator$O = NodeTranslator.from(
34889
34911
  createSingleAttrPropertyHandler("w:tblStyleRowBandSize", "tableStyleRowBandSize")
34890
34912
  );
34891
- const translator$y = NodeTranslator.from(createMeasurementPropertyHandler("w:tblW", "tableWidth"));
34892
- const translator$x = NodeTranslator.from({
34913
+ const translator$N = NodeTranslator.from(createMeasurementPropertyHandler("w:tblW", "tableWidth"));
34914
+ const translator$M = NodeTranslator.from({
34893
34915
  xmlName: "w:tblpPr",
34894
34916
  sdNodeOrKeyName: "floatingTableProperties",
34895
34917
  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))),
@@ -34901,160 +34923,67 @@ Please report this to https://github.com/markedjs/marked.`, e) {
34901
34923
  return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
34902
34924
  }
34903
34925
  });
34904
- const translator$w = NodeTranslator.from(createBorderPropertyHandler("w:bottom"));
34905
- const translator$v = NodeTranslator.from(createMeasurementPropertyHandler("w:bottom", "marginBottom"));
34906
- const translator$u = NodeTranslator.from(createBorderPropertyHandler("w:end"));
34907
- const translator$t = NodeTranslator.from(createMeasurementPropertyHandler("w:end", "marginEnd"));
34908
- const translator$s = NodeTranslator.from(createBorderPropertyHandler("w:insideH"));
34909
- const translator$r = NodeTranslator.from(createBorderPropertyHandler("w:insideV"));
34910
- const translator$q = NodeTranslator.from(createBorderPropertyHandler("w:left"));
34911
- const translator$p = NodeTranslator.from(createMeasurementPropertyHandler("w:left", "marginLeft"));
34912
- const translator$o = NodeTranslator.from(createBorderPropertyHandler("w:right"));
34913
- const translator$n = NodeTranslator.from(createMeasurementPropertyHandler("w:right", "marginRight"));
34914
- const translator$m = NodeTranslator.from(createBorderPropertyHandler("w:start"));
34915
- const translator$l = NodeTranslator.from(createMeasurementPropertyHandler("w:start", "marginStart"));
34916
- const translator$k = NodeTranslator.from(createBorderPropertyHandler("w:top"));
34917
- const translator$j = NodeTranslator.from(createMeasurementPropertyHandler("w:top", "marginTop"));
34918
- const XML_NODE_NAME$i = "w:tblBorders";
34919
- const SD_ATTR_KEY$5 = "borders";
34920
- const encode$o = (params2) => {
34921
- const { nodes } = params2;
34922
- const node = nodes[0];
34923
- const attributes = encodeProperties(node, tblBordersTranslatorsByXmlName);
34924
- return Object.keys(attributes).length > 0 ? attributes : void 0;
34925
- };
34926
- const decode$q = (params2) => {
34927
- const { borders = {} } = params2.node.attrs || {};
34928
- const elements = decodeProperties(tblBordersTranslatorsBySdName, borders);
34929
- const newNode = {
34930
- name: "w:tblBorders",
34931
- type: "element",
34932
- attributes: {},
34933
- elements
34934
- };
34935
- return newNode;
34936
- };
34937
- const propertyTranslators$2 = [
34938
- translator$w,
34939
- translator$u,
34940
- translator$s,
34941
- translator$r,
34942
- translator$q,
34943
- translator$o,
34944
- translator$m,
34945
- translator$k
34946
- ];
34947
- const tblBordersTranslatorsByXmlName = {};
34948
- const tblBordersTranslatorsBySdName = {};
34949
- propertyTranslators$2.forEach((translator2) => {
34950
- tblBordersTranslatorsByXmlName[translator2.xmlName] = translator2;
34951
- tblBordersTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
34952
- });
34953
- const translator$i = NodeTranslator.from({
34954
- xmlName: XML_NODE_NAME$i,
34955
- sdNodeOrKeyName: SD_ATTR_KEY$5,
34956
- type: NodeTranslator.translatorTypes.NODE,
34957
- attributes: [],
34958
- encode: encode$o,
34959
- decode: decode$q
34960
- });
34961
- const XML_NODE_NAME$h = "w:tblCellMar";
34962
- const SD_ATTR_KEY$4 = "cellMargins";
34963
- const encode$n = (params2) => {
34964
- const { nodes } = params2;
34965
- const node = nodes[0];
34966
- const attributes = encodeProperties(node, propertyTranslatorsByXmlName$1);
34967
- return Object.keys(attributes).length > 0 ? attributes : void 0;
34968
- };
34969
- const decode$p = (params2) => {
34970
- const { cellMargins = {} } = params2.node.attrs || {};
34971
- const elements = decodeProperties(propertyTranslatorsBySdName$1, cellMargins);
34972
- const newNode = {
34973
- name: XML_NODE_NAME$h,
34974
- type: "element",
34975
- attributes: {},
34976
- elements
34977
- };
34978
- return newNode;
34979
- };
34980
- const propertyTranslators$1 = [
34981
- translator$v,
34982
- translator$t,
34983
- translator$p,
34984
- translator$n,
34985
- translator$l,
34986
- translator$j
34987
- ];
34988
- const propertyTranslatorsByXmlName$1 = {};
34989
- const propertyTranslatorsBySdName$1 = {};
34990
- propertyTranslators$1.forEach((translator2) => {
34991
- propertyTranslatorsByXmlName$1[translator2.xmlName] = translator2;
34992
- propertyTranslatorsBySdName$1[translator2.sdNodeOrKeyName] = translator2;
34993
- });
34994
- const translator$h = NodeTranslator.from({
34995
- xmlName: XML_NODE_NAME$h,
34996
- sdNodeOrKeyName: SD_ATTR_KEY$4,
34997
- type: NodeTranslator.translatorTypes.NODE,
34998
- attributes: [],
34999
- encode: encode$n,
35000
- decode: decode$p
35001
- });
35002
- const XML_NODE_NAME$g = "w:tblPr";
35003
- const SD_ATTR_KEY$3 = "tableProperties";
35004
- const encode$m = (params2) => {
35005
- const { nodes } = params2;
35006
- const node = nodes[0];
35007
- const attributes = encodeProperties(node, propertyTranslatorsByXmlName);
35008
- return {
35009
- xmlName: XML_NODE_NAME$g,
35010
- sdNodeOrKeyName: SD_ATTR_KEY$3,
35011
- attributes
35012
- };
35013
- };
35014
- const decode$o = (params2) => {
35015
- const { tableProperties = {} } = params2.node.attrs || {};
35016
- const elements = decodeProperties(propertyTranslatorsBySdName, tableProperties);
35017
- const newNode = {
35018
- name: "w:tblPr",
35019
- type: "element",
35020
- attributes: {},
35021
- elements
35022
- };
35023
- return newNode;
35024
- };
35025
- const propertyTranslators = [
34926
+ const translator$L = NodeTranslator.from(createBorderPropertyHandler("w:bottom"));
34927
+ const translator$K = NodeTranslator.from(createMeasurementPropertyHandler("w:bottom", "marginBottom"));
34928
+ const translator$J = NodeTranslator.from(createBorderPropertyHandler("w:end"));
34929
+ const translator$I = NodeTranslator.from(createMeasurementPropertyHandler("w:end", "marginEnd"));
34930
+ const translator$H = NodeTranslator.from(createBorderPropertyHandler("w:insideH"));
34931
+ const translator$G = NodeTranslator.from(createBorderPropertyHandler("w:insideV"));
34932
+ const translator$F = NodeTranslator.from(createBorderPropertyHandler("w:left"));
34933
+ const translator$E = NodeTranslator.from(createMeasurementPropertyHandler("w:left", "marginLeft"));
34934
+ const translator$D = NodeTranslator.from(createBorderPropertyHandler("w:right"));
34935
+ const translator$C = NodeTranslator.from(createMeasurementPropertyHandler("w:right", "marginRight"));
34936
+ const translator$B = NodeTranslator.from(createBorderPropertyHandler("w:start"));
34937
+ const translator$A = NodeTranslator.from(createMeasurementPropertyHandler("w:start", "marginStart"));
34938
+ const translator$z = NodeTranslator.from(createBorderPropertyHandler("w:top"));
34939
+ const translator$y = NodeTranslator.from(createMeasurementPropertyHandler("w:top", "marginTop"));
34940
+ const propertyTranslators$5 = [
34941
+ translator$L,
35026
34942
  translator$J,
35027
- translator$R,
35028
- translator$I,
35029
34943
  translator$H,
35030
- translator$Q,
35031
34944
  translator$G,
35032
34945
  translator$F,
35033
- translator$E,
35034
34946
  translator$D,
35035
- translator$C,
35036
34947
  translator$B,
34948
+ translator$z
34949
+ ];
34950
+ const translator$x = NodeTranslator.from(
34951
+ createNestedPropertiesTranslator("w:tblBorders", "borders", propertyTranslators$5)
34952
+ );
34953
+ const propertyTranslators$4 = [
34954
+ translator$K,
34955
+ translator$I,
34956
+ translator$E,
34957
+ translator$C,
35037
34958
  translator$A,
35038
- translator$z,
35039
- translator$y,
34959
+ translator$y
34960
+ ];
34961
+ const translator$w = NodeTranslator.from(
34962
+ createNestedPropertiesTranslator("w:tblCellMar", "cellMargins", propertyTranslators$4)
34963
+ );
34964
+ const propertyTranslators$3 = [
34965
+ translator$Y,
34966
+ translator$14,
34967
+ translator$X,
34968
+ translator$W,
34969
+ translator$13,
34970
+ translator$V,
34971
+ translator$U,
34972
+ translator$T,
34973
+ translator$S,
34974
+ translator$R,
34975
+ translator$Q,
34976
+ translator$P,
34977
+ translator$O,
34978
+ translator$N,
34979
+ translator$M,
35040
34980
  translator$x,
35041
- translator$i,
35042
- translator$h
34981
+ translator$w
35043
34982
  ];
35044
- const propertyTranslatorsByXmlName = {};
35045
- const propertyTranslatorsBySdName = {};
35046
- propertyTranslators.forEach((translator2) => {
35047
- propertyTranslatorsByXmlName[translator2.xmlName] = translator2;
35048
- propertyTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
35049
- });
35050
- const config$f = {
35051
- xmlName: XML_NODE_NAME$g,
35052
- sdNodeOrKeyName: SD_ATTR_KEY$3,
35053
- encode: encode$m,
35054
- decode: decode$o
35055
- };
35056
- const translator$g = NodeTranslator.from(config$f);
35057
- const translator$f = NodeTranslator.from(
34983
+ const translator$v = NodeTranslator.from(
34984
+ createNestedPropertiesTranslator("w:tblPr", "tableProperties", propertyTranslators$3)
34985
+ );
34986
+ const translator$u = NodeTranslator.from(
35058
34987
  createSingleAttrPropertyHandler("w:gridCol", "col", "w:w", parseInteger, integerToString)
35059
34988
  );
35060
34989
  const DEFAULT_COLUMN_WIDTH_PX = 100;
@@ -35104,20 +35033,20 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35104
35033
  }
35105
35034
  return Math.max(fallbackWidthTwips, cellMinWidthTwips);
35106
35035
  };
35107
- const XML_NODE_NAME$f = "w:tblGrid";
35108
- const SD_ATTR_KEY$2 = "grid";
35036
+ const XML_NODE_NAME$g = "w:tblGrid";
35037
+ const SD_ATTR_KEY$3 = "grid";
35109
35038
  const cellMinWidth = pixelsToTwips(10);
35110
- const encode$l = (params2) => {
35039
+ const encode$m = (params2) => {
35111
35040
  const { nodes } = params2;
35112
35041
  const node = nodes[0];
35113
- const attributes = encodeProperties(node, { [translator$f.xmlName]: translator$f }, true);
35042
+ const attributes = encodeProperties(node, { [translator$u.xmlName]: translator$u }, true);
35114
35043
  return {
35115
- xmlName: XML_NODE_NAME$f,
35116
- sdNodeOrKeyName: SD_ATTR_KEY$2,
35044
+ xmlName: XML_NODE_NAME$g,
35045
+ sdNodeOrKeyName: SD_ATTR_KEY$3,
35117
35046
  attributes
35118
35047
  };
35119
35048
  };
35120
- const decode$n = (params2) => {
35049
+ const decode$o = (params2) => {
35121
35050
  const { grid: rawGrid } = params2.node.attrs || {};
35122
35051
  const grid = Array.isArray(rawGrid) ? rawGrid : [];
35123
35052
  const { firstRow = {} } = params2.extraParams || {};
@@ -35136,10 +35065,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35136
35065
  numericWidth = fallbackColumnWidthTwips;
35137
35066
  }
35138
35067
  numericWidth = Math.max(numericWidth, cellMinWidth);
35139
- const decoded = translator$f.decode({
35068
+ const decoded = translator$u.decode({
35140
35069
  node: { type: (
35141
35070
  /** @type {string} */
35142
- translator$f.sdNodeOrKeyName
35071
+ translator$u.sdNodeOrKeyName
35143
35072
  ), attrs: { col: numericWidth } }
35144
35073
  });
35145
35074
  if (decoded) elements.push(decoded);
@@ -35174,19 +35103,19 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35174
35103
  columnIndex++;
35175
35104
  }
35176
35105
  const newNode = {
35177
- name: XML_NODE_NAME$f,
35106
+ name: XML_NODE_NAME$g,
35178
35107
  attributes: {},
35179
35108
  elements
35180
35109
  };
35181
35110
  return newNode;
35182
35111
  };
35183
- const config$e = {
35184
- xmlName: XML_NODE_NAME$f,
35185
- sdNodeOrKeyName: SD_ATTR_KEY$2,
35186
- encode: encode$l,
35187
- decode: decode$n
35112
+ const config$f = {
35113
+ xmlName: XML_NODE_NAME$g,
35114
+ sdNodeOrKeyName: SD_ATTR_KEY$3,
35115
+ encode: encode$m,
35116
+ decode: decode$o
35188
35117
  };
35189
- const translator$e = NodeTranslator.from(config$e);
35118
+ const translator$t = NodeTranslator.from(config$f);
35190
35119
  const DEFAULT_PAGE_WIDTH_TWIPS = 12240;
35191
35120
  const DEFAULT_PAGE_MARGIN_TWIPS = 1440;
35192
35121
  const DEFAULT_CONTENT_WIDTH_TWIPS = DEFAULT_PAGE_WIDTH_TWIPS - 2 * DEFAULT_PAGE_MARGIN_TWIPS;
@@ -35249,19 +35178,19 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35249
35178
  columnWidths: Array(columnCount).fill(fallbackColumnWidthPx)
35250
35179
  };
35251
35180
  };
35252
- const XML_NODE_NAME$e = "w:tbl";
35181
+ const XML_NODE_NAME$f = "w:tbl";
35253
35182
  const SD_NODE_NAME$c = "table";
35254
- const encode$k = (params2, encodedAttrs) => {
35183
+ const encode$l = (params2, encodedAttrs) => {
35255
35184
  const { nodes } = params2;
35256
35185
  const node = nodes[0];
35257
35186
  const tblPr = node.elements.find((el) => el.name === "w:tblPr");
35258
35187
  if (tblPr) {
35259
- const encodedProperties = translator$g.encode({ ...params2, nodes: [tblPr] });
35260
- encodedAttrs["tableProperties"] = encodedProperties?.attributes || {};
35188
+ const encodedProperties = translator$v.encode({ ...params2, nodes: [tblPr] });
35189
+ encodedAttrs["tableProperties"] = encodedProperties || {};
35261
35190
  }
35262
35191
  const tblGrid = node.elements.find((el) => el.name === "w:tblGrid");
35263
35192
  if (tblGrid) {
35264
- encodedAttrs["grid"] = translator$e.encode({ ...params2, nodes: [tblGrid] }).attributes;
35193
+ encodedAttrs["grid"] = translator$t.encode({ ...params2, nodes: [tblGrid] }).attributes;
35265
35194
  }
35266
35195
  [
35267
35196
  "tableStyleId",
@@ -35328,7 +35257,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35328
35257
  }
35329
35258
  const content = [];
35330
35259
  rows.forEach((row) => {
35331
- const result = translator$K.encode({
35260
+ const result = translator$Z.encode({
35332
35261
  ...params2,
35333
35262
  nodes: [row],
35334
35263
  extraParams: {
@@ -35347,13 +35276,13 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35347
35276
  attrs: encodedAttrs
35348
35277
  };
35349
35278
  };
35350
- const decode$m = (params2, decodedAttrs) => {
35279
+ const decode$n = (params2, decodedAttrs) => {
35351
35280
  params2.node = preProcessVerticalMergeCells(params2.node, params2);
35352
35281
  const { node } = params2;
35353
35282
  const elements = translateChildNodes(params2);
35354
35283
  const firstRow = node.content?.find((n) => n.type === "tableRow");
35355
35284
  const properties = node.attrs.grid;
35356
- const element = translator$e.decode({
35285
+ const element = translator$t.decode({
35357
35286
  ...params2,
35358
35287
  node: { ...node, attrs: { ...node.attrs, grid: properties } },
35359
35288
  extraParams: {
@@ -35363,7 +35292,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35363
35292
  if (element) elements.unshift(element);
35364
35293
  if (node.attrs?.tableProperties) {
35365
35294
  const properties2 = { ...node.attrs.tableProperties };
35366
- const element2 = translator$g.decode({
35295
+ const element2 = translator$v.decode({
35367
35296
  ...params2,
35368
35297
  node: { ...node, attrs: { ...node.attrs, tableProperties: properties2 } }
35369
35298
  });
@@ -35383,7 +35312,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35383
35312
  const color = attributes.color;
35384
35313
  const size2 = attributes.size;
35385
35314
  if (color && color !== "auto") attrs["color"] = color.startsWith("#") ? color : `#${color}`;
35386
- if (size2 && size2 !== "auto") attrs["size"] = eigthPointsToPixels(size2);
35315
+ if (size2 && size2 !== "auto") attrs["size"] = eighthPointsToPixels(size2);
35387
35316
  const rowBorderNames = ["insideH", "insideV"];
35388
35317
  if (rowBorderNames.includes(name)) rowBorders[name] = attrs;
35389
35318
  borders[name] = attrs;
@@ -35429,7 +35358,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35429
35358
  if (baseTblPr && baseTblPr.elements) {
35430
35359
  tblPr.elements.push(...baseTblPr.elements);
35431
35360
  }
35432
- const tableProperties = translator$g.encode({ ...params2, nodes: [tblPr] }).attributes;
35361
+ const tableProperties = translator$v.encode({ ...params2, nodes: [tblPr] });
35433
35362
  const { borders, rowBorders } = _processTableBorders(tableProperties.borders || {});
35434
35363
  if (borders) stylesToReturn.borders = borders;
35435
35364
  if (rowBorders) stylesToReturn.rowBorders = rowBorders;
@@ -35446,16 +35375,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35446
35375
  }
35447
35376
  return stylesToReturn;
35448
35377
  }
35449
- const config$d = {
35450
- xmlName: XML_NODE_NAME$e,
35378
+ const config$e = {
35379
+ xmlName: XML_NODE_NAME$f,
35451
35380
  sdNodeOrKeyName: SD_NODE_NAME$c,
35452
35381
  type: NodeTranslator.translatorTypes.NODE,
35453
- encode: encode$k,
35454
- decode: decode$m,
35382
+ encode: encode$l,
35383
+ decode: decode$n,
35455
35384
  attributes: []
35456
35385
  };
35457
- const translator$d = NodeTranslator.from(config$d);
35458
- const tableNodeHandlerEntity = generateV2HandlerEntity("tableNodeHandler", translator$d);
35386
+ const translator$s = NodeTranslator.from(config$e);
35387
+ const tableNodeHandlerEntity = generateV2HandlerEntity("tableNodeHandler", translator$s);
35459
35388
  function getReferencedTableStyles(tblStyleTag, docx) {
35460
35389
  if (!tblStyleTag) return null;
35461
35390
  const stylesToReturn = {};
@@ -35526,7 +35455,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35526
35455
  const color = attributes["w:color"];
35527
35456
  const size2 = attributes["w:sz"];
35528
35457
  if (color && color !== "auto") attrs["color"] = color.startsWith("#") ? color : `#${color}`;
35529
- if (size2 && size2 !== "auto") attrs["size"] = eigthPointsToPixels(size2);
35458
+ if (size2 && size2 !== "auto") attrs["size"] = eighthPointsToPixels(size2);
35530
35459
  const rowBorderNames = ["insideH", "insideV"];
35531
35460
  if (rowBorderNames.includes(borderName)) rowBorders[borderName] = attrs;
35532
35461
  borders[borderName] = attrs;
@@ -35536,6 +35465,125 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35536
35465
  rowBorders
35537
35466
  };
35538
35467
  }
35468
+ const translator$r = NodeTranslator.from(createMeasurementPropertyHandler("w:tcW", "cellWidth"));
35469
+ const translator$q = NodeTranslator.from(
35470
+ createSingleAttrPropertyHandler(
35471
+ "w:gridSpan",
35472
+ null,
35473
+ "w:val",
35474
+ (v2) => parseInteger(v2) ?? void 0,
35475
+ (v2) => integerToString(v2)
35476
+ )
35477
+ );
35478
+ const translator$p = NodeTranslator.from(createSingleAttrPropertyHandler("w:vMerge"));
35479
+ const translator$o = NodeTranslator.from(createBorderPropertyHandler("w:tl2br"));
35480
+ const translator$n = NodeTranslator.from(createBorderPropertyHandler("w:tr2bl"));
35481
+ const propertyTranslators$2 = [
35482
+ translator$z,
35483
+ translator$B,
35484
+ translator$F,
35485
+ translator$L,
35486
+ translator$J,
35487
+ translator$D,
35488
+ translator$H,
35489
+ translator$G,
35490
+ translator$o,
35491
+ translator$n
35492
+ ];
35493
+ const translator$m = NodeTranslator.from(
35494
+ createNestedPropertiesTranslator("w:tcBorders", "borders", propertyTranslators$2)
35495
+ );
35496
+ const translator$l = NodeTranslator.from(
35497
+ createSingleAttrPropertyHandler(
35498
+ "w:noWrap",
35499
+ null,
35500
+ "w:val",
35501
+ (v2) => parseBoolean(v2 ?? "true"),
35502
+ (v2) => booleanToString(v2)
35503
+ )
35504
+ );
35505
+ const propertyTranslators$1 = [
35506
+ translator$K,
35507
+ translator$I,
35508
+ translator$E,
35509
+ translator$C,
35510
+ translator$A,
35511
+ translator$y
35512
+ ];
35513
+ const translator$k = NodeTranslator.from(
35514
+ createNestedPropertiesTranslator("w:tcMar", "cellMargins", propertyTranslators$1)
35515
+ );
35516
+ const translator$j = NodeTranslator.from(createSingleAttrPropertyHandler("w:textDirection"));
35517
+ const translator$i = NodeTranslator.from(
35518
+ createSingleAttrPropertyHandler(
35519
+ "w:tcFitText",
35520
+ null,
35521
+ "w:val",
35522
+ (v2) => parseBoolean(v2 ?? "true"),
35523
+ (v2) => booleanToString(v2)
35524
+ )
35525
+ );
35526
+ const translator$h = NodeTranslator.from(createSingleAttrPropertyHandler("w:vAlign"));
35527
+ const translator$g = NodeTranslator.from(
35528
+ createSingleAttrPropertyHandler(
35529
+ "w:hideMark",
35530
+ null,
35531
+ "w:val",
35532
+ (v2) => parseBoolean(v2 ?? "true"),
35533
+ (v2) => booleanToString(v2)
35534
+ )
35535
+ );
35536
+ const translator$f = NodeTranslator.from(createSingleAttrPropertyHandler("w:header"));
35537
+ const XML_NODE_NAME$e = "w:headers";
35538
+ const SD_ATTR_KEY$2 = "headers";
35539
+ const encode$k = (params2) => {
35540
+ const { nodes } = params2;
35541
+ const node = nodes[0];
35542
+ const attributes = encodeProperties(node, { [translator$f.xmlName]: translator$f }, true);
35543
+ return {
35544
+ xmlName: XML_NODE_NAME$e,
35545
+ sdNodeOrKeyName: SD_ATTR_KEY$2,
35546
+ attributes
35547
+ };
35548
+ };
35549
+ const decode$m = (params2) => {
35550
+ const { headers = [] } = params2.node.attrs || {};
35551
+ const newNode = {
35552
+ name: XML_NODE_NAME$e,
35553
+ attributes: {},
35554
+ elements: headers.map(
35555
+ (header) => translator$f.decode({
35556
+ node: { type: "header", attrs: header }
35557
+ })
35558
+ )
35559
+ };
35560
+ return newNode;
35561
+ };
35562
+ const config$d = {
35563
+ xmlName: XML_NODE_NAME$e,
35564
+ sdNodeOrKeyName: SD_ATTR_KEY$2,
35565
+ encode: encode$k,
35566
+ decode: decode$m
35567
+ };
35568
+ const translator$e = NodeTranslator.from(config$d);
35569
+ const propertyTranslators = [
35570
+ translator$19,
35571
+ translator$r,
35572
+ translator$q,
35573
+ translator$p,
35574
+ translator$m,
35575
+ translator$X,
35576
+ translator$l,
35577
+ translator$k,
35578
+ translator$j,
35579
+ translator$i,
35580
+ translator$h,
35581
+ translator$g,
35582
+ translator$e
35583
+ ];
35584
+ const translator$d = NodeTranslator.from(
35585
+ createNestedPropertiesTranslator("w:tcPr", "tableCellProperties", propertyTranslators)
35586
+ );
35539
35587
  function handleTableCellNode({
35540
35588
  params: params2,
35541
35589
  node,
@@ -35548,8 +35596,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35548
35596
  allColumnWidths = []
35549
35597
  }) {
35550
35598
  const { docx, nodeListHandler } = params2;
35599
+ const attributes = {};
35551
35600
  const tcPr = node.elements.find((el) => el.name === "w:tcPr");
35552
- const borders = tcPr?.elements?.find((el) => el.name === "w:tcBorders");
35601
+ const tableCellProperties = tcPr ? translator$d.encode({ ...params2, nodes: [tcPr] }) ?? {} : {};
35602
+ attributes["tableCellProperties"] = tableCellProperties;
35553
35603
  if (rowBorders?.insideH) {
35554
35604
  rowBorders["bottom"] = rowBorders.insideH;
35555
35605
  delete rowBorders.insideH;
@@ -35558,33 +35608,20 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35558
35608
  rowBorders["right"] = rowBorders.insideV;
35559
35609
  delete rowBorders?.insideV;
35560
35610
  }
35561
- const inlineBorders = processInlineCellBorders(borders, rowBorders);
35562
- const gridColumnWidths = allColumnWidths;
35563
- const tcWidth = tcPr?.elements?.find((el) => el.name === "w:tcW");
35564
- let width = tcWidth ? twipsToPixels(tcWidth.attributes["w:w"]) : null;
35565
- const widthType = tcWidth?.attributes["w:type"];
35611
+ if (rowBorders) attributes["borders"] = { ...rowBorders };
35612
+ const inlineBorders = processInlineCellBorders(tableCellProperties.borders, rowBorders);
35613
+ if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
35614
+ const colspan = tableCellProperties.gridSpan;
35615
+ if (colspan && !isNaN(parseInt(colspan, 10))) attributes["colspan"] = parseInt(colspan, 10);
35616
+ let width = tableCellProperties.cellWidth?.value ? twipsToPixels(tableCellProperties.cellWidth?.value) : null;
35617
+ const widthType = tableCellProperties.cellWidth?.type;
35618
+ if (widthType) attributes["widthType"] = widthType;
35566
35619
  if (!width && columnWidth) width = columnWidth;
35567
- const vMerge = getTableCellMergeTag(node);
35568
- const { attributes: vMergeAttrs } = vMerge || {};
35569
- const backgroundColor = tcPr?.elements?.find((el) => el.name === "w:shd");
35570
- const background = {
35571
- color: backgroundColor?.attributes["w:fill"]
35572
- };
35573
- const colspanTag = tcPr?.elements?.find((el) => el.name === "w:gridSpan");
35574
- const colspan = colspanTag?.attributes["w:val"];
35575
- const marginTag = tcPr?.elements?.find((el) => el.name === "w:tcMar");
35576
- const verticalAlignTag = tcPr?.elements?.find((el) => el.name === "w:vAlign");
35577
- const verticalAlign = verticalAlignTag?.attributes["w:val"] || "top";
35578
- const attributes = {};
35579
- const referencedStyles = getReferencedTableStyles(styleTag, docx) || {};
35580
- attributes.cellMargins = getTableCellMargins(marginTag, referencedStyles);
35581
- const { fontSize: fontSize2, fonts = {} } = referencedStyles;
35582
- const fontFamily2 = fonts["ascii"];
35583
35620
  if (width) {
35584
35621
  attributes["colwidth"] = [width];
35585
35622
  attributes["widthUnit"] = "px";
35586
- const defaultColWidths = gridColumnWidths;
35587
- const hasDefaultColWidths = gridColumnWidths && gridColumnWidths.length > 0;
35623
+ const defaultColWidths = allColumnWidths;
35624
+ const hasDefaultColWidths = allColumnWidths && allColumnWidths.length > 0;
35588
35625
  const colspanNum = parseInt(colspan || 1, 10);
35589
35626
  if (colspanNum && colspanNum > 1 && hasDefaultColWidths) {
35590
35627
  let colwidth = [];
@@ -35602,15 +35639,19 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35602
35639
  }
35603
35640
  }
35604
35641
  }
35605
- if (widthType) attributes["widthType"] = widthType;
35606
- if (colspan) attributes["colspan"] = parseInt(colspan, 10);
35607
- if (background) attributes["background"] = background;
35608
- attributes["verticalAlign"] = verticalAlign;
35642
+ const background = {
35643
+ color: tableCellProperties.shading?.fill
35644
+ };
35645
+ if (background.color) attributes["background"] = background;
35646
+ const verticalAlign = tableCellProperties.vAlign;
35647
+ if (verticalAlign) attributes["verticalAlign"] = verticalAlign;
35648
+ const referencedStyles = getReferencedTableStyles(styleTag, docx) || { fontSize: null, fonts: {}, cellMargins: {} };
35649
+ attributes.cellMargins = getTableCellMargins(tableCellProperties.cellMargins, referencedStyles);
35650
+ const { fontSize: fontSize2, fonts = {} } = referencedStyles;
35651
+ const fontFamily2 = fonts["ascii"];
35609
35652
  if (fontSize2) attributes["fontSize"] = fontSize2;
35610
- if (fontFamily2) attributes["fontFamily"] = fontFamily2["ascii"];
35611
- if (rowBorders) attributes["borders"] = { ...rowBorders };
35612
- if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
35613
- if (vMergeAttrs && vMergeAttrs["w:val"] === "restart") {
35653
+ if (fontFamily2) attributes["fontFamily"] = fontFamily2;
35654
+ if (tableCellProperties.vMerge === "restart") {
35614
35655
  const rows = table.elements.filter((el) => el.name === "w:tr");
35615
35656
  const currentRowIndex = rows.findIndex((r2) => r2 === row);
35616
35657
  const remainingRows = rows.slice(currentRowIndex + 1);
@@ -35621,9 +35662,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35621
35662
  const firstCell = remainingRow.elements.findIndex((el) => el.name === "w:tc");
35622
35663
  const cellAtIndex = remainingRow.elements[firstCell + cellIndex];
35623
35664
  if (!cellAtIndex) break;
35624
- const vMerge2 = getTableCellMergeTag(cellAtIndex);
35625
- const { attributes: currentCellMergeAttrs } = vMerge2 || {};
35626
- if (!vMerge2 && !currentCellMergeAttrs || currentCellMergeAttrs && currentCellMergeAttrs["w:val"] === "restart") {
35665
+ const vMerge = getTableCellVMerge(cellAtIndex);
35666
+ if (!vMerge || vMerge === "restart") {
35627
35667
  break;
35628
35668
  }
35629
35669
  rowspan++;
@@ -35643,69 +35683,52 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35643
35683
  }
35644
35684
  const processInlineCellBorders = (borders, rowBorders) => {
35645
35685
  if (!borders) return null;
35646
- const processedBorders = {};
35647
- const inlineBorderBottom = processBorder(borders, "bottom", rowBorders);
35648
- if (inlineBorderBottom) processedBorders["bottom"] = inlineBorderBottom;
35649
- const inlineBorderTop = processBorder(borders, "top", rowBorders);
35650
- if (inlineBorderTop) processedBorders["top"] = inlineBorderTop;
35651
- const inlineBorderLeft = processBorder(borders, "left", rowBorders);
35652
- if (inlineBorderLeft) processedBorders["left"] = inlineBorderLeft;
35653
- const inlineBorderRight = processBorder(borders, "right", rowBorders);
35654
- if (inlineBorderRight) processedBorders["right"] = inlineBorderRight;
35655
- return processedBorders;
35656
- };
35657
- const processBorder = (borders, direction, rowBorders = {}) => {
35658
- const borderAttrs = borders?.elements?.find((el) => el.name === `w:${direction}`)?.attributes;
35659
- if (borderAttrs && borderAttrs["w:val"] !== "nil") {
35660
- const border = {};
35661
- const color = borderAttrs["w:color"];
35662
- if (color) border["color"] = color === "auto" ? "#000000" : `#${color}`;
35663
- const size2 = borderAttrs["w:sz"];
35664
- if (size2) border["size"] = eigthPointsToPixels(size2);
35665
- return border;
35666
- }
35667
- if (borderAttrs && borderAttrs["w:val"] === "nil") {
35668
- const border = Object.assign({}, rowBorders[direction] || {});
35669
- if (!Object.keys(border)) return null;
35670
- border["val"] = "none";
35671
- return border;
35672
- }
35673
- return null;
35686
+ return ["bottom", "top", "left", "right"].reduce((acc, direction) => {
35687
+ const borderAttrs = borders[direction];
35688
+ const rowBorderAttrs = rowBorders[direction];
35689
+ if (borderAttrs && borderAttrs["val"] !== "nil") {
35690
+ const color = borderAttrs["color"];
35691
+ let size2 = borderAttrs["size"];
35692
+ if (size2) size2 = eighthPointsToPixels(size2);
35693
+ acc[direction] = { color, size: size2, val: borderAttrs["val"] };
35694
+ return acc;
35695
+ }
35696
+ if (borderAttrs && borderAttrs["val"] === "nil") {
35697
+ const border = Object.assign({}, rowBorderAttrs || {});
35698
+ if (!Object.keys(border).length) {
35699
+ return acc;
35700
+ } else {
35701
+ border["val"] = "none";
35702
+ acc[direction] = border;
35703
+ return acc;
35704
+ }
35705
+ }
35706
+ return acc;
35707
+ }, {});
35674
35708
  };
35675
- const getTableCellMergeTag = (node) => {
35709
+ const getTableCellVMerge = (node) => {
35676
35710
  const tcPr = node.elements.find((el) => el.name === "w:tcPr");
35677
35711
  const vMerge = tcPr?.elements?.find((el) => el.name === "w:vMerge");
35678
- return vMerge;
35679
- };
35680
- const getTableCellMargins = (marginTag, referencedStyles) => {
35681
- const inlineMarginLeftTag = marginTag?.elements?.find((el) => el.name === "w:left");
35682
- const inlineMarginRightTag = marginTag?.elements?.find((el) => el.name === "w:right");
35683
- const inlineMarginTopTag = marginTag?.elements?.find((el) => el.name === "w:top");
35684
- const inlineMarginBottomTag = marginTag?.elements?.find((el) => el.name === "w:bottom");
35685
- const inlineMarginLeftValue = inlineMarginLeftTag?.attributes["w:w"];
35686
- const inlineMarginRightValue = inlineMarginRightTag?.attributes["w:w"];
35687
- const inlineMarginTopValue = inlineMarginTopTag?.attributes["w:w"];
35688
- const inlineMarginBottomValue = inlineMarginBottomTag?.attributes["w:w"];
35712
+ if (!vMerge) return null;
35713
+ return vMerge.attributes?.["w:val"] || "continue";
35714
+ };
35715
+ const getTableCellMargins = (inlineMargins, referencedStyles) => {
35689
35716
  const { cellMargins = {} } = referencedStyles;
35690
- const {
35691
- marginLeft: marginLeftStyle,
35692
- marginRight: marginRightStyle,
35693
- marginTop: marginTopStyle,
35694
- marginBottom: marginBottomStyle
35695
- } = cellMargins;
35696
- const resolveMargin = (inlineValue, styleValue) => {
35697
- if (inlineValue != null) return inlineValue;
35698
- if (styleValue == null) return void 0;
35699
- if (typeof styleValue === "object") return styleValue.value;
35700
- return styleValue;
35701
- };
35702
- const margins = {
35703
- left: twipsToPixels(resolveMargin(inlineMarginLeftValue, marginLeftStyle)),
35704
- right: twipsToPixels(resolveMargin(inlineMarginRightValue, marginRightStyle)),
35705
- top: twipsToPixels(resolveMargin(inlineMarginTopValue, marginTopStyle)),
35706
- bottom: twipsToPixels(resolveMargin(inlineMarginBottomValue, marginBottomStyle))
35707
- };
35708
- return margins;
35717
+ return ["left", "right", "top", "bottom"].reduce((acc, direction) => {
35718
+ const key2 = `margin${direction.charAt(0).toUpperCase() + direction.slice(1)}`;
35719
+ const inlineValue = inlineMargins ? inlineMargins?.[key2]?.value : null;
35720
+ const styleValue = cellMargins ? cellMargins[key2] : null;
35721
+ if (inlineValue != null) {
35722
+ acc[direction] = twipsToPixels(inlineValue);
35723
+ } else if (styleValue == null) {
35724
+ acc[direction] = void 0;
35725
+ } else if (typeof styleValue === "object") {
35726
+ acc[direction] = twipsToPixels(styleValue.value);
35727
+ } else {
35728
+ acc[direction] = twipsToPixels(styleValue);
35729
+ }
35730
+ return acc;
35731
+ }, {});
35709
35732
  };
35710
35733
  function translateTableCell(params2) {
35711
35734
  const elements = translateChildNodes({
@@ -35720,102 +35743,86 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35720
35743
  };
35721
35744
  }
35722
35745
  function generateTableCellProperties(node) {
35723
- const elements = [];
35746
+ const tableCellProperties = { ...node.attrs?.tableCellProperties || {} };
35724
35747
  const { attrs } = node;
35725
- const { colwidth = [], cellWidthType = "dxa", background = {}, colspan, rowspan, widthUnit } = attrs;
35748
+ const { colwidth = [], cellWidthType = "dxa", widthUnit } = attrs;
35726
35749
  const colwidthSum = colwidth.reduce((acc, curr) => acc + curr, 0);
35727
- const cellWidthElement = {
35728
- name: "w:tcW",
35729
- attributes: {
35730
- "w:w": widthUnit === "px" ? pixelsToTwips(colwidthSum) : inchesToTwips(colwidthSum),
35731
- "w:type": cellWidthType
35732
- }
35733
- };
35734
- elements.push(cellWidthElement);
35735
- if (colspan) {
35736
- const gridSpanElement = {
35737
- name: "w:gridSpan",
35738
- attributes: { "w:val": `${colspan}` }
35750
+ const propertiesWidthPixels = twipsToPixels(tableCellProperties.cellWidth?.value);
35751
+ if (propertiesWidthPixels !== colwidthSum) {
35752
+ tableCellProperties["cellWidth"] = {
35753
+ value: widthUnit === "px" ? pixelsToTwips(colwidthSum) : inchesToTwips(colwidthSum),
35754
+ type: cellWidthType
35739
35755
  };
35740
- elements.push(gridSpanElement);
35741
35756
  }
35742
- const { color } = background || {};
35743
- if (color) {
35744
- const cellBgElement = {
35745
- name: "w:shd",
35746
- attributes: { "w:fill": color }
35747
- };
35748
- elements.push(cellBgElement);
35757
+ const { colspan } = attrs;
35758
+ if (colspan > 1 && tableCellProperties.gridSpan !== colspan) {
35759
+ tableCellProperties["gridSpan"] = colspan;
35760
+ } else if (!colspan || tableCellProperties?.gridSpan === 1) {
35761
+ delete tableCellProperties.gridSpan;
35762
+ }
35763
+ const { background = {} } = attrs;
35764
+ if (background?.color && tableCellProperties.shading?.fill !== background?.color) {
35765
+ tableCellProperties["shading"] = { fill: background.color };
35766
+ } else if (!background?.color && tableCellProperties?.shading?.fill) {
35767
+ delete tableCellProperties.shading;
35749
35768
  }
35750
35769
  const { cellMargins } = attrs;
35751
35770
  if (cellMargins) {
35752
- const cellMarginsElement = {
35753
- name: "w:tcMar",
35754
- elements: generateCellMargins(cellMargins)
35755
- };
35756
- elements.push(cellMarginsElement);
35771
+ ["left", "right", "top", "bottom"].forEach((side) => {
35772
+ const key2 = `margin${side.charAt(0).toUpperCase() + side.slice(1)}`;
35773
+ if (cellMargins[side] != null) {
35774
+ if (!tableCellProperties.cellMargins) tableCellProperties["cellMargins"] = {};
35775
+ let currentPropertyValuePixels = twipsToPixels(tableCellProperties.cellMargins?.[key2]?.value);
35776
+ if (currentPropertyValuePixels !== cellMargins[side]) {
35777
+ tableCellProperties.cellMargins[key2] = { value: pixelsToTwips(cellMargins[side]), type: "dxa" };
35778
+ }
35779
+ } else if (tableCellProperties?.cellMargins?.[key2]) {
35780
+ delete tableCellProperties.cellMargins[key2];
35781
+ }
35782
+ });
35757
35783
  }
35758
35784
  const { verticalAlign } = attrs;
35759
- if (verticalAlign) {
35760
- const vertAlignElement = {
35761
- name: "w:vAlign",
35762
- attributes: { "w:val": verticalAlign }
35763
- };
35764
- elements.push(vertAlignElement);
35765
- }
35766
- if (rowspan && rowspan > 1) {
35767
- const vMergeElement = {
35768
- name: "w:vMerge",
35769
- type: "element",
35770
- attributes: { "w:val": "restart" }
35771
- };
35772
- elements.push(vMergeElement);
35785
+ if (verticalAlign && verticalAlign !== tableCellProperties.vAlign) {
35786
+ tableCellProperties["vAlign"] = verticalAlign;
35787
+ } else if (!verticalAlign && tableCellProperties?.vAlign) {
35788
+ delete tableCellProperties.vAlign;
35789
+ }
35790
+ const { rowspan } = attrs;
35791
+ if (rowspan && rowspan > 1 && tableCellProperties.vMerge !== "restart") {
35792
+ tableCellProperties["vMerge"] = "restart";
35773
35793
  } else if (attrs.continueMerge) {
35774
- const vMergeElement = {
35775
- name: "w:vMerge",
35776
- type: "element"
35777
- };
35778
- elements.push(vMergeElement);
35794
+ tableCellProperties["vMerge"] = "continue";
35795
+ } else if (tableCellProperties?.vMerge) {
35796
+ delete tableCellProperties.vMerge;
35779
35797
  }
35780
35798
  const { borders = {} } = attrs;
35781
35799
  if (!!borders && Object.keys(borders).length) {
35782
- const cellBordersElement = {
35783
- name: "w:tcBorders",
35784
- elements: Object.entries(borders).map(([key2, value]) => {
35785
- if (!value.size || value.val === "none") {
35786
- return {
35787
- name: `w:${key2}`,
35788
- attributes: {
35789
- "w:val": "nil"
35790
- }
35800
+ ["top", "bottom", "left", "right"].forEach((side) => {
35801
+ if (borders[side]) {
35802
+ let currentPropertyValue = tableCellProperties.borders?.[side];
35803
+ let currentPropertySizePixels = eighthPointsToPixels(currentPropertyValue?.size);
35804
+ let color = borders[side].color;
35805
+ if (borders[side].color && color === "#000000") {
35806
+ color = "auto";
35807
+ }
35808
+ if (currentPropertySizePixels !== borders[side].size || currentPropertyValue?.color !== color || borders[side].val !== currentPropertyValue?.val) {
35809
+ if (!tableCellProperties.borders) tableCellProperties["borders"] = {};
35810
+ tableCellProperties.borders[side] = {
35811
+ size: pixelsToEightPoints(borders[side].size || 0),
35812
+ color,
35813
+ space: borders[side].space || 0,
35814
+ val: borders[side].val || "single"
35791
35815
  };
35792
35816
  }
35793
- return {
35794
- name: `w:${key2}`,
35795
- attributes: {
35796
- "w:val": "single",
35797
- "w:color": value.color ? value.color.substring(1) : "auto",
35798
- "w:sz": pixelsToEightPoints(value.size),
35799
- "w:space": value.space || 0
35800
- }
35801
- };
35802
- })
35803
- };
35804
- elements.push(cellBordersElement);
35817
+ } else if (tableCellProperties.borders?.[side]) {
35818
+ delete tableCellProperties.borders[side];
35819
+ }
35820
+ });
35821
+ } else if (tableCellProperties?.borders) {
35822
+ delete tableCellProperties.borders;
35805
35823
  }
35806
- return {
35807
- name: "w:tcPr",
35808
- elements
35809
- };
35810
- }
35811
- function generateCellMargins(cellMargins) {
35812
- const elements = [];
35813
- const { top: top2, right: right2, bottom: bottom2, left: left2 } = cellMargins;
35814
- if (top2 != null) elements.push({ name: "w:top", attributes: { "w:w": pixelsToTwips(top2) } });
35815
- if (right2 != null) elements.push({ name: "w:right", attributes: { "w:w": pixelsToTwips(right2) } });
35816
- if (bottom2 != null) elements.push({ name: "w:bottom", attributes: { "w:w": pixelsToTwips(bottom2) } });
35817
- if (left2 != null) elements.push({ name: "w:left", attributes: { "w:w": pixelsToTwips(left2) } });
35818
- return elements;
35824
+ const result = translator$d.decode({ node: { ...node, attrs: { ...node.attrs, tableCellProperties } } });
35825
+ return result;
35819
35826
  }
35820
35827
  const XML_NODE_NAME$d = "w:tc";
35821
35828
  const SD_NODE_NAME$b = "tableCell";
@@ -39427,8 +39434,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
39427
39434
  handlerName: "trackChangeNodeHandler",
39428
39435
  handler: handleTrackChangeNode
39429
39436
  };
39430
- const hyperlinkNodeHandlerEntity = generateV2HandlerEntity("hyperlinkNodeHandler", translator$Z);
39431
- const runNodeHandlerEntity = generateV2HandlerEntity("runNodeHandler", translator$Y);
39437
+ const hyperlinkNodeHandlerEntity = generateV2HandlerEntity("hyperlinkNodeHandler", translator$1c);
39438
+ const runNodeHandlerEntity = generateV2HandlerEntity("runNodeHandler", translator$1b);
39432
39439
  function parseProperties(node) {
39433
39440
  const marks = [];
39434
39441
  const unknownMarks = [];
@@ -39520,7 +39527,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
39520
39527
  if (nodes.length === 0 || nodes[0].name !== "w:p") {
39521
39528
  return { nodes: [], consumed: 0 };
39522
39529
  }
39523
- const schemaNode = translator$19.encode(params2);
39530
+ const schemaNode = translator$1o.encode(params2);
39524
39531
  const newNodes = schemaNode ? [schemaNode] : [];
39525
39532
  return { nodes: newNodes, consumed: 1 };
39526
39533
  };
@@ -39623,7 +39630,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
39623
39630
  if (nodes.length === 0 || nodes[0].name !== "w:br") {
39624
39631
  return { nodes: [], consumed: 0 };
39625
39632
  }
39626
- const result = translator$1c.encode(params2);
39633
+ const result = translator$1r.encode(params2);
39627
39634
  if (!result) return { nodes: [], consumed: 0 };
39628
39635
  return {
39629
39636
  nodes: [result],
@@ -40222,7 +40229,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
40222
40229
  if (!nodes.length || nodes[0].name !== "w:tab") {
40223
40230
  return { nodes: [], consumed: 0 };
40224
40231
  }
40225
- const node = translator$1a.encode(params2);
40232
+ const node = translator$1p.encode(params2);
40226
40233
  return { nodes: [node], consumed: 1 };
40227
40234
  };
40228
40235
  const tabNodeEntityHandler = {
@@ -40474,12 +40481,14 @@ Please report this to https://github.com/markedjs/marked.`, e) {
40474
40481
  const content = pruneIgnoredNodes(contentElements);
40475
40482
  const comments = importCommentData({ docx, converter, editor });
40476
40483
  const lists = {};
40484
+ const inlineDocumentFonts = [];
40477
40485
  let parsedContent = nodeListHandler.handler({
40478
40486
  nodes: content,
40479
40487
  nodeListHandler,
40480
40488
  docx,
40481
40489
  converter,
40482
40490
  editor,
40491
+ inlineDocumentFonts,
40483
40492
  lists,
40484
40493
  path: []
40485
40494
  });
@@ -40502,6 +40511,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
40502
40511
  savedTagsToRestore: node,
40503
40512
  pageStyles: getDocumentStyles(node, docx, converter, editor),
40504
40513
  comments,
40514
+ inlineDocumentFonts,
40505
40515
  linkedStyles: getStyleDefinitions(docx),
40506
40516
  numbering: getNumberingDefinitions(docx)
40507
40517
  };
@@ -40565,6 +40575,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
40565
40575
  filename,
40566
40576
  parentStyleId,
40567
40577
  lists,
40578
+ inlineDocumentFonts,
40568
40579
  path = []
40569
40580
  }) => {
40570
40581
  if (!elements || !elements.length) return [];
@@ -40591,6 +40602,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
40591
40602
  filename,
40592
40603
  parentStyleId,
40593
40604
  lists,
40605
+ inlineDocumentFonts,
40594
40606
  path
40595
40607
  });
40596
40608
  },
@@ -41170,7 +41182,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
41170
41182
  const XML_NODE_NAME = "w:pict";
41171
41183
  const SD_NODE_NAME = ["shapeContainer", "contentBlock"];
41172
41184
  const validXmlAttributes = [];
41173
- function encode$1f(params2) {
41185
+ function encode$1c(params2) {
41174
41186
  const { node, pNode } = params2.extraParams;
41175
41187
  const { type: pictType, handler: handler2 } = pictNodeTypeStrategy(node);
41176
41188
  if (!handler2 || pictType === "unknown") {
@@ -41202,7 +41214,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
41202
41214
  xmlName: XML_NODE_NAME,
41203
41215
  sdNodeOrKeyName: SD_NODE_NAME,
41204
41216
  type: NodeTranslator.translatorTypes.NODE,
41205
- encode: encode$1f,
41217
+ encode: encode$1c,
41206
41218
  decode,
41207
41219
  attributes: validXmlAttributes
41208
41220
  };
@@ -41278,21 +41290,21 @@ Please report this to https://github.com/markedjs/marked.`, e) {
41278
41290
  doc: translateDocumentNode,
41279
41291
  body: translateBodyNode,
41280
41292
  heading: translateHeadingNode,
41281
- paragraph: translator$19,
41282
- run: translator$Y,
41293
+ paragraph: translator$1o,
41294
+ run: translator$1b,
41283
41295
  text: translateTextNode,
41284
41296
  bulletList: translateList,
41285
41297
  orderedList: translateList,
41286
- lineBreak: translator$1c,
41287
- table: translator$d,
41288
- tableRow: translator$K,
41298
+ lineBreak: translator$1r,
41299
+ table: translator$s,
41300
+ tableRow: translator$Z,
41289
41301
  tableCell: translator$c,
41290
41302
  bookmarkStart: translator$7,
41291
41303
  bookmarkEnd: translator$6,
41292
41304
  fieldAnnotation: translator$8,
41293
- tab: translator$1a,
41305
+ tab: translator$1p,
41294
41306
  image: translator$9,
41295
- hardBreak: translator$1c,
41307
+ hardBreak: translator$1r,
41296
41308
  commentRangeStart: commentRangeStartTranslator,
41297
41309
  commentRangeEnd: commentRangeEndTranslator,
41298
41310
  commentReference: () => null,
@@ -41653,7 +41665,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
41653
41665
  }
41654
41666
  const isLinkNode = node.marks?.some((m2) => m2.type === "link");
41655
41667
  if (isLinkNode && !extraParams?.linkProcessed) {
41656
- return translator$Z.decode(params2);
41668
+ return translator$1c.decode(params2);
41657
41669
  }
41658
41670
  const { text, marks = [] } = node;
41659
41671
  return getTextNodeForExport(text, marks, params2);
@@ -41913,7 +41925,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
41913
41925
  markElement.type = "element";
41914
41926
  break;
41915
41927
  case "underline": {
41916
- const translated = translator$16.decode({
41928
+ const translated = translator$1l.decode({
41917
41929
  node: {
41918
41930
  attrs: {
41919
41931
  underlineType: attrs.underlineType ?? attrs.underline ?? null,
@@ -41977,7 +41989,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
41977
41989
  break;
41978
41990
  case "highlight": {
41979
41991
  const highlightValue = attrs.color ?? attrs.highlight ?? null;
41980
- const translated = translator$1b.decode({ node: { attrs: { highlight: highlightValue } } });
41992
+ const translated = translator$1q.decode({ node: { attrs: { highlight: highlightValue } } });
41981
41993
  return translated || {};
41982
41994
  }
41983
41995
  case "link":
@@ -42356,6 +42368,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
42356
42368
  this.fonts = params2?.fonts || {};
42357
42369
  this.addedMedia = {};
42358
42370
  this.comments = [];
42371
+ this.inlineDocumentFonts = [];
42359
42372
  this.docHiglightColors = /* @__PURE__ */ new Set([]);
42360
42373
  this.xml = params2?.xml;
42361
42374
  this.declaration = null;
@@ -42642,6 +42655,23 @@ Please report this to https://github.com/markedjs/marked.`, e) {
42642
42655
  return result;
42643
42656
  }
42644
42657
  getDocumentFonts() {
42658
+ const inlineDocumentFonts = [...new Set(this.inlineDocumentFonts || [])];
42659
+ const fontTable = this.convertedXml["word/fontTable.xml"];
42660
+ if (!fontTable) {
42661
+ return inlineDocumentFonts;
42662
+ }
42663
+ const wFonts = fontTable.elements?.find((element) => element.name === "w:fonts");
42664
+ if (!wFonts) {
42665
+ return inlineDocumentFonts;
42666
+ }
42667
+ if (!wFonts.elements) {
42668
+ return inlineDocumentFonts;
42669
+ }
42670
+ const fontsInFontTable = wFonts.elements.filter((element) => element.name === "w:font").map((element) => element.attributes["w:name"]);
42671
+ const allFonts = [...inlineDocumentFonts, ...fontsInFontTable];
42672
+ return [...new Set(allFonts)];
42673
+ }
42674
+ getFontFaceImportString() {
42645
42675
  const fontTable = this.convertedXml["word/fontTable.xml"];
42646
42676
  if (!fontTable || !Object.keys(this.fonts).length) return;
42647
42677
  const fonts = fontTable.elements.find((el) => el.name === "w:fonts");
@@ -42655,6 +42685,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
42655
42685
  const rels = this.convertedXml["word/_rels/fontTable.xml.rels"];
42656
42686
  const relationships = rels?.elements.find((el) => el.name === "Relationships") || {};
42657
42687
  const { elements } = relationships;
42688
+ const fontsImported = [];
42658
42689
  let styleString = "";
42659
42690
  for (const font of fontsToInclude) {
42660
42691
  const filePath = elements.find((el) => el.attributes.Id === font.attributes["r:id"])?.attributes?.Target;
@@ -42671,6 +42702,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
42671
42702
  const isItalic = font.name.includes("Italic");
42672
42703
  const isLight = font.name.includes("Light");
42673
42704
  const fontWeight = isNormal ? "normal" : isBold ? "bold" : isLight ? "200" : "normal";
42705
+ if (!fontsImported.includes(font.fontFamily)) {
42706
+ fontsImported.push(font.fontFamily);
42707
+ }
42674
42708
  styleString += `
42675
42709
  @font-face {
42676
42710
  font-style: ${isItalic ? "italic" : "normal"};
@@ -42681,7 +42715,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
42681
42715
  }
42682
42716
  `;
42683
42717
  }
42684
- return styleString;
42718
+ return {
42719
+ styleString,
42720
+ fontsImported
42721
+ };
42685
42722
  }
42686
42723
  getDocumentInternalId() {
42687
42724
  const settingsLocation = "word/settings.xml";
@@ -42736,6 +42773,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
42736
42773
  this.numbering = result.numbering;
42737
42774
  this.comments = result.comments;
42738
42775
  this.linkedStyles = result.linkedStyles;
42776
+ this.inlineDocumentFonts = result.inlineDocumentFonts;
42739
42777
  return result.pmDoc;
42740
42778
  } else {
42741
42779
  return null;
@@ -45697,7 +45735,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
45697
45735
  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);
45698
45736
  var __privateSet = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), member.set(obj, value), value);
45699
45737
  var __privateMethod$1 = (obj, member, method) => (__accessCheck$1(obj, member, "access private method"), method);
45700
- 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;
45738
+ 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;
45701
45739
  var GOOD_LEAF_SIZE = 200;
45702
45740
  var RopeSequence = function RopeSequence2() {
45703
45741
  };
@@ -58766,6 +58804,29 @@ Please report this to https://github.com/markedjs/marked.`, e) {
58766
58804
  }
58767
58805
  return false;
58768
58806
  };
58807
+ function canRenderFont(fontName, fallbackFont = "sans-serif") {
58808
+ const _canRenderFont = (fontName2, fallbackFont2) => {
58809
+ const canvas = document.createElement("canvas");
58810
+ const ctx2 = canvas.getContext("2d");
58811
+ ctx2.textBaseline = "top";
58812
+ const text = "abcdefghijklmnopqrstuvwxyz0123456789";
58813
+ ctx2.font = `72px ${fallbackFont2}`;
58814
+ const initialTextMeasurement = ctx2.measureText(text);
58815
+ const fallbackWidth = initialTextMeasurement.width;
58816
+ const fallbackHeight = initialTextMeasurement.actualBoundingBoxDescent;
58817
+ ctx2.font = `72px "${fontName2}", ${fallbackFont2}`;
58818
+ const customTextMeasurement = ctx2.measureText(text);
58819
+ const customFontWidth = customTextMeasurement.width;
58820
+ const customFontHeight = customTextMeasurement.actualBoundingBoxDescent;
58821
+ const isAvailable = customFontWidth !== fallbackWidth || customFontHeight !== fallbackHeight;
58822
+ return isAvailable;
58823
+ };
58824
+ if (_canRenderFont(fontName, fallbackFont)) {
58825
+ return true;
58826
+ }
58827
+ const oppositeFallbackFont = fallbackFont === "sans-serif" ? "serif" : "sans-serif";
58828
+ return _canRenderFont(fontName, oppositeFallbackFont);
58829
+ }
58769
58830
  const { findChildren: findChildren$3 } = helpers;
58770
58831
  function getAllFieldAnnotations(state2) {
58771
58832
  let fieldAnnotations = findChildren$3(state2.doc, (node) => node.type.name === "fieldAnnotation");
@@ -59815,6 +59876,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
59815
59876
  __publicField$1(this, "schema");
59816
59877
  __publicField$1(this, "view");
59817
59878
  __publicField$1(this, "isFocused", false);
59879
+ __publicField$1(this, "fontsImported", []);
59818
59880
  __publicField$1(this, "options", {
59819
59881
  element: null,
59820
59882
  selector: null,
@@ -59875,6 +59937,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
59875
59937
  onPaginationUpdate: () => null,
59876
59938
  onException: () => null,
59877
59939
  onListDefinitionsChange: () => null,
59940
+ onFontsResolved: null,
59878
59941
  // async (file) => url;
59879
59942
  handleImageUpload: null,
59880
59943
  // telemetry
@@ -60851,6 +60914,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
60851
60914
  this.emit("beforeCreate", { editor: this });
60852
60915
  this.on("contentError", this.options.onContentError);
60853
60916
  this.mount(this.options.element);
60917
+ if (!this.options.isHeadless) {
60918
+ __privateMethod$1(this, _Editor_instances, checkFonts_fn).call(this);
60919
+ }
60854
60920
  this.on("create", this.options.onCreate);
60855
60921
  this.on("update", this.options.onUpdate);
60856
60922
  this.on("selectionUpdate", this.options.onSelectionUpdate);
@@ -60998,13 +61064,74 @@ Please report this to https://github.com/markedjs/marked.`, e) {
60998
61064
  }
60999
61065
  };
61000
61066
  initFonts_fn = function() {
61001
- const styleString = this.converter.getDocumentFonts();
61002
- if (styleString?.length) {
61067
+ const results = this.converter.getFontFaceImportString();
61068
+ if (results?.styleString?.length) {
61003
61069
  const style2 = document.createElement("style");
61004
- style2.textContent = styleString;
61070
+ style2.textContent = results.styleString;
61005
61071
  document.head.appendChild(style2);
61072
+ this.fontsImported = results.fontsImported;
61073
+ }
61074
+ };
61075
+ checkFonts_fn = async function() {
61076
+ if (!this.options.onFontsResolved || typeof this.options.onFontsResolved !== "function") {
61077
+ return;
61078
+ }
61079
+ if (this.options.isHeadless) {
61080
+ return;
61081
+ }
61082
+ const fontsUsedInDocument = this.converter.getDocumentFonts();
61083
+ if (!("queryLocalFonts" in window)) {
61084
+ console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
61085
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
61086
+ this.options.onFontsResolved({
61087
+ documentFonts: fontsUsedInDocument,
61088
+ unsupportedFonts
61089
+ });
61090
+ return;
61091
+ }
61092
+ const localFontAccess = await navigator.permissions.query({ name: "local-fonts" });
61093
+ if (localFontAccess.state === "denied") {
61094
+ console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
61095
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
61096
+ this.options.onFontsResolved({
61097
+ documentFonts: fontsUsedInDocument,
61098
+ unsupportedFonts
61099
+ });
61100
+ return;
61101
+ }
61102
+ try {
61103
+ const localFonts = await window.queryLocalFonts();
61104
+ const uniqueLocalFonts = [...new Set(localFonts.map((font) => font.family))];
61105
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithLocalFonts_fn).call(this, fontsUsedInDocument, uniqueLocalFonts);
61106
+ this.options.onFontsResolved({
61107
+ documentFonts: fontsUsedInDocument,
61108
+ unsupportedFonts
61109
+ });
61110
+ } catch {
61111
+ console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
61112
+ const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
61113
+ this.options.onFontsResolved({
61114
+ documentFonts: fontsUsedInDocument,
61115
+ unsupportedFonts
61116
+ });
61006
61117
  }
61007
61118
  };
61119
+ determineUnsupportedFontsWithLocalFonts_fn = function(fonts, localFonts) {
61120
+ const unsupportedFonts = fonts.filter((font) => {
61121
+ const isLocalFont = localFonts.includes(font);
61122
+ const isFontImported = this.fontsImported.includes(font);
61123
+ return !isLocalFont && !isFontImported;
61124
+ });
61125
+ return unsupportedFonts;
61126
+ };
61127
+ determineUnsupportedFontsWithCanvas_fn = function(fonts) {
61128
+ const unsupportedFonts = fonts.filter((font) => {
61129
+ const canRender = canRenderFont(font);
61130
+ const isFontImported = this.fontsImported.includes(font);
61131
+ return !canRender && !isFontImported;
61132
+ });
61133
+ return unsupportedFonts;
61134
+ };
61008
61135
  createSchema_fn = function() {
61009
61136
  this.schema = this.extensionService.schema;
61010
61137
  };
@@ -69761,6 +69888,15 @@ Please report this to https://github.com/markedjs/marked.`, e) {
69761
69888
  widthUnit: {
69762
69889
  default: "px",
69763
69890
  rendered: false
69891
+ },
69892
+ /**
69893
+ * @category Attribute
69894
+ * @param {TableCellProperties} tableCellProperties - Properties for the table cell.
69895
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 463
69896
+ */
69897
+ tableCellProperties: {
69898
+ default: null,
69899
+ rendered: false
69764
69900
  }
69765
69901
  };
69766
69902
  },
@@ -95470,7 +95606,7 @@ ${style2}
95470
95606
  }
95471
95607
  };
95472
95608
  const GenericPopover = /* @__PURE__ */ _export_sfc$1(_sfc_main$2$1, [["__scopeId", "data-v-cbddcc0f"]]);
95473
- const BlankDOCX$1 = "data:application/octet-stream;base64,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";
95609
+ const BlankDOCX$1 = "data:application/octet-stream;base64,UEsDBBQAAAAIAAAAIQAykW9XXgEAAKUFAAATABwAW0NvbnRlbnRfVHlwZXNdLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1lMtqwzAQRfeF/oPRNthKuiilxMmij2UbaPoBijRORPVCmrz+vuM4NaWkMeSxMcgz994zQsxwvLEmW0FM2ruSDYo+y8BJr7Sbl+xz+po/sCyhcEoY76BkW0hsPLq9GU63AVJGapdKtkAMj5wnuQArUuEDOKpUPlqBdIxzHoT8EnPgd/3+PZfeITjMsfZgo+EzVGJpMHvZ0O+GJIJJLHtqGuuskokQjJYCqc5XTv1JyfcJBSl3PWmhQ+pRA+MHE+rK/wF73TtdTdQKsomI+CYsdfG1j4orL5eWlMVxmwOcvqq0hFZfu4XoJaREd25N0Vas0K7XxeGWdgaRlJcHaa07IRJuDaTLEzS+3fGASIJrAOydOxHWMPu4GsUv806QinKnYmbg8hitdScE0hqA5js4m2NncyySOifRh0RrJZ4w9s/eqNU5DRwgoj7+6tpEsj57PqhXkgJ1IJvvluzoG1BLAwQKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAcAGRvY1Byb3BzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhACEYr1llAQAAxQIAABAAHABkb2NQcm9wcy9hcHAueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ1STU/DMAy9I/Efqt63dBwmNHlBaAhx4GPSCpyjxG0j0iRKson9e5wVSoEbOdnP9st7TuDqvTfFAUPUzq7LxbwqC7TSKW3bdflc384uyyImYZUwzuK6PGIsr/j5GWyD8xiSxlgQhY3rskvJrxiLssNexDmVLVUaF3qRKA0tc02jJd44ue/RJnZRVUuG7wmtQjXzI2E5MK4O6b+kysmsL77UR098HGrsvREJ+WOeNHPlUg9sRKF2SZha98grgscEtqLFyBfAhgBeXVAx9wwBbDoRhEy0vwxOMrj23mgpEu2VP2gZXHRNKp5OYos8DWzaAmRgh3IfdDpmqmkK99ri6YIhIFVBtEH47gROMthJYXBD1nkjTERg3wBsXO+FJTo2RsT3Fp997W7yFj5HfoITi686dTsvJP4yO8FhRygqUj8KGAG4o8cIJrPTrG1RffX8LeT1vQy/ki+W84rOaV9fGLkevwv/AFBLAwQUAAAACAAAACEACvOn+GYBAADtAgAAEQAcAGRvY1Byb3BzL2NvcmUueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ2SXU+DMBSG7038D6T3UGBqDAGWTLMrZ0yc0XhX27Otjn6k7cb27y0wmMRdeXc+nvP29G3z6UFUwR6M5UoWKIliFICkinG5LtDbch7eo8A6IhmplIQCHcGiaXl9lVOdUWXgxSgNxnGwgVeSNqO6QBvndIaxpRsQxEaekL65UkYQ51OzxprQLVkDTuP4DgtwhBFHcCMY6kERnSQZHST1zlStAKMYKhAgncVJlOAz68AIe3Gg7fwiBXdHDRfRvjnQB8sHsK7rqJ60qN8/wR+Lp9f2qiGXjVcUUJkzmjnuKihzfA59ZHdf30BdVx4SH1MDxClTPnO6DWZgJKlapq83jm/hWCvDrJ8eZR5jYKnh2vl37LRHBU9XxLqFf9gVBzY7jo/5224mDOx58y/KtCWGND+Z3K0GLPDmZJ2Vfed98vC4nKMyjdObMEnD5G6Zpll8m8XxZ7PdaP4sKE4L/FuxF+gMGn/Q8gdQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAYAHABfcmVscy9VVAkAA4Yc7WiHHO1odXgLAAEE9QEAAAQUAAAAUEsDBBQAAAAIAAAAIQAekRq36QAAAE4CAAALABwAX3JlbHMvLnJlbHNVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAArZLBasMwDEDvg/2D0b1R2sEYo04vY9DbGNkHCFtJTBPb2GrX/v082NgCXelhR8vS05PQenOcRnXglF3wGpZVDYq9Cdb5XsNb+7x4AJWFvKUxeNZw4gyb5vZm/cojSSnKg4tZFYrPGgaR+IiYzcAT5SpE9uWnC2kiKc/UYySzo55xVdf3mH4zoJkx1dZqSFt7B6o9Rb6GHbrOGX4KZj+xlzMtkI/C3rJdxFTqk7gyjWop9SwabDAvJZyRYqwKGvC80ep6o7+nxYmFLAmhCYkv+3xmXBJa/ueK5hk/Nu8hWbRf4W8bnF1B8wFQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAHAB3b3JkL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAHAB3b3JkL2ZvbnRUYWJsZS54bWxVVAkAA54c7WieHO1odXgLAAEE9QEAAAQUAAAAvZPBbqMwEIbvlfoOlu8NhpA0RSFV222kvexh1T6AY0ywFtvI44Tk7dcYiBSyuy3tqiCEGf75mPnHLO8PskR7bkBoleJwQjDiiulMqG2KX1/WNwuMwFKV0VIrnuIjB3y/ur5a1kmulQXk8hUkkqW4sLZKggBYwSWFia64ci9zbSS17tFsA0nNr111w7SsqBUbUQp7DCJC5vj6CrmjZZn3oHSeC8a/abaTXFkPCQwvHVYrKEQFZ8j6Pcham6wymnEA170sW6ikQp2zwviCJgUzGnRuJ663rjbPc4yQ+JUsB5TZOEr0Z8qc8cM40KIDBS7zAiaycbD5CSayIexjZQ0p2W4UJ5r2FTW3Jn0IhMxmxThmP8GgyaWWFhSKCywf1+/sxDxKNwgkWfJ9q7Shm9KR3CZDbosgD0btZJobaieO+j6Qdwiv2mK6nxLViaLSUV6E5IB+8Br91JKqXtZJK6o08NCp97RMMWkanZMpmZHYXZFbxTg4T2EFNcDtKYUMBTmVojz2743/6kBSCcuKXrGnRjQdD0Ugtk6ygw1J8TMhJHper3EbCVP85CK3i9ljF4maSvxx10WmpwhpIsxz/GPYcpjnnDT915dB6+Bf/HzSOyO4aRx908tb59+d97TxMv60l1Jn3PzbzFwcePYRJ+PpVzv54MZevunho9uPsfewPT/rIdQC4P/sx4evdrFfwuo3UEsDBBQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABwAd29yZC9kb2N1bWVudC54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAApZZbb9sgFMffJ+07WH5v8S1OYjWttGab+jCpWrcPQIDEqAYsILd9+h3s+LJ5qxz3CXPg/PjDORxz93AShXdg2nAlV354G/gek0RRLncr/+ePLzcL3zMWS4oLJdnKPzPjP9x//HB3zKgie8Gk9QAhTXYsycrPrS0zhAzJmcDmVnCilVFbe0uUQGq75YSho9IURUEYVF+lVoQZA+s9YnnAxr/gyGkcjWp8BGcHTBDJsbbs1DHCqyEztESLISiaAIIdRuEQFV+NSpFTNQAlk0CgakCaTSP9Y3PpNFI0JM2nkeIhaTGNNEgnMUxwVTIJg1ulBbbQ1TsksH7dlzcALrHlG15wewZmkDYYzOXrBEXg1RJETK8mzJFQlBUxbShq5e+1zC7+N62/k57V/pem9WDFuGVhuSViJ1sY2/jqMWdXu68vhaU6NaRZAeeopMl52VYHMZUGg3kDObx1AAdR+G1lC0detf+VtnUdhg44Rv4ldqKolb9NDIMR0XSI1mOMhD/XbJQIyOBu4UlH0zvccGTxaQDRAJASNvJn0TAWFwYi3e12HD7yWjWctOVw2uNME9MD0P1ViChudLjGufdYhlqaX4drYoScL7Y4xybvE9l1G5y1uLPonXe5e9+l+qrVvuxo/H20p668HuV1GwzSvyNYmveJeclxCVVXkOxpJ5XGmwIUwVXz4LZ4VQS8Ol1d49U3wGti7VUJ5Lmq5d/DO22j6Nm1JQwkWYk1foI0T8JlmqTz0K+s8Jezzhoks+VivpyBNYM3If0OJkiveD3/1JqetTPGYZA8fm6Na7bF+8IOpz/3JiMnwzBin/VYfiV89/ILBqFihVGUBG4iJHQ4W8A3qid8w45oFRTWMKmnaL7LbdfdKGuV6PoF2/ZGc4Ypg3XnUdXdKmV73d3eVt3LckQVBqymxITVcyozvIe/aheSrOCSPXNLQGWcVqOo2Xf1WUcEdU/o+99QSwMEFAAAAAgAAAAhAMrnZYorBAAAvgwAABEAHAB3b3JkL3NldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1V22PmzgQ/n7S/QfE58uG1ySLmq3yervV5lqVre6zAZNYa2Nkm03T0/33GwwO9BZVSav9hJln5pnxeGYM795/ZdR6wUISXsxt98axLVykPCPFfm5/edqOZrYlFSoyRHmB5/YJS/v93e+/vTtGEisFatICikJGLJ3bB6XKaDyW6QEzJG94iQsAcy4YUvAq9mOGxHNVjlLOSqRIQihRp7HnOBO7peFzuxJF1FKMGEkFlzxXtUnE85ykuH0YC3GJ38ZkzdOK4UJpj2OBKcTAC3kgpTRs7GfZADwYkpcfbeKFUaN3dJ0LtnvkIjtbXBJebVAKnmIp4YAYNQGSonMcvCI6+74B3+0WNRWYu45e9SMPryPwXhFMUvz1Oo5ZyzEGyz4Pya7jmZx5SNbj+blgegRZdRWF55s46kdt3uOSmcoO19GZMxrXtkihA5KHPiO+boPhme7EunxLekkFNtAjSQQSp375sTR62BdcoIRCOFCGFlSSpaOzmqOsH1ZTHZbJg6WTa9/B1PnGObOOUYlFCq0HI8tz7HENQMHzPFZIAVEkS0ypnmEpxQj8HqO9QAymj5FomwznqKLqCSWx4iUovSDY3tRQpgckUKqwiEuUAtuKF0pwavQy/hdXK5hkAhqttdBzrVvFzYwEiwIx2PB3c2/HM1xHVgly+cnYxrsb9l3+3xGHmS5Ihp/qRMfqRPEWgo/JN7wosg+VVAQY9fT7hQh+FAAuas8foTSeTiXeYqQqSNMbOdMnsaWk3BEhuHgoMqiNN3NG8hwLcECg1nZQPkTwo87zPUYZXKVv5LeS+G9Qhs70n6Asn5dcKc7uT+UBcv1rJ6nrfdwvX/ggyKRZfOZcnVVhbPnr6bKJtEYvQXzXCVabQWTibN1hm0XgO/4gsnLXbjCMhLPlaggJboOJuxhCJqG3CcIhZLH0Zv5sCFku3Wk4iKxW/srfDiIbZz28n83Km04HY9vees7tpj2d9kxYVH9qfBJmVTe2xRqLFWKJIMja1R8j41ojEc9LUhg8wTClcR+Jq8SAo1EDSIYo3UKJGcBp5BmR5Rrnek13SOw73lZDDEphyn44c9VTG4s/Ba/KBj0KVDYNa1TcIGgtSaEeCTNyWSWxsSrgXulBVZF9fBE6T116jpGCBtCD7xHpRtK6uBh9idtGoyKumwTvUFk2vZbs3blNyf6g3Lo9FLxl8M2qX5K912KexrwG0y8orXcG2u2ik3lG1tPzjczvZIGRBZ0sNLKwk02MbFLLDjBdBVx1z9D2ZlnLc04pP+LsvsNficwlmBI48fjEku5uu2kwSiTMoRKuQcWFwf7QmBtEGU8f6vs6aOT+YhGuF860gUN9fSo9qiC1n3G+RBJnLWZMw8b0n8nEmbjuajYKZpvb0WYaBKOZu7wdTafO1PW3rufPnH/bPjA/Hnf/AVBLAwQUAAAACAAAACEA24Vsw30EAACXHQAAEgAcAHdvcmQvbnVtYmVyaW5nLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAADNmc1u4zYQx+8F+g6CgB4Tifq2sM4iySZFFttF0U3RMy3RlhB+CBRlx9d9mT5CH2tfoaRkyXLkxJIctz4pJjk/zQxnyL+dDx+fCdaWiOcpo1MdXJq6hmjE4pQupvqfj/cXga7lAtIYYkbRVF+jXP949fNPH1YhLcgMcblQkwyah6ssmuqJEFloGHmUIALzS5JGnOVsLi4jRgw2n6cRMlaMx4ZlArP8K+MsQnkuObeQLmGub3DRcz9azOFKGiugY0QJ5AI9bxlgMMQ1JkbQBVkjQDJCC3RR9mCUZyivOiBnFEh61SG540h7gvPGkawuyR9HsrukYBypU06kW+AsQ1ROzhknUMiPfGEQyJ+K7EKCMyjSWYpTsZZM06sxMKVPIzySVg2B2PFggm8QFiNsxzWFTfWC03Bjf9HYK9fDyn7zaCwQ7vda+bqJgZ4FzkVty/vkrjL/xKKCICrKrBkcYZlHRvMkzZrTgYylycmkhizfSsCSYL052UDPVnvtaPtUbcMW2Mf9zd4RXHn+NhGYPXZTIRqLPi7svrP2hMgK3r54VGpayQU9D58aYHUAXoR6XhY1I9gwjGjb3YqT9myrmuM1nDRuccY50wLExSCEZdd+qIcyb7HyWMTJMFy9R4ayhQImME/aRDQsQLfBrUkr39niuKb6lbMi29LS42gP2+N1RYcFaHovdzDLj3PmWwIzeeqSKHxYUMbhDEuPZKtpslu0cge0qlzVQ6s6QKv3WisLSFOnln4lhRqc5YLDSHwtiLbz6UFWuxR8khlyJFUeV4OVprueC8RvOIJPaomi0Fy9LVxCeQUAD1jejenrhpohBRbpF7RE+HGdoXpNsp7xNP5NzWE1V60VJMP1Chfc3Tp3ZlDN4KWaSOWjcioUGZb3remYE9M0QelD6WPjRGUnZeg9aQZnBcZINMRHeQfVUz++/9OMf47qUYzmm+XZ71w9UqrCVMNT3bdKTxJIF6Ugtj1TrTWaxXzzuGdU5Cq5eZTKOvy2JjOGS9NrmbedgZRKcIzmUGZmAyspRunYy0yATibsckTeZ/JSXCK14ujMsKF5AY4zLjG3rOAp4tpXtGpl58VolHcXDsua1cma+/5Z+/H976F5s4A3Lm9/ydXqO1neytru2LAE2Xsa7AQJGtxwVhD83x3nnGXHyTycdce5Z9pxjj3yCH/vjvPOtONcc+RR/n4d559lx7n+yLP6P+q44Ew7znNGHuHHd5yxo24PSl8wRvq6gW8C++b6OOl7d+c5wL91+kjf+57bGKMoJRDv3cdfwOU7a9+echVMRhYlZivEvyAh92J/RNbgiA6p1p5aEtwcE9IfjEC6PyJ7X0Q8XSQDBCUIeoTUVX/3I0N6s+acwTt0SP71VGynKzp3cEiHhFtPOXWyovOGF11HU/Uquq4AOknR+YN36JAC6ilaTld0wfCQDmiXnoriZEU3GV50HVnxStF1NQAt737auvPVD2dhXJQ/q5WDMlTHn3jWy5/LHpprv34X3cO09jGdwHWB7wDwOhO0mUbrH6pX/wJQSwMEFAAAAAgAAAAhAL5+dmJWAQAA0AMAABQAHAB3b3JkL3dlYlNldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAACd01FvwiAQAOD3JfsPhHelumlMYzVZFpe9LEu2/QAKV0sGXAO46n79aLWuiy92T0DLfbnjYLneG02+wHmFNqOTcUIJWIFS2W1GP943owUlPnAruUYLGT2Ap+vV7c2yTmvI3yCEuNOTqFifGpHRMoQqZcyLEgz3Y6zAxp8FOsNDXLotM9x97qqRQFPxoHKlVTiwaZLM6Ylx1yhYFErAI4qdARvaeOZARxGtL1XlO62+RqvRycqhAO9jPUYfPcOVPTOT+wvIKOHQYxHGsZhTRi0VwydJOzP6F5gNA6YXwFzAfpixOBksRvYdJYc587OjZM/5XzI9QO4GEdO7Lo9maMJ7lpdBlsO4rkesieWBl9yXfRGGFTg7cwfTnLcR6fPWouO5jlK8QSReAtLC5NiFZiDHxpKuBNKeC13FJ4ZVUEZ9wwbdg8Pag2PNZ6411q8vT3HB/rzD1Q9QSwMEFAAAAAgAAAAhAD+v4WZfDwAADaYAAA8AHAB3b3JkL3N0eWxlcy54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA3Z1tc9s2Esff38x9B45e9V6ksp5lT92O7STnzCWpWzvX1xAJWaj5oCOpOO6nPwB8EKUlKC64UdRMZlqL4v4I4L+7xIIU+dMvXwLf+czjREThZW/w41nP4aEbeSJ8vOx9enj7at5zkpSFHvOjkF/2XnjS++Xnf/7jp+eLJH3xeeJIQJhcBO5lb5Wm64t+P3FXPGDJj9Gah/LLZRQHLJUf48d+wOKnzfqVGwVrloqF8EX60h+enU17OSZuQ4mWS+Hy15G7CXiYavt+zH1JjMJkJdZJQXtuQ3uOYm8dRy5PEtnpwM94ARNhiRmMASgQbhwl0TL9UXYmb5FGSfPBmf4r8LeACQ4wBICpy7/gGPOc0ZeWVY7wcJxpyRFehWPXmArA26AQw1HRDvU/ZV5hJV7qrXC4QqO+smUpW7FkVSVyXAcnJe4lUOMduBfvHsMoZgtfkqQHOdIJHA12MhXU/5xMWKfogqPHpfezjC4vcl/zJdv4aaI+xndx/jH/pP/3NgrTxHm+YIkrxGXvKhZMDvHzBWdJepUI9iBbLg8fCNmS26swEerLlfqjsrObXPYeRCBD+SN/dn6PAhY6P1xH3otzc/+vXl8d6InHodzzM/Mve8NsU/JXuWFcbLlJ9rf5LHwstvHw1af7ausqmxbCk01i8av7K204GF/44pGlm1g2S33ShCwRxd6N7Db/km5k++XO/Xw8+vujtC4/ZXvtDalMGDJ93GdZTH7Ll+8j94l796n84rJ31ss2fnp3F4solpnqsnd+nm+854G4FZ7Hw8qO4Up4/I8VDz8l3Ntu/+2tzjb5BjfahPLv0WyqZfYT780Xl69V7pLfhkzp9VEZaG02Yntwbf6/AjbIB7jOfsWZSuDOYB9xjkYMlUVS6W09c7PX9wH6QKNjHWh8rANNjnWg6bEONDvWgebHOtD51z6QCD2Z3wf1hwHUQxxDNKI5hmBDcwyxhOYYQgXNMUQCmmNwdDTH4MdojsFNEZw0ck1eWHH2kcHbm7mHzxF23MOnBDvu4TOAHfdwwrfjHs7vdtzD6dyOezh723EPJ2s8N5tqOe9kmIVp5yhbRlEaRil31PS0M42FkqWrWhqeOunxmKSTBJgss+Un4s40l+nPhz1k0u18nqqCzomWzlI8quKkc8N5+Jn70Zo7zPMkjxAYc1k+GUbExqdjvuQxD11O6dh0UF+E3Ak3wYLAN9fskYzFQ494+AoiSVIoHZpt0pUKEkHg1AFz44hgzsLI8sN7kXQfKwVxrje+z4lYH2lcTLO61wYa07000JjulYHGdC8MKppRDVFOIxqpnEY0YDmNaNwy/6Qat5xGNG45jWjcclr3cXsQqc/3Zx2D9mt3N36UUCS8e/EY6vXTzqR8zdS5YzF7jNl65ahl54MzLfRx9JLzA8U5rSRRzeu1i6hVZxFuug/oDo0quEoeUXiVPKIAK3ndQ+yDnCarCdotTT1zv1mktUHbviq4Z/4mm9B2jzaWdvewbQC8FXFCFgb1WAIP/qims7dEU71tK7s3bMvqHlb7WYm0eTmSoJV+5D7RpOHblzWPZVn21Jn0NvL96Jl7dMT7NI4yX6uG/HDYOuTfBOsVS0QCEO1P9cUdDM4Htu7coTufiZBGtzevAiZ8h24Gcfvw4b3zEK1VmakGhgZ4HaVpFJAx85XAH/7gi3/RNPBKFsHhC1Fvr4iWhzTsRhCcZDJS5BGR5DRThILkHKp5/+Evi4jFHg3tLubZTUMpJyLes2DtU8WWzIvPMv8QzIY0778sFmpdiCqoHkhglWXDZLP4k7vdU93HyCFZGfp1k+r1Rz3V7X61dwfXfZqwg+s+RdBqytOD8l+Czu7gund2B0fV2RufJYkwXkK15lF1t+BR97d78ZfzIj+KlxufbgALINkIFkCyIYz8TRAmlD3WPMIOax51fwldRvMIluQ079+x8MjE0DAqJTSMSgYNo9JAw0gF6H6HTgXW/TadCqz7vToZjGgKUIFR+Rnp6Z/oKk8FRuVnGkblZxpG5WcaRuVno9cOXy7lJJjuFFNBUvlcBUl3oglTHqyjmMUvRMg3Pn9kBAukGe0ujpbq1yRRmN3ETTGd3SxSysl2hqMS+Q++IGuaYlG2i2BFlPl+FBGtrW1PONpy9961Q2b65xydm3DnM5evIt/jsaFPjfXy/Zq5Ai6dtr9Y8l48rlLnflWu9lcx07ODlkXBvmN2+IB1Yz4dNl5m8sQmKBoKf0wxHbU3HgLj8WHj7Uxix3LS0hIec3rYcjtL3rGctbSEx5y3tBwBy6Z4eM3ip1pHmDX5T1njGZxv1nhhvjCuPWyTI5WWdS44a/KinVBxrlxXXS2A6rSLGbN9u+Ax22OiyEzBhJOZ0jquzIimAPudfxZJ7Rr1gevf5d0TIO+PW2fO3zZRCi5TD9v/qOudnDiFCXdqOaP2F652sox5HFunGzOidd4xI1onIDOiVSYymqNSkpnSOjeZEa2TlBmBzlbwjIDLVtAel62gvU22ghSbbNVhFmBGtJ4OmBHoQIUIdKB2mCmYEahABeZWgQop6ECFCHSgQgQ6UOEEDBeo0B4XqNDeJlAhxSZQIQUdqBCBDlSIQAcqRKADFSLQgWo5tzeaWwUqpKADFSLQgQoR6EAddwxUaI8LVGhvE6iQYhOokIIOVIhABypEoAMVItCBChHoQIUIVKACc6tAhRR0oEIEOlAhAh2ok46BCu1xgQrtbQIVUmwCFVLQgQoR6ECFCHSgQgQ6UCECHagQgQpUYG4VqJCCDlSIQAcqRKADddoxUKE9LlChvU2gQopNoEIKOlAhAh2oEIEOVIhABypEoAMVIlCBCsytAhVS0IEKEehAhYgm/8wvUZpusx/gVz2Nd+wjfueTNer36k+5d9ZQ26OKVplZ7X+LcB1FT07tDw9Ho/YQsfBFpJeoDZfVq9wZ+sLnrzfNv/Bp8RiPtl3Jfwuhr5kC+LitJVhTGTe5fNUSFHnjJk+vWoJZ57gp+1YtwWlw3JR0dVwWN6XI0xEwbkozFeOBwbwpW1fM4RA35eiKIRzhpsxcMYQD3JSPK4YTRyXnfetJy3GalveXAkKTO1YIMzOhyS2hVsa1/daimQlt1TMT2spoJqD0NGLwwppRaIXNKDupYZhhpbYPVDMBKzUkWEkNMPZSQ5S11BBlJzVMjFipIQErtX1yNhOspAYYe6khylpqiLKTGp7KsFJDAlZqSMBK3fGEbMTYSw1R1lJDlJ3UcHKHlRoSsFJDAlZqSLCSGmDspYYoa6khyk5qUCWjpYYErNSQgJUaEqykBhh7qSHKWmqIapJar6LYV0sVc9wkrGKIOyFXDHHJuWJoUS1VrC2rpQrBslqCWtlVS1XR7Kqlqnp21VJVRrtqCehpVy3VCmtXLdUqbFctmaXGVUt1UtsHql21VCc1rloySo2rlhqlxlVLjVLjqiWz1LhqqU5qXLVUJ7V9crarloxS46qlRqlx1VKj1LhqySw1rlqqkxpXLdVJjauW6qTueEK2q5YapcZVS41S46ols9S4aqlOaly1VCc1rlqqkxpXLRmlxlVLjVLjqqVGqXHVkllqXLVUJzWuWqqTGlct1UmNq5aMUuOqpUapcdVSo9S4aumDNBEEj4C6D1icOnTPi7tlySpl3R9O+CmMeRL5n7nn0Hb1PaqX/eed118ptn6dn9w/lWOmnoBe+bmSlz0BNgfqHd955WuqlLFqiZO/5yvfrBucX67NjqgNDxyqhOfXigcAv325lT7Cgsle/RrWHTxUD0as2a4cotheHOZmxeLs262rFvuc7/fl+SJO1Avcsq/Pzoaj0evZdbbXOns12xPn64/y+P3ig9SHJ/pTkv2AVpov1DPF5AiMpvq3V2yZ8viyN8+jNsqe2vT+s18eKZcuP0btW+CKV76xPyuvfNt/H5z68k2+TX2vXwlXa+kmaWXztfBE1jhXRXnZrrfj2VT7ht5ZZ4DLHtPxv92sbkpR9xm8zQjbF8gVF5urL5AbF30tXu1m4zxDo/MMKZ1n2MJ5tmGZ7bcTlF/ZvQYt3WvwfbrXaAjdK9vW0b1GRvcaUbrX6Dtxr2Gzex1yomO4ynAOXSXb1tFVxkZXGVO6yvjEXWVe9ZSx0VNGX8dTRPbfm4TEbzp6xMToERNKj5h8Hx4xPs3c0dEHpkYfmFL6wPTEfcAs++ToiWByrv7tO4F609LWBR6EeoPv1ZTAA2ZGD5hResDsb+sB0yME/pE1nxs1n1NqPj8pzaGys6PH9nCm/rXR+TXFnO/cqPM5pc7nJ67z/AgRTK+sKweVufkD1Q3rX/mLkcon++jXIu1rbnh7kkGvQTu9zO1O1SpsQ5v1Km3jwl3+sHaTQ7X2qHThZ1LLP96FyqGe83fYZy31vrBeseMN9/0PLNs7Wpt39fkyzb4dnM1rvl9kr4Qw2sf62oER0N9tTL/shHm8s5dE5j9qMa6T6keGweHOHiXWcaRb+rC7SeTQ6OXe/fbtrIHut/K2WG51tnlmL3HVxoEpXQ0OpCpz8vle1qO6LHciJR02SjokknSIO/t8/wp3WXFEKjxqVHhEpPDoayn8d1/0Q6o1blRrTKTW+NTUOvbCG1KVSaMqEyJVJqemysnpMG3UYUqkw/TUdDjqahRSklmjJDMiSWanJslpiTBvFGFOJML81EQ46koOUpLzRknOiSQ5PzVJvslyWvZgi/2xzrZSrKNpUtMi2iAv2FBrZNtF7r0L4656fcWXdMP8/En6jctjxyyBtk3W3XpV9PuJx+XgbifLZXqcwunzhDgRbiWqdYOu4VbxJbP6p1m2Hl+z+iAtX6K9L1D5BUWoFrDGaB1YRGu4CbI/hA/vhyq/BDE9mB64Je+bTECAVwwm36Lm3RHL5BZdQ3fXvczecOJzxq8sWX3MZq8B2Fcm20oRrZrUFKpDmztrD92ANige3venW3BUEcvj2khtmGSOz9S/NhpS18PbgasVp2vMVBQ2a3IwYI46cvUOrC6fbN+rsT9We6/dOOTRcChGYwv3FPpSl7pQpZ6R12LO19Jdyk7nD44rn2a3323wuDuco9R4BOqEetg7jnifVT4W9Ylu920oFAmverimvDeyKSjW117lAqneL5GelL9X+y91j5yTZUeuJ61OPuyW6+PlpdSvfKT+tmeHfhgxKjJ7NcbmU90afWU3+0SS/L/peijwo0bX7Xo62AmSAx57cnHfmCO3z9Y0DeB2j65Zsrjmh8qSi+yo+WglMqn4N2xNM3ZgSjmpH9Hir+Tn/wNQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL3RoZW1lL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAHAB3b3JkL3RoZW1lL3RoZW1lMS54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA7VlPb9s2FL8P2HcgdHf1x5IsBXUL/23XJm3RpB16ZGRaYkyJAkknMYoCQ3vaZcCAbthlwG47DMMKrMCKXfZhCrTYug8xSnZs0abatE23AksMxCL5e48/vvf4+ExdvHycEnCIGMc0axv2BcsAKIvoCGdx27izN2wEBuACZiNIaIbaxgxx4/KlTz+5CLdEglIEpHzGt2DbSITIt0yTR7Ib8gs0R5kcG1OWQiGbLDZHDB5JvSkxHcvyzRTizAAZTKXam+MxjhDYK1Qal06UD4j8lwledESE7UbljFWJEjua2MUXn/EeYeAQkrYh5xnRoz10LAxAIBdyoG1Y5Z9hXrpoLoWIqJGtyA3Lv4XcQmA0cUo5Fu8vBa2BE7j2Ur8z17+JGwTFZ6mvBMAokiu1N7C251uBs8BWQPNHje6wZTdVfEV/c1N/6HcdV8E3V3h3c43DcND3FLy7wnsb+I7ldMOmgvdWeH8D7w46LWeg4EtQQnA22UT7rSDwF+glZEzJVS089H2r1V/AVyizEl1z+UzUxVoKDygbSkDpXChwBsQsR2MYSVwnF5SDPuY5gTMD5DCjXHZbjm3LwHMtZ/kpLQ63EKxIz7sivtFV8AE8YjgXbeOa1GpUIC+ePXv+8Onzh789f/To+cNfwDaOE6GRuwqzuCr36sev//7+C/DXrz+8evyNHs+r+Jc/f/ny9z9ep14otL598vLpkxffffXnT4818A6D+1X4Hk4RBzfQEbhNU7lAzQRon72dxF4CcVWik8UcZrCQ0aAHIlHQN2aQQA2ui1Q73mUyXeiAV6YHCuHdhE0F1gCvJ6kC3KGUdCnTrul6MVfVCtMs1k/OplXcbQgPdXP31rw8mOYy7rFOZS9BCs1bRLocxihDAhRjdIKQRuwexopdd3DEKKdjAe5h0IVYa5I9vC/0QldxKv0y0xGU/lZss3MXdCnRqe+jQxUp9wYkOpWIKGa8AqcCplrGMCVV5DYUiY7k7oxFisG5kJ6OEaFgMEKc62RusplC9zqUeUvr9h0yS1UkE3iiQ25DSqvIPp30EpjmWs44S6rYz/hEhigEt6jQkqDqDina0g8wq3X3XYzE2+3tOzIN6QOkGJky3ZZAVN2PMzKGSKe8w1IlxXYY1kZHdxorob2NEIFHcIQQuPOZDk9zqid9LZFZ5SrS2eYaVGO1aGeIy1qpKG40jsVcCdldFNMaPjuztcQzg1kKWZ3mGxM1ZAb7TG5GXbySaKKkUsyKTasncZOn8FRabyVQCauizfXxOmPZ2+4xKXPwDjLorWVkYj+1bfYgQfqA2YMYbOvSrRSZ6kWK7VSKTbVyY3XTrtxgrhU9Kc7eUAH9N5XPB6t5zr7aqUso6zVOHW69sulRNsIff2HTh9PsFpJnyXldc17X/B/rmrr9fF7NnFcz59XMv1bNrAoYs3rZU2pJa29+xpiQXTEjaJuXpQ+Xe380lJ1loxRaXjTliXxcTKfgYgbLZ8Co+ByLZDeBuZzGLmeI+UJ1zEFOuSyfjFrdZfE1TXfoaHGPZ5/cbUoBKFb9lrfsl6WamPf6rdVF6FJ92Yp5lYBXKj09icpkKommhkSreToStnVWLEINi8B+HQuz4hV5OAFYXIt77pyRDDcZ0qPCT3P5E++euafrjKku29EsL3TPzNMKiUq4qSQqYZjIw2O9+4x9HYZ6VztaGq3gQ/ja3MwNJFNb4EjuuaYn1UQwbxtj+bNJPqa51MeLTAVJnLWNSCwM/S6ZJWdc9CFP5rByaL7+FAvEAMGpjPWqG0i24mY7LevjJRdaH5/lzHUno/EYRaKmZ9WUY3Ml2tH3BBcNOpWkd5PREdgnU3YbSkN5Lbsw4AhzsbTmCLNKcK+suJauFltReQO02qKQ5AlcnCjVZD6Hl89LOpV1lEzXV2XqTLgfD8/i1H2z0FrSrDlAWrVZ7MMd8hVWTT0rT5vrwsB6/Snx/gdChVqgp9bUU6s7O86wIKhM59fYzan15nueButRa1bqyrK18XKb7h/IyO/LanVKBJ9fkB3L8rt38lpyngnK3pPscizAlOG2cd/yOm7P8XoNK/AGDbfpWo3A6zQbHc9r2gPPtvpd54E0ikhS25vPPZQ/9sls8e6+7N94f5+elNoXIpqatKyDzVK4fH9vO/Xv7wGWlrnvO8OwGXb9RtjsDBtuvxs0wp7fbfT9Xqs/7Pe8IBw+MMBhCXY7zZ7rD4KGb/d6Dde3CvpB2Gi5jtNxW51g4HYeLGwtV37yfWLektelfwBQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL19yZWxzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhALO+ix3+AAAAtgMAABwAHAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQJAAMw0M4SiBztaHV4CwABBPUBAAAEFAAAAK2TzWrDMBCE74W+g9h7LTttQwmRcymBXFv3AWR7/UP1Y6RNWr99RUoShwbTg44zYme+hdV6860VO6DzvTUCsiQFhqaydW9aAR/F9uEFmCdpaqmsQQEjetjk93frN1SSwpDv+sGzkGK8gI5oWHHuqw619Ikd0ISXxjotKUjX8kFWn7JFvkjTJXfTDMivMtmuFuB29SOwYhzwP9m2afoKX22112joRgX3SBQ28yFTuhZJwMlJQhbw2wiLqAg0KpwCHPVcfRaz3ux1iS5sfCE4W3MQy5gQFGbxAnCUv2Y2x/Ack6GxhgpZqgnH2ZqDeIoJ8YXl+5+TnJgnEH712/IfUEsBAh4DFAAAAAgAAAAhADKRb1deAQAApQUAABMAGAAAAAAAAQAAAKSBAAAAAFtDb250ZW50X1R5cGVzXS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGrAQAAZG9jUHJvcHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhACEYr1llAQAAxQIAABAAGAAAAAAAAQAAAKSB7gEAAGRvY1Byb3BzL2FwcC54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEACvOn+GYBAADtAgAAEQAYAAAAAAABAAAApIGdAwAAZG9jUHJvcHMvY29yZS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UFOBQAAX3JlbHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAB6RGrfpAAAATgIAAAsAGAAAAAAAAQAAAKSBjgUAAF9yZWxzLy5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BvAYAAHdvcmQvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAGAAAAAAAAQAAAKSB+wYAAHdvcmQvZm9udFRhYmxlLnhtbFVUBQADnhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABgAAAAAAAEAAACkgVcJAAB3b3JkL2RvY3VtZW50LnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDK52WKKwQAAL4MAAARABgAAAAAAAEAAACkgXcMAAB3b3JkL3NldHRpbmdzLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDbhWzDfQQAAJcdAAASABgAAAAAAAEAAACkge0QAAB3b3JkL251bWJlcmluZy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAvn52YlYBAADQAwAAFAAYAAAAAAABAAAApIG2FQAAd29yZC93ZWJTZXR0aW5ncy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAP6/hZl8PAAANpgAADwAYAAAAAAABAAAApIFaFwAAd29yZC9zdHlsZXMueG1sVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BAicAAHdvcmQvdGhlbWUvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAGAAAAAAAAQAAAKSBRycAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNkTVsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTEuAAB3b3JkL19yZWxzL1VUBQADhhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCzvosd/gAAALYDAAAcABgAAAAAAAEAAACkgXYuAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAARABEAqQUAAMovAAAAAA==";
95474
95610
  const _hoisted_1$1$1 = { class: "super-editor-container" };
95475
95611
  const _hoisted_2$a = {
95476
95612
  key: 1,
@@ -95865,72 +96001,87 @@ ${style2}
95865
96001
  "mc:AlternateContent": translator$1,
95866
96002
  "sd:pageReference": translator$5,
95867
96003
  "sd:tableOfContents": translator$4,
95868
- "w:b": translator$18,
95869
- "w:bidiVisual": translator$J,
96004
+ "w:b": translator$1n,
96005
+ "w:bidiVisual": translator$Y,
95870
96006
  "w:bookmarkEnd": translator$6,
95871
96007
  "w:bookmarkStart": translator$7,
95872
- "w:bottom": translator$w,
95873
- "w:br": translator$1c,
95874
- "w:cantSplit": translator$X,
95875
- "w:cnfStyle": translator$W,
95876
- "w:color": translator$14,
95877
- "w:divId": translator$V,
96008
+ "w:bottom": translator$L,
96009
+ "w:br": translator$1r,
96010
+ "w:cantSplit": translator$1a,
96011
+ "w:cnfStyle": translator$19,
96012
+ "w:color": translator$1j,
96013
+ "w:divId": translator$18,
95878
96014
  "w:drawing": translator$9,
95879
- "w:end": translator$u,
95880
- "w:gridAfter": translator$U,
95881
- "w:gridBefore": translator$T,
95882
- "w:gridCol": translator$f,
95883
- "w:hidden": translator$S,
95884
- "w:highlight": translator$1b,
95885
- "w:hyperlink": translator$Z,
95886
- "w:i": translator$17,
95887
- "w:insideH": translator$s,
95888
- "w:insideV": translator$r,
95889
- "w:jc": translator$R,
95890
- "w:left": translator$q,
95891
- "w:p": translator$19,
95892
- "w:r": translator$Y,
95893
- "w:rFonts": translator$13,
95894
- "w:rPr": translator$_,
95895
- "w:rStyle": translator$12,
95896
- "w:right": translator$o,
96015
+ "w:end": translator$J,
96016
+ "w:gridAfter": translator$17,
96017
+ "w:gridBefore": translator$16,
96018
+ "w:gridCol": translator$u,
96019
+ "w:hidden": translator$15,
96020
+ "w:highlight": translator$1q,
96021
+ "w:hyperlink": translator$1c,
96022
+ "w:i": translator$1m,
96023
+ "w:insideH": translator$H,
96024
+ "w:insideV": translator$G,
96025
+ "w:jc": translator$14,
96026
+ "w:left": translator$F,
96027
+ "w:p": translator$1o,
96028
+ "w:r": translator$1b,
96029
+ "w:rFonts": translator$1i,
96030
+ "w:rPr": translator$1d,
96031
+ "w:rStyle": translator$1h,
96032
+ "w:right": translator$D,
95897
96033
  "w:sdt": translator$8,
95898
- "w:shd": translator$I,
95899
- "w:start": translator$m,
95900
- "w:strike": translator$15,
95901
- "w:sz": translator$11,
95902
- "w:szCs": translator$10,
95903
- "w:tab": translator$1a,
95904
- "w:tbl": translator$d,
95905
- "w:tblBorders": translator$i,
95906
- "w:tblCaption": translator$H,
95907
- "w:tblCellMar": translator$h,
95908
- "w:tblCellSpacing": translator$Q,
95909
- "w:tblDescription": translator$G,
95910
- "w:tblGrid": translator$e,
95911
- "w:tblHeader": translator$P,
95912
- "w:tblInd": translator$F,
95913
- "w:tblLayout": translator$E,
95914
- "w:tblLook": translator$D,
95915
- "w:tblOverlap": translator$C,
95916
- "w:tblPr": translator$g,
95917
- "w:tblStyle": translator$B,
95918
- "w:tblStyleColBandSize": translator$A,
95919
- "w:tblStyleRowBandSize": translator$z,
95920
- "w:tblW": translator$y,
95921
- "w:tblpPr": translator$x,
96034
+ "w:shd": translator$X,
96035
+ "w:start": translator$B,
96036
+ "w:strike": translator$1k,
96037
+ "w:sz": translator$1g,
96038
+ "w:szCs": translator$1f,
96039
+ "w:tab": translator$1p,
96040
+ "w:tbl": translator$s,
96041
+ "w:tblBorders": translator$x,
96042
+ "w:tblCaption": translator$W,
96043
+ "w:tblCellMar": translator$w,
96044
+ "w:tblCellSpacing": translator$13,
96045
+ "w:tblDescription": translator$V,
96046
+ "w:tblGrid": translator$t,
96047
+ "w:tblHeader": translator$12,
96048
+ "w:tblInd": translator$U,
96049
+ "w:tblLayout": translator$T,
96050
+ "w:tblLook": translator$S,
96051
+ "w:tblOverlap": translator$R,
96052
+ "w:tblPr": translator$v,
96053
+ "w:tblStyle": translator$Q,
96054
+ "w:tblStyleColBandSize": translator$P,
96055
+ "w:tblStyleRowBandSize": translator$O,
96056
+ "w:tblW": translator$N,
96057
+ "w:tblpPr": translator$M,
95922
96058
  "w:tc": translator$c,
95923
- "w:top": translator$k,
95924
- "w:tr": translator$K,
95925
- "w:trHeight": translator$O,
95926
- "w:trPr": translator$L,
95927
- "w:u": translator$16,
95928
- "w:wAfter": translator$N,
95929
- "w:wBefore": translator$M,
96059
+ "w:top": translator$z,
96060
+ "w:tr": translator$Z,
96061
+ "w:trHeight": translator$11,
96062
+ "w:trPr": translator$_,
96063
+ "w:u": translator$1l,
96064
+ "w:wAfter": translator$10,
96065
+ "w:wBefore": translator$$,
95930
96066
  "wp:anchor": translator$b,
95931
96067
  "wp:inline": translator$a,
95932
96068
  "w:commentRangeStart": commentRangeStartTranslator,
95933
- "w:commentRangeEnd": commentRangeEndTranslator
96069
+ "w:commentRangeEnd": commentRangeEndTranslator,
96070
+ "w:vMerge": translator$p,
96071
+ "w:gridSpan": translator$q,
96072
+ "w:vAlign": translator$h,
96073
+ "w:noWrap": translator$l,
96074
+ "w:tcFitText": translator$i,
96075
+ "w:tcW": translator$r,
96076
+ "w:hideMark": translator$g,
96077
+ "w:textDirection": translator$j,
96078
+ "w:tl2br": translator$o,
96079
+ "w:tr2bl": translator$n,
96080
+ "w:header": translator$f,
96081
+ "w:headers": translator$e,
96082
+ "w:tcBorders": translator$m,
96083
+ "w:tcMar": translator$k,
96084
+ "w:tcPr": translator$d
95934
96085
  });
95935
96086
  const baseHandlers = {
95936
96087
  ...runPropertyTranslators,
@@ -96277,7 +96428,7 @@ ${style2}
96277
96428
  this.errors = [];
96278
96429
  }
96279
96430
  }
96280
- const BlankDOCX = "data:application/octet-stream;base64,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";
96431
+ const BlankDOCX = "data:application/octet-stream;base64,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";
96281
96432
  function getDefaultExportFromCjs(x) {
96282
96433
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
96283
96434
  }
@@ -112477,6 +112628,9 @@ ${style2}
112477
112628
  const onEditorListdefinitionsChange = (params2) => {
112478
112629
  proxy.$superdoc.emit("list-definitions-change", params2);
112479
112630
  };
112631
+ const onFontsResolved = (params2) => {
112632
+ proxy.$superdoc.emit("fonts-resolved", params2);
112633
+ };
112480
112634
  const editorOptions = (doc2) => {
112481
112635
  const options = {
112482
112636
  isDebug: proxy.$superdoc.config.isDebug || false,
@@ -112509,6 +112663,7 @@ ${style2}
112509
112663
  onCommentsUpdate: onEditorCommentsUpdate,
112510
112664
  onCommentLocationsUpdate: onEditorCommentLocationsUpdate,
112511
112665
  onListDefinitionsChange: onEditorListdefinitionsChange,
112666
+ onFontsResolved: proxy?.$superdoc?.config?.onFontsResolved ? onFontsResolved : null,
112512
112667
  onTransaction: onEditorTransaction,
112513
112668
  ydoc: doc2.ydoc,
112514
112669
  collaborationProvider: doc2.provider || null,
@@ -112887,7 +113042,7 @@ ${style2}
112887
113042
  };
112888
113043
  }
112889
113044
  };
112890
- const App = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-96983cf9"]]);
113045
+ const App = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-6de7ff3a"]]);
112891
113046
  const createSuperdocVueApp = () => {
112892
113047
  const app = createApp(App);
112893
113048
  const pinia = createPinia();
@@ -112968,6 +113123,7 @@ ${style2}
112968
113123
  onException: () => null,
112969
113124
  onListDefinitionsChange: () => null,
112970
113125
  onTransaction: () => null,
113126
+ onFontsResolved: null,
112971
113127
  // Image upload handler
112972
113128
  // async (file) => url;
112973
113129
  handleImageUpload: null,
@@ -113142,6 +113298,9 @@ ${style2}
113142
113298
  this.on("content-error", this.onContentError);
113143
113299
  this.on("exception", this.config.onException);
113144
113300
  this.on("list-definitions-change", this.config.onListDefinitionsChange);
113301
+ if (this.config.onFontsResolved) {
113302
+ this.on("fonts-resolved", this.config.onFontsResolved);
113303
+ }
113145
113304
  }
113146
113305
  /**
113147
113306
  * Initialize collaboration if configured