@beyondwork/docx-react-component 1.0.29 → 1.0.31

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 (383) 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/responsive-chrome.ts +46 -0
  180. package/src/ui-tailwind/chrome/review-queue-bar.tsx +97 -0
  181. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +64 -0
  182. package/src/ui-tailwind/chrome/tw-context-analytics-summary.tsx +122 -0
  183. package/src/ui-tailwind/chrome/tw-image-context-toolbar.tsx +121 -0
  184. package/src/ui-tailwind/chrome/tw-layout-panel.tsx +114 -0
  185. package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +30 -0
  186. package/src/ui-tailwind/chrome/tw-page-ruler.tsx +365 -0
  187. package/src/ui-tailwind/chrome/tw-selection-tool-blocked.tsx +23 -0
  188. package/src/ui-tailwind/chrome/tw-selection-tool-comment.tsx +35 -0
  189. package/src/ui-tailwind/chrome/tw-selection-tool-formatting.tsx +37 -0
  190. package/src/ui-tailwind/chrome/tw-selection-tool-host.tsx +303 -0
  191. package/src/ui-tailwind/chrome/tw-selection-tool-structure.tsx +116 -0
  192. package/src/ui-tailwind/chrome/tw-selection-tool-suggestion.tsx +29 -0
  193. package/src/ui-tailwind/chrome/tw-selection-tool-workflow.tsx +27 -0
  194. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +186 -0
  195. package/src/ui-tailwind/chrome/tw-suggestion-card.tsx +139 -0
  196. package/src/ui-tailwind/chrome/tw-table-context-toolbar.tsx +250 -0
  197. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +58 -0
  198. package/src/ui-tailwind/chrome/use-before-unload.ts +20 -0
  199. package/src/ui-tailwind/editor-surface/perf-probe.ts +179 -0
  200. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +189 -0
  201. package/src/ui-tailwind/editor-surface/pm-contextual-ui.ts +31 -0
  202. package/src/ui-tailwind/editor-surface/pm-decorations.ts +411 -0
  203. package/src/ui-tailwind/editor-surface/pm-position-map.ts +123 -0
  204. package/src/ui-tailwind/editor-surface/pm-schema.ts +927 -0
  205. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +567 -0
  206. package/src/ui-tailwind/editor-surface/search-plugin.ts +168 -0
  207. package/src/ui-tailwind/editor-surface/surface-build-keys.ts +63 -0
  208. package/src/ui-tailwind/editor-surface/tw-caret.tsx +12 -0
  209. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +150 -0
  210. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +129 -0
  211. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +58 -0
  212. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +151 -0
  213. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +1047 -0
  214. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +111 -0
  215. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +503 -0
  216. package/src/ui-tailwind/index.ts +62 -0
  217. package/src/ui-tailwind/page-chrome-model.ts +27 -0
  218. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +406 -0
  219. package/src/ui-tailwind/review/tw-health-panel.tsx +149 -0
  220. package/src/ui-tailwind/review/tw-review-rail.tsx +130 -0
  221. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +164 -0
  222. package/src/ui-tailwind/status/tw-status-bar.tsx +65 -0
  223. package/{dist → src}/ui-tailwind/theme/editor-theme.css +58 -40
  224. package/src/ui-tailwind/toolbar/toolbar-layout.ts +47 -0
  225. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +52 -0
  226. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +1478 -0
  227. package/src/ui-tailwind/tw-review-workspace.tsx +1587 -0
  228. package/src/validation/README.md +3 -0
  229. package/src/validation/compatibility-engine.ts +878 -0
  230. package/src/validation/compatibility-report.ts +161 -0
  231. package/src/validation/diagnostics.ts +204 -0
  232. package/src/validation/docx-comment-proof.ts +720 -0
  233. package/src/validation/import-diagnostics.ts +128 -0
  234. package/src/validation/low-priority-word-surfaces.ts +373 -0
  235. package/dist/canonical-document-BLEbzL2J.d.cts +0 -844
  236. package/dist/canonical-document-BLEbzL2J.d.ts +0 -844
  237. package/dist/chunk-2FJS5GZM.js +0 -763
  238. package/dist/chunk-2FJS5GZM.js.map +0 -1
  239. package/dist/chunk-2OQBZS3F.js +0 -446
  240. package/dist/chunk-2OQBZS3F.js.map +0 -1
  241. package/dist/chunk-2S7W4KFO.js +0 -127
  242. package/dist/chunk-2S7W4KFO.js.map +0 -1
  243. package/dist/chunk-2TG72QSW.js +0 -3874
  244. package/dist/chunk-2TG72QSW.js.map +0 -1
  245. package/dist/chunk-36QNIZBO.js +0 -532
  246. package/dist/chunk-36QNIZBO.js.map +0 -1
  247. package/dist/chunk-4AQOYAW4.js +0 -3069
  248. package/dist/chunk-4AQOYAW4.js.map +0 -1
  249. package/dist/chunk-4D5EWJ3P.js +0 -77
  250. package/dist/chunk-4D5EWJ3P.js.map +0 -1
  251. package/dist/chunk-5FN54NDH.js +0 -2257
  252. package/dist/chunk-5FN54NDH.js.map +0 -1
  253. package/dist/chunk-BOYGQYRQ.js +0 -7306
  254. package/dist/chunk-BOYGQYRQ.js.map +0 -1
  255. package/dist/chunk-CN3XMECL.js +0 -212
  256. package/dist/chunk-CN3XMECL.js.map +0 -1
  257. package/dist/chunk-EBI3BX6U.js +0 -164
  258. package/dist/chunk-EBI3BX6U.js.map +0 -1
  259. package/dist/chunk-EILUG3VB.js +0 -1275
  260. package/dist/chunk-EILUG3VB.js.map +0 -1
  261. package/dist/chunk-FUDY333O.js +0 -70
  262. package/dist/chunk-FUDY333O.js.map +0 -1
  263. package/dist/chunk-GBVOWFIK.js +0 -1237
  264. package/dist/chunk-GBVOWFIK.js.map +0 -1
  265. package/dist/chunk-H4TQ3H3Y.js +0 -262
  266. package/dist/chunk-H4TQ3H3Y.js.map +0 -1
  267. package/dist/chunk-JGB3IXZO.js +0 -189
  268. package/dist/chunk-JGB3IXZO.js.map +0 -1
  269. package/dist/chunk-KD2QRQPY.js +0 -4342
  270. package/dist/chunk-KD2QRQPY.js.map +0 -1
  271. package/dist/chunk-KLMXQVYK.js +0 -369
  272. package/dist/chunk-KLMXQVYK.js.map +0 -1
  273. package/dist/chunk-KZUG5KFQ.js +0 -214
  274. package/dist/chunk-KZUG5KFQ.js.map +0 -1
  275. package/dist/chunk-QDAQ4CJU.js +0 -345
  276. package/dist/chunk-QDAQ4CJU.js.map +0 -1
  277. package/dist/chunk-RMH72RZI.js.map +0 -1
  278. package/dist/chunk-SWKWQZXM.js +0 -117
  279. package/dist/chunk-SWKWQZXM.js.map +0 -1
  280. package/dist/chunk-TJBP2K4T.js.map +0 -1
  281. package/dist/chunk-TLCEAQDQ.js +0 -542
  282. package/dist/chunk-TLCEAQDQ.js.map +0 -1
  283. package/dist/chunk-UZXBISGO.js.map +0 -1
  284. package/dist/chunk-WGBAKP3Q.js +0 -3220
  285. package/dist/chunk-WGBAKP3Q.js.map +0 -1
  286. package/dist/compare/index.cjs +0 -5475
  287. package/dist/compare/index.cjs.map +0 -1
  288. package/dist/compare/index.d.cts +0 -114
  289. package/dist/compare/index.d.ts +0 -114
  290. package/dist/compare/index.js +0 -731
  291. package/dist/compare/index.js.map +0 -1
  292. package/dist/core/commands/formatting-commands.cjs +0 -828
  293. package/dist/core/commands/formatting-commands.cjs.map +0 -1
  294. package/dist/core/commands/formatting-commands.d.cts +0 -63
  295. package/dist/core/commands/formatting-commands.d.ts +0 -63
  296. package/dist/core/commands/formatting-commands.js +0 -37
  297. package/dist/core/commands/formatting-commands.js.map +0 -1
  298. package/dist/core/commands/image-commands.cjs +0 -2023
  299. package/dist/core/commands/image-commands.cjs.map +0 -1
  300. package/dist/core/commands/image-commands.d.cts +0 -58
  301. package/dist/core/commands/image-commands.d.ts +0 -58
  302. package/dist/core/commands/image-commands.js +0 -18
  303. package/dist/core/commands/image-commands.js.map +0 -1
  304. package/dist/core/commands/section-layout-commands.cjs.map +0 -1
  305. package/dist/core/commands/section-layout-commands.d.cts +0 -62
  306. package/dist/core/commands/section-layout-commands.d.ts +0 -62
  307. package/dist/core/commands/section-layout-commands.js +0 -21
  308. package/dist/core/commands/section-layout-commands.js.map +0 -1
  309. package/dist/core/commands/style-commands.cjs.map +0 -1
  310. package/dist/core/commands/style-commands.d.cts +0 -13
  311. package/dist/core/commands/style-commands.d.ts +0 -13
  312. package/dist/core/commands/style-commands.js +0 -9
  313. package/dist/core/commands/style-commands.js.map +0 -1
  314. package/dist/core/commands/table-structure-commands.cjs +0 -1883
  315. package/dist/core/commands/table-structure-commands.cjs.map +0 -1
  316. package/dist/core/commands/table-structure-commands.d.cts +0 -59
  317. package/dist/core/commands/table-structure-commands.d.ts +0 -59
  318. package/dist/core/commands/table-structure-commands.js +0 -12
  319. package/dist/core/commands/table-structure-commands.js.map +0 -1
  320. package/dist/core/commands/text-commands.cjs +0 -2391
  321. package/dist/core/commands/text-commands.cjs.map +0 -1
  322. package/dist/core/commands/text-commands.d.cts +0 -24
  323. package/dist/core/commands/text-commands.d.ts +0 -24
  324. package/dist/core/commands/text-commands.js +0 -28
  325. package/dist/core/commands/text-commands.js.map +0 -1
  326. package/dist/core/selection/mapping.cjs +0 -200
  327. package/dist/core/selection/mapping.cjs.map +0 -1
  328. package/dist/core/selection/mapping.d.cts +0 -2
  329. package/dist/core/selection/mapping.d.ts +0 -2
  330. package/dist/core/selection/mapping.js +0 -31
  331. package/dist/core/selection/mapping.js.map +0 -1
  332. package/dist/core/state/editor-state.cjs +0 -2278
  333. package/dist/core/state/editor-state.cjs.map +0 -1
  334. package/dist/core/state/editor-state.d.cts +0 -2
  335. package/dist/core/state/editor-state.d.ts +0 -2
  336. package/dist/core/state/editor-state.js +0 -26
  337. package/dist/core/state/editor-state.js.map +0 -1
  338. package/dist/index.cjs +0 -38553
  339. package/dist/index.cjs.map +0 -1
  340. package/dist/index.d.cts +0 -15
  341. package/dist/index.d.ts +0 -15
  342. package/dist/index.js +0 -7856
  343. package/dist/index.js.map +0 -1
  344. package/dist/io/docx-session.cjs +0 -16236
  345. package/dist/io/docx-session.cjs.map +0 -1
  346. package/dist/io/docx-session.d.cts +0 -21
  347. package/dist/io/docx-session.d.ts +0 -21
  348. package/dist/io/docx-session.js +0 -18
  349. package/dist/io/docx-session.js.map +0 -1
  350. package/dist/legal/index.cjs +0 -3900
  351. package/dist/legal/index.cjs.map +0 -1
  352. package/dist/legal/index.d.cts +0 -86
  353. package/dist/legal/index.d.ts +0 -86
  354. package/dist/legal/index.js +0 -616
  355. package/dist/legal/index.js.map +0 -1
  356. package/dist/public-types-7ZL_94cz.d.ts +0 -1573
  357. package/dist/public-types-CeMaDueh.d.cts +0 -1573
  358. package/dist/public-types.cjs +0 -19
  359. package/dist/public-types.cjs.map +0 -1
  360. package/dist/public-types.d.cts +0 -2
  361. package/dist/public-types.d.ts +0 -2
  362. package/dist/public-types.js +0 -1
  363. package/dist/public-types.js.map +0 -1
  364. package/dist/runtime/document-runtime.cjs +0 -11140
  365. package/dist/runtime/document-runtime.cjs.map +0 -1
  366. package/dist/runtime/document-runtime.d.cts +0 -231
  367. package/dist/runtime/document-runtime.d.ts +0 -231
  368. package/dist/runtime/document-runtime.js +0 -21
  369. package/dist/runtime/document-runtime.js.map +0 -1
  370. package/dist/structural-helpers-CilgOVhh.d.cts +0 -10
  371. package/dist/structural-helpers-q0Gd-eBN.d.ts +0 -10
  372. package/dist/ui-tailwind/editor-surface/search-plugin.cjs +0 -313
  373. package/dist/ui-tailwind/editor-surface/search-plugin.cjs.map +0 -1
  374. package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +0 -67
  375. package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +0 -67
  376. package/dist/ui-tailwind/editor-surface/search-plugin.js +0 -23
  377. package/dist/ui-tailwind/editor-surface/search-plugin.js.map +0 -1
  378. package/dist/ui-tailwind/index.cjs +0 -4833
  379. package/dist/ui-tailwind/index.cjs.map +0 -1
  380. package/dist/ui-tailwind/index.d.cts +0 -617
  381. package/dist/ui-tailwind/index.d.ts +0 -617
  382. package/dist/ui-tailwind/index.js +0 -575
  383. 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