@beyondwork/docx-react-component 1.0.28 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canonical-document-BLEbzL2J.d.cts +844 -0
- package/dist/canonical-document-BLEbzL2J.d.ts +844 -0
- package/dist/chunk-2FJS5GZM.js +763 -0
- package/dist/chunk-2FJS5GZM.js.map +1 -0
- package/{src/core/commands/section-layout-commands.ts → dist/chunk-2OQBZS3F.js} +106 -340
- package/dist/chunk-2OQBZS3F.js.map +1 -0
- package/dist/chunk-2S7W4KFO.js +127 -0
- package/dist/chunk-2S7W4KFO.js.map +1 -0
- package/dist/chunk-2TG72QSW.js +3874 -0
- package/dist/chunk-2TG72QSW.js.map +1 -0
- package/{src/core/commands/table-structure-commands.ts → dist/chunk-36QNIZBO.js} +126 -315
- package/dist/chunk-36QNIZBO.js.map +1 -0
- package/dist/chunk-4AQOYAW4.js +3069 -0
- package/dist/chunk-4AQOYAW4.js.map +1 -0
- package/dist/chunk-4D5EWJ3P.js +77 -0
- package/dist/chunk-4D5EWJ3P.js.map +1 -0
- package/dist/chunk-5FN54NDH.js +2257 -0
- package/dist/chunk-5FN54NDH.js.map +1 -0
- package/dist/chunk-BOYGQYRQ.js +7306 -0
- package/dist/chunk-BOYGQYRQ.js.map +1 -0
- package/dist/chunk-CN3XMECL.js +212 -0
- package/dist/chunk-CN3XMECL.js.map +1 -0
- package/dist/chunk-EBI3BX6U.js +164 -0
- package/dist/chunk-EBI3BX6U.js.map +1 -0
- package/dist/chunk-EILUG3VB.js +1275 -0
- package/dist/chunk-EILUG3VB.js.map +1 -0
- package/dist/chunk-FUDY333O.js +70 -0
- package/dist/chunk-FUDY333O.js.map +1 -0
- package/dist/chunk-GBVOWFIK.js +1237 -0
- package/dist/chunk-GBVOWFIK.js.map +1 -0
- package/dist/chunk-H4TQ3H3Y.js +262 -0
- package/dist/chunk-H4TQ3H3Y.js.map +1 -0
- package/{src/core/commands/style-commands.ts → dist/chunk-JGB3IXZO.js} +40 -113
- package/dist/chunk-JGB3IXZO.js.map +1 -0
- package/dist/chunk-KD2QRQPY.js +4342 -0
- package/dist/chunk-KD2QRQPY.js.map +1 -0
- package/dist/chunk-KLMXQVYK.js +369 -0
- package/dist/chunk-KLMXQVYK.js.map +1 -0
- package/dist/chunk-KZUG5KFQ.js +214 -0
- package/dist/chunk-KZUG5KFQ.js.map +1 -0
- package/{src/core/state/text-transaction.ts → dist/chunk-QDAQ4CJU.js} +79 -236
- package/dist/chunk-QDAQ4CJU.js.map +1 -0
- package/{src/legal/bookmarks.ts → dist/chunk-RMH72RZI.js} +44 -130
- package/dist/chunk-RMH72RZI.js.map +1 -0
- package/dist/chunk-SWKWQZXM.js +117 -0
- package/dist/chunk-SWKWQZXM.js.map +1 -0
- package/{src/core/commands/formatting-commands.ts → dist/chunk-TJBP2K4T.js} +196 -536
- package/dist/chunk-TJBP2K4T.js.map +1 -0
- package/dist/chunk-TLCEAQDQ.js +542 -0
- package/dist/chunk-TLCEAQDQ.js.map +1 -0
- package/{src/core/commands/text-commands.ts → dist/chunk-UZXBISGO.js} +86 -142
- package/dist/chunk-UZXBISGO.js.map +1 -0
- package/dist/chunk-WGBAKP3Q.js +3220 -0
- package/dist/chunk-WGBAKP3Q.js.map +1 -0
- package/dist/compare/index.cjs +5475 -0
- package/dist/compare/index.cjs.map +1 -0
- package/dist/compare/index.d.cts +114 -0
- package/dist/compare/index.d.ts +114 -0
- package/dist/compare/index.js +731 -0
- package/dist/compare/index.js.map +1 -0
- package/dist/core/commands/formatting-commands.cjs +828 -0
- package/dist/core/commands/formatting-commands.cjs.map +1 -0
- package/dist/core/commands/formatting-commands.d.cts +63 -0
- package/dist/core/commands/formatting-commands.d.ts +63 -0
- package/dist/core/commands/formatting-commands.js +37 -0
- package/dist/core/commands/formatting-commands.js.map +1 -0
- package/dist/core/commands/image-commands.cjs +2023 -0
- package/dist/core/commands/image-commands.cjs.map +1 -0
- package/dist/core/commands/image-commands.d.cts +58 -0
- package/dist/core/commands/image-commands.d.ts +58 -0
- package/dist/core/commands/image-commands.js +18 -0
- package/dist/core/commands/image-commands.js.map +1 -0
- package/dist/core/commands/section-layout-commands.cjs +477 -0
- package/dist/core/commands/section-layout-commands.cjs.map +1 -0
- package/dist/core/commands/section-layout-commands.d.cts +62 -0
- package/dist/core/commands/section-layout-commands.d.ts +62 -0
- package/dist/core/commands/section-layout-commands.js +21 -0
- package/dist/core/commands/section-layout-commands.js.map +1 -0
- package/dist/core/commands/style-commands.cjs +214 -0
- package/dist/core/commands/style-commands.cjs.map +1 -0
- package/dist/core/commands/style-commands.d.cts +13 -0
- package/dist/core/commands/style-commands.d.ts +13 -0
- package/dist/core/commands/style-commands.js +9 -0
- package/dist/core/commands/style-commands.js.map +1 -0
- package/dist/core/commands/table-structure-commands.cjs +1883 -0
- package/dist/core/commands/table-structure-commands.cjs.map +1 -0
- package/dist/core/commands/table-structure-commands.d.cts +59 -0
- package/dist/core/commands/table-structure-commands.d.ts +59 -0
- package/dist/core/commands/table-structure-commands.js +12 -0
- package/dist/core/commands/table-structure-commands.js.map +1 -0
- package/dist/core/commands/text-commands.cjs +2391 -0
- package/dist/core/commands/text-commands.cjs.map +1 -0
- package/dist/core/commands/text-commands.d.cts +24 -0
- package/dist/core/commands/text-commands.d.ts +24 -0
- package/dist/core/commands/text-commands.js +28 -0
- package/dist/core/commands/text-commands.js.map +1 -0
- package/dist/core/selection/mapping.cjs +200 -0
- package/dist/core/selection/mapping.cjs.map +1 -0
- package/dist/core/selection/mapping.d.cts +2 -0
- package/dist/core/selection/mapping.d.ts +2 -0
- package/dist/core/selection/mapping.js +31 -0
- package/dist/core/selection/mapping.js.map +1 -0
- package/dist/core/state/editor-state.cjs +2278 -0
- package/dist/core/state/editor-state.cjs.map +1 -0
- package/dist/core/state/editor-state.d.cts +2 -0
- package/dist/core/state/editor-state.d.ts +2 -0
- package/dist/core/state/editor-state.js +26 -0
- package/dist/core/state/editor-state.js.map +1 -0
- package/dist/index.cjs +38553 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +15 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +7856 -0
- package/dist/index.js.map +1 -0
- package/dist/io/docx-session.cjs +16236 -0
- package/dist/io/docx-session.cjs.map +1 -0
- package/dist/io/docx-session.d.cts +21 -0
- package/dist/io/docx-session.d.ts +21 -0
- package/dist/io/docx-session.js +18 -0
- package/dist/io/docx-session.js.map +1 -0
- package/dist/legal/index.cjs +3900 -0
- package/dist/legal/index.cjs.map +1 -0
- package/dist/legal/index.d.cts +86 -0
- package/dist/legal/index.d.ts +86 -0
- package/dist/legal/index.js +616 -0
- package/dist/legal/index.js.map +1 -0
- package/dist/public-types-7ZL_94cz.d.ts +1573 -0
- package/dist/public-types-CeMaDueh.d.cts +1573 -0
- package/dist/public-types.cjs +19 -0
- package/dist/public-types.cjs.map +1 -0
- package/dist/public-types.d.cts +2 -0
- package/dist/public-types.d.ts +2 -0
- package/dist/public-types.js +1 -0
- package/dist/public-types.js.map +1 -0
- package/dist/runtime/document-runtime.cjs +11140 -0
- package/dist/runtime/document-runtime.cjs.map +1 -0
- package/dist/runtime/document-runtime.d.cts +231 -0
- package/dist/runtime/document-runtime.d.ts +231 -0
- package/dist/runtime/document-runtime.js +21 -0
- package/dist/runtime/document-runtime.js.map +1 -0
- package/dist/structural-helpers-CilgOVhh.d.cts +10 -0
- package/dist/structural-helpers-q0Gd-eBN.d.ts +10 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.cjs +313 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.cjs.map +1 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +67 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +67 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.js +23 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.js.map +1 -0
- package/dist/ui-tailwind/index.cjs +4833 -0
- package/dist/ui-tailwind/index.cjs.map +1 -0
- package/dist/ui-tailwind/index.d.cts +617 -0
- package/dist/ui-tailwind/index.d.ts +617 -0
- package/dist/ui-tailwind/index.js +575 -0
- package/dist/ui-tailwind/index.js.map +1 -0
- package/package.json +61 -41
- package/src/README.md +0 -85
- package/src/api/README.md +0 -26
- package/src/api/public-types.ts +0 -1421
- package/src/api/session-state.ts +0 -60
- package/src/compare/diff-engine.ts +0 -623
- package/src/compare/export-redlines.ts +0 -280
- package/src/compare/index.ts +0 -25
- package/src/compare/snapshot.ts +0 -97
- package/src/component-inventory.md +0 -99
- package/src/core/README.md +0 -10
- package/src/core/commands/README.md +0 -3
- package/src/core/commands/image-commands.ts +0 -373
- package/src/core/commands/index.ts +0 -1757
- package/src/core/commands/list-commands.ts +0 -565
- package/src/core/commands/paragraph-layout-commands.ts +0 -339
- package/src/core/commands/review-commands.ts +0 -108
- package/src/core/commands/structural-helpers.ts +0 -309
- package/src/core/schema/README.md +0 -3
- package/src/core/schema/text-schema.ts +0 -516
- package/src/core/search/search-text.ts +0 -357
- package/src/core/selection/README.md +0 -3
- package/src/core/selection/mapping.ts +0 -289
- package/src/core/selection/review-anchors.ts +0 -183
- package/src/core/state/README.md +0 -3
- package/src/core/state/editor-state.ts +0 -892
- package/src/formats/xlsx/io/parse-shared-strings.ts +0 -41
- package/src/formats/xlsx/io/parse-sheet.ts +0 -459
- package/src/formats/xlsx/io/parse-styles.ts +0 -59
- package/src/formats/xlsx/io/parse-workbook.ts +0 -75
- package/src/formats/xlsx/io/serialize-shared-strings.ts +0 -72
- package/src/formats/xlsx/io/serialize-sheet.ts +0 -333
- package/src/formats/xlsx/io/serialize-styles.ts +0 -98
- package/src/formats/xlsx/io/serialize-workbook.ts +0 -429
- package/src/formats/xlsx/io/xlsx-session.ts +0 -314
- package/src/formats/xlsx/model/cell.ts +0 -189
- package/src/formats/xlsx/model/sheet.ts +0 -326
- package/src/formats/xlsx/model/styles.ts +0 -118
- package/src/formats/xlsx/model/workbook.ts +0 -453
- package/src/formats/xlsx/runtime/cell-commands.ts +0 -567
- package/src/formats/xlsx/runtime/sheet-commands.ts +0 -206
- package/src/formats/xlsx/runtime/workbook-runtime.ts +0 -177
- package/src/formats/xlsx/runtime/workbook-transaction.ts +0 -822
- package/src/index.ts +0 -101
- package/src/io/README.md +0 -10
- package/src/io/docx-session.ts +0 -2882
- package/src/io/export/README.md +0 -3
- package/src/io/export/export-session.ts +0 -220
- package/src/io/export/minimal-docx.ts +0 -115
- package/src/io/export/reattach-preserved-parts.ts +0 -54
- package/src/io/export/serialize-comments.ts +0 -947
- package/src/io/export/serialize-footnotes.ts +0 -399
- package/src/io/export/serialize-headers-footers.ts +0 -372
- package/src/io/export/serialize-main-document.ts +0 -1376
- package/src/io/export/serialize-numbering.ts +0 -118
- package/src/io/export/serialize-revisions.ts +0 -389
- package/src/io/export/serialize-runtime-revisions.ts +0 -269
- package/src/io/export/serialize-tables.ts +0 -174
- package/src/io/export/split-review-boundaries.ts +0 -356
- package/src/io/normalize/README.md +0 -3
- package/src/io/normalize/normalize-text.ts +0 -639
- package/src/io/ooxml/README.md +0 -3
- package/src/io/ooxml/highlight-colors.ts +0 -39
- package/src/io/ooxml/numbering-sentinels.ts +0 -44
- package/src/io/ooxml/parse-comments.ts +0 -846
- package/src/io/ooxml/parse-complex-content.ts +0 -287
- package/src/io/ooxml/parse-fields.ts +0 -834
- package/src/io/ooxml/parse-footnotes.ts +0 -896
- package/src/io/ooxml/parse-headers-footers.ts +0 -1169
- package/src/io/ooxml/parse-inline-media.ts +0 -461
- package/src/io/ooxml/parse-main-document.ts +0 -2877
- package/src/io/ooxml/parse-numbering.ts +0 -432
- package/src/io/ooxml/parse-revisions.ts +0 -931
- package/src/io/ooxml/parse-settings.ts +0 -184
- package/src/io/ooxml/parse-shapes.ts +0 -296
- package/src/io/ooxml/parse-styles.ts +0 -463
- package/src/io/ooxml/parse-tables.ts +0 -618
- package/src/io/ooxml/parse-theme.ts +0 -346
- package/src/io/ooxml/part-manifest.ts +0 -136
- package/src/io/ooxml/revision-boundaries.ts +0 -351
- package/src/io/opc/README.md +0 -3
- package/src/io/opc/corrupt-package.ts +0 -166
- package/src/io/opc/docx-package.ts +0 -74
- package/src/io/opc/package-reader.ts +0 -325
- package/src/io/opc/package-writer.ts +0 -273
- package/src/io/source-package-provenance.ts +0 -241
- package/src/legal/cross-references.ts +0 -414
- package/src/legal/defined-terms.ts +0 -203
- package/src/legal/index.ts +0 -32
- package/src/legal/signature-blocks.ts +0 -259
- package/src/model/README.md +0 -3
- package/src/model/canonical-document.ts +0 -2632
- package/src/model/cds-1.0.0.ts +0 -212
- package/src/model/snapshot.ts +0 -649
- package/src/preservation/README.md +0 -3
- package/src/preservation/markup-compatibility.ts +0 -48
- package/src/preservation/opaque-fragment-store.ts +0 -89
- package/src/preservation/opaque-region.ts +0 -233
- package/src/preservation/package-preservation.ts +0 -113
- package/src/preservation/preserved-part-manifest.ts +0 -56
- package/src/preservation/relationship-retention.ts +0 -57
- package/src/preservation/store.ts +0 -185
- package/src/review/README.md +0 -16
- package/src/review/store/README.md +0 -3
- package/src/review/store/comment-anchors.ts +0 -70
- package/src/review/store/comment-remapping.ts +0 -154
- package/src/review/store/comment-store.ts +0 -331
- package/src/review/store/comment-thread.ts +0 -109
- package/src/review/store/revision-actions.ts +0 -394
- package/src/review/store/revision-store.ts +0 -312
- package/src/review/store/revision-types.ts +0 -171
- package/src/review/store/runtime-comment-store.ts +0 -43
- package/src/runtime/README.md +0 -3
- package/src/runtime/ai-action-policy.ts +0 -764
- package/src/runtime/document-layout.ts +0 -332
- package/src/runtime/document-navigation.ts +0 -603
- package/src/runtime/document-runtime.ts +0 -3159
- package/src/runtime/document-search.ts +0 -145
- package/src/runtime/numbering-prefix.ts +0 -216
- package/src/runtime/page-layout-estimation.ts +0 -212
- package/src/runtime/read-only-diagnostics-runtime.ts +0 -241
- package/src/runtime/review-runtime.ts +0 -44
- package/src/runtime/revision-runtime.ts +0 -107
- package/src/runtime/session-capabilities.ts +0 -192
- package/src/runtime/story-context.ts +0 -164
- package/src/runtime/story-targeting.ts +0 -162
- package/src/runtime/surface-projection.ts +0 -1357
- package/src/runtime/table-commands.ts +0 -173
- package/src/runtime/table-schema.ts +0 -309
- package/src/runtime/view-state.ts +0 -477
- package/src/runtime/virtualized-rendering.ts +0 -258
- package/src/runtime/workflow-markup.ts +0 -353
- package/src/ui/README.md +0 -30
- package/src/ui/WordReviewEditor.tsx +0 -4086
- package/src/ui/browser-export.ts +0 -52
- package/src/ui/comments/README.md +0 -3
- package/src/ui/compatibility/README.md +0 -3
- package/src/ui/editor-command-bag.ts +0 -120
- package/src/ui/editor-runtime-boundary.ts +0 -1457
- package/src/ui/editor-shell-view.tsx +0 -142
- package/src/ui/editor-surface/README.md +0 -3
- package/src/ui/editor-surface-controller.tsx +0 -61
- package/src/ui/headless/comment-decoration-model.ts +0 -124
- package/src/ui/headless/preserve-editor-selection.ts +0 -5
- package/src/ui/headless/revision-decoration-model.ts +0 -128
- package/src/ui/headless/selection-helpers.ts +0 -54
- package/src/ui/headless/selection-toolbar-model.ts +0 -34
- package/src/ui/headless/use-editor-keyboard.ts +0 -103
- package/src/ui/review/README.md +0 -3
- package/src/ui/runtime-snapshot-selectors.ts +0 -197
- package/src/ui/shared/revision-filters.ts +0 -31
- package/src/ui/status/README.md +0 -3
- package/src/ui/theme/README.md +0 -3
- package/src/ui/toolbar/README.md +0 -3
- package/src/ui/workflow-surface-blocked-rails.ts +0 -94
- package/src/ui-tailwind/chrome/tw-alert-banner.tsx +0 -64
- package/src/ui-tailwind/chrome/tw-image-context-toolbar.tsx +0 -129
- package/src/ui-tailwind/chrome/tw-layout-panel.tsx +0 -114
- package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +0 -34
- package/src/ui-tailwind/chrome/tw-page-ruler.tsx +0 -386
- package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +0 -186
- package/src/ui-tailwind/chrome/tw-suggestion-card.tsx +0 -139
- package/src/ui-tailwind/chrome/tw-table-context-toolbar.tsx +0 -128
- package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +0 -58
- package/src/ui-tailwind/chrome/use-before-unload.ts +0 -20
- package/src/ui-tailwind/editor-surface/perf-probe.ts +0 -179
- package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +0 -184
- package/src/ui-tailwind/editor-surface/pm-contextual-ui.ts +0 -31
- package/src/ui-tailwind/editor-surface/pm-decorations.ts +0 -427
- package/src/ui-tailwind/editor-surface/pm-position-map.ts +0 -123
- package/src/ui-tailwind/editor-surface/pm-schema.ts +0 -876
- package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +0 -504
- package/src/ui-tailwind/editor-surface/search-plugin.ts +0 -168
- package/src/ui-tailwind/editor-surface/surface-build-keys.ts +0 -61
- package/src/ui-tailwind/editor-surface/tw-caret.tsx +0 -12
- package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +0 -150
- package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +0 -129
- package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +0 -58
- package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +0 -151
- package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +0 -944
- package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +0 -111
- package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +0 -436
- package/src/ui-tailwind/index.ts +0 -62
- package/src/ui-tailwind/page-chrome-model.ts +0 -27
- package/src/ui-tailwind/review/tw-comment-sidebar.tsx +0 -406
- package/src/ui-tailwind/review/tw-health-panel.tsx +0 -149
- package/src/ui-tailwind/review/tw-review-rail.tsx +0 -120
- package/src/ui-tailwind/review/tw-revision-sidebar.tsx +0 -164
- package/src/ui-tailwind/status/tw-status-bar.tsx +0 -61
- package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +0 -52
- package/src/ui-tailwind/toolbar/tw-toolbar.tsx +0 -1064
- package/src/ui-tailwind/tw-review-workspace.tsx +0 -1417
- package/src/validation/README.md +0 -3
- package/src/validation/compatibility-engine.ts +0 -634
- package/src/validation/compatibility-report.ts +0 -161
- package/src/validation/diagnostics.ts +0 -204
- package/src/validation/docx-comment-proof.ts +0 -707
- package/src/validation/import-diagnostics.ts +0 -128
- package/src/validation/low-priority-word-surfaces.ts +0 -373
- /package/{src → dist}/ui-tailwind/theme/editor-theme.css +0 -0
|
@@ -1,270 +1,130 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Supports inserting and deleting section breaks, bounded section layout
|
|
5
|
-
* updates (page size, margins, gutter, orientation, columns, first-page /
|
|
6
|
-
* odd-even variants, page-numbering restart / format), and section break
|
|
7
|
-
* deletion with following-section merge semantics.
|
|
8
|
-
*
|
|
9
|
-
* All mutations are command-backed and export-safe.
|
|
10
|
-
*/
|
|
11
|
-
import type {
|
|
12
|
-
RuntimeRenderSnapshot,
|
|
13
|
-
SelectionSnapshot,
|
|
14
|
-
} from "../../api/public-types";
|
|
15
|
-
import type {
|
|
16
|
-
CanonicalDocument as CanonicalDocumentEnvelope,
|
|
17
|
-
ColumnProperties,
|
|
18
|
-
PageMargins,
|
|
19
|
-
PageNumbering,
|
|
20
|
-
PageSize,
|
|
21
|
-
SectionBreakNode,
|
|
22
|
-
SectionProperties,
|
|
23
|
-
} from "../../model/canonical-document.ts";
|
|
24
|
-
|
|
25
|
-
// ---- Public types ----
|
|
26
|
-
|
|
27
|
-
export interface SectionLayoutCommandContext {
|
|
28
|
-
timestamp: string;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface SectionLayoutMutationResult {
|
|
32
|
-
document: CanonicalDocumentEnvelope;
|
|
33
|
-
selection: SelectionSnapshot;
|
|
34
|
-
changed: boolean;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export type SectionBreakType =
|
|
38
|
-
| "nextPage"
|
|
39
|
-
| "continuous"
|
|
40
|
-
| "evenPage"
|
|
41
|
-
| "oddPage"
|
|
42
|
-
| "nextColumn";
|
|
43
|
-
|
|
44
|
-
export interface SectionLayoutPatch {
|
|
45
|
-
pageSize?: Partial<PageSize>;
|
|
46
|
-
pageMargins?: Partial<PageMargins>;
|
|
47
|
-
columns?: Partial<ColumnProperties>;
|
|
48
|
-
pageNumbering?: Partial<PageNumbering>;
|
|
49
|
-
titlePage?: boolean;
|
|
50
|
-
sectionType?: SectionBreakType;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface SectionLinkPatch {
|
|
54
|
-
kind: "header" | "footer";
|
|
55
|
-
variant: "default" | "first" | "even";
|
|
56
|
-
linkToPrevious: boolean;
|
|
57
|
-
relationshipId?: string | null;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// ---- Insert section break ----
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Insert a section break at the current selection position.
|
|
64
|
-
* The new section inherits properties from the section that contained the
|
|
65
|
-
* insertion point (the *following* section keeps its own properties).
|
|
66
|
-
*/
|
|
67
|
-
export function insertSectionBreak(
|
|
68
|
-
document: CanonicalDocumentEnvelope,
|
|
69
|
-
snapshot: RuntimeRenderSnapshot,
|
|
70
|
-
breakType: SectionBreakType,
|
|
71
|
-
_context: SectionLayoutCommandContext,
|
|
72
|
-
): SectionLayoutMutationResult {
|
|
73
|
-
const cloned = structuredClone(document) as CanonicalDocumentEnvelope;
|
|
1
|
+
// src/core/commands/section-layout-commands.ts
|
|
2
|
+
function insertSectionBreak(document, snapshot, breakType, _context) {
|
|
3
|
+
const cloned = structuredClone(document);
|
|
74
4
|
const surface = snapshot.surface;
|
|
75
|
-
|
|
76
5
|
if (!surface) {
|
|
77
6
|
return noopResult(document, snapshot.selection);
|
|
78
7
|
}
|
|
79
|
-
|
|
80
8
|
const position = snapshot.selection.head;
|
|
81
9
|
const blockIndex = resolveBlockIndexForPosition(surface.blocks, position);
|
|
82
|
-
|
|
83
10
|
if (blockIndex < 0) {
|
|
84
11
|
return noopResult(document, snapshot.selection);
|
|
85
12
|
}
|
|
86
|
-
|
|
87
13
|
const sectionTarget = resolveSectionTarget(cloned, surface.blocks, position);
|
|
88
14
|
const inheritedProperties = cloneSectionProperties(sectionTarget?.properties);
|
|
89
|
-
const sectionBreak
|
|
15
|
+
const sectionBreak = {
|
|
90
16
|
type: "section_break",
|
|
91
17
|
sectionProperties: {
|
|
92
18
|
...inheritedProperties,
|
|
93
|
-
sectionType: breakType
|
|
94
|
-
}
|
|
19
|
+
sectionType: breakType
|
|
20
|
+
}
|
|
95
21
|
};
|
|
96
|
-
|
|
97
22
|
cloned.content.children.splice(blockIndex + 1, 0, sectionBreak);
|
|
98
23
|
cloned.updatedAt = _context.timestamp;
|
|
99
|
-
|
|
100
24
|
return {
|
|
101
25
|
document: cloned,
|
|
102
26
|
selection: snapshot.selection,
|
|
103
|
-
changed: true
|
|
27
|
+
changed: true
|
|
104
28
|
};
|
|
105
29
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
document: CanonicalDocumentEnvelope,
|
|
109
|
-
sectionIndex: number,
|
|
110
|
-
breakType: SectionBreakType,
|
|
111
|
-
context: SectionLayoutCommandContext,
|
|
112
|
-
): SectionLayoutMutationResult {
|
|
113
|
-
const cloned = structuredClone(document) as CanonicalDocumentEnvelope;
|
|
30
|
+
function insertSectionBreakAfterSectionIndex(document, sectionIndex, breakType, context) {
|
|
31
|
+
const cloned = structuredClone(document);
|
|
114
32
|
const insertionIndex = findSectionInsertionIndex(cloned, sectionIndex);
|
|
115
33
|
if (insertionIndex < 0) {
|
|
116
34
|
return noopResult(document, createSelectionSnapshot(0, 0));
|
|
117
35
|
}
|
|
118
|
-
|
|
119
36
|
const inheritedProperties = cloneSectionProperties(
|
|
120
|
-
getSectionPropertiesAtIndex(cloned, sectionIndex)
|
|
37
|
+
getSectionPropertiesAtIndex(cloned, sectionIndex)
|
|
121
38
|
);
|
|
122
|
-
const sectionBreak
|
|
39
|
+
const sectionBreak = {
|
|
123
40
|
type: "section_break",
|
|
124
41
|
sectionProperties: {
|
|
125
42
|
...inheritedProperties,
|
|
126
|
-
sectionType: breakType
|
|
127
|
-
}
|
|
43
|
+
sectionType: breakType
|
|
44
|
+
}
|
|
128
45
|
};
|
|
129
|
-
|
|
130
46
|
cloned.content.children.splice(insertionIndex, 0, sectionBreak);
|
|
131
47
|
cloned.updatedAt = context.timestamp;
|
|
132
|
-
|
|
133
48
|
return {
|
|
134
49
|
document: cloned,
|
|
135
50
|
selection: createSelectionSnapshot(0, 0),
|
|
136
|
-
changed: true
|
|
51
|
+
changed: true
|
|
137
52
|
};
|
|
138
53
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Delete the section break at or nearest to the current selection position.
|
|
144
|
-
* On deletion the *following* section's formatting and header/footer linkage
|
|
145
|
-
* are adopted (Word merge semantics).
|
|
146
|
-
*/
|
|
147
|
-
export function deleteSectionBreak(
|
|
148
|
-
document: CanonicalDocumentEnvelope,
|
|
149
|
-
snapshot: RuntimeRenderSnapshot,
|
|
150
|
-
_context: SectionLayoutCommandContext,
|
|
151
|
-
): SectionLayoutMutationResult {
|
|
152
|
-
const cloned = structuredClone(document) as CanonicalDocumentEnvelope;
|
|
153
|
-
|
|
54
|
+
function deleteSectionBreak(document, snapshot, _context) {
|
|
55
|
+
const cloned = structuredClone(document);
|
|
154
56
|
const breakIndex = findNearestSectionBreak(cloned, snapshot);
|
|
155
57
|
if (breakIndex < 0) {
|
|
156
58
|
return noopResult(document, snapshot.selection);
|
|
157
59
|
}
|
|
158
|
-
|
|
159
60
|
const breakNode = cloned.content.children[breakIndex];
|
|
160
61
|
if (!breakNode || breakNode.type !== "section_break") {
|
|
161
62
|
return noopResult(document, snapshot.selection);
|
|
162
63
|
}
|
|
163
|
-
|
|
164
|
-
// Remove the section break node
|
|
165
64
|
cloned.content.children.splice(breakIndex, 1);
|
|
166
|
-
|
|
167
65
|
cloned.updatedAt = _context.timestamp;
|
|
168
|
-
|
|
169
66
|
return {
|
|
170
67
|
document: cloned,
|
|
171
68
|
selection: snapshot.selection,
|
|
172
|
-
changed: true
|
|
69
|
+
changed: true
|
|
173
70
|
};
|
|
174
71
|
}
|
|
175
|
-
|
|
176
|
-
export function deleteSectionBreakAtSectionIndex(
|
|
177
|
-
document: CanonicalDocumentEnvelope,
|
|
178
|
-
sectionIndex: number,
|
|
179
|
-
context: SectionLayoutCommandContext,
|
|
180
|
-
): SectionLayoutMutationResult {
|
|
72
|
+
function deleteSectionBreakAtSectionIndex(document, sectionIndex, context) {
|
|
181
73
|
if (sectionIndex <= 0) {
|
|
182
74
|
return noopResult(document, createSelectionSnapshot(0, 0));
|
|
183
75
|
}
|
|
184
|
-
|
|
185
|
-
const cloned = structuredClone(document) as CanonicalDocumentEnvelope;
|
|
76
|
+
const cloned = structuredClone(document);
|
|
186
77
|
const breakIndex = findSectionBreakNodeIndexForSection(cloned, sectionIndex);
|
|
187
78
|
if (breakIndex < 0) {
|
|
188
79
|
return noopResult(document, createSelectionSnapshot(0, 0));
|
|
189
80
|
}
|
|
190
|
-
|
|
191
81
|
cloned.content.children.splice(breakIndex, 1);
|
|
192
82
|
cloned.updatedAt = context.timestamp;
|
|
193
|
-
|
|
194
83
|
return {
|
|
195
84
|
document: cloned,
|
|
196
85
|
selection: createSelectionSnapshot(0, 0),
|
|
197
|
-
changed: true
|
|
86
|
+
changed: true
|
|
198
87
|
};
|
|
199
88
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Apply a bounded layout patch to the section containing the current selection.
|
|
205
|
-
* Supports: page size, margins, gutter, orientation, columns,
|
|
206
|
-
* first-page / odd-even variants, page-numbering restart / format.
|
|
207
|
-
*/
|
|
208
|
-
export function updateSectionLayout(
|
|
209
|
-
document: CanonicalDocumentEnvelope,
|
|
210
|
-
snapshot: RuntimeRenderSnapshot,
|
|
211
|
-
patch: SectionLayoutPatch,
|
|
212
|
-
_context: SectionLayoutCommandContext,
|
|
213
|
-
): SectionLayoutMutationResult {
|
|
214
|
-
const cloned = structuredClone(document) as CanonicalDocumentEnvelope;
|
|
89
|
+
function updateSectionLayout(document, snapshot, patch, _context) {
|
|
90
|
+
const cloned = structuredClone(document);
|
|
215
91
|
const surface = snapshot.surface;
|
|
216
|
-
|
|
217
92
|
if (!surface) {
|
|
218
93
|
return noopResult(document, snapshot.selection);
|
|
219
94
|
}
|
|
220
|
-
|
|
221
95
|
const position = snapshot.selection.head;
|
|
222
96
|
const sectionTarget = resolveSectionTarget(cloned, surface.blocks, position);
|
|
223
|
-
|
|
224
97
|
if (!sectionTarget) {
|
|
225
98
|
return noopResult(document, snapshot.selection);
|
|
226
99
|
}
|
|
227
|
-
|
|
228
100
|
const existing = sectionTarget.properties ?? {};
|
|
229
101
|
const updated = applySectionLayoutPatch(existing, patch);
|
|
230
|
-
|
|
231
102
|
if (sectionTarget.kind === "inline") {
|
|
232
103
|
const breakNode = cloned.content.children[sectionTarget.blockIndex];
|
|
233
104
|
if (breakNode && breakNode.type === "section_break") {
|
|
234
105
|
breakNode.sectionProperties = updated;
|
|
235
|
-
// Clear raw XML so the structured properties are used on export
|
|
236
106
|
delete breakNode.sectionPropertiesXml;
|
|
237
107
|
delete breakNode.propertiesXml;
|
|
238
108
|
}
|
|
239
109
|
} else {
|
|
240
|
-
// Final section: update subParts.finalSectionProperties
|
|
241
110
|
if (!cloned.subParts) {
|
|
242
111
|
return noopResult(document, snapshot.selection);
|
|
243
112
|
}
|
|
244
113
|
cloned.subParts.finalSectionProperties = updated;
|
|
245
114
|
}
|
|
246
|
-
|
|
247
115
|
cloned.updatedAt = _context.timestamp;
|
|
248
|
-
|
|
249
116
|
return {
|
|
250
117
|
document: cloned,
|
|
251
118
|
selection: snapshot.selection,
|
|
252
|
-
changed: true
|
|
119
|
+
changed: true
|
|
253
120
|
};
|
|
254
121
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
document: CanonicalDocumentEnvelope,
|
|
258
|
-
sectionIndex: number,
|
|
259
|
-
patch: SectionLayoutPatch,
|
|
260
|
-
context: SectionLayoutCommandContext,
|
|
261
|
-
): SectionLayoutMutationResult {
|
|
262
|
-
const cloned = structuredClone(document) as CanonicalDocumentEnvelope;
|
|
122
|
+
function updateSectionLayoutAtSectionIndex(document, sectionIndex, patch, context) {
|
|
123
|
+
const cloned = structuredClone(document);
|
|
263
124
|
const target = resolveSectionPropertiesOwner(cloned, sectionIndex);
|
|
264
125
|
if (!target) {
|
|
265
126
|
return noopResult(document, createSelectionSnapshot(0, 0));
|
|
266
127
|
}
|
|
267
|
-
|
|
268
128
|
const updated = applySectionLayoutPatch(target.properties ?? {}, patch);
|
|
269
129
|
if (target.kind === "inline") {
|
|
270
130
|
const breakNode = cloned.content.children[target.blockIndex];
|
|
@@ -275,44 +135,35 @@ export function updateSectionLayoutAtSectionIndex(
|
|
|
275
135
|
}
|
|
276
136
|
} else {
|
|
277
137
|
cloned.subParts = {
|
|
278
|
-
...
|
|
138
|
+
...cloned.subParts ?? {
|
|
279
139
|
headers: [],
|
|
280
|
-
footers: []
|
|
281
|
-
}
|
|
282
|
-
finalSectionProperties: updated
|
|
140
|
+
footers: []
|
|
141
|
+
},
|
|
142
|
+
finalSectionProperties: updated
|
|
283
143
|
};
|
|
284
144
|
}
|
|
285
|
-
|
|
286
145
|
cloned.updatedAt = context.timestamp;
|
|
287
146
|
return {
|
|
288
147
|
document: cloned,
|
|
289
148
|
selection: createSelectionSnapshot(0, 0),
|
|
290
|
-
changed: true
|
|
149
|
+
changed: true
|
|
291
150
|
};
|
|
292
151
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
document: CanonicalDocumentEnvelope,
|
|
296
|
-
sectionIndex: number,
|
|
297
|
-
pageNumbering: Partial<PageNumbering> | null,
|
|
298
|
-
context: SectionLayoutCommandContext,
|
|
299
|
-
): SectionLayoutMutationResult {
|
|
300
|
-
const cloned = structuredClone(document) as CanonicalDocumentEnvelope;
|
|
152
|
+
function setSectionPageNumberingAtSectionIndex(document, sectionIndex, pageNumbering, context) {
|
|
153
|
+
const cloned = structuredClone(document);
|
|
301
154
|
const target = resolveSectionPropertiesOwner(cloned, sectionIndex);
|
|
302
155
|
if (!target) {
|
|
303
156
|
return noopResult(document, createSelectionSnapshot(0, 0));
|
|
304
157
|
}
|
|
305
|
-
|
|
306
158
|
const nextProperties = cloneSectionProperties(target.properties);
|
|
307
159
|
if (pageNumbering === null) {
|
|
308
160
|
delete nextProperties.pageNumbering;
|
|
309
161
|
} else {
|
|
310
162
|
nextProperties.pageNumbering = {
|
|
311
|
-
...
|
|
312
|
-
...pageNumbering
|
|
163
|
+
...target.properties?.pageNumbering ?? {},
|
|
164
|
+
...pageNumbering
|
|
313
165
|
};
|
|
314
166
|
}
|
|
315
|
-
|
|
316
167
|
if (target.kind === "inline") {
|
|
317
168
|
const breakNode = cloned.content.children[target.blockIndex];
|
|
318
169
|
if (breakNode && breakNode.type === "section_break") {
|
|
@@ -322,59 +173,44 @@ export function setSectionPageNumberingAtSectionIndex(
|
|
|
322
173
|
}
|
|
323
174
|
} else {
|
|
324
175
|
cloned.subParts = {
|
|
325
|
-
...
|
|
176
|
+
...cloned.subParts ?? {
|
|
326
177
|
headers: [],
|
|
327
|
-
footers: []
|
|
328
|
-
}
|
|
329
|
-
finalSectionProperties: nextProperties
|
|
178
|
+
footers: []
|
|
179
|
+
},
|
|
180
|
+
finalSectionProperties: nextProperties
|
|
330
181
|
};
|
|
331
182
|
}
|
|
332
|
-
|
|
333
183
|
cloned.updatedAt = context.timestamp;
|
|
334
184
|
return {
|
|
335
185
|
document: cloned,
|
|
336
186
|
selection: createSelectionSnapshot(0, 0),
|
|
337
|
-
changed: true
|
|
187
|
+
changed: true
|
|
338
188
|
};
|
|
339
189
|
}
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
document: CanonicalDocumentEnvelope,
|
|
343
|
-
sectionIndex: number,
|
|
344
|
-
patch: SectionLinkPatch,
|
|
345
|
-
context: SectionLayoutCommandContext,
|
|
346
|
-
): SectionLayoutMutationResult {
|
|
347
|
-
const cloned = structuredClone(document) as CanonicalDocumentEnvelope;
|
|
190
|
+
function setHeaderFooterLinkAtSectionIndex(document, sectionIndex, patch, context) {
|
|
191
|
+
const cloned = structuredClone(document);
|
|
348
192
|
const target = resolveSectionPropertiesOwner(cloned, sectionIndex);
|
|
349
193
|
if (!target) {
|
|
350
194
|
return noopResult(document, createSelectionSnapshot(0, 0));
|
|
351
195
|
}
|
|
352
|
-
|
|
353
|
-
const referencesKey =
|
|
354
|
-
patch.kind === "header" ? "headerReferences" : "footerReferences";
|
|
196
|
+
const referencesKey = patch.kind === "header" ? "headerReferences" : "footerReferences";
|
|
355
197
|
const currentProperties = cloneSectionProperties(target.properties);
|
|
356
|
-
const currentReferences = [...
|
|
198
|
+
const currentReferences = [...currentProperties?.[referencesKey] ?? []];
|
|
357
199
|
const nextReferences = currentReferences.filter((entry) => entry.variant !== patch.variant);
|
|
358
|
-
|
|
359
200
|
if (!patch.linkToPrevious) {
|
|
360
|
-
const relationshipId =
|
|
361
|
-
normalizeRelationshipId(patch.relationshipId) ??
|
|
362
|
-
resolveInheritedRelationshipId(cloned, sectionIndex, patch.kind, patch.variant);
|
|
201
|
+
const relationshipId = normalizeRelationshipId(patch.relationshipId) ?? resolveInheritedRelationshipId(cloned, sectionIndex, patch.kind, patch.variant);
|
|
363
202
|
if (!relationshipId) {
|
|
364
203
|
return noopResult(document, createSelectionSnapshot(0, 0));
|
|
365
204
|
}
|
|
366
|
-
|
|
367
205
|
nextReferences.push({
|
|
368
206
|
variant: patch.variant,
|
|
369
|
-
relationshipId
|
|
207
|
+
relationshipId
|
|
370
208
|
});
|
|
371
209
|
}
|
|
372
|
-
|
|
373
210
|
const nextProperties = {
|
|
374
|
-
...
|
|
375
|
-
[referencesKey]: nextReferences.length > 0 ? nextReferences :
|
|
211
|
+
...currentProperties ?? {},
|
|
212
|
+
[referencesKey]: nextReferences.length > 0 ? nextReferences : void 0
|
|
376
213
|
};
|
|
377
|
-
|
|
378
214
|
if (target.kind === "inline") {
|
|
379
215
|
const breakNode = cloned.content.children[target.blockIndex];
|
|
380
216
|
if (breakNode && breakNode.type === "section_break") {
|
|
@@ -384,32 +220,24 @@ export function setHeaderFooterLinkAtSectionIndex(
|
|
|
384
220
|
}
|
|
385
221
|
} else {
|
|
386
222
|
cloned.subParts = {
|
|
387
|
-
...
|
|
223
|
+
...cloned.subParts ?? {
|
|
388
224
|
headers: [],
|
|
389
|
-
footers: []
|
|
390
|
-
}
|
|
391
|
-
finalSectionProperties: nextProperties
|
|
225
|
+
footers: []
|
|
226
|
+
},
|
|
227
|
+
finalSectionProperties: nextProperties
|
|
392
228
|
};
|
|
393
229
|
}
|
|
394
|
-
|
|
395
230
|
cloned.updatedAt = context.timestamp;
|
|
396
231
|
return {
|
|
397
232
|
document: cloned,
|
|
398
233
|
selection: createSelectionSnapshot(0, 0),
|
|
399
|
-
changed: true
|
|
234
|
+
changed: true
|
|
400
235
|
};
|
|
401
236
|
}
|
|
402
|
-
|
|
403
|
-
// ---- Helpers ----
|
|
404
|
-
|
|
405
|
-
function noopResult(
|
|
406
|
-
document: CanonicalDocumentEnvelope,
|
|
407
|
-
selection: SelectionSnapshot,
|
|
408
|
-
): SectionLayoutMutationResult {
|
|
237
|
+
function noopResult(document, selection) {
|
|
409
238
|
return { document, selection, changed: false };
|
|
410
239
|
}
|
|
411
|
-
|
|
412
|
-
function createSelectionSnapshot(anchor: number, head: number): SelectionSnapshot {
|
|
240
|
+
function createSelectionSnapshot(anchor, head) {
|
|
413
241
|
return {
|
|
414
242
|
anchor,
|
|
415
243
|
head,
|
|
@@ -420,16 +248,12 @@ function createSelectionSnapshot(anchor: number, head: number): SelectionSnapsho
|
|
|
420
248
|
to: Math.max(anchor, head),
|
|
421
249
|
assoc: {
|
|
422
250
|
start: -1,
|
|
423
|
-
end: 1
|
|
424
|
-
}
|
|
425
|
-
}
|
|
251
|
+
end: 1
|
|
252
|
+
}
|
|
253
|
+
}
|
|
426
254
|
};
|
|
427
255
|
}
|
|
428
|
-
|
|
429
|
-
function resolveBlockIndexForPosition(
|
|
430
|
-
blocks: ReadonlyArray<{ from: number; to: number }>,
|
|
431
|
-
position: number,
|
|
432
|
-
): number {
|
|
256
|
+
function resolveBlockIndexForPosition(blocks, position) {
|
|
433
257
|
for (let i = blocks.length - 1; i >= 0; i--) {
|
|
434
258
|
const block = blocks[i];
|
|
435
259
|
if (block && position >= block.from) {
|
|
@@ -438,21 +262,10 @@ function resolveBlockIndexForPosition(
|
|
|
438
262
|
}
|
|
439
263
|
return blocks.length > 0 ? 0 : -1;
|
|
440
264
|
}
|
|
441
|
-
|
|
442
|
-
interface SectionTarget {
|
|
443
|
-
kind: "inline" | "final";
|
|
444
|
-
blockIndex: number;
|
|
445
|
-
properties?: SectionProperties;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
function findSectionBreakNodeIndexForSection(
|
|
449
|
-
document: CanonicalDocumentEnvelope,
|
|
450
|
-
sectionIndex: number,
|
|
451
|
-
): number {
|
|
265
|
+
function findSectionBreakNodeIndexForSection(document, sectionIndex) {
|
|
452
266
|
if (sectionIndex <= 0) {
|
|
453
267
|
return -1;
|
|
454
268
|
}
|
|
455
|
-
|
|
456
269
|
let currentSection = 0;
|
|
457
270
|
for (let index = 0; index < document.content.children.length; index += 1) {
|
|
458
271
|
const block = document.content.children[index];
|
|
@@ -464,14 +277,9 @@ function findSectionBreakNodeIndexForSection(
|
|
|
464
277
|
return index;
|
|
465
278
|
}
|
|
466
279
|
}
|
|
467
|
-
|
|
468
280
|
return -1;
|
|
469
281
|
}
|
|
470
|
-
|
|
471
|
-
function findSectionInsertionIndex(
|
|
472
|
-
document: CanonicalDocumentEnvelope,
|
|
473
|
-
sectionIndex: number,
|
|
474
|
-
): number {
|
|
282
|
+
function findSectionInsertionIndex(document, sectionIndex) {
|
|
475
283
|
let currentSection = 0;
|
|
476
284
|
for (let index = 0; index < document.content.children.length; index += 1) {
|
|
477
285
|
const block = document.content.children[index];
|
|
@@ -483,26 +291,16 @@ function findSectionInsertionIndex(
|
|
|
483
291
|
}
|
|
484
292
|
currentSection += 1;
|
|
485
293
|
}
|
|
486
|
-
|
|
487
294
|
return sectionIndex === currentSection ? document.content.children.length : -1;
|
|
488
295
|
}
|
|
489
|
-
|
|
490
|
-
function getSectionPropertiesAtIndex(
|
|
491
|
-
document: CanonicalDocumentEnvelope,
|
|
492
|
-
sectionIndex: number,
|
|
493
|
-
): SectionProperties | undefined {
|
|
296
|
+
function getSectionPropertiesAtIndex(document, sectionIndex) {
|
|
494
297
|
const target = resolveSectionPropertiesOwner(document, sectionIndex);
|
|
495
298
|
return target?.properties;
|
|
496
299
|
}
|
|
497
|
-
|
|
498
|
-
function resolveSectionPropertiesOwner(
|
|
499
|
-
document: CanonicalDocumentEnvelope,
|
|
500
|
-
sectionIndex: number,
|
|
501
|
-
): SectionTarget | null {
|
|
300
|
+
function resolveSectionPropertiesOwner(document, sectionIndex) {
|
|
502
301
|
if (sectionIndex < 0) {
|
|
503
302
|
return null;
|
|
504
303
|
}
|
|
505
|
-
|
|
506
304
|
let currentSection = 0;
|
|
507
305
|
for (let index = 0; index < document.content.children.length; index += 1) {
|
|
508
306
|
const block = document.content.children[index];
|
|
@@ -513,94 +311,65 @@ function resolveSectionPropertiesOwner(
|
|
|
513
311
|
return {
|
|
514
312
|
kind: "inline",
|
|
515
313
|
blockIndex: index,
|
|
516
|
-
properties: block.sectionProperties
|
|
314
|
+
properties: block.sectionProperties
|
|
517
315
|
};
|
|
518
316
|
}
|
|
519
317
|
currentSection += 1;
|
|
520
318
|
}
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
properties: document.subParts?.finalSectionProperties,
|
|
527
|
-
}
|
|
528
|
-
: null;
|
|
319
|
+
return currentSection === sectionIndex ? {
|
|
320
|
+
kind: "final",
|
|
321
|
+
blockIndex: document.content.children.length - 1,
|
|
322
|
+
properties: document.subParts?.finalSectionProperties
|
|
323
|
+
} : null;
|
|
529
324
|
}
|
|
530
|
-
|
|
531
|
-
function normalizeRelationshipId(value: string | null | undefined): string | undefined {
|
|
325
|
+
function normalizeRelationshipId(value) {
|
|
532
326
|
if (typeof value !== "string") {
|
|
533
|
-
return
|
|
327
|
+
return void 0;
|
|
534
328
|
}
|
|
535
329
|
const trimmed = value.trim();
|
|
536
|
-
return trimmed.length > 0 ? trimmed :
|
|
330
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
537
331
|
}
|
|
538
|
-
|
|
539
|
-
function resolveInheritedRelationshipId(
|
|
540
|
-
document: CanonicalDocumentEnvelope,
|
|
541
|
-
sectionIndex: number,
|
|
542
|
-
kind: "header" | "footer",
|
|
543
|
-
variant: "default" | "first" | "even",
|
|
544
|
-
): string | undefined {
|
|
332
|
+
function resolveInheritedRelationshipId(document, sectionIndex, kind, variant) {
|
|
545
333
|
for (let candidateIndex = sectionIndex - 1; candidateIndex >= 0; candidateIndex -= 1) {
|
|
546
334
|
const properties = getSectionPropertiesAtIndex(document, candidateIndex);
|
|
547
|
-
const references =
|
|
548
|
-
kind === "header" ? properties?.headerReferences : properties?.footerReferences;
|
|
335
|
+
const references = kind === "header" ? properties?.headerReferences : properties?.footerReferences;
|
|
549
336
|
const directMatch = references?.find((entry) => entry.variant === variant);
|
|
550
337
|
if (directMatch?.relationshipId) {
|
|
551
338
|
return directMatch.relationshipId;
|
|
552
339
|
}
|
|
553
340
|
}
|
|
554
|
-
|
|
555
|
-
const documents = kind === "header"
|
|
556
|
-
? document.subParts?.headers ?? []
|
|
557
|
-
: document.subParts?.footers ?? [];
|
|
341
|
+
const documents = kind === "header" ? document.subParts?.headers ?? [] : document.subParts?.footers ?? [];
|
|
558
342
|
return documents.find((entry) => entry.variant === variant)?.relationshipId;
|
|
559
343
|
}
|
|
560
|
-
|
|
561
|
-
function resolveSectionTarget(
|
|
562
|
-
document: CanonicalDocumentEnvelope,
|
|
563
|
-
blocks: ReadonlyArray<{ from: number; to: number }>,
|
|
564
|
-
position: number,
|
|
565
|
-
): SectionTarget | null {
|
|
344
|
+
function resolveSectionTarget(document, blocks, position) {
|
|
566
345
|
const blockIndex = resolveBlockIndexForPosition(blocks, position);
|
|
567
346
|
if (blockIndex < 0) {
|
|
568
347
|
return null;
|
|
569
348
|
}
|
|
570
|
-
|
|
571
|
-
// Walk forward from the resolved block to find the next section break
|
|
572
349
|
for (let i = blockIndex; i < document.content.children.length; i++) {
|
|
573
350
|
const block = document.content.children[i];
|
|
574
351
|
if (block && block.type === "section_break") {
|
|
575
352
|
return {
|
|
576
353
|
kind: "inline",
|
|
577
354
|
blockIndex: i,
|
|
578
|
-
properties: block.sectionProperties
|
|
355
|
+
properties: block.sectionProperties
|
|
579
356
|
};
|
|
580
357
|
}
|
|
581
358
|
}
|
|
582
|
-
|
|
583
|
-
// No section break found; this is the final section
|
|
584
359
|
return {
|
|
585
360
|
kind: "final",
|
|
586
361
|
blockIndex: document.content.children.length - 1,
|
|
587
|
-
properties: document.subParts?.finalSectionProperties
|
|
362
|
+
properties: document.subParts?.finalSectionProperties
|
|
588
363
|
};
|
|
589
364
|
}
|
|
590
|
-
|
|
591
|
-
function findNearestSectionBreak(
|
|
592
|
-
document: CanonicalDocumentEnvelope,
|
|
593
|
-
snapshot: RuntimeRenderSnapshot,
|
|
594
|
-
): number {
|
|
365
|
+
function findNearestSectionBreak(document, snapshot) {
|
|
595
366
|
const surface = snapshot.surface;
|
|
596
367
|
if (!surface) {
|
|
597
368
|
return -1;
|
|
598
369
|
}
|
|
599
|
-
|
|
600
370
|
const position = snapshot.selection.head;
|
|
601
371
|
let bestIndex = -1;
|
|
602
372
|
let bestDistance = Number.POSITIVE_INFINITY;
|
|
603
|
-
|
|
604
373
|
for (let i = 0; i < document.content.children.length; i++) {
|
|
605
374
|
const block = document.content.children[i];
|
|
606
375
|
if (!block || block.type !== "section_break") {
|
|
@@ -612,69 +381,66 @@ function findNearestSectionBreak(
|
|
|
612
381
|
}
|
|
613
382
|
const distance = Math.min(
|
|
614
383
|
Math.abs(position - surfaceBlock.from),
|
|
615
|
-
Math.abs(position - surfaceBlock.to)
|
|
384
|
+
Math.abs(position - surfaceBlock.to)
|
|
616
385
|
);
|
|
617
386
|
if (distance < bestDistance) {
|
|
618
387
|
bestDistance = distance;
|
|
619
388
|
bestIndex = i;
|
|
620
389
|
}
|
|
621
390
|
}
|
|
622
|
-
|
|
623
391
|
return bestIndex;
|
|
624
392
|
}
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
existing: SectionProperties,
|
|
628
|
-
patch: SectionLayoutPatch,
|
|
629
|
-
): SectionProperties {
|
|
630
|
-
const result: SectionProperties = { ...existing };
|
|
631
|
-
|
|
393
|
+
function applySectionLayoutPatch(existing, patch) {
|
|
394
|
+
const result = { ...existing };
|
|
632
395
|
if (patch.pageSize) {
|
|
633
396
|
result.pageSize = {
|
|
634
|
-
...
|
|
635
|
-
...patch.pageSize
|
|
397
|
+
...existing.pageSize ?? { width: 12240, height: 15840 },
|
|
398
|
+
...patch.pageSize
|
|
636
399
|
};
|
|
637
400
|
}
|
|
638
|
-
|
|
639
401
|
if (patch.pageMargins) {
|
|
640
402
|
result.pageMargins = {
|
|
641
|
-
...
|
|
403
|
+
...existing.pageMargins ?? {
|
|
642
404
|
top: 1440,
|
|
643
405
|
right: 1440,
|
|
644
406
|
bottom: 1440,
|
|
645
|
-
left: 1440
|
|
646
|
-
}
|
|
647
|
-
...patch.pageMargins
|
|
407
|
+
left: 1440
|
|
408
|
+
},
|
|
409
|
+
...patch.pageMargins
|
|
648
410
|
};
|
|
649
411
|
}
|
|
650
|
-
|
|
651
412
|
if (patch.columns) {
|
|
652
413
|
result.columns = {
|
|
653
|
-
...
|
|
654
|
-
...patch.columns
|
|
414
|
+
...existing.columns ?? {},
|
|
415
|
+
...patch.columns
|
|
655
416
|
};
|
|
656
417
|
}
|
|
657
|
-
|
|
658
418
|
if (patch.pageNumbering) {
|
|
659
419
|
result.pageNumbering = {
|
|
660
|
-
...
|
|
661
|
-
...patch.pageNumbering
|
|
420
|
+
...existing.pageNumbering ?? {},
|
|
421
|
+
...patch.pageNumbering
|
|
662
422
|
};
|
|
663
423
|
}
|
|
664
|
-
|
|
665
|
-
if (patch.titlePage !== undefined) {
|
|
424
|
+
if (patch.titlePage !== void 0) {
|
|
666
425
|
result.titlePage = patch.titlePage;
|
|
667
426
|
}
|
|
668
|
-
|
|
669
|
-
if (patch.sectionType !== undefined) {
|
|
427
|
+
if (patch.sectionType !== void 0) {
|
|
670
428
|
result.sectionType = patch.sectionType;
|
|
671
429
|
}
|
|
672
|
-
|
|
673
430
|
return result;
|
|
674
431
|
}
|
|
675
|
-
|
|
676
|
-
function cloneSectionProperties(
|
|
677
|
-
properties: SectionProperties | undefined,
|
|
678
|
-
): SectionProperties {
|
|
432
|
+
function cloneSectionProperties(properties) {
|
|
679
433
|
return properties ? structuredClone(properties) : {};
|
|
680
434
|
}
|
|
435
|
+
|
|
436
|
+
export {
|
|
437
|
+
insertSectionBreak,
|
|
438
|
+
insertSectionBreakAfterSectionIndex,
|
|
439
|
+
deleteSectionBreak,
|
|
440
|
+
deleteSectionBreakAtSectionIndex,
|
|
441
|
+
updateSectionLayout,
|
|
442
|
+
updateSectionLayoutAtSectionIndex,
|
|
443
|
+
setSectionPageNumberingAtSectionIndex,
|
|
444
|
+
setHeaderFooterLinkAtSectionIndex
|
|
445
|
+
};
|
|
446
|
+
//# sourceMappingURL=chunk-2OQBZS3F.js.map
|