@beyondwork/docx-react-component 1.0.29 → 1.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/package.json +65 -96
  2. package/src/README.md +85 -0
  3. package/src/api/README.md +26 -0
  4. package/src/api/public-types.ts +1952 -0
  5. package/src/api/session-state.ts +62 -0
  6. package/src/compare/diff-engine.ts +623 -0
  7. package/src/compare/export-redlines.ts +280 -0
  8. package/src/compare/index.ts +25 -0
  9. package/src/compare/snapshot.ts +97 -0
  10. package/src/component-inventory.md +99 -0
  11. package/src/core/README.md +10 -0
  12. package/src/core/commands/README.md +3 -0
  13. package/{dist/chunk-TJBP2K4T.js → src/core/commands/formatting-commands.ts} +536 -196
  14. package/src/core/commands/image-commands.ts +373 -0
  15. package/src/core/commands/index.ts +1879 -0
  16. package/src/core/commands/list-commands.ts +565 -0
  17. package/src/core/commands/paragraph-layout-commands.ts +339 -0
  18. package/src/core/commands/review-commands.ts +108 -0
  19. package/{dist/core/commands/section-layout-commands.cjs → src/core/commands/section-layout-commands.ts} +340 -137
  20. package/src/core/commands/structural-helpers.ts +309 -0
  21. package/{dist/core/commands/style-commands.cjs → src/core/commands/style-commands.ts} +113 -65
  22. package/src/core/commands/table-structure-commands.ts +854 -0
  23. package/{dist/chunk-UZXBISGO.js → src/core/commands/text-commands.ts} +142 -86
  24. package/src/core/schema/README.md +3 -0
  25. package/src/core/schema/text-schema.ts +516 -0
  26. package/src/core/search/search-text.ts +357 -0
  27. package/src/core/selection/README.md +3 -0
  28. package/src/core/selection/mapping.ts +289 -0
  29. package/src/core/selection/review-anchors.ts +183 -0
  30. package/src/core/state/README.md +3 -0
  31. package/src/core/state/editor-state.ts +892 -0
  32. package/src/core/state/text-transaction.ts +869 -0
  33. package/src/formats/xlsx/io/parse-shared-strings.ts +41 -0
  34. package/src/formats/xlsx/io/parse-sheet.ts +459 -0
  35. package/src/formats/xlsx/io/parse-styles.ts +59 -0
  36. package/src/formats/xlsx/io/parse-workbook.ts +75 -0
  37. package/src/formats/xlsx/io/serialize-shared-strings.ts +72 -0
  38. package/src/formats/xlsx/io/serialize-sheet.ts +333 -0
  39. package/src/formats/xlsx/io/serialize-styles.ts +98 -0
  40. package/src/formats/xlsx/io/serialize-workbook.ts +429 -0
  41. package/src/formats/xlsx/io/xlsx-session.ts +314 -0
  42. package/src/formats/xlsx/model/cell.ts +189 -0
  43. package/src/formats/xlsx/model/sheet.ts +326 -0
  44. package/src/formats/xlsx/model/styles.ts +118 -0
  45. package/src/formats/xlsx/model/workbook.ts +453 -0
  46. package/src/formats/xlsx/runtime/cell-commands.ts +567 -0
  47. package/src/formats/xlsx/runtime/sheet-commands.ts +206 -0
  48. package/src/formats/xlsx/runtime/workbook-runtime.ts +177 -0
  49. package/src/formats/xlsx/runtime/workbook-transaction.ts +822 -0
  50. package/src/index.ts +142 -0
  51. package/src/io/README.md +10 -0
  52. package/src/io/docx-session.ts +3175 -0
  53. package/src/io/export/README.md +3 -0
  54. package/src/io/export/export-session.ts +220 -0
  55. package/src/io/export/minimal-docx.ts +115 -0
  56. package/src/io/export/reattach-preserved-parts.ts +54 -0
  57. package/src/io/export/serialize-comments.ts +947 -0
  58. package/src/io/export/serialize-footnotes.ts +394 -0
  59. package/src/io/export/serialize-headers-footers.ts +368 -0
  60. package/src/io/export/serialize-main-document.ts +1342 -0
  61. package/src/io/export/serialize-numbering.ts +218 -0
  62. package/src/io/export/serialize-revisions.ts +389 -0
  63. package/src/io/export/serialize-runtime-revisions.ts +463 -0
  64. package/src/io/export/serialize-tables.ts +174 -0
  65. package/src/io/export/split-review-boundaries.ts +356 -0
  66. package/src/io/export/split-story-blocks-for-runtime-revisions.ts +252 -0
  67. package/src/io/export/table-properties-xml.ts +318 -0
  68. package/src/io/normalize/README.md +3 -0
  69. package/src/io/normalize/normalize-text.ts +670 -0
  70. package/src/io/ooxml/README.md +3 -0
  71. package/src/io/ooxml/highlight-colors.ts +39 -0
  72. package/src/io/ooxml/numbering-sentinels.ts +44 -0
  73. package/src/io/ooxml/parse-comments.ts +852 -0
  74. package/src/io/ooxml/parse-complex-content.ts +287 -0
  75. package/src/io/ooxml/parse-fields.ts +834 -0
  76. package/src/io/ooxml/parse-footnotes.ts +952 -0
  77. package/src/io/ooxml/parse-headers-footers.ts +1212 -0
  78. package/src/io/ooxml/parse-inline-media.ts +461 -0
  79. package/src/io/ooxml/parse-main-document.ts +2947 -0
  80. package/src/io/ooxml/parse-numbering.ts +747 -0
  81. package/src/io/ooxml/parse-revisions.ts +1045 -0
  82. package/src/io/ooxml/parse-settings.ts +184 -0
  83. package/src/io/ooxml/parse-shapes.ts +296 -0
  84. package/src/io/ooxml/parse-styles.ts +639 -0
  85. package/src/io/ooxml/parse-tables.ts +627 -0
  86. package/src/io/ooxml/parse-theme.ts +346 -0
  87. package/src/io/ooxml/part-manifest.ts +136 -0
  88. package/src/io/ooxml/revision-boundaries.ts +475 -0
  89. package/src/io/ooxml/workflow-payload.ts +544 -0
  90. package/src/io/opc/README.md +3 -0
  91. package/src/io/opc/corrupt-package.ts +166 -0
  92. package/src/io/opc/docx-package.ts +74 -0
  93. package/src/io/opc/package-reader.ts +325 -0
  94. package/src/io/opc/package-writer.ts +273 -0
  95. package/src/io/source-package-provenance.ts +241 -0
  96. package/{dist/chunk-RMH72RZI.js → src/legal/bookmarks.ts} +130 -44
  97. package/src/legal/cross-references.ts +414 -0
  98. package/src/legal/defined-terms.ts +203 -0
  99. package/src/legal/index.ts +32 -0
  100. package/src/legal/signature-blocks.ts +259 -0
  101. package/src/model/README.md +3 -0
  102. package/src/model/canonical-document.ts +2722 -0
  103. package/src/model/cds-1.0.0.ts +212 -0
  104. package/src/model/snapshot.ts +760 -0
  105. package/src/preservation/README.md +3 -0
  106. package/src/preservation/markup-compatibility.ts +48 -0
  107. package/src/preservation/opaque-fragment-store.ts +89 -0
  108. package/src/preservation/opaque-region.ts +233 -0
  109. package/src/preservation/package-preservation.ts +113 -0
  110. package/src/preservation/preserved-part-manifest.ts +56 -0
  111. package/src/preservation/relationship-retention.ts +57 -0
  112. package/src/preservation/store.ts +255 -0
  113. package/src/review/README.md +16 -0
  114. package/src/review/store/README.md +3 -0
  115. package/src/review/store/comment-anchors.ts +70 -0
  116. package/src/review/store/comment-remapping.ts +154 -0
  117. package/src/review/store/comment-store.ts +349 -0
  118. package/src/review/store/comment-thread.ts +109 -0
  119. package/src/review/store/revision-actions.ts +423 -0
  120. package/src/review/store/revision-store.ts +323 -0
  121. package/src/review/store/revision-types.ts +182 -0
  122. package/src/review/store/runtime-comment-store.ts +43 -0
  123. package/src/runtime/README.md +3 -0
  124. package/src/runtime/ai-action-policy.ts +764 -0
  125. package/src/runtime/context-analytics.ts +824 -0
  126. package/src/runtime/document-layout.ts +332 -0
  127. package/src/runtime/document-locations.ts +521 -0
  128. package/src/runtime/document-navigation.ts +616 -0
  129. package/src/runtime/document-outline.ts +440 -0
  130. package/src/runtime/document-runtime.ts +4055 -0
  131. package/src/runtime/document-search.ts +145 -0
  132. package/src/runtime/event-refresh-hints.ts +137 -0
  133. package/src/runtime/numbering-prefix.ts +244 -0
  134. package/src/runtime/page-layout-estimation.ts +305 -0
  135. package/src/runtime/read-only-diagnostics-runtime.ts +241 -0
  136. package/src/runtime/resolved-numbering-geometry.ts +293 -0
  137. package/src/runtime/review-runtime.ts +44 -0
  138. package/src/runtime/revision-runtime.ts +107 -0
  139. package/src/runtime/session-capabilities.ts +192 -0
  140. package/src/runtime/story-context.ts +164 -0
  141. package/src/runtime/story-targeting.ts +162 -0
  142. package/src/runtime/suggestions-snapshot.ts +137 -0
  143. package/src/runtime/surface-projection.ts +1553 -0
  144. package/src/runtime/table-commands.ts +173 -0
  145. package/src/runtime/table-schema.ts +309 -0
  146. package/src/runtime/table-style-resolver.ts +409 -0
  147. package/src/runtime/view-state.ts +493 -0
  148. package/src/runtime/virtualized-rendering.ts +258 -0
  149. package/src/runtime/workflow-markup.ts +393 -0
  150. package/src/ui/README.md +30 -0
  151. package/src/ui/WordReviewEditor.tsx +5268 -0
  152. package/src/ui/browser-export.ts +52 -0
  153. package/src/ui/comments/README.md +3 -0
  154. package/src/ui/compatibility/README.md +3 -0
  155. package/src/ui/editor-command-bag.ts +127 -0
  156. package/src/ui/editor-runtime-boundary.ts +1558 -0
  157. package/src/ui/editor-shell-view.tsx +144 -0
  158. package/src/ui/editor-surface/README.md +3 -0
  159. package/src/ui/editor-surface-controller.tsx +66 -0
  160. package/src/ui/headless/comment-decoration-model.ts +124 -0
  161. package/src/ui/headless/preserve-editor-selection.ts +5 -0
  162. package/src/ui/headless/revision-decoration-model.ts +128 -0
  163. package/src/ui/headless/selection-helpers.ts +54 -0
  164. package/src/ui/headless/selection-tool-context.ts +19 -0
  165. package/src/ui/headless/selection-tool-resolver.ts +752 -0
  166. package/src/ui/headless/selection-tool-types.ts +129 -0
  167. package/src/ui/headless/selection-toolbar-model.ts +11 -0
  168. package/src/ui/headless/use-editor-keyboard.ts +103 -0
  169. package/src/ui/review/README.md +3 -0
  170. package/src/ui/runtime-shortcut-dispatch.ts +365 -0
  171. package/src/ui/runtime-snapshot-selectors.ts +197 -0
  172. package/src/ui/shared/revision-filters.ts +31 -0
  173. package/src/ui/status/README.md +3 -0
  174. package/src/ui/theme/README.md +3 -0
  175. package/src/ui/toolbar/README.md +3 -0
  176. package/src/ui/workflow-surface-blocked-rails.ts +94 -0
  177. package/src/ui-tailwind/chrome/chrome-preset-model.ts +107 -0
  178. package/src/ui-tailwind/chrome/chrome-preset-toolbar.tsx +15 -0
  179. package/src/ui-tailwind/chrome/review-queue-bar.tsx +97 -0
  180. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +64 -0
  181. package/src/ui-tailwind/chrome/tw-context-analytics-summary.tsx +122 -0
  182. package/src/ui-tailwind/chrome/tw-image-context-toolbar.tsx +121 -0
  183. package/src/ui-tailwind/chrome/tw-layout-panel.tsx +114 -0
  184. package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +30 -0
  185. package/src/ui-tailwind/chrome/tw-page-ruler.tsx +365 -0
  186. package/src/ui-tailwind/chrome/tw-selection-tool-blocked.tsx +23 -0
  187. package/src/ui-tailwind/chrome/tw-selection-tool-comment.tsx +35 -0
  188. package/src/ui-tailwind/chrome/tw-selection-tool-formatting.tsx +37 -0
  189. package/src/ui-tailwind/chrome/tw-selection-tool-host.tsx +298 -0
  190. package/src/ui-tailwind/chrome/tw-selection-tool-structure.tsx +116 -0
  191. package/src/ui-tailwind/chrome/tw-selection-tool-suggestion.tsx +29 -0
  192. package/src/ui-tailwind/chrome/tw-selection-tool-workflow.tsx +27 -0
  193. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +186 -0
  194. package/src/ui-tailwind/chrome/tw-suggestion-card.tsx +139 -0
  195. package/src/ui-tailwind/chrome/tw-table-context-toolbar.tsx +200 -0
  196. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +58 -0
  197. package/src/ui-tailwind/chrome/use-before-unload.ts +20 -0
  198. package/src/ui-tailwind/editor-surface/perf-probe.ts +179 -0
  199. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +189 -0
  200. package/src/ui-tailwind/editor-surface/pm-contextual-ui.ts +31 -0
  201. package/src/ui-tailwind/editor-surface/pm-decorations.ts +411 -0
  202. package/src/ui-tailwind/editor-surface/pm-position-map.ts +123 -0
  203. package/src/ui-tailwind/editor-surface/pm-schema.ts +927 -0
  204. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +567 -0
  205. package/src/ui-tailwind/editor-surface/search-plugin.ts +168 -0
  206. package/src/ui-tailwind/editor-surface/surface-build-keys.ts +65 -0
  207. package/src/ui-tailwind/editor-surface/tw-caret.tsx +12 -0
  208. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +150 -0
  209. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +129 -0
  210. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +58 -0
  211. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +151 -0
  212. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +1047 -0
  213. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +111 -0
  214. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +503 -0
  215. package/src/ui-tailwind/index.ts +62 -0
  216. package/src/ui-tailwind/page-chrome-model.ts +27 -0
  217. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +406 -0
  218. package/src/ui-tailwind/review/tw-health-panel.tsx +149 -0
  219. package/src/ui-tailwind/review/tw-review-rail.tsx +122 -0
  220. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +164 -0
  221. package/src/ui-tailwind/status/tw-status-bar.tsx +65 -0
  222. package/{dist → src}/ui-tailwind/theme/editor-theme.css +58 -40
  223. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +52 -0
  224. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +1133 -0
  225. package/src/ui-tailwind/tw-review-workspace.tsx +1460 -0
  226. package/src/validation/README.md +3 -0
  227. package/src/validation/compatibility-engine.ts +878 -0
  228. package/src/validation/compatibility-report.ts +161 -0
  229. package/src/validation/diagnostics.ts +204 -0
  230. package/src/validation/docx-comment-proof.ts +720 -0
  231. package/src/validation/import-diagnostics.ts +128 -0
  232. package/src/validation/low-priority-word-surfaces.ts +373 -0
  233. package/dist/canonical-document-BLEbzL2J.d.cts +0 -844
  234. package/dist/canonical-document-BLEbzL2J.d.ts +0 -844
  235. package/dist/chunk-2FJS5GZM.js +0 -763
  236. package/dist/chunk-2FJS5GZM.js.map +0 -1
  237. package/dist/chunk-2OQBZS3F.js +0 -446
  238. package/dist/chunk-2OQBZS3F.js.map +0 -1
  239. package/dist/chunk-2S7W4KFO.js +0 -127
  240. package/dist/chunk-2S7W4KFO.js.map +0 -1
  241. package/dist/chunk-2TG72QSW.js +0 -3874
  242. package/dist/chunk-2TG72QSW.js.map +0 -1
  243. package/dist/chunk-36QNIZBO.js +0 -532
  244. package/dist/chunk-36QNIZBO.js.map +0 -1
  245. package/dist/chunk-4AQOYAW4.js +0 -3069
  246. package/dist/chunk-4AQOYAW4.js.map +0 -1
  247. package/dist/chunk-4D5EWJ3P.js +0 -77
  248. package/dist/chunk-4D5EWJ3P.js.map +0 -1
  249. package/dist/chunk-5FN54NDH.js +0 -2257
  250. package/dist/chunk-5FN54NDH.js.map +0 -1
  251. package/dist/chunk-BOYGQYRQ.js +0 -7306
  252. package/dist/chunk-BOYGQYRQ.js.map +0 -1
  253. package/dist/chunk-CN3XMECL.js +0 -212
  254. package/dist/chunk-CN3XMECL.js.map +0 -1
  255. package/dist/chunk-EBI3BX6U.js +0 -164
  256. package/dist/chunk-EBI3BX6U.js.map +0 -1
  257. package/dist/chunk-EILUG3VB.js +0 -1275
  258. package/dist/chunk-EILUG3VB.js.map +0 -1
  259. package/dist/chunk-FUDY333O.js +0 -70
  260. package/dist/chunk-FUDY333O.js.map +0 -1
  261. package/dist/chunk-GBVOWFIK.js +0 -1237
  262. package/dist/chunk-GBVOWFIK.js.map +0 -1
  263. package/dist/chunk-H4TQ3H3Y.js +0 -262
  264. package/dist/chunk-H4TQ3H3Y.js.map +0 -1
  265. package/dist/chunk-JGB3IXZO.js +0 -189
  266. package/dist/chunk-JGB3IXZO.js.map +0 -1
  267. package/dist/chunk-KD2QRQPY.js +0 -4342
  268. package/dist/chunk-KD2QRQPY.js.map +0 -1
  269. package/dist/chunk-KLMXQVYK.js +0 -369
  270. package/dist/chunk-KLMXQVYK.js.map +0 -1
  271. package/dist/chunk-KZUG5KFQ.js +0 -214
  272. package/dist/chunk-KZUG5KFQ.js.map +0 -1
  273. package/dist/chunk-QDAQ4CJU.js +0 -345
  274. package/dist/chunk-QDAQ4CJU.js.map +0 -1
  275. package/dist/chunk-RMH72RZI.js.map +0 -1
  276. package/dist/chunk-SWKWQZXM.js +0 -117
  277. package/dist/chunk-SWKWQZXM.js.map +0 -1
  278. package/dist/chunk-TJBP2K4T.js.map +0 -1
  279. package/dist/chunk-TLCEAQDQ.js +0 -542
  280. package/dist/chunk-TLCEAQDQ.js.map +0 -1
  281. package/dist/chunk-UZXBISGO.js.map +0 -1
  282. package/dist/chunk-WGBAKP3Q.js +0 -3220
  283. package/dist/chunk-WGBAKP3Q.js.map +0 -1
  284. package/dist/compare/index.cjs +0 -5475
  285. package/dist/compare/index.cjs.map +0 -1
  286. package/dist/compare/index.d.cts +0 -114
  287. package/dist/compare/index.d.ts +0 -114
  288. package/dist/compare/index.js +0 -731
  289. package/dist/compare/index.js.map +0 -1
  290. package/dist/core/commands/formatting-commands.cjs +0 -828
  291. package/dist/core/commands/formatting-commands.cjs.map +0 -1
  292. package/dist/core/commands/formatting-commands.d.cts +0 -63
  293. package/dist/core/commands/formatting-commands.d.ts +0 -63
  294. package/dist/core/commands/formatting-commands.js +0 -37
  295. package/dist/core/commands/formatting-commands.js.map +0 -1
  296. package/dist/core/commands/image-commands.cjs +0 -2023
  297. package/dist/core/commands/image-commands.cjs.map +0 -1
  298. package/dist/core/commands/image-commands.d.cts +0 -58
  299. package/dist/core/commands/image-commands.d.ts +0 -58
  300. package/dist/core/commands/image-commands.js +0 -18
  301. package/dist/core/commands/image-commands.js.map +0 -1
  302. package/dist/core/commands/section-layout-commands.cjs.map +0 -1
  303. package/dist/core/commands/section-layout-commands.d.cts +0 -62
  304. package/dist/core/commands/section-layout-commands.d.ts +0 -62
  305. package/dist/core/commands/section-layout-commands.js +0 -21
  306. package/dist/core/commands/section-layout-commands.js.map +0 -1
  307. package/dist/core/commands/style-commands.cjs.map +0 -1
  308. package/dist/core/commands/style-commands.d.cts +0 -13
  309. package/dist/core/commands/style-commands.d.ts +0 -13
  310. package/dist/core/commands/style-commands.js +0 -9
  311. package/dist/core/commands/style-commands.js.map +0 -1
  312. package/dist/core/commands/table-structure-commands.cjs +0 -1883
  313. package/dist/core/commands/table-structure-commands.cjs.map +0 -1
  314. package/dist/core/commands/table-structure-commands.d.cts +0 -59
  315. package/dist/core/commands/table-structure-commands.d.ts +0 -59
  316. package/dist/core/commands/table-structure-commands.js +0 -12
  317. package/dist/core/commands/table-structure-commands.js.map +0 -1
  318. package/dist/core/commands/text-commands.cjs +0 -2391
  319. package/dist/core/commands/text-commands.cjs.map +0 -1
  320. package/dist/core/commands/text-commands.d.cts +0 -24
  321. package/dist/core/commands/text-commands.d.ts +0 -24
  322. package/dist/core/commands/text-commands.js +0 -28
  323. package/dist/core/commands/text-commands.js.map +0 -1
  324. package/dist/core/selection/mapping.cjs +0 -200
  325. package/dist/core/selection/mapping.cjs.map +0 -1
  326. package/dist/core/selection/mapping.d.cts +0 -2
  327. package/dist/core/selection/mapping.d.ts +0 -2
  328. package/dist/core/selection/mapping.js +0 -31
  329. package/dist/core/selection/mapping.js.map +0 -1
  330. package/dist/core/state/editor-state.cjs +0 -2278
  331. package/dist/core/state/editor-state.cjs.map +0 -1
  332. package/dist/core/state/editor-state.d.cts +0 -2
  333. package/dist/core/state/editor-state.d.ts +0 -2
  334. package/dist/core/state/editor-state.js +0 -26
  335. package/dist/core/state/editor-state.js.map +0 -1
  336. package/dist/index.cjs +0 -38553
  337. package/dist/index.cjs.map +0 -1
  338. package/dist/index.d.cts +0 -15
  339. package/dist/index.d.ts +0 -15
  340. package/dist/index.js +0 -7856
  341. package/dist/index.js.map +0 -1
  342. package/dist/io/docx-session.cjs +0 -16236
  343. package/dist/io/docx-session.cjs.map +0 -1
  344. package/dist/io/docx-session.d.cts +0 -21
  345. package/dist/io/docx-session.d.ts +0 -21
  346. package/dist/io/docx-session.js +0 -18
  347. package/dist/io/docx-session.js.map +0 -1
  348. package/dist/legal/index.cjs +0 -3900
  349. package/dist/legal/index.cjs.map +0 -1
  350. package/dist/legal/index.d.cts +0 -86
  351. package/dist/legal/index.d.ts +0 -86
  352. package/dist/legal/index.js +0 -616
  353. package/dist/legal/index.js.map +0 -1
  354. package/dist/public-types-7ZL_94cz.d.ts +0 -1573
  355. package/dist/public-types-CeMaDueh.d.cts +0 -1573
  356. package/dist/public-types.cjs +0 -19
  357. package/dist/public-types.cjs.map +0 -1
  358. package/dist/public-types.d.cts +0 -2
  359. package/dist/public-types.d.ts +0 -2
  360. package/dist/public-types.js +0 -1
  361. package/dist/public-types.js.map +0 -1
  362. package/dist/runtime/document-runtime.cjs +0 -11140
  363. package/dist/runtime/document-runtime.cjs.map +0 -1
  364. package/dist/runtime/document-runtime.d.cts +0 -231
  365. package/dist/runtime/document-runtime.d.ts +0 -231
  366. package/dist/runtime/document-runtime.js +0 -21
  367. package/dist/runtime/document-runtime.js.map +0 -1
  368. package/dist/structural-helpers-CilgOVhh.d.cts +0 -10
  369. package/dist/structural-helpers-q0Gd-eBN.d.ts +0 -10
  370. package/dist/ui-tailwind/editor-surface/search-plugin.cjs +0 -313
  371. package/dist/ui-tailwind/editor-surface/search-plugin.cjs.map +0 -1
  372. package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +0 -67
  373. package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +0 -67
  374. package/dist/ui-tailwind/editor-surface/search-plugin.js +0 -23
  375. package/dist/ui-tailwind/editor-surface/search-plugin.js.map +0 -1
  376. package/dist/ui-tailwind/index.cjs +0 -4833
  377. package/dist/ui-tailwind/index.cjs.map +0 -1
  378. package/dist/ui-tailwind/index.d.cts +0 -617
  379. package/dist/ui-tailwind/index.d.ts +0 -617
  380. package/dist/ui-tailwind/index.js +0 -575
  381. package/dist/ui-tailwind/index.js.map +0 -1
@@ -0,0 +1,145 @@
1
+ import type {
2
+ DocumentNavigationSnapshot,
3
+ EditorStoryTarget,
4
+ SearchOptions,
5
+ SearchResultSnapshot,
6
+ SelectionSnapshot,
7
+ } from "../api/public-types";
8
+ import {
9
+ MAIN_STORY_TARGET,
10
+ storyTargetsEqual,
11
+ } from "../core/selection/mapping.ts";
12
+ import {
13
+ createSelectionSnapshot,
14
+ type CanonicalDocumentEnvelope,
15
+ } from "../core/state/editor-state.ts";
16
+ import {
17
+ searchSecondaryStories,
18
+ searchSurfaceBlocks,
19
+ } from "../core/search/search-text.ts";
20
+ import { findPageForOffset } from "./document-navigation.ts";
21
+ import {
22
+ buildResolvedSections,
23
+ resolveSectionForStoryTarget,
24
+ } from "./document-layout.ts";
25
+ import { createEditorSurfaceSnapshot } from "./surface-projection.ts";
26
+
27
+ export function searchDocument(
28
+ document: CanonicalDocumentEnvelope,
29
+ selection: SelectionSnapshot,
30
+ activeStory: EditorStoryTarget,
31
+ navigation: DocumentNavigationSnapshot,
32
+ query: string,
33
+ options: SearchOptions = {},
34
+ ): SearchResultSnapshot[] {
35
+ const normalizedQuery = query.trim();
36
+ if (!normalizedQuery) {
37
+ return [];
38
+ }
39
+
40
+ const mainSurface = createEditorSurfaceSnapshot(
41
+ document,
42
+ createSelectionSnapshot(selection.anchor, selection.head),
43
+ MAIN_STORY_TARGET,
44
+ );
45
+ const sections = buildResolvedSections(document);
46
+ const combined: SearchResultSnapshot[] = [];
47
+
48
+ for (const match of searchSurfaceBlocks(mainSurface.blocks, normalizedQuery, options)) {
49
+ const pageIndex = findPageForOffset(navigation.pages, match.from);
50
+ combined.push({
51
+ resultId: `search-main-${combined.length}`,
52
+ anchor: {
53
+ kind: "range",
54
+ from: match.from,
55
+ to: match.to,
56
+ assoc: {
57
+ start: -1,
58
+ end: 1,
59
+ },
60
+ },
61
+ excerpt: match.excerpt,
62
+ isActive: false,
63
+ storyTarget: MAIN_STORY_TARGET,
64
+ sectionIndex: navigation.pages[pageIndex]?.sectionIndex ?? 0,
65
+ pageIndex,
66
+ });
67
+ }
68
+
69
+ for (const match of searchSecondaryStories(
70
+ mainSurface.secondaryStories,
71
+ normalizedQuery,
72
+ options,
73
+ )) {
74
+ const section = resolveSectionForStoryTarget(
75
+ document,
76
+ sections,
77
+ match.storyTarget,
78
+ );
79
+ const pageIndex =
80
+ section === undefined
81
+ ? undefined
82
+ : navigation.pages.find((page) => page.sectionIndex === section.index)
83
+ ?.pageIndex ?? 0;
84
+
85
+ combined.push({
86
+ resultId: `search-secondary-${combined.length}`,
87
+ anchor: {
88
+ kind: "range",
89
+ from: match.from,
90
+ to: match.to,
91
+ assoc: {
92
+ start: -1,
93
+ end: 1,
94
+ },
95
+ },
96
+ excerpt: match.excerpt,
97
+ isActive: false,
98
+ storyTarget: match.storyTarget,
99
+ ...(section ? { sectionIndex: section.index } : {}),
100
+ ...(pageIndex !== undefined ? { pageIndex } : {}),
101
+ });
102
+ }
103
+
104
+ const limited = combined.slice(0, options.limit ?? Number.POSITIVE_INFINITY);
105
+ const activeIndex = getActiveSearchResultIndex(limited, selection, activeStory);
106
+
107
+ return limited.map((result, index) => ({
108
+ ...result,
109
+ isActive: index === activeIndex,
110
+ }));
111
+ }
112
+
113
+ function getActiveSearchResultIndex(
114
+ results: readonly SearchResultSnapshot[],
115
+ selection: SelectionSnapshot,
116
+ activeStory: EditorStoryTarget,
117
+ ): number {
118
+ if (results.length === 0) {
119
+ return -1;
120
+ }
121
+
122
+ const selectionFrom = Math.min(selection.anchor, selection.head);
123
+ const selectionTo = Math.max(selection.anchor, selection.head);
124
+ const activeIndex = results.findIndex((result) => {
125
+ if (!result.storyTarget || !storyTargetsEqual(result.storyTarget, activeStory)) {
126
+ return false;
127
+ }
128
+
129
+ if (result.anchor.kind !== "range") {
130
+ return false;
131
+ }
132
+
133
+ if (selectionFrom === selectionTo) {
134
+ return (
135
+ selectionFrom >= result.anchor.from && selectionFrom <= result.anchor.to
136
+ );
137
+ }
138
+
139
+ return (
140
+ selectionFrom < result.anchor.to && selectionTo > result.anchor.from
141
+ );
142
+ });
143
+
144
+ return activeIndex >= 0 ? activeIndex : 0;
145
+ }
@@ -0,0 +1,137 @@
1
+ import type { SnapshotRefreshHints, WordReviewEditorEvent } from "../api/public-types";
2
+
3
+ export function describeEventImpact(
4
+ event: WordReviewEditorEvent,
5
+ ): SnapshotRefreshHints {
6
+ switch (event.type) {
7
+ case "selection_changed":
8
+ return {
9
+ invalidate: ["selection", "locations", "contextAnalytics"],
10
+ staleTargets: ["selection_only"],
11
+ changeKinds: ["selection"],
12
+ };
13
+ case "story_changed":
14
+ return {
15
+ invalidate: ["selection", "render", "locations", "outline", "sections", "contextAnalytics"],
16
+ staleTargets: ["anchors"],
17
+ changeKinds: ["selection", "structure"],
18
+ };
19
+ case "workflow_overlay_changed":
20
+ case "workflow_active_work_item_changed":
21
+ return {
22
+ invalidate: [
23
+ "workflowScope",
24
+ "workflowMarkup",
25
+ "locations",
26
+ "reviewWork",
27
+ "chunks",
28
+ "contextAnalytics",
29
+ ],
30
+ staleTargets: ["anchors"],
31
+ changeKinds: ["workflow"],
32
+ };
33
+ case "workflow_metadata_changed":
34
+ return {
35
+ invalidate: ["workflowMarkup", "render", "locations", "reviewWork", "chunks"],
36
+ staleTargets: ["anchors"],
37
+ changeKinds: ["workflow"],
38
+ };
39
+ case "change_authored":
40
+ case "change_accepted":
41
+ case "change_rejected":
42
+ case "suggestion_authored":
43
+ case "suggestion_updated":
44
+ case "comment_added":
45
+ case "comment_resolved":
46
+ return {
47
+ invalidate: [
48
+ "render",
49
+ "comments",
50
+ "trackedChanges",
51
+ "navigation",
52
+ "outline",
53
+ "toc",
54
+ "sections",
55
+ "locations",
56
+ "reviewWork",
57
+ "chunks",
58
+ "textStream",
59
+ "contextAnalytics",
60
+ ],
61
+ staleTargets: ["search_results", "anchors"],
62
+ changeKinds: ["content", "review", "structure"],
63
+ };
64
+ case "warning_added":
65
+ case "warning_cleared":
66
+ case "error":
67
+ return {
68
+ invalidate: ["render", "contextAnalytics"],
69
+ staleTargets: ["none"],
70
+ changeKinds: ["content"],
71
+ };
72
+ case "snapshot_saved":
73
+ return {
74
+ invalidate: [],
75
+ staleTargets: ["none"],
76
+ changeKinds: ["checkpoint"],
77
+ checkpointType: "snapshot",
78
+ };
79
+ case "session_saved":
80
+ return {
81
+ invalidate: [],
82
+ staleTargets: ["none"],
83
+ changeKinds: ["checkpoint"],
84
+ checkpointType: "session",
85
+ };
86
+ case "export_completed":
87
+ return {
88
+ invalidate: [],
89
+ staleTargets: ["none"],
90
+ changeKinds: ["checkpoint"],
91
+ checkpointType: "export",
92
+ };
93
+ case "command_blocked":
94
+ return {
95
+ invalidate: ["workflowScope", "locations", "contextAnalytics"],
96
+ staleTargets: ["anchors"],
97
+ changeKinds: ["workflow"],
98
+ };
99
+ case "ready":
100
+ return {
101
+ invalidate: [
102
+ "render",
103
+ "navigation",
104
+ "outline",
105
+ "toc",
106
+ "sections",
107
+ "locations",
108
+ "reviewWork",
109
+ "chunks",
110
+ "textStream",
111
+ "contextAnalytics",
112
+ ],
113
+ staleTargets: ["none"],
114
+ changeKinds: ["structure"],
115
+ };
116
+ case "context_analytics_changed":
117
+ return {
118
+ invalidate: ["contextAnalytics"],
119
+ staleTargets: ["none"],
120
+ changeKinds: ["selection", "content", "review", "workflow"],
121
+ };
122
+ case "dirty_changed":
123
+ case "autosave_state":
124
+ case "host_annotation_overlay_changed":
125
+ return {
126
+ invalidate: ["render"],
127
+ staleTargets: ["none"],
128
+ changeKinds: ["checkpoint"],
129
+ };
130
+ }
131
+
132
+ return {
133
+ invalidate: ["render"],
134
+ staleTargets: ["none"],
135
+ changeKinds: ["content"],
136
+ };
137
+ }
@@ -0,0 +1,244 @@
1
+ import type {
2
+ NumberingCatalog,
3
+ NumberingLevelDefinition,
4
+ ParagraphNode,
5
+ } from "../model/canonical-document.ts";
6
+ import {
7
+ DEFAULT_NUMBERING_START_AT,
8
+ resolveNumberingDefinitionSet,
9
+ type ResolvedNumberingGeometry,
10
+ } from "./resolved-numbering-geometry.ts";
11
+
12
+ interface NumberingSequenceState {
13
+ counters: Array<number | undefined>;
14
+ lastLevel: number | null;
15
+ }
16
+
17
+ export interface NumberingPrefixResult {
18
+ text: string | null;
19
+ level: number;
20
+ format: string;
21
+ startAt: number;
22
+ suffix?: "tab" | "space" | "nothing";
23
+ paragraphStyleId?: string;
24
+ isLegalNumbering?: boolean;
25
+ geometry: ResolvedNumberingGeometry;
26
+ }
27
+
28
+ export interface NumberingPrefixResolver {
29
+ resolve(numbering: ParagraphNode["numbering"] | undefined): string | null;
30
+ resolveDetailed(
31
+ numbering: ParagraphNode["numbering"] | undefined,
32
+ paragraph?: ParagraphNode,
33
+ ): NumberingPrefixResult | null;
34
+ resolveParagraph(paragraph: ParagraphNode): NumberingPrefixResult | null;
35
+ }
36
+
37
+ export function createNumberingPrefixResolver(
38
+ catalog: NumberingCatalog,
39
+ ): NumberingPrefixResolver {
40
+ const sequenceStates = new Map<string, NumberingSequenceState>();
41
+
42
+ function resolveInternal(
43
+ numbering: ParagraphNode["numbering"] | undefined,
44
+ paragraph?: ParagraphNode,
45
+ ): NumberingPrefixResult | null {
46
+ const resolved = resolveNumberingDefinitionSet(
47
+ catalog,
48
+ paragraph?.numbering ?? numbering,
49
+ paragraph,
50
+ );
51
+ if (!resolved) {
52
+ return null;
53
+ }
54
+
55
+ const resolvedNumbering = paragraph?.numbering ?? numbering;
56
+ if (!resolvedNumbering) {
57
+ return null;
58
+ }
59
+
60
+ const sequenceState = getSequenceState(sequenceStates, resolvedNumbering.numberingInstanceId);
61
+ advanceSequence(sequenceState, resolved.effectiveLevel.level, resolved.effectiveLevels);
62
+
63
+ // When isLegalNumbering is true, use decimal format for all referenced levels
64
+ const effectiveLevelDefs = resolved.effectiveLevel.isLegalNumbering
65
+ ? new Map(
66
+ Array.from(resolved.effectiveLevels.entries()).map(([level, definition]) => [
67
+ level,
68
+ { ...definition, format: "decimal" },
69
+ ]),
70
+ )
71
+ : resolved.effectiveLevels;
72
+
73
+ const text = renderLevelText(
74
+ resolved.effectiveLevel.text,
75
+ sequenceState.counters,
76
+ effectiveLevelDefs,
77
+ );
78
+ if (resolved.effectiveLevel.format !== "none" && text === null) {
79
+ return null;
80
+ }
81
+ const visibleText = resolved.effectiveLevel.format === "none" ? null : text;
82
+
83
+ return {
84
+ text: visibleText,
85
+ level: resolved.effectiveLevel.level,
86
+ format: resolved.effectiveLevel.format,
87
+ startAt: resolved.effectiveLevel.startAt ?? DEFAULT_NUMBERING_START_AT,
88
+ ...(resolved.effectiveLevel.suffix ? { suffix: resolved.effectiveLevel.suffix } : {}),
89
+ ...(resolved.effectiveLevel.paragraphStyleId
90
+ ? { paragraphStyleId: resolved.effectiveLevel.paragraphStyleId }
91
+ : {}),
92
+ ...(resolved.effectiveLevel.isLegalNumbering ? { isLegalNumbering: true } : {}),
93
+ geometry: resolved.geometry,
94
+ };
95
+ }
96
+
97
+ return {
98
+ resolve(numbering) {
99
+ const result = resolveInternal(numbering);
100
+ return result?.text ?? null;
101
+ },
102
+ resolveDetailed(numbering, paragraph) {
103
+ return resolveInternal(numbering, paragraph);
104
+ },
105
+ resolveParagraph(paragraph) {
106
+ return resolveInternal(paragraph.numbering, paragraph);
107
+ },
108
+ };
109
+ }
110
+
111
+ function getSequenceState(
112
+ states: Map<string, NumberingSequenceState>,
113
+ numberingInstanceId: string,
114
+ ): NumberingSequenceState {
115
+ const existing = states.get(numberingInstanceId);
116
+ if (existing) {
117
+ return existing;
118
+ }
119
+
120
+ const created: NumberingSequenceState = {
121
+ counters: [],
122
+ lastLevel: null,
123
+ };
124
+ states.set(numberingInstanceId, created);
125
+ return created;
126
+ }
127
+
128
+ function advanceSequence(
129
+ state: NumberingSequenceState,
130
+ currentLevel: number,
131
+ levelDefinitions: Map<number, NumberingLevelDefinition>,
132
+ ): void {
133
+ if (state.lastLevel !== null && currentLevel <= state.lastLevel) {
134
+ state.counters.length = currentLevel + 1;
135
+ }
136
+
137
+ const startAt = getLevelStartAt(currentLevel, levelDefinitions);
138
+ const currentValue = state.counters[currentLevel];
139
+ state.counters[currentLevel] =
140
+ currentValue === undefined ? startAt : currentValue + 1;
141
+ state.lastLevel = currentLevel;
142
+ }
143
+
144
+ function getLevelStartAt(
145
+ level: number,
146
+ levelDefinitions: Map<number, NumberingLevelDefinition>,
147
+ ): number {
148
+ return levelDefinitions.get(level)?.startAt ?? DEFAULT_NUMBERING_START_AT;
149
+ }
150
+
151
+ function renderLevelText(
152
+ text: string,
153
+ counters: Array<number | undefined>,
154
+ levelDefinitions: Map<number, NumberingLevelDefinition>,
155
+ ): string | null {
156
+ if (!text) {
157
+ return null;
158
+ }
159
+
160
+ if (!text.includes("%")) {
161
+ return text;
162
+ }
163
+
164
+ const rendered = text.replace(/%([1-9])/g, (_match, token) => {
165
+ const level = Number.parseInt(token, 10) - 1;
166
+ const counter = counters[level];
167
+ if (counter === undefined) {
168
+ return "";
169
+ }
170
+
171
+ const format = levelDefinitions.get(level)?.format ?? "decimal";
172
+ return formatCounter(counter, format);
173
+ });
174
+
175
+ return rendered.trim().length > 0 ? rendered : null;
176
+ }
177
+
178
+ function formatCounter(value: number, format: string): string {
179
+ switch (format) {
180
+ case "decimal":
181
+ return String(value);
182
+ case "decimalZero":
183
+ return String(value).padStart(2, "0");
184
+ case "upperLetter":
185
+ return toAlphabetic(value).toUpperCase();
186
+ case "lowerLetter":
187
+ return toAlphabetic(value).toLowerCase();
188
+ case "upperRoman":
189
+ return toRoman(value).toUpperCase();
190
+ case "lowerRoman":
191
+ return toRoman(value).toLowerCase();
192
+ case "none":
193
+ return "";
194
+ default:
195
+ return String(value);
196
+ }
197
+ }
198
+
199
+ function toAlphabetic(value: number): string {
200
+ if (value <= 0) {
201
+ return String(value);
202
+ }
203
+
204
+ let remainder = value;
205
+ let result = "";
206
+ while (remainder > 0) {
207
+ remainder -= 1;
208
+ result = String.fromCharCode(65 + (remainder % 26)) + result;
209
+ remainder = Math.floor(remainder / 26);
210
+ }
211
+ return result;
212
+ }
213
+
214
+ function toRoman(value: number): string {
215
+ if (value <= 0 || value >= 4000) {
216
+ return String(value);
217
+ }
218
+
219
+ const numerals: Array<[number, string]> = [
220
+ [1000, "M"],
221
+ [900, "CM"],
222
+ [500, "D"],
223
+ [400, "CD"],
224
+ [100, "C"],
225
+ [90, "XC"],
226
+ [50, "L"],
227
+ [40, "XL"],
228
+ [10, "X"],
229
+ [9, "IX"],
230
+ [5, "V"],
231
+ [4, "IV"],
232
+ [1, "I"],
233
+ ];
234
+
235
+ let remaining = value;
236
+ let result = "";
237
+ for (const [amount, numeral] of numerals) {
238
+ while (remaining >= amount) {
239
+ remaining -= amount;
240
+ result += numeral;
241
+ }
242
+ }
243
+ return result;
244
+ }