@beyondwork/docx-react-component 1.0.27 → 1.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/dist/canonical-document-BLEbzL2J.d.cts +844 -0
  2. package/dist/canonical-document-BLEbzL2J.d.ts +844 -0
  3. package/dist/chunk-2FJS5GZM.js +763 -0
  4. package/dist/chunk-2FJS5GZM.js.map +1 -0
  5. package/{src/core/commands/section-layout-commands.ts → dist/chunk-2OQBZS3F.js} +106 -340
  6. package/dist/chunk-2OQBZS3F.js.map +1 -0
  7. package/dist/chunk-2S7W4KFO.js +127 -0
  8. package/dist/chunk-2S7W4KFO.js.map +1 -0
  9. package/dist/chunk-2TG72QSW.js +3874 -0
  10. package/dist/chunk-2TG72QSW.js.map +1 -0
  11. package/{src/core/commands/table-structure-commands.ts → dist/chunk-36QNIZBO.js} +126 -315
  12. package/dist/chunk-36QNIZBO.js.map +1 -0
  13. package/dist/chunk-4AQOYAW4.js +3069 -0
  14. package/dist/chunk-4AQOYAW4.js.map +1 -0
  15. package/dist/chunk-4D5EWJ3P.js +77 -0
  16. package/dist/chunk-4D5EWJ3P.js.map +1 -0
  17. package/dist/chunk-5FN54NDH.js +2257 -0
  18. package/dist/chunk-5FN54NDH.js.map +1 -0
  19. package/dist/chunk-BOYGQYRQ.js +7306 -0
  20. package/dist/chunk-BOYGQYRQ.js.map +1 -0
  21. package/dist/chunk-CN3XMECL.js +212 -0
  22. package/dist/chunk-CN3XMECL.js.map +1 -0
  23. package/dist/chunk-EBI3BX6U.js +164 -0
  24. package/dist/chunk-EBI3BX6U.js.map +1 -0
  25. package/dist/chunk-EILUG3VB.js +1275 -0
  26. package/dist/chunk-EILUG3VB.js.map +1 -0
  27. package/dist/chunk-FUDY333O.js +70 -0
  28. package/dist/chunk-FUDY333O.js.map +1 -0
  29. package/dist/chunk-GBVOWFIK.js +1237 -0
  30. package/dist/chunk-GBVOWFIK.js.map +1 -0
  31. package/dist/chunk-H4TQ3H3Y.js +262 -0
  32. package/dist/chunk-H4TQ3H3Y.js.map +1 -0
  33. package/{src/core/commands/style-commands.ts → dist/chunk-JGB3IXZO.js} +40 -113
  34. package/dist/chunk-JGB3IXZO.js.map +1 -0
  35. package/dist/chunk-KD2QRQPY.js +4342 -0
  36. package/dist/chunk-KD2QRQPY.js.map +1 -0
  37. package/dist/chunk-KLMXQVYK.js +369 -0
  38. package/dist/chunk-KLMXQVYK.js.map +1 -0
  39. package/dist/chunk-KZUG5KFQ.js +214 -0
  40. package/dist/chunk-KZUG5KFQ.js.map +1 -0
  41. package/{src/core/state/text-transaction.ts → dist/chunk-QDAQ4CJU.js} +79 -236
  42. package/dist/chunk-QDAQ4CJU.js.map +1 -0
  43. package/{src/legal/bookmarks.ts → dist/chunk-RMH72RZI.js} +44 -130
  44. package/dist/chunk-RMH72RZI.js.map +1 -0
  45. package/dist/chunk-SWKWQZXM.js +117 -0
  46. package/dist/chunk-SWKWQZXM.js.map +1 -0
  47. package/{src/core/commands/formatting-commands.ts → dist/chunk-TJBP2K4T.js} +196 -536
  48. package/dist/chunk-TJBP2K4T.js.map +1 -0
  49. package/dist/chunk-TLCEAQDQ.js +542 -0
  50. package/dist/chunk-TLCEAQDQ.js.map +1 -0
  51. package/{src/core/commands/text-commands.ts → dist/chunk-UZXBISGO.js} +86 -142
  52. package/dist/chunk-UZXBISGO.js.map +1 -0
  53. package/dist/chunk-WGBAKP3Q.js +3220 -0
  54. package/dist/chunk-WGBAKP3Q.js.map +1 -0
  55. package/dist/compare/index.cjs +5475 -0
  56. package/dist/compare/index.cjs.map +1 -0
  57. package/dist/compare/index.d.cts +114 -0
  58. package/dist/compare/index.d.ts +114 -0
  59. package/dist/compare/index.js +731 -0
  60. package/dist/compare/index.js.map +1 -0
  61. package/dist/core/commands/formatting-commands.cjs +828 -0
  62. package/dist/core/commands/formatting-commands.cjs.map +1 -0
  63. package/dist/core/commands/formatting-commands.d.cts +63 -0
  64. package/dist/core/commands/formatting-commands.d.ts +63 -0
  65. package/dist/core/commands/formatting-commands.js +37 -0
  66. package/dist/core/commands/formatting-commands.js.map +1 -0
  67. package/dist/core/commands/image-commands.cjs +2023 -0
  68. package/dist/core/commands/image-commands.cjs.map +1 -0
  69. package/dist/core/commands/image-commands.d.cts +58 -0
  70. package/dist/core/commands/image-commands.d.ts +58 -0
  71. package/dist/core/commands/image-commands.js +18 -0
  72. package/dist/core/commands/image-commands.js.map +1 -0
  73. package/dist/core/commands/section-layout-commands.cjs +477 -0
  74. package/dist/core/commands/section-layout-commands.cjs.map +1 -0
  75. package/dist/core/commands/section-layout-commands.d.cts +62 -0
  76. package/dist/core/commands/section-layout-commands.d.ts +62 -0
  77. package/dist/core/commands/section-layout-commands.js +21 -0
  78. package/dist/core/commands/section-layout-commands.js.map +1 -0
  79. package/dist/core/commands/style-commands.cjs +214 -0
  80. package/dist/core/commands/style-commands.cjs.map +1 -0
  81. package/dist/core/commands/style-commands.d.cts +13 -0
  82. package/dist/core/commands/style-commands.d.ts +13 -0
  83. package/dist/core/commands/style-commands.js +9 -0
  84. package/dist/core/commands/style-commands.js.map +1 -0
  85. package/dist/core/commands/table-structure-commands.cjs +1883 -0
  86. package/dist/core/commands/table-structure-commands.cjs.map +1 -0
  87. package/dist/core/commands/table-structure-commands.d.cts +59 -0
  88. package/dist/core/commands/table-structure-commands.d.ts +59 -0
  89. package/dist/core/commands/table-structure-commands.js +12 -0
  90. package/dist/core/commands/table-structure-commands.js.map +1 -0
  91. package/dist/core/commands/text-commands.cjs +2391 -0
  92. package/dist/core/commands/text-commands.cjs.map +1 -0
  93. package/dist/core/commands/text-commands.d.cts +24 -0
  94. package/dist/core/commands/text-commands.d.ts +24 -0
  95. package/dist/core/commands/text-commands.js +28 -0
  96. package/dist/core/commands/text-commands.js.map +1 -0
  97. package/dist/core/selection/mapping.cjs +200 -0
  98. package/dist/core/selection/mapping.cjs.map +1 -0
  99. package/dist/core/selection/mapping.d.cts +2 -0
  100. package/dist/core/selection/mapping.d.ts +2 -0
  101. package/dist/core/selection/mapping.js +31 -0
  102. package/dist/core/selection/mapping.js.map +1 -0
  103. package/dist/core/state/editor-state.cjs +2278 -0
  104. package/dist/core/state/editor-state.cjs.map +1 -0
  105. package/dist/core/state/editor-state.d.cts +2 -0
  106. package/dist/core/state/editor-state.d.ts +2 -0
  107. package/dist/core/state/editor-state.js +26 -0
  108. package/dist/core/state/editor-state.js.map +1 -0
  109. package/dist/index.cjs +38553 -0
  110. package/dist/index.cjs.map +1 -0
  111. package/dist/index.d.cts +15 -0
  112. package/dist/index.d.ts +15 -0
  113. package/dist/index.js +7856 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/io/docx-session.cjs +16236 -0
  116. package/dist/io/docx-session.cjs.map +1 -0
  117. package/dist/io/docx-session.d.cts +21 -0
  118. package/dist/io/docx-session.d.ts +21 -0
  119. package/dist/io/docx-session.js +18 -0
  120. package/dist/io/docx-session.js.map +1 -0
  121. package/dist/legal/index.cjs +3900 -0
  122. package/dist/legal/index.cjs.map +1 -0
  123. package/dist/legal/index.d.cts +86 -0
  124. package/dist/legal/index.d.ts +86 -0
  125. package/dist/legal/index.js +616 -0
  126. package/dist/legal/index.js.map +1 -0
  127. package/dist/public-types-7ZL_94cz.d.ts +1573 -0
  128. package/dist/public-types-CeMaDueh.d.cts +1573 -0
  129. package/dist/public-types.cjs +19 -0
  130. package/dist/public-types.cjs.map +1 -0
  131. package/dist/public-types.d.cts +2 -0
  132. package/dist/public-types.d.ts +2 -0
  133. package/dist/public-types.js +1 -0
  134. package/dist/public-types.js.map +1 -0
  135. package/dist/runtime/document-runtime.cjs +11140 -0
  136. package/dist/runtime/document-runtime.cjs.map +1 -0
  137. package/dist/runtime/document-runtime.d.cts +231 -0
  138. package/dist/runtime/document-runtime.d.ts +231 -0
  139. package/dist/runtime/document-runtime.js +21 -0
  140. package/dist/runtime/document-runtime.js.map +1 -0
  141. package/dist/structural-helpers-CilgOVhh.d.cts +10 -0
  142. package/dist/structural-helpers-q0Gd-eBN.d.ts +10 -0
  143. package/dist/ui-tailwind/editor-surface/search-plugin.cjs +313 -0
  144. package/dist/ui-tailwind/editor-surface/search-plugin.cjs.map +1 -0
  145. package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +67 -0
  146. package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +67 -0
  147. package/dist/ui-tailwind/editor-surface/search-plugin.js +23 -0
  148. package/dist/ui-tailwind/editor-surface/search-plugin.js.map +1 -0
  149. package/dist/ui-tailwind/index.cjs +4833 -0
  150. package/dist/ui-tailwind/index.cjs.map +1 -0
  151. package/dist/ui-tailwind/index.d.cts +617 -0
  152. package/dist/ui-tailwind/index.d.ts +617 -0
  153. package/dist/ui-tailwind/index.js +575 -0
  154. package/dist/ui-tailwind/index.js.map +1 -0
  155. package/package.json +64 -54
  156. package/src/README.md +0 -85
  157. package/src/api/README.md +0 -26
  158. package/src/api/public-types.ts +0 -1418
  159. package/src/api/session-state.ts +0 -60
  160. package/src/compare/diff-engine.ts +0 -623
  161. package/src/compare/export-redlines.ts +0 -280
  162. package/src/compare/index.ts +0 -25
  163. package/src/compare/snapshot.ts +0 -97
  164. package/src/component-inventory.md +0 -99
  165. package/src/core/README.md +0 -10
  166. package/src/core/commands/README.md +0 -3
  167. package/src/core/commands/image-commands.ts +0 -373
  168. package/src/core/commands/index.ts +0 -1757
  169. package/src/core/commands/list-commands.ts +0 -565
  170. package/src/core/commands/paragraph-layout-commands.ts +0 -339
  171. package/src/core/commands/review-commands.ts +0 -108
  172. package/src/core/commands/structural-helpers.ts +0 -309
  173. package/src/core/schema/README.md +0 -3
  174. package/src/core/schema/text-schema.ts +0 -516
  175. package/src/core/search/search-text.ts +0 -357
  176. package/src/core/selection/README.md +0 -3
  177. package/src/core/selection/mapping.ts +0 -289
  178. package/src/core/selection/review-anchors.ts +0 -183
  179. package/src/core/state/README.md +0 -3
  180. package/src/core/state/editor-state.ts +0 -892
  181. package/src/formats/xlsx/io/parse-shared-strings.ts +0 -41
  182. package/src/formats/xlsx/io/parse-sheet.ts +0 -459
  183. package/src/formats/xlsx/io/parse-styles.ts +0 -59
  184. package/src/formats/xlsx/io/parse-workbook.ts +0 -75
  185. package/src/formats/xlsx/io/serialize-shared-strings.ts +0 -72
  186. package/src/formats/xlsx/io/serialize-sheet.ts +0 -333
  187. package/src/formats/xlsx/io/serialize-styles.ts +0 -98
  188. package/src/formats/xlsx/io/serialize-workbook.ts +0 -429
  189. package/src/formats/xlsx/io/xlsx-session.ts +0 -314
  190. package/src/formats/xlsx/model/cell.ts +0 -189
  191. package/src/formats/xlsx/model/sheet.ts +0 -326
  192. package/src/formats/xlsx/model/styles.ts +0 -118
  193. package/src/formats/xlsx/model/workbook.ts +0 -453
  194. package/src/formats/xlsx/runtime/cell-commands.ts +0 -567
  195. package/src/formats/xlsx/runtime/sheet-commands.ts +0 -206
  196. package/src/formats/xlsx/runtime/workbook-runtime.ts +0 -177
  197. package/src/formats/xlsx/runtime/workbook-transaction.ts +0 -822
  198. package/src/index.ts +0 -101
  199. package/src/io/README.md +0 -10
  200. package/src/io/docx-session.ts +0 -2882
  201. package/src/io/export/README.md +0 -3
  202. package/src/io/export/export-session.ts +0 -220
  203. package/src/io/export/minimal-docx.ts +0 -115
  204. package/src/io/export/reattach-preserved-parts.ts +0 -54
  205. package/src/io/export/serialize-comments.ts +0 -947
  206. package/src/io/export/serialize-footnotes.ts +0 -399
  207. package/src/io/export/serialize-headers-footers.ts +0 -372
  208. package/src/io/export/serialize-main-document.ts +0 -1376
  209. package/src/io/export/serialize-numbering.ts +0 -118
  210. package/src/io/export/serialize-revisions.ts +0 -389
  211. package/src/io/export/serialize-runtime-revisions.ts +0 -269
  212. package/src/io/export/serialize-tables.ts +0 -174
  213. package/src/io/export/split-review-boundaries.ts +0 -356
  214. package/src/io/normalize/README.md +0 -3
  215. package/src/io/normalize/normalize-text.ts +0 -639
  216. package/src/io/ooxml/README.md +0 -3
  217. package/src/io/ooxml/highlight-colors.ts +0 -39
  218. package/src/io/ooxml/numbering-sentinels.ts +0 -44
  219. package/src/io/ooxml/parse-comments.ts +0 -846
  220. package/src/io/ooxml/parse-complex-content.ts +0 -287
  221. package/src/io/ooxml/parse-fields.ts +0 -834
  222. package/src/io/ooxml/parse-footnotes.ts +0 -896
  223. package/src/io/ooxml/parse-headers-footers.ts +0 -1169
  224. package/src/io/ooxml/parse-inline-media.ts +0 -461
  225. package/src/io/ooxml/parse-main-document.ts +0 -2877
  226. package/src/io/ooxml/parse-numbering.ts +0 -432
  227. package/src/io/ooxml/parse-revisions.ts +0 -931
  228. package/src/io/ooxml/parse-settings.ts +0 -184
  229. package/src/io/ooxml/parse-shapes.ts +0 -296
  230. package/src/io/ooxml/parse-styles.ts +0 -463
  231. package/src/io/ooxml/parse-tables.ts +0 -618
  232. package/src/io/ooxml/parse-theme.ts +0 -346
  233. package/src/io/ooxml/part-manifest.ts +0 -136
  234. package/src/io/ooxml/revision-boundaries.ts +0 -351
  235. package/src/io/opc/README.md +0 -3
  236. package/src/io/opc/corrupt-package.ts +0 -166
  237. package/src/io/opc/docx-package.ts +0 -74
  238. package/src/io/opc/package-reader.ts +0 -325
  239. package/src/io/opc/package-writer.ts +0 -273
  240. package/src/io/source-package-provenance.ts +0 -241
  241. package/src/legal/cross-references.ts +0 -414
  242. package/src/legal/defined-terms.ts +0 -203
  243. package/src/legal/index.ts +0 -32
  244. package/src/legal/signature-blocks.ts +0 -259
  245. package/src/model/README.md +0 -3
  246. package/src/model/canonical-document.ts +0 -2632
  247. package/src/model/cds-1.0.0.ts +0 -212
  248. package/src/model/snapshot.ts +0 -649
  249. package/src/preservation/README.md +0 -3
  250. package/src/preservation/markup-compatibility.ts +0 -48
  251. package/src/preservation/opaque-fragment-store.ts +0 -89
  252. package/src/preservation/opaque-region.ts +0 -233
  253. package/src/preservation/package-preservation.ts +0 -113
  254. package/src/preservation/preserved-part-manifest.ts +0 -56
  255. package/src/preservation/relationship-retention.ts +0 -57
  256. package/src/preservation/store.ts +0 -185
  257. package/src/review/README.md +0 -16
  258. package/src/review/store/README.md +0 -3
  259. package/src/review/store/comment-anchors.ts +0 -70
  260. package/src/review/store/comment-remapping.ts +0 -154
  261. package/src/review/store/comment-store.ts +0 -331
  262. package/src/review/store/comment-thread.ts +0 -109
  263. package/src/review/store/revision-actions.ts +0 -394
  264. package/src/review/store/revision-store.ts +0 -312
  265. package/src/review/store/revision-types.ts +0 -171
  266. package/src/review/store/runtime-comment-store.ts +0 -43
  267. package/src/runtime/README.md +0 -3
  268. package/src/runtime/ai-action-policy.ts +0 -764
  269. package/src/runtime/collab-review-sync.ts +0 -254
  270. package/src/runtime/document-layout.ts +0 -332
  271. package/src/runtime/document-navigation.ts +0 -603
  272. package/src/runtime/document-runtime.ts +0 -3159
  273. package/src/runtime/document-search.ts +0 -145
  274. package/src/runtime/numbering-prefix.ts +0 -216
  275. package/src/runtime/page-layout-estimation.ts +0 -212
  276. package/src/runtime/read-only-diagnostics-runtime.ts +0 -241
  277. package/src/runtime/review-runtime.ts +0 -44
  278. package/src/runtime/revision-runtime.ts +0 -107
  279. package/src/runtime/session-capabilities.ts +0 -192
  280. package/src/runtime/story-context.ts +0 -164
  281. package/src/runtime/story-targeting.ts +0 -162
  282. package/src/runtime/surface-projection.ts +0 -1357
  283. package/src/runtime/table-commands.ts +0 -173
  284. package/src/runtime/table-schema.ts +0 -309
  285. package/src/runtime/view-state.ts +0 -477
  286. package/src/runtime/virtualized-rendering.ts +0 -258
  287. package/src/runtime/workflow-markup.ts +0 -353
  288. package/src/ui/README.md +0 -30
  289. package/src/ui/WordReviewEditor.tsx +0 -4097
  290. package/src/ui/browser-export.ts +0 -52
  291. package/src/ui/comments/README.md +0 -3
  292. package/src/ui/compatibility/README.md +0 -3
  293. package/src/ui/editor-command-bag.ts +0 -120
  294. package/src/ui/editor-runtime-boundary.ts +0 -1457
  295. package/src/ui/editor-shell-view.tsx +0 -142
  296. package/src/ui/editor-surface/README.md +0 -3
  297. package/src/ui/editor-surface-controller.tsx +0 -63
  298. package/src/ui/headless/comment-decoration-model.ts +0 -124
  299. package/src/ui/headless/preserve-editor-selection.ts +0 -5
  300. package/src/ui/headless/revision-decoration-model.ts +0 -128
  301. package/src/ui/headless/selection-helpers.ts +0 -54
  302. package/src/ui/headless/selection-toolbar-model.ts +0 -34
  303. package/src/ui/headless/use-editor-keyboard.ts +0 -103
  304. package/src/ui/review/README.md +0 -3
  305. package/src/ui/runtime-snapshot-selectors.ts +0 -197
  306. package/src/ui/shared/revision-filters.ts +0 -31
  307. package/src/ui/status/README.md +0 -3
  308. package/src/ui/theme/README.md +0 -3
  309. package/src/ui/toolbar/README.md +0 -3
  310. package/src/ui/workflow-surface-blocked-rails.ts +0 -94
  311. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +0 -64
  312. package/src/ui-tailwind/chrome/tw-image-context-toolbar.tsx +0 -129
  313. package/src/ui-tailwind/chrome/tw-layout-panel.tsx +0 -114
  314. package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +0 -34
  315. package/src/ui-tailwind/chrome/tw-page-ruler.tsx +0 -386
  316. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +0 -186
  317. package/src/ui-tailwind/chrome/tw-suggestion-card.tsx +0 -139
  318. package/src/ui-tailwind/chrome/tw-table-context-toolbar.tsx +0 -128
  319. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +0 -58
  320. package/src/ui-tailwind/chrome/use-before-unload.ts +0 -20
  321. package/src/ui-tailwind/editor-surface/perf-probe.ts +0 -179
  322. package/src/ui-tailwind/editor-surface/pm-collab-plugins.ts +0 -40
  323. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +0 -178
  324. package/src/ui-tailwind/editor-surface/pm-contextual-ui.ts +0 -31
  325. package/src/ui-tailwind/editor-surface/pm-decorations.ts +0 -427
  326. package/src/ui-tailwind/editor-surface/pm-position-map.ts +0 -123
  327. package/src/ui-tailwind/editor-surface/pm-schema.ts +0 -876
  328. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +0 -504
  329. package/src/ui-tailwind/editor-surface/search-plugin.ts +0 -168
  330. package/src/ui-tailwind/editor-surface/surface-build-keys.ts +0 -61
  331. package/src/ui-tailwind/editor-surface/tw-caret.tsx +0 -12
  332. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +0 -150
  333. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +0 -129
  334. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +0 -58
  335. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +0 -151
  336. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +0 -973
  337. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +0 -111
  338. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +0 -436
  339. package/src/ui-tailwind/index.ts +0 -62
  340. package/src/ui-tailwind/page-chrome-model.ts +0 -27
  341. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +0 -406
  342. package/src/ui-tailwind/review/tw-health-panel.tsx +0 -149
  343. package/src/ui-tailwind/review/tw-review-rail.tsx +0 -120
  344. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +0 -164
  345. package/src/ui-tailwind/status/tw-status-bar.tsx +0 -61
  346. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +0 -52
  347. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +0 -1064
  348. package/src/ui-tailwind/tw-review-workspace.tsx +0 -1417
  349. package/src/validation/README.md +0 -3
  350. package/src/validation/compatibility-engine.ts +0 -634
  351. package/src/validation/compatibility-report.ts +0 -161
  352. package/src/validation/diagnostics.ts +0 -204
  353. package/src/validation/docx-comment-proof.ts +0 -707
  354. package/src/validation/import-diagnostics.ts +0 -128
  355. package/src/validation/low-priority-word-surfaces.ts +0 -373
  356. /package/{src → dist}/ui-tailwind/theme/editor-theme.css +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/compare/diff-engine.ts","../../src/compare/export-redlines.ts","../../src/compare/snapshot.ts"],"sourcesContent":["import {\n createCanonicalDocumentSignature,\n projectCanonicalDocument,\n type BlockNode,\n type CanonicalDocument,\n type HyperlinkNode,\n type InlineNode,\n type ParagraphNode,\n type RevisionRecord,\n type TextNode,\n} from \"../model/canonical-document.ts\";\nimport type { DocumentVersionSnapshot } from \"./snapshot.ts\";\n\nexport interface CompareVersionRef {\n versionId: string;\n name: string;\n signature: string;\n}\n\nexport type CompareChangeKind =\n | \"paragraph-insertion\"\n | \"paragraph-deletion\"\n | \"paragraph-modification\"\n | \"structural-insertion\"\n | \"structural-deletion\";\n\nexport interface CompareChange {\n changeId: string;\n kind: CompareChangeKind;\n tracked: boolean;\n blockType: BlockNode[\"type\"];\n beforeText?: string;\n afterText?: string;\n targetIndex: number;\n}\n\nexport interface VersionCompareResult {\n compareVersion: \"version-compare-result/1\";\n comparedAt: string;\n base: CompareVersionRef;\n target: CompareVersionRef;\n changes: CompareChange[];\n comparedDocument: CanonicalDocument;\n}\n\nexport interface CompareDocumentVersionsOptions {\n comparedAt?: string;\n authorId?: string;\n}\n\ninterface BuildEntry {\n changeId?: string;\n block: BlockNode;\n trackChange?: \"insertion\" | \"deletion\";\n tracked: boolean;\n blockType: BlockNode[\"type\"];\n beforeText?: string;\n afterText?: string;\n}\n\ninterface PendingRevision {\n changeId: string;\n kind: \"insertion\" | \"deletion\";\n paragraphIndex: number;\n}\n\ninterface LcsMatch {\n baseIndex: number;\n targetIndex: number;\n}\n\nexport function compareDocumentSnapshots(\n base: DocumentVersionSnapshot,\n target: DocumentVersionSnapshot,\n options: CompareDocumentVersionsOptions = {},\n): VersionCompareResult {\n const comparedAt = options.comparedAt ?? target.createdAt;\n const authorId = options.authorId ?? \"Version Compare\";\n const baseDocument = base.canonicalDocument;\n const targetDocument = target.canonicalDocument;\n const baseBlocks = baseDocument.content.children;\n const targetBlocks = targetDocument.content.children;\n const matches = computeLcs(\n baseBlocks.map(getComparableBlockKey),\n targetBlocks.map(getComparableBlockKey),\n );\n\n const buildEntries: BuildEntry[] = [];\n const changes: CompareChange[] = [];\n let nextBaseIndex = 0;\n let nextTargetIndex = 0;\n let nextChangeNumber = 1;\n\n for (const match of [...matches, { baseIndex: baseBlocks.length, targetIndex: targetBlocks.length }]) {\n while (nextBaseIndex < match.baseIndex || nextTargetIndex < match.targetIndex) {\n const deleteBlock = nextBaseIndex < match.baseIndex ? baseBlocks[nextBaseIndex] : undefined;\n const insertBlock = nextTargetIndex < match.targetIndex ? targetBlocks[nextTargetIndex] : undefined;\n\n if (deleteBlock && insertBlock) {\n if (deleteBlock.type === \"paragraph\" && insertBlock.type === \"paragraph\") {\n const modificationId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addParagraphModificationEntry(\n buildEntries,\n changes,\n modificationId,\n deleteBlock,\n insertBlock,\n nextTargetIndex,\n );\n nextBaseIndex += 1;\n nextTargetIndex += 1;\n continue;\n }\n\n const deletionId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addTrackedOrStructuralEntry(\n buildEntries,\n changes,\n deletionId,\n deleteBlock,\n \"deletion\",\n nextTargetIndex,\n );\n\n const insertionId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addTrackedOrStructuralEntry(\n buildEntries,\n changes,\n insertionId,\n insertBlock,\n \"insertion\",\n nextTargetIndex,\n );\n nextBaseIndex += 1;\n nextTargetIndex += 1;\n continue;\n }\n\n if (deleteBlock) {\n const changeId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addTrackedOrStructuralEntry(\n buildEntries,\n changes,\n changeId,\n deleteBlock,\n \"deletion\",\n nextTargetIndex,\n );\n nextBaseIndex += 1;\n continue;\n }\n\n if (insertBlock) {\n const changeId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addTrackedOrStructuralEntry(\n buildEntries,\n changes,\n changeId,\n insertBlock,\n \"insertion\",\n nextTargetIndex,\n );\n nextTargetIndex += 1;\n }\n }\n\n if (match.baseIndex < baseBlocks.length && match.targetIndex < targetBlocks.length) {\n const baseText = getBlockDisplayText(baseBlocks[match.baseIndex]);\n const targetText = getBlockDisplayText(targetBlocks[match.targetIndex]);\n const isModified =\n baseBlocks[match.baseIndex].type === \"paragraph\" &&\n targetBlocks[match.targetIndex].type === \"paragraph\" &&\n baseText !== targetText;\n\n if (isModified) {\n const modChangeId = `change-${nextChangeNumber}`;\n nextChangeNumber += 1;\n addParagraphModificationEntry(\n buildEntries,\n changes,\n modChangeId,\n baseBlocks[match.baseIndex] as ParagraphNode,\n targetBlocks[match.targetIndex] as ParagraphNode,\n match.targetIndex,\n );\n } else {\n buildEntries.push({\n block: cloneBlock(targetBlocks[match.targetIndex]),\n tracked: false,\n blockType: targetBlocks[match.targetIndex].type,\n beforeText: baseText,\n afterText: targetText,\n });\n }\n\n nextBaseIndex = match.baseIndex + 1;\n nextTargetIndex = match.targetIndex + 1;\n }\n }\n\n const built = buildComparedDocument(baseDocument, targetDocument, buildEntries, comparedAt, authorId);\n return {\n compareVersion: \"version-compare-result/1\",\n comparedAt,\n base: {\n versionId: base.versionId,\n name: base.name,\n signature: base.documentSignature,\n },\n target: {\n versionId: target.versionId,\n name: target.name,\n signature: target.documentSignature,\n },\n changes,\n comparedDocument: built,\n };\n}\n\nfunction addTrackedOrStructuralEntry(\n buildEntries: BuildEntry[],\n changes: CompareChange[],\n changeId: string,\n block: BlockNode,\n direction: \"insertion\" | \"deletion\",\n targetIndex: number,\n): void {\n const tracked = block.type === \"paragraph\";\n const cloned = cloneBlock(block);\n const text = getBlockDisplayText(block);\n\n buildEntries.push({\n ...(tracked ? { changeId } : {}),\n block: cloned,\n ...(tracked ? { trackChange: direction } : {}),\n tracked,\n blockType: cloned.type,\n ...(direction === \"deletion\" ? { beforeText: text } : { afterText: text }),\n });\n\n changes.push({\n changeId,\n kind:\n block.type === \"paragraph\"\n ? direction === \"insertion\"\n ? \"paragraph-insertion\"\n : \"paragraph-deletion\"\n : direction === \"insertion\"\n ? \"structural-insertion\"\n : \"structural-deletion\",\n tracked,\n blockType: cloned.type,\n ...(direction === \"deletion\" ? { beforeText: text } : { afterText: text }),\n targetIndex,\n });\n}\n\nfunction addParagraphModificationEntry(\n buildEntries: BuildEntry[],\n changes: CompareChange[],\n changeId: string,\n baseParagraph: ParagraphNode,\n targetParagraph: ParagraphNode,\n targetIndex: number,\n): void {\n const beforeText = getBlockDisplayText(baseParagraph);\n const afterText = getBlockDisplayText(targetParagraph);\n\n buildEntries.push({\n changeId: `${changeId}-before`,\n block: cloneBlock(baseParagraph),\n trackChange: \"deletion\",\n tracked: true,\n blockType: \"paragraph\",\n beforeText,\n });\n buildEntries.push({\n changeId: `${changeId}-after`,\n block: cloneBlock(targetParagraph),\n trackChange: \"insertion\",\n tracked: true,\n blockType: \"paragraph\",\n afterText,\n });\n\n changes.push({\n changeId,\n kind: \"paragraph-modification\",\n tracked: true,\n blockType: \"paragraph\",\n beforeText,\n afterText,\n targetIndex,\n });\n}\n\nfunction buildComparedDocument(\n base: CanonicalDocument,\n target: CanonicalDocument,\n entries: readonly BuildEntry[],\n comparedAt: string,\n authorId: string,\n): CanonicalDocument {\n const contentChildren: BlockNode[] = [];\n const pendingRevisions: PendingRevision[] = [];\n const diagnosticsWarnings = [...target.diagnostics.warnings];\n let paragraphIndex = 0;\n let warningNumber = 1;\n\n for (let index = 0; index < entries.length; index += 1) {\n const entry = entries[index];\n if (!entry) {\n continue;\n }\n\n contentChildren.push(entry.block);\n if (entry.block.type === \"paragraph\") {\n if (entry.trackChange) {\n pendingRevisions.push({\n changeId: entry.changeId ?? `change-${pendingRevisions.length + 1}`,\n kind: entry.trackChange,\n paragraphIndex,\n });\n }\n paragraphIndex += 1;\n continue;\n }\n\n if (!entry.tracked) {\n diagnosticsWarnings.push({\n diagnosticId: `diagnostic:compare-structural-${warningNumber}`,\n warningId: `warning:compare-structural-${warningNumber}`,\n source: \"review\",\n message: `Version compare preserved a ${entry.blockType} ${entry.beforeText ? \"deletion\" : \"insertion\"} without a Word revision wrapper.`,\n });\n warningNumber += 1;\n }\n }\n\n const revisions = createParagraphRevisionRecords(\n contentChildren,\n pendingRevisions,\n comparedAt,\n authorId,\n );\n\n return {\n ...projectCanonicalDocument(target),\n updatedAt: comparedAt,\n styles: mergeStyleCatalogs(base.styles, target.styles),\n numbering: mergeRecordCatalog(base.numbering, target.numbering),\n media: mergeRecordCatalog(base.media, target.media),\n content: {\n type: \"doc\",\n children: contentChildren,\n },\n review: {\n comments: projectValue(target.review.comments),\n revisions,\n },\n preservation: mergePreservationStores(base.preservation, target.preservation),\n diagnostics: {\n warnings: diagnosticsWarnings,\n errors: [...target.diagnostics.errors],\n },\n ...(target.subParts ?? base.subParts ? { subParts: projectValue(target.subParts ?? base.subParts) } : {}),\n };\n}\n\nfunction createParagraphRevisionRecords(\n children: readonly BlockNode[],\n pendingRevisions: readonly PendingRevision[],\n createdAt: string,\n authorId: string,\n): CanonicalDocument[\"review\"][\"revisions\"] {\n const positionByParagraphIndex = new Map<number, number>();\n let cursor = 0;\n let paragraphIndex = 0;\n let previousWasParagraph = false;\n\n for (const block of children) {\n if (block.type === \"paragraph\") {\n if (previousWasParagraph) {\n cursor += 1;\n }\n cursor += getParagraphLength(block);\n positionByParagraphIndex.set(paragraphIndex, cursor);\n paragraphIndex += 1;\n previousWasParagraph = true;\n continue;\n }\n\n cursor += 1;\n previousWasParagraph = false;\n }\n\n const entries: Array<[string, RevisionRecord]> = [];\n pendingRevisions.forEach((revision) => {\n const position = positionByParagraphIndex.get(revision.paragraphIndex);\n if (position === undefined) {\n return;\n }\n\n const record: RevisionRecord = {\n changeId: revision.changeId,\n kind: revision.kind,\n anchor: {\n kind: \"range\",\n range: { from: position, to: position },\n assoc: { start: -1, end: 1 },\n },\n authorId,\n createdAt,\n status: \"open\",\n warningIds: [],\n metadata: {\n source: \"runtime\",\n importedRevisionForm:\n revision.kind === \"insertion\" ? \"paragraph-insertion\" : \"paragraph-deletion\",\n },\n };\n entries.push([revision.changeId, record]);\n });\n return Object.fromEntries(entries);\n}\n\nfunction getComparableBlockKey(block: BlockNode): string {\n if (block.type === \"paragraph\") {\n return `paragraph:${createCanonicalDocumentSignature({\n ...block,\n children: normalizeInlineChildren(block.children),\n })}`;\n }\n\n return `${block.type}:${createCanonicalDocumentSignature(block)}`;\n}\n\nfunction normalizeInlineChildren(children: readonly InlineNode[]): InlineNode[] {\n return children.map((child) => {\n if (child.type === \"hyperlink\") {\n return {\n ...child,\n children: normalizeInlineChildren(child.children) as HyperlinkNode[\"children\"],\n };\n }\n if (child.type === \"field\") {\n return {\n ...child,\n children: normalizeInlineChildren(child.children),\n };\n }\n return projectValue(child);\n });\n}\n\nfunction computeLcs(baseKeys: readonly string[], targetKeys: readonly string[]): LcsMatch[] {\n const widths = targetKeys.length + 1;\n const matrix = Array.from({ length: baseKeys.length + 1 }, () =>\n Array.from({ length: widths }, () => 0),\n );\n\n for (let baseIndex = baseKeys.length - 1; baseIndex >= 0; baseIndex -= 1) {\n for (let targetIndex = targetKeys.length - 1; targetIndex >= 0; targetIndex -= 1) {\n matrix[baseIndex][targetIndex] =\n baseKeys[baseIndex] === targetKeys[targetIndex]\n ? matrix[baseIndex + 1][targetIndex + 1] + 1\n : Math.max(matrix[baseIndex + 1][targetIndex], matrix[baseIndex][targetIndex + 1]);\n }\n }\n\n const matches: LcsMatch[] = [];\n let baseIndex = 0;\n let targetIndex = 0;\n while (baseIndex < baseKeys.length && targetIndex < targetKeys.length) {\n if (baseKeys[baseIndex] === targetKeys[targetIndex]) {\n matches.push({ baseIndex, targetIndex });\n baseIndex += 1;\n targetIndex += 1;\n continue;\n }\n\n if (matrix[baseIndex + 1][targetIndex] >= matrix[baseIndex][targetIndex + 1]) {\n baseIndex += 1;\n } else {\n targetIndex += 1;\n }\n }\n\n return matches;\n}\n\nfunction getParagraphLength(paragraph: ParagraphNode): number {\n return paragraph.children.reduce((length, child) => length + getInlineLength(child), 0);\n}\n\nfunction getInlineLength(node: InlineNode): number {\n switch (node.type) {\n case \"text\":\n return Array.from(node.text).length;\n case \"hyperlink\":\n return node.children.reduce((length, child) => length + getInlineLength(child), 0);\n case \"field\":\n return node.children.reduce((length, child) => length + getInlineLength(child), 0);\n case \"tab\":\n case \"hard_break\":\n case \"column_break\":\n case \"symbol\":\n case \"image\":\n case \"opaque_inline\":\n case \"footnote_ref\":\n case \"bookmark_start\":\n case \"bookmark_end\":\n case \"chart_preview\":\n case \"smartart_preview\":\n case \"shape\":\n case \"wordart\":\n case \"vml_shape\":\n return 1;\n }\n}\n\nfunction getBlockDisplayText(block: BlockNode): string {\n switch (block.type) {\n case \"paragraph\":\n return block.children.map(getInlineDisplayText).join(\"\");\n case \"table\":\n return \"[Table]\";\n case \"sdt\":\n return \"[Structured content]\";\n case \"custom_xml\":\n return \"[Custom XML block]\";\n case \"alt_chunk\":\n return \"[Alt chunk]\";\n case \"section_break\":\n return \"[Section break]\";\n case \"opaque_block\":\n return \"[Preserved block]\";\n }\n}\n\nfunction getInlineDisplayText(node: InlineNode): string {\n switch (node.type) {\n case \"text\":\n return node.text;\n case \"tab\":\n return \"\\t\";\n case \"hard_break\":\n case \"column_break\":\n return \"\\n\";\n case \"symbol\":\n return node.char;\n case \"hyperlink\":\n return node.children.map(getInlineDisplayText).join(\"\");\n case \"field\":\n return node.children.map(getInlineDisplayText).join(\"\");\n case \"image\":\n return node.altText ?? \"[Image]\";\n case \"opaque_inline\":\n return \"[Preserved]\";\n case \"footnote_ref\":\n return \"[Footnote]\";\n case \"bookmark_start\":\n case \"bookmark_end\":\n return \"\";\n case \"chart_preview\":\n return \"[Chart]\";\n case \"smartart_preview\":\n return \"[SmartArt]\";\n case \"shape\":\n return node.text ?? \"[Shape]\";\n case \"wordart\":\n return node.text;\n case \"vml_shape\":\n return node.text ?? \"[VML Shape]\";\n }\n}\n\nfunction mergeStyleCatalogs(\n base: CanonicalDocument[\"styles\"],\n target: CanonicalDocument[\"styles\"],\n): CanonicalDocument[\"styles\"] {\n return {\n paragraphs: { ...base.paragraphs, ...target.paragraphs },\n characters: { ...base.characters, ...target.characters },\n tables: { ...base.tables, ...target.tables },\n ...((base.latentStyles || target.latentStyles)\n ? { latentStyles: { ...(base.latentStyles ?? {}), ...(target.latentStyles ?? {}) } }\n : {}),\n };\n}\n\nfunction mergePreservationStores(\n base: CanonicalDocument[\"preservation\"],\n target: CanonicalDocument[\"preservation\"],\n): CanonicalDocument[\"preservation\"] {\n return {\n opaqueFragments: {\n ...base.opaqueFragments,\n ...target.opaqueFragments,\n },\n packageParts: {\n ...base.packageParts,\n ...target.packageParts,\n },\n };\n}\n\nfunction mergeRecordCatalog<T extends object>(base: T, target: T): T {\n return projectValue({ ...base, ...target });\n}\n\nfunction cloneBlock<T extends BlockNode>(block: T): T {\n return projectValue(block);\n}\n\nfunction projectValue<T>(value: T): T {\n return structuredClone(value);\n}\n","import type { OpcRelationship } from \"../io/ooxml/part-manifest.ts\";\nimport { serializeMainDocument } from \"../io/export/serialize-main-document.ts\";\nimport {\n WORD_NUMBERING_CONTENT_TYPE,\n serializeNumberingXml,\n} from \"../io/export/serialize-numbering.ts\";\nimport { serializeRuntimeRevisionsIntoDocumentXml } from \"../io/export/serialize-runtime-revisions.ts\";\nimport { splitDocumentAtReviewBoundaries } from \"../io/export/split-review-boundaries.ts\";\nimport {\n createCommentExportIdMap,\n serializeCommentAnchorsIntoDocumentXml,\n serializeMergedCommentsXml,\n} from \"../io/export/serialize-comments.ts\";\nimport { createExportSession } from \"../io/export/export-session.ts\";\nimport {\n DOCX_DOCUMENT_CONTENT_TYPE,\n DOCX_MIME_TYPE,\n writeDocxPackage,\n} from \"../io/opc/docx-package.ts\";\nimport type { OpcPackage } from \"../io/opc/package-reader.ts\";\nimport { readOpcPackage } from \"../io/opc/package-reader.ts\";\nimport { createCommentStoreFromRuntimeComments } from \"../review/store/runtime-comment-store.ts\";\nimport type { RevisionRecord as ReviewRevisionRecord } from \"../review/store/revision-types.ts\";\nimport type { VersionCompareResult } from \"./diff-engine.ts\";\n\nconst MAIN_DOCUMENT_PATH = \"/word/document.xml\";\nconst NUMBERING_PART_PATH = \"/word/numbering.xml\";\nconst COMMENTS_PART_PATH = \"/word/comments.xml\";\nconst COMMENTS_EXTENDED_PART_PATH = \"/word/commentsExtended.xml\";\nconst COMMENTS_IDS_PART_PATH = \"/word/commentsIds.xml\";\nconst PEOPLE_PART_PATH = \"/word/people.xml\";\nconst NUMBERING_RELATIONSHIP_TYPE =\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering\";\nconst COMMENTS_RELATIONSHIP_TYPE =\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\";\nconst COMMENTS_EXTENDED_RELATIONSHIP_TYPE =\n \"http://schemas.microsoft.com/office/2011/relationships/commentsExtended\";\nconst COMMENTS_IDS_RELATIONSHIP_TYPE =\n \"http://schemas.microsoft.com/office/2016/09/relationships/commentsIds\";\nconst PEOPLE_RELATIONSHIP_TYPE =\n \"http://schemas.microsoft.com/office/2011/relationships/people\";\nconst COMMENTS_CONTENT_TYPE =\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\";\nconst COMMENTS_EXTENDED_CONTENT_TYPE =\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml\";\nconst COMMENTS_IDS_CONTENT_TYPE =\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml\";\nconst PEOPLE_CONTENT_TYPE =\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.people+xml\";\n\nexport interface ExportComparedDocumentOptions {\n fileName?: string;\n sourcePackage?: OpcPackage;\n}\n\nexport interface ExportComparedDocumentResult {\n bytes: Uint8Array;\n mimeType: string;\n fileName: string;\n}\n\nexport function exportComparedDocumentRedlines(\n result: VersionCompareResult,\n options: ExportComparedDocumentOptions = {},\n): ExportComparedDocumentResult {\n const sourcePackage =\n options.sourcePackage ??\n readOpcPackage(\n writeDocxPackage({\n 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>`,\n }),\n );\n const existingRelationships =\n sourcePackage.parts.get(MAIN_DOCUMENT_PATH)?.relationships ?? [];\n\n const commentThreads = Object.values(\n createCommentStoreFromRuntimeComments(result.comparedDocument.review.comments).threads,\n );\n const actionableRevisions = toReviewRevisionRecords(result.comparedDocument.review.revisions);\n const serialized = serializeMainDocument(\n splitDocumentAtReviewBoundaries(\n result.comparedDocument.content as never,\n commentThreads,\n actionableRevisions,\n ) as never,\n result.comparedDocument.preservation,\n existingRelationships,\n {\n media: result.comparedDocument.media,\n },\n );\n const revisionDocument = serializeRuntimeRevisionsIntoDocumentXml(\n serialized.documentXml,\n actionableRevisions,\n serialized.paragraphBoundaries,\n );\n if (revisionDocument.skippedRevisionIds.length > 0) {\n throw new Error(\n `Compare export skipped ${revisionDocument.skippedRevisionIds.length} revision markers.`,\n );\n }\n const exportCommentIds = createCommentExportIdMap(commentThreads);\n const serializedComments = serializeMergedCommentsXml(commentThreads, {\n exportCommentIds,\n });\n const annotatedDocument = serializeCommentAnchorsIntoDocumentXml(\n revisionDocument.documentXml,\n commentThreads,\n undefined,\n {\n exportCommentIds,\n },\n );\n if (annotatedDocument.skippedCommentIds.length > 0) {\n throw new Error(\n `Compare export skipped ${annotatedDocument.skippedCommentIds.length} comment anchors.`,\n );\n }\n\n const numberingXml = hasNumberingEntries(result.comparedDocument.numbering)\n ? serializeNumberingXml(result.comparedDocument.numbering)\n : undefined;\n const relationships = withOptionalRelatedPart(\n withOptionalRelatedPart(\n withOptionalRelatedPart(\n withOptionalRelatedPart(\n withOptionalRelatedPart(\n serialized.relationships,\n existingRelationships,\n NUMBERING_RELATIONSHIP_TYPE,\n \"numbering.xml\",\n Boolean(numberingXml),\n ),\n existingRelationships,\n COMMENTS_RELATIONSHIP_TYPE,\n \"comments.xml\",\n serializedComments.serializedCommentIds.length > 0,\n ),\n existingRelationships,\n COMMENTS_EXTENDED_RELATIONSHIP_TYPE,\n \"commentsExtended.xml\",\n Boolean(serializedComments.commentsExtendedXml),\n ),\n existingRelationships,\n COMMENTS_IDS_RELATIONSHIP_TYPE,\n \"commentsIds.xml\",\n Boolean(serializedComments.commentsIdsXml),\n ),\n existingRelationships,\n PEOPLE_RELATIONSHIP_TYPE,\n \"people.xml\",\n Boolean(serializedComments.peopleXml),\n );\n const exportSession = createExportSession(sourcePackage, [\n MAIN_DOCUMENT_PATH,\n ...(numberingXml ? [NUMBERING_PART_PATH] : []),\n ...(serializedComments.serializedCommentIds.length > 0 ? [COMMENTS_PART_PATH] : []),\n ...(serializedComments.commentsExtendedXml ? [COMMENTS_EXTENDED_PART_PATH] : []),\n ...(serializedComments.commentsIdsXml ? [COMMENTS_IDS_PART_PATH] : []),\n ...(serializedComments.peopleXml ? [PEOPLE_PART_PATH] : []),\n ]);\n\n exportSession.replaceOwnedPart({\n path: MAIN_DOCUMENT_PATH,\n bytes: new TextEncoder().encode(annotatedDocument.documentXml),\n contentType: DOCX_DOCUMENT_CONTENT_TYPE,\n relationships,\n });\n\n if (numberingXml) {\n exportSession.replaceOwnedPart({\n path: NUMBERING_PART_PATH,\n bytes: new TextEncoder().encode(numberingXml),\n contentType:\n sourcePackage.parts.get(NUMBERING_PART_PATH)?.contentType ?? WORD_NUMBERING_CONTENT_TYPE,\n });\n }\n\n if (serializedComments.serializedCommentIds.length > 0) {\n exportSession.replaceOwnedPart({\n path: COMMENTS_PART_PATH,\n bytes: new TextEncoder().encode(serializedComments.commentsXml),\n contentType:\n sourcePackage.parts.get(COMMENTS_PART_PATH)?.contentType ?? COMMENTS_CONTENT_TYPE,\n });\n }\n\n if (serializedComments.commentsExtendedXml) {\n exportSession.replaceOwnedPart({\n path: COMMENTS_EXTENDED_PART_PATH,\n bytes: new TextEncoder().encode(serializedComments.commentsExtendedXml),\n contentType:\n sourcePackage.parts.get(COMMENTS_EXTENDED_PART_PATH)?.contentType ??\n COMMENTS_EXTENDED_CONTENT_TYPE,\n });\n }\n\n if (serializedComments.commentsIdsXml) {\n exportSession.replaceOwnedPart({\n path: COMMENTS_IDS_PART_PATH,\n bytes: new TextEncoder().encode(serializedComments.commentsIdsXml),\n contentType:\n sourcePackage.parts.get(COMMENTS_IDS_PART_PATH)?.contentType ?? COMMENTS_IDS_CONTENT_TYPE,\n });\n }\n\n if (serializedComments.peopleXml) {\n exportSession.replaceOwnedPart({\n path: PEOPLE_PART_PATH,\n bytes: new TextEncoder().encode(serializedComments.peopleXml),\n contentType:\n sourcePackage.parts.get(PEOPLE_PART_PATH)?.contentType ?? PEOPLE_CONTENT_TYPE,\n });\n }\n\n return {\n bytes: exportSession.serialize(),\n mimeType: DOCX_MIME_TYPE,\n fileName: options.fileName ?? `${result.target.name}-compared.docx`,\n };\n}\n\nfunction toReviewRevisionRecords(\n revisions: VersionCompareResult[\"comparedDocument\"][\"review\"][\"revisions\"],\n): ReviewRevisionRecord[] {\n return Object.values(revisions).map((revision) => ({\n revisionId: revision.changeId,\n kind: revision.kind,\n anchor: revision.anchor,\n authorId: revision.authorId ?? \"Version Compare\",\n createdAt: revision.createdAt,\n warningIds: [...(revision.warningIds ?? [])],\n metadata: {\n source: revision.metadata?.source ?? \"runtime\",\n preserveOnlyReason: revision.metadata?.preserveOnlyReason,\n importedRevisionForm: revision.metadata?.importedRevisionForm,\n originalRevisionType: revision.metadata?.originalRevisionType,\n ooxmlRevisionId: revision.metadata?.ooxmlRevisionId,\n },\n status: revision.status === \"open\" ? \"active\" : revision.status,\n }));\n}\n\nfunction hasNumberingEntries(\n numbering: VersionCompareResult[\"comparedDocument\"][\"numbering\"],\n): boolean {\n return (\n Object.keys(numbering.abstractDefinitions).length > 0 ||\n Object.keys(numbering.instances).length > 0\n );\n}\n\nfunction withOptionalRelatedPart(\n relationships: readonly OpcRelationship[],\n existingRelationships: readonly OpcRelationship[],\n relationshipType: string,\n target: string,\n includePart: boolean,\n): OpcRelationship[] {\n const next = relationships.map((relationship) => ({ ...relationship }));\n if (!includePart) {\n return next;\n }\n\n const existing = next.find((relationship) => relationship.type === relationshipType);\n if (existing) {\n return next;\n }\n\n const fallbackId =\n existingRelationships.find((relationship) => relationship.type === relationshipType)?.id ??\n `rId${next.length + 1}`;\n next.push({\n id: fallbackId,\n type: relationshipType,\n target,\n targetMode: \"internal\",\n });\n return next;\n}\n","import {\n createCanonicalDocumentSignature,\n projectCanonicalDocument,\n type CanonicalDocument,\n} from \"../model/canonical-document.ts\";\n\nexport interface DocumentVersionSnapshot {\n snapshotVersion: \"document-version-snapshot/1\";\n versionId: string;\n name: string;\n createdAt: string;\n documentId: string;\n documentSignature: string;\n canonicalDocument: CanonicalDocument;\n}\n\nexport interface CreateDocumentVersionSnapshotOptions {\n versionId?: string;\n name: string;\n createdAt?: string;\n}\n\nexport function createDocumentVersionSnapshotId(\n document: Pick<CanonicalDocument, \"docId\">,\n name: string,\n): string {\n return `${document.docId}:${name}`;\n}\n\nexport function createDocumentVersionSnapshot(\n document: CanonicalDocument,\n options: CreateDocumentVersionSnapshotOptions,\n): DocumentVersionSnapshot {\n const canonicalDocument = projectCanonicalDocument(document);\n return {\n snapshotVersion: \"document-version-snapshot/1\",\n versionId:\n options.versionId ?? createDocumentVersionSnapshotId(canonicalDocument, options.name),\n name: options.name,\n createdAt: options.createdAt ?? canonicalDocument.updatedAt,\n documentId: canonicalDocument.docId,\n documentSignature: createCanonicalDocumentSignature(canonicalDocument),\n canonicalDocument,\n };\n}\n\nexport function saveDocumentVersionSnapshot(\n snapshots: readonly DocumentVersionSnapshot[],\n snapshot: DocumentVersionSnapshot,\n): DocumentVersionSnapshot[] {\n const next = snapshots.filter((entry) => entry.versionId !== snapshot.versionId);\n next.push(snapshot);\n return next.sort(compareDocumentVersionSnapshots);\n}\n\nexport interface VersionAuditEntry {\n versionId: string;\n name: string;\n createdAt: string;\n documentSignature: string;\n action: \"created\" | \"compared\" | \"locked\";\n}\n\nexport function buildVersionAuditTrail(\n snapshots: readonly DocumentVersionSnapshot[],\n): VersionAuditEntry[] {\n return snapshots.map((snapshot) => ({\n versionId: snapshot.versionId,\n name: snapshot.name,\n createdAt: snapshot.createdAt,\n documentSignature: snapshot.documentSignature,\n action: \"created\",\n }));\n}\n\nexport function lockDocumentVersionSnapshot(\n snapshot: DocumentVersionSnapshot,\n): DocumentVersionSnapshot {\n return {\n ...snapshot,\n name: snapshot.name.startsWith(\"[locked] \")\n ? snapshot.name\n : `[locked] ${snapshot.name}`,\n };\n}\n\nfunction compareDocumentVersionSnapshots(\n left: DocumentVersionSnapshot,\n right: DocumentVersionSnapshot,\n): number {\n const createdAtComparison = right.createdAt.localeCompare(left.createdAt);\n if (createdAtComparison !== 0) {\n return createdAtComparison;\n }\n\n return left.versionId.localeCompare(right.versionId);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEO,SAAS,yBACd,MACA,QACA,UAA0C,CAAC,GACrB;AACtB,QAAM,aAAa,QAAQ,cAAc,OAAO;AAChD,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,eAAe,KAAK;AAC1B,QAAM,iBAAiB,OAAO;AAC9B,QAAM,aAAa,aAAa,QAAQ;AACxC,QAAM,eAAe,eAAe,QAAQ;AAC5C,QAAM,UAAU;AAAA,IACd,WAAW,IAAI,qBAAqB;AAAA,IACpC,aAAa,IAAI,qBAAqB;AAAA,EACxC;AAEA,QAAM,eAA6B,CAAC;AACpC,QAAM,UAA2B,CAAC;AAClC,MAAI,gBAAgB;AACpB,MAAI,kBAAkB;AACtB,MAAI,mBAAmB;AAEvB,aAAW,SAAS,CAAC,GAAG,SAAS,EAAE,WAAW,WAAW,QAAQ,aAAa,aAAa,OAAO,CAAC,GAAG;AACpG,WAAO,gBAAgB,MAAM,aAAa,kBAAkB,MAAM,aAAa;AAC7E,YAAM,cAAc,gBAAgB,MAAM,YAAY,WAAW,aAAa,IAAI;AAClF,YAAM,cAAc,kBAAkB,MAAM,cAAc,aAAa,eAAe,IAAI;AAE1F,UAAI,eAAe,aAAa;AAC9B,YAAI,YAAY,SAAS,eAAe,YAAY,SAAS,aAAa;AACxE,gBAAM,iBAAiB,UAAU,gBAAgB;AACjD,8BAAoB;AACpB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,2BAAiB;AACjB,6BAAmB;AACnB;AAAA,QACF;AAEA,cAAM,aAAa,UAAU,gBAAgB;AAC7C,4BAAoB;AACpB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAEA,cAAM,cAAc,UAAU,gBAAgB;AAC9C,4BAAoB;AACpB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,yBAAiB;AACjB,2BAAmB;AACnB;AAAA,MACF;AAEA,UAAI,aAAa;AACf,cAAM,WAAW,UAAU,gBAAgB;AAC3C,4BAAoB;AACpB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,yBAAiB;AACjB;AAAA,MACF;AAEA,UAAI,aAAa;AACf,cAAM,WAAW,UAAU,gBAAgB;AAC3C,4BAAoB;AACpB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,2BAAmB;AAAA,MACrB;AAAA,IACF;AAEA,QAAI,MAAM,YAAY,WAAW,UAAU,MAAM,cAAc,aAAa,QAAQ;AAClF,YAAM,WAAW,oBAAoB,WAAW,MAAM,SAAS,CAAC;AAChE,YAAM,aAAa,oBAAoB,aAAa,MAAM,WAAW,CAAC;AACtE,YAAM,aACJ,WAAW,MAAM,SAAS,EAAE,SAAS,eACrC,aAAa,MAAM,WAAW,EAAE,SAAS,eACzC,aAAa;AAEf,UAAI,YAAY;AACd,cAAM,cAAc,UAAU,gBAAgB;AAC9C,4BAAoB;AACpB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW,MAAM,SAAS;AAAA,UAC1B,aAAa,MAAM,WAAW;AAAA,UAC9B,MAAM;AAAA,QACR;AAAA,MACF,OAAO;AACL,qBAAa,KAAK;AAAA,UAChB,OAAO,WAAW,aAAa,MAAM,WAAW,CAAC;AAAA,UACjD,SAAS;AAAA,UACT,WAAW,aAAa,MAAM,WAAW,EAAE;AAAA,UAC3C,YAAY;AAAA,UACZ,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAEA,sBAAgB,MAAM,YAAY;AAClC,wBAAkB,MAAM,cAAc;AAAA,IACxC;AAAA,EACF;AAEA,QAAM,QAAQ,sBAAsB,cAAc,gBAAgB,cAAc,YAAY,QAAQ;AACpG,SAAO;AAAA,IACL,gBAAgB;AAAA,IAChB;AAAA,IACA,MAAM;AAAA,MACJ,WAAW,KAAK;AAAA,MAChB,MAAM,KAAK;AAAA,MACX,WAAW,KAAK;AAAA,IAClB;AAAA,IACA,QAAQ;AAAA,MACN,WAAW,OAAO;AAAA,MAClB,MAAM,OAAO;AAAA,MACb,WAAW,OAAO;AAAA,IACpB;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,EACpB;AACF;AAEA,SAAS,4BACP,cACA,SACA,UACA,OACA,WACA,aACM;AACN,QAAM,UAAU,MAAM,SAAS;AAC/B,QAAM,SAAS,WAAW,KAAK;AAC/B,QAAM,OAAO,oBAAoB,KAAK;AAEtC,eAAa,KAAK;AAAA,IAChB,GAAI,UAAU,EAAE,SAAS,IAAI,CAAC;AAAA,IAC9B,OAAO;AAAA,IACP,GAAI,UAAU,EAAE,aAAa,UAAU,IAAI,CAAC;AAAA,IAC5C;AAAA,IACA,WAAW,OAAO;AAAA,IAClB,GAAI,cAAc,aAAa,EAAE,YAAY,KAAK,IAAI,EAAE,WAAW,KAAK;AAAA,EAC1E,CAAC;AAED,UAAQ,KAAK;AAAA,IACX;AAAA,IACA,MACE,MAAM,SAAS,cACX,cAAc,cACZ,wBACA,uBACF,cAAc,cACZ,yBACA;AAAA,IACR;AAAA,IACA,WAAW,OAAO;AAAA,IAClB,GAAI,cAAc,aAAa,EAAE,YAAY,KAAK,IAAI,EAAE,WAAW,KAAK;AAAA,IACxE;AAAA,EACF,CAAC;AACH;AAEA,SAAS,8BACP,cACA,SACA,UACA,eACA,iBACA,aACM;AACN,QAAM,aAAa,oBAAoB,aAAa;AACpD,QAAM,YAAY,oBAAoB,eAAe;AAErD,eAAa,KAAK;AAAA,IAChB,UAAU,GAAG,QAAQ;AAAA,IACrB,OAAO,WAAW,aAAa;AAAA,IAC/B,aAAa;AAAA,IACb,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,EACF,CAAC;AACD,eAAa,KAAK;AAAA,IAChB,UAAU,GAAG,QAAQ;AAAA,IACrB,OAAO,WAAW,eAAe;AAAA,IACjC,aAAa;AAAA,IACb,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,EACF,CAAC;AAED,UAAQ,KAAK;AAAA,IACX;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,sBACP,MACA,QACA,SACA,YACA,UACmB;AACnB,QAAM,kBAA+B,CAAC;AACtC,QAAM,mBAAsC,CAAC;AAC7C,QAAM,sBAAsB,CAAC,GAAG,OAAO,YAAY,QAAQ;AAC3D,MAAI,iBAAiB;AACrB,MAAI,gBAAgB;AAEpB,WAAS,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtD,UAAM,QAAQ,QAAQ,KAAK;AAC3B,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,oBAAgB,KAAK,MAAM,KAAK;AAChC,QAAI,MAAM,MAAM,SAAS,aAAa;AACpC,UAAI,MAAM,aAAa;AACrB,yBAAiB,KAAK;AAAA,UACpB,UAAU,MAAM,YAAY,UAAU,iBAAiB,SAAS,CAAC;AAAA,UACjE,MAAM,MAAM;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AACA,wBAAkB;AAClB;AAAA,IACF;AAEA,QAAI,CAAC,MAAM,SAAS;AAClB,0BAAoB,KAAK;AAAA,QACvB,cAAc,iCAAiC,aAAa;AAAA,QAC5D,WAAW,8BAA8B,aAAa;AAAA,QACtD,QAAQ;AAAA,QACR,SAAS,+BAA+B,MAAM,SAAS,IAAI,MAAM,aAAa,aAAa,WAAW;AAAA,MACxG,CAAC;AACD,uBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG,yBAAyB,MAAM;AAAA,IAClC,WAAW;AAAA,IACX,QAAQ,mBAAmB,KAAK,QAAQ,OAAO,MAAM;AAAA,IACrD,WAAW,mBAAmB,KAAK,WAAW,OAAO,SAAS;AAAA,IAC9D,OAAO,mBAAmB,KAAK,OAAO,OAAO,KAAK;AAAA,IAClD,SAAS;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,MACN,UAAU,aAAa,OAAO,OAAO,QAAQ;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,cAAc,wBAAwB,KAAK,cAAc,OAAO,YAAY;AAAA,IAC5E,aAAa;AAAA,MACX,UAAU;AAAA,MACV,QAAQ,CAAC,GAAG,OAAO,YAAY,MAAM;AAAA,IACvC;AAAA,IACA,GAAI,OAAO,YAAY,KAAK,WAAW,EAAE,UAAU,aAAa,OAAO,YAAY,KAAK,QAAQ,EAAE,IAAI,CAAC;AAAA,EACzG;AACF;AAEA,SAAS,+BACP,UACA,kBACA,WACA,UAC0C;AAC1C,QAAM,2BAA2B,oBAAI,IAAoB;AACzD,MAAI,SAAS;AACb,MAAI,iBAAiB;AACrB,MAAI,uBAAuB;AAE3B,aAAW,SAAS,UAAU;AAC5B,QAAI,MAAM,SAAS,aAAa;AAC9B,UAAI,sBAAsB;AACxB,kBAAU;AAAA,MACZ;AACA,gBAAU,mBAAmB,KAAK;AAClC,+BAAyB,IAAI,gBAAgB,MAAM;AACnD,wBAAkB;AAClB,6BAAuB;AACvB;AAAA,IACF;AAEA,cAAU;AACV,2BAAuB;AAAA,EACzB;AAEA,QAAM,UAA2C,CAAC;AAClD,mBAAiB,QAAQ,CAAC,aAAa;AACrC,UAAM,WAAW,yBAAyB,IAAI,SAAS,cAAc;AACrE,QAAI,aAAa,QAAW;AAC1B;AAAA,IACF;AAEA,UAAM,SAAyB;AAAA,MAC7B,UAAU,SAAS;AAAA,MACnB,MAAM,SAAS;AAAA,MACf,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,UAAU,IAAI,SAAS;AAAA,QACtC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,YAAY,CAAC;AAAA,MACb,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,sBACE,SAAS,SAAS,cAAc,wBAAwB;AAAA,MAC5D;AAAA,IACF;AACA,YAAQ,KAAK,CAAC,SAAS,UAAU,MAAM,CAAC;AAAA,EAC1C,CAAC;AACD,SAAO,OAAO,YAAY,OAAO;AACnC;AAEA,SAAS,sBAAsB,OAA0B;AACvD,MAAI,MAAM,SAAS,aAAa;AAC9B,WAAO,aAAa,iCAAiC;AAAA,MACnD,GAAG;AAAA,MACH,UAAU,wBAAwB,MAAM,QAAQ;AAAA,IAClD,CAAC,CAAC;AAAA,EACJ;AAEA,SAAO,GAAG,MAAM,IAAI,IAAI,iCAAiC,KAAK,CAAC;AACjE;AAEA,SAAS,wBAAwB,UAA+C;AAC9E,SAAO,SAAS,IAAI,CAAC,UAAU;AAC7B,QAAI,MAAM,SAAS,aAAa;AAC9B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,UAAU,wBAAwB,MAAM,QAAQ;AAAA,MAClD;AAAA,IACF;AACA,QAAI,MAAM,SAAS,SAAS;AAC1B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,UAAU,wBAAwB,MAAM,QAAQ;AAAA,MAClD;AAAA,IACF;AACA,WAAO,aAAa,KAAK;AAAA,EAC3B,CAAC;AACH;AAEA,SAAS,WAAW,UAA6B,YAA2C;AAC1F,QAAM,SAAS,WAAW,SAAS;AACnC,QAAM,SAAS,MAAM;AAAA,IAAK,EAAE,QAAQ,SAAS,SAAS,EAAE;AAAA,IAAG,MACzD,MAAM,KAAK,EAAE,QAAQ,OAAO,GAAG,MAAM,CAAC;AAAA,EACxC;AAEA,WAASA,aAAY,SAAS,SAAS,GAAGA,cAAa,GAAGA,cAAa,GAAG;AACxE,aAASC,eAAc,WAAW,SAAS,GAAGA,gBAAe,GAAGA,gBAAe,GAAG;AAChF,aAAOD,UAAS,EAAEC,YAAW,IAC3B,SAASD,UAAS,MAAM,WAAWC,YAAW,IAC1C,OAAOD,aAAY,CAAC,EAAEC,eAAc,CAAC,IAAI,IACzC,KAAK,IAAI,OAAOD,aAAY,CAAC,EAAEC,YAAW,GAAG,OAAOD,UAAS,EAAEC,eAAc,CAAC,CAAC;AAAA,IACvF;AAAA,EACF;AAEA,QAAM,UAAsB,CAAC;AAC7B,MAAI,YAAY;AAChB,MAAI,cAAc;AAClB,SAAO,YAAY,SAAS,UAAU,cAAc,WAAW,QAAQ;AACrE,QAAI,SAAS,SAAS,MAAM,WAAW,WAAW,GAAG;AACnD,cAAQ,KAAK,EAAE,WAAW,YAAY,CAAC;AACvC,mBAAa;AACb,qBAAe;AACf;AAAA,IACF;AAEA,QAAI,OAAO,YAAY,CAAC,EAAE,WAAW,KAAK,OAAO,SAAS,EAAE,cAAc,CAAC,GAAG;AAC5E,mBAAa;AAAA,IACf,OAAO;AACL,qBAAe;AAAA,IACjB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB,WAAkC;AAC5D,SAAO,UAAU,SAAS,OAAO,CAAC,QAAQ,UAAU,SAAS,gBAAgB,KAAK,GAAG,CAAC;AACxF;AAEA,SAAS,gBAAgB,MAA0B;AACjD,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO,MAAM,KAAK,KAAK,IAAI,EAAE;AAAA,IAC/B,KAAK;AACH,aAAO,KAAK,SAAS,OAAO,CAAC,QAAQ,UAAU,SAAS,gBAAgB,KAAK,GAAG,CAAC;AAAA,IACnF,KAAK;AACH,aAAO,KAAK,SAAS,OAAO,CAAC,QAAQ,UAAU,SAAS,gBAAgB,KAAK,GAAG,CAAC;AAAA,IACnF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,oBAAoB,OAA0B;AACrD,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACH,aAAO,MAAM,SAAS,IAAI,oBAAoB,EAAE,KAAK,EAAE;AAAA,IACzD,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,qBAAqB,MAA0B;AACtD,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO,KAAK;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,KAAK;AAAA,IACd,KAAK;AACH,aAAO,KAAK,SAAS,IAAI,oBAAoB,EAAE,KAAK,EAAE;AAAA,IACxD,KAAK;AACH,aAAO,KAAK,SAAS,IAAI,oBAAoB,EAAE,KAAK,EAAE;AAAA,IACxD,KAAK;AACH,aAAO,KAAK,WAAW;AAAA,IACzB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,KAAK,QAAQ;AAAA,IACtB,KAAK;AACH,aAAO,KAAK;AAAA,IACd,KAAK;AACH,aAAO,KAAK,QAAQ;AAAA,EACxB;AACF;AAEA,SAAS,mBACP,MACA,QAC6B;AAC7B,SAAO;AAAA,IACL,YAAY,EAAE,GAAG,KAAK,YAAY,GAAG,OAAO,WAAW;AAAA,IACvD,YAAY,EAAE,GAAG,KAAK,YAAY,GAAG,OAAO,WAAW;AAAA,IACvD,QAAQ,EAAE,GAAG,KAAK,QAAQ,GAAG,OAAO,OAAO;AAAA,IAC3C,GAAK,KAAK,gBAAgB,OAAO,eAC7B,EAAE,cAAc,EAAE,GAAI,KAAK,gBAAgB,CAAC,GAAI,GAAI,OAAO,gBAAgB,CAAC,EAAG,EAAE,IACjF,CAAC;AAAA,EACP;AACF;AAEA,SAAS,wBACP,MACA,QACmC;AACnC,SAAO;AAAA,IACL,iBAAiB;AAAA,MACf,GAAG,KAAK;AAAA,MACR,GAAG,OAAO;AAAA,IACZ;AAAA,IACA,cAAc;AAAA,MACZ,GAAG,KAAK;AAAA,MACR,GAAG,OAAO;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAAS,mBAAqC,MAAS,QAAc;AACnE,SAAO,aAAa,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC;AAC5C;AAEA,SAAS,WAAgC,OAAa;AACpD,SAAO,aAAa,KAAK;AAC3B;AAEA,SAAS,aAAgB,OAAa;AACpC,SAAO,gBAAgB,KAAK;AAC9B;;;ACrlBA,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,8BAA8B;AACpC,IAAM,yBAAyB;AAC/B,IAAM,mBAAmB;AACzB,IAAM,8BACJ;AACF,IAAM,6BACJ;AACF,IAAM,sCACJ;AACF,IAAM,iCACJ;AACF,IAAM,2BACJ;AACF,IAAM,wBACJ;AACF,IAAM,iCACJ;AACF,IAAM,4BACJ;AACF,IAAM,sBACJ;AAaK,SAAS,+BACd,QACA,UAAyC,CAAC,GACZ;AAC9B,QAAM,gBACJ,QAAQ,iBACR;AAAA,IACE,iBAAiB;AAAA,MACf,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AACF,QAAM,wBACJ,cAAc,MAAM,IAAI,kBAAkB,GAAG,iBAAiB,CAAC;AAEjE,QAAM,iBAAiB,OAAO;AAAA,IAC5B,sCAAsC,OAAO,iBAAiB,OAAO,QAAQ,EAAE;AAAA,EACjF;AACA,QAAM,sBAAsB,wBAAwB,OAAO,iBAAiB,OAAO,SAAS;AAC5F,QAAM,aAAa;AAAA,IACjB;AAAA,MACE,OAAO,iBAAiB;AAAA,MACxB;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO,iBAAiB;AAAA,IACxB;AAAA,IACA;AAAA,MACE,OAAO,OAAO,iBAAiB;AAAA,IACjC;AAAA,EACF;AACA,QAAM,mBAAmB;AAAA,IACvB,WAAW;AAAA,IACX;AAAA,IACA,WAAW;AAAA,EACb;AACA,MAAI,iBAAiB,mBAAmB,SAAS,GAAG;AAClD,UAAM,IAAI;AAAA,MACR,0BAA0B,iBAAiB,mBAAmB,MAAM;AAAA,IACtE;AAAA,EACF;AACA,QAAM,mBAAmB,yBAAyB,cAAc;AAChE,QAAM,qBAAqB,2BAA2B,gBAAgB;AAAA,IACpE;AAAA,EACF,CAAC;AACD,QAAM,oBAAoB;AAAA,IACxB,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAAA,IACF;AAAA,EACF;AACA,MAAI,kBAAkB,kBAAkB,SAAS,GAAG;AAClD,UAAM,IAAI;AAAA,MACR,0BAA0B,kBAAkB,kBAAkB,MAAM;AAAA,IACtE;AAAA,EACF;AAEA,QAAM,eAAe,oBAAoB,OAAO,iBAAiB,SAAS,IACtE,sBAAsB,OAAO,iBAAiB,SAAS,IACvD;AACJ,QAAM,gBAAgB;AAAA,IACpB;AAAA,MACE;AAAA,QACE;AAAA,UACE;AAAA,YACE,WAAW;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ,YAAY;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,mBAAmB,qBAAqB,SAAS;AAAA,QACnD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,mBAAmB,mBAAmB;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,mBAAmB,cAAc;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,mBAAmB,SAAS;AAAA,EACtC;AACA,QAAM,gBAAgB,oBAAoB,eAAe;AAAA,IACvD;AAAA,IACA,GAAI,eAAe,CAAC,mBAAmB,IAAI,CAAC;AAAA,IAC5C,GAAI,mBAAmB,qBAAqB,SAAS,IAAI,CAAC,kBAAkB,IAAI,CAAC;AAAA,IACjF,GAAI,mBAAmB,sBAAsB,CAAC,2BAA2B,IAAI,CAAC;AAAA,IAC9E,GAAI,mBAAmB,iBAAiB,CAAC,sBAAsB,IAAI,CAAC;AAAA,IACpE,GAAI,mBAAmB,YAAY,CAAC,gBAAgB,IAAI,CAAC;AAAA,EAC3D,CAAC;AAED,gBAAc,iBAAiB;AAAA,IAC7B,MAAM;AAAA,IACN,OAAO,IAAI,YAAY,EAAE,OAAO,kBAAkB,WAAW;AAAA,IAC7D,aAAa;AAAA,IACb;AAAA,EACF,CAAC;AAED,MAAI,cAAc;AAChB,kBAAc,iBAAiB;AAAA,MAC7B,MAAM;AAAA,MACN,OAAO,IAAI,YAAY,EAAE,OAAO,YAAY;AAAA,MAC5C,aACE,cAAc,MAAM,IAAI,mBAAmB,GAAG,eAAe;AAAA,IACjE,CAAC;AAAA,EACH;AAEA,MAAI,mBAAmB,qBAAqB,SAAS,GAAG;AACtD,kBAAc,iBAAiB;AAAA,MAC7B,MAAM;AAAA,MACN,OAAO,IAAI,YAAY,EAAE,OAAO,mBAAmB,WAAW;AAAA,MAC9D,aACE,cAAc,MAAM,IAAI,kBAAkB,GAAG,eAAe;AAAA,IAChE,CAAC;AAAA,EACH;AAEA,MAAI,mBAAmB,qBAAqB;AAC1C,kBAAc,iBAAiB;AAAA,MAC7B,MAAM;AAAA,MACN,OAAO,IAAI,YAAY,EAAE,OAAO,mBAAmB,mBAAmB;AAAA,MACtE,aACE,cAAc,MAAM,IAAI,2BAA2B,GAAG,eACtD;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,MAAI,mBAAmB,gBAAgB;AACrC,kBAAc,iBAAiB;AAAA,MAC7B,MAAM;AAAA,MACN,OAAO,IAAI,YAAY,EAAE,OAAO,mBAAmB,cAAc;AAAA,MACjE,aACE,cAAc,MAAM,IAAI,sBAAsB,GAAG,eAAe;AAAA,IACpE,CAAC;AAAA,EACH;AAEA,MAAI,mBAAmB,WAAW;AAChC,kBAAc,iBAAiB;AAAA,MAC7B,MAAM;AAAA,MACN,OAAO,IAAI,YAAY,EAAE,OAAO,mBAAmB,SAAS;AAAA,MAC5D,aACE,cAAc,MAAM,IAAI,gBAAgB,GAAG,eAAe;AAAA,IAC9D,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,OAAO,cAAc,UAAU;AAAA,IAC/B,UAAU;AAAA,IACV,UAAU,QAAQ,YAAY,GAAG,OAAO,OAAO,IAAI;AAAA,EACrD;AACF;AAEA,SAAS,wBACP,WACwB;AACxB,SAAO,OAAO,OAAO,SAAS,EAAE,IAAI,CAAC,cAAc;AAAA,IACjD,YAAY,SAAS;AAAA,IACrB,MAAM,SAAS;AAAA,IACf,QAAQ,SAAS;AAAA,IACjB,UAAU,SAAS,YAAY;AAAA,IAC/B,WAAW,SAAS;AAAA,IACpB,YAAY,CAAC,GAAI,SAAS,cAAc,CAAC,CAAE;AAAA,IAC3C,UAAU;AAAA,MACR,QAAQ,SAAS,UAAU,UAAU;AAAA,MACrC,oBAAoB,SAAS,UAAU;AAAA,MACvC,sBAAsB,SAAS,UAAU;AAAA,MACzC,sBAAsB,SAAS,UAAU;AAAA,MACzC,iBAAiB,SAAS,UAAU;AAAA,IACtC;AAAA,IACA,QAAQ,SAAS,WAAW,SAAS,WAAW,SAAS;AAAA,EAC3D,EAAE;AACJ;AAEA,SAAS,oBACP,WACS;AACT,SACE,OAAO,KAAK,UAAU,mBAAmB,EAAE,SAAS,KACpD,OAAO,KAAK,UAAU,SAAS,EAAE,SAAS;AAE9C;AAEA,SAAS,wBACP,eACA,uBACA,kBACA,QACA,aACmB;AACnB,QAAM,OAAO,cAAc,IAAI,CAAC,kBAAkB,EAAE,GAAG,aAAa,EAAE;AACtE,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,KAAK,KAAK,CAAC,iBAAiB,aAAa,SAAS,gBAAgB;AACnF,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,aACJ,sBAAsB,KAAK,CAAC,iBAAiB,aAAa,SAAS,gBAAgB,GAAG,MACtF,MAAM,KAAK,SAAS,CAAC;AACvB,OAAK,KAAK;AAAA,IACR,IAAI;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA,YAAY;AAAA,EACd,CAAC;AACD,SAAO;AACT;;;ACjQO,SAAS,gCACd,UACA,MACQ;AACR,SAAO,GAAG,SAAS,KAAK,IAAI,IAAI;AAClC;AAEO,SAAS,8BACd,UACA,SACyB;AACzB,QAAM,oBAAoB,yBAAyB,QAAQ;AAC3D,SAAO;AAAA,IACL,iBAAiB;AAAA,IACjB,WACE,QAAQ,aAAa,gCAAgC,mBAAmB,QAAQ,IAAI;AAAA,IACtF,MAAM,QAAQ;AAAA,IACd,WAAW,QAAQ,aAAa,kBAAkB;AAAA,IAClD,YAAY,kBAAkB;AAAA,IAC9B,mBAAmB,iCAAiC,iBAAiB;AAAA,IACrE;AAAA,EACF;AACF;AAEO,SAAS,4BACd,WACA,UAC2B;AAC3B,QAAM,OAAO,UAAU,OAAO,CAAC,UAAU,MAAM,cAAc,SAAS,SAAS;AAC/E,OAAK,KAAK,QAAQ;AAClB,SAAO,KAAK,KAAK,+BAA+B;AAClD;AAUO,SAAS,uBACd,WACqB;AACrB,SAAO,UAAU,IAAI,CAAC,cAAc;AAAA,IAClC,WAAW,SAAS;AAAA,IACpB,MAAM,SAAS;AAAA,IACf,WAAW,SAAS;AAAA,IACpB,mBAAmB,SAAS;AAAA,IAC5B,QAAQ;AAAA,EACV,EAAE;AACJ;AAEO,SAAS,4BACd,UACyB;AACzB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM,SAAS,KAAK,WAAW,WAAW,IACtC,SAAS,OACT,YAAY,SAAS,IAAI;AAAA,EAC/B;AACF;AAEA,SAAS,gCACP,MACA,OACQ;AACR,QAAM,sBAAsB,MAAM,UAAU,cAAc,KAAK,SAAS;AACxE,MAAI,wBAAwB,GAAG;AAC7B,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,UAAU,cAAc,MAAM,SAAS;AACrD;","names":["baseIndex","targetIndex"]}