@usejunior/docx-core 0.20.1 → 0.21.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/README.md +12 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/conformance-adapter.d.ts.map +1 -1
- package/dist/cli/conformance-adapter.js +0 -27
- package/dist/cli/conformance-adapter.js.map +1 -1
- package/dist/generation/compile.d.ts.map +1 -1
- package/dist/generation/compile.js +1 -3
- package/dist/generation/compile.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/integration/libreoffice-oracle.d.ts +3 -1
- package/dist/integration/libreoffice-oracle.d.ts.map +1 -1
- package/dist/integration/libreoffice-oracle.js +9 -3
- package/dist/integration/libreoffice-oracle.js.map +1 -1
- package/dist/primitives/accept_changes.d.ts +3 -4
- package/dist/primitives/accept_changes.d.ts.map +1 -1
- package/dist/primitives/accept_changes.js +165 -79
- package/dist/primitives/accept_changes.js.map +1 -1
- package/dist/primitives/bookmarks.d.ts +7 -2
- package/dist/primitives/bookmarks.d.ts.map +1 -1
- package/dist/primitives/bookmarks.js +30 -6
- package/dist/primitives/bookmarks.js.map +1 -1
- package/dist/primitives/comments.d.ts +73 -4
- package/dist/primitives/comments.d.ts.map +1 -1
- package/dist/primitives/comments.js +266 -165
- package/dist/primitives/comments.js.map +1 -1
- package/dist/primitives/conformance.d.ts +42 -0
- package/dist/primitives/conformance.d.ts.map +1 -0
- package/dist/primitives/conformance.js +61 -0
- package/dist/primitives/conformance.js.map +1 -0
- package/dist/primitives/document.d.ts +98 -1
- package/dist/primitives/document.d.ts.map +1 -1
- package/dist/primitives/document.js +315 -22
- package/dist/primitives/document.js.map +1 -1
- package/dist/primitives/errors.d.ts +3 -2
- package/dist/primitives/errors.d.ts.map +1 -1
- package/dist/primitives/errors.js +3 -1
- package/dist/primitives/errors.js.map +1 -1
- package/dist/primitives/extract_revisions.d.ts +23 -6
- package/dist/primitives/extract_revisions.d.ts.map +1 -1
- package/dist/primitives/extract_revisions.js +208 -38
- package/dist/primitives/extract_revisions.js.map +1 -1
- package/dist/primitives/footnotes.d.ts +36 -0
- package/dist/primitives/footnotes.d.ts.map +1 -1
- package/dist/primitives/footnotes.js +173 -75
- package/dist/primitives/footnotes.js.map +1 -1
- package/dist/primitives/index.d.ts +7 -1
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +7 -1
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/paragraph-index.d.ts +31 -0
- package/dist/primitives/paragraph-index.d.ts.map +1 -0
- package/dist/primitives/paragraph-index.js +140 -0
- package/dist/primitives/paragraph-index.js.map +1 -0
- package/dist/primitives/paragraph_merge_formatting.d.ts +24 -0
- package/dist/primitives/paragraph_merge_formatting.d.ts.map +1 -0
- package/dist/primitives/paragraph_merge_formatting.js +86 -0
- package/dist/primitives/paragraph_merge_formatting.js.map +1 -0
- package/dist/primitives/paragraph_structure.d.ts +19 -0
- package/dist/primitives/paragraph_structure.d.ts.map +1 -0
- package/dist/primitives/paragraph_structure.js +66 -0
- package/dist/primitives/paragraph_structure.js.map +1 -0
- package/dist/primitives/reject_changes.d.ts +3 -4
- package/dist/primitives/reject_changes.d.ts.map +1 -1
- package/dist/primitives/reject_changes.js +166 -79
- package/dist/primitives/reject_changes.js.map +1 -1
- package/dist/primitives/relationships.d.ts +22 -0
- package/dist/primitives/relationships.d.ts.map +1 -1
- package/dist/primitives/relationships.js +87 -0
- package/dist/primitives/relationships.js.map +1 -1
- package/dist/primitives/revision-parts.d.ts +15 -0
- package/dist/primitives/revision-parts.d.ts.map +1 -1
- package/dist/primitives/revision-parts.js +33 -1
- package/dist/primitives/revision-parts.js.map +1 -1
- package/dist/primitives/sections.d.ts +2 -1
- package/dist/primitives/sections.d.ts.map +1 -1
- package/dist/primitives/sections.js +2 -2
- package/dist/primitives/sections.js.map +1 -1
- package/dist/primitives/styles.d.ts +1 -0
- package/dist/primitives/styles.d.ts.map +1 -1
- package/dist/primitives/styles.js +1 -0
- package/dist/primitives/styles.js.map +1 -1
- package/dist/primitives/table_cells.d.ts +49 -0
- package/dist/primitives/table_cells.d.ts.map +1 -0
- package/dist/primitives/table_cells.js +149 -0
- package/dist/primitives/table_cells.js.map +1 -0
- package/dist/primitives/table_columns.d.ts +50 -0
- package/dist/primitives/table_columns.d.ts.map +1 -0
- package/dist/primitives/table_columns.js +138 -0
- package/dist/primitives/table_columns.js.map +1 -0
- package/dist/primitives/table_edit_common.d.ts +39 -0
- package/dist/primitives/table_edit_common.d.ts.map +1 -0
- package/dist/primitives/table_edit_common.js +163 -0
- package/dist/primitives/table_edit_common.js.map +1 -0
- package/dist/primitives/table_occupancy.d.ts +39 -0
- package/dist/primitives/table_occupancy.d.ts.map +1 -0
- package/dist/primitives/table_occupancy.js +145 -0
- package/dist/primitives/table_occupancy.js.map +1 -0
- package/dist/primitives/table_rows.d.ts +56 -0
- package/dist/primitives/table_rows.d.ts.map +1 -0
- package/dist/primitives/table_rows.js +390 -0
- package/dist/primitives/table_rows.js.map +1 -0
- package/dist/primitives/text.d.ts +40 -1
- package/dist/primitives/text.d.ts.map +1 -1
- package/dist/primitives/text.js +309 -129
- package/dist/primitives/text.js.map +1 -1
- package/dist/primitives/track-changes-emitter.d.ts +16 -2
- package/dist/primitives/track-changes-emitter.d.ts.map +1 -1
- package/dist/primitives/track-changes-emitter.js +38 -13
- package/dist/primitives/track-changes-emitter.js.map +1 -1
- package/dist/primitives/zip.d.ts +22 -1
- package/dist/primitives/zip.d.ts.map +1 -1
- package/dist/primitives/zip.js +47 -8
- package/dist/primitives/zip.js.map +1 -1
- package/dist/shared/docx/DocxArchive.d.ts +6 -2
- package/dist/shared/docx/DocxArchive.d.ts.map +1 -1
- package/dist/shared/docx/DocxArchive.js +10 -4
- package/dist/shared/docx/DocxArchive.js.map +1 -1
- package/dist/shared/field-structure.d.ts +3 -0
- package/dist/shared/field-structure.d.ts.map +1 -1
- package/dist/shared/field-structure.js +7 -5
- package/dist/shared/field-structure.js.map +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table_occupancy.js","sourceRoot":"","sources":["../../src/primitives/table_occupancy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type BookmarkReservation } from './bookmarks.js';
|
|
2
|
+
import { type RevisionContext } from './track-changes-emitter.js';
|
|
3
|
+
export type TableRowEditFeature = 'gridSpan' | 'hMerge' | 'vMerge' | 'gridBefore' | 'gridAfter' | 'nestedTable' | 'rowContainer' | 'cellContainer' | 'tblPrEx' | 'occupancy' | 'trailingParagraph' | 'topologyRevision' | 'lastRow' | 'nestedAnchor' | 'alreadyInserted' | 'alreadyDeleted';
|
|
4
|
+
export type TableRowEditDetail = {
|
|
5
|
+
anchorId: string;
|
|
6
|
+
tableIndex: number;
|
|
7
|
+
rowIndex: number;
|
|
8
|
+
cellIndex?: number;
|
|
9
|
+
childIndex?: number;
|
|
10
|
+
feature: TableRowEditFeature;
|
|
11
|
+
};
|
|
12
|
+
export type InsertTableRowParams = {
|
|
13
|
+
positionalAnchorNodeId: string;
|
|
14
|
+
relativePosition: 'BEFORE' | 'AFTER';
|
|
15
|
+
cellTexts: string[];
|
|
16
|
+
/** @experimental Opt into validated horizontal spans; vertical merges still fail closed. */
|
|
17
|
+
mergeAware?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type InsertTableRowResult = {
|
|
20
|
+
rowIndex: number;
|
|
21
|
+
cellParagraphIds: string[];
|
|
22
|
+
};
|
|
23
|
+
export type DeleteTableRowParams = {
|
|
24
|
+
targetParagraphId: string;
|
|
25
|
+
/** @experimental Opt into validated horizontal spans; vertical merges still fail closed. */
|
|
26
|
+
mergeAware?: boolean;
|
|
27
|
+
};
|
|
28
|
+
export type DeleteTableRowResult = {
|
|
29
|
+
rowIndex: number;
|
|
30
|
+
deleted: true;
|
|
31
|
+
};
|
|
32
|
+
/** Remove the surviving half of any supported range cut by subtree removal. */
|
|
33
|
+
export declare function removeOrphanedRangeEndpointsForSubtree(root: Element, subtree: Element): void;
|
|
34
|
+
/**
|
|
35
|
+
* Resolve a deleted or rejected row without discarding surviving row containers.
|
|
36
|
+
* A table-level sdt/customXml child can hold rows even when no direct tr remains.
|
|
37
|
+
*
|
|
38
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.17
|
|
39
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.12
|
|
40
|
+
* @see #1073
|
|
41
|
+
*/
|
|
42
|
+
export declare function removeTableRowAndEmptyTable(root: Element, row: Element): void;
|
|
43
|
+
/**
|
|
44
|
+
* Remove a resolved row marker and its now-empty property container.
|
|
45
|
+
* An authored empty trPr is normalized to absence after row resolution.
|
|
46
|
+
*
|
|
47
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.17
|
|
48
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.12
|
|
49
|
+
* @see #1040
|
|
50
|
+
*/
|
|
51
|
+
export declare function removeResolvedRowMarker(marker: Element): void;
|
|
52
|
+
/** Insert a rectangular unmerged row using an anchored row's safe formatting shell. */
|
|
53
|
+
export declare function insertTableRow(doc: Document, params: InsertTableRowParams, ctx?: RevisionContext, bookmarkReservation?: BookmarkReservation): InsertTableRowResult;
|
|
54
|
+
/** Delete or deletion-mark a rectangular unmerged row. */
|
|
55
|
+
export declare function deleteTableRow(doc: Document, params: DeleteTableRowParams, ctx?: RevisionContext): DeleteTableRowResult;
|
|
56
|
+
//# sourceMappingURL=table_rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table_rows.d.ts","sourceRoot":"","sources":["../../src/primitives/table_rows.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAA+C,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE/G,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,GAC7D,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,SAAS,GAC5D,WAAW,GAAG,mBAAmB,GAAG,kBAAkB,GACtD,SAAS,GAAG,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,mBAAmB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AACpF,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4FAA4F;IAC5F,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC;AAqCvE,+EAA+E;AAC/E,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB5F;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA6B7E;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAO7D;AAoLD,uFAAuF;AACvF,wBAAgB,cAAc,CAC5B,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,oBAAoB,EAC5B,GAAG,CAAC,EAAE,eAAe,EACrB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,oBAAoB,CA8CtB;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAG,CAAC,EAAE,eAAe,GAAG,oBAAoB,CAmCvH"}
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import { insertSingleParagraphBookmark, findParagraphByBookmarkId, } from './bookmarks.js';
|
|
2
|
+
import { childElements, createWmlElement, getDirectChildrenByName, isW } from './dom-helpers.js';
|
|
3
|
+
import { SafeDocxError } from './errors.js';
|
|
4
|
+
import { OOXML } from './namespaces.js';
|
|
5
|
+
import { inventoryTableOccupancy, TableOccupancyError } from './table_occupancy.js';
|
|
6
|
+
import { allocateRevisionId, createRevisionContainer } from './track-changes-emitter.js';
|
|
7
|
+
const ALLOWED_TABLE_RANGE_MARKERS = new Set([
|
|
8
|
+
'bookmarkStart', 'bookmarkEnd', 'commentRangeStart', 'commentRangeEnd',
|
|
9
|
+
'permStart', 'permEnd', 'proofErr', 'moveFromRangeStart', 'moveFromRangeEnd',
|
|
10
|
+
'moveToRangeStart', 'moveToRangeEnd', 'customXmlInsRangeStart',
|
|
11
|
+
'customXmlInsRangeEnd', 'customXmlDelRangeStart', 'customXmlDelRangeEnd',
|
|
12
|
+
'customXmlMoveFromRangeStart', 'customXmlMoveFromRangeEnd',
|
|
13
|
+
'customXmlMoveToRangeStart', 'customXmlMoveToRangeEnd',
|
|
14
|
+
]);
|
|
15
|
+
const TRPR_EXCLUDED = new Set(['cnfStyle', 'tblHeader', 'hidden', 'divId', 'ins', 'del', 'trPrChange']);
|
|
16
|
+
const TCPR_EXCLUDED = new Set(['cnfStyle', 'hideMark', 'cellIns', 'cellDel', 'cellMerge', 'tcPrChange']);
|
|
17
|
+
const PPR_EXCLUDED = new Set(['numPr', 'sectPr', 'pPrChange']);
|
|
18
|
+
const RPR_EXCLUDED = new Set(['ins', 'del', 'moveFrom', 'moveTo', 'rPrChange']);
|
|
19
|
+
const RANGE_PAIRS = [
|
|
20
|
+
['bookmarkStart', 'bookmarkEnd'], ['commentRangeStart', 'commentRangeEnd'],
|
|
21
|
+
['permStart', 'permEnd'], ['moveFromRangeStart', 'moveFromRangeEnd'],
|
|
22
|
+
['moveToRangeStart', 'moveToRangeEnd'],
|
|
23
|
+
['customXmlInsRangeStart', 'customXmlInsRangeEnd'],
|
|
24
|
+
['customXmlDelRangeStart', 'customXmlDelRangeEnd'],
|
|
25
|
+
['customXmlMoveFromRangeStart', 'customXmlMoveFromRangeEnd'],
|
|
26
|
+
['customXmlMoveToRangeStart', 'customXmlMoveToRangeEnd'],
|
|
27
|
+
];
|
|
28
|
+
function markerId(marker) {
|
|
29
|
+
return marker.getAttributeNS(OOXML.W_NS, 'id') ?? marker.getAttribute('w:id');
|
|
30
|
+
}
|
|
31
|
+
/** Remove the surviving half of any supported range cut by subtree removal. */
|
|
32
|
+
export function removeOrphanedRangeEndpointsForSubtree(root, subtree) {
|
|
33
|
+
for (const [startName, endName] of RANGE_PAIRS) {
|
|
34
|
+
const starts = Array.from(root.getElementsByTagNameNS(OOXML.W_NS, startName));
|
|
35
|
+
const ends = Array.from(root.getElementsByTagNameNS(OOXML.W_NS, endName));
|
|
36
|
+
for (const start of starts) {
|
|
37
|
+
const id = markerId(start);
|
|
38
|
+
if (!id)
|
|
39
|
+
continue;
|
|
40
|
+
const end = ends.find((candidate) => markerId(candidate) === id);
|
|
41
|
+
if (!end)
|
|
42
|
+
continue;
|
|
43
|
+
const startInside = subtree === start || subtree.contains(start);
|
|
44
|
+
const endInside = subtree === end || subtree.contains(end);
|
|
45
|
+
if (startInside !== endInside) {
|
|
46
|
+
const survivor = startInside ? end : start;
|
|
47
|
+
survivor.parentNode?.removeChild(survivor);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve a deleted or rejected row without discarding surviving row containers.
|
|
54
|
+
* A table-level sdt/customXml child can hold rows even when no direct tr remains.
|
|
55
|
+
*
|
|
56
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.17
|
|
57
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.12
|
|
58
|
+
* @see #1073
|
|
59
|
+
*/
|
|
60
|
+
export function removeTableRowAndEmptyTable(root, row) {
|
|
61
|
+
const wrappers = [];
|
|
62
|
+
let parent = row.parentNode;
|
|
63
|
+
while (parent?.nodeType === 1 && !isW(parent, 'tbl')) {
|
|
64
|
+
if (isW(parent, 'sdtContent') && parent.parentNode?.nodeType === 1
|
|
65
|
+
&& isW(parent.parentNode, 'sdt')) {
|
|
66
|
+
wrappers.push(parent.parentNode);
|
|
67
|
+
parent = parent.parentNode.parentNode;
|
|
68
|
+
}
|
|
69
|
+
else if (isW(parent, 'customXml')) {
|
|
70
|
+
wrappers.push(parent);
|
|
71
|
+
parent = parent.parentNode;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!parent || parent.nodeType !== 1 || !isW(parent, 'tbl'))
|
|
78
|
+
return;
|
|
79
|
+
const table = parent;
|
|
80
|
+
removeOrphanedRangeEndpointsForSubtree(root, row);
|
|
81
|
+
row.parentNode?.removeChild(row);
|
|
82
|
+
for (const wrapper of wrappers) {
|
|
83
|
+
if (wrapper.getElementsByTagNameNS(OOXML.W_NS, 'tr').length === 0) {
|
|
84
|
+
removeOrphanedRangeEndpointsForSubtree(root, wrapper);
|
|
85
|
+
wrapper.parentNode?.removeChild(wrapper);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (!childElements(table).some((child) => isW(child, 'tr') || isW(child, 'sdt') || isW(child, 'customXml'))) {
|
|
89
|
+
table.parentNode?.removeChild(table);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Remove a resolved row marker and its now-empty property container.
|
|
94
|
+
* An authored empty trPr is normalized to absence after row resolution.
|
|
95
|
+
*
|
|
96
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.17
|
|
97
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.12
|
|
98
|
+
* @see #1040
|
|
99
|
+
*/
|
|
100
|
+
export function removeResolvedRowMarker(marker) {
|
|
101
|
+
const trPr = marker.parentNode;
|
|
102
|
+
trPr?.removeChild(marker);
|
|
103
|
+
if (trPr?.nodeType === 1 && isW(trPr, 'trPr')
|
|
104
|
+
&& childElements(trPr).length === 0 && trPr.attributes.length === 0) {
|
|
105
|
+
trPr.parentNode?.removeChild(trPr);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function nearestWAncestor(node, localName) {
|
|
109
|
+
let current = node?.parentNode ?? null;
|
|
110
|
+
while (current) {
|
|
111
|
+
if (current.nodeType === 1 && isW(current, localName))
|
|
112
|
+
return current;
|
|
113
|
+
current = current.parentNode;
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
function detail(anchorId, tableIndex, rowIndex, feature, extra) {
|
|
118
|
+
return { anchorId, tableIndex, rowIndex, feature, ...extra };
|
|
119
|
+
}
|
|
120
|
+
function fail(code, message, info) {
|
|
121
|
+
throw new SafeDocxError(code, message, undefined, info);
|
|
122
|
+
}
|
|
123
|
+
function directBodyTables(body) {
|
|
124
|
+
return childElements(body).filter((element) => isW(element, 'tbl'));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Validate a phase-one table-row target without mutating the DOM.
|
|
128
|
+
*
|
|
129
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.4.48
|
|
130
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.4.65
|
|
131
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.4.23
|
|
132
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.4.84
|
|
133
|
+
* @see #764
|
|
134
|
+
*/
|
|
135
|
+
function resolveTableShape(doc, anchorId, mergeAware = false) {
|
|
136
|
+
const paragraph = findParagraphByBookmarkId(doc, anchorId);
|
|
137
|
+
if (!paragraph) {
|
|
138
|
+
fail('INVALID_ARGUMENT', `Paragraph anchor not found: ${anchorId}`, detail(anchorId, -1, -1, 'nestedAnchor'));
|
|
139
|
+
}
|
|
140
|
+
const cell = nearestWAncestor(paragraph, 'tc');
|
|
141
|
+
const row = nearestWAncestor(paragraph, 'tr');
|
|
142
|
+
const table = nearestWAncestor(paragraph, 'tbl');
|
|
143
|
+
const body = nearestWAncestor(table, 'body');
|
|
144
|
+
if (!cell || !row || !table || !body || row.parentNode !== table || table.parentNode !== body) {
|
|
145
|
+
fail('UNSUPPORTED_EDIT', 'Table row anchor must resolve to a direct row in a body-level table', detail(anchorId, -1, -1, 'nestedAnchor'));
|
|
146
|
+
}
|
|
147
|
+
const tableIndex = directBodyTables(body).indexOf(table);
|
|
148
|
+
const grid = getDirectChildrenByName(table, 'tblGrid')[0];
|
|
149
|
+
const gridColumns = grid ? getDirectChildrenByName(grid, 'gridCol').length : 0;
|
|
150
|
+
if (gridColumns < 1)
|
|
151
|
+
fail('UNSUPPORTED_EDIT', 'Table has no direct grid columns', detail(anchorId, tableIndex, -1, 'occupancy'));
|
|
152
|
+
if (grid && grid.getElementsByTagNameNS(OOXML.W_NS, 'tblGridChange').length > 0) {
|
|
153
|
+
fail('UNSUPPORTED_EDIT', 'Table grid has tracked topology', detail(anchorId, tableIndex, -1, 'topologyRevision'));
|
|
154
|
+
}
|
|
155
|
+
const rows = [];
|
|
156
|
+
for (const [childIndex, child] of childElements(table).entries()) {
|
|
157
|
+
if (isW(child, 'tblPr') || isW(child, 'tblGrid') || ALLOWED_TABLE_RANGE_MARKERS.has(child.localName))
|
|
158
|
+
continue;
|
|
159
|
+
if (!isW(child, 'tr')) {
|
|
160
|
+
fail('UNSUPPORTED_EDIT', 'Table contains an unsupported row container', detail(anchorId, tableIndex, rows.length, 'rowContainer', { childIndex }));
|
|
161
|
+
}
|
|
162
|
+
rows.push(child);
|
|
163
|
+
}
|
|
164
|
+
const rowIndex = rows.indexOf(row);
|
|
165
|
+
if (rowIndex < 0)
|
|
166
|
+
fail('UNSUPPORTED_EDIT', 'Anchor row is not a direct table row', detail(anchorId, tableIndex, -1, 'nestedAnchor'));
|
|
167
|
+
const cells = [];
|
|
168
|
+
for (const [currentRowIndex, currentRow] of rows.entries()) {
|
|
169
|
+
const tblPrEx = getDirectChildrenByName(currentRow, 'tblPrEx')[0];
|
|
170
|
+
if (tblPrEx?.getElementsByTagNameNS(OOXML.W_NS, 'tblPrExChange').length) {
|
|
171
|
+
fail('UNSUPPORTED_EDIT', 'Row contains a topology revision', detail(anchorId, tableIndex, currentRowIndex, 'topologyRevision'));
|
|
172
|
+
}
|
|
173
|
+
if (tblPrEx) {
|
|
174
|
+
fail('UNSUPPORTED_EDIT', 'Row carries table-property exceptions', detail(anchorId, tableIndex, currentRowIndex, 'tblPrEx'));
|
|
175
|
+
}
|
|
176
|
+
const trPr = getDirectChildrenByName(currentRow, 'trPr')[0];
|
|
177
|
+
for (const feature of ['gridBefore', 'gridAfter']) {
|
|
178
|
+
if (trPr && getDirectChildrenByName(trPr, feature).length > 0) {
|
|
179
|
+
fail('UNSUPPORTED_EDIT', `Row uses ${feature}`, detail(anchorId, tableIndex, currentRowIndex, feature));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (trPr?.getElementsByTagNameNS(OOXML.W_NS, 'trPrChange').length) {
|
|
183
|
+
const snapshot = trPr.getElementsByTagNameNS(OOXML.W_NS, 'trPrChange').item(0);
|
|
184
|
+
if (snapshot.getElementsByTagNameNS(OOXML.W_NS, 'gridBefore').length || snapshot.getElementsByTagNameNS(OOXML.W_NS, 'gridAfter').length) {
|
|
185
|
+
fail('UNSUPPORTED_EDIT', 'Row property change affects topology', detail(anchorId, tableIndex, currentRowIndex, 'topologyRevision'));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const rowCells = [];
|
|
189
|
+
for (const [childIndex, child] of childElements(currentRow).entries()) {
|
|
190
|
+
if (isW(child, 'trPr') || isW(child, 'tblPrEx') || ALLOWED_TABLE_RANGE_MARKERS.has(child.localName))
|
|
191
|
+
continue;
|
|
192
|
+
if (!isW(child, 'tc')) {
|
|
193
|
+
fail('UNSUPPORTED_EDIT', 'Row contains an unsupported cell container', detail(anchorId, tableIndex, currentRowIndex, 'cellContainer', { childIndex }));
|
|
194
|
+
}
|
|
195
|
+
rowCells.push(child);
|
|
196
|
+
}
|
|
197
|
+
if (!mergeAware && rowCells.length !== gridColumns) {
|
|
198
|
+
fail('UNSUPPORTED_EDIT', 'Row occupancy does not match tblGrid', detail(anchorId, tableIndex, currentRowIndex, 'occupancy'));
|
|
199
|
+
}
|
|
200
|
+
for (const [cellIndex, currentCell] of rowCells.entries()) {
|
|
201
|
+
const tcPr = getDirectChildrenByName(currentCell, 'tcPr')[0];
|
|
202
|
+
for (const feature of (mergeAware ? ['hMerge', 'vMerge'] : ['gridSpan', 'hMerge', 'vMerge'])) {
|
|
203
|
+
if (tcPr && getDirectChildrenByName(tcPr, feature).length > 0) {
|
|
204
|
+
fail('UNSUPPORTED_EDIT', `Cell uses ${feature}`, detail(anchorId, tableIndex, currentRowIndex, feature, { cellIndex }));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const tcPrChange = tcPr ? getDirectChildrenByName(tcPr, 'tcPrChange')[0] : undefined;
|
|
208
|
+
if (tcPrChange && (tcPrChange.getElementsByTagNameNS(OOXML.W_NS, 'gridSpan').length
|
|
209
|
+
|| tcPrChange.getElementsByTagNameNS(OOXML.W_NS, 'vMerge').length)) {
|
|
210
|
+
fail('UNSUPPORTED_EDIT', 'Cell property change affects topology', detail(anchorId, tableIndex, currentRowIndex, 'topologyRevision', { cellIndex }));
|
|
211
|
+
}
|
|
212
|
+
if (currentCell.getElementsByTagNameNS(OOXML.W_NS, 'tbl').length > 0) {
|
|
213
|
+
fail('UNSUPPORTED_EDIT', 'Cell contains a nested table', detail(anchorId, tableIndex, currentRowIndex, 'nestedTable', { cellIndex }));
|
|
214
|
+
}
|
|
215
|
+
for (const revision of ['cellIns', 'cellDel', 'cellMerge', 'tblPrExChange']) {
|
|
216
|
+
if (currentCell.getElementsByTagNameNS(OOXML.W_NS, revision).length > 0) {
|
|
217
|
+
fail('UNSUPPORTED_EDIT', 'Cell contains a topology revision', detail(anchorId, tableIndex, currentRowIndex, 'topologyRevision', { cellIndex }));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const blocks = childElements(currentCell).filter((child) => !isW(child, 'tcPr') && !ALLOWED_TABLE_RANGE_MARKERS.has(child.localName));
|
|
221
|
+
if (!blocks.length || !isW(blocks[blocks.length - 1], 'p')) {
|
|
222
|
+
fail('UNSUPPORTED_EDIT', 'Cell does not end in a direct paragraph', detail(anchorId, tableIndex, currentRowIndex, 'trailingParagraph', { cellIndex }));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
cells.push(rowCells);
|
|
226
|
+
}
|
|
227
|
+
if (mergeAware) {
|
|
228
|
+
try {
|
|
229
|
+
inventoryTableOccupancy(table);
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
if (!(error instanceof TableOccupancyError))
|
|
233
|
+
throw error;
|
|
234
|
+
fail('UNSUPPORTED_EDIT', error.message, detail(anchorId, tableIndex, error.rowIndex, error.feature, { cellIndex: error.cellIndex }));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return { table, rows, anchorRow: row, rowIndex, tableIndex, cells };
|
|
238
|
+
}
|
|
239
|
+
function cloneFilteredProperties(source, localName, excluded) {
|
|
240
|
+
if (!source)
|
|
241
|
+
return null;
|
|
242
|
+
const doc = source.ownerDocument;
|
|
243
|
+
const clone = createWmlElement(doc, localName);
|
|
244
|
+
for (let i = 0; i < source.attributes.length; i++) {
|
|
245
|
+
const attribute = source.attributes.item(i);
|
|
246
|
+
clone.setAttributeNS(attribute.namespaceURI, attribute.name, attribute.value);
|
|
247
|
+
}
|
|
248
|
+
for (const child of childElements(source)) {
|
|
249
|
+
if (!excluded.has(child.localName))
|
|
250
|
+
clone.appendChild(child.cloneNode(true));
|
|
251
|
+
}
|
|
252
|
+
return clone;
|
|
253
|
+
}
|
|
254
|
+
function appendRevisionMarker(parent, kind, ctx) {
|
|
255
|
+
const marker = createWmlElement(parent.ownerDocument, kind, {
|
|
256
|
+
'w:id': String(allocateRevisionId(ctx.idState)), 'w:author': ctx.author, 'w:date': ctx.date,
|
|
257
|
+
});
|
|
258
|
+
const change = getDirectChildrenByName(parent, 'trPrChange')[0];
|
|
259
|
+
parent.insertBefore(marker, change ?? null);
|
|
260
|
+
}
|
|
261
|
+
function ensureParagraphMarker(paragraph, kind, ctx) {
|
|
262
|
+
let pPr = getDirectChildrenByName(paragraph, 'pPr')[0];
|
|
263
|
+
if (!pPr) {
|
|
264
|
+
pPr = createWmlElement(paragraph.ownerDocument, 'pPr');
|
|
265
|
+
paragraph.insertBefore(pPr, paragraph.firstChild);
|
|
266
|
+
}
|
|
267
|
+
let rPr = getDirectChildrenByName(pPr, 'rPr')[0];
|
|
268
|
+
if (!rPr) {
|
|
269
|
+
rPr = createWmlElement(paragraph.ownerDocument, 'rPr');
|
|
270
|
+
const before = getDirectChildrenByName(pPr, 'sectPr')[0]
|
|
271
|
+
?? getDirectChildrenByName(pPr, 'pPrChange')[0]
|
|
272
|
+
?? null;
|
|
273
|
+
pPr.insertBefore(rPr, before);
|
|
274
|
+
}
|
|
275
|
+
const marker = createWmlElement(paragraph.ownerDocument, kind, {
|
|
276
|
+
'w:id': String(allocateRevisionId(ctx.idState)), 'w:author': ctx.author, 'w:date': ctx.date,
|
|
277
|
+
});
|
|
278
|
+
rPr.insertBefore(marker, rPr.firstChild);
|
|
279
|
+
}
|
|
280
|
+
function appendText(run, text) {
|
|
281
|
+
const t = createWmlElement(run.ownerDocument, 't');
|
|
282
|
+
if (text.startsWith(' ') || text.endsWith(' '))
|
|
283
|
+
t.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
|
|
284
|
+
t.appendChild(run.ownerDocument.createTextNode(text));
|
|
285
|
+
run.appendChild(t);
|
|
286
|
+
}
|
|
287
|
+
/** Insert a rectangular unmerged row using an anchored row's safe formatting shell. */
|
|
288
|
+
export function insertTableRow(doc, params, ctx, bookmarkReservation) {
|
|
289
|
+
const shape = resolveTableShape(doc, params.positionalAnchorNodeId, params.mergeAware);
|
|
290
|
+
const anchorCells = shape.cells[shape.rowIndex];
|
|
291
|
+
if (params.cellTexts.length !== anchorCells.length) {
|
|
292
|
+
fail('INVALID_ARGUMENT', 'cellTexts must match the table grid column count', detail(params.positionalAnchorNodeId, shape.tableIndex, shape.rowIndex, 'occupancy'));
|
|
293
|
+
}
|
|
294
|
+
const newRow = createWmlElement(doc, 'tr');
|
|
295
|
+
const trPr = cloneFilteredProperties(getDirectChildrenByName(shape.anchorRow, 'trPr')[0], 'trPr', TRPR_EXCLUDED) ?? createWmlElement(doc, 'trPr');
|
|
296
|
+
if (ctx)
|
|
297
|
+
appendRevisionMarker(trPr, 'ins', ctx);
|
|
298
|
+
if (trPr.childNodes.length > 0)
|
|
299
|
+
newRow.appendChild(trPr);
|
|
300
|
+
const newParagraphs = [];
|
|
301
|
+
for (const [cellIndex, text] of params.cellTexts.entries()) {
|
|
302
|
+
const sourceCell = anchorCells[cellIndex];
|
|
303
|
+
const newCell = createWmlElement(doc, 'tc');
|
|
304
|
+
const tcPr = cloneFilteredProperties(getDirectChildrenByName(sourceCell, 'tcPr')[0], 'tcPr', TCPR_EXCLUDED);
|
|
305
|
+
if (tcPr)
|
|
306
|
+
newCell.appendChild(tcPr);
|
|
307
|
+
const sourceParagraph = getDirectChildrenByName(sourceCell, 'p')[0];
|
|
308
|
+
const paragraph = createWmlElement(doc, 'p');
|
|
309
|
+
const pPr = cloneFilteredProperties(sourceParagraph ? getDirectChildrenByName(sourceParagraph, 'pPr')[0] : undefined, 'pPr', PPR_EXCLUDED);
|
|
310
|
+
if (pPr) {
|
|
311
|
+
const markRPr = getDirectChildrenByName(pPr, 'rPr')[0];
|
|
312
|
+
if (markRPr)
|
|
313
|
+
for (const child of childElements(markRPr))
|
|
314
|
+
if (RPR_EXCLUDED.has(child.localName))
|
|
315
|
+
markRPr.removeChild(child);
|
|
316
|
+
paragraph.appendChild(pPr);
|
|
317
|
+
}
|
|
318
|
+
const run = createWmlElement(doc, 'r');
|
|
319
|
+
const sourceMarkRPr = pPr ? getDirectChildrenByName(pPr, 'rPr')[0] : undefined;
|
|
320
|
+
const runRPr = cloneFilteredProperties(sourceMarkRPr, 'rPr', RPR_EXCLUDED);
|
|
321
|
+
if (runRPr)
|
|
322
|
+
run.appendChild(runRPr);
|
|
323
|
+
appendText(run, text);
|
|
324
|
+
if (ctx) {
|
|
325
|
+
ensureParagraphMarker(paragraph, 'ins', ctx);
|
|
326
|
+
const wrapper = createRevisionContainer(doc, 'ins', ctx);
|
|
327
|
+
wrapper.appendChild(run);
|
|
328
|
+
paragraph.appendChild(wrapper);
|
|
329
|
+
}
|
|
330
|
+
else
|
|
331
|
+
paragraph.appendChild(run);
|
|
332
|
+
newCell.appendChild(paragraph);
|
|
333
|
+
newRow.appendChild(newCell);
|
|
334
|
+
newParagraphs.push(paragraph);
|
|
335
|
+
}
|
|
336
|
+
const ref = params.relativePosition === 'BEFORE' ? shape.anchorRow : shape.anchorRow.nextSibling;
|
|
337
|
+
shape.table.insertBefore(newRow, ref);
|
|
338
|
+
const cellParagraphIds = newParagraphs.map((paragraph) => insertSingleParagraphBookmark(doc, paragraph, bookmarkReservation));
|
|
339
|
+
return { rowIndex: shape.rowIndex + (params.relativePosition === 'AFTER' ? 1 : 0), cellParagraphIds };
|
|
340
|
+
}
|
|
341
|
+
/** Delete or deletion-mark a rectangular unmerged row. */
|
|
342
|
+
export function deleteTableRow(doc, params, ctx) {
|
|
343
|
+
const shape = resolveTableShape(doc, params.targetParagraphId, params.mergeAware);
|
|
344
|
+
if (shape.rows.length === 1)
|
|
345
|
+
fail('INVALID_ARGUMENT', 'Cannot delete the final table row', detail(params.targetParagraphId, shape.tableIndex, shape.rowIndex, 'lastRow'));
|
|
346
|
+
if (!ctx) {
|
|
347
|
+
removeOrphanedRangeEndpointsForSubtree(doc.documentElement, shape.anchorRow);
|
|
348
|
+
shape.table.removeChild(shape.anchorRow);
|
|
349
|
+
return { rowIndex: shape.rowIndex, deleted: true };
|
|
350
|
+
}
|
|
351
|
+
let trPr = getDirectChildrenByName(shape.anchorRow, 'trPr')[0];
|
|
352
|
+
if (!trPr) {
|
|
353
|
+
trPr = createWmlElement(doc, 'trPr');
|
|
354
|
+
shape.anchorRow.insertBefore(trPr, shape.anchorRow.firstChild);
|
|
355
|
+
}
|
|
356
|
+
if (getDirectChildrenByName(trPr, 'ins').length)
|
|
357
|
+
fail('INVALID_ARGUMENT', 'Cannot deletion-mark an already inserted row', detail(params.targetParagraphId, shape.tableIndex, shape.rowIndex, 'alreadyInserted'));
|
|
358
|
+
if (getDirectChildrenByName(trPr, 'del').length)
|
|
359
|
+
fail('INVALID_ARGUMENT', 'Row is already deletion-marked', detail(params.targetParagraphId, shape.tableIndex, shape.rowIndex, 'alreadyDeleted'));
|
|
360
|
+
appendRevisionMarker(trPr, 'del', ctx);
|
|
361
|
+
for (const cell of shape.cells[shape.rowIndex]) {
|
|
362
|
+
const paragraphs = getDirectChildrenByName(cell, 'p');
|
|
363
|
+
for (const [paragraphIndex, paragraph] of paragraphs.entries()) {
|
|
364
|
+
if (paragraphIndex < paragraphs.length - 1)
|
|
365
|
+
ensureParagraphMarker(paragraph, 'del', ctx);
|
|
366
|
+
for (const run of Array.from(paragraph.getElementsByTagNameNS(OOXML.W_NS, 'r'))) {
|
|
367
|
+
const parent = run.parentNode;
|
|
368
|
+
const parentElement = parent?.nodeType === 1 ? parent : null;
|
|
369
|
+
if (!parentElement || isW(parentElement, 'ins') || isW(parentElement, 'del') || isW(parentElement, 'moveFrom') || isW(parentElement, 'moveTo'))
|
|
370
|
+
continue;
|
|
371
|
+
const wrapper = createRevisionContainer(doc, 'del', ctx);
|
|
372
|
+
const cloned = run.cloneNode(true);
|
|
373
|
+
for (const text of Array.from(cloned.getElementsByTagNameNS(OOXML.W_NS, 't'))) {
|
|
374
|
+
const renamed = createWmlElement(doc, 'delText');
|
|
375
|
+
for (let i = 0; i < text.attributes.length; i++) {
|
|
376
|
+
const a = text.attributes.item(i);
|
|
377
|
+
renamed.setAttributeNS(a.namespaceURI, a.name, a.value);
|
|
378
|
+
}
|
|
379
|
+
while (text.firstChild)
|
|
380
|
+
renamed.appendChild(text.firstChild);
|
|
381
|
+
text.parentNode?.replaceChild(renamed, text);
|
|
382
|
+
}
|
|
383
|
+
wrapper.appendChild(cloned);
|
|
384
|
+
parentElement.replaceChild(wrapper, run);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return { rowIndex: shape.rowIndex, deleted: true };
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=table_rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table_rows.js","sourceRoot":"","sources":["../../src/primitives/table_rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,15 @@ export declare function getParagraphRuns(p: Element): TextRun[];
|
|
|
18
18
|
export declare function getParagraphText(p: Element): string;
|
|
19
19
|
export declare function visibleLengthForEl(el: Element): number;
|
|
20
20
|
export declare function getDirectContentElements(run: Element): Element[];
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Which side of a split receives the zero-length run content (field markers,
|
|
23
|
+
* note references, proofing marks, ...) that sits exactly at the split offset,
|
|
24
|
+
* between the last visible character before it and the first one after it.
|
|
25
|
+
* A range boundary uses the side outside the range: `left` at a range start,
|
|
26
|
+
* `right` at a range end (issue #1096).
|
|
27
|
+
*/
|
|
28
|
+
export type ZeroLengthAtOffsetSide = 'left' | 'right';
|
|
29
|
+
export declare function splitRunAtVisibleOffset(run: Element, offset: number, zeroLengthAtOffset?: ZeroLengthAtOffsetSide): {
|
|
22
30
|
left: Element;
|
|
23
31
|
right: Element;
|
|
24
32
|
};
|
|
@@ -36,7 +44,26 @@ export type ReplacementPart = {
|
|
|
36
44
|
templateRun?: Element | null;
|
|
37
45
|
addRunProps?: AddRunProps;
|
|
38
46
|
clearHighlight?: boolean;
|
|
47
|
+
/** Preserve an intentional xml:space marker during text-identical rebuilds. */
|
|
48
|
+
preserveXmlSpace?: boolean;
|
|
39
49
|
};
|
|
50
|
+
export type TextRangeRunFormat = {
|
|
51
|
+
underline?: 'single' | 'none';
|
|
52
|
+
highlight?: 'yellow' | 'none';
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Change direct run properties over an exact visible-text range while keeping
|
|
56
|
+
* every character and each touched run's undeclared direct properties.
|
|
57
|
+
*
|
|
58
|
+
* The existing bounded replacement engine owns boundary splitting and rejects
|
|
59
|
+
* unsafe container crossings. This wrapper supplies one text-identical part
|
|
60
|
+
* per touched run, so harmless physical fragmentation is retained rather than
|
|
61
|
+
* flattened.
|
|
62
|
+
*
|
|
63
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.3.2.28
|
|
64
|
+
* @see #998
|
|
65
|
+
*/
|
|
66
|
+
export declare function formatParagraphTextRange(paragraph: Element, start: number, end: number, format: TextRangeRunFormat): void;
|
|
40
67
|
/**
|
|
41
68
|
* Replace a visible paragraph range while keeping tracked runs inside their
|
|
42
69
|
* existing run container. In particular, edits wholly inside `w:hyperlink`
|
|
@@ -48,6 +75,16 @@ export type ReplacementPart = {
|
|
|
48
75
|
* visible text, so no text match ever covers it and no text edit may delete
|
|
49
76
|
* it. Tracked deletions around preserved content are emitted as in-place
|
|
50
77
|
* segments so rejectChanges() restores the original content order exactly.
|
|
78
|
+
* A comment's reference mark is preserved the same way, and zero-length
|
|
79
|
+
* sibling markers inside the range (comment range start/end, a result-less
|
|
80
|
+
* `w:fldSimple`, bookmarks) stay live where they are, with the deletion split
|
|
81
|
+
* around them, so reject-all equals the original paragraph.
|
|
82
|
+
*
|
|
83
|
+
* Blanking the whole paragraph deletes its paragraph mark (tracked) or
|
|
84
|
+
* removes the paragraph (untracked) only when nothing that renders or
|
|
85
|
+
* anchors is left: embedded content, a bookmark or a comment range keeps the
|
|
86
|
+
* paragraph in both modes, so accept-all of the tracked edit equals the
|
|
87
|
+
* untracked edit and a bookmark never disappears.
|
|
51
88
|
*
|
|
52
89
|
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.14
|
|
53
90
|
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.15
|
|
@@ -55,6 +92,8 @@ export type ReplacementPart = {
|
|
|
55
92
|
* @see #652
|
|
56
93
|
* @see #741
|
|
57
94
|
* @see #739
|
|
95
|
+
* @see #1083
|
|
96
|
+
* @see #1098
|
|
58
97
|
*/
|
|
59
98
|
export declare function replaceParagraphTextRange(p: Element, start: number, end: number, replacement: string | ReplacementPart[], ctx?: RevisionContext): void;
|
|
60
99
|
//# sourceMappingURL=text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/primitives/text.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/primitives/text.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAKpC,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAUtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAInD;AAiHD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAMtD;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,EAAE,CAWhE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,kBAAkB,GAAE,sBAAgC,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAiEnC;AAyID,MAAM,MAAM,WAAW,GAAG;IAGxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAwDN;AA6UD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,EACvC,GAAG,CAAC,EAAE,eAAe,GACpB,IAAI,CAqUN"}
|