@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,112 @@
1
+ import { parseRelationships, resolveRelativePath } from "../docx/relsParser.js";
2
+ import { unzipDocx } from "../docx/unzip.js";
3
+ import { deobfuscateFont, isValidFontKey } from "./fontDeobfuscation.js";
4
+ import { parseEmbeddedFontTable } from "./embeddedFontTable.js";
5
+ //#region src/fonts/embeddedFonts.ts
6
+ /**
7
+ * Embedded-font extraction.
8
+ *
9
+ * Turns the obfuscated `word/fonts/*.odttf` binaries a `.docx` carries into
10
+ * de-obfuscated OpenType/TrueType faces the renderer can register as
11
+ * `@font-face`s, so documents whose fonts are embedded (rather than installed)
12
+ * render in their authored fonts instead of a fallback.
13
+ *
14
+ * The core is pure and framework-free: {@link getEmbeddedFontFaces} works over
15
+ * already-unzipped package parts; {@link extractEmbeddedFonts} is the buffer
16
+ * convenience that unzips first. Neither touches the DOM. Round-trip
17
+ * preservation is unaffected: the serializer copies `word/fonts/*` and
18
+ * `fontTable.xml` from the original ZIP untouched, so this is a read-only view.
19
+ *
20
+ * Ported from eigenpal/docx-editor (see NOTICE.md).
21
+ */
22
+ /** Pairs each embed field with the CSS weight/style it renders as. */
23
+ const EMBED_KINDS = [
24
+ {
25
+ ref: "embedRegular",
26
+ weight: 400,
27
+ style: "normal"
28
+ },
29
+ {
30
+ ref: "embedBold",
31
+ weight: 700,
32
+ style: "normal"
33
+ },
34
+ {
35
+ ref: "embedItalic",
36
+ weight: 400,
37
+ style: "italic"
38
+ },
39
+ {
40
+ ref: "embedBoldItalic",
41
+ weight: 700,
42
+ style: "italic"
43
+ }
44
+ ];
45
+ const FONTTABLE_RELS_BASE_PATH = "word/_rels/fontTable.xml.rels";
46
+ const FONTTABLE_RELS_PATH = "word/_rels/fonttable.xml.rels";
47
+ /** Normalize a package path for comparison: drop leading slashes, lowercase. */
48
+ function normalizePackagePath(path) {
49
+ return path.replace(/^\/+/u, "").toLowerCase();
50
+ }
51
+ /**
52
+ * Find the font binary for an already-resolved package path (e.g.
53
+ * `word/fonts/font1.odttf`) in the unzipped font map, matched case- and
54
+ * leading-slash-insensitively (ZIP entry casing/prefixes vary across producers).
55
+ */
56
+ function lookupFontData(resolvedPath, fonts) {
57
+ const wanted = normalizePackagePath(resolvedPath);
58
+ for (const [path, data] of fonts) if (normalizePackagePath(path) === wanted) return data;
59
+ }
60
+ function resolveFace(family, ref, kind, fonts, rels) {
61
+ const target = rels.get(ref.relId)?.target;
62
+ if (!target) return null;
63
+ const raw = lookupFontData(resolveRelativePath(FONTTABLE_RELS_BASE_PATH, target), fonts);
64
+ if (!raw) return null;
65
+ const bytes = new Uint8Array(raw);
66
+ const data = ref.fontKey && isValidFontKey(ref.fontKey) ? deobfuscateFont(bytes, ref.fontKey) : bytes;
67
+ return {
68
+ family,
69
+ style: kind.style,
70
+ weight: kind.weight,
71
+ bytes: data,
72
+ subsetted: ref.subsetted ?? false
73
+ };
74
+ }
75
+ /**
76
+ * Resolve and de-obfuscate every embedded font face declared in a font table.
77
+ * Pure and DOM-free. Faces whose relationship or binary is missing are skipped,
78
+ * so the result only contains faces that produced usable bytes.
79
+ */
80
+ function getEmbeddedFontFaces(parts) {
81
+ const entries = parseEmbeddedFontTable(parts.fontTableXml);
82
+ if (entries.length === 0) return [];
83
+ if (!parts.fontTableRelsXml || parts.fonts.size === 0) return [];
84
+ const rels = parseRelationships(parts.fontTableRelsXml);
85
+ const faces = [];
86
+ for (const entry of entries) for (const kind of EMBED_KINDS) {
87
+ const ref = entry[kind.ref];
88
+ if (!ref) continue;
89
+ const face = resolveFace(entry.name, ref, kind, parts.fonts, rels);
90
+ if (face) faces.push(face);
91
+ }
92
+ return faces;
93
+ }
94
+ function findFontTableRels(allXml) {
95
+ for (const [path, xml] of allXml) if (normalizePackagePath(path) === FONTTABLE_RELS_PATH) return xml;
96
+ }
97
+ /**
98
+ * Extract every embedded font face from a raw `.docx` buffer. Unzips the
99
+ * package, then resolves + de-obfuscates the faces via
100
+ * {@link getEmbeddedFontFaces}. Returns an empty list for documents with no
101
+ * embedded fonts.
102
+ */
103
+ async function extractEmbeddedFonts(buffer) {
104
+ const raw = await unzipDocx(buffer);
105
+ return getEmbeddedFontFaces({
106
+ fontTableXml: raw.fontTableXml,
107
+ fontTableRelsXml: findFontTableRels(raw.allXml),
108
+ fonts: raw.fonts
109
+ });
110
+ }
111
+ //#endregion
112
+ export { extractEmbeddedFonts, getEmbeddedFontFaces };
@@ -0,0 +1,30 @@
1
+ //#region src/fonts/fontDeobfuscation.d.ts
2
+ /**
3
+ * Embedded-font de-obfuscation (ECMA-376 Part 4 §2.8.1, "Font Embedding").
4
+ *
5
+ * Word ships embedded fonts as obfuscated OpenType (`.odttf`): the first 32
6
+ * bytes of the font binary are XOR-scrambled with a 16-byte key; the rest of
7
+ * the file is untouched. The key is the font's `w:fontKey` GUID with its byte
8
+ * order reversed, applied to bytes 0-15 and again to bytes 16-31.
9
+ *
10
+ * Example (from the spec): GUID `001B70DC-AA60-4AD5-90EC-18A0948E1EAE` yields
11
+ * key bytes `AE 1E 8E 94 A0 18 EC 90 D5 4A 60 AA DC 70 1B 00`. The scheme is a
12
+ * pure XOR, so the same operation obfuscates and de-obfuscates.
13
+ *
14
+ * Ported from eigenpal/docx-editor (see NOTICE.md). The ODTTF scheme is an
15
+ * OOXML interop format, so the algorithm is reproduced faithfully.
16
+ */
17
+ /**
18
+ * Whether a string is a usable embedded-font obfuscation key: a 128-bit GUID,
19
+ * with or without braces and hyphens.
20
+ */
21
+ declare function isValidFontKey(fontKey: string | undefined | null): boolean;
22
+ /**
23
+ * De-obfuscate an embedded `.odttf` font into a usable OpenType/TrueType binary
24
+ * by XOR-ing its first 32 bytes with the reversed `w:fontKey` GUID. Returns a
25
+ * new array; the input is not mutated. Throws when `fontKey` is not a valid
26
+ * 128-bit GUID (guard with {@link isValidFontKey} first).
27
+ */
28
+ declare function deobfuscateFont(data: Uint8Array, fontKey: string): Uint8Array<ArrayBuffer>;
29
+ //#endregion
30
+ export { deobfuscateFont, isValidFontKey };
@@ -0,0 +1,57 @@
1
+ //#region src/fonts/fontDeobfuscation.ts
2
+ /**
3
+ * Embedded-font de-obfuscation (ECMA-376 Part 4 §2.8.1, "Font Embedding").
4
+ *
5
+ * Word ships embedded fonts as obfuscated OpenType (`.odttf`): the first 32
6
+ * bytes of the font binary are XOR-scrambled with a 16-byte key; the rest of
7
+ * the file is untouched. The key is the font's `w:fontKey` GUID with its byte
8
+ * order reversed, applied to bytes 0-15 and again to bytes 16-31.
9
+ *
10
+ * Example (from the spec): GUID `001B70DC-AA60-4AD5-90EC-18A0948E1EAE` yields
11
+ * key bytes `AE 1E 8E 94 A0 18 EC 90 D5 4A 60 AA DC 70 1B 00`. The scheme is a
12
+ * pure XOR, so the same operation obfuscates and de-obfuscates.
13
+ *
14
+ * Ported from eigenpal/docx-editor (see NOTICE.md). The ODTTF scheme is an
15
+ * OOXML interop format, so the algorithm is reproduced faithfully.
16
+ */
17
+ const HEADER_LENGTH = 32;
18
+ const KEY_LENGTH = 16;
19
+ /**
20
+ * Strip a `w:fontKey` GUID down to its 16 key bytes, in the reversed order the
21
+ * obfuscation applies. Returns null when the value is not a 32-hex-digit GUID.
22
+ */
23
+ function fontKeyToReversedBytes(fontKey) {
24
+ const hex = fontKey.replace(/[^0-9a-fA-F]/gu, "");
25
+ if (hex.length !== KEY_LENGTH * 2) return null;
26
+ const reversed = new Uint8Array(KEY_LENGTH);
27
+ for (let i = 0; i < KEY_LENGTH; i++) {
28
+ const byte = Number.parseInt(hex.slice(i * 2, i * 2 + 2), 16);
29
+ if (Number.isNaN(byte)) return null;
30
+ reversed[KEY_LENGTH - 1 - i] = byte;
31
+ }
32
+ return reversed;
33
+ }
34
+ /**
35
+ * Whether a string is a usable embedded-font obfuscation key: a 128-bit GUID,
36
+ * with or without braces and hyphens.
37
+ */
38
+ function isValidFontKey(fontKey) {
39
+ if (!fontKey) return false;
40
+ return fontKeyToReversedBytes(fontKey) !== null;
41
+ }
42
+ /**
43
+ * De-obfuscate an embedded `.odttf` font into a usable OpenType/TrueType binary
44
+ * by XOR-ing its first 32 bytes with the reversed `w:fontKey` GUID. Returns a
45
+ * new array; the input is not mutated. Throws when `fontKey` is not a valid
46
+ * 128-bit GUID (guard with {@link isValidFontKey} first).
47
+ */
48
+ function deobfuscateFont(data, fontKey) {
49
+ const key = fontKeyToReversedBytes(fontKey);
50
+ if (!key) throw new Error(`Invalid embedded-font key: "${fontKey}"`);
51
+ const out = new Uint8Array(data);
52
+ const end = Math.min(HEADER_LENGTH, out.length);
53
+ for (let i = 0; i < end; i++) out[i] = (out[i] ?? 0) ^ (key[i % KEY_LENGTH] ?? 0);
54
+ return out;
55
+ }
56
+ //#endregion
57
+ export { deobfuscateFont, isValidFontKey };
@@ -0,0 +1,28 @@
1
+ import { FolioAIBlock, FolioAIBlockAnchor, FolioAIBlockKind, FolioAIBlockPreviewRun, FolioAIComment, FolioAIEditAppliedOperation, FolioAIEditApplyMode, FolioAIEditApplyResult, FolioAIEditOperation, FolioAIEditReviewMeta, FolioAIEditSeverity, FolioAIEditSkipReason, FolioAIEditSkippedOperation, FolioAIEditSnapshot, FolioAISignatureParty } from "./ai-edits/types.js";
2
+ import { applyFolioAIEditOperations } from "./ai-edits/apply.js";
3
+ import { document_d_exports } from "./types/document.js";
4
+ import { createFolioAIEditSnapshot, hashFolioAIBlockText, normalizeFolioAIBlockText } from "./ai-edits/snapshot.js";
5
+ import { DeriveBlockIdInput, FolioBlockId, deriveBlockId, getFolioParaIdFromBlockId, isFolioBlockId, isSequentialFolioBlockId } from "./types/block-id.js";
6
+ import { WordDiffSegment, diffWordSegments } from "./ai-edits/word-diff.js";
7
+ import { AIBarStatus, AIChatMode, AICitation, AICitationSource, AIGenerateInput, AISuggestion, AISuggestionApplyMode, AISuggestionPreset, AISuggestionSeverity, AISuggestionStatus, DEFAULT_AI_SUGGESTION_PRESETS } from "./ai-suggestions/types.js";
8
+ import { ApplyResult, applySuggestions } from "./ai-suggestions/apply.js";
9
+ import { ResolvedAnchor, isSuggestionStale, resolveSuggestionAnchor } from "./ai-suggestions/conflict.js";
10
+ import { PositionalText, buildPositionalText } from "./ai-suggestions/text-positions.js";
11
+ import { TemplatePreviewSpan, TemplatePreviewValue, TemplatePreviewValues, setTemplatePreviewValues } from "./prosemirror/plugins/templatePreviewValues.js";
12
+ import { DocxCompatibility } from "./docx/compatibility.js";
13
+ import { createDocx } from "./docx/rezip.js";
14
+ import { EmbeddedFont, EmbeddedFontParts, extractEmbeddedFonts, getEmbeddedFontFaces } from "./fonts/embeddedFonts.js";
15
+ import { CreateEmptyDocumentOptions, createEmptyDocument } from "./utils/createDocument.js";
16
+ import { setAISuggestionsMeta, setFocusedSuggestionMeta } from "./prosemirror/plugins/aiSuggestionDecorations.js";
17
+ import { scrollFolioPositionIntoView } from "./paged-layout/scrollToPmPosition.js";
18
+ import { getFolioCaretViewportRect, getFolioSelectionViewportRect } from "./paged-layout/selectionViewportRect.js";
19
+ import { AICitationRange, createAICitationDecorationsPlugin, setAICitationsMeta, setActiveCitationMeta } from "./prosemirror/plugins/aiCitationDecorations.js";
20
+ import { AnonymizationMatch, AnonymizationTerm, anonymizationDecorationsKey, getAnonymizationMatches, setAnonymizationTermsMeta } from "./prosemirror/plugins/anonymizationDecorations.js";
21
+ import { DirectiveKind, DirectiveRange, getTemplateDirectives, scanDirectives } from "./prosemirror/plugins/templateDirectives.js";
22
+ import { TemplateSlashMenuKeyAction, TemplateSlashMenuState, clearTemplateSlashMenu, consumeTemplateSlashQuery, getTemplateSlashMenu, resetTemplateSlashQuery, templateSlashMenuKey } from "./prosemirror/plugins/templateSlashMenu.js";
23
+ import { AcceptAutocompleteResult, AutocompleteSuggestionPluginOptions, AutocompleteSuggestionState, AutocompleteSuggestionStatus, AutocompleteTriggerCheck, AutocompleteTriggerOptions, AutocompleteTriggerSkipReason, DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, acceptAutocompleteSuggestion, acceptAutocompleteWord, appendAutocompleteToken, autocompleteSuggestionKey, autocompleteSuggestionPlugin, clearAutocompleteSuggestion, finishAutocompleteSuggestion, getAutocompleteSuggestion, shouldTriggerAutocomplete, startAutocompleteSuggestion } from "./prosemirror/plugins/autocompleteSuggestion.js";
24
+ import { ImageMeta, ImageRef, MarkdownOptions, MarkdownResult } from "./markdown/types.js";
25
+ import { fromMarkdown } from "./markdown/fromMarkdown.js";
26
+ import { toMarkdown, toMarkdownResult } from "./markdown/index.js";
27
+ type Document = document_d_exports.Document;
28
+ export { type AIBarStatus, type AIChatMode, type AICitation, type AICitationRange, type AICitationSource, type AIGenerateInput, type AISuggestion, type AISuggestionApplyMode, type AISuggestionPreset, type AISuggestionSeverity, type AISuggestionStatus, type AcceptAutocompleteResult, type AnonymizationMatch, type AnonymizationTerm, type ApplyResult, type AutocompleteSuggestionPluginOptions, type AutocompleteSuggestionState, type AutocompleteSuggestionStatus, type AutocompleteTriggerCheck, type AutocompleteTriggerOptions, type AutocompleteTriggerSkipReason, type CreateEmptyDocumentOptions, DEFAULT_AI_SUGGESTION_PRESETS, DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, type DeriveBlockIdInput, type DirectiveKind, type DirectiveRange, type Document, type DocxCompatibility, type EmbeddedFont, type EmbeddedFontParts, type FolioAIBlock, type FolioAIBlockAnchor, type FolioAIBlockKind, type FolioAIBlockPreviewRun, type FolioAIComment, type FolioAIEditAppliedOperation, type FolioAIEditApplyMode, type FolioAIEditApplyResult, type FolioAIEditOperation, type FolioAIEditReviewMeta, type FolioAIEditSeverity, type FolioAIEditSkipReason, type FolioAIEditSkippedOperation, type FolioAIEditSnapshot, type FolioAISignatureParty, type FolioBlockId, type ImageMeta, type ImageRef, type MarkdownOptions, type MarkdownResult, type PositionalText, type ResolvedAnchor, type TemplatePreviewSpan, type TemplatePreviewValue, type TemplatePreviewValues, type TemplateSlashMenuKeyAction, type TemplateSlashMenuState, type WordDiffSegment, acceptAutocompleteSuggestion, acceptAutocompleteWord, anonymizationDecorationsKey, appendAutocompleteToken, applyFolioAIEditOperations, applySuggestions, autocompleteSuggestionKey, autocompleteSuggestionPlugin, buildPositionalText, clearAutocompleteSuggestion, clearTemplateSlashMenu, consumeTemplateSlashQuery, createAICitationDecorationsPlugin, createDocx, createEmptyDocument, createFolioAIEditSnapshot, deriveBlockId, diffWordSegments, extractEmbeddedFonts, finishAutocompleteSuggestion, fromMarkdown, getAnonymizationMatches, getAutocompleteSuggestion, getEmbeddedFontFaces, getFolioCaretViewportRect, getFolioParaIdFromBlockId, getFolioSelectionViewportRect, getTemplateDirectives, getTemplateSlashMenu, hashFolioAIBlockText, isFolioBlockId, isSequentialFolioBlockId, isSuggestionStale, normalizeFolioAIBlockText, resetTemplateSlashQuery, resolveSuggestionAnchor, scanDirectives, scrollFolioPositionIntoView, setAICitationsMeta, setAISuggestionsMeta, setActiveCitationMeta, setAnonymizationTermsMeta, setFocusedSuggestionMeta, setTemplatePreviewValues, shouldTriggerAutocomplete, startAutocompleteSuggestion, templateSlashMenuKey, toMarkdown, toMarkdownResult };
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ import { createEmptyDocument } from "./utils/createDocument.js";
2
+ import { createDocx } from "./docx/rezip.js";
3
+ import { deriveBlockId, getFolioParaIdFromBlockId, isFolioBlockId, isSequentialFolioBlockId } from "./types/block-id.js";
4
+ import { DEFAULT_AI_SUGGESTION_PRESETS } from "./ai-suggestions/types.js";
5
+ import { buildPositionalText } from "./ai-suggestions/text-positions.js";
6
+ import { isSuggestionStale, resolveSuggestionAnchor } from "./ai-suggestions/conflict.js";
7
+ import { applySuggestions } from "./ai-suggestions/apply.js";
8
+ import { createFolioAIEditSnapshot, hashFolioAIBlockText, normalizeFolioAIBlockText } from "./ai-edits/snapshot.js";
9
+ import { diffWordSegments } from "./ai-edits/word-diff.js";
10
+ import { applyFolioAIEditOperations } from "./ai-edits/apply.js";
11
+ import { setAISuggestionsMeta, setFocusedSuggestionMeta } from "./prosemirror/plugins/aiSuggestionDecorations.js";
12
+ import { scrollFolioPositionIntoView } from "./paged-layout/scrollToPmPosition.js";
13
+ import { getFolioCaretViewportRect, getFolioSelectionViewportRect } from "./paged-layout/selectionViewportRect.js";
14
+ import { createAICitationDecorationsPlugin, setAICitationsMeta, setActiveCitationMeta } from "./prosemirror/plugins/aiCitationDecorations.js";
15
+ import { anonymizationDecorationsKey, getAnonymizationMatches, setAnonymizationTermsMeta } from "./prosemirror/plugins/anonymizationDecorations.js";
16
+ import { getTemplateDirectives, scanDirectives } from "./prosemirror/plugins/templateDirectives.js";
17
+ import { setTemplatePreviewValues } from "./prosemirror/plugins/templatePreviewValues.js";
18
+ import { clearTemplateSlashMenu, consumeTemplateSlashQuery, getTemplateSlashMenu, resetTemplateSlashQuery, templateSlashMenuKey } from "./prosemirror/plugins/templateSlashMenu.js";
19
+ import { DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, acceptAutocompleteSuggestion, acceptAutocompleteWord, appendAutocompleteToken, autocompleteSuggestionKey, autocompleteSuggestionPlugin, clearAutocompleteSuggestion, finishAutocompleteSuggestion, getAutocompleteSuggestion, shouldTriggerAutocomplete, startAutocompleteSuggestion } from "./prosemirror/plugins/autocompleteSuggestion.js";
20
+ import { fromMarkdown } from "./markdown/fromMarkdown.js";
21
+ import { toMarkdown, toMarkdownResult } from "./markdown/index.js";
22
+ import { extractEmbeddedFonts, getEmbeddedFontFaces } from "./fonts/embeddedFonts.js";
23
+ export { DEFAULT_AI_SUGGESTION_PRESETS, DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, acceptAutocompleteSuggestion, acceptAutocompleteWord, anonymizationDecorationsKey, appendAutocompleteToken, applyFolioAIEditOperations, applySuggestions, autocompleteSuggestionKey, autocompleteSuggestionPlugin, buildPositionalText, clearAutocompleteSuggestion, clearTemplateSlashMenu, consumeTemplateSlashQuery, createAICitationDecorationsPlugin, createDocx, createEmptyDocument, createFolioAIEditSnapshot, deriveBlockId, diffWordSegments, extractEmbeddedFonts, finishAutocompleteSuggestion, fromMarkdown, getAnonymizationMatches, getAutocompleteSuggestion, getEmbeddedFontFaces, getFolioCaretViewportRect, getFolioParaIdFromBlockId, getFolioSelectionViewportRect, getTemplateDirectives, getTemplateSlashMenu, hashFolioAIBlockText, isFolioBlockId, isSequentialFolioBlockId, isSuggestionStale, normalizeFolioAIBlockText, resetTemplateSlashQuery, resolveSuggestionAnchor, scanDirectives, scrollFolioPositionIntoView, setAICitationsMeta, setAISuggestionsMeta, setActiveCitationMeta, setAnonymizationTermsMeta, setFocusedSuggestionMeta, setTemplatePreviewValues, shouldTriggerAutocomplete, startAutocompleteSuggestion, templateSlashMenuKey, toMarkdown, toMarkdownResult };
@@ -0,0 +1,57 @@
1
+ import { document_d_exports } from "../../types/document.js";
2
+ import { FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, FlowBlock, FootnoteContent, Measure, Page } from "../../layout-engine/types.js";
3
+
4
+ //#region src/layout-bridge/convert/footnoteLayout.d.ts
5
+ type MeasureBlocksFn = (blocks: FlowBlock[], contentWidth: number) => Measure[];
6
+ type ConvertFootnoteOptions = {
7
+ styles?: document_d_exports.StyleDefinitions | null;
8
+ theme?: document_d_exports.Theme | null;
9
+ measureBlocks?: MeasureBlocksFn; /** Document-wide `w:defaultTabStop` in twips — forwarded to toFlowBlocks. */
10
+ defaultTabStopTwips?: number;
11
+ };
12
+ /**
13
+ * Scan FlowBlocks for runs with footnoteRefId set.
14
+ * Returns a list of { footnoteId, pmPos } in document order.
15
+ *
16
+ * Recurses into table cells and text-box content so footnote references
17
+ * nested in tables (incl. tables-within-cells) and text boxes still reach
18
+ * the page-assignment step. Without this walk, inline footnote markers
19
+ * render inside the body but never get an entry in the per-page footnote
20
+ * area.
21
+ */
22
+ declare function collectFootnoteRefs(blocks: FlowBlock[]): {
23
+ footnoteId: number;
24
+ pmPos: number;
25
+ }[];
26
+ /**
27
+ * After layout, determine which footnotes appear on which pages.
28
+ * Checks each page's fragments to see if any footnoteRef PM positions fall within.
29
+ *
30
+ * Returns Map<pageNumber, footnoteId[]> in document order.
31
+ */
32
+ declare function mapFootnotesToPages(pages: Page[], footnoteRefs: {
33
+ footnoteId: number;
34
+ pmPos: number;
35
+ }[]): Map<number, number[]>;
36
+ /**
37
+ * Convert a Footnote's content paragraphs to FlowBlocks suitable for rendering.
38
+ * Prepends the display number to the first run of the first paragraph.
39
+ */
40
+ declare function convertFootnoteToContent(footnote: document_d_exports.Footnote, displayNumber: number, contentWidth: number, options?: ConvertFootnoteOptions): FootnoteContent;
41
+ declare function applyFootnotePresentation(blocks: FlowBlock[], displayNumber: number): FlowBlock[];
42
+ /**
43
+ * Build footnote content for all footnotes referenced in the document.
44
+ * Returns a Map<footnoteId, FootnoteContent>.
45
+ */
46
+ declare function buildFootnoteContentMap(footnotes: document_d_exports.Footnote[], footnoteRefs: {
47
+ footnoteId: number;
48
+ }[], contentWidth: number, options?: ConvertFootnoteOptions): Map<number, FootnoteContent>;
49
+ /**
50
+ * Calculate per-page footnote reserved heights.
51
+ * Returns Map<pageNumber, reservedHeight>.
52
+ */
53
+ declare function calculateFootnoteReservedHeights(pageFootnoteMap: Map<number, number[]>, footnoteContentMap: Map<number, {
54
+ height: number;
55
+ }>): Map<number, number>;
56
+ //#endregion
57
+ export { ConvertFootnoteOptions, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, MeasureBlocksFn, applyFootnotePresentation, buildFootnoteContentMap, calculateFootnoteReservedHeights, collectFootnoteRefs, convertFootnoteToContent, mapFootnotesToPages };
@@ -0,0 +1,316 @@
1
+ import { DEFAULT_TEXTBOX_MARGINS, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT } from "../../layout-engine/types.js";
2
+ import { measureParagraph } from "../../layout-engine/measure/measureParagraph.js";
3
+ import { toFlowBlocks } from "./toFlowBlocks.js";
4
+ import { footnoteToProseDoc } from "../../prosemirror/conversion/toProseDoc.js";
5
+ //#region src/layout-bridge/convert/footnoteLayout.ts
6
+ /** Default footnote font size in points */
7
+ const FOOTNOTE_FONT_SIZE = 8;
8
+ /**
9
+ * Scan FlowBlocks for runs with footnoteRefId set.
10
+ * Returns a list of { footnoteId, pmPos } in document order.
11
+ *
12
+ * Recurses into table cells and text-box content so footnote references
13
+ * nested in tables (incl. tables-within-cells) and text boxes still reach
14
+ * the page-assignment step. Without this walk, inline footnote markers
15
+ * render inside the body but never get an entry in the per-page footnote
16
+ * area.
17
+ */
18
+ function collectFootnoteRefs(blocks) {
19
+ const refs = [];
20
+ const walk = (containerBlocks) => {
21
+ for (const block of containerBlocks) if (block.kind === "paragraph") {
22
+ for (const run of block.runs) if (run.kind === "text" && run.footnoteRefId !== void 0) refs.push({
23
+ footnoteId: run.footnoteRefId,
24
+ pmPos: run.pmStart ?? 0
25
+ });
26
+ } else if (block.kind === "table") for (const row of block.rows) for (const cell of row.cells) walk(cell.blocks);
27
+ else if (block.kind === "textBox") walk(block.content);
28
+ };
29
+ walk(blocks);
30
+ return refs;
31
+ }
32
+ /**
33
+ * After layout, determine which footnotes appear on which pages.
34
+ * Checks each page's fragments to see if any footnoteRef PM positions fall within.
35
+ *
36
+ * Returns Map<pageNumber, footnoteId[]> in document order.
37
+ */
38
+ function mapFootnotesToPages(pages, footnoteRefs) {
39
+ const pageFootnotes = /* @__PURE__ */ new Map();
40
+ if (footnoteRefs.length === 0) return pageFootnotes;
41
+ for (const ref of footnoteRefs) for (const page of pages) {
42
+ let found = false;
43
+ for (const fragment of page.fragments) {
44
+ const pmStart = fragment.pmStart ?? -1;
45
+ const pmEnd = fragment.pmEnd ?? -1;
46
+ if (pmStart >= 0 && pmEnd >= 0 && ref.pmPos >= pmStart && ref.pmPos < pmEnd) {
47
+ const existing = pageFootnotes.get(page.number) ?? [];
48
+ if (!existing.includes(ref.footnoteId)) existing.push(ref.footnoteId);
49
+ pageFootnotes.set(page.number, existing);
50
+ found = true;
51
+ break;
52
+ }
53
+ }
54
+ if (found) break;
55
+ }
56
+ return pageFootnotes;
57
+ }
58
+ /**
59
+ * Convert a Footnote's content paragraphs to FlowBlocks suitable for rendering.
60
+ * Prepends the display number to the first run of the first paragraph.
61
+ */
62
+ function convertFootnoteToContent(footnote, displayNumber, contentWidth, options = {}) {
63
+ const proseOptions = {};
64
+ if (options.styles) proseOptions.styles = options.styles;
65
+ if (options.theme !== void 0) proseOptions.theme = options.theme;
66
+ const pmDoc = footnoteToProseDoc(footnote.content, proseOptions);
67
+ const flowOptions = {};
68
+ if (options.theme !== void 0) flowOptions.theme = options.theme;
69
+ if (options.defaultTabStopTwips !== void 0) flowOptions.defaultTabStopTwips = options.defaultTabStopTwips;
70
+ const blocks = applyFootnotePresentation(toFlowBlocks(pmDoc, flowOptions), displayNumber);
71
+ const measures = options.measureBlocks ? options.measureBlocks(blocks, contentWidth) : measureFootnoteBlocks(blocks, contentWidth);
72
+ let totalHeight = 0;
73
+ for (const measure of measures) if (measure.kind === "paragraph") totalHeight += measure.totalHeight;
74
+ else if (measure.kind === "table") totalHeight += measure.totalHeight;
75
+ else if (measure.kind === "image" || measure.kind === "textBox") totalHeight += measure.height;
76
+ return {
77
+ id: footnote.id,
78
+ displayNumber,
79
+ blocks,
80
+ measures,
81
+ height: totalHeight
82
+ };
83
+ }
84
+ function measureFootnoteBlocks(blocks, contentWidth) {
85
+ return blocks.map((block) => measureFootnoteBlock(block, contentWidth));
86
+ }
87
+ function measureFootnoteBlock(block, contentWidth) {
88
+ switch (block.kind) {
89
+ case "paragraph": return measureParagraph(block, contentWidth);
90
+ case "table": return measureFootnoteTable(block, contentWidth);
91
+ case "image": return {
92
+ kind: "image",
93
+ width: block.width,
94
+ height: block.height
95
+ };
96
+ case "textBox": {
97
+ const margins = block.margins ?? DEFAULT_TEXTBOX_MARGINS;
98
+ const width = block.width;
99
+ const innerWidth = Math.max(1, width - margins.left - margins.right);
100
+ const innerMeasures = block.content.map((paragraph) => measureParagraph(paragraph, innerWidth));
101
+ let contentHeight = 0;
102
+ for (const measure of innerMeasures) contentHeight += measure.totalHeight;
103
+ return {
104
+ kind: "textBox",
105
+ width,
106
+ height: block.height ?? contentHeight + margins.top + margins.bottom,
107
+ innerMeasures
108
+ };
109
+ }
110
+ case "pageBreak": return { kind: "pageBreak" };
111
+ case "columnBreak": return { kind: "columnBreak" };
112
+ case "sectionBreak": return { kind: "sectionBreak" };
113
+ default: return block;
114
+ }
115
+ }
116
+ function resolveFootnoteTableWidth(width, widthType, contentWidth) {
117
+ if (!width) return;
118
+ if (widthType === "pct") return contentWidth * width / 5e3;
119
+ if (widthType === "dxa" || !widthType || widthType === "auto") return width / 1440 * 96;
120
+ }
121
+ function measureFootnoteTable(tableBlock, contentWidth) {
122
+ let columnWidths = tableBlock.columnWidths ?? [];
123
+ const explicitWidth = resolveFootnoteTableWidth(tableBlock.width, tableBlock.widthType, contentWidth);
124
+ if (columnWidths.length === 0) {
125
+ const firstRow = tableBlock.rows.at(0);
126
+ let colCount = 0;
127
+ for (const cell of firstRow?.cells ?? []) colCount += cell.colSpan ?? 1;
128
+ const equalWidth = (explicitWidth ?? contentWidth) / Math.max(1, colCount);
129
+ columnWidths = Array.from({ length: Math.max(1, colCount) }, () => equalWidth);
130
+ } else if (explicitWidth) {
131
+ const totalWidth = sumColumnWidths(columnWidths);
132
+ if (totalWidth > 0 && Math.abs(totalWidth - explicitWidth) > 1) {
133
+ const scale = explicitWidth / totalWidth;
134
+ columnWidths = columnWidths.map((width) => width * scale);
135
+ }
136
+ }
137
+ const rowSpanEnds = [];
138
+ const rows = tableBlock.rows.map((row, rowIndex) => {
139
+ let columnIndex = 0;
140
+ const cells = row.cells.map((cell) => {
141
+ while ((rowSpanEnds[columnIndex] ?? 0) > rowIndex) columnIndex++;
142
+ const colSpan = cell.colSpan ?? 1;
143
+ let cellWidth = 0;
144
+ for (let offset = 0; offset < colSpan && columnIndex + offset < columnWidths.length; offset++) cellWidth += columnWidths[columnIndex + offset] ?? 0;
145
+ if (cellWidth === 0) cellWidth = cell.width ?? 100;
146
+ columnIndex += colSpan;
147
+ const padding = cell.padding ?? {
148
+ top: 0,
149
+ right: 7,
150
+ bottom: 0,
151
+ left: 7
152
+ };
153
+ const innerWidth = Math.max(1, cellWidth - padding.left - padding.right);
154
+ const blocks = measureFootnoteBlocks(cell.blocks, innerWidth);
155
+ let height = padding.top + padding.bottom;
156
+ for (const measure of blocks) height += getMeasureHeight(measure);
157
+ const cellMeasure = {
158
+ blocks,
159
+ width: cellWidth,
160
+ height
161
+ };
162
+ if (cell.colSpan !== void 0) cellMeasure.colSpan = cell.colSpan;
163
+ if (cell.rowSpan !== void 0) cellMeasure.rowSpan = cell.rowSpan;
164
+ if ((cell.rowSpan ?? 1) > 1) {
165
+ const rowSpanEnd = rowIndex + (cell.rowSpan ?? 1);
166
+ for (let offset = 0; offset < colSpan; offset++) rowSpanEnds[columnIndex - colSpan + offset] = rowSpanEnd;
167
+ }
168
+ return cellMeasure;
169
+ });
170
+ let contentHeight = 0;
171
+ for (const cell of cells) contentHeight = Math.max(contentHeight, cell.height);
172
+ const explicitHeight = row.height;
173
+ let height = contentHeight;
174
+ if (explicitHeight !== void 0 && row.heightRule === "exact") height = explicitHeight;
175
+ else if (explicitHeight !== void 0) height = Math.max(contentHeight, explicitHeight);
176
+ return {
177
+ cells,
178
+ height
179
+ };
180
+ });
181
+ let totalHeight = 0;
182
+ for (const row of rows) totalHeight += row.height;
183
+ return {
184
+ kind: "table",
185
+ rows,
186
+ columnWidths,
187
+ totalWidth: sumColumnWidths(columnWidths) || explicitWidth || contentWidth,
188
+ totalHeight
189
+ };
190
+ }
191
+ function sumColumnWidths(columnWidths) {
192
+ let total = 0;
193
+ for (const width of columnWidths) total += width;
194
+ return total;
195
+ }
196
+ function getMeasureHeight(measure) {
197
+ if (measure.kind === "paragraph" || measure.kind === "table") return measure.totalHeight;
198
+ if (measure.kind === "image" || measure.kind === "textBox") return measure.height;
199
+ return 0;
200
+ }
201
+ function applyFootnotePresentation(blocks, displayNumber) {
202
+ if (blocks.length === 0) return [{
203
+ kind: "paragraph",
204
+ id: `fn-empty-${displayNumber}`,
205
+ runs: [{
206
+ kind: "text",
207
+ text: `${displayNumber} `,
208
+ fontSize: FOOTNOTE_FONT_SIZE,
209
+ superscript: true
210
+ }]
211
+ }];
212
+ const output = blocks.map(applyFootnoteBlockPresentation);
213
+ const first = output[0];
214
+ if (first?.kind === "paragraph") output[0] = {
215
+ ...first,
216
+ runs: [createFootnoteNumberRun(displayNumber, first), ...first.runs]
217
+ };
218
+ else output.unshift({
219
+ kind: "paragraph",
220
+ id: `fn-number-${displayNumber}`,
221
+ runs: [{
222
+ kind: "text",
223
+ text: `${displayNumber} `,
224
+ fontSize: FOOTNOTE_FONT_SIZE,
225
+ superscript: true
226
+ }]
227
+ });
228
+ return output;
229
+ }
230
+ function createFootnoteNumberRun(displayNumber, paragraph) {
231
+ const firstTextRun = paragraph.runs.find((run) => run.kind === "text");
232
+ const firstFormattedRun = paragraph.runs.find((run) => run.kind === "text" || run.kind === "tab" || run.kind === "field");
233
+ const numberRun = {
234
+ kind: "text",
235
+ text: firstTextRun?.text.match(/^\s/u) ? `${displayNumber}` : `${displayNumber} `,
236
+ fontSize: firstFormattedRun?.fontSize ?? paragraph.attrs?.defaultFontSize ?? FOOTNOTE_FONT_SIZE,
237
+ superscript: true
238
+ };
239
+ const fontFamily = firstFormattedRun?.fontFamily ?? paragraph.attrs?.defaultFontFamily;
240
+ if (fontFamily) numberRun.fontFamily = fontFamily;
241
+ return numberRun;
242
+ }
243
+ function applyFootnoteBlockPresentation(block) {
244
+ if (block.kind === "paragraph") return applyFootnoteParagraphPresentation(block);
245
+ if (block.kind === "table") return {
246
+ ...block,
247
+ rows: block.rows.map((row) => ({
248
+ ...row,
249
+ cells: row.cells.map((cell) => ({
250
+ ...cell,
251
+ blocks: cell.blocks.map(applyFootnoteBlockPresentation)
252
+ }))
253
+ }))
254
+ };
255
+ if (block.kind === "textBox") return {
256
+ ...block,
257
+ content: block.content.map(applyFootnoteParagraphPresentation)
258
+ };
259
+ return block;
260
+ }
261
+ function applyFootnoteParagraphPresentation(block) {
262
+ return {
263
+ ...block,
264
+ runs: block.runs.map(applyFootnoteRunPresentation)
265
+ };
266
+ }
267
+ function applyFootnoteRunPresentation(run) {
268
+ if ((run.kind === "text" || run.kind === "tab" || run.kind === "field") && run.fontSize === void 0) return {
269
+ ...run,
270
+ fontSize: FOOTNOTE_FONT_SIZE
271
+ };
272
+ return run;
273
+ }
274
+ /**
275
+ * Build footnote content for all footnotes referenced in the document.
276
+ * Returns a Map<footnoteId, FootnoteContent>.
277
+ */
278
+ function buildFootnoteContentMap(footnotes, footnoteRefs, contentWidth, options = {}) {
279
+ const contentMap = /* @__PURE__ */ new Map();
280
+ const footnoteById = /* @__PURE__ */ new Map();
281
+ for (const fn of footnotes) if (fn.noteType === "normal") footnoteById.set(fn.id, fn);
282
+ let displayNumber = 1;
283
+ const seen = /* @__PURE__ */ new Set();
284
+ for (const ref of footnoteRefs) {
285
+ if (seen.has(ref.footnoteId)) continue;
286
+ seen.add(ref.footnoteId);
287
+ const footnote = footnoteById.get(ref.footnoteId);
288
+ if (!footnote) continue;
289
+ const content = convertFootnoteToContent(footnote, displayNumber, contentWidth, options);
290
+ contentMap.set(ref.footnoteId, content);
291
+ displayNumber++;
292
+ }
293
+ return contentMap;
294
+ }
295
+ /**
296
+ * Calculate per-page footnote reserved heights.
297
+ * Returns Map<pageNumber, reservedHeight>.
298
+ */
299
+ function calculateFootnoteReservedHeights(pageFootnoteMap, footnoteContentMap) {
300
+ const reserved = /* @__PURE__ */ new Map();
301
+ for (const [pageNumber, footnoteIds] of pageFootnoteMap) {
302
+ let totalHeight = 0;
303
+ for (const fnId of footnoteIds) {
304
+ const content = footnoteContentMap.get(fnId);
305
+ if (content) totalHeight += content.height;
306
+ }
307
+ if (totalHeight > 0) {
308
+ totalHeight += 12;
309
+ totalHeight += footnoteIds.length * 0;
310
+ reserved.set(pageNumber, totalHeight);
311
+ }
312
+ }
313
+ return reserved;
314
+ }
315
+ //#endregion
316
+ export { FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, applyFootnotePresentation, buildFootnoteContentMap, calculateFootnoteReservedHeights, collectFootnoteRefs, convertFootnoteToContent, mapFootnotesToPages };