@harbour-enterprises/superdoc 0.13.0-RC3 → 0.13.0-next.2
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/{eventemitter3-Dq2TEegt.es.js → eventemitter3-BrspJk8q.es.js} +1 -1
- package/dist/chunks/{eventemitter3-DuScojUH.cjs → eventemitter3-DfVviFzP.cjs} +1 -1
- package/dist/chunks/{index-DiSsZq2e.cjs → index-B4J7wgs6.cjs} +2 -2
- package/dist/chunks/{index-DRXYX6Gk.cjs → index-Cdsq63Xq.cjs} +4 -4
- package/dist/chunks/{index-CIbdIyV7.es.js → index-Diu6UKHt.es.js} +4 -4
- package/dist/chunks/{index-xoeJtm87.es.js → index-Hr3Um-Bg.es.js} +2 -2
- package/dist/chunks/{jszip-Bwu_om3F.cjs → jszip-BTAcmbVg.cjs} +1 -1
- package/dist/chunks/{jszip-BmWWPxfF.es.js → jszip-DckFs3A7.es.js} +1 -1
- package/dist/chunks/{super-editor.es-CzkFh6x_.cjs → super-editor.es-BB_X_LWr.cjs} +3771 -1630
- package/dist/chunks/{super-editor.es-BNfBtek_.es.js → super-editor.es-DL2IwegA.es.js} +3771 -1630
- package/dist/chunks/{url-DCj-FtDL.cjs → url-BIzg4y2i.cjs} +2 -2
- package/dist/chunks/{url-BYg6oUon.es.js → url-CHayXMZH.es.js} +2 -2
- package/dist/chunks/{vue-IIIZMHTg.es.js → vue-Bi1uWinj.es.js} +17 -11
- package/dist/chunks/{vue-DPZkajuO.cjs → vue-HIY1g7dm.cjs} +17 -11
- package/dist/chunks/{xml-js-DJKwJc1u.cjs → xml-js-BjqmFOSP.cjs} +102 -81
- package/dist/chunks/{xml-js-Dua_oPCO.es.js → xml-js-CfClL-1b.es.js} +102 -81
- package/dist/core/SuperDoc.d.ts +0 -6
- package/dist/core/SuperDoc.d.ts.map +1 -1
- package/dist/core/collaboration/collaboration.d.ts +0 -9
- package/dist/core/collaboration/collaboration.d.ts.map +1 -1
- package/dist/core/collaboration/helpers.d.ts.map +1 -1
- package/dist/style.css +246 -147
- package/dist/super-editor/ai-writer.es.js +2 -2
- package/dist/super-editor/chunks/{converter-BbSSdo_p.js → converter-DW8-tb6t.js} +577 -337
- package/dist/super-editor/chunks/{docx-zipper-8FbwdMJc.js → docx-zipper-D4HYgwV0.js} +1 -1
- package/dist/super-editor/chunks/{editor-CnYTUN7K.js → editor-C_lmahhU.js} +3590 -1911
- package/dist/super-editor/chunks/{toolbar-DtAngH6V.js → toolbar-DeqcMi3l.js} +130 -37
- package/dist/super-editor/components/pagination-helpers.d.ts.map +1 -1
- package/dist/super-editor/converter.es.js +1 -1
- package/dist/super-editor/core/Editor.d.ts +1 -8
- package/dist/super-editor/core/Editor.d.ts.map +1 -1
- package/dist/super-editor/core/InputRule.d.ts +7 -0
- package/dist/super-editor/core/InputRule.d.ts.map +1 -1
- package/dist/super-editor/core/commands/splitListItem.d.ts +1 -1
- package/dist/super-editor/core/commands/splitListItem.d.ts.map +1 -1
- package/dist/super-editor/core/helpers/annotator.d.ts +2 -0
- package/dist/super-editor/core/helpers/annotator.d.ts.map +1 -1
- package/dist/super-editor/core/helpers/findWordBounds.d.ts +5 -0
- package/dist/super-editor/core/helpers/findWordBounds.d.ts.map +1 -0
- package/dist/super-editor/core/helpers/setWordSelection.d.ts +2 -0
- package/dist/super-editor/core/helpers/setWordSelection.d.ts.map +1 -0
- package/dist/super-editor/core/inputRules/docx-paste/docx-paste.d.ts.map +1 -1
- package/dist/super-editor/core/super-converter/SuperConverter.d.ts +4 -1
- package/dist/super-editor/core/super-converter/SuperConverter.d.ts.map +1 -1
- package/dist/super-editor/core/super-converter/exporter.d.ts.map +1 -1
- package/dist/super-editor/core/super-converter/helpers.d.ts.map +1 -1
- package/dist/super-editor/core/super-converter/v2/importer/autoPageNumberImporter.d.ts.map +1 -1
- package/dist/super-editor/core/super-converter/v2/importer/listImporter.d.ts +5 -32
- package/dist/super-editor/core/super-converter/v2/importer/listImporter.d.ts.map +1 -1
- package/dist/super-editor/core/super-converter/v2/importer/paragraphNodeImporter.d.ts +3 -3
- package/dist/super-editor/core/super-converter/v2/importer/paragraphNodeImporter.d.ts.map +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/extensions/field-annotation/FieldAnnotationView.d.ts.map +1 -1
- package/dist/super-editor/extensions/field-annotation/field-annotation.d.ts.map +1 -1
- package/dist/super-editor/extensions/image/imageHelpers/imagePositionPlugin.d.ts.map +1 -1
- package/dist/super-editor/extensions/image/imageHelpers/index.d.ts +1 -0
- package/dist/super-editor/extensions/image/imageHelpers/processUploadedImage.d.ts.map +1 -1
- package/dist/super-editor/extensions/image/index.d.ts +1 -0
- package/dist/super-editor/extensions/index.d.ts +2 -1
- package/dist/super-editor/extensions/index.d.ts.map +1 -1
- package/dist/super-editor/extensions/line-height/line-height.d.ts.map +1 -1
- package/dist/super-editor/extensions/linked-styles/linked-styles.d.ts.map +1 -1
- package/dist/super-editor/extensions/list-item/list-item.d.ts.map +1 -1
- package/dist/super-editor/extensions/noderesizer/index.d.ts +2 -0
- package/dist/super-editor/extensions/noderesizer/index.d.ts.map +1 -0
- package/dist/super-editor/extensions/noderesizer/noderesizer.d.ts +7 -0
- package/dist/super-editor/extensions/noderesizer/noderesizer.d.ts.map +1 -0
- package/dist/super-editor/extensions/ordered-list/ordered-list.d.ts.map +1 -1
- package/dist/super-editor/extensions/page-number/page-number.d.ts +10 -0
- package/dist/super-editor/extensions/page-number/page-number.d.ts.map +1 -1
- package/dist/super-editor/extensions/pagination/pagination-helpers.d.ts +2 -1
- package/dist/super-editor/extensions/pagination/pagination-helpers.d.ts.map +1 -1
- package/dist/super-editor/extensions/pagination/pagination.d.ts.map +1 -1
- package/dist/super-editor/extensions/paragraph/paragraph.d.ts.map +1 -1
- package/dist/super-editor/file-zipper.es.js +1 -1
- package/dist/super-editor/style.css +219 -120
- package/dist/super-editor/super-editor.es.js +325 -200
- package/dist/super-editor/tests/e2e/test-app/vite.config.d.ts +1 -1
- package/dist/super-editor/tests/export/export-helpers/export-helpers.d.ts.map +1 -1
- package/dist/super-editor/toolbar.es.js +2 -2
- package/dist/super-editor.cjs +2 -2
- package/dist/super-editor.es.js +2 -2
- package/dist/superdoc.cjs +1590 -367
- package/dist/superdoc.es.js +1575 -368
- package/dist/superdoc.umd.js +5254 -1905
- package/dist/superdoc.umd.js.map +1 -1
- package/package.json +3 -2
- package/dist/super-editor/core/helpers/list-numbering-helpers.d.ts +0 -235
- package/dist/super-editor/core/helpers/list-numbering-helpers.d.ts.map +0 -1
- package/dist/super-editor/extensions/list-item/ListItemNodeView.d.ts +0 -56
- package/dist/super-editor/extensions/list-item/ListItemNodeView.d.ts.map +0 -1
- package/dist/super-editor/tests/e2e/test-app/dist/assets/index-BTMvkUyI.d.ts +0 -3
- package/dist/super-editor/tests/e2e/test-app/dist/assets/index-BTMvkUyI.d.ts.map +0 -1
- package/dist/super-editor/tests/editor/listItemHelpers.test.d.ts +0 -2
- package/dist/super-editor/tests/editor/listItemHelpers.test.d.ts.map +0 -1
|
@@ -12438,7 +12438,7 @@ const OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;
|
|
|
12438
12438
|
function wsOptionsFor(type2, preserveWhitespace, base) {
|
|
12439
12439
|
if (preserveWhitespace != null)
|
|
12440
12440
|
return (preserveWhitespace ? OPT_PRESERVE_WS : 0) | (preserveWhitespace === "full" ? OPT_PRESERVE_WS_FULL : 0);
|
|
12441
|
-
return type2 && type2.whitespace == "pre" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base &
|
|
12441
|
+
return type2 && type2.whitespace == "pre" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;
|
|
12442
12442
|
}
|
|
12443
12443
|
class NodeContext {
|
|
12444
12444
|
constructor(type2, attrs, marks, solid, match, options2) {
|
|
@@ -15409,7 +15409,7 @@ class Transaction extends Transform {
|
|
|
15409
15409
|
throw new RangeError("Selection passed to setSelection must point at the current document");
|
|
15410
15410
|
this.curSelection = selection;
|
|
15411
15411
|
this.curSelectionFor = this.steps.length;
|
|
15412
|
-
this.updated = (this.updated | UPDATED_SEL) &
|
|
15412
|
+
this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;
|
|
15413
15413
|
this.storedMarks = null;
|
|
15414
15414
|
return this;
|
|
15415
15415
|
}
|
|
@@ -15460,7 +15460,7 @@ class Transaction extends Transform {
|
|
|
15460
15460
|
*/
|
|
15461
15461
|
addStep(step, doc2) {
|
|
15462
15462
|
super.addStep(step, doc2);
|
|
15463
|
-
this.updated = this.updated &
|
|
15463
|
+
this.updated = this.updated & ~UPDATED_MARKS;
|
|
15464
15464
|
this.storedMarks = null;
|
|
15465
15465
|
}
|
|
15466
15466
|
/**
|
|
@@ -16076,7 +16076,6 @@ const getLineHeightValueString = (lineHeight, defaultUnit, lineRule = "", isObje
|
|
|
16076
16076
|
if (Number.isNaN(value) || value === 0) return {};
|
|
16077
16077
|
if (lineRule === "atLeast" && value < 1) return {};
|
|
16078
16078
|
unit = unit ? unit : defaultUnit;
|
|
16079
|
-
value += unit ? 4 : 0.2;
|
|
16080
16079
|
return isObject ? { ["line-height"]: `${value}${unit}` } : `line-height: ${value}${unit}`;
|
|
16081
16080
|
};
|
|
16082
16081
|
const deobfuscateFont = (arrayBuffer, guidHex) => {
|
|
@@ -17341,6 +17340,16 @@ const carbonCopy = (obj) => {
|
|
|
17341
17340
|
return void 0;
|
|
17342
17341
|
}
|
|
17343
17342
|
};
|
|
17343
|
+
const baseOrderedListDef = {
|
|
17344
|
+
"attributes": {
|
|
17345
|
+
"w:abstractNumId": "1"
|
|
17346
|
+
}
|
|
17347
|
+
};
|
|
17348
|
+
const baseBulletList = {
|
|
17349
|
+
"attributes": {
|
|
17350
|
+
"w:abstractNumId": "0"
|
|
17351
|
+
}
|
|
17352
|
+
};
|
|
17344
17353
|
const baseNumbering = {
|
|
17345
17354
|
"declaration": {
|
|
17346
17355
|
"attributes": {
|
|
@@ -18855,7 +18864,9 @@ function exportSchemaToJson(params) {
|
|
|
18855
18864
|
shapeContainer: translateShapeContainer,
|
|
18856
18865
|
shapeTextbox: translateShapeTextbox,
|
|
18857
18866
|
contentBlock: translateContentBlock,
|
|
18858
|
-
structuredContent: translateStructuredContent
|
|
18867
|
+
structuredContent: translateStructuredContent,
|
|
18868
|
+
"page-number": translatePageNumberNode,
|
|
18869
|
+
"total-page-number": translateTotalPageNumberNode
|
|
18859
18870
|
};
|
|
18860
18871
|
if (!router[type2]) {
|
|
18861
18872
|
console.error("No translation function found for node type:", type2);
|
|
@@ -18959,7 +18970,7 @@ function generateParagraphProperties(node2) {
|
|
|
18959
18970
|
};
|
|
18960
18971
|
pPrElements.push(spacingElement);
|
|
18961
18972
|
}
|
|
18962
|
-
if (indent
|
|
18973
|
+
if (indent) {
|
|
18963
18974
|
const { left, right, firstLine, hanging } = indent;
|
|
18964
18975
|
const attributes = {};
|
|
18965
18976
|
if (left || left === 0) attributes["w:left"] = pixelsToTwips(left);
|
|
@@ -18974,7 +18985,7 @@ function generateParagraphProperties(node2) {
|
|
|
18974
18985
|
attributes
|
|
18975
18986
|
};
|
|
18976
18987
|
pPrElements.push(indentElement);
|
|
18977
|
-
} else if (textIndent
|
|
18988
|
+
} else if (textIndent) {
|
|
18978
18989
|
const indentElement = {
|
|
18979
18990
|
name: "w:ind",
|
|
18980
18991
|
attributes: {
|
|
@@ -19023,9 +19034,6 @@ function generateParagraphProperties(node2) {
|
|
|
19023
19034
|
if (sectPr) {
|
|
19024
19035
|
pPrElements.push(sectPr);
|
|
19025
19036
|
}
|
|
19026
|
-
const numPr = node2.attrs?.paragraphProperties?.elements?.find((n) => n.name === "w:numPr");
|
|
19027
|
-
const hasNumPr = pPrElements.some((n) => n.name === "w:numPr");
|
|
19028
|
-
if (numPr && !hasNumPr) pPrElements.push(numPr);
|
|
19029
19037
|
if (!pPrElements.length) return null;
|
|
19030
19038
|
return {
|
|
19031
19039
|
name: "w:pPr",
|
|
@@ -19274,68 +19282,160 @@ function addNewImageRelationship(params, imagePath) {
|
|
|
19274
19282
|
return newId;
|
|
19275
19283
|
}
|
|
19276
19284
|
function translateList(params) {
|
|
19277
|
-
const {
|
|
19278
|
-
const
|
|
19279
|
-
|
|
19280
|
-
|
|
19281
|
-
|
|
19282
|
-
|
|
19283
|
-
|
|
19284
|
-
|
|
19285
|
-
|
|
19286
|
-
|
|
19287
|
-
|
|
19288
|
-
|
|
19289
|
-
|
|
19290
|
-
|
|
19291
|
-
|
|
19292
|
-
|
|
19293
|
-
|
|
19294
|
-
|
|
19295
|
-
|
|
19296
|
-
|
|
19297
|
-
|
|
19298
|
-
|
|
19299
|
-
|
|
19300
|
-
|
|
19301
|
-
|
|
19302
|
-
|
|
19303
|
-
|
|
19304
|
-
|
|
19305
|
-
|
|
19306
|
-
|
|
19307
|
-
|
|
19308
|
-
|
|
19309
|
-
|
|
19310
|
-
|
|
19311
|
-
|
|
19312
|
-
|
|
19313
|
-
|
|
19314
|
-
|
|
19315
|
-
|
|
19316
|
-
|
|
19285
|
+
const { type: type2 } = params.node;
|
|
19286
|
+
const flatContent = flattenContent(params);
|
|
19287
|
+
const listNodes = [];
|
|
19288
|
+
flatContent.forEach((listNode) => {
|
|
19289
|
+
const { level, listType, pPrs: additionalPprs, content, attrs = {} } = listNode;
|
|
19290
|
+
const attrsNumId = listNode.attrs.numId;
|
|
19291
|
+
const actualNumId = attrsNumId || listNode.listId;
|
|
19292
|
+
const listId = actualNumId ?? generateNewListDefinition(params, listType);
|
|
19293
|
+
const pPr = getListParagraphProperties(level, listId, additionalPprs);
|
|
19294
|
+
content.forEach((contentNode, index) => {
|
|
19295
|
+
const paragraphNode = Object.assign({}, contentNode);
|
|
19296
|
+
paragraphNode.attrs = {
|
|
19297
|
+
...paragraphNode.attrs,
|
|
19298
|
+
...listNode.attrs
|
|
19299
|
+
};
|
|
19300
|
+
const outputNode = exportSchemaToJson({ ...params, node: paragraphNode });
|
|
19301
|
+
if (!outputNode.elements) {
|
|
19302
|
+
outputNode.elements = [];
|
|
19303
|
+
}
|
|
19304
|
+
if (Array.isArray(outputNode)) {
|
|
19305
|
+
const mapped = [];
|
|
19306
|
+
outputNode.forEach((el, index2) => {
|
|
19307
|
+
el.elements.forEach((element) => {
|
|
19308
|
+
if (element.name === "w:pPr") return;
|
|
19309
|
+
mapped.push(element);
|
|
19310
|
+
});
|
|
19311
|
+
if (index2 < outputNode.length - 1) mapped.push({ name: "w:br", type: "element" });
|
|
19312
|
+
});
|
|
19313
|
+
mapped.unshift(carbonCopy(pPr));
|
|
19314
|
+
return listNodes.push({ name: "w:p", elements: mapped });
|
|
19315
|
+
}
|
|
19316
|
+
const propsElementIndex = outputNode.elements.findIndex((e) => e.name === "w:pPr");
|
|
19317
|
+
const content2 = outputNode.elements.filter((e) => e.name !== "w:pPr");
|
|
19318
|
+
if (!content2.length && !Array.isArray(outputNode)) {
|
|
19319
|
+
const elements = contentNode.attrs.paragraphProperties ? [contentNode.attrs.paragraphProperties] : [];
|
|
19320
|
+
const spacer = {
|
|
19321
|
+
name: "w:p",
|
|
19322
|
+
type: "element",
|
|
19323
|
+
elements
|
|
19324
|
+
};
|
|
19325
|
+
return listNodes.push(spacer);
|
|
19326
|
+
}
|
|
19327
|
+
outputNode.elements = outputNode.elements.map((el, index2) => {
|
|
19328
|
+
if (el.name === "w:sdt") {
|
|
19329
|
+
const contentIndex = el.elements.findIndex((e) => e.name === "w:sdtContent");
|
|
19330
|
+
const content3 = el.elements[contentIndex];
|
|
19331
|
+
const innerContent = content3.elements[0];
|
|
19332
|
+
if (innerContent.name === "w:p") {
|
|
19333
|
+
content3.elements = innerContent.elements;
|
|
19334
|
+
}
|
|
19335
|
+
return {
|
|
19336
|
+
name: "w:r",
|
|
19337
|
+
type: "element",
|
|
19338
|
+
elements: [el]
|
|
19339
|
+
};
|
|
19340
|
+
} else {
|
|
19341
|
+
return el;
|
|
19342
|
+
}
|
|
19343
|
+
});
|
|
19344
|
+
const { attributes: generalAttributes } = attrs;
|
|
19345
|
+
const { originalInlineRunProps } = generalAttributes || {};
|
|
19346
|
+
if (originalInlineRunProps) pPr.elements.push(originalInlineRunProps);
|
|
19347
|
+
if (propsElementIndex === -1) {
|
|
19348
|
+
outputNode.elements.unshift(carbonCopy(pPr));
|
|
19349
|
+
} else {
|
|
19350
|
+
const resultProps = carbonCopy(pPr).elements.map((item) => {
|
|
19351
|
+
const isChanged = outputNode.elements[propsElementIndex].elements.find((e) => e.name === item.name);
|
|
19352
|
+
return isChanged ? isChanged : item;
|
|
19353
|
+
});
|
|
19354
|
+
outputNode.elements[propsElementIndex].elements = resultProps;
|
|
19355
|
+
}
|
|
19356
|
+
let importedFontSize;
|
|
19357
|
+
if (listNode.attrs?.importedFontSize) {
|
|
19358
|
+
const fontNoUnit = parseInt(listNode.attrs.importedFontSize.split("pt")[0]);
|
|
19359
|
+
importedFontSize = {
|
|
19360
|
+
name: "w:sz",
|
|
19361
|
+
attributes: { "w:val": fontNoUnit * 2 }
|
|
19362
|
+
};
|
|
19363
|
+
}
|
|
19364
|
+
let importedFontFamily;
|
|
19365
|
+
if (listNode.attrs?.importedFontFamily) {
|
|
19366
|
+
importedFontFamily = {
|
|
19367
|
+
name: "w:rFonts",
|
|
19368
|
+
attributes: { "w:ascii": listNode.attrs?.importedFontFamily, "w:hAnsi": listNode.attrs?.importedFontFamily }
|
|
19369
|
+
};
|
|
19370
|
+
}
|
|
19371
|
+
const rPrElement = outputNode.elements.find((e) => e.name === "w:rPr");
|
|
19372
|
+
if (rPrElement) {
|
|
19373
|
+
rPrElement.elements.push(fontSize);
|
|
19374
|
+
} else if (importedFontSize || importedFontFamily) {
|
|
19375
|
+
const elements = [];
|
|
19376
|
+
if (importedFontSize) elements.push(importedFontSize);
|
|
19377
|
+
if (importedFontFamily) elements.push(importedFontFamily);
|
|
19378
|
+
outputNode.elements.unshift({ name: "w:rPr", elements });
|
|
19379
|
+
}
|
|
19380
|
+
if (index !== 0) {
|
|
19381
|
+
const currentpPr = outputNode.elements.find((e) => e.name === "w:pPr");
|
|
19382
|
+
const numPrIndex = currentpPr.elements.findIndex((e) => e.name === "w:numPr");
|
|
19383
|
+
if (numPrIndex !== -1) currentpPr.elements.splice(numPrIndex, 1);
|
|
19384
|
+
}
|
|
19385
|
+
listNodes.push(outputNode);
|
|
19386
|
+
});
|
|
19387
|
+
});
|
|
19388
|
+
return listNodes;
|
|
19389
|
+
}
|
|
19390
|
+
function generateNewListDefinition(params, listType) {
|
|
19391
|
+
const nextNumbering = getLargestListDefinitionIndex(params.converter?.numbering?.definitions);
|
|
19392
|
+
const definition = listType === "bullet" ? baseBulletList : baseOrderedListDef;
|
|
19393
|
+
const listId = nextNumbering;
|
|
19394
|
+
const abstractId = definition.attributes["w:abstractNumId"];
|
|
19395
|
+
const newNumDef = {
|
|
19317
19396
|
type: "element",
|
|
19318
|
-
|
|
19397
|
+
name: "w:num",
|
|
19398
|
+
attributes: {
|
|
19399
|
+
"w:numId": String(listId),
|
|
19400
|
+
"w16cid:durableId": "485517411"
|
|
19401
|
+
},
|
|
19402
|
+
elements: [
|
|
19403
|
+
{ name: "w:abstractNumId", attributes: { "w:val": String(abstractId) } }
|
|
19404
|
+
]
|
|
19319
19405
|
};
|
|
19406
|
+
params.converter.numbering.definitions[listId] = newNumDef;
|
|
19407
|
+
return listId;
|
|
19408
|
+
}
|
|
19409
|
+
const getLargestListDefinitionIndex = (definitions) => {
|
|
19410
|
+
if (!definitions || !Object.keys(definitions).length) return 0;
|
|
19411
|
+
const maxKey = Math.max(...Object.keys(definitions).map((key) => parseInt(key, 10)));
|
|
19412
|
+
return maxKey + 1;
|
|
19320
19413
|
};
|
|
19321
|
-
|
|
19414
|
+
function getListParagraphProperties(level, numId, additionalPprs = []) {
|
|
19322
19415
|
return {
|
|
19323
|
-
name: "w:
|
|
19416
|
+
name: "w:pPr",
|
|
19324
19417
|
type: "element",
|
|
19325
19418
|
elements: [
|
|
19326
19419
|
{
|
|
19327
|
-
name: "w:
|
|
19420
|
+
name: "w:numPr",
|
|
19328
19421
|
type: "element",
|
|
19329
|
-
|
|
19422
|
+
elements: [
|
|
19423
|
+
{
|
|
19424
|
+
name: "w:ilvl",
|
|
19425
|
+
type: "element",
|
|
19426
|
+
attributes: { "w:val": level }
|
|
19427
|
+
},
|
|
19428
|
+
{
|
|
19429
|
+
name: "w:numId",
|
|
19430
|
+
type: "element",
|
|
19431
|
+
attributes: { "w:val": numId }
|
|
19432
|
+
}
|
|
19433
|
+
]
|
|
19330
19434
|
},
|
|
19331
|
-
|
|
19332
|
-
name: "w:ilvl",
|
|
19333
|
-
type: "element",
|
|
19334
|
-
attributes: { "w:val": level }
|
|
19335
|
-
}
|
|
19435
|
+
...additionalPprs
|
|
19336
19436
|
]
|
|
19337
19437
|
};
|
|
19338
|
-
}
|
|
19438
|
+
}
|
|
19339
19439
|
function flattenContent({ node: node2 }) {
|
|
19340
19440
|
const { content, attrs = {} } = node2;
|
|
19341
19441
|
const { listId, syncId } = node2.attrs || {};
|
|
@@ -19406,7 +19506,10 @@ function preProcessVerticalMergeCells(table, { editorSchema }) {
|
|
|
19406
19506
|
if (!row.content) continue;
|
|
19407
19507
|
for (let cellIndex = 0; cellIndex < row.content?.length; cellIndex++) {
|
|
19408
19508
|
const cell = row.content[cellIndex];
|
|
19409
|
-
if (!cell)
|
|
19509
|
+
if (!cell) {
|
|
19510
|
+
console.log("no cell");
|
|
19511
|
+
continue;
|
|
19512
|
+
}
|
|
19410
19513
|
const { attrs } = cell;
|
|
19411
19514
|
if (attrs.rowspan > 1) {
|
|
19412
19515
|
const rowsToChange = content.slice(rowIndex + 1, rowIndex + attrs.rowspan);
|
|
@@ -20141,7 +20244,7 @@ function getTranslationByAnnotationType(annotationType) {
|
|
|
20141
20244
|
const translateFieldAttrsToMarks = (attrs = {}) => {
|
|
20142
20245
|
const {
|
|
20143
20246
|
fontFamily,
|
|
20144
|
-
fontSize,
|
|
20247
|
+
fontSize: fontSize2,
|
|
20145
20248
|
bold,
|
|
20146
20249
|
underline,
|
|
20147
20250
|
italic,
|
|
@@ -20150,7 +20253,7 @@ const translateFieldAttrsToMarks = (attrs = {}) => {
|
|
|
20150
20253
|
} = attrs;
|
|
20151
20254
|
const marks = [];
|
|
20152
20255
|
if (fontFamily) marks.push({ type: "fontFamily", attrs: { fontFamily } });
|
|
20153
|
-
if (
|
|
20256
|
+
if (fontSize2) marks.push({ type: "fontSize", attrs: { fontSize: fontSize2 } });
|
|
20154
20257
|
if (bold) marks.push({ type: "bold", attrs: {} });
|
|
20155
20258
|
if (underline) marks.push({ type: "underline", attrs: {} });
|
|
20156
20259
|
if (italic) marks.push({ type: "italic", attrs: {} });
|
|
@@ -20371,24 +20474,26 @@ generateXml_fn = function(node2, debug = false) {
|
|
|
20371
20474
|
if (!name && node2.type === "text") {
|
|
20372
20475
|
return node2.text;
|
|
20373
20476
|
}
|
|
20374
|
-
if (
|
|
20375
|
-
|
|
20376
|
-
|
|
20377
|
-
|
|
20378
|
-
|
|
20379
|
-
|
|
20380
|
-
|
|
20381
|
-
|
|
20382
|
-
|
|
20383
|
-
|
|
20384
|
-
|
|
20385
|
-
|
|
20386
|
-
|
|
20477
|
+
if (elements) {
|
|
20478
|
+
if (name === "w:instrText") {
|
|
20479
|
+
tags.push(elements[0].text);
|
|
20480
|
+
} else if (name === "w:t" || name === "w:delText" || name === "wp:posOffset") {
|
|
20481
|
+
const text = __privateMethod(this, _DocxExporter_instances, replaceSpecialCharacters_fn).call(this, elements[0].text);
|
|
20482
|
+
tags.push(text);
|
|
20483
|
+
} else {
|
|
20484
|
+
if (elements) {
|
|
20485
|
+
for (let child of elements) {
|
|
20486
|
+
const newElements = __privateMethod(this, _DocxExporter_instances, generateXml_fn).call(this, child);
|
|
20487
|
+
if (!newElements) continue;
|
|
20488
|
+
if (typeof newElements === "string") {
|
|
20489
|
+
tags.push(newElements);
|
|
20490
|
+
continue;
|
|
20491
|
+
}
|
|
20492
|
+
const removeUndefined = newElements.filter((el) => {
|
|
20493
|
+
return el !== "<undefined>" && el !== "</undefined>";
|
|
20494
|
+
});
|
|
20495
|
+
tags.push(...removeUndefined);
|
|
20387
20496
|
}
|
|
20388
|
-
const removeUndefined = newElements.filter((el) => {
|
|
20389
|
-
return el !== "<undefined>" && el !== "</undefined>";
|
|
20390
|
-
});
|
|
20391
|
-
tags.push(...removeUndefined);
|
|
20392
20497
|
}
|
|
20393
20498
|
}
|
|
20394
20499
|
}
|
|
@@ -20410,7 +20515,7 @@ function applyMarksToHtmlAnnotation(state2, marks) {
|
|
|
20410
20515
|
return state2;
|
|
20411
20516
|
}
|
|
20412
20517
|
const fontFamily = marks.find((m) => m.type === "fontFamily");
|
|
20413
|
-
const
|
|
20518
|
+
const fontSize2 = marks.find((m) => m.type === "fontSize");
|
|
20414
20519
|
const highlight = marks.find((m) => m.type === "highlight");
|
|
20415
20520
|
const textStyleType = schema.marks.textStyle;
|
|
20416
20521
|
const highlightType = schema.marks.highlight;
|
|
@@ -20421,17 +20526,17 @@ function applyMarksToHtmlAnnotation(state2, marks) {
|
|
|
20421
20526
|
if (!foundTextStyle) {
|
|
20422
20527
|
tr.addMark(pos, pos + node2.nodeSize, textStyleType.create({
|
|
20423
20528
|
...fontFamily?.attrs,
|
|
20424
|
-
...
|
|
20529
|
+
...fontSize2?.attrs
|
|
20425
20530
|
}));
|
|
20426
20531
|
} else if (!foundTextStyle?.attrs.fontFamily && fontFamily) {
|
|
20427
20532
|
tr.addMark(pos, pos + node2.nodeSize, textStyleType.create({
|
|
20428
20533
|
...foundTextStyle?.attrs,
|
|
20429
20534
|
...fontFamily.attrs
|
|
20430
20535
|
}));
|
|
20431
|
-
} else if (!foundTextStyle?.attrs.fontSize &&
|
|
20536
|
+
} else if (!foundTextStyle?.attrs.fontSize && fontSize2) {
|
|
20432
20537
|
tr.addMark(pos, pos + node2.nodeSize, textStyleType.create({
|
|
20433
20538
|
...foundTextStyle?.attrs,
|
|
20434
|
-
...
|
|
20539
|
+
...fontSize2.attrs
|
|
20435
20540
|
}));
|
|
20436
20541
|
}
|
|
20437
20542
|
if (!foundHighlight) {
|
|
@@ -20458,6 +20563,81 @@ function translateStructuredContent(params) {
|
|
|
20458
20563
|
elements: nodeElements
|
|
20459
20564
|
};
|
|
20460
20565
|
}
|
|
20566
|
+
const translatePageNumberNode = (params) => {
|
|
20567
|
+
const outputMarks = processOutputMarks(params.node.attrs?.marksAsAttrs || []);
|
|
20568
|
+
return getAutoPageJson("PAGE", outputMarks);
|
|
20569
|
+
};
|
|
20570
|
+
const translateTotalPageNumberNode = (params) => {
|
|
20571
|
+
const outputMarks = processOutputMarks(params.node.attrs?.marksAsAttrs || []);
|
|
20572
|
+
return getAutoPageJson("NUMPAGES", outputMarks);
|
|
20573
|
+
};
|
|
20574
|
+
const getAutoPageJson = (type2, outputMarks = []) => {
|
|
20575
|
+
return [
|
|
20576
|
+
{
|
|
20577
|
+
"name": "w:r",
|
|
20578
|
+
"elements": [
|
|
20579
|
+
{
|
|
20580
|
+
"name": "w:rPr",
|
|
20581
|
+
"elements": outputMarks
|
|
20582
|
+
},
|
|
20583
|
+
{
|
|
20584
|
+
"name": "w:fldChar",
|
|
20585
|
+
"attributes": {
|
|
20586
|
+
"w:fldCharType": "begin"
|
|
20587
|
+
}
|
|
20588
|
+
}
|
|
20589
|
+
]
|
|
20590
|
+
},
|
|
20591
|
+
{
|
|
20592
|
+
"name": "w:r",
|
|
20593
|
+
"elements": [
|
|
20594
|
+
{
|
|
20595
|
+
"name": "w:rPr",
|
|
20596
|
+
"elements": outputMarks
|
|
20597
|
+
},
|
|
20598
|
+
{
|
|
20599
|
+
"name": "w:instrText",
|
|
20600
|
+
"elements": [
|
|
20601
|
+
{
|
|
20602
|
+
"type": "text",
|
|
20603
|
+
"text": ` ${type2}`
|
|
20604
|
+
}
|
|
20605
|
+
]
|
|
20606
|
+
}
|
|
20607
|
+
]
|
|
20608
|
+
},
|
|
20609
|
+
{
|
|
20610
|
+
"name": "w:r",
|
|
20611
|
+
"elements": [
|
|
20612
|
+
{
|
|
20613
|
+
"name": "w:rPr",
|
|
20614
|
+
"elements": outputMarks
|
|
20615
|
+
},
|
|
20616
|
+
{
|
|
20617
|
+
"name": "w:fldChar",
|
|
20618
|
+
"attributes": {
|
|
20619
|
+
"w:fldCharType": "separate"
|
|
20620
|
+
}
|
|
20621
|
+
}
|
|
20622
|
+
]
|
|
20623
|
+
},
|
|
20624
|
+
{
|
|
20625
|
+
"name": "w:r",
|
|
20626
|
+
"elements": [
|
|
20627
|
+
{
|
|
20628
|
+
"name": "w:rPr",
|
|
20629
|
+
"elements": outputMarks
|
|
20630
|
+
},
|
|
20631
|
+
{
|
|
20632
|
+
"name": "w:fldChar",
|
|
20633
|
+
"attributes": {
|
|
20634
|
+
"w:fldCharType": "end"
|
|
20635
|
+
}
|
|
20636
|
+
}
|
|
20637
|
+
]
|
|
20638
|
+
}
|
|
20639
|
+
];
|
|
20640
|
+
};
|
|
20461
20641
|
const defaultInitialXml = `<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:oel="http://schemas.microsoft.com/office/2019/extlst" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16sdtdh="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex w16sdtdh wp14"><w:body></w:body></w:document>`;
|
|
20462
20642
|
const parseXmlToJson = (xml) => {
|
|
20463
20643
|
return JSON.parse(xmljs.xml2json(xml, null, 2));
|
|
@@ -20555,7 +20735,7 @@ function handleTableCellNode(node2, row, table, rowBorders, columnWidth = null,
|
|
|
20555
20735
|
const attributes = {};
|
|
20556
20736
|
const referencedStyles = getReferencedTableStyles(styleTag, docx) || {};
|
|
20557
20737
|
attributes.cellMargins = getTableCellMargins(marginTag, referencedStyles);
|
|
20558
|
-
const { fontSize, fonts = {} } = referencedStyles;
|
|
20738
|
+
const { fontSize: fontSize2, fonts = {} } = referencedStyles;
|
|
20559
20739
|
const fontFamily = fonts["ascii"];
|
|
20560
20740
|
if (width) {
|
|
20561
20741
|
attributes["colwidth"] = [width];
|
|
@@ -20583,7 +20763,7 @@ function handleTableCellNode(node2, row, table, rowBorders, columnWidth = null,
|
|
|
20583
20763
|
if (colspan) attributes["colspan"] = parseInt(colspan, 10);
|
|
20584
20764
|
if (background) attributes["background"] = background;
|
|
20585
20765
|
attributes["verticalAlign"] = verticalAlign;
|
|
20586
|
-
if (
|
|
20766
|
+
if (fontSize2) attributes["fontSize"] = fontSize2;
|
|
20587
20767
|
if (fontFamily) attributes["fontFamily"] = fontFamily["ascii"];
|
|
20588
20768
|
if (rowBorders) attributes["borders"] = { ...rowBorders };
|
|
20589
20769
|
if (inlineBorders) attributes["borders"] = Object.assign(attributes["borders"] || {}, inlineBorders);
|
|
@@ -20681,8 +20861,8 @@ function getReferencedTableStyles(tblStyleTag, docx, nodeListHandler2) {
|
|
|
20681
20861
|
const { "w:ascii": ascii, "w:hAnsi": hAnsi, "w:cs": cs } = fonts.attributes;
|
|
20682
20862
|
stylesToReturn.fonts = { ascii, hAnsi, cs };
|
|
20683
20863
|
}
|
|
20684
|
-
const
|
|
20685
|
-
if (
|
|
20864
|
+
const fontSize2 = rPr.elements.find((el) => el.name === "w:sz");
|
|
20865
|
+
if (fontSize2?.attributes) stylesToReturn.fontSize = halfPointToPoints(fontSize2.attributes["w:val"]) + "pt";
|
|
20686
20866
|
}
|
|
20687
20867
|
const tblPr = styleTag.elements.find((el) => el.name === "w:tblPr");
|
|
20688
20868
|
if (tblPr && tblPr.elements) {
|
|
@@ -21135,6 +21315,11 @@ function getElementName(element) {
|
|
|
21135
21315
|
const isPropertiesElement = (element) => {
|
|
21136
21316
|
return !!SuperConverter.propertyTypes[element.name || element.type];
|
|
21137
21317
|
};
|
|
21318
|
+
function hasTextNode(elements) {
|
|
21319
|
+
const runs = elements.filter((el) => el.name === "w:r");
|
|
21320
|
+
const runsHaveText = runs.some((run) => run.elements.some((el) => el.name === "w:t"));
|
|
21321
|
+
return runsHaveText;
|
|
21322
|
+
}
|
|
21138
21323
|
const handleTrackChangeNode = (params) => {
|
|
21139
21324
|
const { nodes, nodeListHandler: nodeListHandler2 } = params;
|
|
21140
21325
|
if (nodes.length === 0 || !(nodes[0].name === "w:del" || nodes[0].name === "w:ins" || nodes[0].name === "w:sdt")) {
|
|
@@ -21336,118 +21521,221 @@ const areAttrsEqual = (attrsA = {}, attrsB = {}) => {
|
|
|
21336
21521
|
};
|
|
21337
21522
|
const handleListNode = (params) => {
|
|
21338
21523
|
const { nodes, lists, docx } = params;
|
|
21339
|
-
if (nodes.length === 0 || nodes[0].name !== "w:p"
|
|
21524
|
+
if (nodes.length === 0 || nodes[0].name !== "w:p") {
|
|
21340
21525
|
return { nodes: [], consumed: 0 };
|
|
21341
21526
|
}
|
|
21342
21527
|
const node2 = carbonCopy(nodes[0]);
|
|
21343
|
-
const
|
|
21344
|
-
|
|
21345
|
-
|
|
21346
|
-
|
|
21528
|
+
const processedElements = preProcessNodesForFldChar(node2.elements);
|
|
21529
|
+
node2.elements = processedElements;
|
|
21530
|
+
const originalPpr = node2.elements.find((el) => el.name === "w:pPr");
|
|
21531
|
+
if (testForList(node2, docx)) {
|
|
21532
|
+
const siblings = carbonCopy(nodes);
|
|
21533
|
+
const listItems = [];
|
|
21534
|
+
let possibleList = siblings.shift();
|
|
21535
|
+
while (possibleList && testForList(possibleList, docx)) {
|
|
21536
|
+
listItems.push(possibleList);
|
|
21537
|
+
possibleList = siblings.shift();
|
|
21538
|
+
if (possibleList?.elements && !hasTextNode(possibleList.elements)) {
|
|
21539
|
+
const { name } = possibleList;
|
|
21540
|
+
if (name === "w:tbl") continue;
|
|
21541
|
+
listItems.push(possibleList);
|
|
21542
|
+
possibleList = siblings.shift();
|
|
21543
|
+
}
|
|
21544
|
+
}
|
|
21545
|
+
const listNodes = handleListNodes({ listItems, params, originalPpr });
|
|
21347
21546
|
return {
|
|
21348
|
-
nodes: [
|
|
21349
|
-
consumed:
|
|
21547
|
+
nodes: [listNodes],
|
|
21548
|
+
consumed: listItems.filter((i) => i.seen).length,
|
|
21549
|
+
lists
|
|
21350
21550
|
};
|
|
21351
21551
|
} else {
|
|
21352
|
-
return { nodes: [], consumed: 0 };
|
|
21552
|
+
return { nodes: [], consumed: 0, lists };
|
|
21353
21553
|
}
|
|
21354
21554
|
};
|
|
21355
21555
|
const listHandlerEntity = {
|
|
21356
21556
|
handlerName: "listHandler",
|
|
21357
21557
|
handler: handleListNode
|
|
21358
21558
|
};
|
|
21359
|
-
function handleListNodes(
|
|
21559
|
+
function handleListNodes({
|
|
21560
|
+
listItems,
|
|
21561
|
+
originalPpr,
|
|
21562
|
+
params,
|
|
21563
|
+
listLevel = 0,
|
|
21564
|
+
actualListLevel = 0,
|
|
21565
|
+
currentListNumId = null,
|
|
21566
|
+
path = "",
|
|
21567
|
+
isNested = false
|
|
21568
|
+
}) {
|
|
21360
21569
|
const { docx, nodeListHandler: nodeListHandler2, lists } = params;
|
|
21361
|
-
const
|
|
21570
|
+
const parsedListItems = [];
|
|
21571
|
+
let overallListType;
|
|
21572
|
+
let listStyleType;
|
|
21573
|
+
const handleStandardNode2 = nodeListHandler2.handlerEntities.find(
|
|
21574
|
+
(e) => e.handlerName === "standardNodeHandler"
|
|
21575
|
+
)?.handler;
|
|
21576
|
+
if (!handleStandardNode2) {
|
|
21577
|
+
console.error("Standard node handler not found");
|
|
21578
|
+
return { nodes: [], consumed: 0 };
|
|
21579
|
+
}
|
|
21580
|
+
const initialpPr = listItems[0].elements.find((el) => el.name === "w:pPr");
|
|
21362
21581
|
const styleTag = initialpPr?.elements?.find((el) => el.name === "w:pStyle");
|
|
21363
21582
|
const styleId = styleTag?.attributes["w:val"];
|
|
21364
|
-
const
|
|
21365
|
-
|
|
21366
|
-
|
|
21367
|
-
|
|
21368
|
-
|
|
21369
|
-
|
|
21370
|
-
|
|
21371
|
-
|
|
21372
|
-
|
|
21373
|
-
|
|
21374
|
-
|
|
21375
|
-
|
|
21376
|
-
|
|
21377
|
-
|
|
21378
|
-
|
|
21379
|
-
|
|
21380
|
-
|
|
21381
|
-
|
|
21382
|
-
|
|
21383
|
-
|
|
21384
|
-
|
|
21385
|
-
|
|
21386
|
-
|
|
21387
|
-
|
|
21388
|
-
const
|
|
21389
|
-
|
|
21390
|
-
|
|
21391
|
-
|
|
21392
|
-
|
|
21393
|
-
|
|
21394
|
-
|
|
21395
|
-
|
|
21396
|
-
|
|
21397
|
-
|
|
21398
|
-
|
|
21399
|
-
}
|
|
21400
|
-
|
|
21401
|
-
|
|
21402
|
-
|
|
21403
|
-
|
|
21404
|
-
|
|
21405
|
-
|
|
21406
|
-
|
|
21583
|
+
const numPrTag = getNumPrRecursive({ node: listItems[0], styleId, docx });
|
|
21584
|
+
currentListNumId = getNumIdFromTag(numPrTag);
|
|
21585
|
+
actualListLevel = parseInt(numPrTag?.elements?.find((el) => el.name === "w:ilvl")?.attributes["w:val"]) || 0;
|
|
21586
|
+
if (actualListLevel === void 0) actualListLevel = getOutlineLevelFromStyleTag(styleId, docx);
|
|
21587
|
+
let lastNestedListLevel = 0;
|
|
21588
|
+
for (let [index, item] of listItems.entries()) {
|
|
21589
|
+
if (item.seen) continue;
|
|
21590
|
+
const { attributes, elements, marks = [] } = parseProperties(item);
|
|
21591
|
+
const matchedStyle = getStyleTagFromStyleId(styleId, docx) || {};
|
|
21592
|
+
const { marks: styleIdMarks } = parseProperties(matchedStyle);
|
|
21593
|
+
const textStyle = marks.find((mark) => mark.type === "textStyle");
|
|
21594
|
+
const textStyleFromStyles = styleIdMarks?.find((mark) => mark.type === "textStyle");
|
|
21595
|
+
const {
|
|
21596
|
+
listType,
|
|
21597
|
+
listOrderingType,
|
|
21598
|
+
ilvl,
|
|
21599
|
+
listrPrs,
|
|
21600
|
+
listpPrs,
|
|
21601
|
+
start,
|
|
21602
|
+
lvlText,
|
|
21603
|
+
lvlJc,
|
|
21604
|
+
numId
|
|
21605
|
+
} = getNodeNumberingDefinition(item, listLevel, docx);
|
|
21606
|
+
listStyleType = listOrderingType;
|
|
21607
|
+
const intLevel = parseInt(ilvl);
|
|
21608
|
+
const isRoot = actualListLevel === intLevel && numId === currentListNumId;
|
|
21609
|
+
const isSameListLevelDef = isSameListLevelDefsExceptStart({
|
|
21610
|
+
firstListId: numId,
|
|
21611
|
+
secondListId: currentListNumId,
|
|
21612
|
+
level: intLevel,
|
|
21613
|
+
pStyleId: null,
|
|
21614
|
+
docx
|
|
21615
|
+
});
|
|
21616
|
+
const isDifferentList = numId !== currentListNumId && !isSameListLevelDef;
|
|
21617
|
+
const isNested2 = listLevel < intLevel || listLevel === intLevel && isDifferentList && lastNestedListLevel === listLevel;
|
|
21618
|
+
if (!lists[currentListNumId]) lists[currentListNumId] = {};
|
|
21619
|
+
if (!lists[currentListNumId][listLevel]) {
|
|
21620
|
+
lists[currentListNumId][listLevel] = Number(start);
|
|
21621
|
+
}
|
|
21622
|
+
const nodeAttributes = {};
|
|
21623
|
+
if (isRoot && !isNested2) {
|
|
21624
|
+
overallListType = listType;
|
|
21625
|
+
item.seen = true;
|
|
21626
|
+
const schemaElements = [];
|
|
21627
|
+
const nodeContents = nodeListHandler2.handler({ ...params, nodes: [attributes.paragraphProperties, ...elements] })?.filter((n) => n) || [];
|
|
21628
|
+
let parNode = {
|
|
21629
|
+
type: "paragraph",
|
|
21630
|
+
content: nodeContents
|
|
21631
|
+
};
|
|
21632
|
+
if (parNode.content) {
|
|
21633
|
+
parNode = {
|
|
21634
|
+
...parNode,
|
|
21635
|
+
attrs: {
|
|
21636
|
+
textAlign: textStyle?.attrs.textAlign || textStyleFromStyles?.attrs.textAlign || null,
|
|
21637
|
+
rsidRDefault: attributes?.["w:rsidRDefault"] || null,
|
|
21638
|
+
styleId
|
|
21639
|
+
},
|
|
21640
|
+
content: mergeTextNodes(parNode.content)
|
|
21641
|
+
};
|
|
21642
|
+
}
|
|
21643
|
+
schemaElements.push(parNode);
|
|
21644
|
+
lastNestedListLevel = listLevel;
|
|
21645
|
+
let thisItemPath = [];
|
|
21646
|
+
if (listStyleType !== "bullet") {
|
|
21647
|
+
thisItemPath = [...path, lists[currentListNumId][listLevel]];
|
|
21648
|
+
lists[currentListNumId][actualListLevel]++;
|
|
21649
|
+
}
|
|
21650
|
+
if (!path.length && actualListLevel > 0) {
|
|
21651
|
+
const currentDef = lists[currentListNumId];
|
|
21652
|
+
if (currentDef) {
|
|
21653
|
+
const newPath = [];
|
|
21654
|
+
Object.keys(currentDef).forEach((key) => {
|
|
21655
|
+
newPath.push(currentDef[key]);
|
|
21656
|
+
});
|
|
21657
|
+
thisItemPath = newPath;
|
|
21658
|
+
}
|
|
21659
|
+
}
|
|
21660
|
+
const pPr = item.elements.find((el) => el.name === "w:pPr");
|
|
21661
|
+
let indent = pPr?.elements.find((el) => el.name === "w:ind");
|
|
21662
|
+
const pPrFromStyles = matchedStyle?.elements?.find((style) => style.name === "w:pPr");
|
|
21663
|
+
const stylesIndent = pPrFromStyles?.elements?.find((el) => el.name === "w:ind");
|
|
21664
|
+
if (!indent) indent = stylesIndent;
|
|
21665
|
+
if (indent) {
|
|
21666
|
+
const indentAttrs = {};
|
|
21667
|
+
if (!indent.attributes) indent.attributes = {};
|
|
21668
|
+
if (indent.attributes["w:left"] !== void 0) indentAttrs.left = twipsToPixels(indent.attributes["w:left"]);
|
|
21669
|
+
if (indent.attributes["w:right"] !== void 0) indentAttrs.right = twipsToPixels(indent.attributes["w:right"]);
|
|
21670
|
+
if (indent.attributes["w:firstLine"] !== void 0) indentAttrs.firstLine = twipsToPixels(indent.attributes["w:firstLine"]);
|
|
21671
|
+
if (indent.attributes["w:hanging"] !== void 0) indentAttrs.hanging = twipsToPixels(indent.attributes["w:hanging"]);
|
|
21672
|
+
nodeAttributes["indent"] = indentAttrs;
|
|
21673
|
+
}
|
|
21674
|
+
if (listpPrs) nodeAttributes["listParagraphProperties"] = listpPrs;
|
|
21675
|
+
if (listrPrs) nodeAttributes["listRunProperties"] = listrPrs;
|
|
21676
|
+
nodeAttributes["textStyle"] = textStyle;
|
|
21677
|
+
nodeAttributes["order"] = start;
|
|
21678
|
+
nodeAttributes["lvlText"] = lvlText;
|
|
21679
|
+
nodeAttributes["lvlJc"] = textStyle?.attrs.textAlign;
|
|
21680
|
+
nodeAttributes["listLevel"] = thisItemPath;
|
|
21681
|
+
nodeAttributes["listNumberingType"] = listOrderingType;
|
|
21682
|
+
nodeAttributes["attributes"] = {
|
|
21683
|
+
parentAttributes: item?.attributes || null
|
|
21684
|
+
};
|
|
21685
|
+
const originalRunProps = originalPpr?.elements?.find((el) => el.name === "w:rPr");
|
|
21686
|
+
if (originalRunProps) {
|
|
21687
|
+
nodeAttributes.attributes["originalInlineRunProps"] = originalRunProps;
|
|
21688
|
+
}
|
|
21689
|
+
nodeAttributes["numId"] = numId;
|
|
21690
|
+
if (docx) {
|
|
21691
|
+
nodeAttributes["spacing"] = getParagraphSpacing(item, docx, styleId);
|
|
21692
|
+
}
|
|
21693
|
+
const newListItem = createListItem(schemaElements, nodeAttributes, []);
|
|
21694
|
+
parsedListItems.push(newListItem);
|
|
21695
|
+
} else if (isNested2) {
|
|
21696
|
+
const newPath = [...path, lists[currentListNumId][listLevel]];
|
|
21697
|
+
const sublist = handleListNodes({
|
|
21698
|
+
listItems: listItems.slice(index),
|
|
21699
|
+
originalPpr,
|
|
21700
|
+
params,
|
|
21701
|
+
listLevel: listLevel + 1,
|
|
21702
|
+
actualListLevel: listLevel,
|
|
21703
|
+
currentListNumId: numId,
|
|
21704
|
+
path: newPath,
|
|
21705
|
+
isNested: true
|
|
21706
|
+
});
|
|
21707
|
+
lastNestedListLevel = sublist.lastNestedListLevel;
|
|
21708
|
+
delete sublist.lastNestedListLevel;
|
|
21709
|
+
const lastItem = parsedListItems[parsedListItems.length - 1];
|
|
21710
|
+
if (!lastItem) {
|
|
21711
|
+
parsedListItems.push(createListItem([sublist], nodeAttributes, []));
|
|
21712
|
+
} else {
|
|
21713
|
+
lastItem.content.push(sublist);
|
|
21407
21714
|
}
|
|
21408
|
-
|
|
21715
|
+
} else if (!numId) {
|
|
21716
|
+
item.seen = true;
|
|
21717
|
+
const n = handleStandardNode2({ ...params, nodes: [item] }).nodes[0];
|
|
21718
|
+
parsedListItems[parsedListItems.length - 1]?.content.push(n);
|
|
21719
|
+
} else {
|
|
21720
|
+
lastNestedListLevel = listLevel;
|
|
21721
|
+
if (listLevel > 0 && item.elements[0].elements.find((el) => el.name === "w:numPr")) {
|
|
21722
|
+
lists[currentListNumId][listLevel] = 0;
|
|
21723
|
+
}
|
|
21724
|
+
break;
|
|
21409
21725
|
}
|
|
21410
21726
|
}
|
|
21411
|
-
if (!path.length) path.push(currentListByNumId.levels[iLvl]);
|
|
21412
|
-
const attrs = {};
|
|
21413
|
-
attrs.lvlText = lvlText;
|
|
21414
|
-
attrs.listLevel = path;
|
|
21415
|
-
attrs.listNumberingType = listOrderingType;
|
|
21416
|
-
attrs.numId = currentListNumId;
|
|
21417
|
-
attrs.level = iLvl;
|
|
21418
|
-
attrs.numPrType = numPrType;
|
|
21419
|
-
attrs.styleId = styleId;
|
|
21420
|
-
node2.isList = true;
|
|
21421
|
-
const nodePpr = node2.attrs?.paragraphProperties?.elements?.find((el) => el.name === "w:pPr");
|
|
21422
|
-
const numPrIndex = node2.attrs?.paragraphProperties?.elements?.findIndex((el) => el.name === "w:numPr");
|
|
21423
|
-
nodePpr?.elements?.splice(numPrIndex, 1);
|
|
21424
|
-
const listContents = nodeListHandler2.handler({ ...params, nodes: [node2] });
|
|
21425
|
-
const innerParagraph = listContents.find((el) => el.type === "paragraph");
|
|
21426
|
-
const firstElement = innerParagraph.content[0];
|
|
21427
|
-
firstElement?.marks?.find((mark) => mark.type === "textStyle");
|
|
21428
|
-
attrs.indent = listpPrs?.indent;
|
|
21429
|
-
const processedContents = listContents.map((el, index) => {
|
|
21430
|
-
const { attrs: elementAttrs } = el;
|
|
21431
|
-
const { indent, textIndent, paragraphProperties, ...rest } = elementAttrs;
|
|
21432
|
-
if (index === 0 && !attrs.indent) attrs.indent = indent;
|
|
21433
|
-
return {
|
|
21434
|
-
...el,
|
|
21435
|
-
attrs: rest
|
|
21436
|
-
};
|
|
21437
|
-
});
|
|
21438
|
-
const listItem = {
|
|
21439
|
-
type: "listItem",
|
|
21440
|
-
content: processedContents || [],
|
|
21441
|
-
attrs
|
|
21442
|
-
};
|
|
21443
21727
|
const resultingList = {
|
|
21444
|
-
type:
|
|
21445
|
-
content:
|
|
21728
|
+
type: overallListType || "bulletList",
|
|
21729
|
+
content: parsedListItems,
|
|
21446
21730
|
attrs: {
|
|
21447
|
-
"list-style-type":
|
|
21448
|
-
listId: currentListNumId
|
|
21731
|
+
"list-style-type": listStyleType,
|
|
21732
|
+
listId: currentListNumId,
|
|
21733
|
+
attributes: {
|
|
21734
|
+
parentAttributes: listItems[0]?.attributes || null
|
|
21735
|
+
}
|
|
21449
21736
|
}
|
|
21450
21737
|
};
|
|
21738
|
+
if (isNested) resultingList.lastNestedListLevel = lastNestedListLevel;
|
|
21451
21739
|
return resultingList;
|
|
21452
21740
|
}
|
|
21453
21741
|
const getOutlineLevelFromStyleTag = (styleTag, docx) => {
|
|
@@ -21466,27 +21754,11 @@ function testForList(node2, docx) {
|
|
|
21466
21754
|
const paragraphStyle = pPr.elements?.find((el) => el.name === "w:pStyle");
|
|
21467
21755
|
let numPr = pPr.elements?.find((el) => el.name === "w:numPr");
|
|
21468
21756
|
let numId = getNumIdFromTag(numPr);
|
|
21469
|
-
const ilvlTag = numPr?.elements?.find((el) => el.name === "w:ilvl");
|
|
21470
|
-
let ilvl = ilvlTag?.attributes["w:val"];
|
|
21471
|
-
let outlinelvl;
|
|
21472
21757
|
const styleId = paragraphStyle?.attributes["w:val"];
|
|
21473
|
-
|
|
21474
|
-
|
|
21475
|
-
const { numPr: numPrRecursve, type: type2 } = getNumPrRecursive({ node: node2, styleId, docx });
|
|
21476
|
-
numPr = numPrRecursve;
|
|
21758
|
+
if (styleId && !numId) {
|
|
21759
|
+
numPr = getNumPrRecursive({ node: node2, styleId, docx });
|
|
21477
21760
|
numId = getNumIdFromTag(numPr);
|
|
21478
|
-
|
|
21479
|
-
stylePpr?.elements?.find((el) => el.name === "w:numPr");
|
|
21480
|
-
ilvl = stylePpr?.elements?.find((el) => el.name === "w:ilvl")?.attributes["w:val"];
|
|
21481
|
-
outlinelvl = stylePpr?.elements?.find((el) => el.name === "w:outlineLvl")?.attributes["w:val"];
|
|
21482
|
-
ilvl = outlinelvl || ilvl;
|
|
21483
|
-
}
|
|
21484
|
-
const numbering = docx["word/numbering.xml"] || {};
|
|
21485
|
-
const numDefinition = numbering?.elements?.[0].elements?.find((el) => el.attributes?.["w:numId"] == numId);
|
|
21486
|
-
const abstractNumId = numDefinition?.elements?.find((el) => el.name === "w:abstractNumId")?.attributes["w:val"];
|
|
21487
|
-
const abstractNumDefinition = numbering?.elements?.[0].elements?.find((el) => el.attributes?.["w:abstractNumId"] == abstractNumId);
|
|
21488
|
-
const levelDefinition = abstractNumDefinition?.elements?.find((el) => el.name === "w:lvl" && el.attributes?.["w:ilvl"] == ilvl);
|
|
21489
|
-
if (!levelDefinition) return false;
|
|
21761
|
+
}
|
|
21490
21762
|
return !!numId;
|
|
21491
21763
|
}
|
|
21492
21764
|
const getNumIdFromTag = (tag) => {
|
|
@@ -21494,19 +21766,20 @@ const getNumIdFromTag = (tag) => {
|
|
|
21494
21766
|
};
|
|
21495
21767
|
function getStyleTagFromStyleId(styleId, docx) {
|
|
21496
21768
|
const styles = docx["word/styles.xml"];
|
|
21497
|
-
if (!styles)
|
|
21769
|
+
if (!styles) {
|
|
21770
|
+
return {};
|
|
21771
|
+
}
|
|
21498
21772
|
const styleEls = styles.elements;
|
|
21499
21773
|
const wStyles = styleEls.find((el) => el.name === "w:styles");
|
|
21500
21774
|
const styleTags = wStyles.elements.filter((style) => style.name === "w:style");
|
|
21501
|
-
|
|
21502
|
-
return styleDef;
|
|
21775
|
+
return styleTags.find((tag) => tag.attributes["w:styleId"] === styleId);
|
|
21503
21776
|
}
|
|
21504
21777
|
function getNumPrRecursive({ node: node2, styleId, docx, seenStyleIds = /* @__PURE__ */ new Set() }) {
|
|
21505
21778
|
const initialPpr = node2?.elements?.find((el) => el.name === "w:pPr");
|
|
21506
21779
|
const initialNumPr = initialPpr?.elements?.find((el) => el.name === "w:numPr");
|
|
21507
21780
|
let numPr = initialNumPr;
|
|
21508
21781
|
let numId = getNumIdFromTag(numPr);
|
|
21509
|
-
if (numId) return
|
|
21782
|
+
if (numId) return numPr;
|
|
21510
21783
|
const matchedStyle = getStyleTagFromStyleId(styleId, docx);
|
|
21511
21784
|
const pPr = matchedStyle?.elements?.find((style) => style.name === "w:pPr");
|
|
21512
21785
|
numPr = pPr?.elements?.find((style) => style.name === "w:numPr");
|
|
@@ -21515,10 +21788,18 @@ function getNumPrRecursive({ node: node2, styleId, docx, seenStyleIds = /* @__PU
|
|
|
21515
21788
|
if (!numId && !seenStyleIds.has(styleId)) {
|
|
21516
21789
|
const basedOnStyleId = basedOn?.attributes["w:val"];
|
|
21517
21790
|
seenStyleIds.add(styleId);
|
|
21518
|
-
if (!basedOnStyleId) return
|
|
21791
|
+
if (!basedOnStyleId) return null;
|
|
21519
21792
|
return getNumPrRecursive({ styleId: basedOnStyleId, docx, seenStyleIds });
|
|
21520
21793
|
}
|
|
21521
|
-
return
|
|
21794
|
+
return numPr;
|
|
21795
|
+
}
|
|
21796
|
+
function createListItem(content, attrs, marks) {
|
|
21797
|
+
return {
|
|
21798
|
+
type: "listItem",
|
|
21799
|
+
content,
|
|
21800
|
+
attrs,
|
|
21801
|
+
marks
|
|
21802
|
+
};
|
|
21522
21803
|
}
|
|
21523
21804
|
const orderedListTypes = [
|
|
21524
21805
|
"decimal",
|
|
@@ -21556,6 +21837,18 @@ const unorderedListTypes = [
|
|
|
21556
21837
|
"disc"
|
|
21557
21838
|
// Disc bullets (●)
|
|
21558
21839
|
];
|
|
21840
|
+
const isSameListLevelDefsExceptStart = ({ firstListId, secondListId, level, pStyleId, docx }) => {
|
|
21841
|
+
const { numFmt, lvlText, lvlJc } = getListLevelDefinitionTag(firstListId, level, pStyleId, docx);
|
|
21842
|
+
const {
|
|
21843
|
+
numFmt: numFmt2,
|
|
21844
|
+
lvlText: lvlText2,
|
|
21845
|
+
lvlJc: lvlJc2
|
|
21846
|
+
} = getListLevelDefinitionTag(secondListId, level, pStyleId, docx);
|
|
21847
|
+
const sameNumFmt = numFmt === numFmt2;
|
|
21848
|
+
const sameLvlText = lvlText === lvlText2;
|
|
21849
|
+
const sameLvlJc = lvlJc === lvlJc2;
|
|
21850
|
+
return sameNumFmt && sameLvlText && sameLvlJc;
|
|
21851
|
+
};
|
|
21559
21852
|
const getListNumIdFromStyleRef = (styleId, docx) => {
|
|
21560
21853
|
const styles = docx["word/styles.xml"];
|
|
21561
21854
|
if (!styles) return null;
|
|
@@ -21587,28 +21880,24 @@ const getListNumIdFromStyleRef = (styleId, docx) => {
|
|
|
21587
21880
|
}
|
|
21588
21881
|
return { numId, ilvl };
|
|
21589
21882
|
};
|
|
21590
|
-
const
|
|
21883
|
+
const getListLevelDefinitionTag = (numId, level, pStyleId, docx) => {
|
|
21591
21884
|
const def = docx["word/numbering.xml"];
|
|
21592
21885
|
if (!def) return {};
|
|
21593
21886
|
const { elements } = def;
|
|
21594
21887
|
const listData = elements[0];
|
|
21888
|
+
if (pStyleId) {
|
|
21889
|
+
const { numId: numIdFromStyles, ilvl: iLvlFromStyles } = getListNumIdFromStyleRef(pStyleId, docx) || {};
|
|
21890
|
+
if (!numId && numIdFromStyles) numId = numIdFromStyles;
|
|
21891
|
+
if (!level && iLvlFromStyles) level = iLvlFromStyles ? parseInt(iLvlFromStyles) : null;
|
|
21892
|
+
}
|
|
21595
21893
|
const numberingElements = listData.elements;
|
|
21596
21894
|
const abstractDefinitions = numberingElements.filter((style) => style.name === "w:abstractNum");
|
|
21597
21895
|
const numDefinitions = numberingElements.filter((style) => style.name === "w:num");
|
|
21598
|
-
const numDefinition = numDefinitions.find((style) => style.attributes["w:numId"]
|
|
21896
|
+
const numDefinition = numDefinitions.find((style) => style.attributes["w:numId"] === numId);
|
|
21599
21897
|
const abstractNumId = numDefinition?.elements[0].attributes["w:val"];
|
|
21600
21898
|
const listDefinitionForThisNumId = abstractDefinitions?.find(
|
|
21601
21899
|
(style) => style.attributes["w:abstractNumId"] === abstractNumId
|
|
21602
21900
|
);
|
|
21603
|
-
return listDefinitionForThisNumId;
|
|
21604
|
-
};
|
|
21605
|
-
const getListLevelDefinitionTag = (numId, level, pStyleId, docx) => {
|
|
21606
|
-
if (pStyleId) {
|
|
21607
|
-
const { numId: numIdFromStyles, ilvl: iLvlFromStyles } = getListNumIdFromStyleRef(pStyleId, docx) || {};
|
|
21608
|
-
if (!numId && numIdFromStyles) numId = numIdFromStyles;
|
|
21609
|
-
if (!level && iLvlFromStyles) level = iLvlFromStyles ? parseInt(iLvlFromStyles) : null;
|
|
21610
|
-
}
|
|
21611
|
-
const listDefinitionForThisNumId = getAbstractDefinition(numId, docx);
|
|
21612
21901
|
const currentLevel = getDefinitionForLevel(listDefinitionForThisNumId, level);
|
|
21613
21902
|
const numStyleLink = listDefinitionForThisNumId?.elements?.find((style) => style.name === "w:numStyleLink");
|
|
21614
21903
|
const numStyleLinkId = numStyleLink?.attributes["w:val"];
|
|
@@ -21617,15 +21906,7 @@ const getListLevelDefinitionTag = (numId, level, pStyleId, docx) => {
|
|
|
21617
21906
|
return getListLevelDefinitionTag(current.numId, level, null, docx);
|
|
21618
21907
|
}
|
|
21619
21908
|
const start = currentLevel?.elements?.find((style) => style.name === "w:start")?.attributes["w:val"];
|
|
21620
|
-
|
|
21621
|
-
if (!numFmt) {
|
|
21622
|
-
const altChoice = currentLevel?.elements.find((style) => style.name === "mc:AlternateContent");
|
|
21623
|
-
const choice = altChoice?.elements.find((style) => style.name === "mc:Choice");
|
|
21624
|
-
const choiceNumFmt = choice?.elements.find((style) => style.name === "w:numFmt")?.attributes["w:val"];
|
|
21625
|
-
if (choiceNumFmt) {
|
|
21626
|
-
numFmt = choiceNumFmt;
|
|
21627
|
-
}
|
|
21628
|
-
}
|
|
21909
|
+
const numFmt = currentLevel?.elements?.find((style) => style.name === "w:numFmt")?.attributes["w:val"];
|
|
21629
21910
|
const lvlText = currentLevel?.elements?.find((style) => style.name === "w:lvlText").attributes["w:val"];
|
|
21630
21911
|
const lvlJc = currentLevel?.elements?.find((style) => style.name === "w:lvlJc").attributes["w:val"];
|
|
21631
21912
|
const pPr = currentLevel?.elements?.find((style) => style.name === "w:pPr");
|
|
@@ -21640,10 +21921,12 @@ function getNodeNumberingDefinition(item, level, docx) {
|
|
|
21640
21921
|
const initialPpr = item.elements.find((el) => el.name === "w:pPr");
|
|
21641
21922
|
const styleTag = initialPpr?.elements?.find((el) => el.name === "w:pStyle");
|
|
21642
21923
|
const styleId = styleTag?.attributes["w:val"];
|
|
21643
|
-
const
|
|
21924
|
+
const numPrTag = getNumPrRecursive({ node: item, styleId, docx });
|
|
21644
21925
|
if (!numPrTag) return {};
|
|
21645
21926
|
const numIdTag = numPrTag?.elements.find((style) => style.name === "w:numId");
|
|
21646
21927
|
const numId = numIdTag?.attributes["w:val"];
|
|
21928
|
+
const ilvlTag = numPrTag?.elements.find((style) => style.name === "w:ilvl");
|
|
21929
|
+
const ilvl = ilvlTag?.attributes["w:val"] || getOutlineLevelFromStyleTag(styleId, docx);
|
|
21647
21930
|
const pStyle = listStyles.find((style) => style.name === "w:pStyle");
|
|
21648
21931
|
const pStyleId = pStyle?.attributes["w:val"];
|
|
21649
21932
|
const {
|
|
@@ -21655,84 +21938,29 @@ function getNodeNumberingDefinition(item, level, docx) {
|
|
|
21655
21938
|
rPr
|
|
21656
21939
|
} = getListLevelDefinitionTag(numId, level, pStyleId, docx);
|
|
21657
21940
|
let listpPrs, listrPrs;
|
|
21658
|
-
if (pPr) listpPrs = _processListParagraphProperties(pPr
|
|
21941
|
+
if (pPr) listpPrs = _processListParagraphProperties(pPr);
|
|
21659
21942
|
if (rPr) listrPrs = _processListRunProperties(rPr);
|
|
21660
21943
|
let listType;
|
|
21661
21944
|
if (unorderedListTypes.includes(listTypeDef?.toLowerCase())) listType = "bulletList";
|
|
21662
21945
|
else if (orderedListTypes.includes(listTypeDef)) listType = "orderedList";
|
|
21663
|
-
else
|
|
21664
|
-
|
|
21665
|
-
} else {
|
|
21666
|
-
return {};
|
|
21667
|
-
}
|
|
21668
|
-
return { listType, listOrderingType: listTypeDef, listrPrs, listpPrs, start, lvlText, lvlJc };
|
|
21946
|
+
else return {};
|
|
21947
|
+
return { listType, listOrderingType: listTypeDef, ilvl, numId, listrPrs, listpPrs, start, lvlText, lvlJc };
|
|
21669
21948
|
}
|
|
21670
21949
|
function getDefinitionForLevel(data, level) {
|
|
21671
21950
|
return data?.elements?.find((item) => Number(item.attributes["w:ilvl"]) === level);
|
|
21672
21951
|
}
|
|
21673
|
-
function
|
|
21674
|
-
if (!indElem || !indElem.attributes) return {};
|
|
21675
|
-
const out = {};
|
|
21676
|
-
if (indElem.attributes["w:left"] != null) out.left = twipsToPixels(indElem.attributes["w:left"]);
|
|
21677
|
-
if (indElem.attributes["w:right"] != null) out.right = twipsToPixels(indElem.attributes["w:right"]);
|
|
21678
|
-
if (indElem.attributes["w:firstLine"] != null) out.firstLine = twipsToPixels(indElem.attributes["w:firstLine"]);
|
|
21679
|
-
if (indElem.attributes["w:hanging"] != null) out.hanging = twipsToPixels(indElem.attributes["w:hanging"]);
|
|
21680
|
-
if (indElem.attributes["w:leftChars"] != null) out.leftChars = twipsToPixels(indElem.attributes["w:leftChars"]);
|
|
21681
|
-
return out;
|
|
21682
|
-
}
|
|
21683
|
-
function combineIndents(ind1, ind2) {
|
|
21684
|
-
ind1 = ind1 && typeof ind1 === "object" ? ind1 : {};
|
|
21685
|
-
ind2 = ind2 && typeof ind2 === "object" ? ind2 : {};
|
|
21686
|
-
const indent = {};
|
|
21687
|
-
["left", "right", "firstLine", "hanging"].forEach((prop) => {
|
|
21688
|
-
const v1 = ind1[prop] !== void 0 ? Number(ind1[prop]) : null;
|
|
21689
|
-
const v2 = ind2[prop] !== void 0 ? Number(ind2[prop]) : null;
|
|
21690
|
-
if (v1 != null && v2 != null) {
|
|
21691
|
-
indent[prop] = prop === "left" || prop === "hanging" ? Math.max(v1, v2) : v1;
|
|
21692
|
-
} else if (v1 != null) {
|
|
21693
|
-
indent[prop] = v1;
|
|
21694
|
-
} else if (v2 != null) {
|
|
21695
|
-
indent[prop] = v2;
|
|
21696
|
-
}
|
|
21697
|
-
});
|
|
21698
|
-
return indent;
|
|
21699
|
-
}
|
|
21700
|
-
function _processListParagraphProperties(data, inlinePpr) {
|
|
21952
|
+
function _processListParagraphProperties(data) {
|
|
21701
21953
|
const { elements } = data;
|
|
21702
21954
|
const expectedTypes = ["w:ind", "w:jc", "w:tabs"];
|
|
21703
21955
|
const paragraphProperties = {};
|
|
21704
21956
|
if (!elements) return paragraphProperties;
|
|
21705
21957
|
elements.forEach((item) => {
|
|
21706
|
-
if (!expectedTypes.includes(item.name))
|
|
21707
|
-
|
|
21708
|
-
|
|
21709
|
-
|
|
21710
|
-
const inlineIndent = inlinePpr?.elements?.find((item) => item.name === "w:ind");
|
|
21711
|
-
const parsedInlineIndent = parseIndentElement(inlineIndent);
|
|
21712
|
-
const styleIndent = elements.find((item) => item.name === "w:ind");
|
|
21713
|
-
parseIndentElement(styleIndent);
|
|
21714
|
-
paragraphProperties.indent = parsedInlineIndent;
|
|
21715
|
-
const justify = elements.find((item) => item.name === "w:jc");
|
|
21716
|
-
if (justify) {
|
|
21717
|
-
const justifyAttrs = {};
|
|
21718
|
-
if (!justify.attributes) justify.attributes = {};
|
|
21719
|
-
if (justify.attributes["w:val"] !== void 0) justifyAttrs.val = justify.attributes["w:val"];
|
|
21720
|
-
paragraphProperties.justify = justifyAttrs;
|
|
21721
|
-
}
|
|
21722
|
-
const tabs = elements.find((item) => item.name === "w:tabs");
|
|
21723
|
-
if (tabs) {
|
|
21724
|
-
const tabElements = tabs.elements.filter((item) => item.name === "w:tab");
|
|
21725
|
-
const tabStops = [];
|
|
21726
|
-
tabElements.forEach((tab) => {
|
|
21727
|
-
const tabStop = {};
|
|
21728
|
-
if (!tab.attributes) tab.attributes = {};
|
|
21729
|
-
if (tab.attributes["w:val"] !== void 0) tabStop.val = tab.attributes["w:val"];
|
|
21730
|
-
if (tab.attributes["w:leader"] !== void 0) tabStop.leader = tab.attributes["w:leader"];
|
|
21731
|
-
if (tab.attributes["w:pos"] !== void 0) tabStop.pos = twipsToPixels(tab.attributes["w:pos"]);
|
|
21732
|
-
tabStops.push(tabStop);
|
|
21958
|
+
if (!expectedTypes.includes(item.name)) ;
|
|
21959
|
+
const { attributes = {} } = item;
|
|
21960
|
+
Object.keys(attributes).forEach((key) => {
|
|
21961
|
+
paragraphProperties[key] = attributes[key];
|
|
21733
21962
|
});
|
|
21734
|
-
|
|
21735
|
-
}
|
|
21963
|
+
});
|
|
21736
21964
|
return paragraphProperties;
|
|
21737
21965
|
}
|
|
21738
21966
|
function _processListRunProperties(data) {
|
|
@@ -21779,6 +22007,9 @@ const handleParagraphNode = (params) => {
|
|
|
21779
22007
|
let schemaNode;
|
|
21780
22008
|
let processedElements = preProcessNodesForFldChar(node2.elements);
|
|
21781
22009
|
node2.elements = processedElements;
|
|
22010
|
+
if (testForList(node2, docx)) {
|
|
22011
|
+
return { nodes: [], consumed: 0 };
|
|
22012
|
+
}
|
|
21782
22013
|
const handleStandardNode2 = nodeListHandler2.handlerEntities.find(
|
|
21783
22014
|
(e) => e.handlerName === "standardNodeHandler"
|
|
21784
22015
|
)?.handler;
|
|
@@ -21848,14 +22079,6 @@ const handleParagraphNode = (params) => {
|
|
|
21848
22079
|
schemaNode.attrs["spacing"] = getParagraphSpacing(node2, docx, styleId, schemaNode.attrs.marksAttrs);
|
|
21849
22080
|
schemaNode.attrs["rsidRDefault"] = defaultStyleId;
|
|
21850
22081
|
}
|
|
21851
|
-
if (docx) {
|
|
21852
|
-
const { justify: justify2 } = getDefaultParagraphStyle(docx, styleId);
|
|
21853
|
-
if (justify2) {
|
|
21854
|
-
schemaNode.attrs.justify = {
|
|
21855
|
-
val: justify2["w:val"]
|
|
21856
|
-
};
|
|
21857
|
-
}
|
|
21858
|
-
}
|
|
21859
22082
|
if (framePr && framePr.attributes["w:dropCap"]) {
|
|
21860
22083
|
schemaNode.attrs.dropcap = {
|
|
21861
22084
|
type: framePr.attributes["w:dropCap"],
|
|
@@ -21878,7 +22101,6 @@ const handleParagraphNode = (params) => {
|
|
|
21878
22101
|
schemaNode.attrs.paragraphProperties.sectPr = sectPr;
|
|
21879
22102
|
schemaNode.attrs.pageBreakSource = "sectPr";
|
|
21880
22103
|
}
|
|
21881
|
-
console.debug("paragraphNodeHandler", schemaNode);
|
|
21882
22104
|
return { nodes: schemaNode ? [schemaNode] : [], consumed: 1 };
|
|
21883
22105
|
};
|
|
21884
22106
|
const getParagraphIndent = (node2, docx, styleId = "") => {
|
|
@@ -21916,14 +22138,19 @@ const getParagraphIndent = (node2, docx, styleId = "") => {
|
|
|
21916
22138
|
return indent;
|
|
21917
22139
|
};
|
|
21918
22140
|
const getParagraphSpacing = (node2, docx, styleId = "", marks = []) => {
|
|
21919
|
-
const spacing = {
|
|
22141
|
+
const spacing = {
|
|
22142
|
+
lineSpaceAfter: 0,
|
|
22143
|
+
lineSpaceBefore: 0,
|
|
22144
|
+
line: 0,
|
|
22145
|
+
lineRule: null
|
|
22146
|
+
};
|
|
21920
22147
|
const { spacing: pDefaultSpacing = {} } = getDefaultParagraphStyle(docx, styleId);
|
|
21921
22148
|
let lineSpaceAfter, lineSpaceBefore, line, lineRuleStyle;
|
|
21922
22149
|
const pPr = node2.elements?.find((el) => el.name === "w:pPr");
|
|
21923
22150
|
const inLineSpacingTag = pPr?.elements?.find((el) => el.name === "w:spacing");
|
|
21924
22151
|
const inLineSpacing = inLineSpacingTag?.attributes || {};
|
|
21925
22152
|
const textStyleMark = marks.find((el) => el.type === "textStyle");
|
|
21926
|
-
const
|
|
22153
|
+
const fontSize2 = textStyleMark?.attrs?.fontSize;
|
|
21927
22154
|
const lineSpacing = inLineSpacing?.["w:line"] || line || pDefaultSpacing?.["w:line"];
|
|
21928
22155
|
if (lineSpacing) spacing.line = twipsToLines(lineSpacing);
|
|
21929
22156
|
const lineRule = inLineSpacing?.["w:lineRule"] || lineRuleStyle || pDefaultSpacing?.["w:lineRule"];
|
|
@@ -21934,14 +22161,14 @@ const getParagraphSpacing = (node2, docx, styleId = "", marks = []) => {
|
|
|
21934
22161
|
const beforeSpacing = inLineSpacing?.["w:before"] || lineSpaceBefore || pDefaultSpacing?.["w:before"];
|
|
21935
22162
|
if (beforeSpacing) spacing.lineSpaceBefore = twipsToPixels(beforeSpacing);
|
|
21936
22163
|
const beforeAutospacing = inLineSpacing?.["w:beforeAutospacing"];
|
|
21937
|
-
if (beforeAutospacing === "1" &&
|
|
21938
|
-
spacing.lineSpaceBefore += Math.round(parseInt(
|
|
22164
|
+
if (beforeAutospacing === "1" && fontSize2) {
|
|
22165
|
+
spacing.lineSpaceBefore += Math.round(parseInt(fontSize2) * 0.5 * 96 / 72);
|
|
21939
22166
|
}
|
|
21940
22167
|
const afterSpacing = inLineSpacing?.["w:after"] || lineSpaceAfter || pDefaultSpacing?.["w:after"];
|
|
21941
22168
|
if (afterSpacing) spacing.lineSpaceAfter = twipsToPixels(afterSpacing);
|
|
21942
22169
|
const afterAutospacing = inLineSpacing?.["w:afterAutospacing"];
|
|
21943
|
-
if (afterAutospacing === "1" &&
|
|
21944
|
-
spacing.lineSpaceAfter += Math.round(parseInt(
|
|
22170
|
+
if (afterAutospacing === "1" && fontSize2) {
|
|
22171
|
+
spacing.lineSpaceAfter += Math.round(parseInt(fontSize2) * 0.5 * 96 / 72);
|
|
21945
22172
|
}
|
|
21946
22173
|
return spacing;
|
|
21947
22174
|
};
|
|
@@ -22121,15 +22348,25 @@ const processCombinedNodesForFldChar = (nodesToCombine = []) => {
|
|
|
22121
22348
|
if (!isNumPages) isNumPages = instrText?.trim().startsWith("NUMPAGES");
|
|
22122
22349
|
const urlMatch = instrText?.match(/HYPERLINK\s+"([^"]+)"/);
|
|
22123
22350
|
if (hasPageMarker) {
|
|
22124
|
-
|
|
22351
|
+
const pageNumNode = {
|
|
22125
22352
|
name: "sd:autoPageNumber",
|
|
22126
22353
|
type: "element"
|
|
22354
|
+
};
|
|
22355
|
+
nodesToCombine.forEach((n) => {
|
|
22356
|
+
const rPrNode = n.elements.find((el) => el.name === "w:rPr");
|
|
22357
|
+
if (rPrNode) pageNumNode.elements = [rPrNode];
|
|
22127
22358
|
});
|
|
22359
|
+
processedNodes.push(pageNumNode);
|
|
22128
22360
|
} else if (isNumPages) {
|
|
22129
|
-
|
|
22361
|
+
const totalPageNumNode = {
|
|
22130
22362
|
name: "sd:totalPageNumber",
|
|
22131
22363
|
type: "element"
|
|
22364
|
+
};
|
|
22365
|
+
nodesToCombine.forEach((n) => {
|
|
22366
|
+
const rPrNode = n.elements.find((el) => el.name === "w:rPr");
|
|
22367
|
+
if (rPrNode) totalPageNumNode.elements = [rPrNode];
|
|
22132
22368
|
});
|
|
22369
|
+
processedNodes.push(totalPageNumNode);
|
|
22133
22370
|
} else if (urlMatch && urlMatch?.length >= 2) {
|
|
22134
22371
|
const url = urlMatch[1];
|
|
22135
22372
|
const textMarks = [];
|
|
@@ -22201,7 +22438,7 @@ const handleAnnotationNode = (params) => {
|
|
|
22201
22438
|
const fieldColor = sdtPr?.elements.find((el) => el.name === "w:fieldColor")?.attributes["w:val"];
|
|
22202
22439
|
const isMultipleImage = sdtPr?.elements.find((el) => el.name === "w:fieldMultipleImage")?.attributes["w:val"];
|
|
22203
22440
|
const fontFamily = sdtPr?.elements.find((el) => el.name === "w:fieldFontFamily")?.attributes["w:val"];
|
|
22204
|
-
const
|
|
22441
|
+
const fontSize2 = sdtPr?.elements.find((el) => el.name === "w:fieldFontSize")?.attributes["w:val"];
|
|
22205
22442
|
const textColor = sdtPr?.elements.find((el) => el.name === "w:fieldTextColor")?.attributes["w:val"];
|
|
22206
22443
|
const textHighlight = sdtPr?.elements.find((el) => el.name === "w:fieldTextHighlight")?.attributes["w:val"];
|
|
22207
22444
|
const attrs = {
|
|
@@ -22212,7 +22449,7 @@ const handleAnnotationNode = (params) => {
|
|
|
22212
22449
|
fieldColor,
|
|
22213
22450
|
multipleImage: isMultipleImage === "true",
|
|
22214
22451
|
fontFamily: fontFamily !== "null" ? fontFamily : null,
|
|
22215
|
-
fontSize:
|
|
22452
|
+
fontSize: fontSize2 !== "null" ? fontSize2 : null,
|
|
22216
22453
|
textColor: textColor !== "null" ? textColor : null,
|
|
22217
22454
|
textHighlight: textHighlight !== "null" ? textHighlight : null
|
|
22218
22455
|
};
|
|
@@ -22465,8 +22702,13 @@ const handleAutoPageNumber = (params) => {
|
|
|
22465
22702
|
if (nodes.length === 0 || nodes[0].name !== "sd:autoPageNumber") {
|
|
22466
22703
|
return { nodes: [], consumed: 0 };
|
|
22467
22704
|
}
|
|
22705
|
+
const rPr = nodes[0].elements?.find((el) => el.name === "w:rPr");
|
|
22706
|
+
const marks = parseMarks(rPr || { elements: [] });
|
|
22468
22707
|
const processedNode = {
|
|
22469
|
-
type: "page-number"
|
|
22708
|
+
type: "page-number",
|
|
22709
|
+
attrs: {
|
|
22710
|
+
marksAsAttrs: marks
|
|
22711
|
+
}
|
|
22470
22712
|
};
|
|
22471
22713
|
return { nodes: [processedNode], consumed: 1 };
|
|
22472
22714
|
};
|
|
@@ -22479,8 +22721,13 @@ const handleAutoTotalPageNumber = (params) => {
|
|
|
22479
22721
|
if (nodes.length === 0 || nodes[0].name !== "sd:totalPageNumber") {
|
|
22480
22722
|
return { nodes: [], consumed: 0 };
|
|
22481
22723
|
}
|
|
22724
|
+
const rPr = nodes[0].elements?.find((el) => el.name === "w:rPr");
|
|
22725
|
+
const marks = parseMarks(rPr || { elements: [] });
|
|
22482
22726
|
const processedNode = {
|
|
22483
|
-
type: "total-page-number"
|
|
22727
|
+
type: "total-page-number",
|
|
22728
|
+
attrs: {
|
|
22729
|
+
marksAsAttrs: marks
|
|
22730
|
+
}
|
|
22484
22731
|
};
|
|
22485
22732
|
return { nodes: [processedNode], consumed: 1 };
|
|
22486
22733
|
};
|
|
@@ -22778,8 +23025,8 @@ const defaultNodeListHandler = () => {
|
|
|
22778
23025
|
alternateChoiceHandler,
|
|
22779
23026
|
runNodeHandlerEntity,
|
|
22780
23027
|
pictNodeHandlerEntity,
|
|
22781
|
-
listHandlerEntity,
|
|
22782
23028
|
paragraphNodeHandlerEntity,
|
|
23029
|
+
listHandlerEntity,
|
|
22783
23030
|
textNodeHandlerEntity,
|
|
22784
23031
|
lineBreakNodeHandlerEntity,
|
|
22785
23032
|
annotationNodeHandlerEntity,
|
|
@@ -22793,7 +23040,7 @@ const defaultNodeListHandler = () => {
|
|
|
22793
23040
|
autoPageHandlerEntity,
|
|
22794
23041
|
autoTotalPageCountEntity,
|
|
22795
23042
|
standardNodeHandlerEntity
|
|
22796
|
-
//
|
|
23043
|
+
//this should be the last one, bcs this parses everything!!!
|
|
22797
23044
|
];
|
|
22798
23045
|
const handler = createNodeListHandler(entities);
|
|
22799
23046
|
return {
|
|
@@ -23025,8 +23272,6 @@ const importHeadersFooters = (docx, converter, editor) => {
|
|
|
23025
23272
|
converter.headers[rId] = { type: "doc", content: [...schema] };
|
|
23026
23273
|
sectionType && (converter.headerIds[sectionType] = rId);
|
|
23027
23274
|
});
|
|
23028
|
-
const titlePg = allSectPrElements?.find((el) => el.name === "w:titlePg");
|
|
23029
|
-
if (titlePg) converter.headerIds.titlePg = true;
|
|
23030
23275
|
footers.forEach((footer) => {
|
|
23031
23276
|
const { rId, referenceFile, currentFileName } = getHeaderFooterSectionData(footer, docx);
|
|
23032
23277
|
const sectPrFooter = allSectPrElements.find((el) => el.name === "w:footerReference" && el.attributes["r:id"] === rId);
|
|
@@ -23167,7 +23412,7 @@ const _SuperConverter = class _SuperConverter {
|
|
|
23167
23412
|
return;
|
|
23168
23413
|
}
|
|
23169
23414
|
}
|
|
23170
|
-
static updateDocumentVersion(docx = this.convertedXml, version = "0.13.0-
|
|
23415
|
+
static updateDocumentVersion(docx = this.convertedXml, version = "0.13.0-next.2") {
|
|
23171
23416
|
const customLocation = "docProps/custom.xml";
|
|
23172
23417
|
if (!docx[customLocation]) {
|
|
23173
23418
|
docx[customLocation] = generateCustomXml();
|
|
@@ -23294,6 +23539,7 @@ const _SuperConverter = class _SuperConverter {
|
|
|
23294
23539
|
getThemeInfo(themeName) {
|
|
23295
23540
|
themeName = themeName.toLowerCase();
|
|
23296
23541
|
const theme1 = this.convertedXml["word/theme/theme1.xml"];
|
|
23542
|
+
if (!theme1) return {};
|
|
23297
23543
|
const themeData = theme1.elements.find((el) => el.name === "a:theme");
|
|
23298
23544
|
const themeElements = themeData.elements.find((el) => el.name === "a:themeElements");
|
|
23299
23545
|
const fontScheme = themeElements.elements.find((el) => el.name === "a:fontScheme");
|
|
@@ -23324,7 +23570,7 @@ const _SuperConverter = class _SuperConverter {
|
|
|
23324
23570
|
const exporter = new DocxExporter(this);
|
|
23325
23571
|
return exporter.schemaToXml(data, debug);
|
|
23326
23572
|
}
|
|
23327
|
-
async exportToDocx(jsonData, editorSchema, documentMedia, isFinalDoc = false, commentsExportType, comments = [], editor
|
|
23573
|
+
async exportToDocx(jsonData, editorSchema, documentMedia, isFinalDoc = false, commentsExportType, comments = [], editor) {
|
|
23328
23574
|
const commentsWithParaIds = comments.map((c) => prepareCommentParaIds(c));
|
|
23329
23575
|
const commentDefinitions = commentsWithParaIds.map((c, index) => getCommentDefinition(c, index, commentsWithParaIds, editor));
|
|
23330
23576
|
const { result, params } = this.exportToXmlJson({
|
|
@@ -23336,7 +23582,6 @@ const _SuperConverter = class _SuperConverter {
|
|
|
23336
23582
|
isFinalDoc,
|
|
23337
23583
|
editor
|
|
23338
23584
|
});
|
|
23339
|
-
if (exportJsonOnly) return result;
|
|
23340
23585
|
const exporter = new DocxExporter(this);
|
|
23341
23586
|
const xml = exporter.schemaToXml(result);
|
|
23342
23587
|
await __privateMethod(this, _SuperConverter_instances, exportProcessMediaFiles_fn).call(this, {
|
|
@@ -23637,7 +23882,7 @@ function storeSuperdocVersion(docx) {
|
|
|
23637
23882
|
function generateCustomXml() {
|
|
23638
23883
|
return DEFAULT_CUSTOM_XML;
|
|
23639
23884
|
}
|
|
23640
|
-
function generateSuperdocVersion(pid = 2, version = "0.13.0-
|
|
23885
|
+
function generateSuperdocVersion(pid = 2, version = "0.13.0-next.2") {
|
|
23641
23886
|
return {
|
|
23642
23887
|
type: "element",
|
|
23643
23888
|
name: "property",
|
|
@@ -23661,7 +23906,7 @@ function generateSuperdocVersion(pid = 2, version = "0.13.0-RC3") {
|
|
|
23661
23906
|
};
|
|
23662
23907
|
}
|
|
23663
23908
|
export {
|
|
23664
|
-
|
|
23909
|
+
Transform as $,
|
|
23665
23910
|
AllSelection as A,
|
|
23666
23911
|
Buffer2 as B,
|
|
23667
23912
|
TrackInsertMarkName as C,
|
|
@@ -23687,20 +23932,15 @@ export {
|
|
|
23687
23932
|
getLineHeightValueString as W,
|
|
23688
23933
|
toKebabCase as X,
|
|
23689
23934
|
kebabCase as Y,
|
|
23690
|
-
|
|
23691
|
-
|
|
23935
|
+
getColStyleDeclaration as Z,
|
|
23936
|
+
SelectionRange as _,
|
|
23692
23937
|
Plugin as a,
|
|
23693
|
-
|
|
23694
|
-
|
|
23695
|
-
|
|
23696
|
-
|
|
23697
|
-
|
|
23698
|
-
|
|
23699
|
-
commonjsGlobal as a6,
|
|
23700
|
-
getDefaultExportFromCjs$1 as a7,
|
|
23701
|
-
getContentTypesFromXml as a8,
|
|
23702
|
-
xmljs as a9,
|
|
23703
|
-
vClickOutside as aa,
|
|
23938
|
+
createColGroup as a0,
|
|
23939
|
+
commonjsGlobal as a1,
|
|
23940
|
+
getDefaultExportFromCjs$1 as a2,
|
|
23941
|
+
getContentTypesFromXml as a3,
|
|
23942
|
+
xmljs as a4,
|
|
23943
|
+
vClickOutside as a5,
|
|
23704
23944
|
canSplit as b,
|
|
23705
23945
|
callOrGet as c,
|
|
23706
23946
|
canJoin as d,
|
|
@@ -23713,13 +23953,13 @@ export {
|
|
|
23713
23953
|
NodeRange as k,
|
|
23714
23954
|
liftTarget as l,
|
|
23715
23955
|
findWrapping as m,
|
|
23716
|
-
|
|
23956
|
+
isMacOS as n,
|
|
23717
23957
|
objectIncludes as o,
|
|
23718
|
-
|
|
23719
|
-
|
|
23958
|
+
isIOS as p,
|
|
23959
|
+
generateDocxRandomId as q,
|
|
23720
23960
|
replaceStep as r,
|
|
23721
|
-
|
|
23722
|
-
|
|
23961
|
+
minMax as s,
|
|
23962
|
+
generateRandom32BitHex as t,
|
|
23723
23963
|
DOMSerializer as u,
|
|
23724
23964
|
Mark as v,
|
|
23725
23965
|
dropPoint as w,
|