@beyondwork/docx-react-component 1.0.27 → 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.
Files changed (356) hide show
  1. package/dist/canonical-document-BLEbzL2J.d.cts +844 -0
  2. package/dist/canonical-document-BLEbzL2J.d.ts +844 -0
  3. package/dist/chunk-2FJS5GZM.js +763 -0
  4. package/dist/chunk-2FJS5GZM.js.map +1 -0
  5. package/{src/core/commands/section-layout-commands.ts → dist/chunk-2OQBZS3F.js} +106 -340
  6. package/dist/chunk-2OQBZS3F.js.map +1 -0
  7. package/dist/chunk-2S7W4KFO.js +127 -0
  8. package/dist/chunk-2S7W4KFO.js.map +1 -0
  9. package/dist/chunk-2TG72QSW.js +3874 -0
  10. package/dist/chunk-2TG72QSW.js.map +1 -0
  11. package/{src/core/commands/table-structure-commands.ts → dist/chunk-36QNIZBO.js} +126 -315
  12. package/dist/chunk-36QNIZBO.js.map +1 -0
  13. package/dist/chunk-4AQOYAW4.js +3069 -0
  14. package/dist/chunk-4AQOYAW4.js.map +1 -0
  15. package/dist/chunk-4D5EWJ3P.js +77 -0
  16. package/dist/chunk-4D5EWJ3P.js.map +1 -0
  17. package/dist/chunk-5FN54NDH.js +2257 -0
  18. package/dist/chunk-5FN54NDH.js.map +1 -0
  19. package/dist/chunk-BOYGQYRQ.js +7306 -0
  20. package/dist/chunk-BOYGQYRQ.js.map +1 -0
  21. package/dist/chunk-CN3XMECL.js +212 -0
  22. package/dist/chunk-CN3XMECL.js.map +1 -0
  23. package/dist/chunk-EBI3BX6U.js +164 -0
  24. package/dist/chunk-EBI3BX6U.js.map +1 -0
  25. package/dist/chunk-EILUG3VB.js +1275 -0
  26. package/dist/chunk-EILUG3VB.js.map +1 -0
  27. package/dist/chunk-FUDY333O.js +70 -0
  28. package/dist/chunk-FUDY333O.js.map +1 -0
  29. package/dist/chunk-GBVOWFIK.js +1237 -0
  30. package/dist/chunk-GBVOWFIK.js.map +1 -0
  31. package/dist/chunk-H4TQ3H3Y.js +262 -0
  32. package/dist/chunk-H4TQ3H3Y.js.map +1 -0
  33. package/{src/core/commands/style-commands.ts → dist/chunk-JGB3IXZO.js} +40 -113
  34. package/dist/chunk-JGB3IXZO.js.map +1 -0
  35. package/dist/chunk-KD2QRQPY.js +4342 -0
  36. package/dist/chunk-KD2QRQPY.js.map +1 -0
  37. package/dist/chunk-KLMXQVYK.js +369 -0
  38. package/dist/chunk-KLMXQVYK.js.map +1 -0
  39. package/dist/chunk-KZUG5KFQ.js +214 -0
  40. package/dist/chunk-KZUG5KFQ.js.map +1 -0
  41. package/{src/core/state/text-transaction.ts → dist/chunk-QDAQ4CJU.js} +79 -236
  42. package/dist/chunk-QDAQ4CJU.js.map +1 -0
  43. package/{src/legal/bookmarks.ts → dist/chunk-RMH72RZI.js} +44 -130
  44. package/dist/chunk-RMH72RZI.js.map +1 -0
  45. package/dist/chunk-SWKWQZXM.js +117 -0
  46. package/dist/chunk-SWKWQZXM.js.map +1 -0
  47. package/{src/core/commands/formatting-commands.ts → dist/chunk-TJBP2K4T.js} +196 -536
  48. package/dist/chunk-TJBP2K4T.js.map +1 -0
  49. package/dist/chunk-TLCEAQDQ.js +542 -0
  50. package/dist/chunk-TLCEAQDQ.js.map +1 -0
  51. package/{src/core/commands/text-commands.ts → dist/chunk-UZXBISGO.js} +86 -142
  52. package/dist/chunk-UZXBISGO.js.map +1 -0
  53. package/dist/chunk-WGBAKP3Q.js +3220 -0
  54. package/dist/chunk-WGBAKP3Q.js.map +1 -0
  55. package/dist/compare/index.cjs +5475 -0
  56. package/dist/compare/index.cjs.map +1 -0
  57. package/dist/compare/index.d.cts +114 -0
  58. package/dist/compare/index.d.ts +114 -0
  59. package/dist/compare/index.js +731 -0
  60. package/dist/compare/index.js.map +1 -0
  61. package/dist/core/commands/formatting-commands.cjs +828 -0
  62. package/dist/core/commands/formatting-commands.cjs.map +1 -0
  63. package/dist/core/commands/formatting-commands.d.cts +63 -0
  64. package/dist/core/commands/formatting-commands.d.ts +63 -0
  65. package/dist/core/commands/formatting-commands.js +37 -0
  66. package/dist/core/commands/formatting-commands.js.map +1 -0
  67. package/dist/core/commands/image-commands.cjs +2023 -0
  68. package/dist/core/commands/image-commands.cjs.map +1 -0
  69. package/dist/core/commands/image-commands.d.cts +58 -0
  70. package/dist/core/commands/image-commands.d.ts +58 -0
  71. package/dist/core/commands/image-commands.js +18 -0
  72. package/dist/core/commands/image-commands.js.map +1 -0
  73. package/dist/core/commands/section-layout-commands.cjs +477 -0
  74. package/dist/core/commands/section-layout-commands.cjs.map +1 -0
  75. package/dist/core/commands/section-layout-commands.d.cts +62 -0
  76. package/dist/core/commands/section-layout-commands.d.ts +62 -0
  77. package/dist/core/commands/section-layout-commands.js +21 -0
  78. package/dist/core/commands/section-layout-commands.js.map +1 -0
  79. package/dist/core/commands/style-commands.cjs +214 -0
  80. package/dist/core/commands/style-commands.cjs.map +1 -0
  81. package/dist/core/commands/style-commands.d.cts +13 -0
  82. package/dist/core/commands/style-commands.d.ts +13 -0
  83. package/dist/core/commands/style-commands.js +9 -0
  84. package/dist/core/commands/style-commands.js.map +1 -0
  85. package/dist/core/commands/table-structure-commands.cjs +1883 -0
  86. package/dist/core/commands/table-structure-commands.cjs.map +1 -0
  87. package/dist/core/commands/table-structure-commands.d.cts +59 -0
  88. package/dist/core/commands/table-structure-commands.d.ts +59 -0
  89. package/dist/core/commands/table-structure-commands.js +12 -0
  90. package/dist/core/commands/table-structure-commands.js.map +1 -0
  91. package/dist/core/commands/text-commands.cjs +2391 -0
  92. package/dist/core/commands/text-commands.cjs.map +1 -0
  93. package/dist/core/commands/text-commands.d.cts +24 -0
  94. package/dist/core/commands/text-commands.d.ts +24 -0
  95. package/dist/core/commands/text-commands.js +28 -0
  96. package/dist/core/commands/text-commands.js.map +1 -0
  97. package/dist/core/selection/mapping.cjs +200 -0
  98. package/dist/core/selection/mapping.cjs.map +1 -0
  99. package/dist/core/selection/mapping.d.cts +2 -0
  100. package/dist/core/selection/mapping.d.ts +2 -0
  101. package/dist/core/selection/mapping.js +31 -0
  102. package/dist/core/selection/mapping.js.map +1 -0
  103. package/dist/core/state/editor-state.cjs +2278 -0
  104. package/dist/core/state/editor-state.cjs.map +1 -0
  105. package/dist/core/state/editor-state.d.cts +2 -0
  106. package/dist/core/state/editor-state.d.ts +2 -0
  107. package/dist/core/state/editor-state.js +26 -0
  108. package/dist/core/state/editor-state.js.map +1 -0
  109. package/dist/index.cjs +38553 -0
  110. package/dist/index.cjs.map +1 -0
  111. package/dist/index.d.cts +15 -0
  112. package/dist/index.d.ts +15 -0
  113. package/dist/index.js +7856 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/io/docx-session.cjs +16236 -0
  116. package/dist/io/docx-session.cjs.map +1 -0
  117. package/dist/io/docx-session.d.cts +21 -0
  118. package/dist/io/docx-session.d.ts +21 -0
  119. package/dist/io/docx-session.js +18 -0
  120. package/dist/io/docx-session.js.map +1 -0
  121. package/dist/legal/index.cjs +3900 -0
  122. package/dist/legal/index.cjs.map +1 -0
  123. package/dist/legal/index.d.cts +86 -0
  124. package/dist/legal/index.d.ts +86 -0
  125. package/dist/legal/index.js +616 -0
  126. package/dist/legal/index.js.map +1 -0
  127. package/dist/public-types-7ZL_94cz.d.ts +1573 -0
  128. package/dist/public-types-CeMaDueh.d.cts +1573 -0
  129. package/dist/public-types.cjs +19 -0
  130. package/dist/public-types.cjs.map +1 -0
  131. package/dist/public-types.d.cts +2 -0
  132. package/dist/public-types.d.ts +2 -0
  133. package/dist/public-types.js +1 -0
  134. package/dist/public-types.js.map +1 -0
  135. package/dist/runtime/document-runtime.cjs +11140 -0
  136. package/dist/runtime/document-runtime.cjs.map +1 -0
  137. package/dist/runtime/document-runtime.d.cts +231 -0
  138. package/dist/runtime/document-runtime.d.ts +231 -0
  139. package/dist/runtime/document-runtime.js +21 -0
  140. package/dist/runtime/document-runtime.js.map +1 -0
  141. package/dist/structural-helpers-CilgOVhh.d.cts +10 -0
  142. package/dist/structural-helpers-q0Gd-eBN.d.ts +10 -0
  143. package/dist/ui-tailwind/editor-surface/search-plugin.cjs +313 -0
  144. package/dist/ui-tailwind/editor-surface/search-plugin.cjs.map +1 -0
  145. package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +67 -0
  146. package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +67 -0
  147. package/dist/ui-tailwind/editor-surface/search-plugin.js +23 -0
  148. package/dist/ui-tailwind/editor-surface/search-plugin.js.map +1 -0
  149. package/dist/ui-tailwind/index.cjs +4833 -0
  150. package/dist/ui-tailwind/index.cjs.map +1 -0
  151. package/dist/ui-tailwind/index.d.cts +617 -0
  152. package/dist/ui-tailwind/index.d.ts +617 -0
  153. package/dist/ui-tailwind/index.js +575 -0
  154. package/dist/ui-tailwind/index.js.map +1 -0
  155. package/package.json +64 -54
  156. package/src/README.md +0 -85
  157. package/src/api/README.md +0 -26
  158. package/src/api/public-types.ts +0 -1418
  159. package/src/api/session-state.ts +0 -60
  160. package/src/compare/diff-engine.ts +0 -623
  161. package/src/compare/export-redlines.ts +0 -280
  162. package/src/compare/index.ts +0 -25
  163. package/src/compare/snapshot.ts +0 -97
  164. package/src/component-inventory.md +0 -99
  165. package/src/core/README.md +0 -10
  166. package/src/core/commands/README.md +0 -3
  167. package/src/core/commands/image-commands.ts +0 -373
  168. package/src/core/commands/index.ts +0 -1757
  169. package/src/core/commands/list-commands.ts +0 -565
  170. package/src/core/commands/paragraph-layout-commands.ts +0 -339
  171. package/src/core/commands/review-commands.ts +0 -108
  172. package/src/core/commands/structural-helpers.ts +0 -309
  173. package/src/core/schema/README.md +0 -3
  174. package/src/core/schema/text-schema.ts +0 -516
  175. package/src/core/search/search-text.ts +0 -357
  176. package/src/core/selection/README.md +0 -3
  177. package/src/core/selection/mapping.ts +0 -289
  178. package/src/core/selection/review-anchors.ts +0 -183
  179. package/src/core/state/README.md +0 -3
  180. package/src/core/state/editor-state.ts +0 -892
  181. package/src/formats/xlsx/io/parse-shared-strings.ts +0 -41
  182. package/src/formats/xlsx/io/parse-sheet.ts +0 -459
  183. package/src/formats/xlsx/io/parse-styles.ts +0 -59
  184. package/src/formats/xlsx/io/parse-workbook.ts +0 -75
  185. package/src/formats/xlsx/io/serialize-shared-strings.ts +0 -72
  186. package/src/formats/xlsx/io/serialize-sheet.ts +0 -333
  187. package/src/formats/xlsx/io/serialize-styles.ts +0 -98
  188. package/src/formats/xlsx/io/serialize-workbook.ts +0 -429
  189. package/src/formats/xlsx/io/xlsx-session.ts +0 -314
  190. package/src/formats/xlsx/model/cell.ts +0 -189
  191. package/src/formats/xlsx/model/sheet.ts +0 -326
  192. package/src/formats/xlsx/model/styles.ts +0 -118
  193. package/src/formats/xlsx/model/workbook.ts +0 -453
  194. package/src/formats/xlsx/runtime/cell-commands.ts +0 -567
  195. package/src/formats/xlsx/runtime/sheet-commands.ts +0 -206
  196. package/src/formats/xlsx/runtime/workbook-runtime.ts +0 -177
  197. package/src/formats/xlsx/runtime/workbook-transaction.ts +0 -822
  198. package/src/index.ts +0 -101
  199. package/src/io/README.md +0 -10
  200. package/src/io/docx-session.ts +0 -2882
  201. package/src/io/export/README.md +0 -3
  202. package/src/io/export/export-session.ts +0 -220
  203. package/src/io/export/minimal-docx.ts +0 -115
  204. package/src/io/export/reattach-preserved-parts.ts +0 -54
  205. package/src/io/export/serialize-comments.ts +0 -947
  206. package/src/io/export/serialize-footnotes.ts +0 -399
  207. package/src/io/export/serialize-headers-footers.ts +0 -372
  208. package/src/io/export/serialize-main-document.ts +0 -1376
  209. package/src/io/export/serialize-numbering.ts +0 -118
  210. package/src/io/export/serialize-revisions.ts +0 -389
  211. package/src/io/export/serialize-runtime-revisions.ts +0 -269
  212. package/src/io/export/serialize-tables.ts +0 -174
  213. package/src/io/export/split-review-boundaries.ts +0 -356
  214. package/src/io/normalize/README.md +0 -3
  215. package/src/io/normalize/normalize-text.ts +0 -639
  216. package/src/io/ooxml/README.md +0 -3
  217. package/src/io/ooxml/highlight-colors.ts +0 -39
  218. package/src/io/ooxml/numbering-sentinels.ts +0 -44
  219. package/src/io/ooxml/parse-comments.ts +0 -846
  220. package/src/io/ooxml/parse-complex-content.ts +0 -287
  221. package/src/io/ooxml/parse-fields.ts +0 -834
  222. package/src/io/ooxml/parse-footnotes.ts +0 -896
  223. package/src/io/ooxml/parse-headers-footers.ts +0 -1169
  224. package/src/io/ooxml/parse-inline-media.ts +0 -461
  225. package/src/io/ooxml/parse-main-document.ts +0 -2877
  226. package/src/io/ooxml/parse-numbering.ts +0 -432
  227. package/src/io/ooxml/parse-revisions.ts +0 -931
  228. package/src/io/ooxml/parse-settings.ts +0 -184
  229. package/src/io/ooxml/parse-shapes.ts +0 -296
  230. package/src/io/ooxml/parse-styles.ts +0 -463
  231. package/src/io/ooxml/parse-tables.ts +0 -618
  232. package/src/io/ooxml/parse-theme.ts +0 -346
  233. package/src/io/ooxml/part-manifest.ts +0 -136
  234. package/src/io/ooxml/revision-boundaries.ts +0 -351
  235. package/src/io/opc/README.md +0 -3
  236. package/src/io/opc/corrupt-package.ts +0 -166
  237. package/src/io/opc/docx-package.ts +0 -74
  238. package/src/io/opc/package-reader.ts +0 -325
  239. package/src/io/opc/package-writer.ts +0 -273
  240. package/src/io/source-package-provenance.ts +0 -241
  241. package/src/legal/cross-references.ts +0 -414
  242. package/src/legal/defined-terms.ts +0 -203
  243. package/src/legal/index.ts +0 -32
  244. package/src/legal/signature-blocks.ts +0 -259
  245. package/src/model/README.md +0 -3
  246. package/src/model/canonical-document.ts +0 -2632
  247. package/src/model/cds-1.0.0.ts +0 -212
  248. package/src/model/snapshot.ts +0 -649
  249. package/src/preservation/README.md +0 -3
  250. package/src/preservation/markup-compatibility.ts +0 -48
  251. package/src/preservation/opaque-fragment-store.ts +0 -89
  252. package/src/preservation/opaque-region.ts +0 -233
  253. package/src/preservation/package-preservation.ts +0 -113
  254. package/src/preservation/preserved-part-manifest.ts +0 -56
  255. package/src/preservation/relationship-retention.ts +0 -57
  256. package/src/preservation/store.ts +0 -185
  257. package/src/review/README.md +0 -16
  258. package/src/review/store/README.md +0 -3
  259. package/src/review/store/comment-anchors.ts +0 -70
  260. package/src/review/store/comment-remapping.ts +0 -154
  261. package/src/review/store/comment-store.ts +0 -331
  262. package/src/review/store/comment-thread.ts +0 -109
  263. package/src/review/store/revision-actions.ts +0 -394
  264. package/src/review/store/revision-store.ts +0 -312
  265. package/src/review/store/revision-types.ts +0 -171
  266. package/src/review/store/runtime-comment-store.ts +0 -43
  267. package/src/runtime/README.md +0 -3
  268. package/src/runtime/ai-action-policy.ts +0 -764
  269. package/src/runtime/collab-review-sync.ts +0 -254
  270. package/src/runtime/document-layout.ts +0 -332
  271. package/src/runtime/document-navigation.ts +0 -603
  272. package/src/runtime/document-runtime.ts +0 -3159
  273. package/src/runtime/document-search.ts +0 -145
  274. package/src/runtime/numbering-prefix.ts +0 -216
  275. package/src/runtime/page-layout-estimation.ts +0 -212
  276. package/src/runtime/read-only-diagnostics-runtime.ts +0 -241
  277. package/src/runtime/review-runtime.ts +0 -44
  278. package/src/runtime/revision-runtime.ts +0 -107
  279. package/src/runtime/session-capabilities.ts +0 -192
  280. package/src/runtime/story-context.ts +0 -164
  281. package/src/runtime/story-targeting.ts +0 -162
  282. package/src/runtime/surface-projection.ts +0 -1357
  283. package/src/runtime/table-commands.ts +0 -173
  284. package/src/runtime/table-schema.ts +0 -309
  285. package/src/runtime/view-state.ts +0 -477
  286. package/src/runtime/virtualized-rendering.ts +0 -258
  287. package/src/runtime/workflow-markup.ts +0 -353
  288. package/src/ui/README.md +0 -30
  289. package/src/ui/WordReviewEditor.tsx +0 -4097
  290. package/src/ui/browser-export.ts +0 -52
  291. package/src/ui/comments/README.md +0 -3
  292. package/src/ui/compatibility/README.md +0 -3
  293. package/src/ui/editor-command-bag.ts +0 -120
  294. package/src/ui/editor-runtime-boundary.ts +0 -1457
  295. package/src/ui/editor-shell-view.tsx +0 -142
  296. package/src/ui/editor-surface/README.md +0 -3
  297. package/src/ui/editor-surface-controller.tsx +0 -63
  298. package/src/ui/headless/comment-decoration-model.ts +0 -124
  299. package/src/ui/headless/preserve-editor-selection.ts +0 -5
  300. package/src/ui/headless/revision-decoration-model.ts +0 -128
  301. package/src/ui/headless/selection-helpers.ts +0 -54
  302. package/src/ui/headless/selection-toolbar-model.ts +0 -34
  303. package/src/ui/headless/use-editor-keyboard.ts +0 -103
  304. package/src/ui/review/README.md +0 -3
  305. package/src/ui/runtime-snapshot-selectors.ts +0 -197
  306. package/src/ui/shared/revision-filters.ts +0 -31
  307. package/src/ui/status/README.md +0 -3
  308. package/src/ui/theme/README.md +0 -3
  309. package/src/ui/toolbar/README.md +0 -3
  310. package/src/ui/workflow-surface-blocked-rails.ts +0 -94
  311. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +0 -64
  312. package/src/ui-tailwind/chrome/tw-image-context-toolbar.tsx +0 -129
  313. package/src/ui-tailwind/chrome/tw-layout-panel.tsx +0 -114
  314. package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +0 -34
  315. package/src/ui-tailwind/chrome/tw-page-ruler.tsx +0 -386
  316. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +0 -186
  317. package/src/ui-tailwind/chrome/tw-suggestion-card.tsx +0 -139
  318. package/src/ui-tailwind/chrome/tw-table-context-toolbar.tsx +0 -128
  319. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +0 -58
  320. package/src/ui-tailwind/chrome/use-before-unload.ts +0 -20
  321. package/src/ui-tailwind/editor-surface/perf-probe.ts +0 -179
  322. package/src/ui-tailwind/editor-surface/pm-collab-plugins.ts +0 -40
  323. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +0 -178
  324. package/src/ui-tailwind/editor-surface/pm-contextual-ui.ts +0 -31
  325. package/src/ui-tailwind/editor-surface/pm-decorations.ts +0 -427
  326. package/src/ui-tailwind/editor-surface/pm-position-map.ts +0 -123
  327. package/src/ui-tailwind/editor-surface/pm-schema.ts +0 -876
  328. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +0 -504
  329. package/src/ui-tailwind/editor-surface/search-plugin.ts +0 -168
  330. package/src/ui-tailwind/editor-surface/surface-build-keys.ts +0 -61
  331. package/src/ui-tailwind/editor-surface/tw-caret.tsx +0 -12
  332. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +0 -150
  333. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +0 -129
  334. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +0 -58
  335. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +0 -151
  336. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +0 -973
  337. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +0 -111
  338. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +0 -436
  339. package/src/ui-tailwind/index.ts +0 -62
  340. package/src/ui-tailwind/page-chrome-model.ts +0 -27
  341. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +0 -406
  342. package/src/ui-tailwind/review/tw-health-panel.tsx +0 -149
  343. package/src/ui-tailwind/review/tw-review-rail.tsx +0 -120
  344. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +0 -164
  345. package/src/ui-tailwind/status/tw-status-bar.tsx +0 -61
  346. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +0 -52
  347. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +0 -1064
  348. package/src/ui-tailwind/tw-review-workspace.tsx +0 -1417
  349. package/src/validation/README.md +0 -3
  350. package/src/validation/compatibility-engine.ts +0 -634
  351. package/src/validation/compatibility-report.ts +0 -161
  352. package/src/validation/diagnostics.ts +0 -204
  353. package/src/validation/docx-comment-proof.ts +0 -707
  354. package/src/validation/import-diagnostics.ts +0 -128
  355. package/src/validation/low-priority-word-surfaces.ts +0 -373
  356. /package/{src → dist}/ui-tailwind/theme/editor-theme.css +0 -0
@@ -1,270 +1,130 @@
1
- /**
2
- * Section layout authoring commands.
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: SectionBreakNode = {
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
- export function insertSectionBreakAfterSectionIndex(
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: SectionBreakNode = {
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
- // ---- Delete section break ----
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
- // ---- Update section layout ----
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
- export function updateSectionLayoutAtSectionIndex(
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
- ...(cloned.subParts ?? {
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
- export function setSectionPageNumberingAtSectionIndex(
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
- ...(target.properties?.pageNumbering ?? {}),
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
- ...(cloned.subParts ?? {
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
- export function setHeaderFooterLinkAtSectionIndex(
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 = [...(currentProperties?.[referencesKey] ?? [])];
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
- ...(currentProperties ?? {}),
375
- [referencesKey]: nextReferences.length > 0 ? nextReferences : undefined,
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
- ...(cloned.subParts ?? {
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
- return currentSection === sectionIndex
523
- ? {
524
- kind: "final",
525
- blockIndex: document.content.children.length - 1,
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 undefined;
327
+ return void 0;
534
328
  }
535
329
  const trimmed = value.trim();
536
- return trimmed.length > 0 ? trimmed : undefined;
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
- function applySectionLayoutPatch(
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
- ...(existing.pageSize ?? { width: 12240, height: 15840 }),
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
- ...(existing.pageMargins ?? {
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
- ...(existing.columns ?? {}),
654
- ...patch.columns,
414
+ ...existing.columns ?? {},
415
+ ...patch.columns
655
416
  };
656
417
  }
657
-
658
418
  if (patch.pageNumbering) {
659
419
  result.pageNumbering = {
660
- ...(existing.pageNumbering ?? {}),
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