@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
@@ -0,0 +1,255 @@
1
+ import type {
2
+ BlockNode,
3
+ DocRange,
4
+ OpaqueFragmentRecord,
5
+ PreservationStore,
6
+ PreservedPackagePart,
7
+ } from "../model/canonical-document.ts";
8
+
9
+ export interface OpaqueFragmentDescriptor {
10
+ featureKey:
11
+ | "sections"
12
+ | "tables"
13
+ | "headers-footers"
14
+ | "fields"
15
+ | "content-controls"
16
+ | "custom-xml"
17
+ | "alt-chunk"
18
+ | "embedded-objects"
19
+ | "alternate-content"
20
+ | "unknown-ooxml";
21
+ label: string;
22
+ detail: string;
23
+ }
24
+
25
+ const BLOCKED_IMPORT_FEATURE_KEYS = new Set<OpaqueFragmentDescriptor["featureKey"]>([
26
+ "alt-chunk",
27
+ "custom-xml",
28
+ ]);
29
+
30
+ export function createPreservationStore(
31
+ seed?: Partial<PreservationStore>,
32
+ ): PreservationStore {
33
+ return {
34
+ opaqueFragments: { ...(seed?.opaqueFragments ?? {}) },
35
+ packageParts: { ...(seed?.packageParts ?? {}) },
36
+ };
37
+ }
38
+
39
+ export function getOpaqueFragment(
40
+ store: PreservationStore,
41
+ fragmentId: string,
42
+ ): OpaqueFragmentRecord | undefined {
43
+ return normalizeOpaqueFragmentMap(store)[fragmentId];
44
+ }
45
+
46
+ export function listOpaqueFragments(
47
+ store: PreservationStore,
48
+ ): OpaqueFragmentRecord[] {
49
+ return Object.values(normalizeOpaqueFragmentMap(store)).sort((left, right) => {
50
+ return (
51
+ left.lastKnownRange.from - right.lastKnownRange.from ||
52
+ left.fragmentId.localeCompare(right.fragmentId)
53
+ );
54
+ });
55
+ }
56
+
57
+ export function listPreservedPackageParts(
58
+ store: PreservationStore,
59
+ ): PreservedPackagePart[] {
60
+ return Object.values(normalizePackagePartMap(store)).sort((left, right) =>
61
+ left.packagePartName.localeCompare(right.packagePartName),
62
+ );
63
+ }
64
+
65
+ export function findOpaqueFragmentsIntersectingRange(
66
+ store: PreservationStore,
67
+ range: DocRange,
68
+ ): OpaqueFragmentRecord[] {
69
+ return listOpaqueFragments(store).filter((fragment) =>
70
+ rangesIntersect(fragment.lastKnownRange, range),
71
+ );
72
+ }
73
+
74
+ export function describeOpaqueFragment(
75
+ fragment: OpaqueFragmentRecord,
76
+ ): OpaqueFragmentDescriptor {
77
+ const xml = fragment.payloadReference;
78
+ const detail = createDetail(fragment);
79
+
80
+ if (/\b(?:w:)?sectPr\b/u.test(xml)) {
81
+ return {
82
+ featureKey: "sections",
83
+ label: "Section properties",
84
+ detail,
85
+ };
86
+ }
87
+
88
+ if (/\b(?:w:)?tbl\b/u.test(xml)) {
89
+ return {
90
+ featureKey: "tables",
91
+ label: "Preserved table structure",
92
+ detail,
93
+ };
94
+ }
95
+
96
+ if (/\b(?:w:)?hdr\b|\b(?:w:)?ftr\b/u.test(xml)) {
97
+ return {
98
+ featureKey: "headers-footers",
99
+ label: "Header or footer content",
100
+ detail,
101
+ };
102
+ }
103
+
104
+ if (/\b(?:w:)?fldSimple\b|\b(?:w:)?fldChar\b|\b(?:w:)?instrText\b/u.test(xml)) {
105
+ return {
106
+ featureKey: "fields",
107
+ label: "Word field content",
108
+ detail,
109
+ };
110
+ }
111
+
112
+ if (/\b(?:w:)?sdt\b/u.test(xml)) {
113
+ return {
114
+ featureKey: "content-controls",
115
+ label: "Content control",
116
+ detail,
117
+ };
118
+ }
119
+
120
+ if (/\b(?:w:)?customXml\b/u.test(xml)) {
121
+ return {
122
+ featureKey: "custom-xml",
123
+ label: "Custom XML wrapper",
124
+ detail,
125
+ };
126
+ }
127
+
128
+ if (/\b(?:w:)?altChunk\b/u.test(xml)) {
129
+ return {
130
+ featureKey: "alt-chunk",
131
+ label: "AltChunk import",
132
+ detail,
133
+ };
134
+ }
135
+
136
+ if (/\b(?:w:)?object\b|\b(?:o:)?OLEObject\b/u.test(xml)) {
137
+ const isOleObject = /\b(?:o:)?OLEObject\b/u.test(xml);
138
+ const label = isOleObject ? "OLE embedded object" : "Embedded object";
139
+ return {
140
+ featureKey: "embedded-objects",
141
+ label,
142
+ detail: `${detail} Preserve-only embedded object retained for export and Word reopen.`,
143
+ };
144
+ }
145
+
146
+ if (/\b(?:mc:)?AlternateContent\b/u.test(xml)) {
147
+ return {
148
+ featureKey: "alternate-content",
149
+ label: "Markup compatibility block",
150
+ detail,
151
+ };
152
+ }
153
+
154
+ return {
155
+ featureKey: "unknown-ooxml",
156
+ label: "Unsupported OOXML fragment",
157
+ detail,
158
+ };
159
+ }
160
+
161
+ export function describeStructuredWrapperBlock(
162
+ block: BlockNode,
163
+ ): OpaqueFragmentDescriptor | null {
164
+ if (block.type === "sdt") {
165
+ if (isTocContentControl(block)) {
166
+ return {
167
+ featureKey: "content-controls",
168
+ label: "TOC content control",
169
+ detail: "TOC content control remains a wrapper-heavy template structure and read-only.",
170
+ };
171
+ }
172
+ if (block.properties.sdtType === "docPartObj") {
173
+ return {
174
+ featureKey: "content-controls",
175
+ label: "Template content control",
176
+ detail: "Template content control remains a wrapper-heavy document part and read-only.",
177
+ };
178
+ }
179
+ }
180
+
181
+ if (block.type === "custom_xml") {
182
+ const descriptor = [block.element, block.uri].filter(Boolean).join(" ");
183
+ return {
184
+ featureKey: "custom-xml",
185
+ label: "Custom XML wrapper",
186
+ detail: descriptor.length > 0
187
+ ? `Custom XML wrapper ${descriptor} remains package-backed and read-only.`
188
+ : "Custom XML wrapper remains package-backed and read-only.",
189
+ };
190
+ }
191
+
192
+ if (block.type === "alt_chunk") {
193
+ return {
194
+ featureKey: "alt-chunk",
195
+ label: "AltChunk import",
196
+ detail: `AltChunk import remains package-backed and blocked through relationship ${block.relationshipId}.`,
197
+ };
198
+ }
199
+
200
+ return null;
201
+ }
202
+
203
+ export function isBlockedImportFeatureKey(
204
+ featureKey: OpaqueFragmentDescriptor["featureKey"],
205
+ ): boolean {
206
+ return BLOCKED_IMPORT_FEATURE_KEYS.has(featureKey);
207
+ }
208
+
209
+ function createDetail(fragment: OpaqueFragmentRecord): string {
210
+ const detail = [
211
+ `Preserved whole-unit from ${fragment.lastKnownRange.from}-${fragment.lastKnownRange.to}.`,
212
+ fragment.packagePartName ? `Part ${fragment.packagePartName}.` : null,
213
+ fragment.relationshipId ? `Relationship ${fragment.relationshipId}.` : null,
214
+ ]
215
+ .filter(Boolean)
216
+ .join(" ");
217
+
218
+ return detail.length > 0
219
+ ? detail
220
+ : "Preserved whole-unit to keep unsupported OOXML intact.";
221
+ }
222
+
223
+ function isTocContentControl(block: Extract<BlockNode, { type: "sdt" }>): boolean {
224
+ const searchText = [
225
+ block.properties.alias,
226
+ block.properties.tag,
227
+ block.properties.sdtType,
228
+ block.properties.propertiesXml,
229
+ ]
230
+ .filter(Boolean)
231
+ .join(" ")
232
+ .toLowerCase();
233
+
234
+ return searchText.includes("table of contents") || /\btoc\b/u.test(searchText);
235
+ }
236
+
237
+ function rangesIntersect(left: DocRange, right: DocRange): boolean {
238
+ return left.from < right.to && right.from < left.to;
239
+ }
240
+
241
+ function normalizeOpaqueFragmentMap(
242
+ store: PreservationStore,
243
+ ): Record<string, OpaqueFragmentRecord> {
244
+ return store && typeof store === "object" && store.opaqueFragments && typeof store.opaqueFragments === "object"
245
+ ? (store.opaqueFragments as Record<string, OpaqueFragmentRecord>)
246
+ : {};
247
+ }
248
+
249
+ function normalizePackagePartMap(
250
+ store: PreservationStore,
251
+ ): Record<string, PreservedPackagePart> {
252
+ return store && typeof store === "object" && store.packageParts && typeof store.packageParts === "object"
253
+ ? (store.packageParts as Record<string, PreservedPackagePart>)
254
+ : {};
255
+ }
@@ -0,0 +1,16 @@
1
+ # Review
2
+
3
+ Comments, anchors, revisions, remap helpers, and accept/reject behavior belong here.
4
+
5
+ Frozen Wave 1 contract:
6
+
7
+ - comments and revisions live in the canonical `review` store, not in the content tree
8
+ - review anchors use canonical position ranges or detached-anchor payloads, never DOM paths
9
+ - all review mutations flow through runtime commands and transactions
10
+ - detached comments or revisions remain addressable with reason metadata; they are not silently dropped
11
+ - v1 authoring is limited to single-paragraph comments, thread replies, tracked insertions, tracked deletions, and accept/reject flows
12
+ - preserve-only review structures such as multi-paragraph editable comment ranges, tracked moves, and structural list/table revisions stay locked and warning-backed
13
+
14
+ Key subdirectories:
15
+
16
+ - `store/`
@@ -0,0 +1,3 @@
1
+ # Review Store
2
+
3
+ Comment threads, revision records, review selectors, and accept/reject state belong here.
@@ -0,0 +1,70 @@
1
+ import {
2
+ createNodeAnchor,
3
+ createRangeAnchor,
4
+ mapAnchor,
5
+ normalizeRange,
6
+ type Assoc,
7
+ type BoundaryAssoc,
8
+ type DocRange,
9
+ type EditorAnchorProjection,
10
+ type TransactionMapping,
11
+ } from "../../core/selection/mapping.ts";
12
+
13
+ export type CommentAnchor = EditorAnchorProjection;
14
+ export type CommentAnchorState = "active" | "detached";
15
+
16
+ export interface CommentAnchorSummary {
17
+ anchor: CommentAnchor;
18
+ state: CommentAnchorState;
19
+ range: DocRange;
20
+ }
21
+
22
+ export function createCommentRangeAnchor(
23
+ from: number,
24
+ to = from,
25
+ assoc?: BoundaryAssoc,
26
+ ): CommentAnchor {
27
+ return createRangeAnchor(from, to, assoc);
28
+ }
29
+
30
+ export function createCommentNodeAnchor(at: number, assoc?: Assoc): CommentAnchor {
31
+ return createNodeAnchor(at, assoc);
32
+ }
33
+
34
+ export function remapCommentAnchor(
35
+ anchor: CommentAnchor,
36
+ mapping: TransactionMapping,
37
+ ): CommentAnchor {
38
+ return mapAnchor(anchor, mapping);
39
+ }
40
+
41
+ export function isDetachedCommentAnchor(anchor: CommentAnchor): boolean {
42
+ return anchor.kind === "detached";
43
+ }
44
+
45
+ export function summarizeCommentAnchor(anchor: CommentAnchor): CommentAnchorSummary {
46
+ if (anchor.kind === "range") {
47
+ return {
48
+ anchor,
49
+ state: "active",
50
+ range: normalizeRange(anchor.range),
51
+ };
52
+ }
53
+
54
+ if (anchor.kind === "node") {
55
+ return {
56
+ anchor,
57
+ state: "active",
58
+ range: {
59
+ from: anchor.at,
60
+ to: anchor.at,
61
+ },
62
+ };
63
+ }
64
+
65
+ return {
66
+ anchor,
67
+ state: "detached",
68
+ range: normalizeRange(anchor.lastKnownRange),
69
+ };
70
+ }
@@ -0,0 +1,154 @@
1
+ import type { CommentThreadRecord, EditorWarning } from "../../core/state/editor-state.ts";
2
+ import {
3
+ detachReviewAnchor,
4
+ getAnchorRange,
5
+ mapReviewAnchor,
6
+ mappingTouchesAnchorContent,
7
+ rangeStaysWithinSingleParagraph,
8
+ type ReviewAnchor,
9
+ } from "../../core/selection/review-anchors.ts";
10
+ import type { TransactionMapping } from "../../core/selection/mapping.ts";
11
+
12
+ export interface RemapCommentThreadsOptions {
13
+ comments: Record<string, CommentThreadRecord>;
14
+ mapping: TransactionMapping;
15
+ nextContent: unknown;
16
+ existingWarnings?: EditorWarning[];
17
+ }
18
+
19
+ export interface RemapCommentThreadsResult {
20
+ comments: Record<string, CommentThreadRecord>;
21
+ warnings: EditorWarning[];
22
+ detachedCommentIds: string[];
23
+ }
24
+
25
+ export function remapCommentThreads(
26
+ options: RemapCommentThreadsOptions,
27
+ ): RemapCommentThreadsResult {
28
+ const comments = Object.fromEntries(
29
+ Object.entries(options.comments).map(([commentId, comment]) => [
30
+ commentId,
31
+ remapCommentThread(comment, options.mapping, options.nextContent),
32
+ ]),
33
+ );
34
+ const detachedCommentIds = Object.values(comments)
35
+ .filter((comment) => comment.anchor.kind === "detached")
36
+ .map((comment) => comment.commentId);
37
+
38
+ return {
39
+ comments,
40
+ warnings: mergeDetachedAnchorWarnings(comments, options.existingWarnings ?? []),
41
+ detachedCommentIds,
42
+ };
43
+ }
44
+
45
+ export function remapCommentThread(
46
+ comment: CommentThreadRecord,
47
+ mapping: TransactionMapping,
48
+ nextContent: unknown,
49
+ ): CommentThreadRecord {
50
+ if (comment.anchor.kind === "detached") {
51
+ return comment;
52
+ }
53
+
54
+ const mappedAnchor = mapReviewAnchor(comment.anchor, mapping);
55
+ const anchor = normalizeCommentAnchor(comment.anchor, mappedAnchor, mapping, nextContent);
56
+
57
+ return {
58
+ ...comment,
59
+ anchor,
60
+ };
61
+ }
62
+
63
+ function normalizeCommentAnchor(
64
+ previousAnchor: ReviewAnchor,
65
+ mappedAnchor: ReviewAnchor,
66
+ mapping: TransactionMapping,
67
+ nextContent: unknown,
68
+ ): ReviewAnchor {
69
+ if (mappedAnchor.kind === "detached") {
70
+ return mappedAnchor;
71
+ }
72
+
73
+ const previousRange = getAnchorRange(previousAnchor);
74
+ const mappedRange = getAnchorRange(mappedAnchor);
75
+
76
+ if (
77
+ previousAnchor.kind === "range" &&
78
+ previousRange.from < previousRange.to &&
79
+ mappedAnchor.kind === "range" &&
80
+ mappedRange.from === mappedRange.to &&
81
+ mappingTouchesAnchorContent(previousAnchor, mapping)
82
+ ) {
83
+ return detachReviewAnchor(previousRange, detachReason(mapping));
84
+ }
85
+
86
+ if (
87
+ mappedAnchor.kind === "range" &&
88
+ !rangeStaysWithinSingleParagraph(nextContent, mappedAnchor.range)
89
+ ) {
90
+ return detachReviewAnchor(previousRange, "invalidatedByStructureChange");
91
+ }
92
+
93
+ return mappedAnchor;
94
+ }
95
+
96
+ function detachReason(
97
+ mapping: TransactionMapping,
98
+ ): "deleted" | "invalidatedByStructureChange" {
99
+ return mapping.metadata?.invalidatesStructures
100
+ ? "invalidatedByStructureChange"
101
+ : "deleted";
102
+ }
103
+
104
+ function mergeDetachedAnchorWarnings(
105
+ comments: Record<string, CommentThreadRecord>,
106
+ existingWarnings: EditorWarning[],
107
+ ): EditorWarning[] {
108
+ const retainedWarnings = existingWarnings.filter(
109
+ (warning) =>
110
+ warning.code !== "comment_anchor_detached" ||
111
+ !warning.details ||
112
+ typeof warning.details.commentId !== "string" ||
113
+ comments[warning.details.commentId]?.anchor.kind === "detached",
114
+ );
115
+
116
+ const knownDetachedIds = new Set(
117
+ retainedWarnings
118
+ .filter((warning) => warning.code === "comment_anchor_detached")
119
+ .map((warning) =>
120
+ typeof warning.details?.commentId === "string"
121
+ ? warning.details.commentId
122
+ : undefined,
123
+ )
124
+ .filter((value): value is string => Boolean(value)),
125
+ );
126
+
127
+ const detachedWarnings = Object.values(comments)
128
+ .filter(
129
+ (comment) =>
130
+ comment.anchor.kind === "detached" && !knownDetachedIds.has(comment.commentId),
131
+ )
132
+ .map((comment) => createDetachedCommentWarning(comment));
133
+
134
+ return [...retainedWarnings, ...detachedWarnings];
135
+ }
136
+
137
+ function createDetachedCommentWarning(
138
+ comment: CommentThreadRecord,
139
+ ): EditorWarning {
140
+ const anchor = comment.anchor.kind === "detached" ? comment.anchor : undefined;
141
+
142
+ return {
143
+ warningId: `warning:comment-anchor-detached:${comment.commentId}`,
144
+ code: "comment_anchor_detached",
145
+ severity: "warning",
146
+ message: `Comment ${comment.commentId} detached after edit remapping.`,
147
+ source: "review",
148
+ affectedAnchor: anchor,
149
+ details: {
150
+ commentId: comment.commentId,
151
+ reason: anchor?.reason,
152
+ },
153
+ };
154
+ }