@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,356 +0,0 @@
1
- import type {
2
- DocumentRootNode,
3
- HyperlinkNode,
4
- InlineNode,
5
- ParagraphNode,
6
- TextNode,
7
- } from "../../model/canonical-document.ts";
8
- import type { CommentThread } from "../../review/store/comment-store.ts";
9
- import type { RevisionRecord } from "../../review/store/revision-types.ts";
10
-
11
- export function splitDocumentAtReviewBoundaries(
12
- content: DocumentRootNode,
13
- comments: readonly CommentThread[],
14
- revisions: readonly RevisionRecord[],
15
- ): DocumentRootNode {
16
- const splitPositions = collectSplitPositions(comments, revisions);
17
- if (splitPositions.size === 0) {
18
- return content;
19
- }
20
-
21
- return {
22
- type: "doc",
23
- children: splitBlockNodes(content.children, splitPositions, 0, true).children,
24
- };
25
- }
26
-
27
- function collectSplitPositions(
28
- comments: readonly CommentThread[],
29
- revisions: readonly RevisionRecord[],
30
- ): Set<number> {
31
- const positions = new Set<number>();
32
-
33
- for (const thread of comments) {
34
- if (thread.anchor.kind !== "range") {
35
- continue;
36
- }
37
-
38
- positions.add(thread.anchor.range.from);
39
- positions.add(thread.anchor.range.to);
40
- }
41
-
42
- for (const revision of revisions) {
43
- if (revision.status !== "active" || revision.anchor.kind !== "range") {
44
- continue;
45
- }
46
-
47
- if (
48
- revision.metadata.importedRevisionForm === "paragraph-insertion" ||
49
- revision.metadata.importedRevisionForm === "paragraph-deletion"
50
- ) {
51
- continue;
52
- }
53
-
54
- positions.add(revision.anchor.range.from);
55
- positions.add(revision.anchor.range.to);
56
- }
57
-
58
- return positions;
59
- }
60
-
61
- function splitParagraph(
62
- paragraph: ParagraphNode,
63
- splitPositions: ReadonlySet<number>,
64
- cursor: number,
65
- ): { paragraph: ParagraphNode; cursor: number } {
66
- const children: InlineNode[] = [];
67
- let nextCursor = cursor;
68
-
69
- for (const child of paragraph.children) {
70
- if (child.type === "text") {
71
- const split = splitTextNode(child, splitPositions, nextCursor);
72
- children.push(...split.children);
73
- nextCursor = split.cursor;
74
- continue;
75
- }
76
-
77
- if (child.type === "hyperlink") {
78
- const split = splitHyperlinkNode(child, splitPositions, nextCursor);
79
- children.push(...split.children);
80
- nextCursor = split.cursor;
81
- continue;
82
- }
83
-
84
- children.push(child);
85
- nextCursor += measureInlineNodeForReviewBoundaries(child);
86
- }
87
-
88
- return {
89
- paragraph: {
90
- ...paragraph,
91
- children,
92
- },
93
- cursor: nextCursor,
94
- };
95
- }
96
-
97
- function splitBlockNodes(
98
- blocks: readonly DocumentRootNode["children"][number][],
99
- splitPositions: ReadonlySet<number>,
100
- cursor: number,
101
- useSurfaceParagraphSeparators: boolean,
102
- ): {
103
- children: DocumentRootNode["children"];
104
- cursor: number;
105
- } {
106
- const children: DocumentRootNode["children"] = [];
107
- let nextCursor = cursor;
108
- for (const [index, block] of blocks.entries()) {
109
- if (block.type === "paragraph") {
110
- if (useSurfaceParagraphSeparators && index > 0) {
111
- nextCursor += 1;
112
- }
113
- const next = splitParagraph(block, splitPositions, nextCursor);
114
- children.push(next.paragraph);
115
- nextCursor = next.cursor;
116
- continue;
117
- }
118
-
119
- if (block.type === "table") {
120
- const next = splitTableAtReviewBoundaries(block, splitPositions, nextCursor);
121
- children.push(next.table);
122
- nextCursor = next.cursor;
123
- continue;
124
- }
125
-
126
- if (block.type === "sdt") {
127
- const next = splitBlockNodes(block.children, splitPositions, nextCursor, false);
128
- children.push({
129
- ...block,
130
- children: next.children,
131
- });
132
- nextCursor = next.cursor;
133
- continue;
134
- }
135
-
136
- if (block.type === "custom_xml") {
137
- children.push(block);
138
- nextCursor += 1;
139
- continue;
140
- }
141
-
142
- children.push(block);
143
- nextCursor += 1;
144
- }
145
-
146
- return {
147
- children,
148
- cursor: nextCursor,
149
- };
150
- }
151
-
152
- function splitTableAtReviewBoundaries(
153
- table: Extract<DocumentRootNode["children"][number], { type: "table" }>,
154
- splitPositions: ReadonlySet<number>,
155
- cursor: number,
156
- ): {
157
- table: Extract<DocumentRootNode["children"][number], { type: "table" }>;
158
- cursor: number;
159
- } {
160
- let nextCursor = cursor;
161
- const rows = table.rows.map((row) => ({
162
- ...row,
163
- cells: row.cells.map((cell) => {
164
- const next = splitBlockNodes(cell.children, splitPositions, nextCursor, false);
165
- nextCursor = next.cursor;
166
- return {
167
- ...cell,
168
- children: next.children,
169
- };
170
- }),
171
- }));
172
-
173
- return {
174
- table: {
175
- ...table,
176
- rows,
177
- },
178
- cursor: nextCursor,
179
- };
180
- }
181
-
182
- function advanceCursorThroughTable(
183
- table: Extract<DocumentRootNode["children"][number], { type: "table" }>,
184
- cursor: number,
185
- ): number {
186
- let nextCursor = cursor;
187
- for (const row of table.rows) {
188
- for (const cell of row.cells) {
189
- nextCursor = measureBlockNodesForReviewBoundaries(cell.children, nextCursor, false);
190
- }
191
- }
192
- return nextCursor;
193
- }
194
-
195
- function measureBlockNodesForReviewBoundaries(
196
- blocks: readonly DocumentRootNode["children"][number][],
197
- cursor: number,
198
- useSurfaceParagraphSeparators: boolean,
199
- ): number {
200
- let nextCursor = cursor;
201
- for (const [index, block] of blocks.entries()) {
202
- if (block.type === "paragraph") {
203
- if (useSurfaceParagraphSeparators && index > 0) {
204
- nextCursor += 1;
205
- }
206
- nextCursor += block.children.reduce(
207
- (size, child) => size + measureInlineNodeForReviewBoundaries(child),
208
- 0,
209
- );
210
- continue;
211
- }
212
-
213
- if (block.type === "table") {
214
- nextCursor = advanceCursorThroughTable(block, nextCursor);
215
- continue;
216
- }
217
-
218
- if (block.type === "sdt") {
219
- nextCursor = measureBlockNodesForReviewBoundaries(
220
- block.children,
221
- nextCursor,
222
- false,
223
- );
224
- continue;
225
- }
226
-
227
- if (block.type === "custom_xml") {
228
- nextCursor += 1;
229
- continue;
230
- }
231
-
232
- nextCursor += 1;
233
- }
234
-
235
- return nextCursor;
236
- }
237
-
238
- function splitHyperlinkNode(
239
- node: HyperlinkNode,
240
- splitPositions: ReadonlySet<number>,
241
- cursor: number,
242
- ): { children: HyperlinkNode[]; cursor: number } {
243
- let nextCursor = cursor;
244
- const groups: Array<HyperlinkNode["children"]> = [[]];
245
-
246
- for (const child of node.children) {
247
- if (child.type === "text") {
248
- const split = splitTextNode(child, splitPositions, nextCursor);
249
- for (const piece of split.children) {
250
- groups[groups.length - 1]?.push(piece);
251
- nextCursor += Array.from(piece.text).length;
252
- if (splitPositions.has(nextCursor)) {
253
- groups.push([]);
254
- }
255
- }
256
- continue;
257
- }
258
-
259
- groups[groups.length - 1]?.push(child);
260
- nextCursor += measureInlineNodeForReviewBoundaries(child);
261
- if (splitPositions.has(nextCursor)) {
262
- groups.push([]);
263
- }
264
- }
265
-
266
- const hyperlinks = groups
267
- .filter((children) => children.length > 0)
268
- .map((children) => ({
269
- type: "hyperlink" as const,
270
- href: node.href,
271
- children,
272
- }));
273
-
274
- return {
275
- children: hyperlinks.length > 0 ? hyperlinks : [node],
276
- cursor: nextCursor,
277
- };
278
- }
279
-
280
- function splitTextNode(
281
- node: TextNode,
282
- splitPositions: ReadonlySet<number>,
283
- cursor: number,
284
- ): { children: TextNode[]; cursor: number } {
285
- const codepoints = Array.from(node.text);
286
- if (codepoints.length === 0) {
287
- return { children: [], cursor };
288
- }
289
-
290
- const boundaries = new Set<number>([0, codepoints.length]);
291
- for (let index = 1; index < codepoints.length; index += 1) {
292
- if (splitPositions.has(cursor + index)) {
293
- boundaries.add(index);
294
- }
295
- }
296
-
297
- const ordered = [...boundaries].sort((left, right) => left - right);
298
- const children: TextNode[] = [];
299
-
300
- for (let index = 0; index < ordered.length - 1; index += 1) {
301
- const start = ordered[index] ?? 0;
302
- const end = ordered[index + 1] ?? codepoints.length;
303
- const text = codepoints.slice(start, end).join("");
304
- if (text.length === 0) {
305
- continue;
306
- }
307
-
308
- children.push({
309
- type: "text",
310
- text,
311
- ...(node.marks && node.marks.length > 0 ? { marks: node.marks } : {}),
312
- });
313
- }
314
-
315
- return {
316
- children: children.length > 0 ? children : [node],
317
- cursor: cursor + codepoints.length,
318
- };
319
- }
320
-
321
- function measureInlineNodeForReviewBoundaries(node: InlineNode): number {
322
- switch (node.type) {
323
- case "text":
324
- return Array.from(node.text).length;
325
- case "bookmark_start":
326
- case "bookmark_end":
327
- return 0;
328
- case "hyperlink":
329
- return node.children.reduce(
330
- (size, child) => size + measureInlineNodeForReviewBoundaries(child),
331
- 0,
332
- );
333
- case "field": {
334
- const childWidth = node.children.reduce(
335
- (size, child) => size + measureInlineNodeForReviewBoundaries(child),
336
- 0,
337
- );
338
- return childWidth > 0 ? childWidth : 1;
339
- }
340
- case "tab":
341
- case "hard_break":
342
- case "column_break":
343
- case "footnote_ref":
344
- case "image":
345
- case "opaque_inline":
346
- case "chart_preview":
347
- case "smartart_preview":
348
- case "shape":
349
- case "wordart":
350
- case "vml_shape":
351
- case "symbol":
352
- return 1;
353
- default:
354
- return 1;
355
- }
356
- }
@@ -1,3 +0,0 @@
1
- # IO Normalize
2
-
3
- Normalization from OOXML structures into canonical state belongs here.