@beyondwork/docx-react-component 1.0.29 → 1.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/package.json +65 -96
  2. package/src/README.md +85 -0
  3. package/src/api/README.md +26 -0
  4. package/src/api/public-types.ts +1952 -0
  5. package/src/api/session-state.ts +62 -0
  6. package/src/compare/diff-engine.ts +623 -0
  7. package/src/compare/export-redlines.ts +280 -0
  8. package/src/compare/index.ts +25 -0
  9. package/src/compare/snapshot.ts +97 -0
  10. package/src/component-inventory.md +99 -0
  11. package/src/core/README.md +10 -0
  12. package/src/core/commands/README.md +3 -0
  13. package/{dist/chunk-TJBP2K4T.js → src/core/commands/formatting-commands.ts} +536 -196
  14. package/src/core/commands/image-commands.ts +373 -0
  15. package/src/core/commands/index.ts +1879 -0
  16. package/src/core/commands/list-commands.ts +565 -0
  17. package/src/core/commands/paragraph-layout-commands.ts +339 -0
  18. package/src/core/commands/review-commands.ts +108 -0
  19. package/{dist/core/commands/section-layout-commands.cjs → src/core/commands/section-layout-commands.ts} +340 -137
  20. package/src/core/commands/structural-helpers.ts +309 -0
  21. package/{dist/core/commands/style-commands.cjs → src/core/commands/style-commands.ts} +113 -65
  22. package/src/core/commands/table-structure-commands.ts +854 -0
  23. package/{dist/chunk-UZXBISGO.js → src/core/commands/text-commands.ts} +142 -86
  24. package/src/core/schema/README.md +3 -0
  25. package/src/core/schema/text-schema.ts +516 -0
  26. package/src/core/search/search-text.ts +357 -0
  27. package/src/core/selection/README.md +3 -0
  28. package/src/core/selection/mapping.ts +289 -0
  29. package/src/core/selection/review-anchors.ts +183 -0
  30. package/src/core/state/README.md +3 -0
  31. package/src/core/state/editor-state.ts +892 -0
  32. package/src/core/state/text-transaction.ts +869 -0
  33. package/src/formats/xlsx/io/parse-shared-strings.ts +41 -0
  34. package/src/formats/xlsx/io/parse-sheet.ts +459 -0
  35. package/src/formats/xlsx/io/parse-styles.ts +59 -0
  36. package/src/formats/xlsx/io/parse-workbook.ts +75 -0
  37. package/src/formats/xlsx/io/serialize-shared-strings.ts +72 -0
  38. package/src/formats/xlsx/io/serialize-sheet.ts +333 -0
  39. package/src/formats/xlsx/io/serialize-styles.ts +98 -0
  40. package/src/formats/xlsx/io/serialize-workbook.ts +429 -0
  41. package/src/formats/xlsx/io/xlsx-session.ts +314 -0
  42. package/src/formats/xlsx/model/cell.ts +189 -0
  43. package/src/formats/xlsx/model/sheet.ts +326 -0
  44. package/src/formats/xlsx/model/styles.ts +118 -0
  45. package/src/formats/xlsx/model/workbook.ts +453 -0
  46. package/src/formats/xlsx/runtime/cell-commands.ts +567 -0
  47. package/src/formats/xlsx/runtime/sheet-commands.ts +206 -0
  48. package/src/formats/xlsx/runtime/workbook-runtime.ts +177 -0
  49. package/src/formats/xlsx/runtime/workbook-transaction.ts +822 -0
  50. package/src/index.ts +142 -0
  51. package/src/io/README.md +10 -0
  52. package/src/io/docx-session.ts +3175 -0
  53. package/src/io/export/README.md +3 -0
  54. package/src/io/export/export-session.ts +220 -0
  55. package/src/io/export/minimal-docx.ts +115 -0
  56. package/src/io/export/reattach-preserved-parts.ts +54 -0
  57. package/src/io/export/serialize-comments.ts +947 -0
  58. package/src/io/export/serialize-footnotes.ts +394 -0
  59. package/src/io/export/serialize-headers-footers.ts +368 -0
  60. package/src/io/export/serialize-main-document.ts +1342 -0
  61. package/src/io/export/serialize-numbering.ts +218 -0
  62. package/src/io/export/serialize-revisions.ts +389 -0
  63. package/src/io/export/serialize-runtime-revisions.ts +463 -0
  64. package/src/io/export/serialize-tables.ts +174 -0
  65. package/src/io/export/split-review-boundaries.ts +356 -0
  66. package/src/io/export/split-story-blocks-for-runtime-revisions.ts +252 -0
  67. package/src/io/export/table-properties-xml.ts +318 -0
  68. package/src/io/normalize/README.md +3 -0
  69. package/src/io/normalize/normalize-text.ts +670 -0
  70. package/src/io/ooxml/README.md +3 -0
  71. package/src/io/ooxml/highlight-colors.ts +39 -0
  72. package/src/io/ooxml/numbering-sentinels.ts +44 -0
  73. package/src/io/ooxml/parse-comments.ts +852 -0
  74. package/src/io/ooxml/parse-complex-content.ts +287 -0
  75. package/src/io/ooxml/parse-fields.ts +834 -0
  76. package/src/io/ooxml/parse-footnotes.ts +952 -0
  77. package/src/io/ooxml/parse-headers-footers.ts +1212 -0
  78. package/src/io/ooxml/parse-inline-media.ts +461 -0
  79. package/src/io/ooxml/parse-main-document.ts +2947 -0
  80. package/src/io/ooxml/parse-numbering.ts +747 -0
  81. package/src/io/ooxml/parse-revisions.ts +1045 -0
  82. package/src/io/ooxml/parse-settings.ts +184 -0
  83. package/src/io/ooxml/parse-shapes.ts +296 -0
  84. package/src/io/ooxml/parse-styles.ts +639 -0
  85. package/src/io/ooxml/parse-tables.ts +627 -0
  86. package/src/io/ooxml/parse-theme.ts +346 -0
  87. package/src/io/ooxml/part-manifest.ts +136 -0
  88. package/src/io/ooxml/revision-boundaries.ts +475 -0
  89. package/src/io/ooxml/workflow-payload.ts +544 -0
  90. package/src/io/opc/README.md +3 -0
  91. package/src/io/opc/corrupt-package.ts +166 -0
  92. package/src/io/opc/docx-package.ts +74 -0
  93. package/src/io/opc/package-reader.ts +325 -0
  94. package/src/io/opc/package-writer.ts +273 -0
  95. package/src/io/source-package-provenance.ts +241 -0
  96. package/{dist/chunk-RMH72RZI.js → src/legal/bookmarks.ts} +130 -44
  97. package/src/legal/cross-references.ts +414 -0
  98. package/src/legal/defined-terms.ts +203 -0
  99. package/src/legal/index.ts +32 -0
  100. package/src/legal/signature-blocks.ts +259 -0
  101. package/src/model/README.md +3 -0
  102. package/src/model/canonical-document.ts +2722 -0
  103. package/src/model/cds-1.0.0.ts +212 -0
  104. package/src/model/snapshot.ts +760 -0
  105. package/src/preservation/README.md +3 -0
  106. package/src/preservation/markup-compatibility.ts +48 -0
  107. package/src/preservation/opaque-fragment-store.ts +89 -0
  108. package/src/preservation/opaque-region.ts +233 -0
  109. package/src/preservation/package-preservation.ts +113 -0
  110. package/src/preservation/preserved-part-manifest.ts +56 -0
  111. package/src/preservation/relationship-retention.ts +57 -0
  112. package/src/preservation/store.ts +255 -0
  113. package/src/review/README.md +16 -0
  114. package/src/review/store/README.md +3 -0
  115. package/src/review/store/comment-anchors.ts +70 -0
  116. package/src/review/store/comment-remapping.ts +154 -0
  117. package/src/review/store/comment-store.ts +349 -0
  118. package/src/review/store/comment-thread.ts +109 -0
  119. package/src/review/store/revision-actions.ts +423 -0
  120. package/src/review/store/revision-store.ts +323 -0
  121. package/src/review/store/revision-types.ts +182 -0
  122. package/src/review/store/runtime-comment-store.ts +43 -0
  123. package/src/runtime/README.md +3 -0
  124. package/src/runtime/ai-action-policy.ts +764 -0
  125. package/src/runtime/context-analytics.ts +824 -0
  126. package/src/runtime/document-layout.ts +332 -0
  127. package/src/runtime/document-locations.ts +521 -0
  128. package/src/runtime/document-navigation.ts +616 -0
  129. package/src/runtime/document-outline.ts +440 -0
  130. package/src/runtime/document-runtime.ts +4055 -0
  131. package/src/runtime/document-search.ts +145 -0
  132. package/src/runtime/event-refresh-hints.ts +137 -0
  133. package/src/runtime/numbering-prefix.ts +244 -0
  134. package/src/runtime/page-layout-estimation.ts +305 -0
  135. package/src/runtime/read-only-diagnostics-runtime.ts +241 -0
  136. package/src/runtime/resolved-numbering-geometry.ts +293 -0
  137. package/src/runtime/review-runtime.ts +44 -0
  138. package/src/runtime/revision-runtime.ts +107 -0
  139. package/src/runtime/session-capabilities.ts +192 -0
  140. package/src/runtime/story-context.ts +164 -0
  141. package/src/runtime/story-targeting.ts +162 -0
  142. package/src/runtime/suggestions-snapshot.ts +137 -0
  143. package/src/runtime/surface-projection.ts +1553 -0
  144. package/src/runtime/table-commands.ts +173 -0
  145. package/src/runtime/table-schema.ts +309 -0
  146. package/src/runtime/table-style-resolver.ts +409 -0
  147. package/src/runtime/view-state.ts +493 -0
  148. package/src/runtime/virtualized-rendering.ts +258 -0
  149. package/src/runtime/workflow-markup.ts +393 -0
  150. package/src/ui/README.md +30 -0
  151. package/src/ui/WordReviewEditor.tsx +5268 -0
  152. package/src/ui/browser-export.ts +52 -0
  153. package/src/ui/comments/README.md +3 -0
  154. package/src/ui/compatibility/README.md +3 -0
  155. package/src/ui/editor-command-bag.ts +127 -0
  156. package/src/ui/editor-runtime-boundary.ts +1558 -0
  157. package/src/ui/editor-shell-view.tsx +144 -0
  158. package/src/ui/editor-surface/README.md +3 -0
  159. package/src/ui/editor-surface-controller.tsx +66 -0
  160. package/src/ui/headless/comment-decoration-model.ts +124 -0
  161. package/src/ui/headless/preserve-editor-selection.ts +5 -0
  162. package/src/ui/headless/revision-decoration-model.ts +128 -0
  163. package/src/ui/headless/selection-helpers.ts +54 -0
  164. package/src/ui/headless/selection-tool-context.ts +19 -0
  165. package/src/ui/headless/selection-tool-resolver.ts +752 -0
  166. package/src/ui/headless/selection-tool-types.ts +129 -0
  167. package/src/ui/headless/selection-toolbar-model.ts +11 -0
  168. package/src/ui/headless/use-editor-keyboard.ts +103 -0
  169. package/src/ui/review/README.md +3 -0
  170. package/src/ui/runtime-shortcut-dispatch.ts +365 -0
  171. package/src/ui/runtime-snapshot-selectors.ts +197 -0
  172. package/src/ui/shared/revision-filters.ts +31 -0
  173. package/src/ui/status/README.md +3 -0
  174. package/src/ui/theme/README.md +3 -0
  175. package/src/ui/toolbar/README.md +3 -0
  176. package/src/ui/workflow-surface-blocked-rails.ts +94 -0
  177. package/src/ui-tailwind/chrome/chrome-preset-model.ts +107 -0
  178. package/src/ui-tailwind/chrome/chrome-preset-toolbar.tsx +15 -0
  179. package/src/ui-tailwind/chrome/review-queue-bar.tsx +97 -0
  180. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +64 -0
  181. package/src/ui-tailwind/chrome/tw-context-analytics-summary.tsx +122 -0
  182. package/src/ui-tailwind/chrome/tw-image-context-toolbar.tsx +121 -0
  183. package/src/ui-tailwind/chrome/tw-layout-panel.tsx +114 -0
  184. package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +30 -0
  185. package/src/ui-tailwind/chrome/tw-page-ruler.tsx +365 -0
  186. package/src/ui-tailwind/chrome/tw-selection-tool-blocked.tsx +23 -0
  187. package/src/ui-tailwind/chrome/tw-selection-tool-comment.tsx +35 -0
  188. package/src/ui-tailwind/chrome/tw-selection-tool-formatting.tsx +37 -0
  189. package/src/ui-tailwind/chrome/tw-selection-tool-host.tsx +298 -0
  190. package/src/ui-tailwind/chrome/tw-selection-tool-structure.tsx +116 -0
  191. package/src/ui-tailwind/chrome/tw-selection-tool-suggestion.tsx +29 -0
  192. package/src/ui-tailwind/chrome/tw-selection-tool-workflow.tsx +27 -0
  193. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +186 -0
  194. package/src/ui-tailwind/chrome/tw-suggestion-card.tsx +139 -0
  195. package/src/ui-tailwind/chrome/tw-table-context-toolbar.tsx +200 -0
  196. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +58 -0
  197. package/src/ui-tailwind/chrome/use-before-unload.ts +20 -0
  198. package/src/ui-tailwind/editor-surface/perf-probe.ts +179 -0
  199. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +189 -0
  200. package/src/ui-tailwind/editor-surface/pm-contextual-ui.ts +31 -0
  201. package/src/ui-tailwind/editor-surface/pm-decorations.ts +411 -0
  202. package/src/ui-tailwind/editor-surface/pm-position-map.ts +123 -0
  203. package/src/ui-tailwind/editor-surface/pm-schema.ts +927 -0
  204. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +567 -0
  205. package/src/ui-tailwind/editor-surface/search-plugin.ts +168 -0
  206. package/src/ui-tailwind/editor-surface/surface-build-keys.ts +65 -0
  207. package/src/ui-tailwind/editor-surface/tw-caret.tsx +12 -0
  208. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +150 -0
  209. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +129 -0
  210. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +58 -0
  211. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +151 -0
  212. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +1047 -0
  213. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +111 -0
  214. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +503 -0
  215. package/src/ui-tailwind/index.ts +62 -0
  216. package/src/ui-tailwind/page-chrome-model.ts +27 -0
  217. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +406 -0
  218. package/src/ui-tailwind/review/tw-health-panel.tsx +149 -0
  219. package/src/ui-tailwind/review/tw-review-rail.tsx +122 -0
  220. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +164 -0
  221. package/src/ui-tailwind/status/tw-status-bar.tsx +65 -0
  222. package/{dist → src}/ui-tailwind/theme/editor-theme.css +58 -40
  223. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +52 -0
  224. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +1133 -0
  225. package/src/ui-tailwind/tw-review-workspace.tsx +1460 -0
  226. package/src/validation/README.md +3 -0
  227. package/src/validation/compatibility-engine.ts +878 -0
  228. package/src/validation/compatibility-report.ts +161 -0
  229. package/src/validation/diagnostics.ts +204 -0
  230. package/src/validation/docx-comment-proof.ts +720 -0
  231. package/src/validation/import-diagnostics.ts +128 -0
  232. package/src/validation/low-priority-word-surfaces.ts +373 -0
  233. package/dist/canonical-document-BLEbzL2J.d.cts +0 -844
  234. package/dist/canonical-document-BLEbzL2J.d.ts +0 -844
  235. package/dist/chunk-2FJS5GZM.js +0 -763
  236. package/dist/chunk-2FJS5GZM.js.map +0 -1
  237. package/dist/chunk-2OQBZS3F.js +0 -446
  238. package/dist/chunk-2OQBZS3F.js.map +0 -1
  239. package/dist/chunk-2S7W4KFO.js +0 -127
  240. package/dist/chunk-2S7W4KFO.js.map +0 -1
  241. package/dist/chunk-2TG72QSW.js +0 -3874
  242. package/dist/chunk-2TG72QSW.js.map +0 -1
  243. package/dist/chunk-36QNIZBO.js +0 -532
  244. package/dist/chunk-36QNIZBO.js.map +0 -1
  245. package/dist/chunk-4AQOYAW4.js +0 -3069
  246. package/dist/chunk-4AQOYAW4.js.map +0 -1
  247. package/dist/chunk-4D5EWJ3P.js +0 -77
  248. package/dist/chunk-4D5EWJ3P.js.map +0 -1
  249. package/dist/chunk-5FN54NDH.js +0 -2257
  250. package/dist/chunk-5FN54NDH.js.map +0 -1
  251. package/dist/chunk-BOYGQYRQ.js +0 -7306
  252. package/dist/chunk-BOYGQYRQ.js.map +0 -1
  253. package/dist/chunk-CN3XMECL.js +0 -212
  254. package/dist/chunk-CN3XMECL.js.map +0 -1
  255. package/dist/chunk-EBI3BX6U.js +0 -164
  256. package/dist/chunk-EBI3BX6U.js.map +0 -1
  257. package/dist/chunk-EILUG3VB.js +0 -1275
  258. package/dist/chunk-EILUG3VB.js.map +0 -1
  259. package/dist/chunk-FUDY333O.js +0 -70
  260. package/dist/chunk-FUDY333O.js.map +0 -1
  261. package/dist/chunk-GBVOWFIK.js +0 -1237
  262. package/dist/chunk-GBVOWFIK.js.map +0 -1
  263. package/dist/chunk-H4TQ3H3Y.js +0 -262
  264. package/dist/chunk-H4TQ3H3Y.js.map +0 -1
  265. package/dist/chunk-JGB3IXZO.js +0 -189
  266. package/dist/chunk-JGB3IXZO.js.map +0 -1
  267. package/dist/chunk-KD2QRQPY.js +0 -4342
  268. package/dist/chunk-KD2QRQPY.js.map +0 -1
  269. package/dist/chunk-KLMXQVYK.js +0 -369
  270. package/dist/chunk-KLMXQVYK.js.map +0 -1
  271. package/dist/chunk-KZUG5KFQ.js +0 -214
  272. package/dist/chunk-KZUG5KFQ.js.map +0 -1
  273. package/dist/chunk-QDAQ4CJU.js +0 -345
  274. package/dist/chunk-QDAQ4CJU.js.map +0 -1
  275. package/dist/chunk-RMH72RZI.js.map +0 -1
  276. package/dist/chunk-SWKWQZXM.js +0 -117
  277. package/dist/chunk-SWKWQZXM.js.map +0 -1
  278. package/dist/chunk-TJBP2K4T.js.map +0 -1
  279. package/dist/chunk-TLCEAQDQ.js +0 -542
  280. package/dist/chunk-TLCEAQDQ.js.map +0 -1
  281. package/dist/chunk-UZXBISGO.js.map +0 -1
  282. package/dist/chunk-WGBAKP3Q.js +0 -3220
  283. package/dist/chunk-WGBAKP3Q.js.map +0 -1
  284. package/dist/compare/index.cjs +0 -5475
  285. package/dist/compare/index.cjs.map +0 -1
  286. package/dist/compare/index.d.cts +0 -114
  287. package/dist/compare/index.d.ts +0 -114
  288. package/dist/compare/index.js +0 -731
  289. package/dist/compare/index.js.map +0 -1
  290. package/dist/core/commands/formatting-commands.cjs +0 -828
  291. package/dist/core/commands/formatting-commands.cjs.map +0 -1
  292. package/dist/core/commands/formatting-commands.d.cts +0 -63
  293. package/dist/core/commands/formatting-commands.d.ts +0 -63
  294. package/dist/core/commands/formatting-commands.js +0 -37
  295. package/dist/core/commands/formatting-commands.js.map +0 -1
  296. package/dist/core/commands/image-commands.cjs +0 -2023
  297. package/dist/core/commands/image-commands.cjs.map +0 -1
  298. package/dist/core/commands/image-commands.d.cts +0 -58
  299. package/dist/core/commands/image-commands.d.ts +0 -58
  300. package/dist/core/commands/image-commands.js +0 -18
  301. package/dist/core/commands/image-commands.js.map +0 -1
  302. package/dist/core/commands/section-layout-commands.cjs.map +0 -1
  303. package/dist/core/commands/section-layout-commands.d.cts +0 -62
  304. package/dist/core/commands/section-layout-commands.d.ts +0 -62
  305. package/dist/core/commands/section-layout-commands.js +0 -21
  306. package/dist/core/commands/section-layout-commands.js.map +0 -1
  307. package/dist/core/commands/style-commands.cjs.map +0 -1
  308. package/dist/core/commands/style-commands.d.cts +0 -13
  309. package/dist/core/commands/style-commands.d.ts +0 -13
  310. package/dist/core/commands/style-commands.js +0 -9
  311. package/dist/core/commands/style-commands.js.map +0 -1
  312. package/dist/core/commands/table-structure-commands.cjs +0 -1883
  313. package/dist/core/commands/table-structure-commands.cjs.map +0 -1
  314. package/dist/core/commands/table-structure-commands.d.cts +0 -59
  315. package/dist/core/commands/table-structure-commands.d.ts +0 -59
  316. package/dist/core/commands/table-structure-commands.js +0 -12
  317. package/dist/core/commands/table-structure-commands.js.map +0 -1
  318. package/dist/core/commands/text-commands.cjs +0 -2391
  319. package/dist/core/commands/text-commands.cjs.map +0 -1
  320. package/dist/core/commands/text-commands.d.cts +0 -24
  321. package/dist/core/commands/text-commands.d.ts +0 -24
  322. package/dist/core/commands/text-commands.js +0 -28
  323. package/dist/core/commands/text-commands.js.map +0 -1
  324. package/dist/core/selection/mapping.cjs +0 -200
  325. package/dist/core/selection/mapping.cjs.map +0 -1
  326. package/dist/core/selection/mapping.d.cts +0 -2
  327. package/dist/core/selection/mapping.d.ts +0 -2
  328. package/dist/core/selection/mapping.js +0 -31
  329. package/dist/core/selection/mapping.js.map +0 -1
  330. package/dist/core/state/editor-state.cjs +0 -2278
  331. package/dist/core/state/editor-state.cjs.map +0 -1
  332. package/dist/core/state/editor-state.d.cts +0 -2
  333. package/dist/core/state/editor-state.d.ts +0 -2
  334. package/dist/core/state/editor-state.js +0 -26
  335. package/dist/core/state/editor-state.js.map +0 -1
  336. package/dist/index.cjs +0 -38553
  337. package/dist/index.cjs.map +0 -1
  338. package/dist/index.d.cts +0 -15
  339. package/dist/index.d.ts +0 -15
  340. package/dist/index.js +0 -7856
  341. package/dist/index.js.map +0 -1
  342. package/dist/io/docx-session.cjs +0 -16236
  343. package/dist/io/docx-session.cjs.map +0 -1
  344. package/dist/io/docx-session.d.cts +0 -21
  345. package/dist/io/docx-session.d.ts +0 -21
  346. package/dist/io/docx-session.js +0 -18
  347. package/dist/io/docx-session.js.map +0 -1
  348. package/dist/legal/index.cjs +0 -3900
  349. package/dist/legal/index.cjs.map +0 -1
  350. package/dist/legal/index.d.cts +0 -86
  351. package/dist/legal/index.d.ts +0 -86
  352. package/dist/legal/index.js +0 -616
  353. package/dist/legal/index.js.map +0 -1
  354. package/dist/public-types-7ZL_94cz.d.ts +0 -1573
  355. package/dist/public-types-CeMaDueh.d.cts +0 -1573
  356. package/dist/public-types.cjs +0 -19
  357. package/dist/public-types.cjs.map +0 -1
  358. package/dist/public-types.d.cts +0 -2
  359. package/dist/public-types.d.ts +0 -2
  360. package/dist/public-types.js +0 -1
  361. package/dist/public-types.js.map +0 -1
  362. package/dist/runtime/document-runtime.cjs +0 -11140
  363. package/dist/runtime/document-runtime.cjs.map +0 -1
  364. package/dist/runtime/document-runtime.d.cts +0 -231
  365. package/dist/runtime/document-runtime.d.ts +0 -231
  366. package/dist/runtime/document-runtime.js +0 -21
  367. package/dist/runtime/document-runtime.js.map +0 -1
  368. package/dist/structural-helpers-CilgOVhh.d.cts +0 -10
  369. package/dist/structural-helpers-q0Gd-eBN.d.ts +0 -10
  370. package/dist/ui-tailwind/editor-surface/search-plugin.cjs +0 -313
  371. package/dist/ui-tailwind/editor-surface/search-plugin.cjs.map +0 -1
  372. package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +0 -67
  373. package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +0 -67
  374. package/dist/ui-tailwind/editor-surface/search-plugin.js +0 -23
  375. package/dist/ui-tailwind/editor-surface/search-plugin.js.map +0 -1
  376. package/dist/ui-tailwind/index.cjs +0 -4833
  377. package/dist/ui-tailwind/index.cjs.map +0 -1
  378. package/dist/ui-tailwind/index.d.cts +0 -617
  379. package/dist/ui-tailwind/index.d.ts +0 -617
  380. package/dist/ui-tailwind/index.js +0 -575
  381. package/dist/ui-tailwind/index.js.map +0 -1
@@ -1,731 +0,0 @@
1
- import {
2
- DOCX_DOCUMENT_CONTENT_TYPE,
3
- DOCX_MIME_TYPE,
4
- WORD_NUMBERING_CONTENT_TYPE,
5
- createCommentExportIdMap,
6
- createExportSession,
7
- readOpcPackage,
8
- serializeCommentAnchorsIntoDocumentXml,
9
- serializeMainDocument,
10
- serializeMergedCommentsXml,
11
- serializeNumberingXml,
12
- serializeRuntimeRevisionsIntoDocumentXml,
13
- splitDocumentAtReviewBoundaries,
14
- writeDocxPackage
15
- } from "../chunk-WGBAKP3Q.js";
16
- import "../chunk-FUDY333O.js";
17
- import {
18
- createCommentStoreFromRuntimeComments
19
- } from "../chunk-2S7W4KFO.js";
20
- import "../chunk-SWKWQZXM.js";
21
- import {
22
- createCanonicalDocumentSignature,
23
- projectCanonicalDocument
24
- } from "../chunk-5FN54NDH.js";
25
- import "../chunk-EBI3BX6U.js";
26
-
27
- // src/compare/diff-engine.ts
28
- function compareDocumentSnapshots(base, target, options = {}) {
29
- const comparedAt = options.comparedAt ?? target.createdAt;
30
- const authorId = options.authorId ?? "Version Compare";
31
- const baseDocument = base.canonicalDocument;
32
- const targetDocument = target.canonicalDocument;
33
- const baseBlocks = baseDocument.content.children;
34
- const targetBlocks = targetDocument.content.children;
35
- const matches = computeLcs(
36
- baseBlocks.map(getComparableBlockKey),
37
- targetBlocks.map(getComparableBlockKey)
38
- );
39
- const buildEntries = [];
40
- const changes = [];
41
- let nextBaseIndex = 0;
42
- let nextTargetIndex = 0;
43
- let nextChangeNumber = 1;
44
- for (const match of [...matches, { baseIndex: baseBlocks.length, targetIndex: targetBlocks.length }]) {
45
- while (nextBaseIndex < match.baseIndex || nextTargetIndex < match.targetIndex) {
46
- const deleteBlock = nextBaseIndex < match.baseIndex ? baseBlocks[nextBaseIndex] : void 0;
47
- const insertBlock = nextTargetIndex < match.targetIndex ? targetBlocks[nextTargetIndex] : void 0;
48
- if (deleteBlock && insertBlock) {
49
- if (deleteBlock.type === "paragraph" && insertBlock.type === "paragraph") {
50
- const modificationId = `change-${nextChangeNumber}`;
51
- nextChangeNumber += 1;
52
- addParagraphModificationEntry(
53
- buildEntries,
54
- changes,
55
- modificationId,
56
- deleteBlock,
57
- insertBlock,
58
- nextTargetIndex
59
- );
60
- nextBaseIndex += 1;
61
- nextTargetIndex += 1;
62
- continue;
63
- }
64
- const deletionId = `change-${nextChangeNumber}`;
65
- nextChangeNumber += 1;
66
- addTrackedOrStructuralEntry(
67
- buildEntries,
68
- changes,
69
- deletionId,
70
- deleteBlock,
71
- "deletion",
72
- nextTargetIndex
73
- );
74
- const insertionId = `change-${nextChangeNumber}`;
75
- nextChangeNumber += 1;
76
- addTrackedOrStructuralEntry(
77
- buildEntries,
78
- changes,
79
- insertionId,
80
- insertBlock,
81
- "insertion",
82
- nextTargetIndex
83
- );
84
- nextBaseIndex += 1;
85
- nextTargetIndex += 1;
86
- continue;
87
- }
88
- if (deleteBlock) {
89
- const changeId = `change-${nextChangeNumber}`;
90
- nextChangeNumber += 1;
91
- addTrackedOrStructuralEntry(
92
- buildEntries,
93
- changes,
94
- changeId,
95
- deleteBlock,
96
- "deletion",
97
- nextTargetIndex
98
- );
99
- nextBaseIndex += 1;
100
- continue;
101
- }
102
- if (insertBlock) {
103
- const changeId = `change-${nextChangeNumber}`;
104
- nextChangeNumber += 1;
105
- addTrackedOrStructuralEntry(
106
- buildEntries,
107
- changes,
108
- changeId,
109
- insertBlock,
110
- "insertion",
111
- nextTargetIndex
112
- );
113
- nextTargetIndex += 1;
114
- }
115
- }
116
- if (match.baseIndex < baseBlocks.length && match.targetIndex < targetBlocks.length) {
117
- const baseText = getBlockDisplayText(baseBlocks[match.baseIndex]);
118
- const targetText = getBlockDisplayText(targetBlocks[match.targetIndex]);
119
- const isModified = baseBlocks[match.baseIndex].type === "paragraph" && targetBlocks[match.targetIndex].type === "paragraph" && baseText !== targetText;
120
- if (isModified) {
121
- const modChangeId = `change-${nextChangeNumber}`;
122
- nextChangeNumber += 1;
123
- addParagraphModificationEntry(
124
- buildEntries,
125
- changes,
126
- modChangeId,
127
- baseBlocks[match.baseIndex],
128
- targetBlocks[match.targetIndex],
129
- match.targetIndex
130
- );
131
- } else {
132
- buildEntries.push({
133
- block: cloneBlock(targetBlocks[match.targetIndex]),
134
- tracked: false,
135
- blockType: targetBlocks[match.targetIndex].type,
136
- beforeText: baseText,
137
- afterText: targetText
138
- });
139
- }
140
- nextBaseIndex = match.baseIndex + 1;
141
- nextTargetIndex = match.targetIndex + 1;
142
- }
143
- }
144
- const built = buildComparedDocument(baseDocument, targetDocument, buildEntries, comparedAt, authorId);
145
- return {
146
- compareVersion: "version-compare-result/1",
147
- comparedAt,
148
- base: {
149
- versionId: base.versionId,
150
- name: base.name,
151
- signature: base.documentSignature
152
- },
153
- target: {
154
- versionId: target.versionId,
155
- name: target.name,
156
- signature: target.documentSignature
157
- },
158
- changes,
159
- comparedDocument: built
160
- };
161
- }
162
- function addTrackedOrStructuralEntry(buildEntries, changes, changeId, block, direction, targetIndex) {
163
- const tracked = block.type === "paragraph";
164
- const cloned = cloneBlock(block);
165
- const text = getBlockDisplayText(block);
166
- buildEntries.push({
167
- ...tracked ? { changeId } : {},
168
- block: cloned,
169
- ...tracked ? { trackChange: direction } : {},
170
- tracked,
171
- blockType: cloned.type,
172
- ...direction === "deletion" ? { beforeText: text } : { afterText: text }
173
- });
174
- changes.push({
175
- changeId,
176
- kind: block.type === "paragraph" ? direction === "insertion" ? "paragraph-insertion" : "paragraph-deletion" : direction === "insertion" ? "structural-insertion" : "structural-deletion",
177
- tracked,
178
- blockType: cloned.type,
179
- ...direction === "deletion" ? { beforeText: text } : { afterText: text },
180
- targetIndex
181
- });
182
- }
183
- function addParagraphModificationEntry(buildEntries, changes, changeId, baseParagraph, targetParagraph, targetIndex) {
184
- const beforeText = getBlockDisplayText(baseParagraph);
185
- const afterText = getBlockDisplayText(targetParagraph);
186
- buildEntries.push({
187
- changeId: `${changeId}-before`,
188
- block: cloneBlock(baseParagraph),
189
- trackChange: "deletion",
190
- tracked: true,
191
- blockType: "paragraph",
192
- beforeText
193
- });
194
- buildEntries.push({
195
- changeId: `${changeId}-after`,
196
- block: cloneBlock(targetParagraph),
197
- trackChange: "insertion",
198
- tracked: true,
199
- blockType: "paragraph",
200
- afterText
201
- });
202
- changes.push({
203
- changeId,
204
- kind: "paragraph-modification",
205
- tracked: true,
206
- blockType: "paragraph",
207
- beforeText,
208
- afterText,
209
- targetIndex
210
- });
211
- }
212
- function buildComparedDocument(base, target, entries, comparedAt, authorId) {
213
- const contentChildren = [];
214
- const pendingRevisions = [];
215
- const diagnosticsWarnings = [...target.diagnostics.warnings];
216
- let paragraphIndex = 0;
217
- let warningNumber = 1;
218
- for (let index = 0; index < entries.length; index += 1) {
219
- const entry = entries[index];
220
- if (!entry) {
221
- continue;
222
- }
223
- contentChildren.push(entry.block);
224
- if (entry.block.type === "paragraph") {
225
- if (entry.trackChange) {
226
- pendingRevisions.push({
227
- changeId: entry.changeId ?? `change-${pendingRevisions.length + 1}`,
228
- kind: entry.trackChange,
229
- paragraphIndex
230
- });
231
- }
232
- paragraphIndex += 1;
233
- continue;
234
- }
235
- if (!entry.tracked) {
236
- diagnosticsWarnings.push({
237
- diagnosticId: `diagnostic:compare-structural-${warningNumber}`,
238
- warningId: `warning:compare-structural-${warningNumber}`,
239
- source: "review",
240
- message: `Version compare preserved a ${entry.blockType} ${entry.beforeText ? "deletion" : "insertion"} without a Word revision wrapper.`
241
- });
242
- warningNumber += 1;
243
- }
244
- }
245
- const revisions = createParagraphRevisionRecords(
246
- contentChildren,
247
- pendingRevisions,
248
- comparedAt,
249
- authorId
250
- );
251
- return {
252
- ...projectCanonicalDocument(target),
253
- updatedAt: comparedAt,
254
- styles: mergeStyleCatalogs(base.styles, target.styles),
255
- numbering: mergeRecordCatalog(base.numbering, target.numbering),
256
- media: mergeRecordCatalog(base.media, target.media),
257
- content: {
258
- type: "doc",
259
- children: contentChildren
260
- },
261
- review: {
262
- comments: projectValue(target.review.comments),
263
- revisions
264
- },
265
- preservation: mergePreservationStores(base.preservation, target.preservation),
266
- diagnostics: {
267
- warnings: diagnosticsWarnings,
268
- errors: [...target.diagnostics.errors]
269
- },
270
- ...target.subParts ?? base.subParts ? { subParts: projectValue(target.subParts ?? base.subParts) } : {}
271
- };
272
- }
273
- function createParagraphRevisionRecords(children, pendingRevisions, createdAt, authorId) {
274
- const positionByParagraphIndex = /* @__PURE__ */ new Map();
275
- let cursor = 0;
276
- let paragraphIndex = 0;
277
- let previousWasParagraph = false;
278
- for (const block of children) {
279
- if (block.type === "paragraph") {
280
- if (previousWasParagraph) {
281
- cursor += 1;
282
- }
283
- cursor += getParagraphLength(block);
284
- positionByParagraphIndex.set(paragraphIndex, cursor);
285
- paragraphIndex += 1;
286
- previousWasParagraph = true;
287
- continue;
288
- }
289
- cursor += 1;
290
- previousWasParagraph = false;
291
- }
292
- const entries = [];
293
- pendingRevisions.forEach((revision) => {
294
- const position = positionByParagraphIndex.get(revision.paragraphIndex);
295
- if (position === void 0) {
296
- return;
297
- }
298
- const record = {
299
- changeId: revision.changeId,
300
- kind: revision.kind,
301
- anchor: {
302
- kind: "range",
303
- range: { from: position, to: position },
304
- assoc: { start: -1, end: 1 }
305
- },
306
- authorId,
307
- createdAt,
308
- status: "open",
309
- warningIds: [],
310
- metadata: {
311
- source: "runtime",
312
- importedRevisionForm: revision.kind === "insertion" ? "paragraph-insertion" : "paragraph-deletion"
313
- }
314
- };
315
- entries.push([revision.changeId, record]);
316
- });
317
- return Object.fromEntries(entries);
318
- }
319
- function getComparableBlockKey(block) {
320
- if (block.type === "paragraph") {
321
- return `paragraph:${createCanonicalDocumentSignature({
322
- ...block,
323
- children: normalizeInlineChildren(block.children)
324
- })}`;
325
- }
326
- return `${block.type}:${createCanonicalDocumentSignature(block)}`;
327
- }
328
- function normalizeInlineChildren(children) {
329
- return children.map((child) => {
330
- if (child.type === "hyperlink") {
331
- return {
332
- ...child,
333
- children: normalizeInlineChildren(child.children)
334
- };
335
- }
336
- if (child.type === "field") {
337
- return {
338
- ...child,
339
- children: normalizeInlineChildren(child.children)
340
- };
341
- }
342
- return projectValue(child);
343
- });
344
- }
345
- function computeLcs(baseKeys, targetKeys) {
346
- const widths = targetKeys.length + 1;
347
- const matrix = Array.from(
348
- { length: baseKeys.length + 1 },
349
- () => Array.from({ length: widths }, () => 0)
350
- );
351
- for (let baseIndex2 = baseKeys.length - 1; baseIndex2 >= 0; baseIndex2 -= 1) {
352
- for (let targetIndex2 = targetKeys.length - 1; targetIndex2 >= 0; targetIndex2 -= 1) {
353
- matrix[baseIndex2][targetIndex2] = baseKeys[baseIndex2] === targetKeys[targetIndex2] ? matrix[baseIndex2 + 1][targetIndex2 + 1] + 1 : Math.max(matrix[baseIndex2 + 1][targetIndex2], matrix[baseIndex2][targetIndex2 + 1]);
354
- }
355
- }
356
- const matches = [];
357
- let baseIndex = 0;
358
- let targetIndex = 0;
359
- while (baseIndex < baseKeys.length && targetIndex < targetKeys.length) {
360
- if (baseKeys[baseIndex] === targetKeys[targetIndex]) {
361
- matches.push({ baseIndex, targetIndex });
362
- baseIndex += 1;
363
- targetIndex += 1;
364
- continue;
365
- }
366
- if (matrix[baseIndex + 1][targetIndex] >= matrix[baseIndex][targetIndex + 1]) {
367
- baseIndex += 1;
368
- } else {
369
- targetIndex += 1;
370
- }
371
- }
372
- return matches;
373
- }
374
- function getParagraphLength(paragraph) {
375
- return paragraph.children.reduce((length, child) => length + getInlineLength(child), 0);
376
- }
377
- function getInlineLength(node) {
378
- switch (node.type) {
379
- case "text":
380
- return Array.from(node.text).length;
381
- case "hyperlink":
382
- return node.children.reduce((length, child) => length + getInlineLength(child), 0);
383
- case "field":
384
- return node.children.reduce((length, child) => length + getInlineLength(child), 0);
385
- case "tab":
386
- case "hard_break":
387
- case "column_break":
388
- case "symbol":
389
- case "image":
390
- case "opaque_inline":
391
- case "footnote_ref":
392
- case "bookmark_start":
393
- case "bookmark_end":
394
- case "chart_preview":
395
- case "smartart_preview":
396
- case "shape":
397
- case "wordart":
398
- case "vml_shape":
399
- return 1;
400
- }
401
- }
402
- function getBlockDisplayText(block) {
403
- switch (block.type) {
404
- case "paragraph":
405
- return block.children.map(getInlineDisplayText).join("");
406
- case "table":
407
- return "[Table]";
408
- case "sdt":
409
- return "[Structured content]";
410
- case "custom_xml":
411
- return "[Custom XML block]";
412
- case "alt_chunk":
413
- return "[Alt chunk]";
414
- case "section_break":
415
- return "[Section break]";
416
- case "opaque_block":
417
- return "[Preserved block]";
418
- }
419
- }
420
- function getInlineDisplayText(node) {
421
- switch (node.type) {
422
- case "text":
423
- return node.text;
424
- case "tab":
425
- return " ";
426
- case "hard_break":
427
- case "column_break":
428
- return "\n";
429
- case "symbol":
430
- return node.char;
431
- case "hyperlink":
432
- return node.children.map(getInlineDisplayText).join("");
433
- case "field":
434
- return node.children.map(getInlineDisplayText).join("");
435
- case "image":
436
- return node.altText ?? "[Image]";
437
- case "opaque_inline":
438
- return "[Preserved]";
439
- case "footnote_ref":
440
- return "[Footnote]";
441
- case "bookmark_start":
442
- case "bookmark_end":
443
- return "";
444
- case "chart_preview":
445
- return "[Chart]";
446
- case "smartart_preview":
447
- return "[SmartArt]";
448
- case "shape":
449
- return node.text ?? "[Shape]";
450
- case "wordart":
451
- return node.text;
452
- case "vml_shape":
453
- return node.text ?? "[VML Shape]";
454
- }
455
- }
456
- function mergeStyleCatalogs(base, target) {
457
- return {
458
- paragraphs: { ...base.paragraphs, ...target.paragraphs },
459
- characters: { ...base.characters, ...target.characters },
460
- tables: { ...base.tables, ...target.tables },
461
- ...base.latentStyles || target.latentStyles ? { latentStyles: { ...base.latentStyles ?? {}, ...target.latentStyles ?? {} } } : {}
462
- };
463
- }
464
- function mergePreservationStores(base, target) {
465
- return {
466
- opaqueFragments: {
467
- ...base.opaqueFragments,
468
- ...target.opaqueFragments
469
- },
470
- packageParts: {
471
- ...base.packageParts,
472
- ...target.packageParts
473
- }
474
- };
475
- }
476
- function mergeRecordCatalog(base, target) {
477
- return projectValue({ ...base, ...target });
478
- }
479
- function cloneBlock(block) {
480
- return projectValue(block);
481
- }
482
- function projectValue(value) {
483
- return structuredClone(value);
484
- }
485
-
486
- // src/compare/export-redlines.ts
487
- var MAIN_DOCUMENT_PATH = "/word/document.xml";
488
- var NUMBERING_PART_PATH = "/word/numbering.xml";
489
- var COMMENTS_PART_PATH = "/word/comments.xml";
490
- var COMMENTS_EXTENDED_PART_PATH = "/word/commentsExtended.xml";
491
- var COMMENTS_IDS_PART_PATH = "/word/commentsIds.xml";
492
- var PEOPLE_PART_PATH = "/word/people.xml";
493
- var NUMBERING_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering";
494
- var COMMENTS_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments";
495
- var COMMENTS_EXTENDED_RELATIONSHIP_TYPE = "http://schemas.microsoft.com/office/2011/relationships/commentsExtended";
496
- var COMMENTS_IDS_RELATIONSHIP_TYPE = "http://schemas.microsoft.com/office/2016/09/relationships/commentsIds";
497
- var PEOPLE_RELATIONSHIP_TYPE = "http://schemas.microsoft.com/office/2011/relationships/people";
498
- var COMMENTS_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml";
499
- var COMMENTS_EXTENDED_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml";
500
- var COMMENTS_IDS_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml";
501
- var PEOPLE_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.people+xml";
502
- function exportComparedDocumentRedlines(result, options = {}) {
503
- const sourcePackage = options.sourcePackage ?? readOpcPackage(
504
- writeDocxPackage({
505
- documentXml: `<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body><w:p/><w:sectPr/></w:body></w:document>`
506
- })
507
- );
508
- const existingRelationships = sourcePackage.parts.get(MAIN_DOCUMENT_PATH)?.relationships ?? [];
509
- const commentThreads = Object.values(
510
- createCommentStoreFromRuntimeComments(result.comparedDocument.review.comments).threads
511
- );
512
- const actionableRevisions = toReviewRevisionRecords(result.comparedDocument.review.revisions);
513
- const serialized = serializeMainDocument(
514
- splitDocumentAtReviewBoundaries(
515
- result.comparedDocument.content,
516
- commentThreads,
517
- actionableRevisions
518
- ),
519
- result.comparedDocument.preservation,
520
- existingRelationships,
521
- {
522
- media: result.comparedDocument.media
523
- }
524
- );
525
- const revisionDocument = serializeRuntimeRevisionsIntoDocumentXml(
526
- serialized.documentXml,
527
- actionableRevisions,
528
- serialized.paragraphBoundaries
529
- );
530
- if (revisionDocument.skippedRevisionIds.length > 0) {
531
- throw new Error(
532
- `Compare export skipped ${revisionDocument.skippedRevisionIds.length} revision markers.`
533
- );
534
- }
535
- const exportCommentIds = createCommentExportIdMap(commentThreads);
536
- const serializedComments = serializeMergedCommentsXml(commentThreads, {
537
- exportCommentIds
538
- });
539
- const annotatedDocument = serializeCommentAnchorsIntoDocumentXml(
540
- revisionDocument.documentXml,
541
- commentThreads,
542
- void 0,
543
- {
544
- exportCommentIds
545
- }
546
- );
547
- if (annotatedDocument.skippedCommentIds.length > 0) {
548
- throw new Error(
549
- `Compare export skipped ${annotatedDocument.skippedCommentIds.length} comment anchors.`
550
- );
551
- }
552
- const numberingXml = hasNumberingEntries(result.comparedDocument.numbering) ? serializeNumberingXml(result.comparedDocument.numbering) : void 0;
553
- const relationships = withOptionalRelatedPart(
554
- withOptionalRelatedPart(
555
- withOptionalRelatedPart(
556
- withOptionalRelatedPart(
557
- withOptionalRelatedPart(
558
- serialized.relationships,
559
- existingRelationships,
560
- NUMBERING_RELATIONSHIP_TYPE,
561
- "numbering.xml",
562
- Boolean(numberingXml)
563
- ),
564
- existingRelationships,
565
- COMMENTS_RELATIONSHIP_TYPE,
566
- "comments.xml",
567
- serializedComments.serializedCommentIds.length > 0
568
- ),
569
- existingRelationships,
570
- COMMENTS_EXTENDED_RELATIONSHIP_TYPE,
571
- "commentsExtended.xml",
572
- Boolean(serializedComments.commentsExtendedXml)
573
- ),
574
- existingRelationships,
575
- COMMENTS_IDS_RELATIONSHIP_TYPE,
576
- "commentsIds.xml",
577
- Boolean(serializedComments.commentsIdsXml)
578
- ),
579
- existingRelationships,
580
- PEOPLE_RELATIONSHIP_TYPE,
581
- "people.xml",
582
- Boolean(serializedComments.peopleXml)
583
- );
584
- const exportSession = createExportSession(sourcePackage, [
585
- MAIN_DOCUMENT_PATH,
586
- ...numberingXml ? [NUMBERING_PART_PATH] : [],
587
- ...serializedComments.serializedCommentIds.length > 0 ? [COMMENTS_PART_PATH] : [],
588
- ...serializedComments.commentsExtendedXml ? [COMMENTS_EXTENDED_PART_PATH] : [],
589
- ...serializedComments.commentsIdsXml ? [COMMENTS_IDS_PART_PATH] : [],
590
- ...serializedComments.peopleXml ? [PEOPLE_PART_PATH] : []
591
- ]);
592
- exportSession.replaceOwnedPart({
593
- path: MAIN_DOCUMENT_PATH,
594
- bytes: new TextEncoder().encode(annotatedDocument.documentXml),
595
- contentType: DOCX_DOCUMENT_CONTENT_TYPE,
596
- relationships
597
- });
598
- if (numberingXml) {
599
- exportSession.replaceOwnedPart({
600
- path: NUMBERING_PART_PATH,
601
- bytes: new TextEncoder().encode(numberingXml),
602
- contentType: sourcePackage.parts.get(NUMBERING_PART_PATH)?.contentType ?? WORD_NUMBERING_CONTENT_TYPE
603
- });
604
- }
605
- if (serializedComments.serializedCommentIds.length > 0) {
606
- exportSession.replaceOwnedPart({
607
- path: COMMENTS_PART_PATH,
608
- bytes: new TextEncoder().encode(serializedComments.commentsXml),
609
- contentType: sourcePackage.parts.get(COMMENTS_PART_PATH)?.contentType ?? COMMENTS_CONTENT_TYPE
610
- });
611
- }
612
- if (serializedComments.commentsExtendedXml) {
613
- exportSession.replaceOwnedPart({
614
- path: COMMENTS_EXTENDED_PART_PATH,
615
- bytes: new TextEncoder().encode(serializedComments.commentsExtendedXml),
616
- contentType: sourcePackage.parts.get(COMMENTS_EXTENDED_PART_PATH)?.contentType ?? COMMENTS_EXTENDED_CONTENT_TYPE
617
- });
618
- }
619
- if (serializedComments.commentsIdsXml) {
620
- exportSession.replaceOwnedPart({
621
- path: COMMENTS_IDS_PART_PATH,
622
- bytes: new TextEncoder().encode(serializedComments.commentsIdsXml),
623
- contentType: sourcePackage.parts.get(COMMENTS_IDS_PART_PATH)?.contentType ?? COMMENTS_IDS_CONTENT_TYPE
624
- });
625
- }
626
- if (serializedComments.peopleXml) {
627
- exportSession.replaceOwnedPart({
628
- path: PEOPLE_PART_PATH,
629
- bytes: new TextEncoder().encode(serializedComments.peopleXml),
630
- contentType: sourcePackage.parts.get(PEOPLE_PART_PATH)?.contentType ?? PEOPLE_CONTENT_TYPE
631
- });
632
- }
633
- return {
634
- bytes: exportSession.serialize(),
635
- mimeType: DOCX_MIME_TYPE,
636
- fileName: options.fileName ?? `${result.target.name}-compared.docx`
637
- };
638
- }
639
- function toReviewRevisionRecords(revisions) {
640
- return Object.values(revisions).map((revision) => ({
641
- revisionId: revision.changeId,
642
- kind: revision.kind,
643
- anchor: revision.anchor,
644
- authorId: revision.authorId ?? "Version Compare",
645
- createdAt: revision.createdAt,
646
- warningIds: [...revision.warningIds ?? []],
647
- metadata: {
648
- source: revision.metadata?.source ?? "runtime",
649
- preserveOnlyReason: revision.metadata?.preserveOnlyReason,
650
- importedRevisionForm: revision.metadata?.importedRevisionForm,
651
- originalRevisionType: revision.metadata?.originalRevisionType,
652
- ooxmlRevisionId: revision.metadata?.ooxmlRevisionId
653
- },
654
- status: revision.status === "open" ? "active" : revision.status
655
- }));
656
- }
657
- function hasNumberingEntries(numbering) {
658
- return Object.keys(numbering.abstractDefinitions).length > 0 || Object.keys(numbering.instances).length > 0;
659
- }
660
- function withOptionalRelatedPart(relationships, existingRelationships, relationshipType, target, includePart) {
661
- const next = relationships.map((relationship) => ({ ...relationship }));
662
- if (!includePart) {
663
- return next;
664
- }
665
- const existing = next.find((relationship) => relationship.type === relationshipType);
666
- if (existing) {
667
- return next;
668
- }
669
- const fallbackId = existingRelationships.find((relationship) => relationship.type === relationshipType)?.id ?? `rId${next.length + 1}`;
670
- next.push({
671
- id: fallbackId,
672
- type: relationshipType,
673
- target,
674
- targetMode: "internal"
675
- });
676
- return next;
677
- }
678
-
679
- // src/compare/snapshot.ts
680
- function createDocumentVersionSnapshotId(document, name) {
681
- return `${document.docId}:${name}`;
682
- }
683
- function createDocumentVersionSnapshot(document, options) {
684
- const canonicalDocument = projectCanonicalDocument(document);
685
- return {
686
- snapshotVersion: "document-version-snapshot/1",
687
- versionId: options.versionId ?? createDocumentVersionSnapshotId(canonicalDocument, options.name),
688
- name: options.name,
689
- createdAt: options.createdAt ?? canonicalDocument.updatedAt,
690
- documentId: canonicalDocument.docId,
691
- documentSignature: createCanonicalDocumentSignature(canonicalDocument),
692
- canonicalDocument
693
- };
694
- }
695
- function saveDocumentVersionSnapshot(snapshots, snapshot) {
696
- const next = snapshots.filter((entry) => entry.versionId !== snapshot.versionId);
697
- next.push(snapshot);
698
- return next.sort(compareDocumentVersionSnapshots);
699
- }
700
- function buildVersionAuditTrail(snapshots) {
701
- return snapshots.map((snapshot) => ({
702
- versionId: snapshot.versionId,
703
- name: snapshot.name,
704
- createdAt: snapshot.createdAt,
705
- documentSignature: snapshot.documentSignature,
706
- action: "created"
707
- }));
708
- }
709
- function lockDocumentVersionSnapshot(snapshot) {
710
- return {
711
- ...snapshot,
712
- name: snapshot.name.startsWith("[locked] ") ? snapshot.name : `[locked] ${snapshot.name}`
713
- };
714
- }
715
- function compareDocumentVersionSnapshots(left, right) {
716
- const createdAtComparison = right.createdAt.localeCompare(left.createdAt);
717
- if (createdAtComparison !== 0) {
718
- return createdAtComparison;
719
- }
720
- return left.versionId.localeCompare(right.versionId);
721
- }
722
- export {
723
- buildVersionAuditTrail,
724
- compareDocumentSnapshots,
725
- createDocumentVersionSnapshot,
726
- createDocumentVersionSnapshotId,
727
- exportComparedDocumentRedlines,
728
- lockDocumentVersionSnapshot,
729
- saveDocumentVersionSnapshot
730
- };
731
- //# sourceMappingURL=index.js.map