@stll/folio-core 0.0.1-placeholder.0 → 0.1.0

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 (683) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE.md +29 -0
  3. package/README.md +41 -0
  4. package/dist/_virtual/_rolldown/runtime.js +13 -0
  5. package/dist/ai-edits/apply.d.ts +35 -0
  6. package/dist/ai-edits/apply.js +683 -0
  7. package/dist/ai-edits/clean-text.d.ts +28 -0
  8. package/dist/ai-edits/clean-text.js +23 -0
  9. package/dist/ai-edits/headless.d.ts +225 -0
  10. package/dist/ai-edits/headless.js +513 -0
  11. package/dist/ai-edits/index.d.ts +6 -0
  12. package/dist/ai-edits/index.js +5 -0
  13. package/dist/ai-edits/inline-emphasis.d.ts +38 -0
  14. package/dist/ai-edits/inline-emphasis.js +78 -0
  15. package/dist/ai-edits/snapshot.d.ts +9 -0
  16. package/dist/ai-edits/snapshot.js +195 -0
  17. package/dist/ai-edits/types.d.ts +156 -0
  18. package/dist/ai-edits/types.js +0 -0
  19. package/dist/ai-edits/word-diff.d.ts +20 -0
  20. package/dist/ai-edits/word-diff.js +77 -0
  21. package/dist/ai-suggestions/apply.d.ts +17 -0
  22. package/dist/ai-suggestions/apply.js +64 -0
  23. package/dist/ai-suggestions/conflict.d.ts +22 -0
  24. package/dist/ai-suggestions/conflict.js +67 -0
  25. package/dist/ai-suggestions/text-positions.d.ts +21 -0
  26. package/dist/ai-suggestions/text-positions.js +48 -0
  27. package/dist/ai-suggestions/types.d.ts +199 -0
  28. package/dist/ai-suggestions/types.js +59 -0
  29. package/dist/content-controls/errors.d.ts +52 -0
  30. package/dist/content-controls/errors.js +36 -0
  31. package/dist/content-controls/findContentControls.d.ts +55 -0
  32. package/dist/content-controls/findContentControls.js +75 -0
  33. package/dist/content-controls/index.d.ts +4 -0
  34. package/dist/content-controls/index.js +4 -0
  35. package/dist/content-controls/mutateContentControls.d.ts +51 -0
  36. package/dist/content-controls/mutateContentControls.js +377 -0
  37. package/dist/controller/folioEditor.d.ts +21 -0
  38. package/dist/controller/folioEditor.js +29 -0
  39. package/dist/controller/folioEditorEvents.d.ts +23 -0
  40. package/dist/controller/folioEditorEvents.js +24 -0
  41. package/dist/controller/hiddenEditorApi.d.ts +35 -0
  42. package/dist/controller/hiddenEditorApi.js +112 -0
  43. package/dist/controller/hiddenEditorManager.d.ts +93 -0
  44. package/dist/controller/hiddenEditorManager.js +308 -0
  45. package/dist/controller/layoutPipeline.d.ts +63 -0
  46. package/dist/controller/layoutPipeline.js +406 -0
  47. package/dist/controller/layoutScheduler.d.ts +41 -0
  48. package/dist/controller/layoutScheduler.js +59 -0
  49. package/dist/controller/layoutSession.d.ts +24 -0
  50. package/dist/controller/layoutSession.js +13 -0
  51. package/dist/docx/blockContentParser.d.ts +13 -0
  52. package/dist/docx/blockContentParser.js +289 -0
  53. package/dist/docx/bookmarkParser.d.ts +178 -0
  54. package/dist/docx/bookmarkParser.js +246 -0
  55. package/dist/docx/bookmarkPlacement.d.ts +10 -0
  56. package/dist/docx/bookmarkPlacement.js +50 -0
  57. package/dist/docx/bulletMarkers.d.ts +4 -0
  58. package/dist/docx/bulletMarkers.js +42 -0
  59. package/dist/docx/commentParser.d.ts +34 -0
  60. package/dist/docx/commentParser.js +127 -0
  61. package/dist/docx/commentReferenceNormalization.d.ts +25 -0
  62. package/dist/docx/commentReferenceNormalization.js +97 -0
  63. package/dist/docx/commentReplyMarkers.d.ts +20 -0
  64. package/dist/docx/commentReplyMarkers.js +123 -0
  65. package/dist/docx/compatibility.d.ts +12 -0
  66. package/dist/docx/compatibility.js +77 -0
  67. package/dist/docx/documentParser.d.ts +65 -0
  68. package/dist/docx/documentParser.js +209 -0
  69. package/dist/docx/drawingUtils.d.ts +56 -0
  70. package/dist/docx/drawingUtils.js +305 -0
  71. package/dist/docx/fieldParser.d.ts +228 -0
  72. package/dist/docx/fieldParser.js +559 -0
  73. package/dist/docx/footnoteParser.d.ts +109 -0
  74. package/dist/docx/footnoteParser.js +270 -0
  75. package/dist/docx/headerFooterParser.d.ts +119 -0
  76. package/dist/docx/headerFooterParser.js +266 -0
  77. package/dist/docx/headerFooterRefParser.d.ts +22 -0
  78. package/dist/docx/headerFooterRefParser.js +52 -0
  79. package/dist/docx/headerFooterReferenceNormalization.d.ts +19 -0
  80. package/dist/docx/headerFooterReferenceNormalization.js +64 -0
  81. package/dist/docx/hyperlinkParser.d.ts +108 -0
  82. package/dist/docx/hyperlinkParser.js +230 -0
  83. package/dist/docx/imageParser.d.ts +93 -0
  84. package/dist/docx/imageParser.js +522 -0
  85. package/dist/docx/mathToMathml.d.ts +15 -0
  86. package/dist/docx/mathToMathml.js +357 -0
  87. package/dist/docx/modelValidation.d.ts +13 -0
  88. package/dist/docx/modelValidation.js +21 -0
  89. package/dist/docx/normalizeBaseDirection.d.ts +12 -0
  90. package/dist/docx/normalizeBaseDirection.js +81 -0
  91. package/dist/docx/notePropertiesParser.d.ts +16 -0
  92. package/dist/docx/notePropertiesParser.js +99 -0
  93. package/dist/docx/numberingParser.d.ts +86 -0
  94. package/dist/docx/numberingParser.js +735 -0
  95. package/dist/docx/numberingReferenceNormalization.d.ts +25 -0
  96. package/dist/docx/numberingReferenceNormalization.js +22 -0
  97. package/dist/docx/paragraphParser.d.ts +86 -0
  98. package/dist/docx/paragraphParser.js +1132 -0
  99. package/dist/docx/paragraphTraversal.d.ts +19 -0
  100. package/dist/docx/paragraphTraversal.js +76 -0
  101. package/dist/docx/parser.d.ts +67 -0
  102. package/dist/docx/parser.js +391 -0
  103. package/dist/docx/parserEnums.d.ts +45 -0
  104. package/dist/docx/parserEnums.js +70 -0
  105. package/dist/docx/relsParser.d.ts +160 -0
  106. package/dist/docx/relsParser.js +235 -0
  107. package/dist/docx/replyToComment.d.ts +29 -0
  108. package/dist/docx/replyToComment.js +73 -0
  109. package/dist/docx/rezip.d.ts +166 -0
  110. package/dist/docx/rezip.js +1194 -0
  111. package/dist/docx/runConsolidator.d.ts +57 -0
  112. package/dist/docx/runConsolidator.js +224 -0
  113. package/dist/docx/runParser.d.ts +78 -0
  114. package/dist/docx/runParser.js +661 -0
  115. package/dist/docx/sdtProperties.d.ts +15 -0
  116. package/dist/docx/sdtProperties.js +290 -0
  117. package/dist/docx/sdtPropertiesPatch.d.ts +16 -0
  118. package/dist/docx/sdtPropertiesPatch.js +144 -0
  119. package/dist/docx/sectionParser.d.ts +95 -0
  120. package/dist/docx/sectionParser.js +534 -0
  121. package/dist/docx/selectiveSave.d.ts +25 -0
  122. package/dist/docx/selectiveSave.js +247 -0
  123. package/dist/docx/selectiveSaveFlags.d.ts +33 -0
  124. package/dist/docx/selectiveSaveFlags.js +11 -0
  125. package/dist/docx/selectiveSaveTripwire.d.ts +33 -0
  126. package/dist/docx/selectiveSaveTripwire.js +79 -0
  127. package/dist/docx/selectiveXmlPatch.d.ts +103 -0
  128. package/dist/docx/selectiveXmlPatch.js +493 -0
  129. package/dist/docx/serializer/blockSdtSerializer.d.ts +6 -0
  130. package/dist/docx/serializer/blockSdtSerializer.js +88 -0
  131. package/dist/docx/serializer/borderSerializer.d.ts +25 -0
  132. package/dist/docx/serializer/borderSerializer.js +44 -0
  133. package/dist/docx/serializer/commentSerializer.d.ts +31 -0
  134. package/dist/docx/serializer/commentSerializer.js +184 -0
  135. package/dist/docx/serializer/documentSerializer.d.ts +65 -0
  136. package/dist/docx/serializer/documentSerializer.js +199 -0
  137. package/dist/docx/serializer/headerFooterSerializer.d.ts +12 -0
  138. package/dist/docx/serializer/headerFooterSerializer.js +84 -0
  139. package/dist/docx/serializer/noteSerializer.d.ts +19 -0
  140. package/dist/docx/serializer/noteSerializer.js +70 -0
  141. package/dist/docx/serializer/numberingSerializer.d.ts +12 -0
  142. package/dist/docx/serializer/numberingSerializer.js +93 -0
  143. package/dist/docx/serializer/paragraphSerializer.d.ts +48 -0
  144. package/dist/docx/serializer/paragraphSerializer.js +559 -0
  145. package/dist/docx/serializer/runSerializer.d.ts +56 -0
  146. package/dist/docx/serializer/runSerializer.js +621 -0
  147. package/dist/docx/serializer/sectionPropertiesSerializer.d.ts +6 -0
  148. package/dist/docx/serializer/sectionPropertiesSerializer.js +187 -0
  149. package/dist/docx/serializer/tableSerializer.d.ts +79 -0
  150. package/dist/docx/serializer/tableSerializer.js +422 -0
  151. package/dist/docx/serializer/xmlUtils.d.ts +20 -0
  152. package/dist/docx/serializer/xmlUtils.js +25 -0
  153. package/dist/docx/settingsParser.d.ts +8 -0
  154. package/dist/docx/settingsParser.js +36 -0
  155. package/dist/docx/shapeParser.d.ts +20 -0
  156. package/dist/docx/shapeParser.js +272 -0
  157. package/dist/docx/styleParser.d.ts +50 -0
  158. package/dist/docx/styleParser.js +905 -0
  159. package/dist/docx/tableParser.d.ts +202 -0
  160. package/dist/docx/tableParser.js +811 -0
  161. package/dist/docx/textBoxParser.d.ts +117 -0
  162. package/dist/docx/textBoxParser.js +262 -0
  163. package/dist/docx/themeParser.d.ts +77 -0
  164. package/dist/docx/themeParser.js +330 -0
  165. package/dist/docx/trackedMoveRangeNormalization.d.ts +22 -0
  166. package/dist/docx/trackedMoveRangeNormalization.js +100 -0
  167. package/dist/docx/unzip.d.ts +118 -0
  168. package/dist/docx/unzip.js +383 -0
  169. package/dist/docx/vmlImageParser.d.ts +16 -0
  170. package/dist/docx/vmlImageParser.js +100 -0
  171. package/dist/docx/watermarkParser.d.ts +45 -0
  172. package/dist/docx/watermarkParser.js +348 -0
  173. package/dist/docx/wrapTypes.d.ts +29 -0
  174. package/dist/docx/wrapTypes.js +48 -0
  175. package/dist/docx/xmlParser.d.ts +297 -0
  176. package/dist/docx/xmlParser.js +527 -0
  177. package/dist/fields/bookmarkPages.d.ts +13 -0
  178. package/dist/fields/bookmarkPages.js +66 -0
  179. package/dist/fields/bookmarkText.d.ts +16 -0
  180. package/dist/fields/bookmarkText.js +61 -0
  181. package/dist/fields/evaluateField.d.ts +23 -0
  182. package/dist/fields/evaluateField.js +77 -0
  183. package/dist/fields/fieldContext.d.ts +21 -0
  184. package/dist/fields/fieldContext.js +0 -0
  185. package/dist/fields/resolveFieldValues.d.ts +44 -0
  186. package/dist/fields/resolveFieldValues.js +204 -0
  187. package/dist/fields/sectionPageCounts.d.ts +11 -0
  188. package/dist/fields/sectionPageCounts.js +16 -0
  189. package/dist/fields/seqValues.d.ts +14 -0
  190. package/dist/fields/seqValues.js +36 -0
  191. package/dist/fonts/embeddedFontTable.d.ts +42 -0
  192. package/dist/fonts/embeddedFontTable.js +80 -0
  193. package/dist/fonts/embeddedFonts.d.ts +46 -0
  194. package/dist/fonts/embeddedFonts.js +112 -0
  195. package/dist/fonts/fontDeobfuscation.d.ts +30 -0
  196. package/dist/fonts/fontDeobfuscation.js +57 -0
  197. package/dist/index.d.ts +28 -0
  198. package/dist/index.js +23 -0
  199. package/dist/layout-bridge/convert/footnoteLayout.d.ts +57 -0
  200. package/dist/layout-bridge/convert/footnoteLayout.js +316 -0
  201. package/dist/layout-bridge/convert/headerFooterLayout.d.ts +74 -0
  202. package/dist/layout-bridge/convert/headerFooterLayout.js +432 -0
  203. package/dist/layout-bridge/convert/templatePreviewFlow.d.ts +36 -0
  204. package/dist/layout-bridge/convert/templatePreviewFlow.js +176 -0
  205. package/dist/layout-bridge/convert/toFlowBlocks.d.ts +65 -0
  206. package/dist/layout-bridge/convert/toFlowBlocks.js +1309 -0
  207. package/dist/layout-bridge/convert/wrapEditorViewAsSurface.d.ts +17 -0
  208. package/dist/layout-bridge/convert/wrapEditorViewAsSurface.js +36 -0
  209. package/dist/layout-bridge/dom/clickToPositionDom.d.ts +66 -0
  210. package/dist/layout-bridge/dom/clickToPositionDom.js +304 -0
  211. package/dist/layout-bridge/dom/findBodyPmSpans.d.ts +7 -0
  212. package/dist/layout-bridge/dom/findBodyPmSpans.js +17 -0
  213. package/dist/layout-bridge/dom/findHfPmSpans.d.ts +62 -0
  214. package/dist/layout-bridge/dom/findHfPmSpans.js +197 -0
  215. package/dist/layout-bridge/engine/clickToPosition.d.ts +66 -0
  216. package/dist/layout-bridge/engine/clickToPosition.js +403 -0
  217. package/dist/layout-bridge/engine/hitTest.d.ts +135 -0
  218. package/dist/layout-bridge/engine/hitTest.js +375 -0
  219. package/dist/layout-bridge/engine/measuring/index.d.ts +10 -0
  220. package/dist/layout-bridge/engine/measuring/index.js +9 -0
  221. package/dist/layout-bridge/engine/selectionRects.d.ts +59 -0
  222. package/dist/layout-bridge/engine/selectionRects.js +485 -0
  223. package/dist/layout-bridge/engine/tableWidthUtils.d.ts +7 -0
  224. package/dist/layout-bridge/engine/tableWidthUtils.js +25 -0
  225. package/dist/layout-engine/index.d.ts +44 -0
  226. package/dist/layout-engine/index.js +691 -0
  227. package/dist/layout-engine/keep-together.d.ts +43 -0
  228. package/dist/layout-engine/keep-together.js +98 -0
  229. package/dist/layout-engine/layoutInstrumentation.d.ts +50 -0
  230. package/dist/layout-engine/layoutInstrumentation.js +43 -0
  231. package/dist/layout-engine/lineFlow.d.ts +8 -0
  232. package/dist/layout-engine/lineFlow.js +17 -0
  233. package/dist/layout-engine/measure/cache.d.ts +93 -0
  234. package/dist/layout-engine/measure/cache.js +245 -0
  235. package/dist/layout-engine/measure/clampFloatingWrapMargins.d.ts +20 -0
  236. package/dist/layout-engine/measure/clampFloatingWrapMargins.js +29 -0
  237. package/dist/layout-engine/measure/featureFlags.d.ts +44 -0
  238. package/dist/layout-engine/measure/featureFlags.js +19 -0
  239. package/dist/layout-engine/measure/floatingZones.d.ts +89 -0
  240. package/dist/layout-engine/measure/floatingZones.js +152 -0
  241. package/dist/layout-engine/measure/font-metrics.worker.d.ts +17 -0
  242. package/dist/layout-engine/measure/font-metrics.worker.js +104 -0
  243. package/dist/layout-engine/measure/index.d.ts +9 -0
  244. package/dist/layout-engine/measure/index.js +8 -0
  245. package/dist/layout-engine/measure/listMarkerWidth.d.ts +40 -0
  246. package/dist/layout-engine/measure/listMarkerWidth.js +76 -0
  247. package/dist/layout-engine/measure/measureBlocks.d.ts +25 -0
  248. package/dist/layout-engine/measure/measureBlocks.js +450 -0
  249. package/dist/layout-engine/measure/measureContainer.d.ts +24 -0
  250. package/dist/layout-engine/measure/measureContainer.js +280 -0
  251. package/dist/layout-engine/measure/measureHelpers.d.ts +82 -0
  252. package/dist/layout-engine/measure/measureHelpers.js +156 -0
  253. package/dist/layout-engine/measure/measureParagraph.d.ts +61 -0
  254. package/dist/layout-engine/measure/measureParagraph.js +724 -0
  255. package/dist/layout-engine/measure/measureProvider.d.ts +23 -0
  256. package/dist/layout-engine/measure/measureProvider.js +35 -0
  257. package/dist/layout-engine/measure/measureTypes.d.ts +61 -0
  258. package/dist/layout-engine/measure/measureTypes.js +0 -0
  259. package/dist/layout-engine/measure/measureWorker.d.ts +54 -0
  260. package/dist/layout-engine/measure/measureWorker.js +249 -0
  261. package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +88 -0
  262. package/dist/layout-engine/measure/measureWorkerProtocol.js +20 -0
  263. package/dist/layout-engine/measure/tableCellFloating.d.ts +26 -0
  264. package/dist/layout-engine/measure/tableCellFloating.js +99 -0
  265. package/dist/layout-engine/paginator.d.ts +84 -0
  266. package/dist/layout-engine/paginator.js +348 -0
  267. package/dist/layout-engine/paragraphFragmentRange.d.ts +9 -0
  268. package/dist/layout-engine/paragraphFragmentRange.js +40 -0
  269. package/dist/layout-engine/section-breaks.d.ts +78 -0
  270. package/dist/layout-engine/section-breaks.js +182 -0
  271. package/dist/layout-engine/tableRowBreak.d.ts +23 -0
  272. package/dist/layout-engine/tableRowBreak.js +147 -0
  273. package/dist/layout-engine/textBoxFlow.d.ts +50 -0
  274. package/dist/layout-engine/textBoxFlow.js +160 -0
  275. package/dist/layout-engine/types.d.ts +1031 -0
  276. package/dist/layout-engine/types.js +100 -0
  277. package/dist/layout-painter/documentColors.d.ts +4 -0
  278. package/dist/layout-painter/documentColors.js +40 -0
  279. package/dist/layout-painter/index.d.ts +110 -0
  280. package/dist/layout-painter/index.js +182 -0
  281. package/dist/layout-painter/registry/modules/image.d.ts +6 -0
  282. package/dist/layout-painter/registry/modules/image.js +17 -0
  283. package/dist/layout-painter/registry/modules/paragraph.d.ts +6 -0
  284. package/dist/layout-painter/registry/modules/paragraph.js +18 -0
  285. package/dist/layout-painter/registry/modules/table.d.ts +6 -0
  286. package/dist/layout-painter/registry/modules/table.js +16 -0
  287. package/dist/layout-painter/registry/modules/textBox.d.ts +6 -0
  288. package/dist/layout-painter/registry/modules/textBox.js +13 -0
  289. package/dist/layout-painter/registry/modules.d.ts +6 -0
  290. package/dist/layout-painter/registry/modules.js +26 -0
  291. package/dist/layout-painter/registry/registry.d.ts +24 -0
  292. package/dist/layout-painter/registry/registry.js +53 -0
  293. package/dist/layout-painter/registry/types.d.ts +61 -0
  294. package/dist/layout-painter/registry/types.js +0 -0
  295. package/dist/layout-painter/renderFragment.d.ts +32 -0
  296. package/dist/layout-painter/renderFragment.js +114 -0
  297. package/dist/layout-painter/renderImage.d.ts +88 -0
  298. package/dist/layout-painter/renderImage.js +130 -0
  299. package/dist/layout-painter/renderPage.d.ts +264 -0
  300. package/dist/layout-painter/renderPage.js +1795 -0
  301. package/dist/layout-painter/renderParagraph.d.ts +93 -0
  302. package/dist/layout-painter/renderParagraph.js +1300 -0
  303. package/dist/layout-painter/renderTable.d.ts +36 -0
  304. package/dist/layout-painter/renderTable.js +432 -0
  305. package/dist/layout-painter/renderTextBox.d.ts +22 -0
  306. package/dist/layout-painter/renderTextBox.js +67 -0
  307. package/dist/layout-painter/renderUtils.d.ts +42 -0
  308. package/dist/layout-painter/renderUtils.js +30 -0
  309. package/dist/layout-painter/renderWatermark.d.ts +16 -0
  310. package/dist/layout-painter/renderWatermark.js +61 -0
  311. package/dist/layout-painter/sdtBoundary.d.ts +6 -0
  312. package/dist/layout-painter/sdtBoundary.js +28 -0
  313. package/dist/managers/ContextMenuManager.d.ts +28 -0
  314. package/dist/managers/ContextMenuManager.js +48 -0
  315. package/dist/managers/DocumentLoaderManager.d.ts +47 -0
  316. package/dist/managers/DocumentLoaderManager.js +69 -0
  317. package/dist/managers/EditorModeManager.d.ts +28 -0
  318. package/dist/managers/EditorModeManager.js +50 -0
  319. package/dist/managers/ErrorManager.d.ts +26 -0
  320. package/dist/managers/ErrorManager.js +85 -0
  321. package/dist/managers/FindReplaceManager.d.ts +54 -0
  322. package/dist/managers/FindReplaceManager.js +104 -0
  323. package/dist/managers/HistoryManager.d.ts +92 -0
  324. package/dist/managers/HistoryManager.js +193 -0
  325. package/dist/managers/Subscribable.d.ts +34 -0
  326. package/dist/managers/Subscribable.js +46 -0
  327. package/dist/managers/TableSelectionManager.d.ts +74 -0
  328. package/dist/managers/TableSelectionManager.js +225 -0
  329. package/dist/managers/editorShortcuts.d.ts +42 -0
  330. package/dist/managers/editorShortcuts.js +60 -0
  331. package/dist/managers/types.d.ts +41 -0
  332. package/dist/managers/types.js +0 -0
  333. package/dist/markdown/annotations.d.ts +14 -0
  334. package/dist/markdown/annotations.js +42 -0
  335. package/dist/markdown/escape.d.ts +36 -0
  336. package/dist/markdown/escape.js +59 -0
  337. package/dist/markdown/fromMarkdown.d.ts +11 -0
  338. package/dist/markdown/fromMarkdown.js +223 -0
  339. package/dist/markdown/headings.d.ts +13 -0
  340. package/dist/markdown/headings.js +20 -0
  341. package/dist/markdown/images.d.ts +13 -0
  342. package/dist/markdown/images.js +63 -0
  343. package/dist/markdown/index.d.ts +18 -0
  344. package/dist/markdown/index.js +33 -0
  345. package/dist/markdown/internals.d.ts +15 -0
  346. package/dist/markdown/internals.js +35 -0
  347. package/dist/markdown/renderBlock.d.ts +7 -0
  348. package/dist/markdown/renderBlock.js +68 -0
  349. package/dist/markdown/renderParagraph.d.ts +11 -0
  350. package/dist/markdown/renderParagraph.js +64 -0
  351. package/dist/markdown/renderRuns.d.ts +11 -0
  352. package/dist/markdown/renderRuns.js +265 -0
  353. package/dist/markdown/renderTable.d.ts +8 -0
  354. package/dist/markdown/renderTable.js +229 -0
  355. package/dist/markdown/trailers.d.ts +13 -0
  356. package/dist/markdown/trailers.js +54 -0
  357. package/dist/markdown/types.d.ts +118 -0
  358. package/dist/markdown/types.js +0 -0
  359. package/dist/model.d.ts +13 -0
  360. package/dist/model.js +4 -0
  361. package/dist/paged-layout/LayoutSelectionGate.d.ts +80 -0
  362. package/dist/paged-layout/LayoutSelectionGate.js +131 -0
  363. package/dist/paged-layout/headerFooterMargins.d.ts +73 -0
  364. package/dist/paged-layout/headerFooterMargins.js +120 -0
  365. package/dist/paged-layout/hiddenEditorScroll.d.ts +4 -0
  366. package/dist/paged-layout/hiddenEditorScroll.js +4 -0
  367. package/dist/paged-layout/incrementalMeasure.d.ts +33 -0
  368. package/dist/paged-layout/incrementalMeasure.js +56 -0
  369. package/dist/paged-layout/rangeProjection.d.ts +51 -0
  370. package/dist/paged-layout/rangeProjection.js +153 -0
  371. package/dist/paged-layout/readOnlyEditAttempt.d.ts +5 -0
  372. package/dist/paged-layout/readOnlyEditAttempt.js +22 -0
  373. package/dist/paged-layout/scrollNavigation.d.ts +23 -0
  374. package/dist/paged-layout/scrollNavigation.js +31 -0
  375. package/dist/paged-layout/scrollPageInfo.d.ts +41 -0
  376. package/dist/paged-layout/scrollPageInfo.js +34 -0
  377. package/dist/paged-layout/scrollToPmPosition.d.ts +17 -0
  378. package/dist/paged-layout/scrollToPmPosition.js +95 -0
  379. package/dist/paged-layout/sectionBlockWidths.d.ts +35 -0
  380. package/dist/paged-layout/sectionBlockWidths.js +52 -0
  381. package/dist/paged-layout/sectionGeometry.d.ts +21 -0
  382. package/dist/paged-layout/sectionGeometry.js +36 -0
  383. package/dist/paged-layout/selectionViewportRect.d.ts +29 -0
  384. package/dist/paged-layout/selectionViewportRect.js +55 -0
  385. package/dist/paged-layout/tableColumnResize.d.ts +19 -0
  386. package/dist/paged-layout/tableColumnResize.js +28 -0
  387. package/dist/paged-layout/tableInsertButtonGeometry.d.ts +15 -0
  388. package/dist/paged-layout/tableInsertButtonGeometry.js +15 -0
  389. package/dist/paged-layout/transactionDirtyRange.d.ts +7 -0
  390. package/dist/paged-layout/transactionDirtyRange.js +27 -0
  391. package/dist/paged-layout/zoomScrollAnchor.d.ts +40 -0
  392. package/dist/paged-layout/zoomScrollAnchor.js +25 -0
  393. package/dist/prosemirror/attrs/index.d.ts +80 -0
  394. package/dist/prosemirror/attrs/index.js +1218 -0
  395. package/dist/prosemirror/autospacingBase.d.ts +11 -0
  396. package/dist/prosemirror/autospacingBase.js +16 -0
  397. package/dist/prosemirror/commands/comments.d.ts +93 -0
  398. package/dist/prosemirror/commands/comments.js +435 -0
  399. package/dist/prosemirror/commands/contentControls.d.ts +45 -0
  400. package/dist/prosemirror/commands/contentControls.js +294 -0
  401. package/dist/prosemirror/commands/contentControlsBlockFill.d.ts +15 -0
  402. package/dist/prosemirror/commands/contentControlsBlockFill.js +19 -0
  403. package/dist/prosemirror/commands/formatPainter.d.ts +31 -0
  404. package/dist/prosemirror/commands/formatPainter.js +130 -0
  405. package/dist/prosemirror/commands/formatting.d.ts +32 -0
  406. package/dist/prosemirror/commands/formatting.js +45 -0
  407. package/dist/prosemirror/commands/hyperlink.d.ts +31 -0
  408. package/dist/prosemirror/commands/hyperlink.js +79 -0
  409. package/dist/prosemirror/commands/image.d.ts +59 -0
  410. package/dist/prosemirror/commands/image.js +219 -0
  411. package/dist/prosemirror/commands/index.d.ts +13 -0
  412. package/dist/prosemirror/commands/index.js +13 -0
  413. package/dist/prosemirror/commands/pageBreak.d.ts +10 -0
  414. package/dist/prosemirror/commands/pageBreak.js +47 -0
  415. package/dist/prosemirror/commands/paragraph.d.ts +39 -0
  416. package/dist/prosemirror/commands/paragraph.js +64 -0
  417. package/dist/prosemirror/commands/pastePlainText.d.ts +39 -0
  418. package/dist/prosemirror/commands/pastePlainText.js +67 -0
  419. package/dist/prosemirror/commands/table.d.ts +83 -0
  420. package/dist/prosemirror/commands/table.js +105 -0
  421. package/dist/prosemirror/conversion/fromProseDoc.d.ts +27 -0
  422. package/dist/prosemirror/conversion/fromProseDoc.js +1550 -0
  423. package/dist/prosemirror/conversion/index.d.ts +4 -0
  424. package/dist/prosemirror/conversion/index.js +4 -0
  425. package/dist/prosemirror/conversion/runShadingMark.d.ts +16 -0
  426. package/dist/prosemirror/conversion/runShadingMark.js +39 -0
  427. package/dist/prosemirror/conversion/toProseDoc.d.ts +39 -0
  428. package/dist/prosemirror/conversion/toProseDoc.js +1404 -0
  429. package/dist/prosemirror/extensions/ExtensionManager.d.ts +43 -0
  430. package/dist/prosemirror/extensions/ExtensionManager.js +86 -0
  431. package/dist/prosemirror/extensions/StarterKit.d.ts +16 -0
  432. package/dist/prosemirror/extensions/StarterKit.js +132 -0
  433. package/dist/prosemirror/extensions/core/DocExtension.d.ts +9 -0
  434. package/dist/prosemirror/extensions/core/DocExtension.js +12 -0
  435. package/dist/prosemirror/extensions/core/HistoryExtension.d.ts +13 -0
  436. package/dist/prosemirror/extensions/core/HistoryExtension.js +28 -0
  437. package/dist/prosemirror/extensions/core/ParagraphExtension.d.ts +25 -0
  438. package/dist/prosemirror/extensions/core/ParagraphExtension.js +619 -0
  439. package/dist/prosemirror/extensions/core/TextExtension.d.ts +9 -0
  440. package/dist/prosemirror/extensions/core/TextExtension.js +12 -0
  441. package/dist/prosemirror/extensions/create.d.ts +17 -0
  442. package/dist/prosemirror/extensions/create.js +129 -0
  443. package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts +23 -0
  444. package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.js +106 -0
  445. package/dist/prosemirror/extensions/features/BaseKeymapExtension.d.ts +8 -0
  446. package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +172 -0
  447. package/dist/prosemirror/extensions/features/BidiShortcutExtension.d.ts +16 -0
  448. package/dist/prosemirror/extensions/features/BidiShortcutExtension.js +38 -0
  449. package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.d.ts +16 -0
  450. package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.js +21 -0
  451. package/dist/prosemirror/extensions/features/DropCursorExtension.d.ts +12 -0
  452. package/dist/prosemirror/extensions/features/DropCursorExtension.js +20 -0
  453. package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts +8 -0
  454. package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.js +44 -0
  455. package/dist/prosemirror/extensions/features/GapCursorExtension.d.ts +19 -0
  456. package/dist/prosemirror/extensions/features/GapCursorExtension.js +24 -0
  457. package/dist/prosemirror/extensions/features/ImageDragExtension.d.ts +15 -0
  458. package/dist/prosemirror/extensions/features/ImageDragExtension.js +66 -0
  459. package/dist/prosemirror/extensions/features/ImagePasteExtension.d.ts +12 -0
  460. package/dist/prosemirror/extensions/features/ImagePasteExtension.js +91 -0
  461. package/dist/prosemirror/extensions/features/ListExtension.d.ts +14 -0
  462. package/dist/prosemirror/extensions/features/ListExtension.js +340 -0
  463. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +9 -0
  464. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.js +60 -0
  465. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +35 -0
  466. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +188 -0
  467. package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +20 -0
  468. package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +34 -0
  469. package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.d.ts +20 -0
  470. package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.js +145 -0
  471. package/dist/prosemirror/extensions/features/SelectionTrackerExtension.d.ts +10 -0
  472. package/dist/prosemirror/extensions/features/SelectionTrackerExtension.js +17 -0
  473. package/dist/prosemirror/extensions/features/bidiShortcutController.d.ts +31 -0
  474. package/dist/prosemirror/extensions/features/bidiShortcutController.js +27 -0
  475. package/dist/prosemirror/extensions/features/pasteCleanup.d.ts +31 -0
  476. package/dist/prosemirror/extensions/features/pasteCleanup.js +159 -0
  477. package/dist/prosemirror/extensions/marks/AllCapsExtension.d.ts +9 -0
  478. package/dist/prosemirror/extensions/marks/AllCapsExtension.js +24 -0
  479. package/dist/prosemirror/extensions/marks/BoldExtension.d.ts +9 -0
  480. package/dist/prosemirror/extensions/marks/BoldExtension.js +41 -0
  481. package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.d.ts +14 -0
  482. package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.js +64 -0
  483. package/dist/prosemirror/extensions/marks/CharacterStyleExtension.d.ts +23 -0
  484. package/dist/prosemirror/extensions/marks/CharacterStyleExtension.js +47 -0
  485. package/dist/prosemirror/extensions/marks/CommentExtension.d.ts +12 -0
  486. package/dist/prosemirror/extensions/marks/CommentExtension.js +38 -0
  487. package/dist/prosemirror/extensions/marks/FontFamilyExtension.d.ts +9 -0
  488. package/dist/prosemirror/extensions/marks/FontFamilyExtension.js +55 -0
  489. package/dist/prosemirror/extensions/marks/FontSizeExtension.d.ts +9 -0
  490. package/dist/prosemirror/extensions/marks/FontSizeExtension.js +47 -0
  491. package/dist/prosemirror/extensions/marks/FootnoteRefExtension.d.ts +11 -0
  492. package/dist/prosemirror/extensions/marks/FootnoteRefExtension.js +92 -0
  493. package/dist/prosemirror/extensions/marks/HiddenTextExtension.d.ts +23 -0
  494. package/dist/prosemirror/extensions/marks/HiddenTextExtension.js +35 -0
  495. package/dist/prosemirror/extensions/marks/HighlightExtension.d.ts +10 -0
  496. package/dist/prosemirror/extensions/marks/HighlightExtension.js +115 -0
  497. package/dist/prosemirror/extensions/marks/HyperlinkExtension.d.ts +13 -0
  498. package/dist/prosemirror/extensions/marks/HyperlinkExtension.js +146 -0
  499. package/dist/prosemirror/extensions/marks/ItalicExtension.d.ts +9 -0
  500. package/dist/prosemirror/extensions/marks/ItalicExtension.js +34 -0
  501. package/dist/prosemirror/extensions/marks/RtlExtension.d.ts +6 -0
  502. package/dist/prosemirror/extensions/marks/RtlExtension.js +21 -0
  503. package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.d.ts +11 -0
  504. package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.js +75 -0
  505. package/dist/prosemirror/extensions/marks/RunShadingExtension.d.ts +6 -0
  506. package/dist/prosemirror/extensions/marks/RunShadingExtension.js +38 -0
  507. package/dist/prosemirror/extensions/marks/SmallCapsExtension.d.ts +9 -0
  508. package/dist/prosemirror/extensions/marks/SmallCapsExtension.js +24 -0
  509. package/dist/prosemirror/extensions/marks/StrikeExtension.d.ts +9 -0
  510. package/dist/prosemirror/extensions/marks/StrikeExtension.js +33 -0
  511. package/dist/prosemirror/extensions/marks/SubscriptExtension.d.ts +9 -0
  512. package/dist/prosemirror/extensions/marks/SubscriptExtension.js +25 -0
  513. package/dist/prosemirror/extensions/marks/SuperscriptExtension.d.ts +9 -0
  514. package/dist/prosemirror/extensions/marks/SuperscriptExtension.js +25 -0
  515. package/dist/prosemirror/extensions/marks/TextColorExtension.d.ts +9 -0
  516. package/dist/prosemirror/extensions/marks/TextColorExtension.js +50 -0
  517. package/dist/prosemirror/extensions/marks/TextEffectExtension.d.ts +6 -0
  518. package/dist/prosemirror/extensions/marks/TextEffectExtension.js +35 -0
  519. package/dist/prosemirror/extensions/marks/TextEffectsExtensions.d.ts +31 -0
  520. package/dist/prosemirror/extensions/marks/TextEffectsExtensions.js +134 -0
  521. package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.d.ts +22 -0
  522. package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.js +113 -0
  523. package/dist/prosemirror/extensions/marks/UnderlineExtension.d.ts +9 -0
  524. package/dist/prosemirror/extensions/marks/UnderlineExtension.js +60 -0
  525. package/dist/prosemirror/extensions/marks/markUtils.d.ts +34 -0
  526. package/dist/prosemirror/extensions/marks/markUtils.js +233 -0
  527. package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +22 -0
  528. package/dist/prosemirror/extensions/nodes/BlockSdtExtension.js +122 -0
  529. package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +12 -0
  530. package/dist/prosemirror/extensions/nodes/FieldExtension.js +87 -0
  531. package/dist/prosemirror/extensions/nodes/HardBreakExtension.d.ts +9 -0
  532. package/dist/prosemirror/extensions/nodes/HardBreakExtension.js +38 -0
  533. package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.d.ts +9 -0
  534. package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.js +18 -0
  535. package/dist/prosemirror/extensions/nodes/ImageExtension.d.ts +9 -0
  536. package/dist/prosemirror/extensions/nodes/ImageExtension.js +132 -0
  537. package/dist/prosemirror/extensions/nodes/MathExtension.d.ts +13 -0
  538. package/dist/prosemirror/extensions/nodes/MathExtension.js +56 -0
  539. package/dist/prosemirror/extensions/nodes/PageBreakExtension.d.ts +9 -0
  540. package/dist/prosemirror/extensions/nodes/PageBreakExtension.js +20 -0
  541. package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +12 -0
  542. package/dist/prosemirror/extensions/nodes/SdtExtension.js +107 -0
  543. package/dist/prosemirror/extensions/nodes/ShapeExtension.d.ts +30 -0
  544. package/dist/prosemirror/extensions/nodes/ShapeExtension.js +502 -0
  545. package/dist/prosemirror/extensions/nodes/TabExtension.d.ts +9 -0
  546. package/dist/prosemirror/extensions/nodes/TabExtension.js +27 -0
  547. package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +34 -0
  548. package/dist/prosemirror/extensions/nodes/TableExtension.js +1972 -0
  549. package/dist/prosemirror/extensions/nodes/TextBoxExtension.d.ts +34 -0
  550. package/dist/prosemirror/extensions/nodes/TextBoxExtension.js +150 -0
  551. package/dist/prosemirror/extensions/types.d.ts +101 -0
  552. package/dist/prosemirror/extensions/types.js +10 -0
  553. package/dist/prosemirror/findReplaceSelection.d.ts +23 -0
  554. package/dist/prosemirror/findReplaceSelection.js +86 -0
  555. package/dist/prosemirror/index.d.ts +25 -0
  556. package/dist/prosemirror/index.js +23 -0
  557. package/dist/prosemirror/insertOperations.d.ts +12 -0
  558. package/dist/prosemirror/insertOperations.js +19 -0
  559. package/dist/prosemirror/paragraphDirection.d.ts +42 -0
  560. package/dist/prosemirror/paragraphDirection.js +33 -0
  561. package/dist/prosemirror/plugins/aiCitationDecorations.d.ts +40 -0
  562. package/dist/prosemirror/plugins/aiCitationDecorations.js +90 -0
  563. package/dist/prosemirror/plugins/aiSuggestionDecorations.d.ts +42 -0
  564. package/dist/prosemirror/plugins/aiSuggestionDecorations.js +135 -0
  565. package/dist/prosemirror/plugins/anonymizationDecorations.d.ts +60 -0
  566. package/dist/prosemirror/plugins/anonymizationDecorations.js +120 -0
  567. package/dist/prosemirror/plugins/autocompleteSuggestion.d.ts +123 -0
  568. package/dist/prosemirror/plugins/autocompleteSuggestion.js +283 -0
  569. package/dist/prosemirror/plugins/contentControlWidgets.d.ts +56 -0
  570. package/dist/prosemirror/plugins/contentControlWidgets.js +192 -0
  571. package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +37 -0
  572. package/dist/prosemirror/plugins/createDocScanPlugin.js +55 -0
  573. package/dist/prosemirror/plugins/documentStyles.d.ts +18 -0
  574. package/dist/prosemirror/plugins/documentStyles.js +46 -0
  575. package/dist/prosemirror/plugins/index.d.ts +3 -0
  576. package/dist/prosemirror/plugins/index.js +3 -0
  577. package/dist/prosemirror/plugins/pmTextScan.d.ts +19 -0
  578. package/dist/prosemirror/plugins/pmTextScan.js +39 -0
  579. package/dist/prosemirror/plugins/selectionTracker.d.ts +43 -0
  580. package/dist/prosemirror/plugins/selectionTracker.js +179 -0
  581. package/dist/prosemirror/plugins/suggestionMode.d.ts +70 -0
  582. package/dist/prosemirror/plugins/suggestionMode.js +489 -0
  583. package/dist/prosemirror/plugins/templateDirectives.d.ts +25 -0
  584. package/dist/prosemirror/plugins/templateDirectives.js +67 -0
  585. package/dist/prosemirror/plugins/templatePreviewValues.d.ts +49 -0
  586. package/dist/prosemirror/plugins/templatePreviewValues.js +117 -0
  587. package/dist/prosemirror/plugins/templateSlashMenu.d.ts +57 -0
  588. package/dist/prosemirror/plugins/templateSlashMenu.js +184 -0
  589. package/dist/prosemirror/schema/index.d.ts +15 -0
  590. package/dist/prosemirror/schema/index.js +20 -0
  591. package/dist/prosemirror/schema/marks.d.ts +118 -0
  592. package/dist/prosemirror/schema/marks.js +0 -0
  593. package/dist/prosemirror/schema/nodes.d.ts +389 -0
  594. package/dist/prosemirror/schema/nodes.js +0 -0
  595. package/dist/prosemirror/selectionState.d.ts +23 -0
  596. package/dist/prosemirror/selectionState.js +111 -0
  597. package/dist/prosemirror/styles/index.d.ts +2 -0
  598. package/dist/prosemirror/styles/index.js +2 -0
  599. package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +32 -0
  600. package/dist/prosemirror/styles/resolvedStyleAttrs.js +108 -0
  601. package/dist/prosemirror/styles/styleResolver.d.ts +94 -0
  602. package/dist/prosemirror/styles/styleResolver.js +200 -0
  603. package/dist/prosemirror/utils/findParagraphByParaId.d.ts +26 -0
  604. package/dist/prosemirror/utils/findParagraphByParaId.js +37 -0
  605. package/dist/prosemirror/utils/tabCalculator.d.ts +110 -0
  606. package/dist/prosemirror/utils/tabCalculator.js +137 -0
  607. package/dist/prosemirror/validation.d.ts +20 -0
  608. package/dist/prosemirror/validation.js +177 -0
  609. package/dist/server.d.ts +7 -0
  610. package/dist/server.js +6 -0
  611. package/dist/style-engine/index.d.ts +3 -0
  612. package/dist/style-engine/index.js +2 -0
  613. package/dist/style-engine/styleEngine.d.ts +67 -0
  614. package/dist/style-engine/styleEngine.js +70 -0
  615. package/dist/types/block-id.d.ts +58 -0
  616. package/dist/types/block-id.js +61 -0
  617. package/dist/types/colors.d.ts +2 -0
  618. package/dist/types/colors.js +0 -0
  619. package/dist/types/content.d.ts +2 -0
  620. package/dist/types/content.js +0 -0
  621. package/dist/types/document.d.ts +7 -0
  622. package/dist/types/document.js +0 -0
  623. package/dist/types/documentEnumValues.d.ts +89 -0
  624. package/dist/types/documentEnumValues.js +693 -0
  625. package/dist/types/formatting.d.ts +2 -0
  626. package/dist/types/formatting.js +0 -0
  627. package/dist/types/index.d.ts +107 -0
  628. package/dist/types/index.js +0 -0
  629. package/dist/utils/authorColors.d.ts +16 -0
  630. package/dist/utils/authorColors.js +30 -0
  631. package/dist/utils/baseDirection.d.ts +23 -0
  632. package/dist/utils/baseDirection.js +34 -0
  633. package/dist/utils/clipboard.d.ts +126 -0
  634. package/dist/utils/clipboard.js +622 -0
  635. package/dist/utils/colorResolver.d.ts +158 -0
  636. package/dist/utils/colorResolver.js +557 -0
  637. package/dist/utils/createDocument.d.ts +50 -0
  638. package/dist/utils/createDocument.js +262 -0
  639. package/dist/utils/documentLoaderBehavior.d.ts +22 -0
  640. package/dist/utils/documentLoaderBehavior.js +14 -0
  641. package/dist/utils/docxInput.d.ts +22 -0
  642. package/dist/utils/docxInput.js +16 -0
  643. package/dist/utils/domGuards.d.ts +59 -0
  644. package/dist/utils/domGuards.js +82 -0
  645. package/dist/utils/fontFamilyMerge.d.ts +7 -0
  646. package/dist/utils/fontFamilyMerge.js +31 -0
  647. package/dist/utils/fontLoader.d.ts +50 -0
  648. package/dist/utils/fontLoader.js +177 -0
  649. package/dist/utils/fontResolver.d.ts +61 -0
  650. package/dist/utils/fontResolver.js +651 -0
  651. package/dist/utils/fontWeights.d.ts +4 -0
  652. package/dist/utils/fontWeights.js +4 -0
  653. package/dist/utils/formatToStyle.d.ts +103 -0
  654. package/dist/utils/formatToStyle.js +289 -0
  655. package/dist/utils/headerFooter.d.ts +74 -0
  656. package/dist/utils/headerFooter.js +257 -0
  657. package/dist/utils/headingCollector.d.ts +22 -0
  658. package/dist/utils/headingCollector.js +36 -0
  659. package/dist/utils/hexId.d.ts +33 -0
  660. package/dist/utils/hexId.js +37 -0
  661. package/dist/utils/imageValidation.d.ts +5 -0
  662. package/dist/utils/imageValidation.js +31 -0
  663. package/dist/utils/paragraphFormattingMerge.d.ts +14 -0
  664. package/dist/utils/paragraphFormattingMerge.js +68 -0
  665. package/dist/utils/replaceText.d.ts +17 -0
  666. package/dist/utils/replaceText.js +161 -0
  667. package/dist/utils/rotationBoundingBox.d.ts +12 -0
  668. package/dist/utils/rotationBoundingBox.js +36 -0
  669. package/dist/utils/scriptSegments.d.ts +36 -0
  670. package/dist/utils/scriptSegments.js +52 -0
  671. package/dist/utils/tableOperations.d.ts +87 -0
  672. package/dist/utils/tableOperations.js +259 -0
  673. package/dist/utils/textFormattingMerge.d.ts +6 -0
  674. package/dist/utils/textFormattingMerge.js +31 -0
  675. package/dist/utils/tiffConverter.d.ts +18 -0
  676. package/dist/utils/tiffConverter.js +83 -0
  677. package/dist/utils/units.d.ts +99 -0
  678. package/dist/utils/units.js +139 -0
  679. package/dist/utils/urlSecurity.d.ts +7 -0
  680. package/dist/utils/urlSecurity.js +65 -0
  681. package/dist/watermark/index.d.ts +39 -0
  682. package/dist/watermark/index.js +149 -0
  683. package/package.json +122 -2
@@ -0,0 +1,485 @@
1
+ import { measureRun } from "../../layout-engine/measure/measureProvider.js";
2
+ import { buildRunFontStyle } from "../../layout-engine/measure/measureHelpers.js";
3
+ import { inlineImageBoundingBox } from "../../utils/rotationBoundingBox.js";
4
+ import { measuredLineContentOffset } from "../../layout-engine/lineFlow.js";
5
+ import { measureParagraph } from "../../layout-engine/measure/measureParagraph.js";
6
+ import { buildTableCellFloatingZones, getTableCellContentWidth, getTableCellFloatingImages } from "../../layout-engine/measure/tableCellFloating.js";
7
+ import { getHeaderRowsHeight } from "../../layout-engine/index.js";
8
+ import { getPageTop } from "./hitTest.js";
9
+ //#region src/layout-bridge/engine/selectionRects.ts
10
+ /**
11
+ * Selection Rectangles
12
+ *
13
+ * Converts ProseMirror selection ranges into screen rectangles for rendering
14
+ * selection highlights and the caret cursor.
15
+ *
16
+ * The main function `selectionToRects` takes a PM range and returns an array
17
+ * of rectangles that cover the selected text across all pages and fragments.
18
+ */
19
+ /**
20
+ * Width (px) of the highlight sliver painted for an empty paragraph the
21
+ * selection spans. A genuinely empty paragraph has a zero-length line, so the
22
+ * normal run-span overlap produces no rect; a fixed sliver keeps drag-selection
23
+ * across blank lines visible (eigenpal/docx-editor#836).
24
+ */
25
+ const EMPTY_PARAGRAPH_SLIVER_WIDTH = 4;
26
+ const DEFAULT_TABLE_CELL_PADDING_LEFT = 7;
27
+ const DEFAULT_TABLE_CELL_PADDING_TOP = 1;
28
+ /**
29
+ * Extract FontStyle from a run for measurement.
30
+ */
31
+ function runToFontStyle(run) {
32
+ return buildRunFontStyle(run, "Arial", 12);
33
+ }
34
+ function mathRunToFontStyle(run) {
35
+ return {
36
+ fontFamily: run.fontFamily ?? "Cambria Math",
37
+ fontSize: run.fontSize ?? 11,
38
+ ...run.bold !== void 0 ? { bold: run.bold } : {},
39
+ ...run.italic !== void 0 ? { italic: run.italic } : {},
40
+ ...run.letterSpacing !== void 0 ? { letterSpacing: run.letterSpacing } : {},
41
+ ...run.horizontalScale !== void 0 ? { horizontalScale: run.horizontalScale } : {}
42
+ };
43
+ }
44
+ /**
45
+ * Find a block by its ID.
46
+ */
47
+ function findBlockById(blocks, blockId) {
48
+ return blocks.findIndex((block) => block.id === blockId);
49
+ }
50
+ function getCellContentOffsetY(cell, cellMeasure, rowHeight) {
51
+ const padTop = cell.padding?.top ?? DEFAULT_TABLE_CELL_PADDING_TOP;
52
+ const spareHeight = Math.max(0, rowHeight - cellMeasure.height);
53
+ if (cell.verticalAlign === "bottom") return padTop + spareHeight;
54
+ if (cell.verticalAlign === "center") return padTop + spareHeight / 2;
55
+ return padTop;
56
+ }
57
+ function getCellContentOffsetX(cell) {
58
+ return cell.padding?.left ?? DEFAULT_TABLE_CELL_PADDING_LEFT;
59
+ }
60
+ function getMeasuredBlockHeight(measure) {
61
+ if (!measure) return 0;
62
+ if ("totalHeight" in measure) return measure.totalHeight;
63
+ if ("height" in measure) return measure.height;
64
+ return 0;
65
+ }
66
+ /** Clamp a projected PM position to the run's own end position. */
67
+ function clampToRunPmEnd(run, position) {
68
+ return run.pmEnd === void 0 ? position : Math.min(position, run.pmEnd);
69
+ }
70
+ /**
71
+ * Calculate the PM range for a line.
72
+ * Note: ProseMirror positions include node boundaries:
73
+ * - blockPmStart is the position of the paragraph node itself
74
+ * - The actual text content starts at blockPmStart + 1 (after the opening tag)
75
+ *
76
+ * Prefers the runs' own PM metadata over cumulative character counting:
77
+ * template-preview value runs carry the source marker's PM range with a
78
+ * different text length, so the one-PM-position-per-character assumption
79
+ * the char-counting fallback makes does not hold for them.
80
+ */
81
+ function computeLinePmRange(block, line) {
82
+ const fromRun = block.runs[line.fromRun];
83
+ const toRun = block.runs[line.toRun];
84
+ if (fromRun?.pmStart !== void 0 && toRun?.pmStart !== void 0) return {
85
+ pmStart: fromRun.kind === "text" ? clampToRunPmEnd(fromRun, fromRun.pmStart + line.fromChar) : fromRun.pmStart,
86
+ pmEnd: toRun.kind === "text" ? clampToRunPmEnd(toRun, toRun.pmStart + line.toChar) : toRun.pmEnd ?? toRun.pmStart + 1
87
+ };
88
+ const contentStart = (block.pmStart ?? 0) + 1;
89
+ let charOffset = 0;
90
+ let pmStart;
91
+ for (let runIndex = 0; runIndex < block.runs.length && runIndex <= line.toRun; runIndex++) {
92
+ const run = block.runs[runIndex];
93
+ if (!run) continue;
94
+ if (runIndex < line.fromRun) if (run.kind === "text") charOffset += run.text.length;
95
+ else charOffset += 1;
96
+ else if (runIndex === line.fromRun) {
97
+ charOffset += line.fromChar;
98
+ pmStart = contentStart + charOffset;
99
+ break;
100
+ }
101
+ }
102
+ if (pmStart === void 0) pmStart = contentStart;
103
+ let lineLength = 0;
104
+ for (let runIndex = line.fromRun; runIndex <= line.toRun && runIndex < block.runs.length; runIndex++) {
105
+ const run = block.runs[runIndex];
106
+ if (!run) continue;
107
+ if (run.kind === "text") {
108
+ const text = run.text;
109
+ const start = runIndex === line.fromRun ? line.fromChar : 0;
110
+ const end = runIndex === line.toRun ? line.toChar : text.length;
111
+ lineLength += end - start;
112
+ } else lineLength += 1;
113
+ }
114
+ const pmEnd = pmStart + lineLength;
115
+ return {
116
+ pmStart,
117
+ pmEnd
118
+ };
119
+ }
120
+ /**
121
+ * Find lines in a paragraph that intersect with a PM range.
122
+ */
123
+ function findLinesInRange(block, measure, from, to) {
124
+ const result = [];
125
+ for (let i = 0; i < measure.lines.length; i++) {
126
+ const line = measure.lines[i];
127
+ const range = computeLinePmRange(block, line);
128
+ if (range.pmStart === void 0 || range.pmEnd === void 0) continue;
129
+ if (range.pmStart === range.pmEnd ? from < to && range.pmStart >= from && range.pmStart <= to : range.pmEnd > from && range.pmStart < to) result.push({
130
+ line,
131
+ index: i
132
+ });
133
+ }
134
+ return result;
135
+ }
136
+ /**
137
+ * Convert a PM position to a character offset within a line.
138
+ *
139
+ * Walks the line's runs and maps through each run's own PM range, so runs
140
+ * whose text length differs from their PM span (template-preview value
141
+ * runs) keep the rest of the line aligned: positions inside the marker
142
+ * clamp to the value text, positions after it land after the value. Falls
143
+ * back to the legacy whole-line subtraction when a run lacks PM metadata.
144
+ */
145
+ function pmPosToCharOffset(block, line, pmPos) {
146
+ let charOffset = 0;
147
+ for (let runIndex = line.fromRun; runIndex <= line.toRun && runIndex < block.runs.length; runIndex++) {
148
+ const run = block.runs[runIndex];
149
+ if (!run) continue;
150
+ if (run.pmStart === void 0) {
151
+ const range = computeLinePmRange(block, line);
152
+ if (range.pmStart === void 0) return 0;
153
+ return Math.max(0, pmPos - range.pmStart);
154
+ }
155
+ if (run.kind === "text") {
156
+ const startChar = runIndex === line.fromRun ? line.fromChar : 0;
157
+ const endChar = runIndex === line.toRun ? line.toChar : run.text.length;
158
+ const sliceLength = Math.max(0, endChar - startChar);
159
+ const slicePmStart = clampToRunPmEnd(run, run.pmStart + startChar);
160
+ const slicePmEnd = clampToRunPmEnd(run, run.pmStart + endChar);
161
+ if (pmPos <= slicePmStart) return charOffset;
162
+ if (pmPos < slicePmEnd) return charOffset + Math.min(pmPos - slicePmStart, sliceLength);
163
+ charOffset += sliceLength;
164
+ continue;
165
+ }
166
+ if (pmPos <= run.pmStart) return charOffset;
167
+ charOffset += 1;
168
+ }
169
+ return charOffset;
170
+ }
171
+ /**
172
+ * Get the X coordinate for a character offset within a line.
173
+ */
174
+ function charOffsetToX(block, line, charOffset, _availableWidth) {
175
+ let x = 0;
176
+ let charsProcessed = 0;
177
+ for (let runIndex = line.fromRun; runIndex <= line.toRun && runIndex < block.runs.length; runIndex++) {
178
+ const run = block.runs[runIndex];
179
+ if (!run) continue;
180
+ if (run.kind === "tab") {
181
+ const tabWidth = run.width ?? 48;
182
+ if (charsProcessed + 1 >= charOffset) {
183
+ if (charOffset <= charsProcessed) return x;
184
+ return x + tabWidth;
185
+ }
186
+ x += tabWidth;
187
+ charsProcessed += 1;
188
+ continue;
189
+ }
190
+ if (run.kind === "image") {
191
+ const imageWidth = inlineImageBoundingBox(run).width;
192
+ if (charsProcessed + 1 >= charOffset) {
193
+ if (charOffset <= charsProcessed) return x;
194
+ return x + imageWidth;
195
+ }
196
+ x += imageWidth;
197
+ charsProcessed += 1;
198
+ continue;
199
+ }
200
+ if (run.kind === "lineBreak") {
201
+ if (charOffset <= charsProcessed) return x;
202
+ charsProcessed += 1;
203
+ continue;
204
+ }
205
+ if (run.kind === "math") {
206
+ const mathWidth = measureRun(run.plainText, mathRunToFontStyle(run)).width;
207
+ if (charsProcessed + 1 >= charOffset) {
208
+ if (charOffset <= charsProcessed) return x;
209
+ return x + mathWidth;
210
+ }
211
+ x += mathWidth;
212
+ charsProcessed += 1;
213
+ continue;
214
+ }
215
+ if (run.kind === "text") {
216
+ const text = run.text;
217
+ const isFirstRun = runIndex === line.fromRun;
218
+ const isLastRun = runIndex === line.toRun;
219
+ const start = isFirstRun ? line.fromChar : 0;
220
+ const end = isLastRun ? line.toChar : text.length;
221
+ const lineText = text.slice(start, end);
222
+ if (charsProcessed + lineText.length >= charOffset) {
223
+ const charInRun = charOffset - charsProcessed;
224
+ const style = runToFontStyle(run);
225
+ const measurement = measureRun(lineText.slice(0, charInRun), style);
226
+ return x + measurement.width;
227
+ }
228
+ const measurement = measureRun(lineText, runToFontStyle(run));
229
+ x += measurement.width;
230
+ charsProcessed += lineText.length;
231
+ }
232
+ }
233
+ return x;
234
+ }
235
+ /**
236
+ * Convert a ProseMirror selection range to screen rectangles.
237
+ *
238
+ * @param layout - The document layout.
239
+ * @param blocks - All flow blocks.
240
+ * @param measures - All measurements.
241
+ * @param from - Start PM position.
242
+ * @param to - End PM position.
243
+ * @returns Array of rectangles covering the selection.
244
+ */
245
+ function selectionToRects(layout, blocks, measures, from, to) {
246
+ if (from === to) return [];
247
+ const selFrom = Math.min(from, to);
248
+ const selTo = Math.max(from, to);
249
+ const rects = [];
250
+ for (let pageIndex = 0; pageIndex < layout.pages.length; pageIndex++) {
251
+ const page = layout.pages[pageIndex];
252
+ const pageTopY = getPageTop(layout, pageIndex);
253
+ for (const fragment of page.fragments) {
254
+ if (fragment.kind === "paragraph") {
255
+ const blockIndex = findBlockById(blocks, fragment.blockId);
256
+ if (blockIndex === -1) continue;
257
+ const block = blocks[blockIndex];
258
+ const measure = measures[blockIndex];
259
+ if (!block || block.kind !== "paragraph") continue;
260
+ if (!measure || measure.kind !== "paragraph") continue;
261
+ const paragraphBlock = block;
262
+ const paragraphMeasure = measure;
263
+ const paragraphFragment = fragment;
264
+ const intersectingLines = findLinesInRange(paragraphBlock, paragraphMeasure, selFrom, selTo);
265
+ for (const { line, index } of intersectingLines) {
266
+ if (index < paragraphFragment.fromLine || index >= paragraphFragment.toLine) continue;
267
+ const range = computeLinePmRange(paragraphBlock, line);
268
+ if (range.pmStart === void 0 || range.pmEnd === void 0) continue;
269
+ const isTrailingBreakRow = paragraphBlock.runs.length > 0 && line.fromRun >= paragraphBlock.runs.length;
270
+ const isEmptyLine = range.pmStart === range.pmEnd && !isTrailingBreakRow;
271
+ const sliceFrom = Math.max(range.pmStart, selFrom);
272
+ const sliceTo = Math.min(range.pmEnd, selTo);
273
+ if (!isEmptyLine && sliceFrom >= sliceTo) continue;
274
+ const charOffsetFrom = pmPosToCharOffset(paragraphBlock, line, sliceFrom);
275
+ const charOffsetTo = pmPosToCharOffset(paragraphBlock, line, sliceTo);
276
+ const indent = paragraphBlock.attrs?.indent;
277
+ const indentLeft = indent?.left ?? 0;
278
+ const indentRight = indent?.right ?? 0;
279
+ const availableWidth = Math.max(0, fragment.width - indentLeft - indentRight);
280
+ const startX = charOffsetToX(paragraphBlock, line, charOffsetFrom, availableWidth);
281
+ const endX = charOffsetToX(paragraphBlock, line, charOffsetTo, availableWidth);
282
+ const alignment = paragraphBlock.attrs?.alignment ?? "left";
283
+ let alignmentOffset = 0;
284
+ if (alignment === "center") alignmentOffset = Math.max(0, (availableWidth - line.width) / 2);
285
+ else if (alignment === "right") alignmentOffset = Math.max(0, availableWidth - line.width);
286
+ const lineOffset = measuredLineContentOffset(paragraphMeasure.lines, paragraphFragment.fromLine, index);
287
+ const rectX = fragment.x + indentLeft + alignmentOffset + Math.min(startX, endX);
288
+ const rectWidth = isEmptyLine ? EMPTY_PARAGRAPH_SLIVER_WIDTH : Math.max(1, Math.abs(endX - startX));
289
+ const rectY = fragment.y + lineOffset;
290
+ rects.push({
291
+ x: rectX,
292
+ y: rectY + pageTopY,
293
+ width: rectWidth,
294
+ height: line.lineHeight,
295
+ pageIndex
296
+ });
297
+ }
298
+ }
299
+ if (fragment.kind === "table") {
300
+ const blockIndex = findBlockById(blocks, fragment.blockId);
301
+ if (blockIndex === -1) continue;
302
+ const block = blocks[blockIndex];
303
+ const measure = measures[blockIndex];
304
+ if (!block || block.kind !== "table") continue;
305
+ if (!measure || measure.kind !== "table") continue;
306
+ const tableBlock = block;
307
+ const tableMeasure = measure;
308
+ const tableFragment = fragment;
309
+ const hdrCount = tableFragment.headerRowCount ?? 0;
310
+ let rowY = hdrCount > 0 && tableFragment.continuesFromPrev ? getHeaderRowsHeight(tableMeasure, hdrCount) : 0;
311
+ for (let rowIndex = tableFragment.fromRow; rowIndex < tableFragment.toRow && rowIndex < tableBlock.rows.length; rowIndex++) {
312
+ const row = tableBlock.rows[rowIndex];
313
+ const rowMeasure = tableMeasure.rows[rowIndex];
314
+ if (!row || !rowMeasure) continue;
315
+ const clipTop = tableFragment.topClip ?? 0;
316
+ const clipBottom = tableFragment.bottomClip ?? rowMeasure.height;
317
+ let cellX = 0;
318
+ for (let cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {
319
+ const cell = row.cells[cellIndex];
320
+ const cellMeasure = rowMeasure.cells[cellIndex];
321
+ if (!cell || !cellMeasure) continue;
322
+ const contentWidth = getTableCellContentWidth(cell, cellMeasure);
323
+ const floatingZones = buildTableCellFloatingZones(getTableCellFloatingImages(cell, cellMeasure, contentWidth), contentWidth);
324
+ const contentOffsetX = getCellContentOffsetX(cell);
325
+ const contentOffsetY = getCellContentOffsetY(cell, cellMeasure, rowMeasure.height);
326
+ let blockY = 0;
327
+ for (let blockIdx = 0; blockIdx < cell.blocks.length; blockIdx++) {
328
+ const cellBlock = cell.blocks[blockIdx];
329
+ const cellBlockMeasure = cellMeasure.blocks[blockIdx];
330
+ if (!cellBlock || cellBlock.kind !== "paragraph") {
331
+ blockY += getMeasuredBlockHeight(cellBlockMeasure);
332
+ continue;
333
+ }
334
+ if (!cellBlockMeasure || cellBlockMeasure.kind !== "paragraph") {
335
+ blockY += getMeasuredBlockHeight(cellBlockMeasure);
336
+ continue;
337
+ }
338
+ const paragraphBlock = cellBlock;
339
+ let paragraphMeasure = cellBlockMeasure;
340
+ if (floatingZones.length > 0) paragraphMeasure = measureParagraph(paragraphBlock, contentWidth, {
341
+ floatingZones,
342
+ paragraphYOffset: blockY
343
+ });
344
+ const intersectingLines = findLinesInRange(paragraphBlock, paragraphMeasure, selFrom, selTo);
345
+ for (const { line, index } of intersectingLines) {
346
+ const range = computeLinePmRange(paragraphBlock, line);
347
+ if (range.pmStart === void 0 || range.pmEnd === void 0) continue;
348
+ const isTrailingBreakRow = paragraphBlock.runs.length > 0 && line.fromRun >= paragraphBlock.runs.length;
349
+ const isEmptyLine = range.pmStart === range.pmEnd && !isTrailingBreakRow;
350
+ const sliceFrom = Math.max(range.pmStart, selFrom);
351
+ const sliceTo = Math.min(range.pmEnd, selTo);
352
+ if (!isEmptyLine && sliceFrom >= sliceTo) continue;
353
+ const charOffsetFrom = pmPosToCharOffset(paragraphBlock, line, sliceFrom);
354
+ const charOffsetTo = pmPosToCharOffset(paragraphBlock, line, sliceTo);
355
+ const startX = charOffsetToX(paragraphBlock, line, charOffsetFrom, contentWidth);
356
+ const endX = charOffsetToX(paragraphBlock, line, charOffsetTo, contentWidth);
357
+ const lineY = measuredLineContentOffset(paragraphMeasure.lines, 0, index);
358
+ const clippedLineY = contentOffsetY + blockY + lineY;
359
+ if (clippedLineY + line.lineHeight <= clipTop || clippedLineY >= clipBottom) continue;
360
+ rects.push({
361
+ x: tableFragment.x + cellX + contentOffsetX + Math.min(startX, endX),
362
+ y: tableFragment.y + rowY + clippedLineY - clipTop + pageTopY,
363
+ width: isEmptyLine ? EMPTY_PARAGRAPH_SLIVER_WIDTH : Math.max(1, Math.abs(endX - startX)),
364
+ height: line.lineHeight,
365
+ pageIndex
366
+ });
367
+ }
368
+ blockY += paragraphMeasure.totalHeight;
369
+ }
370
+ cellX += cellMeasure.width;
371
+ }
372
+ rowY += rowMeasure.height;
373
+ }
374
+ }
375
+ if (fragment.kind === "image") {
376
+ const blockPmStart = fragment.pmStart ?? 0;
377
+ if ((fragment.pmEnd ?? blockPmStart + 1) > selFrom && blockPmStart < selTo) rects.push({
378
+ x: fragment.x,
379
+ y: fragment.y + pageTopY,
380
+ width: fragment.width,
381
+ height: fragment.height,
382
+ pageIndex
383
+ });
384
+ }
385
+ }
386
+ }
387
+ return rects;
388
+ }
389
+ /**
390
+ * Get caret position for a collapsed selection.
391
+ *
392
+ * @param layout - The document layout.
393
+ * @param blocks - All flow blocks.
394
+ * @param measures - All measurements.
395
+ * @param pmPosition - The PM position.
396
+ * @returns Caret position, or null if not found.
397
+ */
398
+ function getCaretPosition(layout, blocks, measures, pmPosition) {
399
+ for (let pageIndex = 0; pageIndex < layout.pages.length; pageIndex++) {
400
+ const page = layout.pages[pageIndex];
401
+ const pageTopY = getPageTop(layout, pageIndex);
402
+ for (const fragment of page.fragments) {
403
+ if (fragment.kind === "paragraph") {
404
+ const blockIndex = findBlockById(blocks, fragment.blockId);
405
+ if (blockIndex === -1) continue;
406
+ const block = blocks[blockIndex];
407
+ const measure = measures[blockIndex];
408
+ if (!block || block.kind !== "paragraph") continue;
409
+ if (!measure || measure.kind !== "paragraph") continue;
410
+ const paragraphBlock = block;
411
+ const paragraphMeasure = measure;
412
+ const paragraphFragment = fragment;
413
+ const blockPmStart = paragraphBlock.pmStart ?? 0;
414
+ const blockPmEnd = paragraphBlock.pmEnd ?? blockPmStart;
415
+ if (pmPosition < blockPmStart || pmPosition > blockPmEnd) continue;
416
+ for (let lineIndex = paragraphFragment.fromLine; lineIndex < paragraphFragment.toLine; lineIndex++) {
417
+ const line = paragraphMeasure.lines[lineIndex];
418
+ if (!line) continue;
419
+ const range = computeLinePmRange(paragraphBlock, line);
420
+ if (range.pmStart === void 0 || range.pmEnd === void 0) continue;
421
+ if (pmPosition >= range.pmStart && pmPosition <= range.pmEnd) {
422
+ const charOffset = pmPosToCharOffset(paragraphBlock, line, pmPosition);
423
+ const indent = paragraphBlock.attrs?.indent;
424
+ const indentLeft = indent?.left ?? 0;
425
+ const indentRight = indent?.right ?? 0;
426
+ const availableWidth = Math.max(0, fragment.width - indentLeft - indentRight);
427
+ const x = charOffsetToX(paragraphBlock, line, charOffset, availableWidth);
428
+ const alignment = paragraphBlock.attrs?.alignment ?? "left";
429
+ let alignmentOffset = 0;
430
+ if (alignment === "center") alignmentOffset = Math.max(0, (availableWidth - line.width) / 2);
431
+ else if (alignment === "right") alignmentOffset = Math.max(0, availableWidth - line.width);
432
+ const lineOffset = measuredLineContentOffset(paragraphMeasure.lines, paragraphFragment.fromLine, lineIndex);
433
+ return {
434
+ x: fragment.x + indentLeft + alignmentOffset + x,
435
+ y: fragment.y + lineOffset + pageTopY,
436
+ height: line.lineHeight,
437
+ pageIndex
438
+ };
439
+ }
440
+ }
441
+ }
442
+ if (fragment.kind === "image") {
443
+ const fragPmStart = fragment.pmStart ?? 0;
444
+ const fragPmEnd = fragment.pmEnd ?? fragPmStart + 1;
445
+ if (pmPosition >= fragPmStart && pmPosition <= fragPmEnd) {
446
+ const xOffset = pmPosition === fragPmStart ? 0 : fragment.width;
447
+ return {
448
+ x: fragment.x + xOffset,
449
+ y: fragment.y + pageTopY,
450
+ height: fragment.height,
451
+ pageIndex
452
+ };
453
+ }
454
+ }
455
+ }
456
+ }
457
+ return null;
458
+ }
459
+ /**
460
+ * Check if a selection spans multiple pages.
461
+ *
462
+ * @param rects - Selection rectangles.
463
+ * @returns True if selection spans multiple pages.
464
+ */
465
+ function isMultiPageSelection(rects) {
466
+ if (rects.length <= 1) return false;
467
+ return new Set(rects.map((r) => r.pageIndex)).size > 1;
468
+ }
469
+ /**
470
+ * Get selection rectangles grouped by page.
471
+ *
472
+ * @param rects - Selection rectangles.
473
+ * @returns Map of page index to rectangles on that page.
474
+ */
475
+ function groupRectsByPage(rects) {
476
+ const map = /* @__PURE__ */ new Map();
477
+ for (const rect of rects) {
478
+ const pageRects = map.get(rect.pageIndex) ?? [];
479
+ pageRects.push(rect);
480
+ map.set(rect.pageIndex, pageRects);
481
+ }
482
+ return map;
483
+ }
484
+ //#endregion
485
+ export { getCaretPosition, groupRectsByPage, isMultiPageSelection, selectionToRects };
@@ -0,0 +1,7 @@
1
+ import { document_d_exports } from "../../types/document.js";
2
+
3
+ //#region src/layout-bridge/engine/tableWidthUtils.d.ts
4
+ declare function resolveTableWidthPx(width: number | undefined, widthType: document_d_exports.TableWidthType | undefined, containerWidth: number): number | undefined;
5
+ declare function normalizeTableColumnWidths(widths: number[], columnCount: number, targetWidth: number): number[];
6
+ //#endregion
7
+ export { normalizeTableColumnWidths, resolveTableWidthPx };
@@ -0,0 +1,25 @@
1
+ //#region src/layout-bridge/engine/tableWidthUtils.ts
2
+ const TWIPS_PER_INCH = 1440;
3
+ const PX_PER_INCH = 96;
4
+ const PCT_DENOMINATOR = 5e3;
5
+ const twipsToPixels = (twips) => twips / TWIPS_PER_INCH * PX_PER_INCH;
6
+ function resolveTableWidthPx(width, widthType, containerWidth) {
7
+ if (width === void 0 || width <= 0) return;
8
+ if (widthType === "dxa") return twipsToPixels(width);
9
+ if (widthType === "pct") return width / PCT_DENOMINATOR * containerWidth;
10
+ }
11
+ function normalizeTableColumnWidths(widths, columnCount, targetWidth) {
12
+ if (columnCount <= 0) return [];
13
+ if (widths.length === 0) return Array.from({ length: columnCount }, () => targetWidth / columnCount);
14
+ const normalized = widths.slice(0, columnCount);
15
+ const positives = normalized.filter((width) => width > 0);
16
+ const fallback = positives.length > 0 ? positives.reduce((sum, width) => sum + width, 0) / positives.length : targetWidth / columnCount;
17
+ while (normalized.length < columnCount) normalized.push(fallback);
18
+ let fixedTotal = 0;
19
+ for (const width of normalized) if (width > 0) fixedTotal += width;
20
+ const missingCount = normalized.filter((width) => width <= 0).length;
21
+ const missingWidth = missingCount > 0 ? Math.max(0, targetWidth - fixedTotal) / missingCount : 0;
22
+ return normalized.map((width) => width > 0 ? width : missingWidth);
23
+ }
24
+ //#endregion
25
+ export { normalizeTableColumnWidths, resolveTableWidthPx };
@@ -0,0 +1,44 @@
1
+ import { BlockId, BorderStyle, CellBorderSpec, CellBorders, ColumnBreakBlock, ColumnBreakMeasure, ColumnLayout, DEFAULT_TEXTBOX_MARGINS, DEFAULT_TEXTBOX_WIDTH, DocumentPosition, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, FieldRun, FloatingTablePosition, FlowBlock, FootnoteContent, Fragment, FragmentBase, HeaderFooterContent, HeaderFooterContentHeights, HeaderFooterLayout, HitTestResult, HyperlinkInfo, ImageBlock, ImageFragment, ImageMeasure, ImageRun, ImageRunPosition, Layout, LayoutOptions, LineBreakRun, ListNumPr, MathRun, Measure, MeasuredLine, Page, PageBreakBlock, PageBreakMeasure, PageHeaderFooterRefs, PageMargins, ParagraphAttrs, ParagraphBlock, ParagraphBorders, ParagraphFragment, ParagraphIndent, ParagraphMeasure, ParagraphSpacing, Run, RunFormatting, SdtGroup, SectionBreakBlock, SectionBreakMeasure, TabAlignment, TabRun, TabStop, TableBlock, TableCell, TableCellMeasure, TableFragment, TableMeasure, TableRow, TableRowMeasure, TextBoxBlock, TextBoxFlowAttrs, TextBoxFragment, TextBoxMeasure, TextRun, floatingTextBoxReservesBand, floatingTextBoxWrapsText, isFloatingImageRun, isFloatingTextBoxBlock, isTextWrappingFloatingImageRun } from "./types.js";
2
+ import { PageState, Paginator, PaginatorOptions, createPaginator } from "./paginator.js";
3
+ import { KeepNextChain, calculateChainHeight, computeKeepNextChains, getMidChainIndices, hasKeepLines, hasPageBreakBefore } from "./keep-together.js";
4
+ import { BreakDecision, SectionState, applyPendingToActive, createInitialSectionState, getEffectiveColumns, getEffectiveMargins, getEffectivePageSize, scheduleSectionBreak } from "./section-breaks.js";
5
+
6
+ //#region src/layout-engine/index.d.ts
7
+ type SectionLayoutConfig = {
8
+ pageSize: {
9
+ w: number;
10
+ h: number;
11
+ };
12
+ margins: PageMargins;
13
+ columns?: ColumnLayout;
14
+ };
15
+ declare function collectSectionConfigs(blocks: FlowBlock[], initialConfig: SectionLayoutConfig, finalConfig: SectionLayoutConfig): {
16
+ configs: SectionLayoutConfig[];
17
+ breakIndices: number[];
18
+ };
19
+ /**
20
+ * Apply contextual spacing suppression (OOXML §17.3.1.9).
21
+ *
22
+ * When two consecutive paragraph blocks both have `contextualSpacing: true`
23
+ * and share the same `styleId`, the spaceAfter of the first paragraph and
24
+ * the spaceBefore of the second paragraph are suppressed (set to 0).
25
+ *
26
+ * This mutates the block attrs in-place before layout runs.
27
+ */
28
+ declare function applyContextualSpacing(blocks: FlowBlock[]): void;
29
+ /**
30
+ * Layout a document: convert blocks + measures into pages with positioned fragments.
31
+ *
32
+ * Algorithm:
33
+ * 1. Walk blocks in order with their corresponding measures
34
+ * 2. For each block, create appropriate fragment(s)
35
+ * 3. Use paginator to manage page/column state
36
+ * 4. Handle page breaks, section breaks, and keepNext chains
37
+ */
38
+ declare function layoutDocument(blocks: FlowBlock[], measures: Measure[], options: LayoutOptions): Layout;
39
+ /**
40
+ * Calculate total height of header rows from their measures.
41
+ */
42
+ declare function getHeaderRowsHeight(measure: TableMeasure, headerRowCount: number): number;
43
+ //#endregion
44
+ export { BlockId, BorderStyle, type BreakDecision, CellBorderSpec, CellBorders, ColumnBreakBlock, ColumnBreakMeasure, ColumnLayout, DEFAULT_TEXTBOX_MARGINS, DEFAULT_TEXTBOX_WIDTH, DocumentPosition, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, FieldRun, FloatingTablePosition, FlowBlock, FootnoteContent, Fragment, FragmentBase, HeaderFooterContent, HeaderFooterContentHeights, HeaderFooterLayout, HitTestResult, HyperlinkInfo, ImageBlock, ImageFragment, ImageMeasure, ImageRun, ImageRunPosition, type KeepNextChain, Layout, LayoutOptions, LineBreakRun, ListNumPr, MathRun, Measure, MeasuredLine, Page, PageBreakBlock, PageBreakMeasure, PageHeaderFooterRefs, PageMargins, type PageState, type Paginator, type PaginatorOptions, ParagraphAttrs, ParagraphBlock, ParagraphBorders, ParagraphFragment, ParagraphIndent, ParagraphMeasure, ParagraphSpacing, Run, RunFormatting, SdtGroup, SectionBreakBlock, SectionBreakMeasure, SectionLayoutConfig, type SectionState, TabAlignment, TabRun, TabStop, TableBlock, TableCell, TableCellMeasure, TableFragment, TableMeasure, TableRow, TableRowMeasure, TextBoxBlock, TextBoxFlowAttrs, TextBoxFragment, TextBoxMeasure, TextRun, applyContextualSpacing, applyPendingToActive, calculateChainHeight, collectSectionConfigs, computeKeepNextChains, createInitialSectionState, createPaginator, floatingTextBoxReservesBand, floatingTextBoxWrapsText, getEffectiveColumns, getEffectiveMargins, getEffectivePageSize, getHeaderRowsHeight, getMidChainIndices, hasKeepLines, hasPageBreakBefore, isFloatingImageRun, isFloatingTextBoxBlock, isTextWrappingFloatingImageRun, layoutDocument, scheduleSectionBreak };