@beyondwork/docx-react-component 1.0.29 → 1.0.30
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/package.json +65 -96
- package/src/README.md +85 -0
- package/src/api/README.md +26 -0
- package/src/api/public-types.ts +1952 -0
- package/src/api/session-state.ts +62 -0
- package/src/compare/diff-engine.ts +623 -0
- package/src/compare/export-redlines.ts +280 -0
- package/src/compare/index.ts +25 -0
- package/src/compare/snapshot.ts +97 -0
- package/src/component-inventory.md +99 -0
- package/src/core/README.md +10 -0
- package/src/core/commands/README.md +3 -0
- package/{dist/chunk-TJBP2K4T.js → src/core/commands/formatting-commands.ts} +536 -196
- package/src/core/commands/image-commands.ts +373 -0
- package/src/core/commands/index.ts +1879 -0
- package/src/core/commands/list-commands.ts +565 -0
- package/src/core/commands/paragraph-layout-commands.ts +339 -0
- package/src/core/commands/review-commands.ts +108 -0
- package/{dist/core/commands/section-layout-commands.cjs → src/core/commands/section-layout-commands.ts} +340 -137
- package/src/core/commands/structural-helpers.ts +309 -0
- package/{dist/core/commands/style-commands.cjs → src/core/commands/style-commands.ts} +113 -65
- package/src/core/commands/table-structure-commands.ts +854 -0
- package/{dist/chunk-UZXBISGO.js → src/core/commands/text-commands.ts} +142 -86
- package/src/core/schema/README.md +3 -0
- package/src/core/schema/text-schema.ts +516 -0
- package/src/core/search/search-text.ts +357 -0
- package/src/core/selection/README.md +3 -0
- package/src/core/selection/mapping.ts +289 -0
- package/src/core/selection/review-anchors.ts +183 -0
- package/src/core/state/README.md +3 -0
- package/src/core/state/editor-state.ts +892 -0
- package/src/core/state/text-transaction.ts +869 -0
- package/src/formats/xlsx/io/parse-shared-strings.ts +41 -0
- package/src/formats/xlsx/io/parse-sheet.ts +459 -0
- package/src/formats/xlsx/io/parse-styles.ts +59 -0
- package/src/formats/xlsx/io/parse-workbook.ts +75 -0
- package/src/formats/xlsx/io/serialize-shared-strings.ts +72 -0
- package/src/formats/xlsx/io/serialize-sheet.ts +333 -0
- package/src/formats/xlsx/io/serialize-styles.ts +98 -0
- package/src/formats/xlsx/io/serialize-workbook.ts +429 -0
- package/src/formats/xlsx/io/xlsx-session.ts +314 -0
- package/src/formats/xlsx/model/cell.ts +189 -0
- package/src/formats/xlsx/model/sheet.ts +326 -0
- package/src/formats/xlsx/model/styles.ts +118 -0
- package/src/formats/xlsx/model/workbook.ts +453 -0
- package/src/formats/xlsx/runtime/cell-commands.ts +567 -0
- package/src/formats/xlsx/runtime/sheet-commands.ts +206 -0
- package/src/formats/xlsx/runtime/workbook-runtime.ts +177 -0
- package/src/formats/xlsx/runtime/workbook-transaction.ts +822 -0
- package/src/index.ts +142 -0
- package/src/io/README.md +10 -0
- package/src/io/docx-session.ts +3175 -0
- package/src/io/export/README.md +3 -0
- package/src/io/export/export-session.ts +220 -0
- package/src/io/export/minimal-docx.ts +115 -0
- package/src/io/export/reattach-preserved-parts.ts +54 -0
- package/src/io/export/serialize-comments.ts +947 -0
- package/src/io/export/serialize-footnotes.ts +394 -0
- package/src/io/export/serialize-headers-footers.ts +368 -0
- package/src/io/export/serialize-main-document.ts +1342 -0
- package/src/io/export/serialize-numbering.ts +218 -0
- package/src/io/export/serialize-revisions.ts +389 -0
- package/src/io/export/serialize-runtime-revisions.ts +463 -0
- package/src/io/export/serialize-tables.ts +174 -0
- package/src/io/export/split-review-boundaries.ts +356 -0
- package/src/io/export/split-story-blocks-for-runtime-revisions.ts +252 -0
- package/src/io/export/table-properties-xml.ts +318 -0
- package/src/io/normalize/README.md +3 -0
- package/src/io/normalize/normalize-text.ts +670 -0
- package/src/io/ooxml/README.md +3 -0
- package/src/io/ooxml/highlight-colors.ts +39 -0
- package/src/io/ooxml/numbering-sentinels.ts +44 -0
- package/src/io/ooxml/parse-comments.ts +852 -0
- package/src/io/ooxml/parse-complex-content.ts +287 -0
- package/src/io/ooxml/parse-fields.ts +834 -0
- package/src/io/ooxml/parse-footnotes.ts +952 -0
- package/src/io/ooxml/parse-headers-footers.ts +1212 -0
- package/src/io/ooxml/parse-inline-media.ts +461 -0
- package/src/io/ooxml/parse-main-document.ts +2947 -0
- package/src/io/ooxml/parse-numbering.ts +747 -0
- package/src/io/ooxml/parse-revisions.ts +1045 -0
- package/src/io/ooxml/parse-settings.ts +184 -0
- package/src/io/ooxml/parse-shapes.ts +296 -0
- package/src/io/ooxml/parse-styles.ts +639 -0
- package/src/io/ooxml/parse-tables.ts +627 -0
- package/src/io/ooxml/parse-theme.ts +346 -0
- package/src/io/ooxml/part-manifest.ts +136 -0
- package/src/io/ooxml/revision-boundaries.ts +475 -0
- package/src/io/ooxml/workflow-payload.ts +544 -0
- package/src/io/opc/README.md +3 -0
- package/src/io/opc/corrupt-package.ts +166 -0
- package/src/io/opc/docx-package.ts +74 -0
- package/src/io/opc/package-reader.ts +325 -0
- package/src/io/opc/package-writer.ts +273 -0
- package/src/io/source-package-provenance.ts +241 -0
- package/{dist/chunk-RMH72RZI.js → src/legal/bookmarks.ts} +130 -44
- package/src/legal/cross-references.ts +414 -0
- package/src/legal/defined-terms.ts +203 -0
- package/src/legal/index.ts +32 -0
- package/src/legal/signature-blocks.ts +259 -0
- package/src/model/README.md +3 -0
- package/src/model/canonical-document.ts +2722 -0
- package/src/model/cds-1.0.0.ts +212 -0
- package/src/model/snapshot.ts +760 -0
- package/src/preservation/README.md +3 -0
- package/src/preservation/markup-compatibility.ts +48 -0
- package/src/preservation/opaque-fragment-store.ts +89 -0
- package/src/preservation/opaque-region.ts +233 -0
- package/src/preservation/package-preservation.ts +113 -0
- package/src/preservation/preserved-part-manifest.ts +56 -0
- package/src/preservation/relationship-retention.ts +57 -0
- package/src/preservation/store.ts +255 -0
- package/src/review/README.md +16 -0
- package/src/review/store/README.md +3 -0
- package/src/review/store/comment-anchors.ts +70 -0
- package/src/review/store/comment-remapping.ts +154 -0
- package/src/review/store/comment-store.ts +349 -0
- package/src/review/store/comment-thread.ts +109 -0
- package/src/review/store/revision-actions.ts +423 -0
- package/src/review/store/revision-store.ts +323 -0
- package/src/review/store/revision-types.ts +182 -0
- package/src/review/store/runtime-comment-store.ts +43 -0
- package/src/runtime/README.md +3 -0
- package/src/runtime/ai-action-policy.ts +764 -0
- package/src/runtime/context-analytics.ts +824 -0
- package/src/runtime/document-layout.ts +332 -0
- package/src/runtime/document-locations.ts +521 -0
- package/src/runtime/document-navigation.ts +616 -0
- package/src/runtime/document-outline.ts +440 -0
- package/src/runtime/document-runtime.ts +4055 -0
- package/src/runtime/document-search.ts +145 -0
- package/src/runtime/event-refresh-hints.ts +137 -0
- package/src/runtime/numbering-prefix.ts +244 -0
- package/src/runtime/page-layout-estimation.ts +305 -0
- package/src/runtime/read-only-diagnostics-runtime.ts +241 -0
- package/src/runtime/resolved-numbering-geometry.ts +293 -0
- package/src/runtime/review-runtime.ts +44 -0
- package/src/runtime/revision-runtime.ts +107 -0
- package/src/runtime/session-capabilities.ts +192 -0
- package/src/runtime/story-context.ts +164 -0
- package/src/runtime/story-targeting.ts +162 -0
- package/src/runtime/suggestions-snapshot.ts +137 -0
- package/src/runtime/surface-projection.ts +1553 -0
- package/src/runtime/table-commands.ts +173 -0
- package/src/runtime/table-schema.ts +309 -0
- package/src/runtime/table-style-resolver.ts +409 -0
- package/src/runtime/view-state.ts +493 -0
- package/src/runtime/virtualized-rendering.ts +258 -0
- package/src/runtime/workflow-markup.ts +393 -0
- package/src/ui/README.md +30 -0
- package/src/ui/WordReviewEditor.tsx +5268 -0
- package/src/ui/browser-export.ts +52 -0
- package/src/ui/comments/README.md +3 -0
- package/src/ui/compatibility/README.md +3 -0
- package/src/ui/editor-command-bag.ts +127 -0
- package/src/ui/editor-runtime-boundary.ts +1558 -0
- package/src/ui/editor-shell-view.tsx +144 -0
- package/src/ui/editor-surface/README.md +3 -0
- package/src/ui/editor-surface-controller.tsx +66 -0
- package/src/ui/headless/comment-decoration-model.ts +124 -0
- package/src/ui/headless/preserve-editor-selection.ts +5 -0
- package/src/ui/headless/revision-decoration-model.ts +128 -0
- package/src/ui/headless/selection-helpers.ts +54 -0
- package/src/ui/headless/selection-tool-context.ts +19 -0
- package/src/ui/headless/selection-tool-resolver.ts +752 -0
- package/src/ui/headless/selection-tool-types.ts +129 -0
- package/src/ui/headless/selection-toolbar-model.ts +11 -0
- package/src/ui/headless/use-editor-keyboard.ts +103 -0
- package/src/ui/review/README.md +3 -0
- package/src/ui/runtime-shortcut-dispatch.ts +365 -0
- package/src/ui/runtime-snapshot-selectors.ts +197 -0
- package/src/ui/shared/revision-filters.ts +31 -0
- package/src/ui/status/README.md +3 -0
- package/src/ui/theme/README.md +3 -0
- package/src/ui/toolbar/README.md +3 -0
- package/src/ui/workflow-surface-blocked-rails.ts +94 -0
- package/src/ui-tailwind/chrome/chrome-preset-model.ts +107 -0
- package/src/ui-tailwind/chrome/chrome-preset-toolbar.tsx +15 -0
- package/src/ui-tailwind/chrome/review-queue-bar.tsx +97 -0
- package/src/ui-tailwind/chrome/tw-alert-banner.tsx +64 -0
- package/src/ui-tailwind/chrome/tw-context-analytics-summary.tsx +122 -0
- package/src/ui-tailwind/chrome/tw-image-context-toolbar.tsx +121 -0
- package/src/ui-tailwind/chrome/tw-layout-panel.tsx +114 -0
- package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +30 -0
- package/src/ui-tailwind/chrome/tw-page-ruler.tsx +365 -0
- package/src/ui-tailwind/chrome/tw-selection-tool-blocked.tsx +23 -0
- package/src/ui-tailwind/chrome/tw-selection-tool-comment.tsx +35 -0
- package/src/ui-tailwind/chrome/tw-selection-tool-formatting.tsx +37 -0
- package/src/ui-tailwind/chrome/tw-selection-tool-host.tsx +298 -0
- package/src/ui-tailwind/chrome/tw-selection-tool-structure.tsx +116 -0
- package/src/ui-tailwind/chrome/tw-selection-tool-suggestion.tsx +29 -0
- package/src/ui-tailwind/chrome/tw-selection-tool-workflow.tsx +27 -0
- package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +186 -0
- package/src/ui-tailwind/chrome/tw-suggestion-card.tsx +139 -0
- package/src/ui-tailwind/chrome/tw-table-context-toolbar.tsx +200 -0
- package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +58 -0
- package/src/ui-tailwind/chrome/use-before-unload.ts +20 -0
- package/src/ui-tailwind/editor-surface/perf-probe.ts +179 -0
- package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +189 -0
- package/src/ui-tailwind/editor-surface/pm-contextual-ui.ts +31 -0
- package/src/ui-tailwind/editor-surface/pm-decorations.ts +411 -0
- package/src/ui-tailwind/editor-surface/pm-position-map.ts +123 -0
- package/src/ui-tailwind/editor-surface/pm-schema.ts +927 -0
- package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +567 -0
- package/src/ui-tailwind/editor-surface/search-plugin.ts +168 -0
- package/src/ui-tailwind/editor-surface/surface-build-keys.ts +65 -0
- package/src/ui-tailwind/editor-surface/tw-caret.tsx +12 -0
- package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +150 -0
- package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +129 -0
- package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +58 -0
- package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +151 -0
- package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +1047 -0
- package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +111 -0
- package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +503 -0
- package/src/ui-tailwind/index.ts +62 -0
- package/src/ui-tailwind/page-chrome-model.ts +27 -0
- package/src/ui-tailwind/review/tw-comment-sidebar.tsx +406 -0
- package/src/ui-tailwind/review/tw-health-panel.tsx +149 -0
- package/src/ui-tailwind/review/tw-review-rail.tsx +122 -0
- package/src/ui-tailwind/review/tw-revision-sidebar.tsx +164 -0
- package/src/ui-tailwind/status/tw-status-bar.tsx +65 -0
- package/{dist → src}/ui-tailwind/theme/editor-theme.css +58 -40
- package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +52 -0
- package/src/ui-tailwind/toolbar/tw-toolbar.tsx +1133 -0
- package/src/ui-tailwind/tw-review-workspace.tsx +1460 -0
- package/src/validation/README.md +3 -0
- package/src/validation/compatibility-engine.ts +878 -0
- package/src/validation/compatibility-report.ts +161 -0
- package/src/validation/diagnostics.ts +204 -0
- package/src/validation/docx-comment-proof.ts +720 -0
- package/src/validation/import-diagnostics.ts +128 -0
- package/src/validation/low-priority-word-surfaces.ts +373 -0
- package/dist/canonical-document-BLEbzL2J.d.cts +0 -844
- package/dist/canonical-document-BLEbzL2J.d.ts +0 -844
- package/dist/chunk-2FJS5GZM.js +0 -763
- package/dist/chunk-2FJS5GZM.js.map +0 -1
- package/dist/chunk-2OQBZS3F.js +0 -446
- package/dist/chunk-2OQBZS3F.js.map +0 -1
- package/dist/chunk-2S7W4KFO.js +0 -127
- package/dist/chunk-2S7W4KFO.js.map +0 -1
- package/dist/chunk-2TG72QSW.js +0 -3874
- package/dist/chunk-2TG72QSW.js.map +0 -1
- package/dist/chunk-36QNIZBO.js +0 -532
- package/dist/chunk-36QNIZBO.js.map +0 -1
- package/dist/chunk-4AQOYAW4.js +0 -3069
- package/dist/chunk-4AQOYAW4.js.map +0 -1
- package/dist/chunk-4D5EWJ3P.js +0 -77
- package/dist/chunk-4D5EWJ3P.js.map +0 -1
- package/dist/chunk-5FN54NDH.js +0 -2257
- package/dist/chunk-5FN54NDH.js.map +0 -1
- package/dist/chunk-BOYGQYRQ.js +0 -7306
- package/dist/chunk-BOYGQYRQ.js.map +0 -1
- package/dist/chunk-CN3XMECL.js +0 -212
- package/dist/chunk-CN3XMECL.js.map +0 -1
- package/dist/chunk-EBI3BX6U.js +0 -164
- package/dist/chunk-EBI3BX6U.js.map +0 -1
- package/dist/chunk-EILUG3VB.js +0 -1275
- package/dist/chunk-EILUG3VB.js.map +0 -1
- package/dist/chunk-FUDY333O.js +0 -70
- package/dist/chunk-FUDY333O.js.map +0 -1
- package/dist/chunk-GBVOWFIK.js +0 -1237
- package/dist/chunk-GBVOWFIK.js.map +0 -1
- package/dist/chunk-H4TQ3H3Y.js +0 -262
- package/dist/chunk-H4TQ3H3Y.js.map +0 -1
- package/dist/chunk-JGB3IXZO.js +0 -189
- package/dist/chunk-JGB3IXZO.js.map +0 -1
- package/dist/chunk-KD2QRQPY.js +0 -4342
- package/dist/chunk-KD2QRQPY.js.map +0 -1
- package/dist/chunk-KLMXQVYK.js +0 -369
- package/dist/chunk-KLMXQVYK.js.map +0 -1
- package/dist/chunk-KZUG5KFQ.js +0 -214
- package/dist/chunk-KZUG5KFQ.js.map +0 -1
- package/dist/chunk-QDAQ4CJU.js +0 -345
- package/dist/chunk-QDAQ4CJU.js.map +0 -1
- package/dist/chunk-RMH72RZI.js.map +0 -1
- package/dist/chunk-SWKWQZXM.js +0 -117
- package/dist/chunk-SWKWQZXM.js.map +0 -1
- package/dist/chunk-TJBP2K4T.js.map +0 -1
- package/dist/chunk-TLCEAQDQ.js +0 -542
- package/dist/chunk-TLCEAQDQ.js.map +0 -1
- package/dist/chunk-UZXBISGO.js.map +0 -1
- package/dist/chunk-WGBAKP3Q.js +0 -3220
- package/dist/chunk-WGBAKP3Q.js.map +0 -1
- package/dist/compare/index.cjs +0 -5475
- package/dist/compare/index.cjs.map +0 -1
- package/dist/compare/index.d.cts +0 -114
- package/dist/compare/index.d.ts +0 -114
- package/dist/compare/index.js +0 -731
- package/dist/compare/index.js.map +0 -1
- package/dist/core/commands/formatting-commands.cjs +0 -828
- package/dist/core/commands/formatting-commands.cjs.map +0 -1
- package/dist/core/commands/formatting-commands.d.cts +0 -63
- package/dist/core/commands/formatting-commands.d.ts +0 -63
- package/dist/core/commands/formatting-commands.js +0 -37
- package/dist/core/commands/formatting-commands.js.map +0 -1
- package/dist/core/commands/image-commands.cjs +0 -2023
- package/dist/core/commands/image-commands.cjs.map +0 -1
- package/dist/core/commands/image-commands.d.cts +0 -58
- package/dist/core/commands/image-commands.d.ts +0 -58
- package/dist/core/commands/image-commands.js +0 -18
- package/dist/core/commands/image-commands.js.map +0 -1
- package/dist/core/commands/section-layout-commands.cjs.map +0 -1
- package/dist/core/commands/section-layout-commands.d.cts +0 -62
- package/dist/core/commands/section-layout-commands.d.ts +0 -62
- package/dist/core/commands/section-layout-commands.js +0 -21
- package/dist/core/commands/section-layout-commands.js.map +0 -1
- package/dist/core/commands/style-commands.cjs.map +0 -1
- package/dist/core/commands/style-commands.d.cts +0 -13
- package/dist/core/commands/style-commands.d.ts +0 -13
- package/dist/core/commands/style-commands.js +0 -9
- package/dist/core/commands/style-commands.js.map +0 -1
- package/dist/core/commands/table-structure-commands.cjs +0 -1883
- package/dist/core/commands/table-structure-commands.cjs.map +0 -1
- package/dist/core/commands/table-structure-commands.d.cts +0 -59
- package/dist/core/commands/table-structure-commands.d.ts +0 -59
- package/dist/core/commands/table-structure-commands.js +0 -12
- package/dist/core/commands/table-structure-commands.js.map +0 -1
- package/dist/core/commands/text-commands.cjs +0 -2391
- package/dist/core/commands/text-commands.cjs.map +0 -1
- package/dist/core/commands/text-commands.d.cts +0 -24
- package/dist/core/commands/text-commands.d.ts +0 -24
- package/dist/core/commands/text-commands.js +0 -28
- package/dist/core/commands/text-commands.js.map +0 -1
- package/dist/core/selection/mapping.cjs +0 -200
- package/dist/core/selection/mapping.cjs.map +0 -1
- package/dist/core/selection/mapping.d.cts +0 -2
- package/dist/core/selection/mapping.d.ts +0 -2
- package/dist/core/selection/mapping.js +0 -31
- package/dist/core/selection/mapping.js.map +0 -1
- package/dist/core/state/editor-state.cjs +0 -2278
- package/dist/core/state/editor-state.cjs.map +0 -1
- package/dist/core/state/editor-state.d.cts +0 -2
- package/dist/core/state/editor-state.d.ts +0 -2
- package/dist/core/state/editor-state.js +0 -26
- package/dist/core/state/editor-state.js.map +0 -1
- package/dist/index.cjs +0 -38553
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -15
- package/dist/index.d.ts +0 -15
- package/dist/index.js +0 -7856
- package/dist/index.js.map +0 -1
- package/dist/io/docx-session.cjs +0 -16236
- package/dist/io/docx-session.cjs.map +0 -1
- package/dist/io/docx-session.d.cts +0 -21
- package/dist/io/docx-session.d.ts +0 -21
- package/dist/io/docx-session.js +0 -18
- package/dist/io/docx-session.js.map +0 -1
- package/dist/legal/index.cjs +0 -3900
- package/dist/legal/index.cjs.map +0 -1
- package/dist/legal/index.d.cts +0 -86
- package/dist/legal/index.d.ts +0 -86
- package/dist/legal/index.js +0 -616
- package/dist/legal/index.js.map +0 -1
- package/dist/public-types-7ZL_94cz.d.ts +0 -1573
- package/dist/public-types-CeMaDueh.d.cts +0 -1573
- package/dist/public-types.cjs +0 -19
- package/dist/public-types.cjs.map +0 -1
- package/dist/public-types.d.cts +0 -2
- package/dist/public-types.d.ts +0 -2
- package/dist/public-types.js +0 -1
- package/dist/public-types.js.map +0 -1
- package/dist/runtime/document-runtime.cjs +0 -11140
- package/dist/runtime/document-runtime.cjs.map +0 -1
- package/dist/runtime/document-runtime.d.cts +0 -231
- package/dist/runtime/document-runtime.d.ts +0 -231
- package/dist/runtime/document-runtime.js +0 -21
- package/dist/runtime/document-runtime.js.map +0 -1
- package/dist/structural-helpers-CilgOVhh.d.cts +0 -10
- package/dist/structural-helpers-q0Gd-eBN.d.ts +0 -10
- package/dist/ui-tailwind/editor-surface/search-plugin.cjs +0 -313
- package/dist/ui-tailwind/editor-surface/search-plugin.cjs.map +0 -1
- package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +0 -67
- package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +0 -67
- package/dist/ui-tailwind/editor-surface/search-plugin.js +0 -23
- package/dist/ui-tailwind/editor-surface/search-plugin.js.map +0 -1
- package/dist/ui-tailwind/index.cjs +0 -4833
- package/dist/ui-tailwind/index.cjs.map +0 -1
- package/dist/ui-tailwind/index.d.cts +0 -617
- package/dist/ui-tailwind/index.d.ts +0 -617
- package/dist/ui-tailwind/index.js +0 -575
- package/dist/ui-tailwind/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/compare/diff-engine.ts","../../src/compare/export-redlines.ts","../../src/compare/snapshot.ts"],"sourcesContent":["import {\n createCanonicalDocumentSignature,\n projectCanonicalDocument,\n type BlockNode,\n type CanonicalDocument,\n type HyperlinkNode,\n type InlineNode,\n type ParagraphNode,\n type RevisionRecord,\n type TextNode,\n} from \"../model/canonical-document.ts\";\nimport type { DocumentVersionSnapshot } from \"./snapshot.ts\";\n\nexport interface CompareVersionRef {\n versionId: string;\n name: string;\n signature: string;\n}\n\nexport type CompareChangeKind =\n | \"paragraph-insertion\"\n | \"paragraph-deletion\"\n | \"paragraph-modification\"\n | \"structural-insertion\"\n | \"structural-deletion\";\n\nexport interface CompareChange {\n changeId: string;\n kind: CompareChangeKind;\n tracked: boolean;\n blockType: BlockNode[\"type\"];\n beforeText?: string;\n afterText?: string;\n targetIndex: number;\n}\n\nexport interface VersionCompareResult {\n compareVersion: \"version-compare-result/1\";\n comparedAt: string;\n base: CompareVersionRef;\n target: CompareVersionRef;\n changes: CompareChange[];\n comparedDocument: CanonicalDocument;\n}\n\nexport interface CompareDocumentVersionsOptions {\n comparedAt?: string;\n authorId?: string;\n}\n\ninterface BuildEntry {\n changeId?: string;\n block: BlockNode;\n trackChange?: \"insertion\" | \"deletion\";\n tracked: boolean;\n blockType: BlockNode[\"type\"];\n beforeText?: string;\n afterText?: string;\n}\n\ninterface PendingRevision {\n changeId: string;\n kind: \"insertion\" | \"deletion\";\n paragraphIndex: number;\n}\n\ninterface LcsMatch {\n baseIndex: number;\n targetIndex: number;\n}\n\nexport function compareDocumentSnapshots(\n base: DocumentVersionSnapshot,\n target: DocumentVersionSnapshot,\n options: CompareDocumentVersionsOptions = {},\n): VersionCompareResult {\n const comparedAt = options.comparedAt ?? target.createdAt;\n const authorId = options.authorId ?? \"Version Compare\";\n const baseDocument = base.canonicalDocument;\n const targetDocument = target.canonicalDocument;\n const baseBlocks = baseDocument.content.children;\n const targetBlocks = targetDocument.content.children;\n const matches = computeLcs(\n baseBlocks.map(getComparableBlockKey),\n targetBlocks.map(getComparableBlockKey),\n );\n\n const buildEntries: BuildEntry[] = [];\n const changes: CompareChange[] = [];\n let nextBaseIndex = 0;\n let nextTargetIndex = 0;\n let nextChangeNumber = 1;\n\n for (const match of [...matches, { baseIndex: baseBlocks.length, targetIndex: targetBlocks.length }]) {\n while (nextBaseIndex < match.baseIndex || nextTargetIndex < match.targetIndex) {\n const deleteBlock = nextBaseIndex < match.baseIndex ? baseBlocks[nextBaseIndex] : undefined;\n const insertBlock = nextTargetIndex < match.targetIndex ? targetBlocks[nextTargetIndex] : undefined;\n\n if (deleteBlock && insertBlock) {\n if (deleteBlock.type === \"paragraph\" && insertBlock.type === \"paragraph\") {\n const modificationId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addParagraphModificationEntry(\n buildEntries,\n changes,\n modificationId,\n deleteBlock,\n insertBlock,\n nextTargetIndex,\n );\n nextBaseIndex += 1;\n nextTargetIndex += 1;\n continue;\n }\n\n const deletionId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addTrackedOrStructuralEntry(\n buildEntries,\n changes,\n deletionId,\n deleteBlock,\n \"deletion\",\n nextTargetIndex,\n );\n\n const insertionId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addTrackedOrStructuralEntry(\n buildEntries,\n changes,\n insertionId,\n insertBlock,\n \"insertion\",\n nextTargetIndex,\n );\n nextBaseIndex += 1;\n nextTargetIndex += 1;\n continue;\n }\n\n if (deleteBlock) {\n const changeId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addTrackedOrStructuralEntry(\n buildEntries,\n changes,\n changeId,\n deleteBlock,\n \"deletion\",\n nextTargetIndex,\n );\n nextBaseIndex += 1;\n continue;\n }\n\n if (insertBlock) {\n const changeId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addTrackedOrStructuralEntry(\n buildEntries,\n changes,\n changeId,\n insertBlock,\n \"insertion\",\n nextTargetIndex,\n );\n nextTargetIndex += 1;\n }\n }\n\n if (match.baseIndex < baseBlocks.length && match.targetIndex < targetBlocks.length) {\n const baseText = getBlockDisplayText(baseBlocks[match.baseIndex]);\n const targetText = getBlockDisplayText(targetBlocks[match.targetIndex]);\n const isModified =\n baseBlocks[match.baseIndex].type === \"paragraph\" &&\n targetBlocks[match.targetIndex].type === \"paragraph\" &&\n baseText !== targetText;\n\n if (isModified) {\n const modChangeId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addParagraphModificationEntry(\n buildEntries,\n changes,\n modChangeId,\n baseBlocks[match.baseIndex] as ParagraphNode,\n targetBlocks[match.targetIndex] as ParagraphNode,\n match.targetIndex,\n );\n } else {\n buildEntries.push({\n block: cloneBlock(targetBlocks[match.targetIndex]),\n tracked: false,\n blockType: targetBlocks[match.targetIndex].type,\n beforeText: baseText,\n afterText: targetText,\n });\n }\n\n nextBaseIndex = match.baseIndex + 1;\n nextTargetIndex = match.targetIndex + 1;\n }\n }\n\n const built = buildComparedDocument(baseDocument, targetDocument, buildEntries, comparedAt, authorId);\n return {\n compareVersion: \"version-compare-result/1\",\n comparedAt,\n base: {\n versionId: base.versionId,\n name: base.name,\n signature: base.documentSignature,\n },\n target: {\n versionId: target.versionId,\n name: target.name,\n signature: target.documentSignature,\n },\n changes,\n comparedDocument: built,\n };\n}\n\nfunction addTrackedOrStructuralEntry(\n buildEntries: BuildEntry[],\n changes: CompareChange[],\n changeId: string,\n block: BlockNode,\n direction: \"insertion\" | \"deletion\",\n targetIndex: number,\n): void {\n const tracked = block.type === \"paragraph\";\n const cloned = cloneBlock(block);\n const text = getBlockDisplayText(block);\n\n buildEntries.push({\n ...(tracked ? { changeId } : {}),\n block: cloned,\n ...(tracked ? { trackChange: direction } : {}),\n tracked,\n blockType: cloned.type,\n ...(direction === \"deletion\" ? { beforeText: text } : { afterText: text }),\n });\n\n changes.push({\n changeId,\n kind:\n block.type === \"paragraph\"\n ? direction === \"insertion\"\n ? \"paragraph-insertion\"\n : \"paragraph-deletion\"\n : direction === \"insertion\"\n ? \"structural-insertion\"\n : \"structural-deletion\",\n tracked,\n blockType: cloned.type,\n ...(direction === \"deletion\" ? { beforeText: text } : { afterText: text }),\n targetIndex,\n });\n}\n\nfunction addParagraphModificationEntry(\n buildEntries: BuildEntry[],\n changes: CompareChange[],\n changeId: string,\n baseParagraph: ParagraphNode,\n targetParagraph: ParagraphNode,\n targetIndex: number,\n): void {\n const beforeText = getBlockDisplayText(baseParagraph);\n const afterText = getBlockDisplayText(targetParagraph);\n\n buildEntries.push({\n changeId: `${changeId}-before`,\n block: cloneBlock(baseParagraph),\n trackChange: \"deletion\",\n tracked: true,\n blockType: \"paragraph\",\n beforeText,\n });\n buildEntries.push({\n changeId: `${changeId}-after`,\n block: cloneBlock(targetParagraph),\n trackChange: \"insertion\",\n tracked: true,\n blockType: \"paragraph\",\n afterText,\n });\n\n changes.push({\n changeId,\n kind: \"paragraph-modification\",\n tracked: true,\n blockType: \"paragraph\",\n beforeText,\n afterText,\n targetIndex,\n });\n}\n\nfunction buildComparedDocument(\n base: CanonicalDocument,\n target: CanonicalDocument,\n entries: readonly BuildEntry[],\n comparedAt: string,\n authorId: string,\n): CanonicalDocument {\n const contentChildren: BlockNode[] = [];\n const pendingRevisions: PendingRevision[] = [];\n const diagnosticsWarnings = [...target.diagnostics.warnings];\n let paragraphIndex = 0;\n let warningNumber = 1;\n\n for (let index = 0; index < entries.length; index += 1) {\n const entry = entries[index];\n if (!entry) {\n continue;\n }\n\n contentChildren.push(entry.block);\n if (entry.block.type === \"paragraph\") {\n if (entry.trackChange) {\n pendingRevisions.push({\n changeId: entry.changeId ?? `change-${pendingRevisions.length + 1}`,\n kind: entry.trackChange,\n paragraphIndex,\n });\n }\n paragraphIndex += 1;\n continue;\n }\n\n if (!entry.tracked) {\n diagnosticsWarnings.push({\n diagnosticId: `diagnostic:compare-structural-${warningNumber}`,\n warningId: `warning:compare-structural-${warningNumber}`,\n source: \"review\",\n message: `Version compare preserved a ${entry.blockType} ${entry.beforeText ? \"deletion\" : \"insertion\"} without a Word revision wrapper.`,\n });\n warningNumber += 1;\n }\n }\n\n const revisions = createParagraphRevisionRecords(\n contentChildren,\n pendingRevisions,\n comparedAt,\n authorId,\n );\n\n return {\n ...projectCanonicalDocument(target),\n updatedAt: comparedAt,\n styles: mergeStyleCatalogs(base.styles, target.styles),\n numbering: mergeRecordCatalog(base.numbering, target.numbering),\n media: mergeRecordCatalog(base.media, target.media),\n content: {\n type: \"doc\",\n children: contentChildren,\n },\n review: {\n comments: projectValue(target.review.comments),\n revisions,\n },\n preservation: mergePreservationStores(base.preservation, target.preservation),\n diagnostics: {\n warnings: diagnosticsWarnings,\n errors: [...target.diagnostics.errors],\n },\n ...(target.subParts ?? base.subParts ? { subParts: projectValue(target.subParts ?? base.subParts) } : {}),\n };\n}\n\nfunction createParagraphRevisionRecords(\n children: readonly BlockNode[],\n pendingRevisions: readonly PendingRevision[],\n createdAt: string,\n authorId: string,\n): CanonicalDocument[\"review\"][\"revisions\"] {\n const positionByParagraphIndex = new Map<number, number>();\n let cursor = 0;\n let paragraphIndex = 0;\n let previousWasParagraph = false;\n\n for (const block of children) {\n if (block.type === \"paragraph\") {\n if (previousWasParagraph) {\n cursor += 1;\n }\n cursor += getParagraphLength(block);\n positionByParagraphIndex.set(paragraphIndex, cursor);\n paragraphIndex += 1;\n previousWasParagraph = true;\n continue;\n }\n\n cursor += 1;\n previousWasParagraph = false;\n }\n\n const entries: Array<[string, RevisionRecord]> = [];\n pendingRevisions.forEach((revision) => {\n const position = positionByParagraphIndex.get(revision.paragraphIndex);\n if (position === undefined) {\n return;\n }\n\n const record: RevisionRecord = {\n changeId: revision.changeId,\n kind: revision.kind,\n anchor: {\n kind: \"range\",\n range: { from: position, to: position },\n assoc: { start: -1, end: 1 },\n },\n authorId,\n createdAt,\n status: \"open\",\n warningIds: [],\n metadata: {\n source: \"runtime\",\n importedRevisionForm:\n revision.kind === \"insertion\" ? \"paragraph-insertion\" : \"paragraph-deletion\",\n },\n };\n entries.push([revision.changeId, record]);\n });\n return Object.fromEntries(entries);\n}\n\nfunction getComparableBlockKey(block: BlockNode): string {\n if (block.type === \"paragraph\") {\n return `paragraph:${createCanonicalDocumentSignature({\n ...block,\n children: normalizeInlineChildren(block.children),\n })}`;\n }\n\n return `${block.type}:${createCanonicalDocumentSignature(block)}`;\n}\n\nfunction normalizeInlineChildren(children: readonly InlineNode[]): InlineNode[] {\n return children.map((child) => {\n if (child.type === \"hyperlink\") {\n return {\n ...child,\n children: normalizeInlineChildren(child.children) as HyperlinkNode[\"children\"],\n };\n }\n if (child.type === \"field\") {\n return {\n ...child,\n children: normalizeInlineChildren(child.children),\n };\n }\n return projectValue(child);\n });\n}\n\nfunction computeLcs(baseKeys: readonly string[], targetKeys: readonly string[]): LcsMatch[] {\n const widths = targetKeys.length + 1;\n const matrix = Array.from({ length: baseKeys.length + 1 }, () =>\n Array.from({ length: widths }, () => 0),\n );\n\n for (let baseIndex = baseKeys.length - 1; baseIndex >= 0; baseIndex -= 1) {\n for (let targetIndex = targetKeys.length - 1; targetIndex >= 0; targetIndex -= 1) {\n matrix[baseIndex][targetIndex] =\n baseKeys[baseIndex] === targetKeys[targetIndex]\n ? matrix[baseIndex + 1][targetIndex + 1] + 1\n : Math.max(matrix[baseIndex + 1][targetIndex], matrix[baseIndex][targetIndex + 1]);\n }\n }\n\n const matches: LcsMatch[] = [];\n let baseIndex = 0;\n let targetIndex = 0;\n while (baseIndex < baseKeys.length && targetIndex < targetKeys.length) {\n if (baseKeys[baseIndex] === targetKeys[targetIndex]) {\n matches.push({ baseIndex, targetIndex });\n baseIndex += 1;\n targetIndex += 1;\n continue;\n }\n\n if (matrix[baseIndex + 1][targetIndex] >= matrix[baseIndex][targetIndex + 1]) {\n baseIndex += 1;\n } else {\n targetIndex += 1;\n }\n }\n\n return matches;\n}\n\nfunction getParagraphLength(paragraph: ParagraphNode): number {\n return paragraph.children.reduce((length, child) => length + getInlineLength(child), 0);\n}\n\nfunction getInlineLength(node: InlineNode): number {\n switch (node.type) {\n case \"text\":\n return Array.from(node.text).length;\n case \"hyperlink\":\n return node.children.reduce((length, child) => length + getInlineLength(child), 0);\n case \"field\":\n return node.children.reduce((length, child) => length + getInlineLength(child), 0);\n case \"tab\":\n case \"hard_break\":\n case \"column_break\":\n case \"symbol\":\n case \"image\":\n case \"opaque_inline\":\n case \"footnote_ref\":\n case \"bookmark_start\":\n case \"bookmark_end\":\n case \"chart_preview\":\n case \"smartart_preview\":\n case \"shape\":\n case \"wordart\":\n case \"vml_shape\":\n return 1;\n }\n}\n\nfunction getBlockDisplayText(block: BlockNode): string {\n switch (block.type) {\n case \"paragraph\":\n return block.children.map(getInlineDisplayText).join(\"\");\n case \"table\":\n return \"[Table]\";\n case \"sdt\":\n return \"[Structured content]\";\n case \"custom_xml\":\n return \"[Custom XML block]\";\n case \"alt_chunk\":\n return \"[Alt chunk]\";\n case \"section_break\":\n return \"[Section break]\";\n case \"opaque_block\":\n return \"[Preserved block]\";\n }\n}\n\nfunction getInlineDisplayText(node: InlineNode): string {\n switch (node.type) {\n case \"text\":\n return node.text;\n case \"tab\":\n return \"\\t\";\n case \"hard_break\":\n case \"column_break\":\n return \"\\n\";\n case \"symbol\":\n return node.char;\n case \"hyperlink\":\n return node.children.map(getInlineDisplayText).join(\"\");\n case \"field\":\n return node.children.map(getInlineDisplayText).join(\"\");\n case \"image\":\n return node.altText ?? \"[Image]\";\n case \"opaque_inline\":\n return \"[Preserved]\";\n case \"footnote_ref\":\n return \"[Footnote]\";\n case \"bookmark_start\":\n case \"bookmark_end\":\n return \"\";\n case \"chart_preview\":\n return \"[Chart]\";\n case \"smartart_preview\":\n return \"[SmartArt]\";\n case \"shape\":\n return node.text ?? \"[Shape]\";\n case \"wordart\":\n return node.text;\n case \"vml_shape\":\n return node.text ?? \"[VML Shape]\";\n }\n}\n\nfunction mergeStyleCatalogs(\n base: CanonicalDocument[\"styles\"],\n target: CanonicalDocument[\"styles\"],\n): CanonicalDocument[\"styles\"] {\n return {\n paragraphs: { ...base.paragraphs, ...target.paragraphs },\n characters: { ...base.characters, ...target.characters },\n tables: { ...base.tables, ...target.tables },\n ...((base.latentStyles || target.latentStyles)\n ? { latentStyles: { ...(base.latentStyles ?? {}), ...(target.latentStyles ?? {}) } }\n : {}),\n };\n}\n\nfunction mergePreservationStores(\n base: CanonicalDocument[\"preservation\"],\n target: CanonicalDocument[\"preservation\"],\n): CanonicalDocument[\"preservation\"] {\n return {\n opaqueFragments: {\n ...base.opaqueFragments,\n ...target.opaqueFragments,\n },\n packageParts: {\n ...base.packageParts,\n ...target.packageParts,\n },\n };\n}\n\nfunction mergeRecordCatalog<T extends object>(base: T, target: T): T {\n return projectValue({ ...base, ...target });\n}\n\nfunction cloneBlock<T extends BlockNode>(block: T): T {\n return projectValue(block);\n}\n\nfunction projectValue<T>(value: T): T {\n return structuredClone(value);\n}\n","import type { OpcRelationship } from \"../io/ooxml/part-manifest.ts\";\nimport { serializeMainDocument } from \"../io/export/serialize-main-document.ts\";\nimport {\n WORD_NUMBERING_CONTENT_TYPE,\n serializeNumberingXml,\n} from \"../io/export/serialize-numbering.ts\";\nimport { serializeRuntimeRevisionsIntoDocumentXml } from \"../io/export/serialize-runtime-revisions.ts\";\nimport { splitDocumentAtReviewBoundaries } from \"../io/export/split-review-boundaries.ts\";\nimport {\n createCommentExportIdMap,\n serializeCommentAnchorsIntoDocumentXml,\n serializeMergedCommentsXml,\n} from \"../io/export/serialize-comments.ts\";\nimport { createExportSession } from \"../io/export/export-session.ts\";\nimport {\n DOCX_DOCUMENT_CONTENT_TYPE,\n DOCX_MIME_TYPE,\n writeDocxPackage,\n} from \"../io/opc/docx-package.ts\";\nimport type { OpcPackage } from \"../io/opc/package-reader.ts\";\nimport { readOpcPackage } from \"../io/opc/package-reader.ts\";\nimport { createCommentStoreFromRuntimeComments } from \"../review/store/runtime-comment-store.ts\";\nimport type { RevisionRecord as ReviewRevisionRecord } from \"../review/store/revision-types.ts\";\nimport type { VersionCompareResult } from \"./diff-engine.ts\";\n\nconst MAIN_DOCUMENT_PATH = \"/word/document.xml\";\nconst NUMBERING_PART_PATH = \"/word/numbering.xml\";\nconst COMMENTS_PART_PATH = \"/word/comments.xml\";\nconst COMMENTS_EXTENDED_PART_PATH = \"/word/commentsExtended.xml\";\nconst COMMENTS_IDS_PART_PATH = \"/word/commentsIds.xml\";\nconst PEOPLE_PART_PATH = \"/word/people.xml\";\nconst NUMBERING_RELATIONSHIP_TYPE =\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering\";\nconst COMMENTS_RELATIONSHIP_TYPE =\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\";\nconst COMMENTS_EXTENDED_RELATIONSHIP_TYPE =\n \"http://schemas.microsoft.com/office/2011/relationships/commentsExtended\";\nconst COMMENTS_IDS_RELATIONSHIP_TYPE =\n \"http://schemas.microsoft.com/office/2016/09/relationships/commentsIds\";\nconst PEOPLE_RELATIONSHIP_TYPE =\n \"http://schemas.microsoft.com/office/2011/relationships/people\";\nconst COMMENTS_CONTENT_TYPE =\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\";\nconst COMMENTS_EXTENDED_CONTENT_TYPE =\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml\";\nconst COMMENTS_IDS_CONTENT_TYPE =\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml\";\nconst PEOPLE_CONTENT_TYPE =\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.people+xml\";\n\nexport interface ExportComparedDocumentOptions {\n fileName?: string;\n sourcePackage?: OpcPackage;\n}\n\nexport interface ExportComparedDocumentResult {\n bytes: Uint8Array;\n mimeType: string;\n fileName: string;\n}\n\nexport function exportComparedDocumentRedlines(\n result: VersionCompareResult,\n options: ExportComparedDocumentOptions = {},\n): ExportComparedDocumentResult {\n const sourcePackage =\n options.sourcePackage ??\n readOpcPackage(\n writeDocxPackage({\n documentXml: `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:document xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"><w:body><w:p/><w:sectPr/></w:body></w:document>`,\n }),\n );\n const existingRelationships =\n sourcePackage.parts.get(MAIN_DOCUMENT_PATH)?.relationships ?? [];\n\n const commentThreads = Object.values(\n createCommentStoreFromRuntimeComments(result.comparedDocument.review.comments).threads,\n );\n const actionableRevisions = toReviewRevisionRecords(result.comparedDocument.review.revisions);\n const serialized = serializeMainDocument(\n splitDocumentAtReviewBoundaries(\n result.comparedDocument.content as never,\n commentThreads,\n actionableRevisions,\n ) as never,\n result.comparedDocument.preservation,\n existingRelationships,\n {\n media: result.comparedDocument.media,\n },\n );\n const revisionDocument = serializeRuntimeRevisionsIntoDocumentXml(\n serialized.documentXml,\n actionableRevisions,\n serialized.paragraphBoundaries,\n );\n if (revisionDocument.skippedRevisionIds.length > 0) {\n throw new Error(\n `Compare export skipped ${revisionDocument.skippedRevisionIds.length} revision markers.`,\n );\n }\n const exportCommentIds = createCommentExportIdMap(commentThreads);\n const serializedComments = serializeMergedCommentsXml(commentThreads, {\n exportCommentIds,\n });\n const annotatedDocument = serializeCommentAnchorsIntoDocumentXml(\n revisionDocument.documentXml,\n commentThreads,\n undefined,\n {\n exportCommentIds,\n },\n );\n if (annotatedDocument.skippedCommentIds.length > 0) {\n throw new Error(\n `Compare export skipped ${annotatedDocument.skippedCommentIds.length} comment anchors.`,\n );\n }\n\n const numberingXml = hasNumberingEntries(result.comparedDocument.numbering)\n ? serializeNumberingXml(result.comparedDocument.numbering)\n : undefined;\n const relationships = withOptionalRelatedPart(\n withOptionalRelatedPart(\n withOptionalRelatedPart(\n withOptionalRelatedPart(\n withOptionalRelatedPart(\n serialized.relationships,\n existingRelationships,\n NUMBERING_RELATIONSHIP_TYPE,\n \"numbering.xml\",\n Boolean(numberingXml),\n ),\n existingRelationships,\n COMMENTS_RELATIONSHIP_TYPE,\n \"comments.xml\",\n serializedComments.serializedCommentIds.length > 0,\n ),\n existingRelationships,\n COMMENTS_EXTENDED_RELATIONSHIP_TYPE,\n \"commentsExtended.xml\",\n Boolean(serializedComments.commentsExtendedXml),\n ),\n existingRelationships,\n COMMENTS_IDS_RELATIONSHIP_TYPE,\n \"commentsIds.xml\",\n Boolean(serializedComments.commentsIdsXml),\n ),\n existingRelationships,\n PEOPLE_RELATIONSHIP_TYPE,\n \"people.xml\",\n Boolean(serializedComments.peopleXml),\n );\n const exportSession = createExportSession(sourcePackage, [\n MAIN_DOCUMENT_PATH,\n ...(numberingXml ? [NUMBERING_PART_PATH] : []),\n ...(serializedComments.serializedCommentIds.length > 0 ? [COMMENTS_PART_PATH] : []),\n ...(serializedComments.commentsExtendedXml ? [COMMENTS_EXTENDED_PART_PATH] : []),\n ...(serializedComments.commentsIdsXml ? [COMMENTS_IDS_PART_PATH] : []),\n ...(serializedComments.peopleXml ? [PEOPLE_PART_PATH] : []),\n ]);\n\n exportSession.replaceOwnedPart({\n path: MAIN_DOCUMENT_PATH,\n bytes: new TextEncoder().encode(annotatedDocument.documentXml),\n contentType: DOCX_DOCUMENT_CONTENT_TYPE,\n relationships,\n });\n\n if (numberingXml) {\n exportSession.replaceOwnedPart({\n path: NUMBERING_PART_PATH,\n bytes: new TextEncoder().encode(numberingXml),\n contentType:\n sourcePackage.parts.get(NUMBERING_PART_PATH)?.contentType ?? WORD_NUMBERING_CONTENT_TYPE,\n });\n }\n\n if (serializedComments.serializedCommentIds.length > 0) {\n exportSession.replaceOwnedPart({\n path: COMMENTS_PART_PATH,\n bytes: new TextEncoder().encode(serializedComments.commentsXml),\n contentType:\n sourcePackage.parts.get(COMMENTS_PART_PATH)?.contentType ?? COMMENTS_CONTENT_TYPE,\n });\n }\n\n if (serializedComments.commentsExtendedXml) {\n exportSession.replaceOwnedPart({\n path: COMMENTS_EXTENDED_PART_PATH,\n bytes: new TextEncoder().encode(serializedComments.commentsExtendedXml),\n contentType:\n sourcePackage.parts.get(COMMENTS_EXTENDED_PART_PATH)?.contentType ??\n COMMENTS_EXTENDED_CONTENT_TYPE,\n });\n }\n\n if (serializedComments.commentsIdsXml) {\n exportSession.replaceOwnedPart({\n path: COMMENTS_IDS_PART_PATH,\n bytes: new TextEncoder().encode(serializedComments.commentsIdsXml),\n contentType:\n sourcePackage.parts.get(COMMENTS_IDS_PART_PATH)?.contentType ?? COMMENTS_IDS_CONTENT_TYPE,\n });\n }\n\n if (serializedComments.peopleXml) {\n exportSession.replaceOwnedPart({\n path: PEOPLE_PART_PATH,\n bytes: new TextEncoder().encode(serializedComments.peopleXml),\n contentType:\n sourcePackage.parts.get(PEOPLE_PART_PATH)?.contentType ?? PEOPLE_CONTENT_TYPE,\n });\n }\n\n return {\n bytes: exportSession.serialize(),\n mimeType: DOCX_MIME_TYPE,\n fileName: options.fileName ?? `${result.target.name}-compared.docx`,\n };\n}\n\nfunction toReviewRevisionRecords(\n revisions: VersionCompareResult[\"comparedDocument\"][\"review\"][\"revisions\"],\n): ReviewRevisionRecord[] {\n return Object.values(revisions).map((revision) => ({\n revisionId: revision.changeId,\n kind: revision.kind,\n anchor: revision.anchor,\n authorId: revision.authorId ?? \"Version Compare\",\n createdAt: revision.createdAt,\n warningIds: [...(revision.warningIds ?? [])],\n metadata: {\n source: revision.metadata?.source ?? \"runtime\",\n preserveOnlyReason: revision.metadata?.preserveOnlyReason,\n importedRevisionForm: revision.metadata?.importedRevisionForm,\n originalRevisionType: revision.metadata?.originalRevisionType,\n ooxmlRevisionId: revision.metadata?.ooxmlRevisionId,\n },\n status: revision.status === \"open\" ? \"active\" : revision.status,\n }));\n}\n\nfunction hasNumberingEntries(\n numbering: VersionCompareResult[\"comparedDocument\"][\"numbering\"],\n): boolean {\n return (\n Object.keys(numbering.abstractDefinitions).length > 0 ||\n Object.keys(numbering.instances).length > 0\n );\n}\n\nfunction withOptionalRelatedPart(\n relationships: readonly OpcRelationship[],\n existingRelationships: readonly OpcRelationship[],\n relationshipType: string,\n target: string,\n includePart: boolean,\n): OpcRelationship[] {\n const next = relationships.map((relationship) => ({ ...relationship }));\n if (!includePart) {\n return next;\n }\n\n const existing = next.find((relationship) => relationship.type === relationshipType);\n if (existing) {\n return next;\n }\n\n const fallbackId =\n existingRelationships.find((relationship) => relationship.type === relationshipType)?.id ??\n `rId${next.length + 1}`;\n next.push({\n id: fallbackId,\n type: relationshipType,\n target,\n targetMode: \"internal\",\n });\n return next;\n}\n","import {\n createCanonicalDocumentSignature,\n projectCanonicalDocument,\n type CanonicalDocument,\n} from \"../model/canonical-document.ts\";\n\nexport interface DocumentVersionSnapshot {\n snapshotVersion: \"document-version-snapshot/1\";\n versionId: string;\n name: string;\n createdAt: string;\n documentId: string;\n documentSignature: string;\n canonicalDocument: CanonicalDocument;\n}\n\nexport interface CreateDocumentVersionSnapshotOptions {\n versionId?: string;\n name: string;\n createdAt?: string;\n}\n\nexport function createDocumentVersionSnapshotId(\n document: Pick<CanonicalDocument, \"docId\">,\n name: string,\n): string {\n return `${document.docId}:${name}`;\n}\n\nexport function createDocumentVersionSnapshot(\n document: CanonicalDocument,\n options: CreateDocumentVersionSnapshotOptions,\n): DocumentVersionSnapshot {\n const canonicalDocument = projectCanonicalDocument(document);\n return {\n snapshotVersion: \"document-version-snapshot/1\",\n versionId:\n options.versionId ?? createDocumentVersionSnapshotId(canonicalDocument, options.name),\n name: options.name,\n createdAt: options.createdAt ?? canonicalDocument.updatedAt,\n documentId: canonicalDocument.docId,\n documentSignature: createCanonicalDocumentSignature(canonicalDocument),\n canonicalDocument,\n };\n}\n\nexport function saveDocumentVersionSnapshot(\n snapshots: readonly DocumentVersionSnapshot[],\n snapshot: DocumentVersionSnapshot,\n): DocumentVersionSnapshot[] {\n const next = snapshots.filter((entry) => entry.versionId !== snapshot.versionId);\n next.push(snapshot);\n return next.sort(compareDocumentVersionSnapshots);\n}\n\nexport interface VersionAuditEntry {\n versionId: string;\n name: string;\n createdAt: string;\n documentSignature: string;\n action: \"created\" | \"compared\" | \"locked\";\n}\n\nexport function buildVersionAuditTrail(\n snapshots: readonly DocumentVersionSnapshot[],\n): VersionAuditEntry[] {\n return snapshots.map((snapshot) => ({\n versionId: snapshot.versionId,\n name: snapshot.name,\n createdAt: snapshot.createdAt,\n documentSignature: snapshot.documentSignature,\n action: \"created\",\n }));\n}\n\nexport function lockDocumentVersionSnapshot(\n snapshot: DocumentVersionSnapshot,\n): DocumentVersionSnapshot {\n return {\n ...snapshot,\n name: snapshot.name.startsWith(\"[locked] \")\n ? snapshot.name\n : `[locked] ${snapshot.name}`,\n };\n}\n\nfunction compareDocumentVersionSnapshots(\n left: DocumentVersionSnapshot,\n right: DocumentVersionSnapshot,\n): number {\n const createdAtComparison = right.createdAt.localeCompare(left.createdAt);\n if (createdAtComparison !== 0) {\n return createdAtComparison;\n }\n\n return left.versionId.localeCompare(right.versionId);\n}\n"],"mappings":"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","names":["baseIndex","targetIndex"]}
|