@usejunior/docx-core 0.9.1 → 0.11.0
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/LICENSE +202 -21
- package/NOTICE +2 -0
- package/README.md +2 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/atomizer.d.ts +28 -8
- package/dist/atomizer.d.ts.map +1 -1
- package/dist/atomizer.js +96 -25
- package/dist/atomizer.js.map +1 -1
- package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts +99 -0
- package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts.map +1 -0
- package/dist/baselines/atomizer/auxiliaryIdCollision.js +415 -0
- package/dist/baselines/atomizer/auxiliaryIdCollision.js.map +1 -0
- package/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -1
- package/dist/baselines/atomizer/documentReconstructor.js +333 -112
- package/dist/baselines/atomizer/documentReconstructor.js.map +1 -1
- package/dist/baselines/atomizer/formattingFidelity.d.ts +99 -0
- package/dist/baselines/atomizer/formattingFidelity.d.ts.map +1 -0
- package/dist/baselines/atomizer/formattingFidelity.js +449 -0
- package/dist/baselines/atomizer/formattingFidelity.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts +37 -0
- package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js +189 -0
- package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts +74 -0
- package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-containers.js +171 -0
- package/dist/baselines/atomizer/inPlaceModifier-containers.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts +88 -0
- package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-deletion.js +326 -0
- package/dist/baselines/atomizer/inPlaceModifier-deletion.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts +85 -0
- package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-postprocess.js +402 -0
- package/dist/baselines/atomizer/inPlaceModifier-postprocess.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts +39 -0
- package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-presplit.js +265 -0
- package/dist/baselines/atomizer/inPlaceModifier-presplit.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts +62 -0
- package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-shared.js +139 -0
- package/dist/baselines/atomizer/inPlaceModifier-shared.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts +198 -0
- package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier-wrappers.js +475 -0
- package/dist/baselines/atomizer/inPlaceModifier-wrappers.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier.d.ts +6 -290
- package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -1
- package/dist/baselines/atomizer/inPlaceModifier.js +23 -1828
- package/dist/baselines/atomizer/inPlaceModifier.js.map +1 -1
- package/dist/baselines/atomizer/pipeline.d.ts +36 -2
- package/dist/baselines/atomizer/pipeline.d.ts.map +1 -1
- package/dist/baselines/atomizer/pipeline.js +216 -144
- package/dist/baselines/atomizer/pipeline.js.map +1 -1
- package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +1 -1
- package/dist/baselines/atomizer/trackChangesAcceptorAst.js +199 -173
- package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +1 -1
- package/dist/baselines/wmlcomparer/DotnetCli.d.ts.map +1 -1
- package/dist/baselines/wmlcomparer/DotnetCli.js +7 -0
- package/dist/baselines/wmlcomparer/DotnetCli.js.map +1 -1
- package/dist/cli/compare-two.d.ts.map +1 -1
- package/dist/cli/compare-two.js +3 -1
- package/dist/cli/compare-two.js.map +1 -1
- package/dist/cli/conformance-adapter.d.ts +3 -0
- package/dist/cli/conformance-adapter.d.ts.map +1 -0
- package/dist/cli/conformance-adapter.js +93 -0
- package/dist/cli/conformance-adapter.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/compare-types.d.ts +197 -0
- package/dist/compare-types.d.ts.map +1 -0
- package/dist/compare-types.js +2 -0
- package/dist/compare-types.js.map +1 -0
- package/dist/core-types.d.ts +5 -1
- package/dist/core-types.d.ts.map +1 -1
- package/dist/core-types.js +5 -1
- package/dist/core-types.js.map +1 -1
- package/dist/footnotes.d.ts +8 -3
- package/dist/footnotes.d.ts.map +1 -1
- package/dist/footnotes.js +8 -3
- package/dist/footnotes.js.map +1 -1
- package/dist/generation/compile.d.ts +21 -0
- package/dist/generation/compile.d.ts.map +1 -0
- package/dist/generation/compile.js +46 -0
- package/dist/generation/compile.js.map +1 -0
- package/dist/generation/context.d.ts +42 -0
- package/dist/generation/context.d.ts.map +1 -0
- package/dist/generation/context.js +65 -0
- package/dist/generation/context.js.map +1 -0
- package/dist/generation/emit/comments-part.d.ts +36 -0
- package/dist/generation/emit/comments-part.d.ts.map +1 -0
- package/dist/generation/emit/comments-part.js +116 -0
- package/dist/generation/emit/comments-part.js.map +1 -0
- package/dist/generation/emit/document-part.d.ts +24 -0
- package/dist/generation/emit/document-part.d.ts.map +1 -0
- package/dist/generation/emit/document-part.js +60 -0
- package/dist/generation/emit/document-part.js.map +1 -0
- package/dist/generation/emit/emit-context.d.ts +26 -0
- package/dist/generation/emit/emit-context.d.ts.map +1 -0
- package/dist/generation/emit/emit-context.js +19 -0
- package/dist/generation/emit/emit-context.js.map +1 -0
- package/dist/generation/emit/header-footer-part.d.ts +23 -0
- package/dist/generation/emit/header-footer-part.d.ts.map +1 -0
- package/dist/generation/emit/header-footer-part.js +57 -0
- package/dist/generation/emit/header-footer-part.js.map +1 -0
- package/dist/generation/emit/numbering-part.d.ts +29 -0
- package/dist/generation/emit/numbering-part.d.ts.map +1 -0
- package/dist/generation/emit/numbering-part.js +100 -0
- package/dist/generation/emit/numbering-part.js.map +1 -0
- package/dist/generation/emit/package-parts.d.ts +24 -0
- package/dist/generation/emit/package-parts.d.ts.map +1 -0
- package/dist/generation/emit/package-parts.js +121 -0
- package/dist/generation/emit/package-parts.js.map +1 -0
- package/dist/generation/emit/paragraph.d.ts +24 -0
- package/dist/generation/emit/paragraph.d.ts.map +1 -0
- package/dist/generation/emit/paragraph.js +63 -0
- package/dist/generation/emit/paragraph.js.map +1 -0
- package/dist/generation/emit/properties.d.ts +34 -0
- package/dist/generation/emit/properties.d.ts.map +1 -0
- package/dist/generation/emit/properties.js +138 -0
- package/dist/generation/emit/properties.js.map +1 -0
- package/dist/generation/emit/run.d.ts +15 -0
- package/dist/generation/emit/run.d.ts.map +1 -0
- package/dist/generation/emit/run.js +71 -0
- package/dist/generation/emit/run.js.map +1 -0
- package/dist/generation/emit/section.d.ts +29 -0
- package/dist/generation/emit/section.d.ts.map +1 -0
- package/dist/generation/emit/section.js +117 -0
- package/dist/generation/emit/section.js.map +1 -0
- package/dist/generation/emit/settings-part.d.ts +13 -0
- package/dist/generation/emit/settings-part.d.ts.map +1 -0
- package/dist/generation/emit/settings-part.js +24 -0
- package/dist/generation/emit/settings-part.js.map +1 -0
- package/dist/generation/emit/styles-part.d.ts +16 -0
- package/dist/generation/emit/styles-part.d.ts.map +1 -0
- package/dist/generation/emit/styles-part.js +80 -0
- package/dist/generation/emit/styles-part.js.map +1 -0
- package/dist/generation/emit/table.d.ts +26 -0
- package/dist/generation/emit/table.d.ts.map +1 -0
- package/dist/generation/emit/table.js +196 -0
- package/dist/generation/emit/table.js.map +1 -0
- package/dist/generation/errors.d.ts +22 -0
- package/dist/generation/errors.d.ts.map +1 -0
- package/dist/generation/errors.js +29 -0
- package/dist/generation/errors.js.map +1 -0
- package/dist/generation/index.d.ts +13 -0
- package/dist/generation/index.d.ts.map +1 -0
- package/dist/generation/index.js +12 -0
- package/dist/generation/index.js.map +1 -0
- package/dist/generation/ordering.d.ts +46 -0
- package/dist/generation/ordering.d.ts.map +1 -0
- package/dist/generation/ordering.js +119 -0
- package/dist/generation/ordering.js.map +1 -0
- package/dist/generation/recipes.d.ts +47 -0
- package/dist/generation/recipes.d.ts.map +1 -0
- package/dist/generation/recipes.js +84 -0
- package/dist/generation/recipes.js.map +1 -0
- package/dist/generation/structural-checks.d.ts +24 -0
- package/dist/generation/structural-checks.d.ts.map +1 -0
- package/dist/generation/structural-checks.js +318 -0
- package/dist/generation/structural-checks.js.map +1 -0
- package/dist/generation/types.d.ts +217 -0
- package/dist/generation/types.d.ts.map +1 -0
- package/dist/generation/types.js +16 -0
- package/dist/generation/types.js.map +1 -0
- package/dist/generation/validate-spec.d.ts +27 -0
- package/dist/generation/validate-spec.d.ts.map +1 -0
- package/dist/generation/validate-spec.js +307 -0
- package/dist/generation/validate-spec.js.map +1 -0
- package/dist/index.d.ts +9 -150
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/integration/generation-probes.d.ts +15 -0
- package/dist/integration/generation-probes.d.ts.map +1 -0
- package/dist/integration/generation-probes.js +84 -0
- package/dist/integration/generation-probes.js.map +1 -0
- package/dist/integration/libreoffice-oracle.d.ts +49 -0
- package/dist/integration/libreoffice-oracle.d.ts.map +1 -0
- package/dist/integration/libreoffice-oracle.js +290 -0
- package/dist/integration/libreoffice-oracle.js.map +1 -0
- package/dist/integration/synthetic-docx-fixture.d.ts +72 -0
- package/dist/integration/synthetic-docx-fixture.d.ts.map +1 -1
- package/dist/integration/synthetic-docx-fixture.js +131 -4
- package/dist/integration/synthetic-docx-fixture.js.map +1 -1
- package/dist/primitives/accept_changes.d.ts +4 -3
- package/dist/primitives/accept_changes.d.ts.map +1 -1
- package/dist/primitives/accept_changes.js +163 -77
- package/dist/primitives/accept_changes.js.map +1 -1
- package/dist/primitives/comments.d.ts +12 -3
- package/dist/primitives/comments.d.ts.map +1 -1
- package/dist/primitives/comments.js +374 -97
- package/dist/primitives/comments.js.map +1 -1
- package/dist/primitives/content_fingerprint.d.ts +29 -0
- package/dist/primitives/content_fingerprint.d.ts.map +1 -0
- package/dist/primitives/content_fingerprint.js +63 -0
- package/dist/primitives/content_fingerprint.js.map +1 -0
- package/dist/primitives/document.d.ts +94 -15
- package/dist/primitives/document.d.ts.map +1 -1
- package/dist/primitives/document.js +373 -36
- package/dist/primitives/document.js.map +1 -1
- package/dist/primitives/document_view-comments.d.ts +18 -0
- package/dist/primitives/document_view-comments.d.ts.map +1 -0
- package/dist/primitives/document_view-comments.js +160 -0
- package/dist/primitives/document_view-comments.js.map +1 -0
- package/dist/primitives/document_view-headings.d.ts +45 -0
- package/dist/primitives/document_view-headings.d.ts.map +1 -0
- package/dist/primitives/document_view-headings.js +247 -0
- package/dist/primitives/document_view-headings.js.map +1 -0
- package/dist/primitives/document_view-styles.d.ts +11 -0
- package/dist/primitives/document_view-styles.d.ts.map +1 -0
- package/dist/primitives/document_view-styles.js +104 -0
- package/dist/primitives/document_view-styles.js.map +1 -0
- package/dist/primitives/document_view-toon.d.ts +37 -0
- package/dist/primitives/document_view-toon.d.ts.map +1 -0
- package/dist/primitives/document_view-toon.js +199 -0
- package/dist/primitives/document_view-toon.js.map +1 -0
- package/dist/primitives/document_view-types.d.ts +152 -0
- package/dist/primitives/document_view-types.d.ts.map +1 -0
- package/dist/primitives/document_view-types.js +2 -0
- package/dist/primitives/document_view-types.js.map +1 -0
- package/dist/primitives/document_view.d.ts +8 -106
- package/dist/primitives/document_view.d.ts.map +1 -1
- package/dist/primitives/document_view.js +153 -312
- package/dist/primitives/document_view.js.map +1 -1
- package/dist/primitives/dom-helpers.d.ts +9 -0
- package/dist/primitives/dom-helpers.d.ts.map +1 -1
- package/dist/primitives/dom-helpers.js +10 -1
- package/dist/primitives/dom-helpers.js.map +1 -1
- package/dist/primitives/footnotes.d.ts +4 -3
- package/dist/primitives/footnotes.d.ts.map +1 -1
- package/dist/primitives/footnotes.js +232 -44
- package/dist/primitives/footnotes.js.map +1 -1
- package/dist/primitives/formatting_tags.d.ts +7 -0
- package/dist/primitives/formatting_tags.d.ts.map +1 -1
- package/dist/primitives/formatting_tags.js +22 -11
- package/dist/primitives/formatting_tags.js.map +1 -1
- package/dist/primitives/index.d.ts +10 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +9 -0
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/layout.d.ts +4 -3
- package/dist/primitives/layout.d.ts.map +1 -1
- package/dist/primitives/layout.js +45 -3
- package/dist/primitives/layout.js.map +1 -1
- package/dist/primitives/merge_runs.d.ts +21 -3
- package/dist/primitives/merge_runs.d.ts.map +1 -1
- package/dist/primitives/merge_runs.js +32 -10
- package/dist/primitives/merge_runs.js.map +1 -1
- package/dist/primitives/minimal_save.d.ts +38 -0
- package/dist/primitives/minimal_save.d.ts.map +1 -0
- package/dist/primitives/minimal_save.js +323 -0
- package/dist/primitives/minimal_save.js.map +1 -0
- package/dist/primitives/namespaces.d.ts +47 -0
- package/dist/primitives/namespaces.d.ts.map +1 -1
- package/dist/primitives/namespaces.js +52 -0
- package/dist/primitives/namespaces.js.map +1 -1
- package/dist/primitives/reject_changes.d.ts +6 -4
- package/dist/primitives/reject_changes.d.ts.map +1 -1
- package/dist/primitives/reject_changes.js +187 -91
- package/dist/primitives/reject_changes.js.map +1 -1
- package/dist/primitives/revision-parts.d.ts +7 -0
- package/dist/primitives/revision-parts.d.ts.map +1 -0
- package/dist/primitives/revision-parts.js +27 -0
- package/dist/primitives/revision-parts.js.map +1 -0
- package/dist/primitives/revision-vocabulary.d.ts +7 -0
- package/dist/primitives/revision-vocabulary.d.ts.map +1 -0
- package/dist/primitives/revision-vocabulary.js +39 -0
- package/dist/primitives/revision-vocabulary.js.map +1 -0
- package/dist/primitives/schema-corpus-capture.d.ts +19 -0
- package/dist/primitives/schema-corpus-capture.d.ts.map +1 -0
- package/dist/primitives/schema-corpus-capture.js +29 -0
- package/dist/primitives/schema-corpus-capture.js.map +1 -0
- package/dist/primitives/sectPrAudit.d.ts +19 -0
- package/dist/primitives/sectPrAudit.d.ts.map +1 -0
- package/dist/primitives/sectPrAudit.js +165 -0
- package/dist/primitives/sectPrAudit.js.map +1 -0
- package/dist/primitives/semantic_tags.d.ts +7 -0
- package/dist/primitives/semantic_tags.d.ts.map +1 -1
- package/dist/primitives/semantic_tags.js +23 -4
- package/dist/primitives/semantic_tags.js.map +1 -1
- package/dist/primitives/serialize_html.d.ts +37 -0
- package/dist/primitives/serialize_html.d.ts.map +1 -0
- package/dist/primitives/serialize_html.js +395 -0
- package/dist/primitives/serialize_html.js.map +1 -0
- package/dist/primitives/serialize_markdown.d.ts +16 -0
- package/dist/primitives/serialize_markdown.d.ts.map +1 -0
- package/dist/primitives/serialize_markdown.js +300 -0
- package/dist/primitives/serialize_markdown.js.map +1 -0
- package/dist/primitives/serialize_plaintext.d.ts +15 -0
- package/dist/primitives/serialize_plaintext.d.ts.map +1 -0
- package/dist/primitives/serialize_plaintext.js +154 -0
- package/dist/primitives/serialize_plaintext.js.map +1 -0
- package/dist/primitives/styles.d.ts +15 -0
- package/dist/primitives/styles.d.ts.map +1 -1
- package/dist/primitives/styles.js +33 -22
- package/dist/primitives/styles.js.map +1 -1
- package/dist/primitives/tables.d.ts.map +1 -1
- package/dist/primitives/tables.js +13 -3
- package/dist/primitives/tables.js.map +1 -1
- package/dist/primitives/text.d.ts +2 -1
- package/dist/primitives/text.d.ts.map +1 -1
- package/dist/primitives/text.js +116 -12
- package/dist/primitives/text.js.map +1 -1
- package/dist/primitives/track-changes-emitter.d.ts +148 -0
- package/dist/primitives/track-changes-emitter.d.ts.map +1 -0
- package/dist/primitives/track-changes-emitter.js +291 -0
- package/dist/primitives/track-changes-emitter.js.map +1 -0
- package/dist/primitives/validate_ai_revisions.d.ts +35 -0
- package/dist/primitives/validate_ai_revisions.d.ts.map +1 -0
- package/dist/primitives/validate_ai_revisions.js +323 -0
- package/dist/primitives/validate_ai_revisions.js.map +1 -0
- package/dist/primitives/xml-helpers.d.ts +29 -0
- package/dist/primitives/xml-helpers.d.ts.map +1 -0
- package/dist/primitives/xml-helpers.js +35 -0
- package/dist/primitives/xml-helpers.js.map +1 -0
- package/dist/primitives/xml.d.ts +5 -0
- package/dist/primitives/xml.d.ts.map +1 -1
- package/dist/primitives/xml.js +5 -0
- package/dist/primitives/xml.js.map +1 -1
- package/dist/primitives/zip.d.ts +1 -0
- package/dist/primitives/zip.d.ts.map +1 -1
- package/dist/primitives/zip.js +21 -3
- package/dist/primitives/zip.js.map +1 -1
- package/dist/shared/field-structure.d.ts +14 -0
- package/dist/shared/field-structure.d.ts.map +1 -0
- package/dist/shared/field-structure.js +166 -0
- package/dist/shared/field-structure.js.map +1 -0
- package/dist/shared/ooxml/namespaces.d.ts +4 -1
- package/dist/shared/ooxml/namespaces.d.ts.map +1 -1
- package/dist/shared/ooxml/namespaces.js +4 -1
- package/dist/shared/ooxml/namespaces.js.map +1 -1
- package/package.json +13 -9
|
@@ -59,6 +59,20 @@ function runFormattingKey(run) {
|
|
|
59
59
|
stripRsidAttributes(clone);
|
|
60
60
|
return serializer.serializeToString(clone);
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Canonical key for a run's rsid attributes. Two runs with the same key
|
|
64
|
+
* carry identical revision-save-id provenance and are mergeable; runs
|
|
65
|
+
* with differing rsids represent distinct edit sessions and must not be
|
|
66
|
+
* merged (Word preserves the boundary as part of its revision-tracking
|
|
67
|
+
* heuristics).
|
|
68
|
+
*/
|
|
69
|
+
function runRsidKey(run) {
|
|
70
|
+
return Array.from(run.attributes)
|
|
71
|
+
.filter((attr) => /^rsid/i.test(attr.localName ?? attr.name))
|
|
72
|
+
.map((attr) => `${attr.namespaceURI ?? ''}:${attr.localName ?? attr.name}=${attr.value}`)
|
|
73
|
+
.sort()
|
|
74
|
+
.join('|');
|
|
75
|
+
}
|
|
62
76
|
/** Check whether a run contains barrier content (fldChar, instrText). */
|
|
63
77
|
function runContainsBarrierContent(run) {
|
|
64
78
|
let child = run.firstChild;
|
|
@@ -180,7 +194,7 @@ function collectMergeableRunGroups(paragraph) {
|
|
|
180
194
|
return allGroups;
|
|
181
195
|
}
|
|
182
196
|
/** Merge adjacent format-identical runs within a paragraph. */
|
|
183
|
-
function mergeParagraphRuns(paragraph) {
|
|
197
|
+
function mergeParagraphRuns(paragraph, preserveRsidIdentity) {
|
|
184
198
|
let merged = 0;
|
|
185
199
|
const groups = collectMergeableRunGroups(paragraph);
|
|
186
200
|
for (const group of groups) {
|
|
@@ -192,7 +206,8 @@ function mergeParagraphRuns(paragraph) {
|
|
|
192
206
|
const next = group[i + 1];
|
|
193
207
|
if (!runContainsBarrierContent(current) &&
|
|
194
208
|
!runContainsBarrierContent(next) &&
|
|
195
|
-
runFormattingKey(current) === runFormattingKey(next)
|
|
209
|
+
runFormattingKey(current) === runFormattingKey(next) &&
|
|
210
|
+
(!preserveRsidIdentity || runRsidKey(current) === runRsidKey(next))) {
|
|
196
211
|
// Move all content children of `next` into `current`.
|
|
197
212
|
for (const node of runContentChildren(next)) {
|
|
198
213
|
current.appendChild(node);
|
|
@@ -213,8 +228,13 @@ function mergeParagraphRuns(paragraph) {
|
|
|
213
228
|
// ── Public API ─────────────────────────────────────────────────────────
|
|
214
229
|
/**
|
|
215
230
|
* Merge adjacent format-identical runs across all paragraphs in the
|
|
216
|
-
* document body. Removes `<w:proofErr>` elements
|
|
217
|
-
*
|
|
231
|
+
* document body. Removes `<w:proofErr>` elements.
|
|
232
|
+
*
|
|
233
|
+
* Pass `{ preserveRsidIdentity: true }` from edit pipelines that must not
|
|
234
|
+
* disturb rsid attributes on runs the caller did not touch (see #286).
|
|
235
|
+
* The default omits that guard and matches the historical normalize-on-open
|
|
236
|
+
* behaviour, which consolidates rsid-fragmented runs that Word produces
|
|
237
|
+
* across edit sessions.
|
|
218
238
|
*
|
|
219
239
|
* Safety barriers prevent merges across:
|
|
220
240
|
* - Field boundaries (fldChar, instrText)
|
|
@@ -222,21 +242,23 @@ function mergeParagraphRuns(paragraph) {
|
|
|
222
242
|
* - Bookmark boundaries (bookmarkStart, bookmarkEnd)
|
|
223
243
|
* - Tracked-change wrapper boundaries (ins, del, moveFrom, moveTo)
|
|
224
244
|
*/
|
|
225
|
-
export function mergeRuns(doc) {
|
|
245
|
+
export function mergeRuns(doc, opts = {}) {
|
|
226
246
|
const body = doc.getElementsByTagNameNS(OOXML.W_NS, W.body).item(0);
|
|
227
247
|
if (!body)
|
|
228
248
|
return { runsMerged: 0, proofErrRemoved: 0 };
|
|
249
|
+
const preserveRsidIdentity = opts.preserveRsidIdentity === true;
|
|
229
250
|
let totalMerged = 0;
|
|
230
251
|
let totalProofErr = 0;
|
|
231
252
|
const paragraphs = Array.from(body.getElementsByTagNameNS(OOXML.W_NS, W.p));
|
|
232
253
|
for (const p of paragraphs) {
|
|
233
254
|
totalProofErr += removeProofErrors(p);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
255
|
+
if (!preserveRsidIdentity) {
|
|
256
|
+
const runs = Array.from(p.getElementsByTagNameNS(OOXML.W_NS, W.r));
|
|
257
|
+
for (const r of runs) {
|
|
258
|
+
stripRsidAttributes(r);
|
|
259
|
+
}
|
|
238
260
|
}
|
|
239
|
-
totalMerged += mergeParagraphRuns(p);
|
|
261
|
+
totalMerged += mergeParagraphRuns(p, preserveRsidIdentity);
|
|
240
262
|
}
|
|
241
263
|
return { runsMerged: totalMerged, proofErrRemoved: totalProofErr };
|
|
242
264
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge_runs.js","sourceRoot":"","sources":["../../src/primitives/merge_runs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"merge_runs.js","sourceRoot":"","sources":["../../src/primitives/merge_runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* minimal_save — restore untouched top-level body blocks from the original
|
|
3
|
+
* document.xml at save time.
|
|
4
|
+
*
|
|
5
|
+
* The in-memory session DOM is normalized at open (`mergeRuns` +
|
|
6
|
+
* `simplifyRedlines`) because text addressing, bookmarks, and comparison
|
|
7
|
+
* baselines all assume the normalized shape. Serializing that DOM wholesale
|
|
8
|
+
* persists the normalization for every paragraph, so a one-paragraph edit
|
|
9
|
+
* rewrites the whole document on disk (proofErr stripped, runs merged) and
|
|
10
|
+
* downstream diffs lie about the edit's blast radius.
|
|
11
|
+
*
|
|
12
|
+
* This module reconciles at save time instead: any body block (w:p, w:tbl,
|
|
13
|
+
* w:sectPr, ...) whose serialization equals the corresponding block of a
|
|
14
|
+
* freshly-normalized re-parse of the original XML was, by construction,
|
|
15
|
+
* untouched by edits — so it is replaced with the pristine original block.
|
|
16
|
+
* Edited blocks that are tables are descended into (rows → cells →
|
|
17
|
+
* paragraphs) so a one-cell edit doesn't churn the rest of the table.
|
|
18
|
+
* Edited or inserted leaves have no equal counterpart and are kept as-is.
|
|
19
|
+
* The output contract is element-for-element preservation of untouched
|
|
20
|
+
* blocks (the XML still passes through the serializer, so byte-identity
|
|
21
|
+
* with the original file is not guaranteed).
|
|
22
|
+
*
|
|
23
|
+
* @see https://github.com/UseJunior/safe-docx/issues/408
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Replace every block of `currentDoc` that is untouched — i.e.
|
|
27
|
+
* serialization-equal to the same block of the original document.xml after
|
|
28
|
+
* open-time normalization — with the pristine original block, descending
|
|
29
|
+
* into edited tables so their untouched rows/cells/paragraphs restore too.
|
|
30
|
+
*
|
|
31
|
+
* `currentDoc` must already have internal bookmarks removed (untouched
|
|
32
|
+
* blocks otherwise never match the bookmark-free reference). Returns the
|
|
33
|
+
* number of elements restored; 0 means the document is fully edited or the
|
|
34
|
+
* reference could not be aligned (output then matches today's full
|
|
35
|
+
* re-serialization, never anything worse).
|
|
36
|
+
*/
|
|
37
|
+
export declare function restoreUntouchedBlocks(currentDoc: Document, originalXmlText: string): number;
|
|
38
|
+
//# sourceMappingURL=minimal_save.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimal_save.d.ts","sourceRoot":"","sources":["../../src/primitives/minimal_save.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAiTH;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,QAAQ,EACpB,eAAe,EAAE,MAAM,GACtB,MAAM,CAaR"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* minimal_save — restore untouched top-level body blocks from the original
|
|
3
|
+
* document.xml at save time.
|
|
4
|
+
*
|
|
5
|
+
* The in-memory session DOM is normalized at open (`mergeRuns` +
|
|
6
|
+
* `simplifyRedlines`) because text addressing, bookmarks, and comparison
|
|
7
|
+
* baselines all assume the normalized shape. Serializing that DOM wholesale
|
|
8
|
+
* persists the normalization for every paragraph, so a one-paragraph edit
|
|
9
|
+
* rewrites the whole document on disk (proofErr stripped, runs merged) and
|
|
10
|
+
* downstream diffs lie about the edit's blast radius.
|
|
11
|
+
*
|
|
12
|
+
* This module reconciles at save time instead: any body block (w:p, w:tbl,
|
|
13
|
+
* w:sectPr, ...) whose serialization equals the corresponding block of a
|
|
14
|
+
* freshly-normalized re-parse of the original XML was, by construction,
|
|
15
|
+
* untouched by edits — so it is replaced with the pristine original block.
|
|
16
|
+
* Edited blocks that are tables are descended into (rows → cells →
|
|
17
|
+
* paragraphs) so a one-cell edit doesn't churn the rest of the table.
|
|
18
|
+
* Edited or inserted leaves have no equal counterpart and are kept as-is.
|
|
19
|
+
* The output contract is element-for-element preservation of untouched
|
|
20
|
+
* blocks (the XML still passes through the serializer, so byte-identity
|
|
21
|
+
* with the original file is not guaranteed).
|
|
22
|
+
*
|
|
23
|
+
* @see https://github.com/UseJunior/safe-docx/issues/408
|
|
24
|
+
*/
|
|
25
|
+
import { XMLSerializer } from '@xmldom/xmldom';
|
|
26
|
+
import { parseXml } from './xml.js';
|
|
27
|
+
import { OOXML, W } from './namespaces.js';
|
|
28
|
+
import { childElements } from './dom-helpers.js';
|
|
29
|
+
import { mergeRuns } from './merge_runs.js';
|
|
30
|
+
import { simplifyRedlines } from './simplify_redlines.js';
|
|
31
|
+
/**
|
|
32
|
+
* Containers whose ELEMENT-CHILD structure normalization provably preserves
|
|
33
|
+
* (mergeRuns/simplifyRedlines mutate inside paragraphs only): an edited
|
|
34
|
+
* table can be descended into so its untouched rows/cells/paragraphs still
|
|
35
|
+
* restore. Paragraphs are deliberately absent — normalization adds/removes
|
|
36
|
+
* their children, so the original↔normalized index lockstep breaks there.
|
|
37
|
+
*/
|
|
38
|
+
const RECURSABLE_CONTAINER_LOCALS = new Set([W.tbl, W.tr, W.tc]);
|
|
39
|
+
function bodyElement(doc) {
|
|
40
|
+
return doc.getElementsByTagNameNS(OOXML.W_NS, W.body).item(0);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* DP cell budget (~16 MB of Int32). Edits touch few blocks, so the common
|
|
44
|
+
* prefix/suffix trim below collapses the DP to roughly the edited span;
|
|
45
|
+
* only a document with massive scattered edits exceeds this, and those
|
|
46
|
+
* blocks then simply stay normalized (conservative, never wrong).
|
|
47
|
+
*/
|
|
48
|
+
const MAX_LCS_DP_CELLS = 4_000_000;
|
|
49
|
+
/**
|
|
50
|
+
* Order-preserving alignment of two sequences by longest common subsequence,
|
|
51
|
+
* returning matched index pairs `[i, j]` with `a[i] === b[j]`.
|
|
52
|
+
*
|
|
53
|
+
* An LCS (rather than a serialization-keyed FIFO map) is required for
|
|
54
|
+
* correctness when two blocks normalize to identical serializations: if the
|
|
55
|
+
* earlier duplicate is edited, a FIFO would hand the untouched later block
|
|
56
|
+
* the earlier block's original (swapping rsid/paraId provenance). The
|
|
57
|
+
* backtrack below matches from the tail, so untouched trailing duplicates
|
|
58
|
+
* pair with their own originals.
|
|
59
|
+
*/
|
|
60
|
+
function lcsPairs(a, b) {
|
|
61
|
+
if (a.length === 0 || b.length === 0)
|
|
62
|
+
return [];
|
|
63
|
+
// Identical leading/trailing runs are LCS matches by construction; pairing
|
|
64
|
+
// them up front shrinks the DP to the edited middle span.
|
|
65
|
+
let start = 0;
|
|
66
|
+
while (start < a.length && start < b.length && a[start] === b[start])
|
|
67
|
+
start++;
|
|
68
|
+
let endA = a.length;
|
|
69
|
+
let endB = b.length;
|
|
70
|
+
while (endA > start && endB > start && a[endA - 1] === b[endB - 1]) {
|
|
71
|
+
endA--;
|
|
72
|
+
endB--;
|
|
73
|
+
}
|
|
74
|
+
const pairs = [];
|
|
75
|
+
for (let k = 0; k < start; k++)
|
|
76
|
+
pairs.push([k, k]);
|
|
77
|
+
const n = endA - start;
|
|
78
|
+
const m = endB - start;
|
|
79
|
+
if (n > 0 && m > 0 && n * m <= MAX_LCS_DP_CELLS) {
|
|
80
|
+
// Intern strings to integers so DP comparisons don't re-compare long XML.
|
|
81
|
+
const ids = new Map();
|
|
82
|
+
const intern = (s) => {
|
|
83
|
+
let id = ids.get(s);
|
|
84
|
+
if (id === undefined) {
|
|
85
|
+
id = ids.size;
|
|
86
|
+
ids.set(s, id);
|
|
87
|
+
}
|
|
88
|
+
return id;
|
|
89
|
+
};
|
|
90
|
+
const ai = a.slice(start, endA).map(intern);
|
|
91
|
+
const bi = b.slice(start, endB).map(intern);
|
|
92
|
+
// dp[(i, j)] = LCS length of ai[0..i) and bi[0..j), row-major stride m+1.
|
|
93
|
+
const stride = m + 1;
|
|
94
|
+
const dp = new Int32Array((n + 1) * stride);
|
|
95
|
+
for (let i = 1; i <= n; i++) {
|
|
96
|
+
for (let j = 1; j <= m; j++) {
|
|
97
|
+
dp[i * stride + j] =
|
|
98
|
+
ai[i - 1] === bi[j - 1]
|
|
99
|
+
? dp[(i - 1) * stride + (j - 1)] + 1
|
|
100
|
+
: Math.max(dp[(i - 1) * stride + j], dp[i * stride + (j - 1)]);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const middle = [];
|
|
104
|
+
let i = n;
|
|
105
|
+
let j = m;
|
|
106
|
+
while (i > 0 && j > 0) {
|
|
107
|
+
if (ai[i - 1] === bi[j - 1] &&
|
|
108
|
+
dp[i * stride + j] === dp[(i - 1) * stride + (j - 1)] + 1) {
|
|
109
|
+
middle.push([start + i - 1, start + j - 1]);
|
|
110
|
+
i--;
|
|
111
|
+
j--;
|
|
112
|
+
}
|
|
113
|
+
else if (dp[(i - 1) * stride + j] >= dp[i * stride + (j - 1)]) {
|
|
114
|
+
i--;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
j--;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
pairs.push(...middle.reverse());
|
|
121
|
+
}
|
|
122
|
+
for (let k = 0; endA + k < a.length; k++)
|
|
123
|
+
pairs.push([endA + k, endB + k]);
|
|
124
|
+
return pairs;
|
|
125
|
+
}
|
|
126
|
+
const serializer = new XMLSerializer();
|
|
127
|
+
function sameQualifiedName(a, b) {
|
|
128
|
+
return a.namespaceURI === b.namespaceURI && a.localName === b.localName;
|
|
129
|
+
}
|
|
130
|
+
function isWElement(node, localName) {
|
|
131
|
+
return (node.nodeType === 1 &&
|
|
132
|
+
node.namespaceURI === OOXML.W_NS &&
|
|
133
|
+
node.localName === localName);
|
|
134
|
+
}
|
|
135
|
+
function directChildElement(el, localName) {
|
|
136
|
+
let child = el.firstChild;
|
|
137
|
+
while (child) {
|
|
138
|
+
if (isWElement(child, localName))
|
|
139
|
+
return child;
|
|
140
|
+
child = child.nextSibling;
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
function clonedRunFormattingKey(run) {
|
|
145
|
+
const rPr = directChildElement(run, W.rPr);
|
|
146
|
+
return rPr ? serializer.serializeToString(rPr) : '';
|
|
147
|
+
}
|
|
148
|
+
function clonedRunContentChildren(run) {
|
|
149
|
+
const out = [];
|
|
150
|
+
let child = run.firstChild;
|
|
151
|
+
while (child) {
|
|
152
|
+
const next = child.nextSibling;
|
|
153
|
+
if (!isWElement(child, W.rPr))
|
|
154
|
+
out.push(child);
|
|
155
|
+
child = next;
|
|
156
|
+
}
|
|
157
|
+
return out;
|
|
158
|
+
}
|
|
159
|
+
function runHasOnlyTextContent(run) {
|
|
160
|
+
return clonedRunContentChildren(run).every((child) => {
|
|
161
|
+
if (child.nodeType === 3)
|
|
162
|
+
return !(child.textContent ?? '').trim();
|
|
163
|
+
return isWElement(child, W.t);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function consolidateAdjacentTextChildren(run) {
|
|
167
|
+
let child = run.firstChild;
|
|
168
|
+
while (child) {
|
|
169
|
+
if (!isWElement(child, W.t)) {
|
|
170
|
+
child = child.nextSibling;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
const first = child;
|
|
174
|
+
let next = first.nextSibling;
|
|
175
|
+
while (next) {
|
|
176
|
+
if (next.nodeType === 3 && !(next.textContent ?? '').trim()) {
|
|
177
|
+
const whitespace = next;
|
|
178
|
+
next = whitespace.nextSibling;
|
|
179
|
+
whitespace.parentNode?.removeChild(whitespace);
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (!isWElement(next, W.t))
|
|
183
|
+
break;
|
|
184
|
+
const following = next.nextSibling;
|
|
185
|
+
first.textContent = (first.textContent ?? '') + (next.textContent ?? '');
|
|
186
|
+
next.parentNode?.removeChild(next);
|
|
187
|
+
next = following;
|
|
188
|
+
}
|
|
189
|
+
const text = first.textContent ?? '';
|
|
190
|
+
if (text.startsWith(' ') || text.endsWith(' ')) {
|
|
191
|
+
first.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
first.removeAttributeNS('http://www.w3.org/XML/1998/namespace', 'space');
|
|
195
|
+
}
|
|
196
|
+
child = first.nextSibling;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function mergeAdjacentRunsForKey(container) {
|
|
200
|
+
let child = container.firstChild;
|
|
201
|
+
let currentRun = null;
|
|
202
|
+
while (child) {
|
|
203
|
+
const next = child.nextSibling;
|
|
204
|
+
if (!isWElement(child, W.r)) {
|
|
205
|
+
currentRun = null;
|
|
206
|
+
child = next;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (currentRun &&
|
|
210
|
+
runHasOnlyTextContent(currentRun) &&
|
|
211
|
+
runHasOnlyTextContent(child) &&
|
|
212
|
+
clonedRunFormattingKey(currentRun) === clonedRunFormattingKey(child)) {
|
|
213
|
+
for (const node of clonedRunContentChildren(child)) {
|
|
214
|
+
currentRun.appendChild(node);
|
|
215
|
+
}
|
|
216
|
+
consolidateAdjacentTextChildren(currentRun);
|
|
217
|
+
child.parentNode?.removeChild(child);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
currentRun = child;
|
|
221
|
+
consolidateAdjacentTextChildren(currentRun);
|
|
222
|
+
}
|
|
223
|
+
child = next;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
function canonicalizeHyperlinkRunsForKey(root) {
|
|
227
|
+
const hyperlinks = Array.from(root.getElementsByTagNameNS(OOXML.W_NS, W.hyperlink));
|
|
228
|
+
if (root.namespaceURI === OOXML.W_NS && root.localName === W.hyperlink) {
|
|
229
|
+
hyperlinks.unshift(root);
|
|
230
|
+
}
|
|
231
|
+
for (const hyperlink of hyperlinks) {
|
|
232
|
+
mergeAdjacentRunsForKey(hyperlink);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* The atomizer can reconstruct untouched hyperlink text as one run with
|
|
237
|
+
* multiple `w:t` children, while open-time `mergeRuns` leaves the original
|
|
238
|
+
* as adjacent runs inside `w:hyperlink`. Canonicalize that comparison-only
|
|
239
|
+
* shape so restore can still import the pristine original block.
|
|
240
|
+
*/
|
|
241
|
+
function restoreKey(el) {
|
|
242
|
+
const clone = el.cloneNode(true);
|
|
243
|
+
canonicalizeHyperlinkRunsForKey(clone);
|
|
244
|
+
return serializer.serializeToString(clone);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Reconcile the element children of one container: LCS-matched (untouched)
|
|
248
|
+
* children of `cur` are replaced with the corresponding pristine `orig`
|
|
249
|
+
* child; unmatched (edited) children that pair 1:1 with a same-named
|
|
250
|
+
* recursable container across an LCS gap are descended into, so e.g. the
|
|
251
|
+
* untouched cells and paragraphs of an edited table still restore.
|
|
252
|
+
*
|
|
253
|
+
* `orig` and `norm` children are index-lockstep (norm is orig with
|
|
254
|
+
* normalization applied, which never adds/removes container children);
|
|
255
|
+
* a count mismatch abandons this subtree.
|
|
256
|
+
*/
|
|
257
|
+
function reconcileChildren(orig, norm, cur, ownerDoc) {
|
|
258
|
+
const origChildren = childElements(orig);
|
|
259
|
+
const normChildren = childElements(norm);
|
|
260
|
+
const curChildren = childElements(cur);
|
|
261
|
+
if (origChildren.length !== normChildren.length)
|
|
262
|
+
return 0;
|
|
263
|
+
if (origChildren.length === 0 || curChildren.length === 0)
|
|
264
|
+
return 0;
|
|
265
|
+
const normKeys = normChildren.map(restoreKey);
|
|
266
|
+
const curKeys = curChildren.map(restoreKey);
|
|
267
|
+
const pairs = lcsPairs(normKeys, curKeys);
|
|
268
|
+
let restored = 0;
|
|
269
|
+
for (const [i, j] of pairs) {
|
|
270
|
+
const pristine = ownerDoc.importNode(origChildren[i], true);
|
|
271
|
+
cur.replaceChild(pristine, curChildren[j]);
|
|
272
|
+
restored++;
|
|
273
|
+
}
|
|
274
|
+
// Between consecutive LCS anchors, the leftovers on each side are the
|
|
275
|
+
// edited children. When they pair 1:1 in order and both sides are the
|
|
276
|
+
// same recursable container, descend — only serialization-equal
|
|
277
|
+
// descendants will restore, so a mispairing cannot corrupt content.
|
|
278
|
+
let prevI = -1;
|
|
279
|
+
let prevJ = -1;
|
|
280
|
+
for (const [ai, aj] of [...pairs, [normChildren.length, curChildren.length]]) {
|
|
281
|
+
const gapLen = ai - prevI - 1;
|
|
282
|
+
if (gapLen > 0 && gapLen === aj - prevJ - 1) {
|
|
283
|
+
for (let k = 1; k <= gapLen; k++) {
|
|
284
|
+
const normEl = normChildren[prevI + k];
|
|
285
|
+
const curEl = curChildren[prevJ + k];
|
|
286
|
+
if (sameQualifiedName(normEl, curEl) &&
|
|
287
|
+
normEl.namespaceURI === OOXML.W_NS &&
|
|
288
|
+
RECURSABLE_CONTAINER_LOCALS.has(normEl.localName)) {
|
|
289
|
+
restored += reconcileChildren(origChildren[prevI + k], normEl, curEl, ownerDoc);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
prevI = ai;
|
|
294
|
+
prevJ = aj;
|
|
295
|
+
}
|
|
296
|
+
return restored;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Replace every block of `currentDoc` that is untouched — i.e.
|
|
300
|
+
* serialization-equal to the same block of the original document.xml after
|
|
301
|
+
* open-time normalization — with the pristine original block, descending
|
|
302
|
+
* into edited tables so their untouched rows/cells/paragraphs restore too.
|
|
303
|
+
*
|
|
304
|
+
* `currentDoc` must already have internal bookmarks removed (untouched
|
|
305
|
+
* blocks otherwise never match the bookmark-free reference). Returns the
|
|
306
|
+
* number of elements restored; 0 means the document is fully edited or the
|
|
307
|
+
* reference could not be aligned (output then matches today's full
|
|
308
|
+
* re-serialization, never anything worse).
|
|
309
|
+
*/
|
|
310
|
+
export function restoreUntouchedBlocks(currentDoc, originalXmlText) {
|
|
311
|
+
const original = parseXml(originalXmlText);
|
|
312
|
+
const normRef = parseXml(originalXmlText);
|
|
313
|
+
// Mirror DocxDocument.normalize()'s document.xml steps, in order.
|
|
314
|
+
mergeRuns(normRef);
|
|
315
|
+
simplifyRedlines(normRef);
|
|
316
|
+
const originalBody = bodyElement(original);
|
|
317
|
+
const normRefBody = bodyElement(normRef);
|
|
318
|
+
const currentBody = bodyElement(currentDoc);
|
|
319
|
+
if (!originalBody || !normRefBody || !currentBody)
|
|
320
|
+
return 0;
|
|
321
|
+
return reconcileChildren(originalBody, normRefBody, currentBody, currentDoc);
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=minimal_save.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimal_save.js","sourceRoot":"","sources":["../../src/primitives/minimal_save.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEzE,SAAS,WAAW,CAAC,GAAa;IAChC,OAAO,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAmB,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,SAAS,QAAQ,CAAC,CAAW,EAAE,CAAW;IACxC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhD,2EAA2E;IAC3E,0DAA0D;IAC1D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,CAAC;IAC9E,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,OAAO,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QACnE,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;IACT,CAAC;IAED,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IACvB,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAChD,0EAA0E;QAC1E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE;YACnC,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACrB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBACd,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjB,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE5C,0EAA0E;QAC1E,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;oBAChB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;wBACrB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC;wBACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,IACE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvB,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,EAC1D,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5C,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,CAAC;gBAClE,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,CAAC,EAAE,CAAC;YACN,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;AAEvC,SAAS,iBAAiB,CAAC,CAAU,EAAE,CAAU;IAC/C,OAAO,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC;AAED,SAAS,UAAU,CAAC,IAAU,EAAE,SAAiB;IAC/C,OAAO,CACL,IAAI,CAAC,QAAQ,KAAK,CAAC;QAClB,IAAgB,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI;QAC5C,IAAgB,CAAC,SAAS,KAAK,SAAS,CAC1C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAW,EAAE,SAAiB;IACxD,IAAI,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC;IAC1B,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAY;IAC1C,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAY;IAC5C,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;IAC3B,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAY;IACzC,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACnD,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,+BAA+B,CAAC,GAAY;IACnD,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;IAC3B,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,GAAgB,KAAK,CAAC,WAAW,CAAC;QAC1C,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC5D,MAAM,UAAU,GAAG,IAAI,CAAC;gBACxB,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC9B,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC/C,SAAS;YACX,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM;YAElC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YACnC,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,CAAC,sCAAsC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,iBAAiB,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;QACD,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAkB;IACjD,IAAI,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;IACjC,IAAI,UAAU,GAAmB,IAAI,CAAC;IAEtC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,UAAU,GAAG,IAAI,CAAC;YAClB,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QAED,IACE,UAAU;YACV,qBAAqB,CAAC,UAAU,CAAC;YACjC,qBAAqB,CAAC,KAAK,CAAC;YAC5B,sBAAsB,CAAC,UAAU,CAAC,KAAK,sBAAsB,CAAC,KAAK,CAAC,EACpE,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YACD,+BAA+B,CAAC,UAAU,CAAC,CAAC;YAC5C,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,KAAK,CAAC;YACnB,+BAA+B,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CAAC,IAAa;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACpF,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;QACvE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,EAAW;IAC7B,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAY,CAAC;IAC5C,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CACxB,IAAa,EACb,IAAa,EACb,GAAY,EACZ,QAAkB;IAElB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEpE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE1C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC;QAC7D,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;QAC5C,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,sEAAsE;IACtE,sEAAsE;IACtE,gEAAgE;IAChE,oEAAoE;IACpE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAqB,CAAC,EAAE,CAAC;QACjG,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;gBACtC,IACE,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;oBAChC,MAAM,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI;oBAClC,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EACjD,CAAC;oBACD,QAAQ,IAAI,iBAAiB,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,GAAG,EAAE,CAAC;QACX,KAAK,GAAG,EAAE,CAAC;IACb,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAoB,EACpB,eAAuB;IAEvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC1C,kEAAkE;IAClE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnB,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE1B,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW;QAAE,OAAO,CAAC,CAAC;IAE5D,OAAO,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -53,6 +53,8 @@ export declare const W: {
|
|
|
53
53
|
readonly abstractNumId: "abstractNumId";
|
|
54
54
|
readonly lvlOverride: "lvlOverride";
|
|
55
55
|
readonly startOverride: "startOverride";
|
|
56
|
+
readonly lvlJc: "lvlJc";
|
|
57
|
+
readonly multiLevelType: "multiLevelType";
|
|
56
58
|
readonly tbl: "tbl";
|
|
57
59
|
readonly tr: "tr";
|
|
58
60
|
readonly tc: "tc";
|
|
@@ -60,14 +62,53 @@ export declare const W: {
|
|
|
60
62
|
readonly tcPr: "tcPr";
|
|
61
63
|
readonly trHeight: "trHeight";
|
|
62
64
|
readonly tcMar: "tcMar";
|
|
65
|
+
readonly tblPr: "tblPr";
|
|
66
|
+
readonly tblGrid: "tblGrid";
|
|
67
|
+
readonly gridCol: "gridCol";
|
|
68
|
+
readonly tblW: "tblW";
|
|
69
|
+
readonly tblLayout: "tblLayout";
|
|
70
|
+
readonly tblBorders: "tblBorders";
|
|
71
|
+
readonly tcBorders: "tcBorders";
|
|
72
|
+
readonly tcW: "tcW";
|
|
73
|
+
readonly gridSpan: "gridSpan";
|
|
74
|
+
readonly vMerge: "vMerge";
|
|
75
|
+
readonly vAlign: "vAlign";
|
|
76
|
+
readonly shd: "shd";
|
|
77
|
+
readonly tblHeader: "tblHeader";
|
|
78
|
+
readonly insideH: "insideH";
|
|
79
|
+
readonly insideV: "insideV";
|
|
63
80
|
readonly top: "top";
|
|
64
81
|
readonly bottom: "bottom";
|
|
65
82
|
readonly left: "left";
|
|
66
83
|
readonly right: "right";
|
|
84
|
+
readonly end: "end";
|
|
67
85
|
readonly val: "val";
|
|
68
86
|
readonly hRule: "hRule";
|
|
69
87
|
readonly w: "w";
|
|
70
88
|
readonly type: "type";
|
|
89
|
+
readonly sectPr: "sectPr";
|
|
90
|
+
readonly pgSz: "pgSz";
|
|
91
|
+
readonly pgMar: "pgMar";
|
|
92
|
+
readonly pgNumType: "pgNumType";
|
|
93
|
+
readonly headerReference: "headerReference";
|
|
94
|
+
readonly footerReference: "footerReference";
|
|
95
|
+
readonly titlePg: "titlePg";
|
|
96
|
+
readonly hdr: "hdr";
|
|
97
|
+
readonly ftr: "ftr";
|
|
98
|
+
readonly settings: "settings";
|
|
99
|
+
readonly evenAndOddHeaders: "evenAndOddHeaders";
|
|
100
|
+
readonly docDefaults: "docDefaults";
|
|
101
|
+
readonly pPrDefault: "pPrDefault";
|
|
102
|
+
readonly rPrDefault: "rPrDefault";
|
|
103
|
+
readonly next: "next";
|
|
104
|
+
readonly qFormat: "qFormat";
|
|
105
|
+
readonly bCs: "bCs";
|
|
106
|
+
readonly iCs: "iCs";
|
|
107
|
+
readonly caps: "caps";
|
|
108
|
+
readonly smallCaps: "smallCaps";
|
|
109
|
+
readonly keepNext: "keepNext";
|
|
110
|
+
readonly pageBreakBefore: "pageBreakBefore";
|
|
111
|
+
readonly tabs: "tabs";
|
|
71
112
|
readonly fldChar: "fldChar";
|
|
72
113
|
readonly instrText: "instrText";
|
|
73
114
|
readonly fldSimple: "fldSimple";
|
|
@@ -87,5 +128,11 @@ export declare const W: {
|
|
|
87
128
|
readonly footnoteRef: "footnoteRef";
|
|
88
129
|
readonly separator: "separator";
|
|
89
130
|
readonly continuationSeparator: "continuationSeparator";
|
|
131
|
+
readonly endnoteReference: "endnoteReference";
|
|
132
|
+
readonly drawing: "drawing";
|
|
133
|
+
readonly pict: "pict";
|
|
134
|
+
readonly object: "object";
|
|
135
|
+
readonly del: "del";
|
|
136
|
+
readonly moveFrom: "moveFrom";
|
|
90
137
|
};
|
|
91
138
|
//# sourceMappingURL=namespaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/primitives/namespaces.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK;;;;;;;;;CAiBR,CAAC;AAEX,eAAO,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/primitives/namespaces.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK;;;;;;;;;CAiBR,CAAC;AAEX,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0JJ,CAAC"}
|
|
@@ -65,6 +65,8 @@ export const W = {
|
|
|
65
65
|
abstractNumId: 'abstractNumId',
|
|
66
66
|
lvlOverride: 'lvlOverride',
|
|
67
67
|
startOverride: 'startOverride',
|
|
68
|
+
lvlJc: 'lvlJc',
|
|
69
|
+
multiLevelType: 'multiLevelType',
|
|
68
70
|
// Tables + layout
|
|
69
71
|
tbl: 'tbl',
|
|
70
72
|
tr: 'tr',
|
|
@@ -73,14 +75,55 @@ export const W = {
|
|
|
73
75
|
tcPr: 'tcPr',
|
|
74
76
|
trHeight: 'trHeight',
|
|
75
77
|
tcMar: 'tcMar',
|
|
78
|
+
tblPr: 'tblPr',
|
|
79
|
+
tblGrid: 'tblGrid',
|
|
80
|
+
gridCol: 'gridCol',
|
|
81
|
+
tblW: 'tblW',
|
|
82
|
+
tblLayout: 'tblLayout',
|
|
83
|
+
tblBorders: 'tblBorders',
|
|
84
|
+
tcBorders: 'tcBorders',
|
|
85
|
+
tcW: 'tcW',
|
|
86
|
+
gridSpan: 'gridSpan',
|
|
87
|
+
vMerge: 'vMerge',
|
|
88
|
+
vAlign: 'vAlign',
|
|
89
|
+
shd: 'shd',
|
|
90
|
+
tblHeader: 'tblHeader',
|
|
91
|
+
insideH: 'insideH',
|
|
92
|
+
insideV: 'insideV',
|
|
76
93
|
top: 'top',
|
|
77
94
|
bottom: 'bottom',
|
|
78
95
|
left: 'left',
|
|
79
96
|
right: 'right',
|
|
97
|
+
end: 'end',
|
|
80
98
|
val: 'val',
|
|
81
99
|
hRule: 'hRule',
|
|
82
100
|
w: 'w',
|
|
83
101
|
type: 'type',
|
|
102
|
+
// Sections + page setup (generation emitters)
|
|
103
|
+
sectPr: 'sectPr',
|
|
104
|
+
pgSz: 'pgSz',
|
|
105
|
+
pgMar: 'pgMar',
|
|
106
|
+
pgNumType: 'pgNumType',
|
|
107
|
+
headerReference: 'headerReference',
|
|
108
|
+
footerReference: 'footerReference',
|
|
109
|
+
titlePg: 'titlePg',
|
|
110
|
+
hdr: 'hdr',
|
|
111
|
+
ftr: 'ftr',
|
|
112
|
+
settings: 'settings',
|
|
113
|
+
evenAndOddHeaders: 'evenAndOddHeaders',
|
|
114
|
+
// Styles part + paragraph/run formatting (generation emitters)
|
|
115
|
+
docDefaults: 'docDefaults',
|
|
116
|
+
pPrDefault: 'pPrDefault',
|
|
117
|
+
rPrDefault: 'rPrDefault',
|
|
118
|
+
next: 'next',
|
|
119
|
+
qFormat: 'qFormat',
|
|
120
|
+
bCs: 'bCs',
|
|
121
|
+
iCs: 'iCs',
|
|
122
|
+
caps: 'caps',
|
|
123
|
+
smallCaps: 'smallCaps',
|
|
124
|
+
keepNext: 'keepNext',
|
|
125
|
+
pageBreakBefore: 'pageBreakBefore',
|
|
126
|
+
tabs: 'tabs',
|
|
84
127
|
// Fields + special runs
|
|
85
128
|
fldChar: 'fldChar',
|
|
86
129
|
instrText: 'instrText',
|
|
@@ -104,5 +147,14 @@ export const W = {
|
|
|
104
147
|
footnoteRef: 'footnoteRef',
|
|
105
148
|
separator: 'separator',
|
|
106
149
|
continuationSeparator: 'continuationSeparator',
|
|
150
|
+
// Endnotes
|
|
151
|
+
endnoteReference: 'endnoteReference',
|
|
152
|
+
// Embedded visual content (run-level children)
|
|
153
|
+
drawing: 'drawing',
|
|
154
|
+
pict: 'pict',
|
|
155
|
+
object: 'object',
|
|
156
|
+
// Revision wrappers
|
|
157
|
+
del: 'del',
|
|
158
|
+
moveFrom: 'moveFrom',
|
|
107
159
|
};
|
|
108
160
|
//# sourceMappingURL=namespaces.js.map
|