@harbour-enterprises/superdoc 0.24.0-next.3 → 0.24.0-next.5
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.
- package/dist/chunks/{PdfViewer-skWUtg2N.cjs → PdfViewer-D6AmuQ3v.cjs} +1 -1
- package/dist/chunks/{PdfViewer-DEWI6Uts.es.js → PdfViewer-XhwjWR8o.es.js} +1 -1
- package/dist/chunks/blank-docx-ABm6XYAA.es.js +4 -0
- package/dist/chunks/blank-docx-DfW3Eeh2.cjs +3 -0
- package/dist/chunks/{index-2QL0aZ2S.cjs → index-DAdhqIN8.cjs} +76 -12
- package/dist/chunks/{index-C_AMhrHP.es.js → index-OjiyjDUm.es.js} +76 -12
- package/dist/chunks/{super-editor.es-CfK_qBM9.cjs → super-editor.es-BPK2gF1W.cjs} +1489 -986
- package/dist/chunks/{super-editor.es-iMAoOYOw.es.js → super-editor.es-bHlpz8m_.es.js} +1489 -986
- package/dist/core/SuperDoc.d.ts.map +1 -1
- package/dist/core/helpers/export.d.ts +1 -1
- package/dist/core/helpers/export.d.ts.map +1 -1
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/style.css +37 -27
- package/dist/super-editor/ai-writer.es.js +2 -2
- package/dist/super-editor/chunks/{converter-BueCftlx.js → converter-D-9mYZ83.js} +1247 -967
- package/dist/super-editor/chunks/{docx-zipper-C9jmfWYZ.js → docx-zipper-C1p3F7Ok.js} +1 -1
- package/dist/super-editor/chunks/{editor-BsuNqVvp.js → editor-lJoa5ADp.js} +292 -47
- package/dist/super-editor/chunks/{toolbar-DxhfgAoa.js → toolbar-B5-QnQ4l.js} +2 -2
- package/dist/super-editor/converter.es.js +1 -1
- package/dist/super-editor/docx-zipper.es.js +2 -2
- package/dist/super-editor/editor.es.js +3 -3
- package/dist/super-editor/file-zipper.es.js +1 -1
- package/dist/super-editor/style.css +10 -0
- package/dist/super-editor/super-editor/src/core/Editor.d.ts +11 -0
- package/dist/super-editor/super-editor/src/core/helpers/canRenderFont.d.ts +12 -0
- package/dist/super-editor/super-editor/src/core/super-converter/SuperConverter.d.ts +6 -1
- package/dist/super-editor/super-editor/src/core/super-converter/helpers.d.ts +2 -1
- package/dist/super-editor/super-editor/src/core/super-converter/v2/importer/docxImporter.d.ts +2 -1
- package/dist/super-editor/super-editor/src/core/super-converter/v2/importer/tableImporter.d.ts +5 -3
- package/dist/super-editor/super-editor/src/core/super-converter/v2/importer/types/index.d.ts +4 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/utils.d.ts +9 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/gridSpan/gridSpan-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/gridSpan/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/header/header-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/header/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/headers/headers-translator.d.ts +7 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/headers/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/hideMark/hideMark-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/hideMark/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/noWrap/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/noWrap/noWrap-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/shd/shd-translator.d.ts +1 -1
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tc/helpers/translate-table-cell.d.ts +0 -5
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcBorders/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcBorders/tcBorders-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcFitText/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcFitText/tcFitText-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcMar/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcMar/tcMar-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcPr/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcPr/tcPr-translator.d.ts +5 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcW/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tcW/tcW-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/textDirection/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/textDirection/textDirection-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tl2br/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tl2br/tl2br-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tr/tr-helpers.d.ts +16 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tr2bl/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/tr2bl/tr2bl-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/vAlign/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/vAlign/vAlign-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/vMerge/index.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/vMerge/vMerge-translator.d.ts +6 -0
- package/dist/super-editor/super-editor/src/extensions/table/TableView.d.ts +1 -1
- package/dist/super-editor/super-editor/src/extensions/table-cell/table-cell.d.ts +112 -0
- package/dist/super-editor/super-editor.es.js +91 -76
- package/dist/super-editor/toolbar.es.js +2 -2
- package/dist/super-editor.cjs +1 -1
- package/dist/super-editor.es.js +1 -1
- package/dist/superdoc.cjs +3 -3
- package/dist/superdoc.es.js +3 -3
- package/dist/superdoc.umd.js +1563 -996
- package/dist/superdoc.umd.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/blank-docx-CPqX9RF5.cjs +0 -3
- package/dist/chunks/blank-docx-iwdyG9RH.es.js +0 -4
package/dist/superdoc.umd.js
CHANGED
|
@@ -22818,6 +22818,7 @@
|
|
|
22818
22818
|
}
|
|
22819
22819
|
return content;
|
|
22820
22820
|
}
|
|
22821
|
+
const PIXELS_PER_INCH = 96;
|
|
22821
22822
|
function inchesToTwips(inches) {
|
|
22822
22823
|
if (inches == null) return;
|
|
22823
22824
|
if (typeof inches === "string") inches = parseFloat(inches);
|
|
@@ -22840,12 +22841,12 @@
|
|
|
22840
22841
|
}
|
|
22841
22842
|
function inchesToPixels(inches) {
|
|
22842
22843
|
if (inches == null) return;
|
|
22843
|
-
const pixels = inches *
|
|
22844
|
+
const pixels = inches * PIXELS_PER_INCH;
|
|
22844
22845
|
return Math.round(pixels * 1e3) / 1e3;
|
|
22845
22846
|
}
|
|
22846
22847
|
function pixelsToInches(pixels) {
|
|
22847
22848
|
if (pixels == null) return;
|
|
22848
|
-
const inches = Number(pixels) /
|
|
22849
|
+
const inches = Number(pixels) / PIXELS_PER_INCH;
|
|
22849
22850
|
return inches;
|
|
22850
22851
|
}
|
|
22851
22852
|
function twipsToLines(twips) {
|
|
@@ -22863,7 +22864,7 @@
|
|
|
22863
22864
|
function emuToPixels(emu) {
|
|
22864
22865
|
if (emu == null) return;
|
|
22865
22866
|
if (typeof emu === "string") emu = parseFloat(emu);
|
|
22866
|
-
const pixels = emu *
|
|
22867
|
+
const pixels = emu * PIXELS_PER_INCH / 914400;
|
|
22867
22868
|
return Math.round(pixels);
|
|
22868
22869
|
}
|
|
22869
22870
|
function pixelsToEmu(px) {
|
|
@@ -22871,9 +22872,9 @@
|
|
|
22871
22872
|
if (typeof px === "string") px = parseFloat(px);
|
|
22872
22873
|
return Math.round(px * 9525);
|
|
22873
22874
|
}
|
|
22874
|
-
function
|
|
22875
|
-
if (
|
|
22876
|
-
const points = parseFloat(
|
|
22875
|
+
function eighthPointsToPixels(eighthPoints) {
|
|
22876
|
+
if (eighthPoints == null) return;
|
|
22877
|
+
const points = parseFloat(eighthPoints) / 8;
|
|
22877
22878
|
const pixels = points * 1.3333;
|
|
22878
22879
|
return pixels;
|
|
22879
22880
|
}
|
|
@@ -22899,12 +22900,12 @@
|
|
|
22899
22900
|
}
|
|
22900
22901
|
function pixelsToPolygonUnits(pixels) {
|
|
22901
22902
|
if (pixels == null) return;
|
|
22902
|
-
const pu = pixels *
|
|
22903
|
+
const pu = pixels * PIXELS_PER_INCH;
|
|
22903
22904
|
return Math.round(pu);
|
|
22904
22905
|
}
|
|
22905
22906
|
function polygonUnitsToPixels(pu) {
|
|
22906
22907
|
if (pu == null) return;
|
|
22907
|
-
const pixels = Number(pu) /
|
|
22908
|
+
const pixels = Number(pu) / PIXELS_PER_INCH;
|
|
22908
22909
|
return Math.round(pixels * 1e3) / 1e3;
|
|
22909
22910
|
}
|
|
22910
22911
|
function polygonToObj(polygonNode) {
|
|
@@ -32277,37 +32278,37 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
32277
32278
|
};
|
|
32278
32279
|
__publicField$2(_NodeTranslator, "translatorTypes", TranslatorTypes);
|
|
32279
32280
|
let NodeTranslator = _NodeTranslator;
|
|
32280
|
-
const encode$
|
|
32281
|
+
const encode$1b = (attributes) => {
|
|
32281
32282
|
return attributes["w:type"];
|
|
32282
32283
|
};
|
|
32283
|
-
const decode$
|
|
32284
|
+
const decode$13 = (attrs) => {
|
|
32284
32285
|
const { lineBreakType } = attrs;
|
|
32285
32286
|
return lineBreakType;
|
|
32286
32287
|
};
|
|
32287
32288
|
const attrConfig$G = Object.freeze({
|
|
32288
32289
|
xmlName: "w:type",
|
|
32289
32290
|
sdName: "lineBreakType",
|
|
32290
|
-
encode: encode$
|
|
32291
|
-
decode: decode$
|
|
32291
|
+
encode: encode$1b,
|
|
32292
|
+
decode: decode$13
|
|
32292
32293
|
});
|
|
32293
|
-
const encode$
|
|
32294
|
+
const encode$1a = (attributes) => {
|
|
32294
32295
|
const xmlAttrValue = attributes["w:clear"];
|
|
32295
32296
|
return xmlAttrValue;
|
|
32296
32297
|
};
|
|
32297
|
-
const decode$
|
|
32298
|
+
const decode$12 = (attrs) => {
|
|
32298
32299
|
const { clear } = attrs;
|
|
32299
32300
|
return clear;
|
|
32300
32301
|
};
|
|
32301
32302
|
const attrConfig$F = Object.freeze({
|
|
32302
32303
|
xmlName: "w:clear",
|
|
32303
32304
|
sdName: "clear",
|
|
32304
|
-
encode: encode$
|
|
32305
|
-
decode: decode$
|
|
32305
|
+
encode: encode$1a,
|
|
32306
|
+
decode: decode$12
|
|
32306
32307
|
});
|
|
32307
32308
|
const validXmlAttributes$p = [attrConfig$G, attrConfig$F];
|
|
32308
|
-
const XML_NODE_NAME$
|
|
32309
|
+
const XML_NODE_NAME$y = "w:br";
|
|
32309
32310
|
const SD_NODE_NAME$h = "lineBreak";
|
|
32310
|
-
const encode$
|
|
32311
|
+
const encode$19 = (_2, encodedAttrs) => {
|
|
32311
32312
|
const isPageBreak = encodedAttrs?.lineBreakType === "page";
|
|
32312
32313
|
const translated = {
|
|
32313
32314
|
type: isPageBreak ? "hardBreak" : "lineBreak"
|
|
@@ -32317,7 +32318,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
32317
32318
|
}
|
|
32318
32319
|
return translated;
|
|
32319
32320
|
};
|
|
32320
|
-
const decode$
|
|
32321
|
+
const decode$11 = (params2, decodedAttrs) => {
|
|
32321
32322
|
const { node } = params2;
|
|
32322
32323
|
if (!node) return;
|
|
32323
32324
|
const wBreak = { name: "w:br" };
|
|
@@ -32334,39 +32335,39 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
32334
32335
|
};
|
|
32335
32336
|
return translated;
|
|
32336
32337
|
};
|
|
32337
|
-
const config$
|
|
32338
|
-
xmlName: XML_NODE_NAME$
|
|
32338
|
+
const config$x = {
|
|
32339
|
+
xmlName: XML_NODE_NAME$y,
|
|
32339
32340
|
sdNodeOrKeyName: SD_NODE_NAME$h,
|
|
32340
32341
|
type: NodeTranslator.translatorTypes.NODE,
|
|
32341
|
-
encode: encode$
|
|
32342
|
-
decode: decode$
|
|
32342
|
+
encode: encode$19,
|
|
32343
|
+
decode: decode$11,
|
|
32343
32344
|
attributes: validXmlAttributes$p
|
|
32344
32345
|
};
|
|
32345
|
-
const translator$
|
|
32346
|
-
const encode$
|
|
32347
|
-
const decode$
|
|
32346
|
+
const translator$1r = NodeTranslator.from(config$x);
|
|
32347
|
+
const encode$18 = (attributes) => attributes?.["w:val"];
|
|
32348
|
+
const decode$10 = (attrs) => attrs?.highlight;
|
|
32348
32349
|
const attrConfig$E = Object.freeze({
|
|
32349
32350
|
xmlName: "w:val",
|
|
32350
32351
|
sdName: "highlight",
|
|
32351
|
-
encode: encode$
|
|
32352
|
-
decode: decode$
|
|
32352
|
+
encode: encode$18,
|
|
32353
|
+
decode: decode$10
|
|
32353
32354
|
});
|
|
32354
32355
|
const validXmlAttributes$o = [attrConfig$E];
|
|
32355
|
-
const XML_NODE_NAME$
|
|
32356
|
-
const SD_ATTR_KEY$
|
|
32356
|
+
const XML_NODE_NAME$x = "w:highlight";
|
|
32357
|
+
const SD_ATTR_KEY$f = "highlight";
|
|
32357
32358
|
const DISABLED_TOKENS = /* @__PURE__ */ new Set(["transparent", "none", "inherit"]);
|
|
32358
|
-
const encode$
|
|
32359
|
+
const encode$17 = (params2, encodedAttrs = {}) => {
|
|
32359
32360
|
const { nodes } = params2;
|
|
32360
32361
|
const node = nodes?.[0];
|
|
32361
32362
|
const value = encodedAttrs.highlight ?? node?.attributes?.["w:val"];
|
|
32362
32363
|
return {
|
|
32363
32364
|
type: "attr",
|
|
32364
|
-
xmlName: XML_NODE_NAME$
|
|
32365
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
32365
|
+
xmlName: XML_NODE_NAME$x,
|
|
32366
|
+
sdNodeOrKeyName: SD_ATTR_KEY$f,
|
|
32366
32367
|
attributes: { "w:val": value ?? null }
|
|
32367
32368
|
};
|
|
32368
32369
|
};
|
|
32369
|
-
const decode
|
|
32370
|
+
const decode$$ = (params2) => {
|
|
32370
32371
|
const attrs = params2?.node?.attrs || {};
|
|
32371
32372
|
const highlightValue = attrs.highlight ?? attrs.color ?? null;
|
|
32372
32373
|
if (!highlightValue) return void 0;
|
|
@@ -32374,14 +32375,14 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
32374
32375
|
if (!normalizedValue) return void 0;
|
|
32375
32376
|
if (DISABLED_TOKENS.has(normalizedValue)) {
|
|
32376
32377
|
return {
|
|
32377
|
-
name: XML_NODE_NAME$
|
|
32378
|
+
name: XML_NODE_NAME$x,
|
|
32378
32379
|
attributes: { "w:val": "none" }
|
|
32379
32380
|
};
|
|
32380
32381
|
}
|
|
32381
32382
|
const keyword = getDocxHighlightKeywordFromHex(highlightValue);
|
|
32382
32383
|
if (keyword) {
|
|
32383
32384
|
return {
|
|
32384
|
-
name: XML_NODE_NAME$
|
|
32385
|
+
name: XML_NODE_NAME$x,
|
|
32385
32386
|
attributes: { "w:val": keyword }
|
|
32386
32387
|
};
|
|
32387
32388
|
}
|
|
@@ -32396,63 +32397,63 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
32396
32397
|
}
|
|
32397
32398
|
};
|
|
32398
32399
|
};
|
|
32399
|
-
const config$
|
|
32400
|
-
xmlName: XML_NODE_NAME$
|
|
32401
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
32400
|
+
const config$w = {
|
|
32401
|
+
xmlName: XML_NODE_NAME$x,
|
|
32402
|
+
sdNodeOrKeyName: SD_ATTR_KEY$f,
|
|
32402
32403
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
32403
|
-
encode: encode$
|
|
32404
|
-
decode: decode
|
|
32404
|
+
encode: encode$17,
|
|
32405
|
+
decode: decode$$,
|
|
32405
32406
|
attributes: validXmlAttributes$o
|
|
32406
32407
|
};
|
|
32407
|
-
const translator$
|
|
32408
|
-
const encode$
|
|
32408
|
+
const translator$1q = NodeTranslator.from(config$w);
|
|
32409
|
+
const encode$16 = (attributes) => {
|
|
32409
32410
|
return attributes["w:val"];
|
|
32410
32411
|
};
|
|
32411
|
-
const decode$
|
|
32412
|
+
const decode$_ = (attrs) => {
|
|
32412
32413
|
const { tabSize } = attrs || {};
|
|
32413
32414
|
return tabSize;
|
|
32414
32415
|
};
|
|
32415
32416
|
const attrConfig$D = Object.freeze({
|
|
32416
32417
|
xmlName: "w:val",
|
|
32417
32418
|
sdName: "tabSize",
|
|
32418
|
-
encode: encode$
|
|
32419
|
-
decode: decode$
|
|
32419
|
+
encode: encode$16,
|
|
32420
|
+
decode: decode$_
|
|
32420
32421
|
});
|
|
32421
|
-
const encode$
|
|
32422
|
+
const encode$15 = (attributes) => {
|
|
32422
32423
|
return attributes["w:leader"];
|
|
32423
32424
|
};
|
|
32424
|
-
const decode$
|
|
32425
|
+
const decode$Z = (attrs) => {
|
|
32425
32426
|
const { leader } = attrs || {};
|
|
32426
32427
|
return leader;
|
|
32427
32428
|
};
|
|
32428
32429
|
const attrConfig$C = Object.freeze({
|
|
32429
32430
|
xmlName: "w:leader",
|
|
32430
32431
|
sdName: "leader",
|
|
32431
|
-
encode: encode$
|
|
32432
|
-
decode: decode$
|
|
32432
|
+
encode: encode$15,
|
|
32433
|
+
decode: decode$Z
|
|
32433
32434
|
});
|
|
32434
|
-
const encode$
|
|
32435
|
+
const encode$14 = (attributes) => {
|
|
32435
32436
|
return attributes["w:pos"];
|
|
32436
32437
|
};
|
|
32437
|
-
const decode
|
|
32438
|
+
const decode$Y = (attrs) => {
|
|
32438
32439
|
const { pos } = attrs || {};
|
|
32439
32440
|
return pos;
|
|
32440
32441
|
};
|
|
32441
32442
|
const attrConfig$B = Object.freeze({
|
|
32442
32443
|
xmlName: "w:pos",
|
|
32443
32444
|
sdName: "pos",
|
|
32444
|
-
encode: encode$
|
|
32445
|
-
decode: decode
|
|
32445
|
+
encode: encode$14,
|
|
32446
|
+
decode: decode$Y
|
|
32446
32447
|
});
|
|
32447
32448
|
const validXmlAttributes$n = [attrConfig$D, attrConfig$B, attrConfig$C];
|
|
32448
|
-
const XML_NODE_NAME$
|
|
32449
|
+
const XML_NODE_NAME$w = "w:tab";
|
|
32449
32450
|
const SD_NODE_NAME$g = "tab";
|
|
32450
|
-
const encode$
|
|
32451
|
+
const encode$13 = (_2, encodedAttrs = {}) => {
|
|
32451
32452
|
const translated = { type: "tab" };
|
|
32452
32453
|
if (encodedAttrs) translated.attrs = { ...encodedAttrs };
|
|
32453
32454
|
return translated;
|
|
32454
32455
|
};
|
|
32455
|
-
const decode$
|
|
32456
|
+
const decode$X = (params2, decodedAttrs = {}) => {
|
|
32456
32457
|
const { node } = params2 || {};
|
|
32457
32458
|
if (!node) return;
|
|
32458
32459
|
const wTab = { name: "w:tab" };
|
|
@@ -32468,15 +32469,15 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
32468
32469
|
}
|
|
32469
32470
|
return translated;
|
|
32470
32471
|
};
|
|
32471
|
-
const config$
|
|
32472
|
-
xmlName: XML_NODE_NAME$
|
|
32472
|
+
const config$v = {
|
|
32473
|
+
xmlName: XML_NODE_NAME$w,
|
|
32473
32474
|
sdNodeOrKeyName: SD_NODE_NAME$g,
|
|
32474
32475
|
type: NodeTranslator.translatorTypes.NODE,
|
|
32475
|
-
encode: encode$
|
|
32476
|
-
decode: decode$
|
|
32476
|
+
encode: encode$13,
|
|
32477
|
+
decode: decode$X,
|
|
32477
32478
|
attributes: validXmlAttributes$n
|
|
32478
32479
|
};
|
|
32479
|
-
const translator$
|
|
32480
|
+
const translator$1p = NodeTranslator.from(config$v);
|
|
32480
32481
|
const mergeTextNodes = (nodes) => {
|
|
32481
32482
|
if (!nodes || !Array.isArray(nodes)) {
|
|
32482
32483
|
return nodes;
|
|
@@ -32702,9 +32703,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
32702
32703
|
const { attributes: a } = el;
|
|
32703
32704
|
if (a["w:val"] === "nil" || a["w:val"] === void 0) return;
|
|
32704
32705
|
let sizePx;
|
|
32705
|
-
if (a["w:sz"] !== void 0) sizePx =
|
|
32706
|
+
if (a["w:sz"] !== void 0) sizePx = eighthPointsToPixels(a["w:sz"]);
|
|
32706
32707
|
let spacePx;
|
|
32707
|
-
if (a["w:space"] !== void 0) spacePx =
|
|
32708
|
+
if (a["w:space"] !== void 0) spacePx = eighthPointsToPixels(a["w:space"]);
|
|
32708
32709
|
result[side] = {
|
|
32709
32710
|
val: a["w:val"],
|
|
32710
32711
|
size: sizePx,
|
|
@@ -32994,89 +32995,89 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
32994
32995
|
}
|
|
32995
32996
|
return schemaNode;
|
|
32996
32997
|
};
|
|
32997
|
-
const encode$
|
|
32998
|
+
const encode$12 = (attributes) => {
|
|
32998
32999
|
return attributes["w:rsidDel"];
|
|
32999
33000
|
};
|
|
33000
|
-
const decode$
|
|
33001
|
+
const decode$W = (attrs) => {
|
|
33001
33002
|
return attrs.rsidDel;
|
|
33002
33003
|
};
|
|
33003
33004
|
const attrConfig$A = Object.freeze({
|
|
33004
33005
|
xmlName: "w:rsidDel",
|
|
33005
33006
|
sdName: "rsidDel",
|
|
33006
|
-
encode: encode$
|
|
33007
|
-
decode: decode$
|
|
33007
|
+
encode: encode$12,
|
|
33008
|
+
decode: decode$W
|
|
33008
33009
|
});
|
|
33009
|
-
const encode$
|
|
33010
|
+
const encode$11 = (attributes) => {
|
|
33010
33011
|
return attributes["w:rsidP"];
|
|
33011
33012
|
};
|
|
33012
|
-
const decode$
|
|
33013
|
+
const decode$V = (attrs) => {
|
|
33013
33014
|
return attrs.rsidP;
|
|
33014
33015
|
};
|
|
33015
33016
|
const attrConfig$z = Object.freeze({
|
|
33016
33017
|
xmlName: "w:rsidP",
|
|
33017
33018
|
sdName: "rsidP",
|
|
33018
|
-
encode: encode$
|
|
33019
|
-
decode: decode$
|
|
33019
|
+
encode: encode$11,
|
|
33020
|
+
decode: decode$V
|
|
33020
33021
|
});
|
|
33021
|
-
const encode$
|
|
33022
|
+
const encode$10 = (attributes) => {
|
|
33022
33023
|
return attributes["w:rsidR"];
|
|
33023
33024
|
};
|
|
33024
|
-
const decode$
|
|
33025
|
+
const decode$U = (attrs) => {
|
|
33025
33026
|
return attrs.rsidR;
|
|
33026
33027
|
};
|
|
33027
33028
|
const attrConfig$y = Object.freeze({
|
|
33028
33029
|
xmlName: "w:rsidR",
|
|
33029
33030
|
sdName: "rsidR",
|
|
33030
|
-
encode: encode$
|
|
33031
|
-
decode: decode$
|
|
33031
|
+
encode: encode$10,
|
|
33032
|
+
decode: decode$U
|
|
33032
33033
|
});
|
|
33033
|
-
const encode
|
|
33034
|
+
const encode$$ = (attributes) => {
|
|
33034
33035
|
return attributes["w:rsidRPr"];
|
|
33035
33036
|
};
|
|
33036
|
-
const decode$
|
|
33037
|
+
const decode$T = (attrs) => {
|
|
33037
33038
|
return attrs.rsidRPr;
|
|
33038
33039
|
};
|
|
33039
33040
|
const attrConfig$x = Object.freeze({
|
|
33040
33041
|
xmlName: "w:rsidRPr",
|
|
33041
33042
|
sdName: "rsidRPr",
|
|
33042
|
-
encode: encode
|
|
33043
|
-
decode: decode$
|
|
33043
|
+
encode: encode$$,
|
|
33044
|
+
decode: decode$T
|
|
33044
33045
|
});
|
|
33045
|
-
const encode$
|
|
33046
|
+
const encode$_ = (attributes) => {
|
|
33046
33047
|
return attributes["w:rsidRDefault"];
|
|
33047
33048
|
};
|
|
33048
|
-
const decode$
|
|
33049
|
+
const decode$S = (attrs) => {
|
|
33049
33050
|
return attrs.rsidRDefault;
|
|
33050
33051
|
};
|
|
33051
33052
|
const attrConfig$w = Object.freeze({
|
|
33052
33053
|
xmlName: "w:rsidRDefault",
|
|
33053
33054
|
sdName: "rsidRDefault",
|
|
33054
|
-
encode: encode$
|
|
33055
|
-
decode: decode$
|
|
33055
|
+
encode: encode$_,
|
|
33056
|
+
decode: decode$S
|
|
33056
33057
|
});
|
|
33057
|
-
const encode$
|
|
33058
|
+
const encode$Z = (attributes) => {
|
|
33058
33059
|
return attributes["w14:paraId"];
|
|
33059
33060
|
};
|
|
33060
|
-
const decode$
|
|
33061
|
+
const decode$R = (attrs) => {
|
|
33061
33062
|
return attrs.paraId;
|
|
33062
33063
|
};
|
|
33063
33064
|
const attrConfig$v = Object.freeze({
|
|
33064
33065
|
xmlName: "w14:paraId",
|
|
33065
33066
|
sdName: "paraId",
|
|
33066
|
-
encode: encode$
|
|
33067
|
-
decode: decode$
|
|
33067
|
+
encode: encode$Z,
|
|
33068
|
+
decode: decode$R
|
|
33068
33069
|
});
|
|
33069
|
-
const encode
|
|
33070
|
+
const encode$Y = (attributes) => {
|
|
33070
33071
|
return attributes["w14:textId"];
|
|
33071
33072
|
};
|
|
33072
|
-
const decode$
|
|
33073
|
+
const decode$Q = (attrs) => {
|
|
33073
33074
|
return attrs.textId;
|
|
33074
33075
|
};
|
|
33075
33076
|
const attrConfig$u = Object.freeze({
|
|
33076
33077
|
xmlName: "w14:textId",
|
|
33077
33078
|
sdName: "textId",
|
|
33078
|
-
encode: encode
|
|
33079
|
-
decode: decode$
|
|
33079
|
+
encode: encode$Y,
|
|
33080
|
+
decode: decode$Q
|
|
33080
33081
|
});
|
|
33081
33082
|
const validXmlAttributes$m = [
|
|
33082
33083
|
attrConfig$v,
|
|
@@ -33087,9 +33088,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33087
33088
|
attrConfig$x,
|
|
33088
33089
|
attrConfig$A
|
|
33089
33090
|
];
|
|
33090
|
-
const XML_NODE_NAME$
|
|
33091
|
+
const XML_NODE_NAME$v = "w:p";
|
|
33091
33092
|
const SD_NODE_NAME$f = "paragraph";
|
|
33092
|
-
const encode$
|
|
33093
|
+
const encode$X = (params2, encodedAttrs = {}) => {
|
|
33093
33094
|
const node = handleParagraphNode$1(params2);
|
|
33094
33095
|
if (!node) return void 0;
|
|
33095
33096
|
if (encodedAttrs && Object.keys(encodedAttrs).length) {
|
|
@@ -33097,7 +33098,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33097
33098
|
}
|
|
33098
33099
|
return node;
|
|
33099
33100
|
};
|
|
33100
|
-
const decode$
|
|
33101
|
+
const decode$P = (params2, decodedAttrs = {}) => {
|
|
33101
33102
|
const translated = translateParagraphNode(params2);
|
|
33102
33103
|
if (!translated) return void 0;
|
|
33103
33104
|
if (decodedAttrs && Object.keys(decodedAttrs).length) {
|
|
@@ -33105,16 +33106,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33105
33106
|
}
|
|
33106
33107
|
return translated;
|
|
33107
33108
|
};
|
|
33108
|
-
const config$
|
|
33109
|
-
xmlName: XML_NODE_NAME$
|
|
33109
|
+
const config$u = {
|
|
33110
|
+
xmlName: XML_NODE_NAME$v,
|
|
33110
33111
|
sdNodeOrKeyName: SD_NODE_NAME$f,
|
|
33111
33112
|
type: NodeTranslator.translatorTypes.NODE,
|
|
33112
|
-
encode: encode$
|
|
33113
|
-
decode: decode$
|
|
33113
|
+
encode: encode$X,
|
|
33114
|
+
decode: decode$P,
|
|
33114
33115
|
attributes: validXmlAttributes$m
|
|
33115
33116
|
};
|
|
33116
|
-
const translator$
|
|
33117
|
-
const encode$
|
|
33117
|
+
const translator$1o = NodeTranslator.from(config$u);
|
|
33118
|
+
const encode$W = (attributes) => {
|
|
33118
33119
|
const raw = attributes?.["w:val"];
|
|
33119
33120
|
if (raw === void 0 || raw === null) return void 0;
|
|
33120
33121
|
if (typeof raw === "boolean") return raw;
|
|
@@ -33124,24 +33125,24 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33124
33125
|
if (val === "1" || val === "true" || val === "on") return true;
|
|
33125
33126
|
return void 0;
|
|
33126
33127
|
};
|
|
33127
|
-
const decode$
|
|
33128
|
+
const decode$O = (runProps) => {
|
|
33128
33129
|
if (runProps?.bold === false) return "0";
|
|
33129
33130
|
return void 0;
|
|
33130
33131
|
};
|
|
33131
33132
|
const attrConfig$t = Object.freeze({
|
|
33132
33133
|
xmlName: "w:val",
|
|
33133
33134
|
sdName: "bold",
|
|
33134
|
-
encode: encode$
|
|
33135
|
-
decode: decode$
|
|
33135
|
+
encode: encode$W,
|
|
33136
|
+
decode: decode$O
|
|
33136
33137
|
});
|
|
33137
33138
|
const validXmlAttributes$l = [attrConfig$t];
|
|
33138
|
-
const XML_NODE_NAME$
|
|
33139
|
-
const SD_ATTR_KEY$
|
|
33140
|
-
const encode$
|
|
33139
|
+
const XML_NODE_NAME$u = "w:b";
|
|
33140
|
+
const SD_ATTR_KEY$e = "bold";
|
|
33141
|
+
const encode$V = (params2, encodedAttrs = {}) => {
|
|
33141
33142
|
const { nodes } = params2;
|
|
33142
33143
|
const node = nodes[0];
|
|
33143
33144
|
if (!node) return void 0;
|
|
33144
|
-
const val = encodedAttrs?.[SD_ATTR_KEY$
|
|
33145
|
+
const val = encodedAttrs?.[SD_ATTR_KEY$e];
|
|
33145
33146
|
let attributes;
|
|
33146
33147
|
if (val === false) attributes = { "w:val": "0" };
|
|
33147
33148
|
else if (val === true)
|
|
@@ -33149,85 +33150,85 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33149
33150
|
else attributes = node.attributes || {};
|
|
33150
33151
|
return {
|
|
33151
33152
|
type: "attr",
|
|
33152
|
-
xmlName: XML_NODE_NAME$
|
|
33153
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33153
|
+
xmlName: XML_NODE_NAME$u,
|
|
33154
|
+
sdNodeOrKeyName: SD_ATTR_KEY$e,
|
|
33154
33155
|
attributes
|
|
33155
33156
|
};
|
|
33156
33157
|
};
|
|
33157
|
-
const config$
|
|
33158
|
-
xmlName: XML_NODE_NAME$
|
|
33159
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33158
|
+
const config$t = {
|
|
33159
|
+
xmlName: XML_NODE_NAME$u,
|
|
33160
|
+
sdNodeOrKeyName: SD_ATTR_KEY$e,
|
|
33160
33161
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33161
|
-
encode: encode$
|
|
33162
|
+
encode: encode$V,
|
|
33162
33163
|
attributes: validXmlAttributes$l
|
|
33163
33164
|
};
|
|
33164
|
-
const translator$
|
|
33165
|
-
const XML_NODE_NAME$
|
|
33166
|
-
const SD_ATTR_KEY$
|
|
33167
|
-
const encode$
|
|
33165
|
+
const translator$1n = NodeTranslator.from(config$t);
|
|
33166
|
+
const XML_NODE_NAME$t = "w:i";
|
|
33167
|
+
const SD_ATTR_KEY$d = "italic";
|
|
33168
|
+
const encode$U = (params2) => {
|
|
33168
33169
|
const { nodes } = params2;
|
|
33169
33170
|
const node = nodes?.[0];
|
|
33170
33171
|
if (!node) return void 0;
|
|
33171
33172
|
return {
|
|
33172
33173
|
type: "attr",
|
|
33173
|
-
xmlName: XML_NODE_NAME$
|
|
33174
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33174
|
+
xmlName: XML_NODE_NAME$t,
|
|
33175
|
+
sdNodeOrKeyName: SD_ATTR_KEY$d,
|
|
33175
33176
|
attributes: {
|
|
33176
33177
|
"w:val": node.attributes?.["w:val"] ?? null
|
|
33177
33178
|
}
|
|
33178
33179
|
};
|
|
33179
33180
|
};
|
|
33180
|
-
const config$
|
|
33181
|
-
xmlName: XML_NODE_NAME$
|
|
33182
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33181
|
+
const config$s = {
|
|
33182
|
+
xmlName: XML_NODE_NAME$t,
|
|
33183
|
+
sdNodeOrKeyName: SD_ATTR_KEY$d,
|
|
33183
33184
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33184
|
-
encode: encode$
|
|
33185
|
+
encode: encode$U
|
|
33185
33186
|
};
|
|
33186
|
-
const translator$
|
|
33187
|
-
const encode$
|
|
33188
|
-
const decode$
|
|
33187
|
+
const translator$1m = NodeTranslator.from(config$s);
|
|
33188
|
+
const encode$T = (attributes) => attributes?.["w:val"];
|
|
33189
|
+
const decode$N = (attrs) => attrs?.underline;
|
|
33189
33190
|
const attrConfig$s = Object.freeze({
|
|
33190
33191
|
xmlName: "w:val",
|
|
33191
33192
|
sdName: "underline",
|
|
33192
|
-
encode: encode$
|
|
33193
|
-
decode: decode$
|
|
33193
|
+
encode: encode$T,
|
|
33194
|
+
decode: decode$N
|
|
33194
33195
|
});
|
|
33195
|
-
const encode$
|
|
33196
|
-
const decode$
|
|
33196
|
+
const encode$S = (attributes) => attributes?.["w:color"];
|
|
33197
|
+
const decode$M = (attrs) => attrs?.color;
|
|
33197
33198
|
const attrConfig$r = Object.freeze({
|
|
33198
33199
|
xmlName: "w:color",
|
|
33199
33200
|
sdName: "color",
|
|
33200
|
-
encode: encode$
|
|
33201
|
-
decode: decode$
|
|
33201
|
+
encode: encode$S,
|
|
33202
|
+
decode: decode$M
|
|
33202
33203
|
});
|
|
33203
|
-
const encode$
|
|
33204
|
-
const decode$
|
|
33204
|
+
const encode$R = (attributes) => attributes?.["w:themeColor"];
|
|
33205
|
+
const decode$L = (attrs) => attrs?.themeColor;
|
|
33205
33206
|
const attrConfig$q = Object.freeze({
|
|
33206
33207
|
xmlName: "w:themeColor",
|
|
33207
33208
|
sdName: "themeColor",
|
|
33208
|
-
encode: encode$
|
|
33209
|
-
decode: decode$
|
|
33209
|
+
encode: encode$R,
|
|
33210
|
+
decode: decode$L
|
|
33210
33211
|
});
|
|
33211
|
-
const encode$
|
|
33212
|
-
const decode$
|
|
33212
|
+
const encode$Q = (attributes) => attributes?.["w:themeTint"];
|
|
33213
|
+
const decode$K = (attrs) => attrs?.themeTint;
|
|
33213
33214
|
const attrConfig$p = Object.freeze({
|
|
33214
33215
|
xmlName: "w:themeTint",
|
|
33215
33216
|
sdName: "themeTint",
|
|
33216
|
-
encode: encode$
|
|
33217
|
-
decode: decode$
|
|
33217
|
+
encode: encode$Q,
|
|
33218
|
+
decode: decode$K
|
|
33218
33219
|
});
|
|
33219
|
-
const encode$
|
|
33220
|
-
const decode$
|
|
33220
|
+
const encode$P = (attributes) => attributes?.["w:themeShade"];
|
|
33221
|
+
const decode$J = (attrs) => attrs?.themeShade;
|
|
33221
33222
|
const attrConfig$o = Object.freeze({
|
|
33222
33223
|
xmlName: "w:themeShade",
|
|
33223
33224
|
sdName: "themeShade",
|
|
33224
|
-
encode: encode$
|
|
33225
|
-
decode: decode$
|
|
33225
|
+
encode: encode$P,
|
|
33226
|
+
decode: decode$J
|
|
33226
33227
|
});
|
|
33227
33228
|
const validXmlAttributes$k = [attrConfig$s, attrConfig$r, attrConfig$q, attrConfig$p, attrConfig$o];
|
|
33228
|
-
const XML_NODE_NAME$
|
|
33229
|
-
const SD_ATTR_KEY$
|
|
33230
|
-
const encode$
|
|
33229
|
+
const XML_NODE_NAME$s = "w:u";
|
|
33230
|
+
const SD_ATTR_KEY$c = "underline";
|
|
33231
|
+
const encode$O = (params2, encodedAttrs = {}) => {
|
|
33231
33232
|
const { nodes } = params2;
|
|
33232
33233
|
const node = nodes?.[0];
|
|
33233
33234
|
const sourceAttrs = node?.attributes || {};
|
|
@@ -33243,12 +33244,12 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33243
33244
|
if (themeShade !== void 0 && themeShade !== null) attributes["w:themeShade"] = themeShade;
|
|
33244
33245
|
return {
|
|
33245
33246
|
type: "attr",
|
|
33246
|
-
xmlName: XML_NODE_NAME$
|
|
33247
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33247
|
+
xmlName: XML_NODE_NAME$s,
|
|
33248
|
+
sdNodeOrKeyName: SD_ATTR_KEY$c,
|
|
33248
33249
|
attributes
|
|
33249
33250
|
};
|
|
33250
33251
|
};
|
|
33251
|
-
const decode$
|
|
33252
|
+
const decode$I = (params2) => {
|
|
33252
33253
|
const attrs = params2?.node?.attrs || {};
|
|
33253
33254
|
const underlineType = attrs.underlineType ?? attrs.underline ?? null;
|
|
33254
33255
|
const color = attrs.underlineColor ?? attrs.color ?? null;
|
|
@@ -33266,20 +33267,20 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33266
33267
|
if (themeTint) attributes["w:themeTint"] = themeTint;
|
|
33267
33268
|
if (themeShade) attributes["w:themeShade"] = themeShade;
|
|
33268
33269
|
return {
|
|
33269
|
-
name: XML_NODE_NAME$
|
|
33270
|
+
name: XML_NODE_NAME$s,
|
|
33270
33271
|
attributes
|
|
33271
33272
|
};
|
|
33272
33273
|
};
|
|
33273
|
-
const config$
|
|
33274
|
-
xmlName: XML_NODE_NAME$
|
|
33275
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33274
|
+
const config$r = {
|
|
33275
|
+
xmlName: XML_NODE_NAME$s,
|
|
33276
|
+
sdNodeOrKeyName: SD_ATTR_KEY$c,
|
|
33276
33277
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33277
|
-
encode: encode$
|
|
33278
|
-
decode: decode$
|
|
33278
|
+
encode: encode$O,
|
|
33279
|
+
decode: decode$I,
|
|
33279
33280
|
attributes: validXmlAttributes$k
|
|
33280
33281
|
};
|
|
33281
|
-
const translator$
|
|
33282
|
-
const encode$
|
|
33282
|
+
const translator$1l = NodeTranslator.from(config$r);
|
|
33283
|
+
const encode$N = (attributes) => {
|
|
33283
33284
|
const raw = attributes?.["w:val"];
|
|
33284
33285
|
if (raw === void 0 || raw === null) return void 0;
|
|
33285
33286
|
if (typeof raw === "boolean") return raw;
|
|
@@ -33289,24 +33290,24 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33289
33290
|
if (val === "1" || val === "true" || val === "on") return true;
|
|
33290
33291
|
return void 0;
|
|
33291
33292
|
};
|
|
33292
|
-
const decode$
|
|
33293
|
+
const decode$H = (attrs) => {
|
|
33293
33294
|
if (attrs?.strike === false) return "0";
|
|
33294
33295
|
return void 0;
|
|
33295
33296
|
};
|
|
33296
33297
|
const attrConfig$n = Object.freeze({
|
|
33297
33298
|
xmlName: "w:val",
|
|
33298
33299
|
sdName: "strike",
|
|
33299
|
-
encode: encode$
|
|
33300
|
-
decode: decode$
|
|
33300
|
+
encode: encode$N,
|
|
33301
|
+
decode: decode$H
|
|
33301
33302
|
});
|
|
33302
33303
|
const validXmlAttributes$j = [attrConfig$n];
|
|
33303
|
-
const XML_NODE_NAME$
|
|
33304
|
-
const SD_ATTR_KEY$
|
|
33305
|
-
const encode$
|
|
33304
|
+
const XML_NODE_NAME$r = "w:strike";
|
|
33305
|
+
const SD_ATTR_KEY$b = "strike";
|
|
33306
|
+
const encode$M = (params2, encodedAttrs = {}) => {
|
|
33306
33307
|
const { nodes } = params2;
|
|
33307
33308
|
const node = nodes?.[0];
|
|
33308
33309
|
if (!node) return void 0;
|
|
33309
|
-
const val = encodedAttrs?.[SD_ATTR_KEY$
|
|
33310
|
+
const val = encodedAttrs?.[SD_ATTR_KEY$b];
|
|
33310
33311
|
let attributes;
|
|
33311
33312
|
if (val === false) attributes = { "w:val": "0" };
|
|
33312
33313
|
else if (val === true) attributes = {};
|
|
@@ -33315,55 +33316,55 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33315
33316
|
else if (val === true && attributes["w:val"] === void 0) delete attributes["w:val"];
|
|
33316
33317
|
return {
|
|
33317
33318
|
type: "attr",
|
|
33318
|
-
xmlName: XML_NODE_NAME$
|
|
33319
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33319
|
+
xmlName: XML_NODE_NAME$r,
|
|
33320
|
+
sdNodeOrKeyName: SD_ATTR_KEY$b,
|
|
33320
33321
|
attributes
|
|
33321
33322
|
};
|
|
33322
33323
|
};
|
|
33323
|
-
const config$
|
|
33324
|
-
xmlName: XML_NODE_NAME$
|
|
33325
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33324
|
+
const config$q = {
|
|
33325
|
+
xmlName: XML_NODE_NAME$r,
|
|
33326
|
+
sdNodeOrKeyName: SD_ATTR_KEY$b,
|
|
33326
33327
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33327
|
-
encode: encode$
|
|
33328
|
+
encode: encode$M,
|
|
33328
33329
|
attributes: validXmlAttributes$j
|
|
33329
33330
|
};
|
|
33330
|
-
const translator$
|
|
33331
|
-
const encode$
|
|
33332
|
-
const decode$
|
|
33331
|
+
const translator$1k = NodeTranslator.from(config$q);
|
|
33332
|
+
const encode$L = (attributes) => attributes?.["w:val"];
|
|
33333
|
+
const decode$G = (attrs) => attrs?.color;
|
|
33333
33334
|
const attrConfig$m = Object.freeze({
|
|
33334
33335
|
xmlName: "w:val",
|
|
33335
33336
|
sdName: "color",
|
|
33336
|
-
encode: encode$
|
|
33337
|
-
decode: decode$
|
|
33337
|
+
encode: encode$L,
|
|
33338
|
+
decode: decode$G
|
|
33338
33339
|
});
|
|
33339
|
-
const encode$
|
|
33340
|
-
const decode$
|
|
33340
|
+
const encode$K = (attributes) => attributes?.["w:themeColor"];
|
|
33341
|
+
const decode$F = (attrs) => attrs?.themeColor;
|
|
33341
33342
|
const attrConfig$l = Object.freeze({
|
|
33342
33343
|
xmlName: "w:themeColor",
|
|
33343
33344
|
sdName: "themeColor",
|
|
33344
|
-
encode: encode$
|
|
33345
|
-
decode: decode$
|
|
33345
|
+
encode: encode$K,
|
|
33346
|
+
decode: decode$F
|
|
33346
33347
|
});
|
|
33347
|
-
const encode$
|
|
33348
|
-
const decode$
|
|
33348
|
+
const encode$J = (attributes) => attributes?.["w:themeTint"];
|
|
33349
|
+
const decode$E = (attrs) => attrs?.themeTint;
|
|
33349
33350
|
const attrConfig$k = Object.freeze({
|
|
33350
33351
|
xmlName: "w:themeTint",
|
|
33351
33352
|
sdName: "themeTint",
|
|
33352
|
-
encode: encode$
|
|
33353
|
-
decode: decode$
|
|
33353
|
+
encode: encode$J,
|
|
33354
|
+
decode: decode$E
|
|
33354
33355
|
});
|
|
33355
|
-
const encode$
|
|
33356
|
-
const decode$
|
|
33356
|
+
const encode$I = (attributes) => attributes?.["w:themeShade"];
|
|
33357
|
+
const decode$D = (attrs) => attrs?.themeShade;
|
|
33357
33358
|
const attrConfig$j = Object.freeze({
|
|
33358
33359
|
xmlName: "w:themeShade",
|
|
33359
33360
|
sdName: "themeShade",
|
|
33360
|
-
encode: encode$
|
|
33361
|
-
decode: decode$
|
|
33361
|
+
encode: encode$I,
|
|
33362
|
+
decode: decode$D
|
|
33362
33363
|
});
|
|
33363
33364
|
const validXmlAttributes$i = [attrConfig$m, attrConfig$l, attrConfig$k, attrConfig$j];
|
|
33364
|
-
const XML_NODE_NAME$
|
|
33365
|
-
const SD_ATTR_KEY$
|
|
33366
|
-
const encode$
|
|
33365
|
+
const XML_NODE_NAME$q = "w:color";
|
|
33366
|
+
const SD_ATTR_KEY$a = "color";
|
|
33367
|
+
const encode$H = (params2, encodedAttrs = {}) => {
|
|
33367
33368
|
const { nodes } = params2;
|
|
33368
33369
|
const node = nodes?.[0];
|
|
33369
33370
|
const sourceAttrs = node?.attributes || {};
|
|
@@ -33378,63 +33379,63 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33378
33379
|
if (themeShade !== void 0 && themeShade !== null) attributes["w:themeShade"] = themeShade;
|
|
33379
33380
|
return {
|
|
33380
33381
|
type: "attr",
|
|
33381
|
-
xmlName: XML_NODE_NAME$
|
|
33382
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33382
|
+
xmlName: XML_NODE_NAME$q,
|
|
33383
|
+
sdNodeOrKeyName: SD_ATTR_KEY$a,
|
|
33383
33384
|
attributes
|
|
33384
33385
|
};
|
|
33385
33386
|
};
|
|
33386
|
-
const config$
|
|
33387
|
-
xmlName: XML_NODE_NAME$
|
|
33388
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33387
|
+
const config$p = {
|
|
33388
|
+
xmlName: XML_NODE_NAME$q,
|
|
33389
|
+
sdNodeOrKeyName: SD_ATTR_KEY$a,
|
|
33389
33390
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33390
|
-
encode: encode$
|
|
33391
|
+
encode: encode$H,
|
|
33391
33392
|
attributes: validXmlAttributes$i
|
|
33392
33393
|
};
|
|
33393
|
-
const translator$
|
|
33394
|
-
const encode$
|
|
33395
|
-
const decode$
|
|
33394
|
+
const translator$1j = NodeTranslator.from(config$p);
|
|
33395
|
+
const encode$G = (attributes) => attributes?.["w:eastAsia"];
|
|
33396
|
+
const decode$C = (attrs) => attrs?.eastAsia;
|
|
33396
33397
|
const attrConfig$i = Object.freeze({
|
|
33397
33398
|
xmlName: "w:eastAsia",
|
|
33398
33399
|
sdName: "eastAsia",
|
|
33399
|
-
encode: encode$
|
|
33400
|
-
decode: decode$
|
|
33400
|
+
encode: encode$G,
|
|
33401
|
+
decode: decode$C
|
|
33401
33402
|
});
|
|
33402
|
-
const encode$
|
|
33403
|
-
const decode$
|
|
33403
|
+
const encode$F = (attributes) => attributes?.["w:ascii"];
|
|
33404
|
+
const decode$B = (attrs) => attrs?.ascii;
|
|
33404
33405
|
const attrConfig$h = Object.freeze({
|
|
33405
33406
|
xmlName: "w:ascii",
|
|
33406
33407
|
sdName: "ascii",
|
|
33407
|
-
encode: encode$
|
|
33408
|
-
decode: decode$
|
|
33408
|
+
encode: encode$F,
|
|
33409
|
+
decode: decode$B
|
|
33409
33410
|
});
|
|
33410
|
-
const encode$
|
|
33411
|
-
const decode$
|
|
33411
|
+
const encode$E = (attributes) => attributes?.["w:hAnsi"];
|
|
33412
|
+
const decode$A = (attrs) => attrs?.hAnsi;
|
|
33412
33413
|
const attrConfig$g = Object.freeze({
|
|
33413
33414
|
xmlName: "w:hAnsi",
|
|
33414
33415
|
sdName: "hAnsi",
|
|
33415
|
-
encode: encode$
|
|
33416
|
-
decode: decode$
|
|
33416
|
+
encode: encode$E,
|
|
33417
|
+
decode: decode$A
|
|
33417
33418
|
});
|
|
33418
|
-
const encode$
|
|
33419
|
-
const decode$
|
|
33419
|
+
const encode$D = (attributes) => attributes?.["w:cs"];
|
|
33420
|
+
const decode$z = (attrs) => attrs?.cs;
|
|
33420
33421
|
const attrConfig$f = Object.freeze({
|
|
33421
33422
|
xmlName: "w:cs",
|
|
33422
33423
|
sdName: "cs",
|
|
33423
|
-
encode: encode$
|
|
33424
|
-
decode: decode$
|
|
33424
|
+
encode: encode$D,
|
|
33425
|
+
decode: decode$z
|
|
33425
33426
|
});
|
|
33426
|
-
const encode$
|
|
33427
|
-
const decode$
|
|
33427
|
+
const encode$C = (attributes) => attributes?.["w:val"];
|
|
33428
|
+
const decode$y = (attrs) => attrs?.value;
|
|
33428
33429
|
const attrConfig$e = Object.freeze({
|
|
33429
33430
|
xmlName: "w:val",
|
|
33430
33431
|
sdName: "value",
|
|
33431
|
-
encode: encode$
|
|
33432
|
-
decode: decode$
|
|
33432
|
+
encode: encode$C,
|
|
33433
|
+
decode: decode$y
|
|
33433
33434
|
});
|
|
33434
33435
|
const validXmlAttributes$h = [attrConfig$i, attrConfig$h, attrConfig$g, attrConfig$f, attrConfig$e];
|
|
33435
|
-
const XML_NODE_NAME$
|
|
33436
|
-
const SD_ATTR_KEY$
|
|
33437
|
-
const encode$
|
|
33436
|
+
const XML_NODE_NAME$p = "w:rFonts";
|
|
33437
|
+
const SD_ATTR_KEY$9 = "fontFamily";
|
|
33438
|
+
const encode$B = (params2, encodedAttrs = {}) => {
|
|
33438
33439
|
const { nodes } = params2;
|
|
33439
33440
|
const node = nodes?.[0];
|
|
33440
33441
|
const sourceAttrs = node?.attributes || {};
|
|
@@ -33458,111 +33459,119 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33458
33459
|
attributes["w:val"] = attributes["w:eastAsia"];
|
|
33459
33460
|
}
|
|
33460
33461
|
if (attributes["w:val"] === void 0) delete attributes["w:val"];
|
|
33462
|
+
if (params2.inlineDocumentFonts) {
|
|
33463
|
+
const font = attributes["w:ascii"];
|
|
33464
|
+
if (font) {
|
|
33465
|
+
if (!params2.inlineDocumentFonts.includes(font)) {
|
|
33466
|
+
params2.inlineDocumentFonts.push(font);
|
|
33467
|
+
}
|
|
33468
|
+
}
|
|
33469
|
+
}
|
|
33461
33470
|
return {
|
|
33462
33471
|
type: "attr",
|
|
33463
|
-
xmlName: XML_NODE_NAME$
|
|
33464
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33472
|
+
xmlName: XML_NODE_NAME$p,
|
|
33473
|
+
sdNodeOrKeyName: SD_ATTR_KEY$9,
|
|
33465
33474
|
attributes
|
|
33466
33475
|
};
|
|
33467
33476
|
};
|
|
33468
|
-
const config$
|
|
33469
|
-
xmlName: XML_NODE_NAME$
|
|
33470
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33477
|
+
const config$o = {
|
|
33478
|
+
xmlName: XML_NODE_NAME$p,
|
|
33479
|
+
sdNodeOrKeyName: SD_ATTR_KEY$9,
|
|
33471
33480
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33472
|
-
encode: encode$
|
|
33481
|
+
encode: encode$B,
|
|
33473
33482
|
attributes: validXmlAttributes$h
|
|
33474
33483
|
};
|
|
33475
|
-
const translator$
|
|
33476
|
-
const encode$
|
|
33477
|
-
const decode$
|
|
33484
|
+
const translator$1i = NodeTranslator.from(config$o);
|
|
33485
|
+
const encode$A = (attributes) => attributes?.["w:val"];
|
|
33486
|
+
const decode$x = (attrs) => attrs?.styleId;
|
|
33478
33487
|
const attrConfig$d = Object.freeze({
|
|
33479
33488
|
xmlName: "w:val",
|
|
33480
33489
|
sdName: "styleId",
|
|
33481
|
-
encode: encode$
|
|
33482
|
-
decode: decode$
|
|
33490
|
+
encode: encode$A,
|
|
33491
|
+
decode: decode$x
|
|
33483
33492
|
});
|
|
33484
33493
|
const validXmlAttributes$g = [attrConfig$d];
|
|
33485
|
-
const XML_NODE_NAME$
|
|
33486
|
-
const SD_ATTR_KEY$
|
|
33487
|
-
const encode$
|
|
33494
|
+
const XML_NODE_NAME$o = "w:rStyle";
|
|
33495
|
+
const SD_ATTR_KEY$8 = "styleId";
|
|
33496
|
+
const encode$z = (params2, encodedAttrs = {}) => {
|
|
33488
33497
|
const { nodes } = params2;
|
|
33489
33498
|
const node = nodes?.[0];
|
|
33490
33499
|
const value = encodedAttrs.styleId ?? node?.attributes?.["w:val"];
|
|
33491
33500
|
return {
|
|
33492
33501
|
type: "attr",
|
|
33493
|
-
xmlName: XML_NODE_NAME$
|
|
33494
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33502
|
+
xmlName: XML_NODE_NAME$o,
|
|
33503
|
+
sdNodeOrKeyName: SD_ATTR_KEY$8,
|
|
33495
33504
|
attributes: { "w:val": value ?? null }
|
|
33496
33505
|
};
|
|
33497
33506
|
};
|
|
33498
|
-
const config$
|
|
33499
|
-
xmlName: XML_NODE_NAME$
|
|
33500
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33507
|
+
const config$n = {
|
|
33508
|
+
xmlName: XML_NODE_NAME$o,
|
|
33509
|
+
sdNodeOrKeyName: SD_ATTR_KEY$8,
|
|
33501
33510
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33502
|
-
encode: encode$
|
|
33511
|
+
encode: encode$z,
|
|
33503
33512
|
attributes: validXmlAttributes$g
|
|
33504
33513
|
};
|
|
33505
|
-
const translator$
|
|
33506
|
-
const encode$
|
|
33507
|
-
const decode$
|
|
33514
|
+
const translator$1h = NodeTranslator.from(config$n);
|
|
33515
|
+
const encode$y = (attributes) => attributes?.["w:val"];
|
|
33516
|
+
const decode$w = (attrs) => attrs?.fontSize;
|
|
33508
33517
|
const attrConfig$c = Object.freeze({
|
|
33509
33518
|
xmlName: "w:val",
|
|
33510
33519
|
sdName: "fontSize",
|
|
33511
|
-
encode: encode$
|
|
33512
|
-
decode: decode$
|
|
33520
|
+
encode: encode$y,
|
|
33521
|
+
decode: decode$w
|
|
33513
33522
|
});
|
|
33514
33523
|
const validXmlAttributes$f = [attrConfig$c];
|
|
33515
|
-
const XML_NODE_NAME$
|
|
33516
|
-
const SD_ATTR_KEY$
|
|
33517
|
-
const encode$
|
|
33524
|
+
const XML_NODE_NAME$n = "w:sz";
|
|
33525
|
+
const SD_ATTR_KEY$7 = "fontSize";
|
|
33526
|
+
const encode$x = (params2, encodedAttrs = {}) => {
|
|
33518
33527
|
const { nodes } = params2;
|
|
33519
33528
|
const node = nodes?.[0];
|
|
33520
33529
|
const value = encodedAttrs.fontSize ?? node?.attributes?.["w:val"];
|
|
33521
33530
|
return {
|
|
33522
33531
|
type: "attr",
|
|
33523
|
-
xmlName: XML_NODE_NAME$
|
|
33524
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33532
|
+
xmlName: XML_NODE_NAME$n,
|
|
33533
|
+
sdNodeOrKeyName: SD_ATTR_KEY$7,
|
|
33525
33534
|
attributes: { "w:val": value ?? null }
|
|
33526
33535
|
};
|
|
33527
33536
|
};
|
|
33528
|
-
const config$
|
|
33529
|
-
xmlName: XML_NODE_NAME$
|
|
33530
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33537
|
+
const config$m = {
|
|
33538
|
+
xmlName: XML_NODE_NAME$n,
|
|
33539
|
+
sdNodeOrKeyName: SD_ATTR_KEY$7,
|
|
33531
33540
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33532
|
-
encode: encode$
|
|
33541
|
+
encode: encode$x,
|
|
33533
33542
|
attributes: validXmlAttributes$f
|
|
33534
33543
|
};
|
|
33535
|
-
const translator$
|
|
33536
|
-
const encode$
|
|
33537
|
-
const decode$
|
|
33544
|
+
const translator$1g = NodeTranslator.from(config$m);
|
|
33545
|
+
const encode$w = (attributes) => attributes?.["w:val"];
|
|
33546
|
+
const decode$v = (attrs) => attrs?.fontSizeCs;
|
|
33538
33547
|
const attrConfig$b = Object.freeze({
|
|
33539
33548
|
xmlName: "w:val",
|
|
33540
33549
|
sdName: "fontSizeCs",
|
|
33541
|
-
encode: encode$
|
|
33542
|
-
decode: decode$
|
|
33550
|
+
encode: encode$w,
|
|
33551
|
+
decode: decode$v
|
|
33543
33552
|
});
|
|
33544
33553
|
const validXmlAttributes$e = [attrConfig$b];
|
|
33545
|
-
const XML_NODE_NAME$
|
|
33546
|
-
const SD_ATTR_KEY$
|
|
33547
|
-
const encode$
|
|
33554
|
+
const XML_NODE_NAME$m = "w:szCs";
|
|
33555
|
+
const SD_ATTR_KEY$6 = "fontSizeCs";
|
|
33556
|
+
const encode$v = (params2, encodedAttrs = {}) => {
|
|
33548
33557
|
const { nodes } = params2;
|
|
33549
33558
|
const node = nodes?.[0];
|
|
33550
33559
|
const value = encodedAttrs.fontSizeCs ?? node?.attributes?.["w:val"];
|
|
33551
33560
|
return {
|
|
33552
33561
|
type: "attr",
|
|
33553
|
-
xmlName: XML_NODE_NAME$
|
|
33554
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33562
|
+
xmlName: XML_NODE_NAME$m,
|
|
33563
|
+
sdNodeOrKeyName: SD_ATTR_KEY$6,
|
|
33555
33564
|
attributes: { "w:val": value ?? null }
|
|
33556
33565
|
};
|
|
33557
33566
|
};
|
|
33558
|
-
const config$
|
|
33559
|
-
xmlName: XML_NODE_NAME$
|
|
33560
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33567
|
+
const config$l = {
|
|
33568
|
+
xmlName: XML_NODE_NAME$m,
|
|
33569
|
+
sdNodeOrKeyName: SD_ATTR_KEY$6,
|
|
33561
33570
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33562
|
-
encode: encode$
|
|
33571
|
+
encode: encode$v,
|
|
33563
33572
|
attributes: validXmlAttributes$e
|
|
33564
33573
|
};
|
|
33565
|
-
const translator$
|
|
33574
|
+
const translator$1f = NodeTranslator.from(config$l);
|
|
33566
33575
|
const generateV2HandlerEntity = (handlerName, translator2) => ({
|
|
33567
33576
|
handlerName,
|
|
33568
33577
|
handler: (params2) => {
|
|
@@ -33586,7 +33595,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33586
33595
|
xmlName,
|
|
33587
33596
|
sdNodeOrKeyName: sdName,
|
|
33588
33597
|
encode: ({ nodes }) => {
|
|
33589
|
-
return transformEncode(nodes[0]
|
|
33598
|
+
return transformEncode(nodes[0]?.attributes?.[attrName]) ?? void 0;
|
|
33590
33599
|
},
|
|
33591
33600
|
decode: ({ node }) => {
|
|
33592
33601
|
const value = node.attrs?.[sdName] != null ? transformDecode(node.attrs[sdName]) : void 0;
|
|
@@ -33618,8 +33627,32 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33618
33627
|
xmlName,
|
|
33619
33628
|
sdNodeOrKeyName: sdName,
|
|
33620
33629
|
attributes: [
|
|
33621
|
-
createAttributeHandler(
|
|
33622
|
-
|
|
33630
|
+
createAttributeHandler(
|
|
33631
|
+
"w:val",
|
|
33632
|
+
"val",
|
|
33633
|
+
(v2) => v2 === "nil" ? "none" : v2,
|
|
33634
|
+
(v2) => v2 === "none" ? "nil" : v2
|
|
33635
|
+
),
|
|
33636
|
+
createAttributeHandler(
|
|
33637
|
+
"w:color",
|
|
33638
|
+
"color",
|
|
33639
|
+
(v2) => {
|
|
33640
|
+
if (v2 === "auto") {
|
|
33641
|
+
return null;
|
|
33642
|
+
} else if (v2) {
|
|
33643
|
+
return `#${v2}`;
|
|
33644
|
+
} else {
|
|
33645
|
+
return void 0;
|
|
33646
|
+
}
|
|
33647
|
+
},
|
|
33648
|
+
(v2) => {
|
|
33649
|
+
if (v2) {
|
|
33650
|
+
return v2.replace("#", "");
|
|
33651
|
+
} else {
|
|
33652
|
+
return void 0;
|
|
33653
|
+
}
|
|
33654
|
+
}
|
|
33655
|
+
),
|
|
33623
33656
|
createAttributeHandler("w:themeColor"),
|
|
33624
33657
|
createAttributeHandler("w:themeTint"),
|
|
33625
33658
|
createAttributeHandler("w:themeShade"),
|
|
@@ -33685,6 +33718,37 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33685
33718
|
});
|
|
33686
33719
|
return elements;
|
|
33687
33720
|
}
|
|
33721
|
+
function createNestedPropertiesTranslator(xmlName, sdName, propertyTranslators2, defaultEncodedAttrs = {}) {
|
|
33722
|
+
const propertyTranslatorsByXmlName = {};
|
|
33723
|
+
const propertyTranslatorsBySdName = {};
|
|
33724
|
+
propertyTranslators2.forEach((translator2) => {
|
|
33725
|
+
propertyTranslatorsByXmlName[translator2.xmlName] = translator2;
|
|
33726
|
+
propertyTranslatorsBySdName[translator2.sdNodeOrKeyName] = translator2;
|
|
33727
|
+
});
|
|
33728
|
+
return {
|
|
33729
|
+
xmlName,
|
|
33730
|
+
sdNodeOrKeyName: sdName,
|
|
33731
|
+
type: NodeTranslator.translatorTypes.NODE,
|
|
33732
|
+
attributes: [],
|
|
33733
|
+
encode: (params2) => {
|
|
33734
|
+
const { nodes } = params2;
|
|
33735
|
+
const node = nodes[0];
|
|
33736
|
+
const attributes = { ...defaultEncodedAttrs, ...encodeProperties(node, propertyTranslatorsByXmlName) };
|
|
33737
|
+
return Object.keys(attributes).length > 0 ? attributes : void 0;
|
|
33738
|
+
},
|
|
33739
|
+
decode: (params2) => {
|
|
33740
|
+
const currentValue = params2.node.attrs?.[sdName];
|
|
33741
|
+
const elements = decodeProperties(propertyTranslatorsBySdName, currentValue);
|
|
33742
|
+
const newNode = {
|
|
33743
|
+
name: xmlName,
|
|
33744
|
+
type: "element",
|
|
33745
|
+
attributes: {},
|
|
33746
|
+
elements
|
|
33747
|
+
};
|
|
33748
|
+
return newNode;
|
|
33749
|
+
}
|
|
33750
|
+
};
|
|
33751
|
+
}
|
|
33688
33752
|
const parseBoolean = (value) => value != null ? ["1", "true"].includes(value) : void 0;
|
|
33689
33753
|
const booleanToString = (value) => value != null ? value ? "1" : "0" : void 0;
|
|
33690
33754
|
const parseInteger = (value) => {
|
|
@@ -33696,9 +33760,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33696
33760
|
const intValue = parseInteger(value);
|
|
33697
33761
|
return intValue != void 0 ? String(intValue) : void 0;
|
|
33698
33762
|
};
|
|
33699
|
-
const XML_NODE_NAME$
|
|
33700
|
-
const SD_ATTR_KEY$
|
|
33701
|
-
const encode$
|
|
33763
|
+
const XML_NODE_NAME$l = "w:caps";
|
|
33764
|
+
const SD_ATTR_KEY$5 = "textTransform";
|
|
33765
|
+
const encode$u = (params2, encodedAttrs = {}) => {
|
|
33702
33766
|
const { nodes } = params2;
|
|
33703
33767
|
const node = nodes[0];
|
|
33704
33768
|
if (!node) return void 0;
|
|
@@ -33710,31 +33774,31 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33710
33774
|
}
|
|
33711
33775
|
return {
|
|
33712
33776
|
type: "attr",
|
|
33713
|
-
xmlName: XML_NODE_NAME$
|
|
33714
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33715
|
-
attributes: { [SD_ATTR_KEY$
|
|
33777
|
+
xmlName: XML_NODE_NAME$l,
|
|
33778
|
+
sdNodeOrKeyName: SD_ATTR_KEY$5,
|
|
33779
|
+
attributes: { [SD_ATTR_KEY$5]: result }
|
|
33716
33780
|
};
|
|
33717
33781
|
};
|
|
33718
|
-
const config$
|
|
33719
|
-
xmlName: XML_NODE_NAME$
|
|
33720
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33782
|
+
const config$k = {
|
|
33783
|
+
xmlName: XML_NODE_NAME$l,
|
|
33784
|
+
sdNodeOrKeyName: SD_ATTR_KEY$5,
|
|
33721
33785
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33722
|
-
encode: encode$
|
|
33786
|
+
encode: encode$u,
|
|
33723
33787
|
attributes: [createAttributeHandler("w:val")]
|
|
33724
33788
|
};
|
|
33725
|
-
const translator
|
|
33789
|
+
const translator$1e = NodeTranslator.from(config$k);
|
|
33726
33790
|
const runPropertyTranslators = Object.freeze({
|
|
33727
|
-
"w:b": translator$
|
|
33728
|
-
"w:i": translator$
|
|
33729
|
-
"w:u": translator$
|
|
33730
|
-
"w:strike": translator$
|
|
33731
|
-
"w:color": translator$
|
|
33732
|
-
"w:highlight": translator$
|
|
33733
|
-
"w:rFonts": translator$
|
|
33734
|
-
"w:rStyle": translator$
|
|
33735
|
-
"w:sz": translator$
|
|
33736
|
-
"w:szCs": translator$
|
|
33737
|
-
"w:caps": translator
|
|
33791
|
+
"w:b": translator$1n,
|
|
33792
|
+
"w:i": translator$1m,
|
|
33793
|
+
"w:u": translator$1l,
|
|
33794
|
+
"w:strike": translator$1k,
|
|
33795
|
+
"w:color": translator$1j,
|
|
33796
|
+
"w:highlight": translator$1q,
|
|
33797
|
+
"w:rFonts": translator$1i,
|
|
33798
|
+
"w:rStyle": translator$1h,
|
|
33799
|
+
"w:sz": translator$1g,
|
|
33800
|
+
"w:szCs": translator$1f,
|
|
33801
|
+
"w:caps": translator$1e
|
|
33738
33802
|
});
|
|
33739
33803
|
const rawRunPropertyXmlNames = Object.freeze(["w:lang", "w:shd"]);
|
|
33740
33804
|
const RAW_CHILD_NAME_SET = new Set(rawRunPropertyXmlNames);
|
|
@@ -33748,9 +33812,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33748
33812
|
attributes: { ...candidate.attributes || {} }
|
|
33749
33813
|
};
|
|
33750
33814
|
};
|
|
33751
|
-
const XML_NODE_NAME$
|
|
33752
|
-
const SD_ATTR_KEY$
|
|
33753
|
-
const encode$
|
|
33815
|
+
const XML_NODE_NAME$k = "w:rPr";
|
|
33816
|
+
const SD_ATTR_KEY$4 = "runProperties";
|
|
33817
|
+
const encode$t = (params2) => {
|
|
33754
33818
|
const { nodes } = params2;
|
|
33755
33819
|
const node = nodes?.[0] || {};
|
|
33756
33820
|
const contents = Array.isArray(node.elements) ? node.elements : [];
|
|
@@ -33784,16 +33848,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
33784
33848
|
attributes: runPropsArray
|
|
33785
33849
|
};
|
|
33786
33850
|
};
|
|
33787
|
-
const config$
|
|
33788
|
-
xmlName: XML_NODE_NAME$
|
|
33789
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
33851
|
+
const config$j = {
|
|
33852
|
+
xmlName: XML_NODE_NAME$k,
|
|
33853
|
+
sdNodeOrKeyName: SD_ATTR_KEY$4,
|
|
33790
33854
|
type: NodeTranslator.translatorTypes.ATTRIBUTE,
|
|
33791
|
-
encode: encode$
|
|
33855
|
+
encode: encode$t
|
|
33792
33856
|
};
|
|
33793
|
-
const translator$
|
|
33857
|
+
const translator$1d = NodeTranslator.from(config$j);
|
|
33794
33858
|
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
33859
|
const containsEastAsianCharacters = (text) => EAST_ASIAN_CHARACTER_REGEX.test(text);
|
|
33796
|
-
const collectRunProperties = (params2, rPrNode, translator2 = translator$
|
|
33860
|
+
const collectRunProperties = (params2, rPrNode, translator2 = translator$1d) => {
|
|
33797
33861
|
if (!rPrNode) return { entries: [], hadRPr: false, styleChangeMarks: [] };
|
|
33798
33862
|
const result = translator2.encode({ ...params2, nodes: [rPrNode] }) || {};
|
|
33799
33863
|
let entries = [];
|
|
@@ -34266,7 +34330,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34266
34330
|
}
|
|
34267
34331
|
return runs;
|
|
34268
34332
|
};
|
|
34269
|
-
const XML_NODE_NAME$
|
|
34333
|
+
const XML_NODE_NAME$j = "w:hyperlink";
|
|
34270
34334
|
const SD_NODE_NAME$e = "link";
|
|
34271
34335
|
const _createAttributeHandler = (xmlName, sdName) => ({
|
|
34272
34336
|
xmlName,
|
|
@@ -34287,7 +34351,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34287
34351
|
_createAttributeHandler("r:id", "rId"),
|
|
34288
34352
|
_createAttributeHandler("w:tgtFrame", "target")
|
|
34289
34353
|
];
|
|
34290
|
-
const encode$
|
|
34354
|
+
const encode$s = (params2, encodedAttrs) => {
|
|
34291
34355
|
const { nodes, docx, nodeListHandler } = params2;
|
|
34292
34356
|
const node = nodes[0];
|
|
34293
34357
|
let href = _resolveHref(docx, encodedAttrs);
|
|
@@ -34321,7 +34385,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34321
34385
|
}
|
|
34322
34386
|
return href;
|
|
34323
34387
|
};
|
|
34324
|
-
function decode$
|
|
34388
|
+
function decode$u(params2) {
|
|
34325
34389
|
const { hyperlinkGroup = [params2.node] } = params2.extraParams || {};
|
|
34326
34390
|
const node = hyperlinkGroup[0];
|
|
34327
34391
|
const linkMark = node.marks.find((m2) => m2.type === "link");
|
|
@@ -34370,55 +34434,55 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34370
34434
|
});
|
|
34371
34435
|
return id;
|
|
34372
34436
|
}
|
|
34373
|
-
const config$
|
|
34374
|
-
xmlName: XML_NODE_NAME$
|
|
34437
|
+
const config$i = {
|
|
34438
|
+
xmlName: XML_NODE_NAME$j,
|
|
34375
34439
|
sdNodeOrKeyName: SD_NODE_NAME$e,
|
|
34376
34440
|
type: NodeTranslator.translatorTypes.NODE,
|
|
34377
|
-
encode: encode$
|
|
34378
|
-
decode: decode$
|
|
34441
|
+
encode: encode$s,
|
|
34442
|
+
decode: decode$u,
|
|
34379
34443
|
attributes: validXmlAttributes$d
|
|
34380
34444
|
};
|
|
34381
|
-
const translator$
|
|
34382
|
-
const encode$
|
|
34445
|
+
const translator$1c = NodeTranslator.from(config$i);
|
|
34446
|
+
const encode$r = (attributes) => {
|
|
34383
34447
|
return attributes["w:rsidR"];
|
|
34384
34448
|
};
|
|
34385
|
-
const decode$
|
|
34449
|
+
const decode$t = (attrs) => {
|
|
34386
34450
|
return attrs.rsidR;
|
|
34387
34451
|
};
|
|
34388
34452
|
const attrConfig$a = Object.freeze({
|
|
34389
34453
|
xmlName: "w:rsidR",
|
|
34390
34454
|
sdName: "rsidR",
|
|
34391
|
-
encode: encode$
|
|
34392
|
-
decode: decode$
|
|
34455
|
+
encode: encode$r,
|
|
34456
|
+
decode: decode$t
|
|
34393
34457
|
});
|
|
34394
|
-
const encode$
|
|
34458
|
+
const encode$q = (attributes) => {
|
|
34395
34459
|
return attributes["w:rsidRPr"];
|
|
34396
34460
|
};
|
|
34397
|
-
const decode$
|
|
34461
|
+
const decode$s = (attrs) => {
|
|
34398
34462
|
return attrs.rsidRPr;
|
|
34399
34463
|
};
|
|
34400
34464
|
const attrConfig$9 = Object.freeze({
|
|
34401
34465
|
xmlName: "w:rsidRPr",
|
|
34402
34466
|
sdName: "rsidRPr",
|
|
34403
|
-
encode: encode$
|
|
34404
|
-
decode: decode$
|
|
34467
|
+
encode: encode$q,
|
|
34468
|
+
decode: decode$s
|
|
34405
34469
|
});
|
|
34406
|
-
const encode$
|
|
34470
|
+
const encode$p = (attributes) => {
|
|
34407
34471
|
return attributes["w:rsidDel"];
|
|
34408
34472
|
};
|
|
34409
|
-
const decode$
|
|
34473
|
+
const decode$r = (attrs) => {
|
|
34410
34474
|
return attrs.rsidDel;
|
|
34411
34475
|
};
|
|
34412
34476
|
const attrConfig$8 = Object.freeze({
|
|
34413
34477
|
xmlName: "w:rsidDel",
|
|
34414
34478
|
sdName: "rsidDel",
|
|
34415
|
-
encode: encode$
|
|
34416
|
-
decode: decode$
|
|
34479
|
+
encode: encode$p,
|
|
34480
|
+
decode: decode$r
|
|
34417
34481
|
});
|
|
34418
34482
|
const validXmlAttributes$c = [attrConfig$a, attrConfig$9, attrConfig$8];
|
|
34419
|
-
const XML_NODE_NAME$
|
|
34483
|
+
const XML_NODE_NAME$i = "w:r";
|
|
34420
34484
|
const SD_KEY_NAME = "run";
|
|
34421
|
-
const encode$
|
|
34485
|
+
const encode$o = (params2, encodedAttrs = {}) => {
|
|
34422
34486
|
const { nodes = [], nodeListHandler } = params2 || {};
|
|
34423
34487
|
const runNode = nodes[0];
|
|
34424
34488
|
if (!runNode) return void 0;
|
|
@@ -34466,7 +34530,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34466
34530
|
}
|
|
34467
34531
|
return runNodeResult;
|
|
34468
34532
|
};
|
|
34469
|
-
const decode$
|
|
34533
|
+
const decode$q = (params2, decodedAttrs = {}) => {
|
|
34470
34534
|
const { node } = params2 || {};
|
|
34471
34535
|
if (!node) return void 0;
|
|
34472
34536
|
const isLinkNode = node.marks?.some((m2) => m2.type === "link");
|
|
@@ -34475,7 +34539,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34475
34539
|
...params2.extraParams,
|
|
34476
34540
|
linkProcessed: true
|
|
34477
34541
|
};
|
|
34478
|
-
return translator$
|
|
34542
|
+
return translator$1c.decode({ ...params2, extraParams });
|
|
34479
34543
|
}
|
|
34480
34544
|
const { runNode: runNodeForExport, trackingMarksByType } = prepareRunTrackingContext(node);
|
|
34481
34545
|
const runAttrs = runNodeForExport.attrs || {};
|
|
@@ -34531,7 +34595,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34531
34595
|
runs.push(trackedClone);
|
|
34532
34596
|
return;
|
|
34533
34597
|
}
|
|
34534
|
-
const runWrapper = { name: XML_NODE_NAME$
|
|
34598
|
+
const runWrapper = { name: XML_NODE_NAME$i, elements: [] };
|
|
34535
34599
|
applyBaseRunProps(runWrapper);
|
|
34536
34600
|
if (!Array.isArray(runWrapper.elements)) runWrapper.elements = [];
|
|
34537
34601
|
runWrapper.elements.push(cloneXmlNode(child));
|
|
@@ -34539,7 +34603,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34539
34603
|
});
|
|
34540
34604
|
const trackedRuns = ensureTrackedWrapper(runs, trackingMarksByType);
|
|
34541
34605
|
if (!trackedRuns.length) {
|
|
34542
|
-
const emptyRun = { name: XML_NODE_NAME$
|
|
34606
|
+
const emptyRun = { name: XML_NODE_NAME$i, elements: [] };
|
|
34543
34607
|
applyBaseRunProps(emptyRun);
|
|
34544
34608
|
trackedRuns.push(emptyRun);
|
|
34545
34609
|
}
|
|
@@ -34553,15 +34617,15 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34553
34617
|
}
|
|
34554
34618
|
return trackedRuns;
|
|
34555
34619
|
};
|
|
34556
|
-
const config$
|
|
34557
|
-
xmlName: XML_NODE_NAME$
|
|
34620
|
+
const config$h = {
|
|
34621
|
+
xmlName: XML_NODE_NAME$i,
|
|
34558
34622
|
sdNodeOrKeyName: SD_KEY_NAME,
|
|
34559
34623
|
type: NodeTranslator.translatorTypes.NODE,
|
|
34560
|
-
encode: encode$
|
|
34561
|
-
decode: decode$
|
|
34624
|
+
encode: encode$o,
|
|
34625
|
+
decode: decode$q,
|
|
34562
34626
|
attributes: validXmlAttributes$c
|
|
34563
34627
|
};
|
|
34564
|
-
const translator$
|
|
34628
|
+
const translator$1b = NodeTranslator.from(config$h);
|
|
34565
34629
|
function preProcessVerticalMergeCells(table, { editorSchema }) {
|
|
34566
34630
|
if (!table || !Array.isArray(table.content)) {
|
|
34567
34631
|
return table;
|
|
@@ -34602,13 +34666,13 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34602
34666
|
}
|
|
34603
34667
|
return table;
|
|
34604
34668
|
}
|
|
34605
|
-
const translator$
|
|
34669
|
+
const translator$1a = NodeTranslator.from({
|
|
34606
34670
|
xmlName: "w:cantSplit",
|
|
34607
34671
|
sdNodeOrKeyName: "cantSplit",
|
|
34608
34672
|
encode: ({ nodes }) => ["1", "true"].includes(nodes[0].attributes?.["w:val"] ?? "1"),
|
|
34609
34673
|
decode: ({ node }) => node.attrs?.cantSplit ? { attributes: {} } : void 0
|
|
34610
34674
|
});
|
|
34611
|
-
const translator$
|
|
34675
|
+
const translator$19 = NodeTranslator.from({
|
|
34612
34676
|
xmlName: "w:cnfStyle",
|
|
34613
34677
|
sdNodeOrKeyName: "cnfStyle",
|
|
34614
34678
|
attributes: [
|
|
@@ -34634,8 +34698,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34634
34698
|
return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
|
|
34635
34699
|
}
|
|
34636
34700
|
});
|
|
34637
|
-
const translator$
|
|
34638
|
-
const translator$
|
|
34701
|
+
const translator$18 = NodeTranslator.from(createSingleAttrPropertyHandler("w:divId"));
|
|
34702
|
+
const translator$17 = NodeTranslator.from(
|
|
34639
34703
|
createSingleAttrPropertyHandler(
|
|
34640
34704
|
"w:gridAfter",
|
|
34641
34705
|
null,
|
|
@@ -34644,7 +34708,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34644
34708
|
(v2) => integerToString(v2)
|
|
34645
34709
|
)
|
|
34646
34710
|
);
|
|
34647
|
-
const translator$
|
|
34711
|
+
const translator$16 = NodeTranslator.from(
|
|
34648
34712
|
createSingleAttrPropertyHandler(
|
|
34649
34713
|
"w:gridBefore",
|
|
34650
34714
|
null,
|
|
@@ -34653,21 +34717,21 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34653
34717
|
(v2) => integerToString(v2)
|
|
34654
34718
|
)
|
|
34655
34719
|
);
|
|
34656
|
-
const translator$
|
|
34720
|
+
const translator$15 = NodeTranslator.from({
|
|
34657
34721
|
xmlName: "w:hidden",
|
|
34658
34722
|
sdNodeOrKeyName: "hidden",
|
|
34659
34723
|
encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
|
|
34660
34724
|
decode: ({ node }) => node.attrs.hidden ? { attributes: {} } : void 0
|
|
34661
34725
|
});
|
|
34662
|
-
const translator$
|
|
34663
|
-
const translator$
|
|
34664
|
-
const translator$
|
|
34726
|
+
const translator$14 = NodeTranslator.from(createSingleAttrPropertyHandler("w:jc", "justification"));
|
|
34727
|
+
const translator$13 = NodeTranslator.from(createMeasurementPropertyHandler("w:tblCellSpacing", "tableCellSpacing"));
|
|
34728
|
+
const translator$12 = NodeTranslator.from({
|
|
34665
34729
|
xmlName: "w:tblHeader",
|
|
34666
34730
|
sdNodeOrKeyName: "repeatHeader",
|
|
34667
34731
|
encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
|
|
34668
34732
|
decode: ({ node }) => node.attrs.repeatHeader ? { attributes: {} } : void 0
|
|
34669
34733
|
});
|
|
34670
|
-
const translator$
|
|
34734
|
+
const translator$11 = NodeTranslator.from({
|
|
34671
34735
|
xmlName: "w:trHeight",
|
|
34672
34736
|
sdNodeOrKeyName: "rowHeight",
|
|
34673
34737
|
encode: ({ nodes }) => {
|
|
@@ -34694,108 +34758,164 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34694
34758
|
return Object.keys(heightAttrs).length > 0 ? { attributes: heightAttrs } : void 0;
|
|
34695
34759
|
}
|
|
34696
34760
|
});
|
|
34697
|
-
const translator$
|
|
34698
|
-
const translator
|
|
34699
|
-
const
|
|
34700
|
-
|
|
34701
|
-
|
|
34702
|
-
|
|
34703
|
-
|
|
34704
|
-
|
|
34761
|
+
const translator$10 = NodeTranslator.from(createMeasurementPropertyHandler("w:wAfter"));
|
|
34762
|
+
const translator$$ = NodeTranslator.from(createMeasurementPropertyHandler("w:wBefore"));
|
|
34763
|
+
const propertyTranslators$6 = [
|
|
34764
|
+
translator$1a,
|
|
34765
|
+
translator$19,
|
|
34766
|
+
translator$18,
|
|
34767
|
+
translator$17,
|
|
34768
|
+
translator$16,
|
|
34769
|
+
translator$15,
|
|
34770
|
+
translator$14,
|
|
34771
|
+
translator$13,
|
|
34772
|
+
translator$12,
|
|
34773
|
+
translator$11,
|
|
34774
|
+
translator$10,
|
|
34775
|
+
translator$$
|
|
34776
|
+
];
|
|
34777
|
+
const translator$_ = NodeTranslator.from(
|
|
34778
|
+
createNestedPropertiesTranslator("w:trPr", "tableRowProperties", propertyTranslators$6, {
|
|
34705
34779
|
cantSplit: false,
|
|
34706
34780
|
hidden: false,
|
|
34707
34781
|
repeatHeader: false
|
|
34708
|
-
}
|
|
34709
|
-
|
|
34710
|
-
|
|
34711
|
-
|
|
34712
|
-
};
|
|
34782
|
+
})
|
|
34783
|
+
);
|
|
34784
|
+
const createPlaceholderCell = (gridWidth, reason) => {
|
|
34785
|
+
const safeWidth = Number.isFinite(gridWidth) ? gridWidth : 0;
|
|
34786
|
+
const noBorder = { val: "none", size: 0 };
|
|
34713
34787
|
return {
|
|
34714
|
-
type:
|
|
34715
|
-
|
|
34716
|
-
|
|
34717
|
-
|
|
34788
|
+
type: "tableCell",
|
|
34789
|
+
attrs: {
|
|
34790
|
+
colspan: 1,
|
|
34791
|
+
rowspan: 1,
|
|
34792
|
+
colwidth: [safeWidth],
|
|
34793
|
+
__placeholder: reason,
|
|
34794
|
+
borders: {
|
|
34795
|
+
top: { ...noBorder },
|
|
34796
|
+
right: { ...noBorder },
|
|
34797
|
+
bottom: { ...noBorder },
|
|
34798
|
+
left: { ...noBorder }
|
|
34799
|
+
}
|
|
34800
|
+
},
|
|
34801
|
+
content: [{ type: "paragraph", content: [] }]
|
|
34718
34802
|
};
|
|
34719
34803
|
};
|
|
34720
|
-
const
|
|
34721
|
-
|
|
34722
|
-
|
|
34723
|
-
|
|
34724
|
-
|
|
34725
|
-
|
|
34726
|
-
|
|
34727
|
-
elements
|
|
34728
|
-
};
|
|
34729
|
-
return newNode;
|
|
34804
|
+
const advancePastRowSpans = (pendingRowSpans, startIndex, totalColumns) => {
|
|
34805
|
+
let index2 = startIndex;
|
|
34806
|
+
while (index2 < totalColumns && pendingRowSpans[index2] > 0) {
|
|
34807
|
+
pendingRowSpans[index2] -= 1;
|
|
34808
|
+
index2 += 1;
|
|
34809
|
+
}
|
|
34810
|
+
return index2;
|
|
34730
34811
|
};
|
|
34731
|
-
const
|
|
34732
|
-
|
|
34733
|
-
|
|
34734
|
-
|
|
34735
|
-
|
|
34736
|
-
|
|
34737
|
-
|
|
34738
|
-
|
|
34739
|
-
|
|
34740
|
-
|
|
34741
|
-
|
|
34742
|
-
|
|
34743
|
-
|
|
34744
|
-
|
|
34745
|
-
|
|
34746
|
-
|
|
34747
|
-
|
|
34748
|
-
|
|
34749
|
-
|
|
34750
|
-
|
|
34751
|
-
|
|
34752
|
-
}
|
|
34753
|
-
const
|
|
34754
|
-
|
|
34755
|
-
|
|
34756
|
-
|
|
34757
|
-
|
|
34758
|
-
|
|
34812
|
+
const fillPlaceholderColumns = ({
|
|
34813
|
+
content,
|
|
34814
|
+
pendingRowSpans,
|
|
34815
|
+
currentIndex,
|
|
34816
|
+
targetIndex,
|
|
34817
|
+
totalColumns,
|
|
34818
|
+
gridColumnWidths,
|
|
34819
|
+
reason
|
|
34820
|
+
}) => {
|
|
34821
|
+
let index2 = currentIndex;
|
|
34822
|
+
while (index2 < targetIndex && index2 < totalColumns) {
|
|
34823
|
+
if (pendingRowSpans[index2] > 0) {
|
|
34824
|
+
pendingRowSpans[index2] -= 1;
|
|
34825
|
+
index2 += 1;
|
|
34826
|
+
continue;
|
|
34827
|
+
}
|
|
34828
|
+
const width = Array.isArray(gridColumnWidths) ? gridColumnWidths[index2] ?? 0 : 0;
|
|
34829
|
+
content.push(createPlaceholderCell(width, reason));
|
|
34830
|
+
index2 += 1;
|
|
34831
|
+
}
|
|
34832
|
+
return index2;
|
|
34833
|
+
};
|
|
34834
|
+
const isPlaceholderCell = (cell) => {
|
|
34835
|
+
if (!cell) return false;
|
|
34836
|
+
if (cell.attrs?.__placeholder) return true;
|
|
34837
|
+
const widths = cell.attrs?.colwidth;
|
|
34838
|
+
if (Array.isArray(widths) && widths.length > 0) {
|
|
34839
|
+
const hasMeaningfulWidth = widths.some(
|
|
34840
|
+
(value) => typeof value === "number" && Number.isFinite(value) && Math.abs(value) > 1
|
|
34841
|
+
);
|
|
34842
|
+
if (!hasMeaningfulWidth) return true;
|
|
34843
|
+
}
|
|
34844
|
+
return false;
|
|
34759
34845
|
};
|
|
34760
|
-
const
|
|
34761
|
-
const XML_NODE_NAME$j = "w:tr";
|
|
34846
|
+
const XML_NODE_NAME$h = "w:tr";
|
|
34762
34847
|
const SD_NODE_NAME$d = "tableRow";
|
|
34763
34848
|
const validXmlAttributes$b = ["w:rsidDel", "w:rsidR", "w:rsidRPr", "w:rsidTr", "w14:paraId", "w14:textId"].map(
|
|
34764
34849
|
(xmlName) => createAttributeHandler(xmlName)
|
|
34765
34850
|
);
|
|
34766
|
-
const encode$
|
|
34851
|
+
const encode$n = (params2, encodedAttrs) => {
|
|
34767
34852
|
const { row } = params2.extraParams;
|
|
34768
34853
|
let tableRowProperties = {};
|
|
34769
34854
|
const tPr = row.elements.find((el) => el.name === "w:trPr");
|
|
34770
34855
|
if (tPr) {
|
|
34771
|
-
|
|
34856
|
+
tableRowProperties = translator$_.encode({
|
|
34772
34857
|
...params2,
|
|
34773
34858
|
nodes: [tPr]
|
|
34774
|
-
})
|
|
34859
|
+
});
|
|
34775
34860
|
}
|
|
34861
|
+
const gridBeforeRaw = tableRowProperties?.["gridBefore"];
|
|
34862
|
+
const safeGridBefore = typeof gridBeforeRaw === "number" && Number.isFinite(gridBeforeRaw) && gridBeforeRaw > 0 ? gridBeforeRaw : 0;
|
|
34776
34863
|
encodedAttrs["tableRowProperties"] = Object.freeze(tableRowProperties);
|
|
34777
34864
|
encodedAttrs["rowHeight"] = twipsToPixels(tableRowProperties["rowHeight"]?.value);
|
|
34778
34865
|
encodedAttrs["cantSplit"] = tableRowProperties["cantSplit"];
|
|
34779
|
-
const { columnWidths: gridColumnWidths } = params2.extraParams;
|
|
34866
|
+
const { columnWidths: gridColumnWidths, activeRowSpans = [] } = params2.extraParams;
|
|
34867
|
+
const totalColumns = Array.isArray(gridColumnWidths) ? gridColumnWidths.length : 0;
|
|
34868
|
+
const pendingRowSpans = Array.isArray(activeRowSpans) ? activeRowSpans.slice() : [];
|
|
34869
|
+
while (pendingRowSpans.length < totalColumns) pendingRowSpans.push(0);
|
|
34780
34870
|
const cellNodes = row.elements.filter((el) => el.name === "w:tc");
|
|
34871
|
+
const content = [];
|
|
34781
34872
|
let currentColumnIndex = 0;
|
|
34782
|
-
const
|
|
34783
|
-
|
|
34873
|
+
const fillUntil = (target, reason) => {
|
|
34874
|
+
currentColumnIndex = fillPlaceholderColumns({
|
|
34875
|
+
content,
|
|
34876
|
+
pendingRowSpans,
|
|
34877
|
+
currentIndex: currentColumnIndex,
|
|
34878
|
+
targetIndex: target,
|
|
34879
|
+
totalColumns,
|
|
34880
|
+
gridColumnWidths,
|
|
34881
|
+
reason
|
|
34882
|
+
});
|
|
34883
|
+
};
|
|
34884
|
+
const skipOccupiedColumns = () => {
|
|
34885
|
+
currentColumnIndex = advancePastRowSpans(pendingRowSpans, currentColumnIndex, totalColumns);
|
|
34886
|
+
};
|
|
34887
|
+
fillUntil(safeGridBefore, "gridBefore");
|
|
34888
|
+
skipOccupiedColumns();
|
|
34889
|
+
cellNodes?.forEach((node) => {
|
|
34890
|
+
skipOccupiedColumns();
|
|
34891
|
+
const startColumn = currentColumnIndex;
|
|
34892
|
+
const columnWidth = gridColumnWidths?.[startColumn] || null;
|
|
34784
34893
|
const result = translator$c.encode({
|
|
34785
34894
|
...params2,
|
|
34786
34895
|
extraParams: {
|
|
34787
34896
|
...params2.extraParams,
|
|
34788
|
-
node
|
|
34789
|
-
columnIndex:
|
|
34897
|
+
node,
|
|
34898
|
+
columnIndex: startColumn,
|
|
34790
34899
|
columnWidth
|
|
34791
34900
|
}
|
|
34792
34901
|
});
|
|
34793
|
-
|
|
34794
|
-
|
|
34795
|
-
|
|
34796
|
-
|
|
34797
|
-
|
|
34798
|
-
|
|
34902
|
+
if (result) {
|
|
34903
|
+
content.push(result);
|
|
34904
|
+
const colspan = Math.max(1, result.attrs?.colspan || 1);
|
|
34905
|
+
const rowspan = Math.max(1, result.attrs?.rowspan || 1);
|
|
34906
|
+
if (rowspan > 1) {
|
|
34907
|
+
for (let offset2 = 0; offset2 < colspan; offset2 += 1) {
|
|
34908
|
+
const target = startColumn + offset2;
|
|
34909
|
+
if (target < pendingRowSpans.length) {
|
|
34910
|
+
pendingRowSpans[target] = Math.max(pendingRowSpans[target], rowspan - 1);
|
|
34911
|
+
}
|
|
34912
|
+
}
|
|
34913
|
+
}
|
|
34914
|
+
currentColumnIndex = startColumn + colspan;
|
|
34915
|
+
}
|
|
34916
|
+
});
|
|
34917
|
+
skipOccupiedColumns();
|
|
34918
|
+
fillUntil(totalColumns, "gridAfter");
|
|
34799
34919
|
const newNode = {
|
|
34800
34920
|
type: "tableRow",
|
|
34801
34921
|
content,
|
|
@@ -34803,11 +34923,39 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34803
34923
|
};
|
|
34804
34924
|
return newNode;
|
|
34805
34925
|
};
|
|
34806
|
-
const decode$
|
|
34926
|
+
const decode$p = (params2, decodedAttrs) => {
|
|
34807
34927
|
const { node } = params2;
|
|
34808
|
-
const
|
|
34928
|
+
const cells = node.content || [];
|
|
34929
|
+
let leadingPlaceholders = 0;
|
|
34930
|
+
while (leadingPlaceholders < cells.length && isPlaceholderCell(cells[leadingPlaceholders])) {
|
|
34931
|
+
leadingPlaceholders += 1;
|
|
34932
|
+
}
|
|
34933
|
+
let trailingPlaceholders = 0;
|
|
34934
|
+
while (trailingPlaceholders < cells.length - leadingPlaceholders && isPlaceholderCell(cells[cells.length - 1 - trailingPlaceholders])) {
|
|
34935
|
+
trailingPlaceholders += 1;
|
|
34936
|
+
}
|
|
34937
|
+
const trimmedSlice = cells.slice(leadingPlaceholders, cells.length - trailingPlaceholders);
|
|
34938
|
+
const sanitizedCells = trimmedSlice.map((cell) => {
|
|
34939
|
+
if (cell?.attrs && "__placeholder" in cell.attrs) {
|
|
34940
|
+
const { __placeholder, ...rest } = cell.attrs;
|
|
34941
|
+
return { ...cell, attrs: rest };
|
|
34942
|
+
}
|
|
34943
|
+
return cell;
|
|
34944
|
+
});
|
|
34945
|
+
const trimmedContent = sanitizedCells.filter((_2, index2) => !isPlaceholderCell(trimmedSlice[index2]));
|
|
34946
|
+
const translateParams = {
|
|
34947
|
+
...params2,
|
|
34948
|
+
node: { ...node, content: trimmedContent }
|
|
34949
|
+
};
|
|
34950
|
+
const elements = translateChildNodes(translateParams);
|
|
34809
34951
|
if (node.attrs?.tableRowProperties) {
|
|
34810
34952
|
const tableRowProperties = { ...node.attrs.tableRowProperties };
|
|
34953
|
+
if (leadingPlaceholders > 0) {
|
|
34954
|
+
tableRowProperties.gridBefore = leadingPlaceholders;
|
|
34955
|
+
}
|
|
34956
|
+
if (trailingPlaceholders > 0) {
|
|
34957
|
+
tableRowProperties.gridAfter = trailingPlaceholders;
|
|
34958
|
+
}
|
|
34811
34959
|
if (node.attrs.rowHeight != null) {
|
|
34812
34960
|
const rowHeightPixels = twipsToPixels(node.attrs.tableRowProperties["rowHeight"]?.value);
|
|
34813
34961
|
if (rowHeightPixels !== node.attrs.rowHeight) {
|
|
@@ -34815,7 +34963,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34815
34963
|
}
|
|
34816
34964
|
}
|
|
34817
34965
|
tableRowProperties["cantSplit"] = node.attrs["cantSplit"];
|
|
34818
|
-
const trPr = translator$
|
|
34966
|
+
const trPr = translator$_.decode({
|
|
34819
34967
|
...params2,
|
|
34820
34968
|
node: { ...node, attrs: { ...node.attrs, tableRowProperties } }
|
|
34821
34969
|
});
|
|
@@ -34828,21 +34976,21 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34828
34976
|
};
|
|
34829
34977
|
};
|
|
34830
34978
|
const config$g = {
|
|
34831
|
-
xmlName: XML_NODE_NAME$
|
|
34979
|
+
xmlName: XML_NODE_NAME$h,
|
|
34832
34980
|
sdNodeOrKeyName: SD_NODE_NAME$d,
|
|
34833
34981
|
type: NodeTranslator.translatorTypes.NODE,
|
|
34834
|
-
encode: encode$
|
|
34835
|
-
decode: decode$
|
|
34982
|
+
encode: encode$n,
|
|
34983
|
+
decode: decode$p,
|
|
34836
34984
|
attributes: validXmlAttributes$b
|
|
34837
34985
|
};
|
|
34838
|
-
const translator$
|
|
34839
|
-
const translator$
|
|
34986
|
+
const translator$Z = NodeTranslator.from(config$g);
|
|
34987
|
+
const translator$Y = NodeTranslator.from({
|
|
34840
34988
|
xmlName: "w:bidiVisual",
|
|
34841
34989
|
sdNodeOrKeyName: "rightToLeft",
|
|
34842
34990
|
encode: ({ nodes }) => parseBoolean(nodes[0].attributes?.["w:val"] ?? "1"),
|
|
34843
34991
|
decode: ({ node }) => node.attrs.rightToLeft ? { attributes: {} } : void 0
|
|
34844
34992
|
});
|
|
34845
|
-
const translator$
|
|
34993
|
+
const translator$X = NodeTranslator.from({
|
|
34846
34994
|
xmlName: "w:shd",
|
|
34847
34995
|
sdNodeOrKeyName: "shading",
|
|
34848
34996
|
attributes: [
|
|
@@ -34864,11 +35012,11 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34864
35012
|
return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
|
|
34865
35013
|
}
|
|
34866
35014
|
});
|
|
34867
|
-
const translator$
|
|
34868
|
-
const translator$
|
|
34869
|
-
const translator$
|
|
34870
|
-
const translator$
|
|
34871
|
-
const translator$
|
|
35015
|
+
const translator$W = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblCaption", "caption"));
|
|
35016
|
+
const translator$V = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblDescription", "description"));
|
|
35017
|
+
const translator$U = NodeTranslator.from(createMeasurementPropertyHandler("w:tblInd", "tableIndent"));
|
|
35018
|
+
const translator$T = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblLayout", "tableLayout", "w:type"));
|
|
35019
|
+
const translator$S = NodeTranslator.from({
|
|
34872
35020
|
xmlName: "w:tblLook",
|
|
34873
35021
|
sdNodeOrKeyName: "tblLook",
|
|
34874
35022
|
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 +35028,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34880
35028
|
return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
|
|
34881
35029
|
}
|
|
34882
35030
|
});
|
|
34883
|
-
const translator$
|
|
34884
|
-
const translator$
|
|
34885
|
-
const translator$
|
|
35031
|
+
const translator$R = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblOverlap", "overlap"));
|
|
35032
|
+
const translator$Q = NodeTranslator.from(createSingleAttrPropertyHandler("w:tblStyle", "tableStyleId"));
|
|
35033
|
+
const translator$P = NodeTranslator.from(
|
|
34886
35034
|
createSingleAttrPropertyHandler("w:tblStyleColBandSize", "tableStyleColBandSize")
|
|
34887
35035
|
);
|
|
34888
|
-
const translator$
|
|
35036
|
+
const translator$O = NodeTranslator.from(
|
|
34889
35037
|
createSingleAttrPropertyHandler("w:tblStyleRowBandSize", "tableStyleRowBandSize")
|
|
34890
35038
|
);
|
|
34891
|
-
const translator$
|
|
34892
|
-
const translator$
|
|
35039
|
+
const translator$N = NodeTranslator.from(createMeasurementPropertyHandler("w:tblW", "tableWidth"));
|
|
35040
|
+
const translator$M = NodeTranslator.from({
|
|
34893
35041
|
xmlName: "w:tblpPr",
|
|
34894
35042
|
sdNodeOrKeyName: "floatingTableProperties",
|
|
34895
35043
|
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 +35049,67 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
34901
35049
|
return Object.keys(decodedAttrs).length > 0 ? { attributes: decodedAttrs } : void 0;
|
|
34902
35050
|
}
|
|
34903
35051
|
});
|
|
34904
|
-
const translator$
|
|
34905
|
-
const translator$
|
|
34906
|
-
const translator$
|
|
34907
|
-
const translator$
|
|
34908
|
-
const translator$
|
|
34909
|
-
const translator$
|
|
34910
|
-
const translator$
|
|
34911
|
-
const translator$
|
|
34912
|
-
const translator$
|
|
34913
|
-
const translator$
|
|
34914
|
-
const translator$
|
|
34915
|
-
const translator$
|
|
34916
|
-
const translator$
|
|
34917
|
-
const translator$
|
|
34918
|
-
const
|
|
34919
|
-
|
|
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 = [
|
|
35052
|
+
const translator$L = NodeTranslator.from(createBorderPropertyHandler("w:bottom"));
|
|
35053
|
+
const translator$K = NodeTranslator.from(createMeasurementPropertyHandler("w:bottom", "marginBottom"));
|
|
35054
|
+
const translator$J = NodeTranslator.from(createBorderPropertyHandler("w:end"));
|
|
35055
|
+
const translator$I = NodeTranslator.from(createMeasurementPropertyHandler("w:end", "marginEnd"));
|
|
35056
|
+
const translator$H = NodeTranslator.from(createBorderPropertyHandler("w:insideH"));
|
|
35057
|
+
const translator$G = NodeTranslator.from(createBorderPropertyHandler("w:insideV"));
|
|
35058
|
+
const translator$F = NodeTranslator.from(createBorderPropertyHandler("w:left"));
|
|
35059
|
+
const translator$E = NodeTranslator.from(createMeasurementPropertyHandler("w:left", "marginLeft"));
|
|
35060
|
+
const translator$D = NodeTranslator.from(createBorderPropertyHandler("w:right"));
|
|
35061
|
+
const translator$C = NodeTranslator.from(createMeasurementPropertyHandler("w:right", "marginRight"));
|
|
35062
|
+
const translator$B = NodeTranslator.from(createBorderPropertyHandler("w:start"));
|
|
35063
|
+
const translator$A = NodeTranslator.from(createMeasurementPropertyHandler("w:start", "marginStart"));
|
|
35064
|
+
const translator$z = NodeTranslator.from(createBorderPropertyHandler("w:top"));
|
|
35065
|
+
const translator$y = NodeTranslator.from(createMeasurementPropertyHandler("w:top", "marginTop"));
|
|
35066
|
+
const propertyTranslators$5 = [
|
|
35067
|
+
translator$L,
|
|
35026
35068
|
translator$J,
|
|
35027
|
-
translator$R,
|
|
35028
|
-
translator$I,
|
|
35029
35069
|
translator$H,
|
|
35030
|
-
translator$Q,
|
|
35031
35070
|
translator$G,
|
|
35032
35071
|
translator$F,
|
|
35033
|
-
translator$E,
|
|
35034
35072
|
translator$D,
|
|
35035
|
-
translator$C,
|
|
35036
35073
|
translator$B,
|
|
35074
|
+
translator$z
|
|
35075
|
+
];
|
|
35076
|
+
const translator$x = NodeTranslator.from(
|
|
35077
|
+
createNestedPropertiesTranslator("w:tblBorders", "borders", propertyTranslators$5)
|
|
35078
|
+
);
|
|
35079
|
+
const propertyTranslators$4 = [
|
|
35080
|
+
translator$K,
|
|
35081
|
+
translator$I,
|
|
35082
|
+
translator$E,
|
|
35083
|
+
translator$C,
|
|
35037
35084
|
translator$A,
|
|
35038
|
-
translator$
|
|
35039
|
-
|
|
35085
|
+
translator$y
|
|
35086
|
+
];
|
|
35087
|
+
const translator$w = NodeTranslator.from(
|
|
35088
|
+
createNestedPropertiesTranslator("w:tblCellMar", "cellMargins", propertyTranslators$4)
|
|
35089
|
+
);
|
|
35090
|
+
const propertyTranslators$3 = [
|
|
35091
|
+
translator$Y,
|
|
35092
|
+
translator$14,
|
|
35093
|
+
translator$X,
|
|
35094
|
+
translator$W,
|
|
35095
|
+
translator$13,
|
|
35096
|
+
translator$V,
|
|
35097
|
+
translator$U,
|
|
35098
|
+
translator$T,
|
|
35099
|
+
translator$S,
|
|
35100
|
+
translator$R,
|
|
35101
|
+
translator$Q,
|
|
35102
|
+
translator$P,
|
|
35103
|
+
translator$O,
|
|
35104
|
+
translator$N,
|
|
35105
|
+
translator$M,
|
|
35040
35106
|
translator$x,
|
|
35041
|
-
translator$
|
|
35042
|
-
translator$h
|
|
35107
|
+
translator$w
|
|
35043
35108
|
];
|
|
35044
|
-
const
|
|
35045
|
-
|
|
35046
|
-
|
|
35047
|
-
|
|
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(
|
|
35109
|
+
const translator$v = NodeTranslator.from(
|
|
35110
|
+
createNestedPropertiesTranslator("w:tblPr", "tableProperties", propertyTranslators$3)
|
|
35111
|
+
);
|
|
35112
|
+
const translator$u = NodeTranslator.from(
|
|
35058
35113
|
createSingleAttrPropertyHandler("w:gridCol", "col", "w:w", parseInteger, integerToString)
|
|
35059
35114
|
);
|
|
35060
35115
|
const DEFAULT_COLUMN_WIDTH_PX = 100;
|
|
@@ -35104,20 +35159,20 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35104
35159
|
}
|
|
35105
35160
|
return Math.max(fallbackWidthTwips, cellMinWidthTwips);
|
|
35106
35161
|
};
|
|
35107
|
-
const XML_NODE_NAME$
|
|
35108
|
-
const SD_ATTR_KEY$
|
|
35162
|
+
const XML_NODE_NAME$g = "w:tblGrid";
|
|
35163
|
+
const SD_ATTR_KEY$3 = "grid";
|
|
35109
35164
|
const cellMinWidth = pixelsToTwips(10);
|
|
35110
|
-
const encode$
|
|
35165
|
+
const encode$m = (params2) => {
|
|
35111
35166
|
const { nodes } = params2;
|
|
35112
35167
|
const node = nodes[0];
|
|
35113
|
-
const attributes = encodeProperties(node, { [translator$
|
|
35168
|
+
const attributes = encodeProperties(node, { [translator$u.xmlName]: translator$u }, true);
|
|
35114
35169
|
return {
|
|
35115
|
-
xmlName: XML_NODE_NAME$
|
|
35116
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
35170
|
+
xmlName: XML_NODE_NAME$g,
|
|
35171
|
+
sdNodeOrKeyName: SD_ATTR_KEY$3,
|
|
35117
35172
|
attributes
|
|
35118
35173
|
};
|
|
35119
35174
|
};
|
|
35120
|
-
const decode$
|
|
35175
|
+
const decode$o = (params2) => {
|
|
35121
35176
|
const { grid: rawGrid } = params2.node.attrs || {};
|
|
35122
35177
|
const grid = Array.isArray(rawGrid) ? rawGrid : [];
|
|
35123
35178
|
const { firstRow = {} } = params2.extraParams || {};
|
|
@@ -35130,17 +35185,21 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35130
35185
|
const fallbackColumnWidthTwips = resolveFallbackColumnWidthTwips(params2, totalColumns, cellMinWidth);
|
|
35131
35186
|
const elements = [];
|
|
35132
35187
|
let columnIndex = 0;
|
|
35133
|
-
const pushColumn = (widthTwips) => {
|
|
35188
|
+
const pushColumn = (widthTwips, { enforceMinimum = false } = {}) => {
|
|
35134
35189
|
let numericWidth = typeof widthTwips === "string" ? parseInt(widthTwips, 10) : widthTwips;
|
|
35190
|
+
let shouldEnforceMinimum = enforceMinimum;
|
|
35135
35191
|
if (numericWidth == null || Number.isNaN(numericWidth) || numericWidth <= 0) {
|
|
35136
35192
|
numericWidth = fallbackColumnWidthTwips;
|
|
35193
|
+
shouldEnforceMinimum = true;
|
|
35137
35194
|
}
|
|
35138
|
-
|
|
35139
|
-
const
|
|
35195
|
+
const roundedWidth = Math.round(numericWidth);
|
|
35196
|
+
const minimumWidth = shouldEnforceMinimum ? cellMinWidth : 1;
|
|
35197
|
+
const safeWidth = Math.max(roundedWidth, minimumWidth);
|
|
35198
|
+
const decoded = translator$u.decode({
|
|
35140
35199
|
node: { type: (
|
|
35141
35200
|
/** @type {string} */
|
|
35142
|
-
translator$
|
|
35143
|
-
), attrs: { col:
|
|
35201
|
+
translator$u.sdNodeOrKeyName
|
|
35202
|
+
), attrs: { col: safeWidth } }
|
|
35144
35203
|
});
|
|
35145
35204
|
if (decoded) elements.push(decoded);
|
|
35146
35205
|
};
|
|
@@ -35148,13 +35207,17 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35148
35207
|
const { colspan = 1, colwidth } = cell?.attrs || {};
|
|
35149
35208
|
const spanCount = Math.max(1, colspan);
|
|
35150
35209
|
for (let span = 0; span < spanCount; span++) {
|
|
35151
|
-
const
|
|
35210
|
+
const rawWidth = Array.isArray(colwidth) ? colwidth[span] : void 0;
|
|
35211
|
+
const cellWidthPixels = typeof rawWidth === "number" && Number.isFinite(rawWidth) ? rawWidth : Number(rawWidth);
|
|
35212
|
+
const hasCellWidth = Number.isFinite(cellWidthPixels) && cellWidthPixels > 0;
|
|
35152
35213
|
const colGridAttrs = grid?.[columnIndex] || {};
|
|
35153
35214
|
const gridWidthTwips = normalizeTwipWidth(colGridAttrs.col);
|
|
35154
35215
|
const gridWidthPixels = gridWidthTwips != null ? twipsToPixels(gridWidthTwips) : null;
|
|
35155
35216
|
let cellWidthTwips;
|
|
35156
|
-
|
|
35157
|
-
|
|
35217
|
+
let enforceMinimum = false;
|
|
35218
|
+
if (hasCellWidth) {
|
|
35219
|
+
const tolerance = 0.5;
|
|
35220
|
+
if (gridWidthTwips != null && gridWidthPixels != null && Math.abs(gridWidthPixels - cellWidthPixels) <= tolerance) {
|
|
35158
35221
|
cellWidthTwips = gridWidthTwips;
|
|
35159
35222
|
} else {
|
|
35160
35223
|
cellWidthTwips = pixelsToTwips(cellWidthPixels);
|
|
@@ -35163,8 +35226,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35163
35226
|
cellWidthTwips = gridWidthTwips;
|
|
35164
35227
|
} else {
|
|
35165
35228
|
cellWidthTwips = fallbackColumnWidthTwips;
|
|
35229
|
+
enforceMinimum = true;
|
|
35166
35230
|
}
|
|
35167
|
-
pushColumn(cellWidthTwips);
|
|
35231
|
+
pushColumn(cellWidthTwips, { enforceMinimum });
|
|
35168
35232
|
columnIndex++;
|
|
35169
35233
|
}
|
|
35170
35234
|
});
|
|
@@ -35174,19 +35238,19 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35174
35238
|
columnIndex++;
|
|
35175
35239
|
}
|
|
35176
35240
|
const newNode = {
|
|
35177
|
-
name: XML_NODE_NAME$
|
|
35241
|
+
name: XML_NODE_NAME$g,
|
|
35178
35242
|
attributes: {},
|
|
35179
35243
|
elements
|
|
35180
35244
|
};
|
|
35181
35245
|
return newNode;
|
|
35182
35246
|
};
|
|
35183
|
-
const config$
|
|
35184
|
-
xmlName: XML_NODE_NAME$
|
|
35185
|
-
sdNodeOrKeyName: SD_ATTR_KEY$
|
|
35186
|
-
encode: encode$
|
|
35187
|
-
decode: decode$
|
|
35247
|
+
const config$f = {
|
|
35248
|
+
xmlName: XML_NODE_NAME$g,
|
|
35249
|
+
sdNodeOrKeyName: SD_ATTR_KEY$3,
|
|
35250
|
+
encode: encode$m,
|
|
35251
|
+
decode: decode$o
|
|
35188
35252
|
};
|
|
35189
|
-
const translator$
|
|
35253
|
+
const translator$t = NodeTranslator.from(config$f);
|
|
35190
35254
|
const DEFAULT_PAGE_WIDTH_TWIPS = 12240;
|
|
35191
35255
|
const DEFAULT_PAGE_MARGIN_TWIPS = 1440;
|
|
35192
35256
|
const DEFAULT_CONTENT_WIDTH_TWIPS = DEFAULT_PAGE_WIDTH_TWIPS - 2 * DEFAULT_PAGE_MARGIN_TWIPS;
|
|
@@ -35249,19 +35313,19 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35249
35313
|
columnWidths: Array(columnCount).fill(fallbackColumnWidthPx)
|
|
35250
35314
|
};
|
|
35251
35315
|
};
|
|
35252
|
-
const XML_NODE_NAME$
|
|
35316
|
+
const XML_NODE_NAME$f = "w:tbl";
|
|
35253
35317
|
const SD_NODE_NAME$c = "table";
|
|
35254
|
-
const encode$
|
|
35318
|
+
const encode$l = (params2, encodedAttrs) => {
|
|
35255
35319
|
const { nodes } = params2;
|
|
35256
35320
|
const node = nodes[0];
|
|
35257
35321
|
const tblPr = node.elements.find((el) => el.name === "w:tblPr");
|
|
35258
35322
|
if (tblPr) {
|
|
35259
|
-
const encodedProperties = translator$
|
|
35260
|
-
encodedAttrs["tableProperties"] = encodedProperties
|
|
35323
|
+
const encodedProperties = translator$v.encode({ ...params2, nodes: [tblPr] });
|
|
35324
|
+
encodedAttrs["tableProperties"] = encodedProperties || {};
|
|
35261
35325
|
}
|
|
35262
35326
|
const tblGrid = node.elements.find((el) => el.name === "w:tblGrid");
|
|
35263
35327
|
if (tblGrid) {
|
|
35264
|
-
encodedAttrs["grid"] = translator$
|
|
35328
|
+
encodedAttrs["grid"] = translator$t.encode({ ...params2, nodes: [tblGrid] }).attributes;
|
|
35265
35329
|
}
|
|
35266
35330
|
[
|
|
35267
35331
|
"tableStyleId",
|
|
@@ -35327,8 +35391,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35327
35391
|
}
|
|
35328
35392
|
}
|
|
35329
35393
|
const content = [];
|
|
35330
|
-
|
|
35331
|
-
|
|
35394
|
+
const totalColumns = columnWidths.length;
|
|
35395
|
+
const activeRowSpans = totalColumns > 0 ? new Array(totalColumns).fill(0) : [];
|
|
35396
|
+
rows.forEach((row, rowIndex) => {
|
|
35397
|
+
const result = translator$Z.encode({
|
|
35332
35398
|
...params2,
|
|
35333
35399
|
nodes: [row],
|
|
35334
35400
|
extraParams: {
|
|
@@ -35336,10 +35402,45 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35336
35402
|
table: node,
|
|
35337
35403
|
rowBorders: borderRowData,
|
|
35338
35404
|
styleTag: tblStyleTag,
|
|
35339
|
-
columnWidths
|
|
35405
|
+
columnWidths,
|
|
35406
|
+
activeRowSpans: activeRowSpans.slice(),
|
|
35407
|
+
rowIndex
|
|
35340
35408
|
}
|
|
35341
35409
|
});
|
|
35342
|
-
if (result)
|
|
35410
|
+
if (result) {
|
|
35411
|
+
content.push(result);
|
|
35412
|
+
if (totalColumns > 0) {
|
|
35413
|
+
const activeRowSpansForCurrentRow = activeRowSpans.slice();
|
|
35414
|
+
for (let col = 0; col < totalColumns; col++) {
|
|
35415
|
+
if (activeRowSpans[col] > 0) {
|
|
35416
|
+
activeRowSpans[col] -= 1;
|
|
35417
|
+
}
|
|
35418
|
+
}
|
|
35419
|
+
let columnIndex = 0;
|
|
35420
|
+
const advanceColumnIndex = () => {
|
|
35421
|
+
while (columnIndex < totalColumns && activeRowSpansForCurrentRow[columnIndex] > 0) {
|
|
35422
|
+
columnIndex += 1;
|
|
35423
|
+
}
|
|
35424
|
+
};
|
|
35425
|
+
advanceColumnIndex();
|
|
35426
|
+
result.content?.forEach((cell) => {
|
|
35427
|
+
advanceColumnIndex();
|
|
35428
|
+
const colspan = Math.max(1, cell.attrs?.colspan || 1);
|
|
35429
|
+
const rowspan = Math.max(1, cell.attrs?.rowspan || 1);
|
|
35430
|
+
if (rowspan > 1) {
|
|
35431
|
+
for (let offset2 = 0; offset2 < colspan && columnIndex + offset2 < totalColumns; offset2++) {
|
|
35432
|
+
const targetIndex = columnIndex + offset2;
|
|
35433
|
+
const remainingRows = rowspan - 1;
|
|
35434
|
+
if (remainingRows > 0 && remainingRows > activeRowSpans[targetIndex]) {
|
|
35435
|
+
activeRowSpans[targetIndex] = remainingRows;
|
|
35436
|
+
}
|
|
35437
|
+
}
|
|
35438
|
+
}
|
|
35439
|
+
columnIndex += colspan;
|
|
35440
|
+
advanceColumnIndex();
|
|
35441
|
+
});
|
|
35442
|
+
}
|
|
35443
|
+
}
|
|
35343
35444
|
});
|
|
35344
35445
|
return {
|
|
35345
35446
|
type: "table",
|
|
@@ -35347,13 +35448,13 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35347
35448
|
attrs: encodedAttrs
|
|
35348
35449
|
};
|
|
35349
35450
|
};
|
|
35350
|
-
const decode$
|
|
35451
|
+
const decode$n = (params2, decodedAttrs) => {
|
|
35351
35452
|
params2.node = preProcessVerticalMergeCells(params2.node, params2);
|
|
35352
35453
|
const { node } = params2;
|
|
35353
35454
|
const elements = translateChildNodes(params2);
|
|
35354
35455
|
const firstRow = node.content?.find((n) => n.type === "tableRow");
|
|
35355
35456
|
const properties = node.attrs.grid;
|
|
35356
|
-
const element = translator$
|
|
35457
|
+
const element = translator$t.decode({
|
|
35357
35458
|
...params2,
|
|
35358
35459
|
node: { ...node, attrs: { ...node.attrs, grid: properties } },
|
|
35359
35460
|
extraParams: {
|
|
@@ -35363,7 +35464,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35363
35464
|
if (element) elements.unshift(element);
|
|
35364
35465
|
if (node.attrs?.tableProperties) {
|
|
35365
35466
|
const properties2 = { ...node.attrs.tableProperties };
|
|
35366
|
-
const element2 = translator$
|
|
35467
|
+
const element2 = translator$v.decode({
|
|
35367
35468
|
...params2,
|
|
35368
35469
|
node: { ...node, attrs: { ...node.attrs, tableProperties: properties2 } }
|
|
35369
35470
|
});
|
|
@@ -35383,7 +35484,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35383
35484
|
const color = attributes.color;
|
|
35384
35485
|
const size2 = attributes.size;
|
|
35385
35486
|
if (color && color !== "auto") attrs["color"] = color.startsWith("#") ? color : `#${color}`;
|
|
35386
|
-
if (size2 && size2 !== "auto") attrs["size"] =
|
|
35487
|
+
if (size2 && size2 !== "auto") attrs["size"] = eighthPointsToPixels(size2);
|
|
35387
35488
|
const rowBorderNames = ["insideH", "insideV"];
|
|
35388
35489
|
if (rowBorderNames.includes(name)) rowBorders[name] = attrs;
|
|
35389
35490
|
borders[name] = attrs;
|
|
@@ -35429,7 +35530,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35429
35530
|
if (baseTblPr && baseTblPr.elements) {
|
|
35430
35531
|
tblPr.elements.push(...baseTblPr.elements);
|
|
35431
35532
|
}
|
|
35432
|
-
const tableProperties = translator$
|
|
35533
|
+
const tableProperties = translator$v.encode({ ...params2, nodes: [tblPr] });
|
|
35433
35534
|
const { borders, rowBorders } = _processTableBorders(tableProperties.borders || {});
|
|
35434
35535
|
if (borders) stylesToReturn.borders = borders;
|
|
35435
35536
|
if (rowBorders) stylesToReturn.rowBorders = rowBorders;
|
|
@@ -35446,16 +35547,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35446
35547
|
}
|
|
35447
35548
|
return stylesToReturn;
|
|
35448
35549
|
}
|
|
35449
|
-
const config$
|
|
35450
|
-
xmlName: XML_NODE_NAME$
|
|
35550
|
+
const config$e = {
|
|
35551
|
+
xmlName: XML_NODE_NAME$f,
|
|
35451
35552
|
sdNodeOrKeyName: SD_NODE_NAME$c,
|
|
35452
35553
|
type: NodeTranslator.translatorTypes.NODE,
|
|
35453
|
-
encode: encode$
|
|
35454
|
-
decode: decode$
|
|
35554
|
+
encode: encode$l,
|
|
35555
|
+
decode: decode$n,
|
|
35455
35556
|
attributes: []
|
|
35456
35557
|
};
|
|
35457
|
-
const translator$
|
|
35458
|
-
const tableNodeHandlerEntity = generateV2HandlerEntity("tableNodeHandler", translator$
|
|
35558
|
+
const translator$s = NodeTranslator.from(config$e);
|
|
35559
|
+
const tableNodeHandlerEntity = generateV2HandlerEntity("tableNodeHandler", translator$s);
|
|
35459
35560
|
function getReferencedTableStyles(tblStyleTag, docx) {
|
|
35460
35561
|
if (!tblStyleTag) return null;
|
|
35461
35562
|
const stylesToReturn = {};
|
|
@@ -35526,7 +35627,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35526
35627
|
const color = attributes["w:color"];
|
|
35527
35628
|
const size2 = attributes["w:sz"];
|
|
35528
35629
|
if (color && color !== "auto") attrs["color"] = color.startsWith("#") ? color : `#${color}`;
|
|
35529
|
-
if (size2 && size2 !== "auto") attrs["size"] =
|
|
35630
|
+
if (size2 && size2 !== "auto") attrs["size"] = eighthPointsToPixels(size2);
|
|
35530
35631
|
const rowBorderNames = ["insideH", "insideV"];
|
|
35531
35632
|
if (rowBorderNames.includes(borderName)) rowBorders[borderName] = attrs;
|
|
35532
35633
|
borders[borderName] = attrs;
|
|
@@ -35536,6 +35637,125 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35536
35637
|
rowBorders
|
|
35537
35638
|
};
|
|
35538
35639
|
}
|
|
35640
|
+
const translator$r = NodeTranslator.from(createMeasurementPropertyHandler("w:tcW", "cellWidth"));
|
|
35641
|
+
const translator$q = NodeTranslator.from(
|
|
35642
|
+
createSingleAttrPropertyHandler(
|
|
35643
|
+
"w:gridSpan",
|
|
35644
|
+
null,
|
|
35645
|
+
"w:val",
|
|
35646
|
+
(v2) => parseInteger(v2) ?? void 0,
|
|
35647
|
+
(v2) => integerToString(v2)
|
|
35648
|
+
)
|
|
35649
|
+
);
|
|
35650
|
+
const translator$p = NodeTranslator.from(createSingleAttrPropertyHandler("w:vMerge"));
|
|
35651
|
+
const translator$o = NodeTranslator.from(createBorderPropertyHandler("w:tl2br"));
|
|
35652
|
+
const translator$n = NodeTranslator.from(createBorderPropertyHandler("w:tr2bl"));
|
|
35653
|
+
const propertyTranslators$2 = [
|
|
35654
|
+
translator$z,
|
|
35655
|
+
translator$B,
|
|
35656
|
+
translator$F,
|
|
35657
|
+
translator$L,
|
|
35658
|
+
translator$J,
|
|
35659
|
+
translator$D,
|
|
35660
|
+
translator$H,
|
|
35661
|
+
translator$G,
|
|
35662
|
+
translator$o,
|
|
35663
|
+
translator$n
|
|
35664
|
+
];
|
|
35665
|
+
const translator$m = NodeTranslator.from(
|
|
35666
|
+
createNestedPropertiesTranslator("w:tcBorders", "borders", propertyTranslators$2)
|
|
35667
|
+
);
|
|
35668
|
+
const translator$l = NodeTranslator.from(
|
|
35669
|
+
createSingleAttrPropertyHandler(
|
|
35670
|
+
"w:noWrap",
|
|
35671
|
+
null,
|
|
35672
|
+
"w:val",
|
|
35673
|
+
(v2) => parseBoolean(v2 ?? "true"),
|
|
35674
|
+
(v2) => booleanToString(v2)
|
|
35675
|
+
)
|
|
35676
|
+
);
|
|
35677
|
+
const propertyTranslators$1 = [
|
|
35678
|
+
translator$K,
|
|
35679
|
+
translator$I,
|
|
35680
|
+
translator$E,
|
|
35681
|
+
translator$C,
|
|
35682
|
+
translator$A,
|
|
35683
|
+
translator$y
|
|
35684
|
+
];
|
|
35685
|
+
const translator$k = NodeTranslator.from(
|
|
35686
|
+
createNestedPropertiesTranslator("w:tcMar", "cellMargins", propertyTranslators$1)
|
|
35687
|
+
);
|
|
35688
|
+
const translator$j = NodeTranslator.from(createSingleAttrPropertyHandler("w:textDirection"));
|
|
35689
|
+
const translator$i = NodeTranslator.from(
|
|
35690
|
+
createSingleAttrPropertyHandler(
|
|
35691
|
+
"w:tcFitText",
|
|
35692
|
+
null,
|
|
35693
|
+
"w:val",
|
|
35694
|
+
(v2) => parseBoolean(v2 ?? "true"),
|
|
35695
|
+
(v2) => booleanToString(v2)
|
|
35696
|
+
)
|
|
35697
|
+
);
|
|
35698
|
+
const translator$h = NodeTranslator.from(createSingleAttrPropertyHandler("w:vAlign"));
|
|
35699
|
+
const translator$g = NodeTranslator.from(
|
|
35700
|
+
createSingleAttrPropertyHandler(
|
|
35701
|
+
"w:hideMark",
|
|
35702
|
+
null,
|
|
35703
|
+
"w:val",
|
|
35704
|
+
(v2) => parseBoolean(v2 ?? "true"),
|
|
35705
|
+
(v2) => booleanToString(v2)
|
|
35706
|
+
)
|
|
35707
|
+
);
|
|
35708
|
+
const translator$f = NodeTranslator.from(createSingleAttrPropertyHandler("w:header"));
|
|
35709
|
+
const XML_NODE_NAME$e = "w:headers";
|
|
35710
|
+
const SD_ATTR_KEY$2 = "headers";
|
|
35711
|
+
const encode$k = (params2) => {
|
|
35712
|
+
const { nodes } = params2;
|
|
35713
|
+
const node = nodes[0];
|
|
35714
|
+
const attributes = encodeProperties(node, { [translator$f.xmlName]: translator$f }, true);
|
|
35715
|
+
return {
|
|
35716
|
+
xmlName: XML_NODE_NAME$e,
|
|
35717
|
+
sdNodeOrKeyName: SD_ATTR_KEY$2,
|
|
35718
|
+
attributes
|
|
35719
|
+
};
|
|
35720
|
+
};
|
|
35721
|
+
const decode$m = (params2) => {
|
|
35722
|
+
const { headers = [] } = params2.node.attrs || {};
|
|
35723
|
+
const newNode = {
|
|
35724
|
+
name: XML_NODE_NAME$e,
|
|
35725
|
+
attributes: {},
|
|
35726
|
+
elements: headers.map(
|
|
35727
|
+
(header) => translator$f.decode({
|
|
35728
|
+
node: { type: "header", attrs: header }
|
|
35729
|
+
})
|
|
35730
|
+
)
|
|
35731
|
+
};
|
|
35732
|
+
return newNode;
|
|
35733
|
+
};
|
|
35734
|
+
const config$d = {
|
|
35735
|
+
xmlName: XML_NODE_NAME$e,
|
|
35736
|
+
sdNodeOrKeyName: SD_ATTR_KEY$2,
|
|
35737
|
+
encode: encode$k,
|
|
35738
|
+
decode: decode$m
|
|
35739
|
+
};
|
|
35740
|
+
const translator$e = NodeTranslator.from(config$d);
|
|
35741
|
+
const propertyTranslators = [
|
|
35742
|
+
translator$19,
|
|
35743
|
+
translator$r,
|
|
35744
|
+
translator$q,
|
|
35745
|
+
translator$p,
|
|
35746
|
+
translator$m,
|
|
35747
|
+
translator$X,
|
|
35748
|
+
translator$l,
|
|
35749
|
+
translator$k,
|
|
35750
|
+
translator$j,
|
|
35751
|
+
translator$i,
|
|
35752
|
+
translator$h,
|
|
35753
|
+
translator$g,
|
|
35754
|
+
translator$e
|
|
35755
|
+
];
|
|
35756
|
+
const translator$d = NodeTranslator.from(
|
|
35757
|
+
createNestedPropertiesTranslator("w:tcPr", "tableCellProperties", propertyTranslators)
|
|
35758
|
+
);
|
|
35539
35759
|
function handleTableCellNode({
|
|
35540
35760
|
params: params2,
|
|
35541
35761
|
node,
|
|
@@ -35548,8 +35768,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35548
35768
|
allColumnWidths = []
|
|
35549
35769
|
}) {
|
|
35550
35770
|
const { docx, nodeListHandler } = params2;
|
|
35771
|
+
const attributes = {};
|
|
35551
35772
|
const tcPr = node.elements.find((el) => el.name === "w:tcPr");
|
|
35552
|
-
const
|
|
35773
|
+
const tableCellProperties = tcPr ? translator$d.encode({ ...params2, nodes: [tcPr] }) ?? {} : {};
|
|
35774
|
+
attributes["tableCellProperties"] = tableCellProperties;
|
|
35553
35775
|
if (rowBorders?.insideH) {
|
|
35554
35776
|
rowBorders["bottom"] = rowBorders.insideH;
|
|
35555
35777
|
delete rowBorders.insideH;
|
|
@@ -35558,33 +35780,20 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35558
35780
|
rowBorders["right"] = rowBorders.insideV;
|
|
35559
35781
|
delete rowBorders?.insideV;
|
|
35560
35782
|
}
|
|
35561
|
-
|
|
35562
|
-
const
|
|
35563
|
-
|
|
35564
|
-
|
|
35565
|
-
|
|
35783
|
+
if (rowBorders) attributes["borders"] = { ...rowBorders };
|
|
35784
|
+
const inlineBorders = processInlineCellBorders(tableCellProperties.borders, rowBorders);
|
|
35785
|
+
if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
|
|
35786
|
+
const colspan = tableCellProperties.gridSpan;
|
|
35787
|
+
if (colspan && !isNaN(parseInt(colspan, 10))) attributes["colspan"] = parseInt(colspan, 10);
|
|
35788
|
+
let width = tableCellProperties.cellWidth?.value ? twipsToPixels(tableCellProperties.cellWidth?.value) : null;
|
|
35789
|
+
const widthType = tableCellProperties.cellWidth?.type;
|
|
35790
|
+
if (widthType) attributes["widthType"] = widthType;
|
|
35566
35791
|
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
35792
|
if (width) {
|
|
35584
35793
|
attributes["colwidth"] = [width];
|
|
35585
35794
|
attributes["widthUnit"] = "px";
|
|
35586
|
-
const defaultColWidths =
|
|
35587
|
-
const hasDefaultColWidths =
|
|
35795
|
+
const defaultColWidths = allColumnWidths;
|
|
35796
|
+
const hasDefaultColWidths = allColumnWidths && allColumnWidths.length > 0;
|
|
35588
35797
|
const colspanNum = parseInt(colspan || 1, 10);
|
|
35589
35798
|
if (colspanNum && colspanNum > 1 && hasDefaultColWidths) {
|
|
35590
35799
|
let colwidth = [];
|
|
@@ -35602,15 +35811,19 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35602
35811
|
}
|
|
35603
35812
|
}
|
|
35604
35813
|
}
|
|
35605
|
-
|
|
35606
|
-
|
|
35607
|
-
|
|
35608
|
-
attributes["
|
|
35814
|
+
const background = {
|
|
35815
|
+
color: tableCellProperties.shading?.fill
|
|
35816
|
+
};
|
|
35817
|
+
if (background.color) attributes["background"] = background;
|
|
35818
|
+
const verticalAlign = tableCellProperties.vAlign;
|
|
35819
|
+
if (verticalAlign) attributes["verticalAlign"] = verticalAlign;
|
|
35820
|
+
const referencedStyles = getReferencedTableStyles(styleTag, docx) || { fontSize: null, fonts: {}, cellMargins: {} };
|
|
35821
|
+
attributes.cellMargins = getTableCellMargins(tableCellProperties.cellMargins, referencedStyles);
|
|
35822
|
+
const { fontSize: fontSize2, fonts = {} } = referencedStyles;
|
|
35823
|
+
const fontFamily2 = fonts["ascii"];
|
|
35609
35824
|
if (fontSize2) attributes["fontSize"] = fontSize2;
|
|
35610
|
-
if (fontFamily2) attributes["fontFamily"] = fontFamily2
|
|
35611
|
-
if (
|
|
35612
|
-
if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
|
|
35613
|
-
if (vMergeAttrs && vMergeAttrs["w:val"] === "restart") {
|
|
35825
|
+
if (fontFamily2) attributes["fontFamily"] = fontFamily2;
|
|
35826
|
+
if (tableCellProperties.vMerge === "restart") {
|
|
35614
35827
|
const rows = table.elements.filter((el) => el.name === "w:tr");
|
|
35615
35828
|
const currentRowIndex = rows.findIndex((r2) => r2 === row);
|
|
35616
35829
|
const remainingRows = rows.slice(currentRowIndex + 1);
|
|
@@ -35621,9 +35834,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35621
35834
|
const firstCell = remainingRow.elements.findIndex((el) => el.name === "w:tc");
|
|
35622
35835
|
const cellAtIndex = remainingRow.elements[firstCell + cellIndex];
|
|
35623
35836
|
if (!cellAtIndex) break;
|
|
35624
|
-
const
|
|
35625
|
-
|
|
35626
|
-
if (!vMerge2 && !currentCellMergeAttrs || currentCellMergeAttrs && currentCellMergeAttrs["w:val"] === "restart") {
|
|
35837
|
+
const vMerge = getTableCellVMerge(cellAtIndex);
|
|
35838
|
+
if (!vMerge || vMerge === "restart") {
|
|
35627
35839
|
break;
|
|
35628
35840
|
}
|
|
35629
35841
|
rowspan++;
|
|
@@ -35643,69 +35855,52 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35643
35855
|
}
|
|
35644
35856
|
const processInlineCellBorders = (borders, rowBorders) => {
|
|
35645
35857
|
if (!borders) return null;
|
|
35646
|
-
|
|
35647
|
-
|
|
35648
|
-
|
|
35649
|
-
|
|
35650
|
-
|
|
35651
|
-
|
|
35652
|
-
|
|
35653
|
-
|
|
35654
|
-
|
|
35655
|
-
|
|
35656
|
-
|
|
35657
|
-
|
|
35658
|
-
|
|
35659
|
-
|
|
35660
|
-
|
|
35661
|
-
|
|
35662
|
-
|
|
35663
|
-
|
|
35664
|
-
|
|
35665
|
-
|
|
35666
|
-
|
|
35667
|
-
|
|
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;
|
|
35858
|
+
return ["bottom", "top", "left", "right"].reduce((acc, direction) => {
|
|
35859
|
+
const borderAttrs = borders[direction];
|
|
35860
|
+
const rowBorderAttrs = rowBorders[direction];
|
|
35861
|
+
if (borderAttrs && borderAttrs["val"] !== "nil") {
|
|
35862
|
+
const color = borderAttrs["color"];
|
|
35863
|
+
let size2 = borderAttrs["size"];
|
|
35864
|
+
if (size2) size2 = eighthPointsToPixels(size2);
|
|
35865
|
+
acc[direction] = { color, size: size2, val: borderAttrs["val"] };
|
|
35866
|
+
return acc;
|
|
35867
|
+
}
|
|
35868
|
+
if (borderAttrs && borderAttrs["val"] === "nil") {
|
|
35869
|
+
const border = Object.assign({}, rowBorderAttrs || {});
|
|
35870
|
+
if (!Object.keys(border).length) {
|
|
35871
|
+
return acc;
|
|
35872
|
+
} else {
|
|
35873
|
+
border["val"] = "none";
|
|
35874
|
+
acc[direction] = border;
|
|
35875
|
+
return acc;
|
|
35876
|
+
}
|
|
35877
|
+
}
|
|
35878
|
+
return acc;
|
|
35879
|
+
}, {});
|
|
35674
35880
|
};
|
|
35675
|
-
const
|
|
35881
|
+
const getTableCellVMerge = (node) => {
|
|
35676
35882
|
const tcPr = node.elements.find((el) => el.name === "w:tcPr");
|
|
35677
35883
|
const vMerge = tcPr?.elements?.find((el) => el.name === "w:vMerge");
|
|
35678
|
-
return
|
|
35679
|
-
|
|
35680
|
-
|
|
35681
|
-
|
|
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"];
|
|
35884
|
+
if (!vMerge) return null;
|
|
35885
|
+
return vMerge.attributes?.["w:val"] || "continue";
|
|
35886
|
+
};
|
|
35887
|
+
const getTableCellMargins = (inlineMargins, referencedStyles) => {
|
|
35689
35888
|
const { cellMargins = {} } = referencedStyles;
|
|
35690
|
-
|
|
35691
|
-
|
|
35692
|
-
|
|
35693
|
-
|
|
35694
|
-
|
|
35695
|
-
|
|
35696
|
-
|
|
35697
|
-
|
|
35698
|
-
if (styleValue
|
|
35699
|
-
|
|
35700
|
-
|
|
35701
|
-
|
|
35702
|
-
|
|
35703
|
-
|
|
35704
|
-
|
|
35705
|
-
top: twipsToPixels(resolveMargin(inlineMarginTopValue, marginTopStyle)),
|
|
35706
|
-
bottom: twipsToPixels(resolveMargin(inlineMarginBottomValue, marginBottomStyle))
|
|
35707
|
-
};
|
|
35708
|
-
return margins;
|
|
35889
|
+
return ["left", "right", "top", "bottom"].reduce((acc, direction) => {
|
|
35890
|
+
const key2 = `margin${direction.charAt(0).toUpperCase() + direction.slice(1)}`;
|
|
35891
|
+
const inlineValue = inlineMargins ? inlineMargins?.[key2]?.value : null;
|
|
35892
|
+
const styleValue = cellMargins ? cellMargins[key2] : null;
|
|
35893
|
+
if (inlineValue != null) {
|
|
35894
|
+
acc[direction] = twipsToPixels(inlineValue);
|
|
35895
|
+
} else if (styleValue == null) {
|
|
35896
|
+
acc[direction] = void 0;
|
|
35897
|
+
} else if (typeof styleValue === "object") {
|
|
35898
|
+
acc[direction] = twipsToPixels(styleValue.value);
|
|
35899
|
+
} else {
|
|
35900
|
+
acc[direction] = twipsToPixels(styleValue);
|
|
35901
|
+
}
|
|
35902
|
+
return acc;
|
|
35903
|
+
}, {});
|
|
35709
35904
|
};
|
|
35710
35905
|
function translateTableCell(params2) {
|
|
35711
35906
|
const elements = translateChildNodes({
|
|
@@ -35720,102 +35915,86 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
35720
35915
|
};
|
|
35721
35916
|
}
|
|
35722
35917
|
function generateTableCellProperties(node) {
|
|
35723
|
-
const
|
|
35918
|
+
const tableCellProperties = { ...node.attrs?.tableCellProperties || {} };
|
|
35724
35919
|
const { attrs } = node;
|
|
35725
|
-
const { colwidth = [], cellWidthType = "dxa",
|
|
35920
|
+
const { colwidth = [], cellWidthType = "dxa", widthUnit } = attrs;
|
|
35726
35921
|
const colwidthSum = colwidth.reduce((acc, curr) => acc + curr, 0);
|
|
35727
|
-
const
|
|
35728
|
-
|
|
35729
|
-
|
|
35730
|
-
|
|
35731
|
-
|
|
35732
|
-
}
|
|
35733
|
-
};
|
|
35734
|
-
elements.push(cellWidthElement);
|
|
35735
|
-
if (colspan) {
|
|
35736
|
-
const gridSpanElement = {
|
|
35737
|
-
name: "w:gridSpan",
|
|
35738
|
-
attributes: { "w:val": `${colspan}` }
|
|
35922
|
+
const propertiesWidthPixels = twipsToPixels(tableCellProperties.cellWidth?.value);
|
|
35923
|
+
if (propertiesWidthPixels !== colwidthSum) {
|
|
35924
|
+
tableCellProperties["cellWidth"] = {
|
|
35925
|
+
value: widthUnit === "px" ? pixelsToTwips(colwidthSum) : inchesToTwips(colwidthSum),
|
|
35926
|
+
type: cellWidthType
|
|
35739
35927
|
};
|
|
35740
|
-
elements.push(gridSpanElement);
|
|
35741
35928
|
}
|
|
35742
|
-
const {
|
|
35743
|
-
if (
|
|
35744
|
-
|
|
35745
|
-
|
|
35746
|
-
|
|
35747
|
-
|
|
35748
|
-
|
|
35929
|
+
const { colspan } = attrs;
|
|
35930
|
+
if (colspan > 1 && tableCellProperties.gridSpan !== colspan) {
|
|
35931
|
+
tableCellProperties["gridSpan"] = colspan;
|
|
35932
|
+
} else if (!colspan || tableCellProperties?.gridSpan === 1) {
|
|
35933
|
+
delete tableCellProperties.gridSpan;
|
|
35934
|
+
}
|
|
35935
|
+
const { background = {} } = attrs;
|
|
35936
|
+
if (background?.color && tableCellProperties.shading?.fill !== background?.color) {
|
|
35937
|
+
tableCellProperties["shading"] = { fill: background.color };
|
|
35938
|
+
} else if (!background?.color && tableCellProperties?.shading?.fill) {
|
|
35939
|
+
delete tableCellProperties.shading;
|
|
35749
35940
|
}
|
|
35750
35941
|
const { cellMargins } = attrs;
|
|
35751
35942
|
if (cellMargins) {
|
|
35752
|
-
|
|
35753
|
-
|
|
35754
|
-
|
|
35755
|
-
|
|
35756
|
-
|
|
35943
|
+
["left", "right", "top", "bottom"].forEach((side) => {
|
|
35944
|
+
const key2 = `margin${side.charAt(0).toUpperCase() + side.slice(1)}`;
|
|
35945
|
+
if (cellMargins[side] != null) {
|
|
35946
|
+
if (!tableCellProperties.cellMargins) tableCellProperties["cellMargins"] = {};
|
|
35947
|
+
let currentPropertyValuePixels = twipsToPixels(tableCellProperties.cellMargins?.[key2]?.value);
|
|
35948
|
+
if (currentPropertyValuePixels !== cellMargins[side]) {
|
|
35949
|
+
tableCellProperties.cellMargins[key2] = { value: pixelsToTwips(cellMargins[side]), type: "dxa" };
|
|
35950
|
+
}
|
|
35951
|
+
} else if (tableCellProperties?.cellMargins?.[key2]) {
|
|
35952
|
+
delete tableCellProperties.cellMargins[key2];
|
|
35953
|
+
}
|
|
35954
|
+
});
|
|
35757
35955
|
}
|
|
35758
35956
|
const { verticalAlign } = attrs;
|
|
35759
|
-
if (verticalAlign) {
|
|
35760
|
-
|
|
35761
|
-
|
|
35762
|
-
|
|
35763
|
-
|
|
35764
|
-
|
|
35765
|
-
|
|
35766
|
-
|
|
35767
|
-
const vMergeElement = {
|
|
35768
|
-
name: "w:vMerge",
|
|
35769
|
-
type: "element",
|
|
35770
|
-
attributes: { "w:val": "restart" }
|
|
35771
|
-
};
|
|
35772
|
-
elements.push(vMergeElement);
|
|
35957
|
+
if (verticalAlign && verticalAlign !== tableCellProperties.vAlign) {
|
|
35958
|
+
tableCellProperties["vAlign"] = verticalAlign;
|
|
35959
|
+
} else if (!verticalAlign && tableCellProperties?.vAlign) {
|
|
35960
|
+
delete tableCellProperties.vAlign;
|
|
35961
|
+
}
|
|
35962
|
+
const { rowspan } = attrs;
|
|
35963
|
+
if (rowspan && rowspan > 1 && tableCellProperties.vMerge !== "restart") {
|
|
35964
|
+
tableCellProperties["vMerge"] = "restart";
|
|
35773
35965
|
} else if (attrs.continueMerge) {
|
|
35774
|
-
|
|
35775
|
-
|
|
35776
|
-
|
|
35777
|
-
};
|
|
35778
|
-
elements.push(vMergeElement);
|
|
35966
|
+
tableCellProperties["vMerge"] = "continue";
|
|
35967
|
+
} else if (tableCellProperties?.vMerge) {
|
|
35968
|
+
delete tableCellProperties.vMerge;
|
|
35779
35969
|
}
|
|
35780
35970
|
const { borders = {} } = attrs;
|
|
35781
35971
|
if (!!borders && Object.keys(borders).length) {
|
|
35782
|
-
|
|
35783
|
-
|
|
35784
|
-
|
|
35785
|
-
|
|
35786
|
-
|
|
35787
|
-
|
|
35788
|
-
|
|
35789
|
-
|
|
35790
|
-
|
|
35972
|
+
["top", "bottom", "left", "right"].forEach((side) => {
|
|
35973
|
+
if (borders[side]) {
|
|
35974
|
+
let currentPropertyValue = tableCellProperties.borders?.[side];
|
|
35975
|
+
let currentPropertySizePixels = eighthPointsToPixels(currentPropertyValue?.size);
|
|
35976
|
+
let color = borders[side].color;
|
|
35977
|
+
if (borders[side].color && color === "#000000") {
|
|
35978
|
+
color = "auto";
|
|
35979
|
+
}
|
|
35980
|
+
if (currentPropertySizePixels !== borders[side].size || currentPropertyValue?.color !== color || borders[side].val !== currentPropertyValue?.val) {
|
|
35981
|
+
if (!tableCellProperties.borders) tableCellProperties["borders"] = {};
|
|
35982
|
+
tableCellProperties.borders[side] = {
|
|
35983
|
+
size: pixelsToEightPoints(borders[side].size || 0),
|
|
35984
|
+
color,
|
|
35985
|
+
space: borders[side].space || 0,
|
|
35986
|
+
val: borders[side].val || "single"
|
|
35791
35987
|
};
|
|
35792
35988
|
}
|
|
35793
|
-
|
|
35794
|
-
|
|
35795
|
-
|
|
35796
|
-
|
|
35797
|
-
|
|
35798
|
-
|
|
35799
|
-
"w:space": value.space || 0
|
|
35800
|
-
}
|
|
35801
|
-
};
|
|
35802
|
-
})
|
|
35803
|
-
};
|
|
35804
|
-
elements.push(cellBordersElement);
|
|
35989
|
+
} else if (tableCellProperties.borders?.[side]) {
|
|
35990
|
+
delete tableCellProperties.borders[side];
|
|
35991
|
+
}
|
|
35992
|
+
});
|
|
35993
|
+
} else if (tableCellProperties?.borders) {
|
|
35994
|
+
delete tableCellProperties.borders;
|
|
35805
35995
|
}
|
|
35806
|
-
|
|
35807
|
-
|
|
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;
|
|
35996
|
+
const result = translator$d.decode({ node: { ...node, attrs: { ...node.attrs, tableCellProperties } } });
|
|
35997
|
+
return result;
|
|
35819
35998
|
}
|
|
35820
35999
|
const XML_NODE_NAME$d = "w:tc";
|
|
35821
36000
|
const SD_NODE_NAME$b = "tableCell";
|
|
@@ -36227,6 +36406,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36227
36406
|
}
|
|
36228
36407
|
return { type: "unknown", handler: null };
|
|
36229
36408
|
}
|
|
36409
|
+
const DRAWING_XML_TAG = "w:drawing";
|
|
36230
36410
|
function handleImageNode(node, params2, isAnchor) {
|
|
36231
36411
|
const { docx, filename } = params2;
|
|
36232
36412
|
const { attributes } = node;
|
|
@@ -36238,32 +36418,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36238
36418
|
};
|
|
36239
36419
|
const extent = node.elements.find((el) => el.name === "wp:extent");
|
|
36240
36420
|
const size2 = {
|
|
36241
|
-
width: emuToPixels(extent
|
|
36242
|
-
height: emuToPixels(extent
|
|
36421
|
+
width: emuToPixels(extent?.attributes?.cx),
|
|
36422
|
+
height: emuToPixels(extent?.attributes?.cy)
|
|
36243
36423
|
};
|
|
36244
|
-
const graphic = node.elements.find((el) => el.name === "a:graphic");
|
|
36245
|
-
const graphicData = graphic.elements.find((el) => el.name === "a:graphicData");
|
|
36246
|
-
const { uri: uri2 } = graphicData?.attributes || {};
|
|
36247
|
-
const shapeURI = "http://schemas.microsoft.com/office/word/2010/wordprocessingShape";
|
|
36248
|
-
if (!!uri2 && uri2 === shapeURI) {
|
|
36249
|
-
return handleShapeDrawing(params2, node, graphicData);
|
|
36250
|
-
}
|
|
36251
|
-
const picture = graphicData.elements.find((el) => el.name === "pic:pic");
|
|
36252
|
-
if (!picture || !picture.elements) return null;
|
|
36253
|
-
const blipFill = picture.elements.find((el) => el.name === "pic:blipFill");
|
|
36254
|
-
const blip = blipFill.elements.find((el) => el.name === "a:blip");
|
|
36255
|
-
const spPr = picture.elements.find((el) => el.name === "pic:spPr");
|
|
36256
36424
|
let transformData = {};
|
|
36257
|
-
if (spPr) {
|
|
36258
|
-
const xfrm = spPr.elements.find((el) => el.name === "a:xfrm");
|
|
36259
|
-
if (xfrm?.attributes) {
|
|
36260
|
-
transformData = {
|
|
36261
|
-
rotation: rotToDegrees(xfrm.attributes["rot"]),
|
|
36262
|
-
verticalFlip: xfrm.attributes["flipV"] === "1",
|
|
36263
|
-
horizontalFlip: xfrm.attributes["flipH"] === "1"
|
|
36264
|
-
};
|
|
36265
|
-
}
|
|
36266
|
-
}
|
|
36267
36425
|
const effectExtent = node.elements.find((el) => el.name === "wp:effectExtent");
|
|
36268
36426
|
if (effectExtent) {
|
|
36269
36427
|
const sanitizeEmuValue = (value) => {
|
|
@@ -36272,22 +36430,26 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36272
36430
|
return Number.isFinite(numeric) ? numeric : 0;
|
|
36273
36431
|
};
|
|
36274
36432
|
transformData.sizeExtension = {
|
|
36275
|
-
left: emuToPixels(sanitizeEmuValue(effectExtent.attributes["l"])),
|
|
36276
|
-
top: emuToPixels(sanitizeEmuValue(effectExtent.attributes["t"])),
|
|
36277
|
-
right: emuToPixels(sanitizeEmuValue(effectExtent.attributes["r"])),
|
|
36278
|
-
bottom: emuToPixels(sanitizeEmuValue(effectExtent.attributes["b"]))
|
|
36433
|
+
left: emuToPixels(sanitizeEmuValue(effectExtent.attributes?.["l"])),
|
|
36434
|
+
top: emuToPixels(sanitizeEmuValue(effectExtent.attributes?.["t"])),
|
|
36435
|
+
right: emuToPixels(sanitizeEmuValue(effectExtent.attributes?.["r"])),
|
|
36436
|
+
bottom: emuToPixels(sanitizeEmuValue(effectExtent.attributes?.["b"]))
|
|
36279
36437
|
};
|
|
36280
36438
|
}
|
|
36281
36439
|
const positionHTag = node.elements.find((el) => el.name === "wp:positionH");
|
|
36282
36440
|
const positionH = positionHTag?.elements.find((el) => el.name === "wp:posOffset");
|
|
36283
36441
|
const positionHValue = emuToPixels(positionH?.elements[0]?.text);
|
|
36284
|
-
const hRelativeFrom = positionHTag?.attributes
|
|
36285
|
-
const alignH = positionHTag?.elements.find((el) => el.name === "wp:align")?.elements[0]?.text;
|
|
36442
|
+
const hRelativeFrom = positionHTag?.attributes?.relativeFrom;
|
|
36443
|
+
const alignH = positionHTag?.elements.find((el) => el.name === "wp:align")?.elements?.[0]?.text;
|
|
36286
36444
|
const positionVTag = node.elements.find((el) => el.name === "wp:positionV");
|
|
36287
36445
|
const positionV = positionVTag?.elements?.find((el) => el.name === "wp:posOffset");
|
|
36288
36446
|
const positionVValue = emuToPixels(positionV?.elements[0]?.text);
|
|
36289
|
-
const vRelativeFrom = positionVTag?.attributes
|
|
36290
|
-
const alignV = positionVTag?.elements?.find((el) => el.name === "wp:align")?.elements[0]?.text;
|
|
36447
|
+
const vRelativeFrom = positionVTag?.attributes?.relativeFrom;
|
|
36448
|
+
const alignV = positionVTag?.elements?.find((el) => el.name === "wp:align")?.elements?.[0]?.text;
|
|
36449
|
+
const marginOffset = {
|
|
36450
|
+
horizontal: positionHValue,
|
|
36451
|
+
top: positionVValue
|
|
36452
|
+
};
|
|
36291
36453
|
const simplePos = node.elements.find((el) => el.name === "wp:simplePos");
|
|
36292
36454
|
const wrapNode = isAnchor ? node.elements.find(
|
|
36293
36455
|
(el) => ["wp:wrapNone", "wp:wrapSquare", "wp:wrapThrough", "wp:wrapTight", "wp:wrapTopAndBottom"].includes(el.name)
|
|
@@ -36295,38 +36457,40 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36295
36457
|
const wrap2 = isAnchor ? { type: wrapNode?.name.slice(7) || "None", attrs: {} } : { type: "Inline" };
|
|
36296
36458
|
switch (wrap2.type) {
|
|
36297
36459
|
case "Square":
|
|
36298
|
-
|
|
36299
|
-
|
|
36460
|
+
if (wrapNode?.attributes?.wrapText) {
|
|
36461
|
+
wrap2.attrs.wrapText = wrapNode.attributes.wrapText;
|
|
36462
|
+
}
|
|
36463
|
+
if ("distB" in (wrapNode?.attributes || {})) {
|
|
36300
36464
|
wrap2.attrs.distBottom = emuToPixels(wrapNode.attributes.distB);
|
|
36301
36465
|
}
|
|
36302
|
-
if ("distL" in (wrapNode
|
|
36466
|
+
if ("distL" in (wrapNode?.attributes || {})) {
|
|
36303
36467
|
wrap2.attrs.distLeft = emuToPixels(wrapNode.attributes.distL);
|
|
36304
36468
|
}
|
|
36305
|
-
if ("distR" in (wrapNode
|
|
36469
|
+
if ("distR" in (wrapNode?.attributes || {})) {
|
|
36306
36470
|
wrap2.attrs.distRight = emuToPixels(wrapNode.attributes.distR);
|
|
36307
36471
|
}
|
|
36308
|
-
if ("distT" in (wrapNode
|
|
36472
|
+
if ("distT" in (wrapNode?.attributes || {})) {
|
|
36309
36473
|
wrap2.attrs.distTop = emuToPixels(wrapNode.attributes.distT);
|
|
36310
36474
|
}
|
|
36311
36475
|
break;
|
|
36312
36476
|
case "Tight":
|
|
36313
36477
|
case "Through": {
|
|
36314
|
-
if ("distL" in (wrapNode
|
|
36478
|
+
if ("distL" in (wrapNode?.attributes || {})) {
|
|
36315
36479
|
wrap2.attrs.distLeft = emuToPixels(wrapNode.attributes.distL);
|
|
36316
36480
|
}
|
|
36317
|
-
if ("distR" in (wrapNode
|
|
36481
|
+
if ("distR" in (wrapNode?.attributes || {})) {
|
|
36318
36482
|
wrap2.attrs.distRight = emuToPixels(wrapNode.attributes.distR);
|
|
36319
36483
|
}
|
|
36320
|
-
if ("distT" in (wrapNode
|
|
36484
|
+
if ("distT" in (wrapNode?.attributes || {})) {
|
|
36321
36485
|
wrap2.attrs.distTop = emuToPixels(wrapNode.attributes.distT);
|
|
36322
36486
|
}
|
|
36323
|
-
if ("distB" in (wrapNode
|
|
36487
|
+
if ("distB" in (wrapNode?.attributes || {})) {
|
|
36324
36488
|
wrap2.attrs.distBottom = emuToPixels(wrapNode.attributes.distB);
|
|
36325
36489
|
}
|
|
36326
|
-
if ("wrapText" in (wrapNode
|
|
36490
|
+
if ("wrapText" in (wrapNode?.attributes || {})) {
|
|
36327
36491
|
wrap2.attrs.wrapText = wrapNode.attributes.wrapText;
|
|
36328
36492
|
}
|
|
36329
|
-
const polygon = wrapNode
|
|
36493
|
+
const polygon = wrapNode?.elements?.find((el) => el.name === "wp:wrapPolygon");
|
|
36330
36494
|
if (polygon) {
|
|
36331
36495
|
wrap2.attrs.polygon = polygonToObj(polygon);
|
|
36332
36496
|
if (polygon.attributes?.edited !== void 0) {
|
|
@@ -36336,10 +36500,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36336
36500
|
break;
|
|
36337
36501
|
}
|
|
36338
36502
|
case "TopAndBottom":
|
|
36339
|
-
if ("distB" in (wrapNode
|
|
36503
|
+
if ("distB" in (wrapNode?.attributes || {})) {
|
|
36340
36504
|
wrap2.attrs.distBottom = emuToPixels(wrapNode.attributes.distB);
|
|
36341
36505
|
}
|
|
36342
|
-
if ("distT" in (wrapNode
|
|
36506
|
+
if ("distT" in (wrapNode?.attributes || {})) {
|
|
36343
36507
|
wrap2.attrs.distTop = emuToPixels(wrapNode.attributes.distT);
|
|
36344
36508
|
}
|
|
36345
36509
|
break;
|
|
@@ -36357,17 +36521,42 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36357
36521
|
alignV
|
|
36358
36522
|
};
|
|
36359
36523
|
}
|
|
36360
|
-
const
|
|
36361
|
-
|
|
36362
|
-
|
|
36363
|
-
|
|
36524
|
+
const graphic = node.elements.find((el) => el.name === "a:graphic");
|
|
36525
|
+
const graphicData = graphic?.elements.find((el) => el.name === "a:graphicData");
|
|
36526
|
+
const { uri: uri2 } = graphicData?.attributes || {};
|
|
36527
|
+
const shapeURI = "http://schemas.microsoft.com/office/word/2010/wordprocessingShape";
|
|
36528
|
+
if (!!uri2 && uri2 === shapeURI) {
|
|
36529
|
+
const shapeMarginOffset = {
|
|
36530
|
+
left: positionHValue,
|
|
36531
|
+
horizontal: positionHValue,
|
|
36532
|
+
top: positionVValue
|
|
36533
|
+
};
|
|
36534
|
+
return handleShapeDrawing(params2, node, graphicData, size2, padding, shapeMarginOffset);
|
|
36535
|
+
}
|
|
36536
|
+
const picture = graphicData?.elements.find((el) => el.name === "pic:pic");
|
|
36537
|
+
if (!picture || !picture.elements) return null;
|
|
36538
|
+
const blipFill = picture.elements.find((el) => el.name === "pic:blipFill");
|
|
36539
|
+
const blip = blipFill?.elements.find((el) => el.name === "a:blip");
|
|
36540
|
+
if (!blip) return null;
|
|
36541
|
+
const spPr = picture.elements.find((el) => el.name === "pic:spPr");
|
|
36542
|
+
if (spPr) {
|
|
36543
|
+
const xfrm = spPr.elements.find((el) => el.name === "a:xfrm");
|
|
36544
|
+
if (xfrm?.attributes) {
|
|
36545
|
+
transformData = {
|
|
36546
|
+
...transformData,
|
|
36547
|
+
rotation: rotToDegrees(xfrm.attributes["rot"]),
|
|
36548
|
+
verticalFlip: xfrm.attributes["flipV"] === "1",
|
|
36549
|
+
horizontalFlip: xfrm.attributes["flipH"] === "1"
|
|
36550
|
+
};
|
|
36551
|
+
}
|
|
36552
|
+
}
|
|
36364
36553
|
const { attributes: blipAttributes = {} } = blip;
|
|
36365
36554
|
const rEmbed = blipAttributes["r:embed"];
|
|
36366
36555
|
if (!rEmbed) return null;
|
|
36367
36556
|
const currentFile = filename || "document.xml";
|
|
36368
36557
|
let rels = docx[`word/_rels/${currentFile}.rels`];
|
|
36369
36558
|
if (!rels) rels = docx[`word/_rels/document.xml.rels`];
|
|
36370
|
-
const relationships = rels
|
|
36559
|
+
const relationships = rels?.elements.find((el) => el.name === "Relationships");
|
|
36371
36560
|
const { elements } = relationships || [];
|
|
36372
36561
|
const rel = elements?.find((el) => el.attributes["Id"] === rEmbed);
|
|
36373
36562
|
if (!rel) return null;
|
|
@@ -36380,10 +36569,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36380
36569
|
type: "image",
|
|
36381
36570
|
attrs: {
|
|
36382
36571
|
src: path,
|
|
36383
|
-
alt: ["emf", "wmf"].includes(extension) ? "Unable to render EMF/WMF image" : docPr?.attributes
|
|
36572
|
+
alt: ["emf", "wmf"].includes(extension) ? "Unable to render EMF/WMF image" : docPr?.attributes?.name || "Image",
|
|
36384
36573
|
extension,
|
|
36385
|
-
id: docPr?.attributes
|
|
36386
|
-
title: docPr?.attributes
|
|
36574
|
+
id: docPr?.attributes?.id || "",
|
|
36575
|
+
title: docPr?.attributes?.descr || "Image",
|
|
36387
36576
|
inline: true,
|
|
36388
36577
|
padding,
|
|
36389
36578
|
marginOffset,
|
|
@@ -36398,6 +36587,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36398
36587
|
}
|
|
36399
36588
|
},
|
|
36400
36589
|
wrap: wrap2,
|
|
36590
|
+
...wrap2.type === "Square" && wrap2.attrs.wrapText ? {
|
|
36591
|
+
wrapText: wrap2.attrs.wrapText
|
|
36592
|
+
} : {},
|
|
36593
|
+
wrapTopAndBottom: wrap2.type === "TopAndBottom",
|
|
36401
36594
|
originalPadding: {
|
|
36402
36595
|
distT: attributes["distT"],
|
|
36403
36596
|
distB: attributes["distB"],
|
|
@@ -36409,7 +36602,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36409
36602
|
}
|
|
36410
36603
|
};
|
|
36411
36604
|
}
|
|
36412
|
-
const handleShapeDrawing = (params2, node, graphicData) => {
|
|
36605
|
+
const handleShapeDrawing = (params2, node, graphicData, size2, padding, marginOffset) => {
|
|
36413
36606
|
const wsp = graphicData.elements.find((el) => el.name === "wps:wsp");
|
|
36414
36607
|
const textBox = wsp.elements.find((el) => el.name === "wps:txbx");
|
|
36415
36608
|
const textBoxContent = textBox?.elements?.find((el) => el.name === "w:txbxContent");
|
|
@@ -36420,21 +36613,14 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36420
36613
|
return getRectangleShape(params2, spPr);
|
|
36421
36614
|
}
|
|
36422
36615
|
if (!textBoxContent) {
|
|
36423
|
-
return
|
|
36616
|
+
return buildShapePlaceholder(node, size2, padding, marginOffset, "drawing");
|
|
36424
36617
|
}
|
|
36425
|
-
|
|
36426
|
-
const translatedElement = nodeListHandler.handler({
|
|
36427
|
-
...params2,
|
|
36428
|
-
node: textBoxContent.elements[0],
|
|
36429
|
-
nodes: textBoxContent.elements,
|
|
36430
|
-
path: [...params2.path || [], textBoxContent]
|
|
36431
|
-
});
|
|
36432
|
-
return translatedElement[0];
|
|
36618
|
+
return buildShapePlaceholder(node, size2, padding, marginOffset, "textbox");
|
|
36433
36619
|
};
|
|
36434
36620
|
const getRectangleShape = (params2, node) => {
|
|
36435
36621
|
const schemaAttrs = {};
|
|
36436
36622
|
const [drawingNode] = params2.nodes;
|
|
36437
|
-
if (drawingNode?.name ===
|
|
36623
|
+
if (drawingNode?.name === DRAWING_XML_TAG) {
|
|
36438
36624
|
schemaAttrs.drawingContent = drawingNode;
|
|
36439
36625
|
}
|
|
36440
36626
|
const xfrm = node.elements.find((el) => el.name === "a:xfrm");
|
|
@@ -36458,6 +36644,52 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
36458
36644
|
attrs: schemaAttrs
|
|
36459
36645
|
};
|
|
36460
36646
|
};
|
|
36647
|
+
const buildShapePlaceholder = (node, size2, padding, marginOffset, shapeType) => {
|
|
36648
|
+
const attrs = {
|
|
36649
|
+
drawingContent: {
|
|
36650
|
+
name: DRAWING_XML_TAG,
|
|
36651
|
+
elements: [carbonCopy(node)]
|
|
36652
|
+
},
|
|
36653
|
+
attributes: {
|
|
36654
|
+
"data-shape-type": shapeType
|
|
36655
|
+
}
|
|
36656
|
+
};
|
|
36657
|
+
if (size2 && (Number.isFinite(size2.width) || Number.isFinite(size2.height))) {
|
|
36658
|
+
attrs.size = {
|
|
36659
|
+
...Number.isFinite(size2.width) ? { width: size2.width } : {},
|
|
36660
|
+
...Number.isFinite(size2.height) ? { height: size2.height } : {}
|
|
36661
|
+
};
|
|
36662
|
+
}
|
|
36663
|
+
if (padding) {
|
|
36664
|
+
const paddingData = {};
|
|
36665
|
+
if (Number.isFinite(padding.top)) paddingData["data-padding-top"] = padding.top;
|
|
36666
|
+
if (Number.isFinite(padding.right)) paddingData["data-padding-right"] = padding.right;
|
|
36667
|
+
if (Number.isFinite(padding.bottom)) paddingData["data-padding-bottom"] = padding.bottom;
|
|
36668
|
+
if (Number.isFinite(padding.left)) paddingData["data-padding-left"] = padding.left;
|
|
36669
|
+
if (Object.keys(paddingData).length) {
|
|
36670
|
+
attrs.attributes = {
|
|
36671
|
+
...attrs.attributes,
|
|
36672
|
+
...paddingData
|
|
36673
|
+
};
|
|
36674
|
+
}
|
|
36675
|
+
}
|
|
36676
|
+
if (marginOffset) {
|
|
36677
|
+
const offsetData = {};
|
|
36678
|
+
const horizontal = Number.isFinite(marginOffset.horizontal) ? marginOffset.horizontal : Number.isFinite(marginOffset.left) ? marginOffset.left : void 0;
|
|
36679
|
+
if (Number.isFinite(horizontal)) offsetData["data-offset-x"] = horizontal;
|
|
36680
|
+
if (Number.isFinite(marginOffset.top)) offsetData["data-offset-y"] = marginOffset.top;
|
|
36681
|
+
if (Object.keys(offsetData).length) {
|
|
36682
|
+
attrs.attributes = {
|
|
36683
|
+
...attrs.attributes,
|
|
36684
|
+
...offsetData
|
|
36685
|
+
};
|
|
36686
|
+
}
|
|
36687
|
+
}
|
|
36688
|
+
return {
|
|
36689
|
+
type: "contentBlock",
|
|
36690
|
+
attrs
|
|
36691
|
+
};
|
|
36692
|
+
};
|
|
36461
36693
|
function handleAnchorNode(params2) {
|
|
36462
36694
|
const { node } = params2.extraParams;
|
|
36463
36695
|
if (node.name !== "wp:anchor") {
|
|
@@ -39427,8 +39659,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
39427
39659
|
handlerName: "trackChangeNodeHandler",
|
|
39428
39660
|
handler: handleTrackChangeNode
|
|
39429
39661
|
};
|
|
39430
|
-
const hyperlinkNodeHandlerEntity = generateV2HandlerEntity("hyperlinkNodeHandler", translator$
|
|
39431
|
-
const runNodeHandlerEntity = generateV2HandlerEntity("runNodeHandler", translator$
|
|
39662
|
+
const hyperlinkNodeHandlerEntity = generateV2HandlerEntity("hyperlinkNodeHandler", translator$1c);
|
|
39663
|
+
const runNodeHandlerEntity = generateV2HandlerEntity("runNodeHandler", translator$1b);
|
|
39432
39664
|
function parseProperties(node) {
|
|
39433
39665
|
const marks = [];
|
|
39434
39666
|
const unknownMarks = [];
|
|
@@ -39520,7 +39752,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
39520
39752
|
if (nodes.length === 0 || nodes[0].name !== "w:p") {
|
|
39521
39753
|
return { nodes: [], consumed: 0 };
|
|
39522
39754
|
}
|
|
39523
|
-
const schemaNode = translator$
|
|
39755
|
+
const schemaNode = translator$1o.encode(params2);
|
|
39524
39756
|
const newNodes = schemaNode ? [schemaNode] : [];
|
|
39525
39757
|
return { nodes: newNodes, consumed: 1 };
|
|
39526
39758
|
};
|
|
@@ -39623,7 +39855,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
39623
39855
|
if (nodes.length === 0 || nodes[0].name !== "w:br") {
|
|
39624
39856
|
return { nodes: [], consumed: 0 };
|
|
39625
39857
|
}
|
|
39626
|
-
const result = translator$
|
|
39858
|
+
const result = translator$1r.encode(params2);
|
|
39627
39859
|
if (!result) return { nodes: [], consumed: 0 };
|
|
39628
39860
|
return {
|
|
39629
39861
|
nodes: [result],
|
|
@@ -40222,7 +40454,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
40222
40454
|
if (!nodes.length || nodes[0].name !== "w:tab") {
|
|
40223
40455
|
return { nodes: [], consumed: 0 };
|
|
40224
40456
|
}
|
|
40225
|
-
const node = translator$
|
|
40457
|
+
const node = translator$1p.encode(params2);
|
|
40226
40458
|
return { nodes: [node], consumed: 1 };
|
|
40227
40459
|
};
|
|
40228
40460
|
const tabNodeEntityHandler = {
|
|
@@ -40474,12 +40706,14 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
40474
40706
|
const content = pruneIgnoredNodes(contentElements);
|
|
40475
40707
|
const comments = importCommentData({ docx, converter, editor });
|
|
40476
40708
|
const lists = {};
|
|
40709
|
+
const inlineDocumentFonts = [];
|
|
40477
40710
|
let parsedContent = nodeListHandler.handler({
|
|
40478
40711
|
nodes: content,
|
|
40479
40712
|
nodeListHandler,
|
|
40480
40713
|
docx,
|
|
40481
40714
|
converter,
|
|
40482
40715
|
editor,
|
|
40716
|
+
inlineDocumentFonts,
|
|
40483
40717
|
lists,
|
|
40484
40718
|
path: []
|
|
40485
40719
|
});
|
|
@@ -40502,6 +40736,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
40502
40736
|
savedTagsToRestore: node,
|
|
40503
40737
|
pageStyles: getDocumentStyles(node, docx, converter, editor),
|
|
40504
40738
|
comments,
|
|
40739
|
+
inlineDocumentFonts,
|
|
40505
40740
|
linkedStyles: getStyleDefinitions(docx),
|
|
40506
40741
|
numbering: getNumberingDefinitions(docx)
|
|
40507
40742
|
};
|
|
@@ -40565,6 +40800,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
40565
40800
|
filename,
|
|
40566
40801
|
parentStyleId,
|
|
40567
40802
|
lists,
|
|
40803
|
+
inlineDocumentFonts,
|
|
40568
40804
|
path = []
|
|
40569
40805
|
}) => {
|
|
40570
40806
|
if (!elements || !elements.length) return [];
|
|
@@ -40591,6 +40827,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
40591
40827
|
filename,
|
|
40592
40828
|
parentStyleId,
|
|
40593
40829
|
lists,
|
|
40830
|
+
inlineDocumentFonts,
|
|
40594
40831
|
path
|
|
40595
40832
|
});
|
|
40596
40833
|
},
|
|
@@ -41170,7 +41407,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
41170
41407
|
const XML_NODE_NAME = "w:pict";
|
|
41171
41408
|
const SD_NODE_NAME = ["shapeContainer", "contentBlock"];
|
|
41172
41409
|
const validXmlAttributes = [];
|
|
41173
|
-
function encode$
|
|
41410
|
+
function encode$1c(params2) {
|
|
41174
41411
|
const { node, pNode } = params2.extraParams;
|
|
41175
41412
|
const { type: pictType, handler: handler2 } = pictNodeTypeStrategy(node);
|
|
41176
41413
|
if (!handler2 || pictType === "unknown") {
|
|
@@ -41202,7 +41439,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
41202
41439
|
xmlName: XML_NODE_NAME,
|
|
41203
41440
|
sdNodeOrKeyName: SD_NODE_NAME,
|
|
41204
41441
|
type: NodeTranslator.translatorTypes.NODE,
|
|
41205
|
-
encode: encode$
|
|
41442
|
+
encode: encode$1c,
|
|
41206
41443
|
decode,
|
|
41207
41444
|
attributes: validXmlAttributes
|
|
41208
41445
|
};
|
|
@@ -41278,21 +41515,21 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
41278
41515
|
doc: translateDocumentNode,
|
|
41279
41516
|
body: translateBodyNode,
|
|
41280
41517
|
heading: translateHeadingNode,
|
|
41281
|
-
paragraph: translator$
|
|
41282
|
-
run: translator$
|
|
41518
|
+
paragraph: translator$1o,
|
|
41519
|
+
run: translator$1b,
|
|
41283
41520
|
text: translateTextNode,
|
|
41284
41521
|
bulletList: translateList,
|
|
41285
41522
|
orderedList: translateList,
|
|
41286
|
-
lineBreak: translator$
|
|
41287
|
-
table: translator$
|
|
41288
|
-
tableRow: translator$
|
|
41523
|
+
lineBreak: translator$1r,
|
|
41524
|
+
table: translator$s,
|
|
41525
|
+
tableRow: translator$Z,
|
|
41289
41526
|
tableCell: translator$c,
|
|
41290
41527
|
bookmarkStart: translator$7,
|
|
41291
41528
|
bookmarkEnd: translator$6,
|
|
41292
41529
|
fieldAnnotation: translator$8,
|
|
41293
|
-
tab: translator$
|
|
41530
|
+
tab: translator$1p,
|
|
41294
41531
|
image: translator$9,
|
|
41295
|
-
hardBreak: translator$
|
|
41532
|
+
hardBreak: translator$1r,
|
|
41296
41533
|
commentRangeStart: commentRangeStartTranslator,
|
|
41297
41534
|
commentRangeEnd: commentRangeEndTranslator,
|
|
41298
41535
|
commentReference: () => null,
|
|
@@ -41653,7 +41890,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
41653
41890
|
}
|
|
41654
41891
|
const isLinkNode = node.marks?.some((m2) => m2.type === "link");
|
|
41655
41892
|
if (isLinkNode && !extraParams?.linkProcessed) {
|
|
41656
|
-
return translator$
|
|
41893
|
+
return translator$1c.decode(params2);
|
|
41657
41894
|
}
|
|
41658
41895
|
const { text, marks = [] } = node;
|
|
41659
41896
|
return getTextNodeForExport(text, marks, params2);
|
|
@@ -41913,7 +42150,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
41913
42150
|
markElement.type = "element";
|
|
41914
42151
|
break;
|
|
41915
42152
|
case "underline": {
|
|
41916
|
-
const translated = translator$
|
|
42153
|
+
const translated = translator$1l.decode({
|
|
41917
42154
|
node: {
|
|
41918
42155
|
attrs: {
|
|
41919
42156
|
underlineType: attrs.underlineType ?? attrs.underline ?? null,
|
|
@@ -41977,7 +42214,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
41977
42214
|
break;
|
|
41978
42215
|
case "highlight": {
|
|
41979
42216
|
const highlightValue = attrs.color ?? attrs.highlight ?? null;
|
|
41980
|
-
const translated = translator$
|
|
42217
|
+
const translated = translator$1q.decode({ node: { attrs: { highlight: highlightValue } } });
|
|
41981
42218
|
return translated || {};
|
|
41982
42219
|
}
|
|
41983
42220
|
case "link":
|
|
@@ -42356,6 +42593,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
42356
42593
|
this.fonts = params2?.fonts || {};
|
|
42357
42594
|
this.addedMedia = {};
|
|
42358
42595
|
this.comments = [];
|
|
42596
|
+
this.inlineDocumentFonts = [];
|
|
42359
42597
|
this.docHiglightColors = /* @__PURE__ */ new Set([]);
|
|
42360
42598
|
this.xml = params2?.xml;
|
|
42361
42599
|
this.declaration = null;
|
|
@@ -42642,6 +42880,23 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
42642
42880
|
return result;
|
|
42643
42881
|
}
|
|
42644
42882
|
getDocumentFonts() {
|
|
42883
|
+
const inlineDocumentFonts = [...new Set(this.inlineDocumentFonts || [])];
|
|
42884
|
+
const fontTable = this.convertedXml["word/fontTable.xml"];
|
|
42885
|
+
if (!fontTable) {
|
|
42886
|
+
return inlineDocumentFonts;
|
|
42887
|
+
}
|
|
42888
|
+
const wFonts = fontTable.elements?.find((element) => element.name === "w:fonts");
|
|
42889
|
+
if (!wFonts) {
|
|
42890
|
+
return inlineDocumentFonts;
|
|
42891
|
+
}
|
|
42892
|
+
if (!wFonts.elements) {
|
|
42893
|
+
return inlineDocumentFonts;
|
|
42894
|
+
}
|
|
42895
|
+
const fontsInFontTable = wFonts.elements.filter((element) => element.name === "w:font").map((element) => element.attributes["w:name"]);
|
|
42896
|
+
const allFonts = [...inlineDocumentFonts, ...fontsInFontTable];
|
|
42897
|
+
return [...new Set(allFonts)];
|
|
42898
|
+
}
|
|
42899
|
+
getFontFaceImportString() {
|
|
42645
42900
|
const fontTable = this.convertedXml["word/fontTable.xml"];
|
|
42646
42901
|
if (!fontTable || !Object.keys(this.fonts).length) return;
|
|
42647
42902
|
const fonts = fontTable.elements.find((el) => el.name === "w:fonts");
|
|
@@ -42655,6 +42910,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
42655
42910
|
const rels = this.convertedXml["word/_rels/fontTable.xml.rels"];
|
|
42656
42911
|
const relationships = rels?.elements.find((el) => el.name === "Relationships") || {};
|
|
42657
42912
|
const { elements } = relationships;
|
|
42913
|
+
const fontsImported = [];
|
|
42658
42914
|
let styleString = "";
|
|
42659
42915
|
for (const font of fontsToInclude) {
|
|
42660
42916
|
const filePath = elements.find((el) => el.attributes.Id === font.attributes["r:id"])?.attributes?.Target;
|
|
@@ -42671,6 +42927,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
42671
42927
|
const isItalic = font.name.includes("Italic");
|
|
42672
42928
|
const isLight = font.name.includes("Light");
|
|
42673
42929
|
const fontWeight = isNormal ? "normal" : isBold ? "bold" : isLight ? "200" : "normal";
|
|
42930
|
+
if (!fontsImported.includes(font.fontFamily)) {
|
|
42931
|
+
fontsImported.push(font.fontFamily);
|
|
42932
|
+
}
|
|
42674
42933
|
styleString += `
|
|
42675
42934
|
@font-face {
|
|
42676
42935
|
font-style: ${isItalic ? "italic" : "normal"};
|
|
@@ -42681,7 +42940,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
42681
42940
|
}
|
|
42682
42941
|
`;
|
|
42683
42942
|
}
|
|
42684
|
-
return
|
|
42943
|
+
return {
|
|
42944
|
+
styleString,
|
|
42945
|
+
fontsImported
|
|
42946
|
+
};
|
|
42685
42947
|
}
|
|
42686
42948
|
getDocumentInternalId() {
|
|
42687
42949
|
const settingsLocation = "word/settings.xml";
|
|
@@ -42736,6 +42998,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
42736
42998
|
this.numbering = result.numbering;
|
|
42737
42999
|
this.comments = result.comments;
|
|
42738
43000
|
this.linkedStyles = result.linkedStyles;
|
|
43001
|
+
this.inlineDocumentFonts = result.inlineDocumentFonts;
|
|
42739
43002
|
return result.pmDoc;
|
|
42740
43003
|
} else {
|
|
42741
43004
|
return null;
|
|
@@ -45697,7 +45960,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
45697
45960
|
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
45961
|
var __privateSet = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), member.set(obj, value), value);
|
|
45699
45962
|
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;
|
|
45963
|
+
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
45964
|
var GOOD_LEAF_SIZE = 200;
|
|
45702
45965
|
var RopeSequence = function RopeSequence2() {
|
|
45703
45966
|
};
|
|
@@ -58766,6 +59029,29 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
58766
59029
|
}
|
|
58767
59030
|
return false;
|
|
58768
59031
|
};
|
|
59032
|
+
function canRenderFont(fontName, fallbackFont = "sans-serif") {
|
|
59033
|
+
const _canRenderFont = (fontName2, fallbackFont2) => {
|
|
59034
|
+
const canvas = document.createElement("canvas");
|
|
59035
|
+
const ctx2 = canvas.getContext("2d");
|
|
59036
|
+
ctx2.textBaseline = "top";
|
|
59037
|
+
const text = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
59038
|
+
ctx2.font = `72px ${fallbackFont2}`;
|
|
59039
|
+
const initialTextMeasurement = ctx2.measureText(text);
|
|
59040
|
+
const fallbackWidth = initialTextMeasurement.width;
|
|
59041
|
+
const fallbackHeight = initialTextMeasurement.actualBoundingBoxDescent;
|
|
59042
|
+
ctx2.font = `72px "${fontName2}", ${fallbackFont2}`;
|
|
59043
|
+
const customTextMeasurement = ctx2.measureText(text);
|
|
59044
|
+
const customFontWidth = customTextMeasurement.width;
|
|
59045
|
+
const customFontHeight = customTextMeasurement.actualBoundingBoxDescent;
|
|
59046
|
+
const isAvailable = customFontWidth !== fallbackWidth || customFontHeight !== fallbackHeight;
|
|
59047
|
+
return isAvailable;
|
|
59048
|
+
};
|
|
59049
|
+
if (_canRenderFont(fontName, fallbackFont)) {
|
|
59050
|
+
return true;
|
|
59051
|
+
}
|
|
59052
|
+
const oppositeFallbackFont = fallbackFont === "sans-serif" ? "serif" : "sans-serif";
|
|
59053
|
+
return _canRenderFont(fontName, oppositeFallbackFont);
|
|
59054
|
+
}
|
|
58769
59055
|
const { findChildren: findChildren$3 } = helpers;
|
|
58770
59056
|
function getAllFieldAnnotations(state2) {
|
|
58771
59057
|
let fieldAnnotations = findChildren$3(state2.doc, (node) => node.type.name === "fieldAnnotation");
|
|
@@ -59815,6 +60101,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
59815
60101
|
__publicField$1(this, "schema");
|
|
59816
60102
|
__publicField$1(this, "view");
|
|
59817
60103
|
__publicField$1(this, "isFocused", false);
|
|
60104
|
+
__publicField$1(this, "fontsImported", []);
|
|
59818
60105
|
__publicField$1(this, "options", {
|
|
59819
60106
|
element: null,
|
|
59820
60107
|
selector: null,
|
|
@@ -59875,6 +60162,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
59875
60162
|
onPaginationUpdate: () => null,
|
|
59876
60163
|
onException: () => null,
|
|
59877
60164
|
onListDefinitionsChange: () => null,
|
|
60165
|
+
onFontsResolved: null,
|
|
59878
60166
|
// async (file) => url;
|
|
59879
60167
|
handleImageUpload: null,
|
|
59880
60168
|
// telemetry
|
|
@@ -60851,6 +61139,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
60851
61139
|
this.emit("beforeCreate", { editor: this });
|
|
60852
61140
|
this.on("contentError", this.options.onContentError);
|
|
60853
61141
|
this.mount(this.options.element);
|
|
61142
|
+
if (!this.options.isHeadless) {
|
|
61143
|
+
__privateMethod$1(this, _Editor_instances, checkFonts_fn).call(this);
|
|
61144
|
+
}
|
|
60854
61145
|
this.on("create", this.options.onCreate);
|
|
60855
61146
|
this.on("update", this.options.onUpdate);
|
|
60856
61147
|
this.on("selectionUpdate", this.options.onSelectionUpdate);
|
|
@@ -60998,13 +61289,74 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
60998
61289
|
}
|
|
60999
61290
|
};
|
|
61000
61291
|
initFonts_fn = function() {
|
|
61001
|
-
const
|
|
61002
|
-
if (styleString?.length) {
|
|
61292
|
+
const results = this.converter.getFontFaceImportString();
|
|
61293
|
+
if (results?.styleString?.length) {
|
|
61003
61294
|
const style2 = document.createElement("style");
|
|
61004
|
-
style2.textContent = styleString;
|
|
61295
|
+
style2.textContent = results.styleString;
|
|
61005
61296
|
document.head.appendChild(style2);
|
|
61297
|
+
this.fontsImported = results.fontsImported;
|
|
61298
|
+
}
|
|
61299
|
+
};
|
|
61300
|
+
checkFonts_fn = async function() {
|
|
61301
|
+
if (!this.options.onFontsResolved || typeof this.options.onFontsResolved !== "function") {
|
|
61302
|
+
return;
|
|
61303
|
+
}
|
|
61304
|
+
if (this.options.isHeadless) {
|
|
61305
|
+
return;
|
|
61306
|
+
}
|
|
61307
|
+
const fontsUsedInDocument = this.converter.getDocumentFonts();
|
|
61308
|
+
if (!("queryLocalFonts" in window)) {
|
|
61309
|
+
console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
|
|
61310
|
+
const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
|
|
61311
|
+
this.options.onFontsResolved({
|
|
61312
|
+
documentFonts: fontsUsedInDocument,
|
|
61313
|
+
unsupportedFonts
|
|
61314
|
+
});
|
|
61315
|
+
return;
|
|
61316
|
+
}
|
|
61317
|
+
const localFontAccess = await navigator.permissions.query({ name: "local-fonts" });
|
|
61318
|
+
if (localFontAccess.state === "denied") {
|
|
61319
|
+
console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
|
|
61320
|
+
const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
|
|
61321
|
+
this.options.onFontsResolved({
|
|
61322
|
+
documentFonts: fontsUsedInDocument,
|
|
61323
|
+
unsupportedFonts
|
|
61324
|
+
});
|
|
61325
|
+
return;
|
|
61326
|
+
}
|
|
61327
|
+
try {
|
|
61328
|
+
const localFonts = await window.queryLocalFonts();
|
|
61329
|
+
const uniqueLocalFonts = [...new Set(localFonts.map((font) => font.family))];
|
|
61330
|
+
const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithLocalFonts_fn).call(this, fontsUsedInDocument, uniqueLocalFonts);
|
|
61331
|
+
this.options.onFontsResolved({
|
|
61332
|
+
documentFonts: fontsUsedInDocument,
|
|
61333
|
+
unsupportedFonts
|
|
61334
|
+
});
|
|
61335
|
+
} catch {
|
|
61336
|
+
console.warn("[SuperDoc] Could not get access to local fonts. Using fallback solution.");
|
|
61337
|
+
const unsupportedFonts = __privateMethod$1(this, _Editor_instances, determineUnsupportedFontsWithCanvas_fn).call(this, fontsUsedInDocument);
|
|
61338
|
+
this.options.onFontsResolved({
|
|
61339
|
+
documentFonts: fontsUsedInDocument,
|
|
61340
|
+
unsupportedFonts
|
|
61341
|
+
});
|
|
61006
61342
|
}
|
|
61007
61343
|
};
|
|
61344
|
+
determineUnsupportedFontsWithLocalFonts_fn = function(fonts, localFonts) {
|
|
61345
|
+
const unsupportedFonts = fonts.filter((font) => {
|
|
61346
|
+
const isLocalFont = localFonts.includes(font);
|
|
61347
|
+
const isFontImported = this.fontsImported.includes(font);
|
|
61348
|
+
return !isLocalFont && !isFontImported;
|
|
61349
|
+
});
|
|
61350
|
+
return unsupportedFonts;
|
|
61351
|
+
};
|
|
61352
|
+
determineUnsupportedFontsWithCanvas_fn = function(fonts) {
|
|
61353
|
+
const unsupportedFonts = fonts.filter((font) => {
|
|
61354
|
+
const canRender = canRenderFont(font);
|
|
61355
|
+
const isFontImported = this.fontsImported.includes(font);
|
|
61356
|
+
return !canRender && !isFontImported;
|
|
61357
|
+
});
|
|
61358
|
+
return unsupportedFonts;
|
|
61359
|
+
};
|
|
61008
61360
|
createSchema_fn = function() {
|
|
61009
61361
|
this.schema = this.extensionService.schema;
|
|
61010
61362
|
};
|
|
@@ -66519,8 +66871,11 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
66519
66871
|
}
|
|
66520
66872
|
});
|
|
66521
66873
|
const getColStyleDeclaration = (minWidth, width) => {
|
|
66522
|
-
if (width) {
|
|
66523
|
-
|
|
66874
|
+
if (width != null) {
|
|
66875
|
+
const numericWidth = Number(width);
|
|
66876
|
+
if (Number.isFinite(numericWidth) && numericWidth >= 0) {
|
|
66877
|
+
return ["width", `${numericWidth}px`];
|
|
66878
|
+
}
|
|
66524
66879
|
}
|
|
66525
66880
|
return ["min-width", `${minWidth}px`];
|
|
66526
66881
|
};
|
|
@@ -66542,7 +66897,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
66542
66897
|
this.table = this.dom.appendChild(document.createElement("table"));
|
|
66543
66898
|
this.colgroup = this.table.appendChild(document.createElement("colgroup"));
|
|
66544
66899
|
updateTable(this.editor, this.node, this.table);
|
|
66545
|
-
updateColumns(node, this.colgroup, this.table, cellMinWidth2);
|
|
66900
|
+
updateColumns(node, this.colgroup, this.table, cellMinWidth2, void 0, void 0, this.editor);
|
|
66546
66901
|
this.contentDOM = this.table.appendChild(document.createElement("tbody"));
|
|
66547
66902
|
setTimeout(() => {
|
|
66548
66903
|
updateTableWrapper(this.dom, this.table);
|
|
@@ -66554,7 +66909,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
66554
66909
|
}
|
|
66555
66910
|
this.node = node;
|
|
66556
66911
|
updateTable(this.editor, node, this.table);
|
|
66557
|
-
updateColumns(node, this.colgroup, this.table, this.cellMinWidth);
|
|
66912
|
+
updateColumns(node, this.colgroup, this.table, this.cellMinWidth, void 0, void 0, this.editor);
|
|
66558
66913
|
updateTableWrapper(this.dom, this.table);
|
|
66559
66914
|
return true;
|
|
66560
66915
|
}
|
|
@@ -66567,46 +66922,105 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
66567
66922
|
}
|
|
66568
66923
|
};
|
|
66569
66924
|
};
|
|
66570
|
-
function updateColumns(node, colgroup, table, cellMinWidth2, overrideCol, overrideValue) {
|
|
66571
|
-
|
|
66572
|
-
|
|
66573
|
-
|
|
66925
|
+
function updateColumns(node, colgroup, table, cellMinWidth2, overrideCol, overrideValue, editor) {
|
|
66926
|
+
const gridColumns = Array.isArray(node.attrs?.grid) && node.attrs.grid.length ? node.attrs.grid.map((col) => twipsToPixels(col.col)) : null;
|
|
66927
|
+
const totalColumns = gridColumns?.length ?? null;
|
|
66928
|
+
const pageBody = table.closest(".page__body");
|
|
66929
|
+
const wrapper = table.parentElement;
|
|
66930
|
+
let availableWidth = pageBody?.getBoundingClientRect?.().width;
|
|
66931
|
+
if (!availableWidth && wrapper) {
|
|
66932
|
+
availableWidth = wrapper.getBoundingClientRect().width;
|
|
66933
|
+
}
|
|
66934
|
+
if (typeof availableWidth === "number" && !Number.isNaN(availableWidth)) {
|
|
66935
|
+
availableWidth = Math.max(availableWidth - 2, 0);
|
|
66936
|
+
} else {
|
|
66937
|
+
availableWidth = null;
|
|
66938
|
+
}
|
|
66939
|
+
const pageStyles = editor?.converter?.pageStyles;
|
|
66940
|
+
if (pageStyles?.pageSize?.width) {
|
|
66941
|
+
const toNumber2 = (v2) => typeof v2 === "number" ? v2 : parseFloat(v2) || 0;
|
|
66942
|
+
const pageWidth = toNumber2(pageStyles.pageSize.width);
|
|
66943
|
+
const marginLeft = toNumber2(pageStyles.pageMargins?.left);
|
|
66944
|
+
const marginRight = toNumber2(pageStyles.pageMargins?.right);
|
|
66945
|
+
const pageAvailableWidthPx = Math.max((pageWidth - marginLeft - marginRight) * PIXELS_PER_INCH, 0);
|
|
66946
|
+
if (pageAvailableWidthPx > 0) {
|
|
66947
|
+
availableWidth = availableWidth ? Math.min(availableWidth, pageAvailableWidthPx) : pageAvailableWidthPx;
|
|
66948
|
+
}
|
|
66949
|
+
}
|
|
66950
|
+
const resolveColumnWidth = (colIndex2, colwidthValue) => {
|
|
66951
|
+
if (overrideCol === colIndex2) return overrideValue;
|
|
66952
|
+
if (colwidthValue != null) return colwidthValue;
|
|
66953
|
+
if (gridColumns && gridColumns[colIndex2] != null) return gridColumns[colIndex2];
|
|
66954
|
+
return null;
|
|
66955
|
+
};
|
|
66956
|
+
const widths = [];
|
|
66574
66957
|
const row = node.firstChild;
|
|
66958
|
+
let colIndex = 0;
|
|
66575
66959
|
if (row !== null) {
|
|
66576
|
-
for (let i2 = 0
|
|
66577
|
-
const
|
|
66578
|
-
|
|
66579
|
-
|
|
66580
|
-
|
|
66581
|
-
totalWidth += hasWidth || cellMinWidth2;
|
|
66582
|
-
if (!hasWidth) fixedWidth = false;
|
|
66583
|
-
if (!nextDOM) {
|
|
66584
|
-
const col2 = document.createElement("col");
|
|
66585
|
-
const [propKey, propVal] = getColStyleDeclaration(cellMinWidth2, hasWidth);
|
|
66586
|
-
col2.style.setProperty(propKey, propVal);
|
|
66587
|
-
colgroup.appendChild(col2);
|
|
66588
|
-
} else {
|
|
66589
|
-
if (nextDOM.style.width !== cssWidth) {
|
|
66590
|
-
const [propKey, propVal] = getColStyleDeclaration(cellMinWidth2, hasWidth);
|
|
66591
|
-
nextDOM.style.setProperty(propKey, propVal);
|
|
66592
|
-
}
|
|
66593
|
-
nextDOM = nextDOM.nextSibling;
|
|
66594
|
-
}
|
|
66960
|
+
for (let i2 = 0; i2 < row.childCount; i2++) {
|
|
66961
|
+
const child = row.child(i2);
|
|
66962
|
+
const { colspan, colwidth } = child.attrs;
|
|
66963
|
+
for (let span = 0; span < colspan; span += 1, colIndex += 1) {
|
|
66964
|
+
widths.push(resolveColumnWidth(colIndex, colwidth && colwidth[span]));
|
|
66595
66965
|
}
|
|
66596
66966
|
}
|
|
66597
66967
|
}
|
|
66598
|
-
|
|
66599
|
-
|
|
66600
|
-
|
|
66601
|
-
|
|
66968
|
+
if (totalColumns != null && colIndex < totalColumns) {
|
|
66969
|
+
for (let col = colIndex; col < totalColumns; col += 1) {
|
|
66970
|
+
widths.push(resolveColumnWidth(col));
|
|
66971
|
+
}
|
|
66602
66972
|
}
|
|
66603
|
-
|
|
66604
|
-
|
|
66973
|
+
const normalizedWidths = widths.map((widthPx) => {
|
|
66974
|
+
const numericWidth = Number(widthPx);
|
|
66975
|
+
if (!Number.isFinite(numericWidth)) return null;
|
|
66976
|
+
if (numericWidth < 0) return null;
|
|
66977
|
+
if (numericWidth === 0) return 0;
|
|
66978
|
+
if (numericWidth < 1) return 0;
|
|
66979
|
+
return numericWidth;
|
|
66980
|
+
});
|
|
66981
|
+
const rawTotalWidth = normalizedWidths.reduce((sum, width) => sum + (width != null ? width : cellMinWidth2), 0);
|
|
66982
|
+
let scale = 1;
|
|
66983
|
+
if (availableWidth && rawTotalWidth > 0 && rawTotalWidth > availableWidth) {
|
|
66984
|
+
scale = availableWidth / rawTotalWidth;
|
|
66985
|
+
}
|
|
66986
|
+
let totalWidth = 0;
|
|
66987
|
+
let hasUndefinedWidth = false;
|
|
66988
|
+
let dom = colgroup.firstChild;
|
|
66989
|
+
normalizedWidths.forEach((width) => {
|
|
66990
|
+
let scaledWidth = width;
|
|
66991
|
+
if (scaledWidth != null) {
|
|
66992
|
+
scaledWidth = scaledWidth * scale;
|
|
66993
|
+
}
|
|
66994
|
+
const [propKey, propVal] = getColStyleDeclaration(cellMinWidth2, scaledWidth);
|
|
66995
|
+
if (scaledWidth == null) {
|
|
66996
|
+
totalWidth += cellMinWidth2;
|
|
66997
|
+
hasUndefinedWidth = true;
|
|
66998
|
+
} else {
|
|
66999
|
+
totalWidth += scaledWidth;
|
|
67000
|
+
}
|
|
67001
|
+
if (!dom) {
|
|
67002
|
+
const colElement = document.createElement("col");
|
|
67003
|
+
colElement.style.setProperty(propKey, propVal);
|
|
67004
|
+
colgroup.appendChild(colElement);
|
|
67005
|
+
} else {
|
|
67006
|
+
dom.style.setProperty(propKey, propVal);
|
|
67007
|
+
dom = dom.nextSibling;
|
|
67008
|
+
}
|
|
67009
|
+
});
|
|
67010
|
+
while (dom) {
|
|
67011
|
+
const next = dom.nextSibling;
|
|
67012
|
+
dom.parentNode?.removeChild(dom);
|
|
67013
|
+
dom = next;
|
|
67014
|
+
}
|
|
67015
|
+
if (scale < 1 || !hasUndefinedWidth) {
|
|
67016
|
+
const clampedWidth = Math.min(totalWidth, availableWidth || totalWidth);
|
|
67017
|
+
table.style.width = `${clampedWidth}px`;
|
|
66605
67018
|
table.style.minWidth = "";
|
|
66606
67019
|
} else {
|
|
66607
67020
|
table.style.width = "";
|
|
66608
67021
|
table.style.minWidth = `${totalWidth}px`;
|
|
66609
67022
|
}
|
|
67023
|
+
table.style.maxWidth = "100%";
|
|
66610
67024
|
}
|
|
66611
67025
|
function updateTable(editor, node, table) {
|
|
66612
67026
|
const allExtensionsAttrs = editor.extensionService.attributes;
|
|
@@ -66684,22 +67098,61 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
66684
67098
|
const tableBorders = createTableBorders();
|
|
66685
67099
|
return types2.table.createChecked({ borders: tableBorders }, rows);
|
|
66686
67100
|
};
|
|
67101
|
+
const MIN_MEANINGFUL_WIDTH_PX = 1;
|
|
66687
67102
|
const createColGroup = (node, cellMinWidth2, overrideCol, overrideValue) => {
|
|
66688
67103
|
let totalWidth = 0;
|
|
66689
67104
|
let fixedWidth = true;
|
|
66690
67105
|
const cols = [];
|
|
66691
67106
|
const colsValues = [];
|
|
66692
67107
|
const row = node.firstChild;
|
|
67108
|
+
const gridColumns = Array.isArray(node.attrs?.grid) && node.attrs.grid.length ? node.attrs.grid.map((col) => twipsToPixels(col.col)) : null;
|
|
66693
67109
|
if (!row) return {};
|
|
66694
|
-
|
|
66695
|
-
|
|
66696
|
-
|
|
66697
|
-
|
|
66698
|
-
|
|
66699
|
-
|
|
66700
|
-
|
|
67110
|
+
const totalColumns = gridColumns?.length;
|
|
67111
|
+
const resolveColumnWidth = (colIndex2, colwidthValue) => {
|
|
67112
|
+
if (overrideCol === colIndex2) return overrideValue;
|
|
67113
|
+
if (colwidthValue != null) return colwidthValue;
|
|
67114
|
+
if (gridColumns && gridColumns[colIndex2] != null) return gridColumns[colIndex2];
|
|
67115
|
+
return null;
|
|
67116
|
+
};
|
|
67117
|
+
let colIndex = 0;
|
|
67118
|
+
for (let i2 = 0; i2 < row.childCount; i2++) {
|
|
67119
|
+
const child = row.child(i2);
|
|
67120
|
+
const { colspan, colwidth } = child.attrs;
|
|
67121
|
+
for (let j2 = 0; j2 < colspan; j2++, colIndex++) {
|
|
67122
|
+
const candidateWidth = resolveColumnWidth(colIndex, colwidth && colwidth[j2]);
|
|
67123
|
+
const numericWidth = Number(candidateWidth);
|
|
67124
|
+
let effectiveWidth = Number.isFinite(numericWidth) && numericWidth > 0 ? numericWidth : null;
|
|
67125
|
+
if (effectiveWidth != null && effectiveWidth < MIN_MEANINGFUL_WIDTH_PX) {
|
|
67126
|
+
effectiveWidth = 0;
|
|
67127
|
+
}
|
|
67128
|
+
if (effectiveWidth == null) {
|
|
67129
|
+
totalWidth += cellMinWidth2;
|
|
67130
|
+
fixedWidth = false;
|
|
67131
|
+
} else {
|
|
67132
|
+
totalWidth += effectiveWidth;
|
|
67133
|
+
}
|
|
67134
|
+
const [prop, value] = getColStyleDeclaration(cellMinWidth2, effectiveWidth);
|
|
67135
|
+
cols.push(["col", { style: `${prop}: ${value}` }]);
|
|
67136
|
+
colsValues.push(parseFloat(value));
|
|
67137
|
+
}
|
|
67138
|
+
}
|
|
67139
|
+
if (totalColumns != null) {
|
|
67140
|
+
for (let col = colIndex; col < totalColumns; col++) {
|
|
67141
|
+
const candidateWidth = resolveColumnWidth(col);
|
|
67142
|
+
const numericWidth = Number(candidateWidth);
|
|
67143
|
+
let effectiveWidth = Number.isFinite(numericWidth) && numericWidth > 0 ? numericWidth : null;
|
|
67144
|
+
if (effectiveWidth != null && effectiveWidth < MIN_MEANINGFUL_WIDTH_PX) {
|
|
67145
|
+
effectiveWidth = 0;
|
|
67146
|
+
}
|
|
67147
|
+
if (effectiveWidth == null) {
|
|
67148
|
+
totalWidth += cellMinWidth2;
|
|
67149
|
+
fixedWidth = false;
|
|
67150
|
+
} else {
|
|
67151
|
+
totalWidth += effectiveWidth;
|
|
67152
|
+
}
|
|
67153
|
+
const [prop, value] = getColStyleDeclaration(cellMinWidth2, effectiveWidth);
|
|
66701
67154
|
cols.push(["col", { style: `${prop}: ${value}` }]);
|
|
66702
|
-
colsValues.push(
|
|
67155
|
+
colsValues.push(parseFloat(value));
|
|
66703
67156
|
}
|
|
66704
67157
|
}
|
|
66705
67158
|
const tableWidth = fixedWidth ? `${totalWidth}px` : "";
|
|
@@ -69602,6 +70055,19 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
69602
70055
|
"data-colwidth": attrs.colwidth.join(",")
|
|
69603
70056
|
};
|
|
69604
70057
|
}
|
|
70058
|
+
},
|
|
70059
|
+
__placeholder: {
|
|
70060
|
+
default: null,
|
|
70061
|
+
parseDOM: (element) => {
|
|
70062
|
+
const value = element.getAttribute("data-placeholder");
|
|
70063
|
+
return value || null;
|
|
70064
|
+
},
|
|
70065
|
+
renderDOM({ __placeholder }) {
|
|
70066
|
+
if (!__placeholder) return {};
|
|
70067
|
+
return {
|
|
70068
|
+
"data-placeholder": __placeholder
|
|
70069
|
+
};
|
|
70070
|
+
}
|
|
69605
70071
|
}
|
|
69606
70072
|
};
|
|
69607
70073
|
},
|
|
@@ -69761,6 +70227,28 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
69761
70227
|
widthUnit: {
|
|
69762
70228
|
default: "px",
|
|
69763
70229
|
rendered: false
|
|
70230
|
+
},
|
|
70231
|
+
__placeholder: {
|
|
70232
|
+
default: null,
|
|
70233
|
+
parseDOM: (element) => {
|
|
70234
|
+
const value = element.getAttribute("data-placeholder");
|
|
70235
|
+
return value || null;
|
|
70236
|
+
},
|
|
70237
|
+
renderDOM({ __placeholder }) {
|
|
70238
|
+
if (!__placeholder) return {};
|
|
70239
|
+
return {
|
|
70240
|
+
"data-placeholder": __placeholder
|
|
70241
|
+
};
|
|
70242
|
+
}
|
|
70243
|
+
},
|
|
70244
|
+
/**
|
|
70245
|
+
* @category Attribute
|
|
70246
|
+
* @param {TableCellProperties} tableCellProperties - Properties for the table cell.
|
|
70247
|
+
* @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 463
|
|
70248
|
+
*/
|
|
70249
|
+
tableCellProperties: {
|
|
70250
|
+
default: null,
|
|
70251
|
+
rendered: false
|
|
69764
70252
|
}
|
|
69765
70253
|
};
|
|
69766
70254
|
},
|
|
@@ -95470,7 +95958,7 @@ ${style2}
|
|
|
95470
95958
|
}
|
|
95471
95959
|
};
|
|
95472
95960
|
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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";
|
|
95961
|
+
const BlankDOCX$1 = "data:application/octet-stream;base64,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";
|
|
95474
95962
|
const _hoisted_1$1$1 = { class: "super-editor-container" };
|
|
95475
95963
|
const _hoisted_2$a = {
|
|
95476
95964
|
key: 1,
|
|
@@ -95865,72 +96353,87 @@ ${style2}
|
|
|
95865
96353
|
"mc:AlternateContent": translator$1,
|
|
95866
96354
|
"sd:pageReference": translator$5,
|
|
95867
96355
|
"sd:tableOfContents": translator$4,
|
|
95868
|
-
"w:b": translator$
|
|
95869
|
-
"w:bidiVisual": translator$
|
|
96356
|
+
"w:b": translator$1n,
|
|
96357
|
+
"w:bidiVisual": translator$Y,
|
|
95870
96358
|
"w:bookmarkEnd": translator$6,
|
|
95871
96359
|
"w:bookmarkStart": translator$7,
|
|
95872
|
-
"w:bottom": translator$
|
|
95873
|
-
"w:br": translator$
|
|
95874
|
-
"w:cantSplit": translator$
|
|
95875
|
-
"w:cnfStyle": translator$
|
|
95876
|
-
"w:color": translator$
|
|
95877
|
-
"w:divId": translator$
|
|
96360
|
+
"w:bottom": translator$L,
|
|
96361
|
+
"w:br": translator$1r,
|
|
96362
|
+
"w:cantSplit": translator$1a,
|
|
96363
|
+
"w:cnfStyle": translator$19,
|
|
96364
|
+
"w:color": translator$1j,
|
|
96365
|
+
"w:divId": translator$18,
|
|
95878
96366
|
"w:drawing": translator$9,
|
|
95879
|
-
"w:end": translator$
|
|
95880
|
-
"w:gridAfter": translator$
|
|
95881
|
-
"w:gridBefore": translator$
|
|
95882
|
-
"w:gridCol": translator$
|
|
95883
|
-
"w:hidden": translator$
|
|
95884
|
-
"w:highlight": translator$
|
|
95885
|
-
"w:hyperlink": translator$
|
|
95886
|
-
"w:i": translator$
|
|
95887
|
-
"w:insideH": translator$
|
|
95888
|
-
"w:insideV": translator$
|
|
95889
|
-
"w:jc": translator$
|
|
95890
|
-
"w:left": translator$
|
|
95891
|
-
"w:p": translator$
|
|
95892
|
-
"w:r": translator$
|
|
95893
|
-
"w:rFonts": translator$
|
|
95894
|
-
"w:rPr": translator$
|
|
95895
|
-
"w:rStyle": translator$
|
|
95896
|
-
"w:right": translator$
|
|
96367
|
+
"w:end": translator$J,
|
|
96368
|
+
"w:gridAfter": translator$17,
|
|
96369
|
+
"w:gridBefore": translator$16,
|
|
96370
|
+
"w:gridCol": translator$u,
|
|
96371
|
+
"w:hidden": translator$15,
|
|
96372
|
+
"w:highlight": translator$1q,
|
|
96373
|
+
"w:hyperlink": translator$1c,
|
|
96374
|
+
"w:i": translator$1m,
|
|
96375
|
+
"w:insideH": translator$H,
|
|
96376
|
+
"w:insideV": translator$G,
|
|
96377
|
+
"w:jc": translator$14,
|
|
96378
|
+
"w:left": translator$F,
|
|
96379
|
+
"w:p": translator$1o,
|
|
96380
|
+
"w:r": translator$1b,
|
|
96381
|
+
"w:rFonts": translator$1i,
|
|
96382
|
+
"w:rPr": translator$1d,
|
|
96383
|
+
"w:rStyle": translator$1h,
|
|
96384
|
+
"w:right": translator$D,
|
|
95897
96385
|
"w:sdt": translator$8,
|
|
95898
|
-
"w:shd": translator$
|
|
95899
|
-
"w:start": translator$
|
|
95900
|
-
"w:strike": translator$
|
|
95901
|
-
"w:sz": translator$
|
|
95902
|
-
"w:szCs": translator$
|
|
95903
|
-
"w:tab": translator$
|
|
95904
|
-
"w:tbl": translator$
|
|
95905
|
-
"w:tblBorders": translator$
|
|
95906
|
-
"w:tblCaption": translator$
|
|
95907
|
-
"w:tblCellMar": translator$
|
|
95908
|
-
"w:tblCellSpacing": translator$
|
|
95909
|
-
"w:tblDescription": translator$
|
|
95910
|
-
"w:tblGrid": translator$
|
|
95911
|
-
"w:tblHeader": translator$
|
|
95912
|
-
"w:tblInd": translator$
|
|
95913
|
-
"w:tblLayout": translator$
|
|
95914
|
-
"w:tblLook": translator$
|
|
95915
|
-
"w:tblOverlap": translator$
|
|
95916
|
-
"w:tblPr": translator$
|
|
95917
|
-
"w:tblStyle": translator$
|
|
95918
|
-
"w:tblStyleColBandSize": translator$
|
|
95919
|
-
"w:tblStyleRowBandSize": translator$
|
|
95920
|
-
"w:tblW": translator$
|
|
95921
|
-
"w:tblpPr": translator$
|
|
96386
|
+
"w:shd": translator$X,
|
|
96387
|
+
"w:start": translator$B,
|
|
96388
|
+
"w:strike": translator$1k,
|
|
96389
|
+
"w:sz": translator$1g,
|
|
96390
|
+
"w:szCs": translator$1f,
|
|
96391
|
+
"w:tab": translator$1p,
|
|
96392
|
+
"w:tbl": translator$s,
|
|
96393
|
+
"w:tblBorders": translator$x,
|
|
96394
|
+
"w:tblCaption": translator$W,
|
|
96395
|
+
"w:tblCellMar": translator$w,
|
|
96396
|
+
"w:tblCellSpacing": translator$13,
|
|
96397
|
+
"w:tblDescription": translator$V,
|
|
96398
|
+
"w:tblGrid": translator$t,
|
|
96399
|
+
"w:tblHeader": translator$12,
|
|
96400
|
+
"w:tblInd": translator$U,
|
|
96401
|
+
"w:tblLayout": translator$T,
|
|
96402
|
+
"w:tblLook": translator$S,
|
|
96403
|
+
"w:tblOverlap": translator$R,
|
|
96404
|
+
"w:tblPr": translator$v,
|
|
96405
|
+
"w:tblStyle": translator$Q,
|
|
96406
|
+
"w:tblStyleColBandSize": translator$P,
|
|
96407
|
+
"w:tblStyleRowBandSize": translator$O,
|
|
96408
|
+
"w:tblW": translator$N,
|
|
96409
|
+
"w:tblpPr": translator$M,
|
|
95922
96410
|
"w:tc": translator$c,
|
|
95923
|
-
"w:top": translator$
|
|
95924
|
-
"w:tr": translator$
|
|
95925
|
-
"w:trHeight": translator$
|
|
95926
|
-
"w:trPr": translator$
|
|
95927
|
-
"w:u": translator$
|
|
95928
|
-
"w:wAfter": translator$
|
|
95929
|
-
"w:wBefore": translator
|
|
96411
|
+
"w:top": translator$z,
|
|
96412
|
+
"w:tr": translator$Z,
|
|
96413
|
+
"w:trHeight": translator$11,
|
|
96414
|
+
"w:trPr": translator$_,
|
|
96415
|
+
"w:u": translator$1l,
|
|
96416
|
+
"w:wAfter": translator$10,
|
|
96417
|
+
"w:wBefore": translator$$,
|
|
95930
96418
|
"wp:anchor": translator$b,
|
|
95931
96419
|
"wp:inline": translator$a,
|
|
95932
96420
|
"w:commentRangeStart": commentRangeStartTranslator,
|
|
95933
|
-
"w:commentRangeEnd": commentRangeEndTranslator
|
|
96421
|
+
"w:commentRangeEnd": commentRangeEndTranslator,
|
|
96422
|
+
"w:vMerge": translator$p,
|
|
96423
|
+
"w:gridSpan": translator$q,
|
|
96424
|
+
"w:vAlign": translator$h,
|
|
96425
|
+
"w:noWrap": translator$l,
|
|
96426
|
+
"w:tcFitText": translator$i,
|
|
96427
|
+
"w:tcW": translator$r,
|
|
96428
|
+
"w:hideMark": translator$g,
|
|
96429
|
+
"w:textDirection": translator$j,
|
|
96430
|
+
"w:tl2br": translator$o,
|
|
96431
|
+
"w:tr2bl": translator$n,
|
|
96432
|
+
"w:header": translator$f,
|
|
96433
|
+
"w:headers": translator$e,
|
|
96434
|
+
"w:tcBorders": translator$m,
|
|
96435
|
+
"w:tcMar": translator$k,
|
|
96436
|
+
"w:tcPr": translator$d
|
|
95934
96437
|
});
|
|
95935
96438
|
const baseHandlers = {
|
|
95936
96439
|
...runPropertyTranslators,
|
|
@@ -96277,7 +96780,7 @@ ${style2}
|
|
|
96277
96780
|
this.errors = [];
|
|
96278
96781
|
}
|
|
96279
96782
|
}
|
|
96280
|
-
const BlankDOCX = "data:application/octet-stream;base64,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";
|
|
96783
|
+
const BlankDOCX = "data:application/octet-stream;base64,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";
|
|
96281
96784
|
function getDefaultExportFromCjs(x) {
|
|
96282
96785
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
96283
96786
|
}
|
|
@@ -112477,6 +112980,9 @@ ${style2}
|
|
|
112477
112980
|
const onEditorListdefinitionsChange = (params2) => {
|
|
112478
112981
|
proxy.$superdoc.emit("list-definitions-change", params2);
|
|
112479
112982
|
};
|
|
112983
|
+
const onFontsResolved = (params2) => {
|
|
112984
|
+
proxy.$superdoc.emit("fonts-resolved", params2);
|
|
112985
|
+
};
|
|
112480
112986
|
const editorOptions = (doc2) => {
|
|
112481
112987
|
const options = {
|
|
112482
112988
|
isDebug: proxy.$superdoc.config.isDebug || false,
|
|
@@ -112509,6 +113015,7 @@ ${style2}
|
|
|
112509
113015
|
onCommentsUpdate: onEditorCommentsUpdate,
|
|
112510
113016
|
onCommentLocationsUpdate: onEditorCommentLocationsUpdate,
|
|
112511
113017
|
onListDefinitionsChange: onEditorListdefinitionsChange,
|
|
113018
|
+
onFontsResolved: proxy?.$superdoc?.config?.onFontsResolved ? onFontsResolved : null,
|
|
112512
113019
|
onTransaction: onEditorTransaction,
|
|
112513
113020
|
ydoc: doc2.ydoc,
|
|
112514
113021
|
collaborationProvider: doc2.provider || null,
|
|
@@ -112887,7 +113394,7 @@ ${style2}
|
|
|
112887
113394
|
};
|
|
112888
113395
|
}
|
|
112889
113396
|
};
|
|
112890
|
-
const App = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-
|
|
113397
|
+
const App = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-6de7ff3a"]]);
|
|
112891
113398
|
const createSuperdocVueApp = () => {
|
|
112892
113399
|
const app = createApp(App);
|
|
112893
113400
|
const pinia = createPinia();
|
|
@@ -112898,17 +113405,62 @@ ${style2}
|
|
|
112898
113405
|
const highContrastModeStore = useHighContrastMode();
|
|
112899
113406
|
return { app, pinia, superdocStore, commentsStore, highContrastModeStore };
|
|
112900
113407
|
};
|
|
112901
|
-
const
|
|
113408
|
+
const MIME_TYPES = {
|
|
113409
|
+
docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
113410
|
+
pdf: "application/pdf",
|
|
113411
|
+
zip: "application/zip",
|
|
113412
|
+
html: "text/html",
|
|
113413
|
+
txt: "text/plain;charset=utf-8",
|
|
113414
|
+
json: "application/json"
|
|
113415
|
+
};
|
|
113416
|
+
const getMimeType = (extension) => {
|
|
113417
|
+
if (!extension || typeof extension.toLowerCase !== "function") return "application/octet-stream";
|
|
113418
|
+
return MIME_TYPES[extension.toLowerCase()] || "application/octet-stream";
|
|
113419
|
+
};
|
|
113420
|
+
const ensureBlob = (data, extension) => {
|
|
113421
|
+
if (data instanceof Blob) return data;
|
|
113422
|
+
const mimeType = getMimeType(extension);
|
|
113423
|
+
if (data instanceof ArrayBuffer) {
|
|
113424
|
+
return new Blob([data], { type: mimeType });
|
|
113425
|
+
}
|
|
113426
|
+
if (ArrayBuffer.isView(data)) {
|
|
113427
|
+
const { buffer: buffer2, byteOffset, byteLength: byteLength2 } = data;
|
|
113428
|
+
const slice = buffer2.slice(byteOffset, byteOffset + byteLength2);
|
|
113429
|
+
return new Blob([slice], { type: mimeType });
|
|
113430
|
+
}
|
|
113431
|
+
if (typeof data === "string") {
|
|
113432
|
+
return new Blob([data], { type: mimeType });
|
|
113433
|
+
}
|
|
113434
|
+
if (data == null) {
|
|
113435
|
+
throw new TypeError("createDownload requires a Blob, ArrayBuffer, or ArrayBufferView.");
|
|
113436
|
+
}
|
|
113437
|
+
throw new TypeError(`Cannot create download from value of type ${typeof data}`);
|
|
113438
|
+
};
|
|
113439
|
+
const createDownload = (data, name, extension) => {
|
|
113440
|
+
const blob = ensureBlob(data, extension);
|
|
113441
|
+
if (typeof URL === "undefined" || typeof URL.createObjectURL !== "function") return blob;
|
|
113442
|
+
if (typeof document === "undefined" || typeof document.createElement !== "function") return blob;
|
|
112902
113443
|
const url = URL.createObjectURL(blob);
|
|
112903
113444
|
const a = document.createElement("a");
|
|
112904
113445
|
a.href = url;
|
|
112905
113446
|
a.download = `${name}.${extension}`;
|
|
113447
|
+
const shouldAppend = document.body && typeof document.body.appendChild === "function";
|
|
113448
|
+
if (shouldAppend) document.body.appendChild(a);
|
|
112906
113449
|
a.click();
|
|
113450
|
+
if (shouldAppend) document.body.removeChild(a);
|
|
113451
|
+
if (typeof URL.revokeObjectURL === "function") {
|
|
113452
|
+
setTimeout(() => URL.revokeObjectURL(url), 0);
|
|
113453
|
+
}
|
|
113454
|
+
return blob;
|
|
112907
113455
|
};
|
|
112908
113456
|
const cleanName = (currentName) => {
|
|
112909
|
-
|
|
113457
|
+
const lowerName = currentName.toLowerCase();
|
|
113458
|
+
if (lowerName.endsWith(".docx")) {
|
|
112910
113459
|
return currentName.slice(0, -5);
|
|
112911
113460
|
}
|
|
113461
|
+
if (lowerName.endsWith(".pdf")) {
|
|
113462
|
+
return currentName.slice(0, -4);
|
|
113463
|
+
}
|
|
112912
113464
|
return currentName;
|
|
112913
113465
|
};
|
|
112914
113466
|
class SuperDoc extends EventEmitter {
|
|
@@ -112968,6 +113520,7 @@ ${style2}
|
|
|
112968
113520
|
onException: () => null,
|
|
112969
113521
|
onListDefinitionsChange: () => null,
|
|
112970
113522
|
onTransaction: () => null,
|
|
113523
|
+
onFontsResolved: null,
|
|
112971
113524
|
// Image upload handler
|
|
112972
113525
|
// async (file) => url;
|
|
112973
113526
|
handleImageUpload: null,
|
|
@@ -113142,6 +113695,9 @@ ${style2}
|
|
|
113142
113695
|
this.on("content-error", this.onContentError);
|
|
113143
113696
|
this.on("exception", this.config.onException);
|
|
113144
113697
|
this.on("list-definitions-change", this.config.onListDefinitionsChange);
|
|
113698
|
+
if (this.config.onFontsResolved) {
|
|
113699
|
+
this.on("fonts-resolved", this.config.onFontsResolved);
|
|
113700
|
+
}
|
|
113145
113701
|
}
|
|
113146
113702
|
/**
|
|
113147
113703
|
* Initialize collaboration if configured
|
|
@@ -113522,14 +114078,25 @@ ${style2}
|
|
|
113522
114078
|
comments.push(...this.commentsStore.translateCommentsForExport());
|
|
113523
114079
|
}
|
|
113524
114080
|
}
|
|
113525
|
-
const docxPromises =
|
|
113526
|
-
|
|
113527
|
-
const editor = doc2.getEditor();
|
|
113528
|
-
|
|
113529
|
-
|
|
114081
|
+
const docxPromises = this.superdocStore.documents.map(async (doc2) => {
|
|
114082
|
+
if (!doc2 || doc2.type !== DOCX) return null;
|
|
114083
|
+
const editor = typeof doc2.getEditor === "function" ? doc2.getEditor() : null;
|
|
114084
|
+
const fallbackDocx = () => {
|
|
114085
|
+
if (!doc2.data) return null;
|
|
114086
|
+
if (doc2.data.type && doc2.data.type !== DOCX) return null;
|
|
114087
|
+
return doc2.data;
|
|
114088
|
+
};
|
|
114089
|
+
if (!editor) return fallbackDocx();
|
|
114090
|
+
try {
|
|
114091
|
+
const exported = await editor.exportDocx({ isFinalDoc, comments, commentsType, fieldsHighlightColor });
|
|
114092
|
+
if (exported) return exported;
|
|
114093
|
+
} catch (error) {
|
|
114094
|
+
this.emit("exception", { error, document: doc2 });
|
|
113530
114095
|
}
|
|
114096
|
+
return fallbackDocx();
|
|
113531
114097
|
});
|
|
113532
|
-
|
|
114098
|
+
const docxFiles = await Promise.all(docxPromises);
|
|
114099
|
+
return docxFiles.filter(Boolean);
|
|
113533
114100
|
}
|
|
113534
114101
|
/**
|
|
113535
114102
|
* Request an immediate save from all collaboration documents
|