@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,527 @@
1
+ import { XMLBuilder, XMLParser } from "fast-xml-parser";
2
+ import { OOXML_NS } from "@stll/docx-utils";
3
+ //#region src/docx/xmlParser.ts
4
+ /**
5
+ * XML Parser Utilities for OOXML
6
+ *
7
+ * Provides helper functions for parsing Office Open XML (OOXML) content
8
+ * with proper namespace handling.
9
+ *
10
+ * OOXML uses many namespaces:
11
+ * - w: WordprocessingML (main document content)
12
+ * - a: DrawingML (graphics)
13
+ * - r: Relationships
14
+ * - wp: Word Drawing positioning
15
+ * - wps: Word Drawing shapes
16
+ * - wpc: Word Drawing canvas
17
+ * - wpg: Word Drawing group
18
+ * - m: Math
19
+ * - mc: Markup Compatibility
20
+ * - v: VML (legacy vector graphics)
21
+ * - o: Office (extensions)
22
+ * - pic: Pictures
23
+ */
24
+ const fxpParserOptions = {
25
+ preserveOrder: true,
26
+ ignoreAttributes: false,
27
+ attributeNamePrefix: "",
28
+ trimValues: false,
29
+ textNodeName: "#text",
30
+ parseTagValue: false,
31
+ parseAttributeValue: false,
32
+ ignoreDeclaration: true,
33
+ ignorePiTags: true,
34
+ processEntities: true,
35
+ htmlEntities: true
36
+ };
37
+ const fxpParserOptionsWithStopNodes = {
38
+ ...fxpParserOptions,
39
+ stopNodes: ["*.w:binData"]
40
+ };
41
+ const fxpBuilderOptions = {
42
+ preserveOrder: true,
43
+ ignoreAttributes: false,
44
+ attributeNamePrefix: "",
45
+ textNodeName: "#text",
46
+ suppressEmptyNode: true
47
+ };
48
+ const fxpParser = new XMLParser(fxpParserOptions);
49
+ const fxpParserWithStopNodes = new XMLParser(fxpParserOptionsWithStopNodes);
50
+ const fxpBuilder = new XMLBuilder(fxpBuilderOptions);
51
+ /** Text node key used by fast-xml-parser in preserveOrder mode. */
52
+ const TEXT_KEY = "#text";
53
+ /** Attribute group key used by fast-xml-parser in preserveOrder mode. */
54
+ const ATTR_KEY = ":@";
55
+ /**
56
+ * Convert a fast-xml-parser preserveOrder node into an XmlElement.
57
+ *
58
+ * In preserveOrder mode every node is an object with exactly one "real" key
59
+ * (the tag name or `#text`) whose value is the children array, plus an
60
+ * optional `:@` key holding the attributes object.
61
+ */
62
+ function fxpNodeToElement(node) {
63
+ if (TEXT_KEY in node) return {
64
+ type: "text",
65
+ text: node[TEXT_KEY]
66
+ };
67
+ const attrs = node[ATTR_KEY];
68
+ for (const key of Object.keys(node)) {
69
+ if (key === ATTR_KEY) continue;
70
+ const children = node[key];
71
+ const element = {
72
+ type: "element",
73
+ name: key
74
+ };
75
+ if (attrs && Object.keys(attrs).length > 0) element.attributes = attrs;
76
+ if (children.length > 0) element.elements = children.map(fxpNodeToElement);
77
+ return element;
78
+ }
79
+ return { type: "element" };
80
+ }
81
+ /**
82
+ * Convert the top-level fast-xml-parser preserveOrder array into an
83
+ * XmlElement that matches xml-js's non-compact root structure:
84
+ * `{ elements: [...] }`.
85
+ */
86
+ function fxpToRootElement(nodes) {
87
+ return { elements: nodes.map(fxpNodeToElement) };
88
+ }
89
+ /**
90
+ * Convert an XmlElement back into the fast-xml-parser preserveOrder format
91
+ * so we can feed it to XMLBuilder.
92
+ */
93
+ function elementToFxpNode(el) {
94
+ if (el.type === "text") return { [TEXT_KEY]: el.text ?? "" };
95
+ const name = el.name ?? "";
96
+ const children = el.elements ? el.elements.map(elementToFxpNode) : [];
97
+ const node = { [name]: children };
98
+ if (el.attributes && Object.keys(el.attributes).length > 0) node[ATTR_KEY] = el.attributes;
99
+ return node;
100
+ }
101
+ /**
102
+ * Common OOXML namespace URIs — re-exported from @stll/docx-utils.
103
+ */
104
+ const NAMESPACES = OOXML_NS;
105
+ /**
106
+ * Parse XML string into element tree
107
+ *
108
+ * @param xml - XML string to parse
109
+ * @returns Parsed element tree
110
+ */
111
+ function parseXml(xml) {
112
+ return fxpToRootElement((xml.includes("binData") ? fxpParserWithStopNodes : fxpParser).parse(xml));
113
+ }
114
+ /**
115
+ * Serialize an XmlElement back to an XML string
116
+ */
117
+ function elementToXml(element) {
118
+ const fxpNode = elementToFxpNode(element);
119
+ return fxpBuilder.build([fxpNode]);
120
+ }
121
+ /**
122
+ * Parse XML string to a more convenient format
123
+ */
124
+ function parseXmlDocument(xml) {
125
+ try {
126
+ const parsed = parseXml(xml);
127
+ if (parsed.elements && parsed.elements.length > 0) return parsed.elements.find((e) => e.type === "element") ?? null;
128
+ return parsed;
129
+ } catch {
130
+ return null;
131
+ }
132
+ }
133
+ /**
134
+ * Get local name from a prefixed element name
135
+ * e.g., "w:p" -> "p", "a:graphic" -> "graphic"
136
+ */
137
+ function getLocalName(name) {
138
+ const colonIndex = name.indexOf(":");
139
+ return colonIndex !== -1 ? name.slice(colonIndex + 1) : name;
140
+ }
141
+ /**
142
+ * Get namespace prefix from an element name
143
+ * e.g., "w:p" -> "w", "a:graphic" -> "a"
144
+ */
145
+ function getNamespacePrefix(name) {
146
+ const colonIndex = name.indexOf(":");
147
+ return colonIndex !== -1 ? name.slice(0, colonIndex) : null;
148
+ }
149
+ /**
150
+ * Check if an element matches a given namespaced name
151
+ *
152
+ * @param element - Element to check
153
+ * @param namespace - Namespace prefix (e.g., "w", "a")
154
+ * @param localName - Local element name (e.g., "p", "r")
155
+ */
156
+ function matchesName(element, namespace, localName) {
157
+ if (!element.name) return false;
158
+ const fullName = `${namespace}:${localName}`;
159
+ if (element.name === fullName) return true;
160
+ if (getLocalName(element.name) === localName) return true;
161
+ return false;
162
+ }
163
+ /**
164
+ * Find first child element matching the given namespaced name
165
+ *
166
+ * @param parent - Parent element
167
+ * @param namespace - Namespace prefix (e.g., "w")
168
+ * @param localName - Local element name (e.g., "p")
169
+ * @returns First matching child or null
170
+ */
171
+ function findChild(parent, namespace, localName) {
172
+ if (!parent || !parent.elements) return null;
173
+ const fullName = `${namespace}:${localName}`;
174
+ for (const child of parent.elements) {
175
+ if (child.type !== "element") continue;
176
+ if (child.name === fullName) return child;
177
+ if (getLocalName(child.name || "") === localName) return child;
178
+ }
179
+ return null;
180
+ }
181
+ /**
182
+ * Find all child elements matching the given namespaced name
183
+ *
184
+ * @param parent - Parent element
185
+ * @param namespace - Namespace prefix
186
+ * @param localName - Local element name
187
+ * @returns Array of matching children
188
+ */
189
+ function findChildren(parent, namespace, localName) {
190
+ if (!parent || !parent.elements) return [];
191
+ const fullName = `${namespace}:${localName}`;
192
+ const results = [];
193
+ for (const child of parent.elements) {
194
+ if (child.type !== "element") continue;
195
+ if (child.name === fullName || getLocalName(child.name || "") === localName) results.push(child);
196
+ }
197
+ return results;
198
+ }
199
+ /**
200
+ * Find first child element by local name only (ignoring namespace)
201
+ *
202
+ * @param parent - Parent element
203
+ * @param localName - Local element name
204
+ * @returns First matching child or null
205
+ */
206
+ function findChildByLocalName(parent, localName) {
207
+ if (!parent || !parent.elements) return null;
208
+ for (const child of parent.elements) {
209
+ if (child.type !== "element") continue;
210
+ if (getLocalName(child.name || "") === localName) return child;
211
+ }
212
+ return null;
213
+ }
214
+ /**
215
+ * Find all child elements by local name only
216
+ *
217
+ * @param parent - Parent element
218
+ * @param localName - Local element name
219
+ * @returns Array of matching children
220
+ */
221
+ function findChildrenByLocalName(parent, localName) {
222
+ if (!parent || !parent.elements) return [];
223
+ return parent.elements.filter((child) => child.type === "element" && getLocalName(child.name || "") === localName);
224
+ }
225
+ /**
226
+ * Find first child element by full name (including namespace prefix)
227
+ *
228
+ * @param parent - Parent element
229
+ * @param fullName - Full element name with namespace prefix (e.g., 'wp:extent')
230
+ * @returns First matching child or null
231
+ */
232
+ function findByFullName(parent, fullName) {
233
+ if (!parent || !parent.elements) return null;
234
+ for (const child of parent.elements) {
235
+ if (child.type !== "element") continue;
236
+ if (child.name === fullName) return child;
237
+ }
238
+ return null;
239
+ }
240
+ /**
241
+ * Get all child elements (excludes text nodes, etc.)
242
+ *
243
+ * @param parent - Parent element
244
+ * @returns Array of child elements
245
+ */
246
+ function getChildElements(parent) {
247
+ if (!parent || !parent.elements) return [];
248
+ return parent.elements.filter((child) => child.type === "element");
249
+ }
250
+ /**
251
+ * Get an attribute value from an element
252
+ *
253
+ * @param element - Element to get attribute from
254
+ * @param namespace - Namespace prefix for the attribute (or null for no namespace)
255
+ * @param name - Attribute name
256
+ * @returns Attribute value or null if not found
257
+ *
258
+ * Lookup order when a namespace is provided:
259
+ * 1. exact `${namespace}:${name}` match (`w:val`),
260
+ * 2. bare `${name}` match (`val`),
261
+ * 3. any-prefix local-name match (`x:val`, `w14:val`, …).
262
+ *
263
+ * The local-name fallback mirrors `findChild` and lets the parser tolerate
264
+ * producers that rebind the WordprocessingML namespace to an alternative
265
+ * prefix. Without it, attributes such as `x:val` on an `x:alias` element
266
+ * would silently drop on round-trip even though the element itself is
267
+ * recognised.
268
+ */
269
+ function getAttribute(element, namespace, name) {
270
+ if (!element || !element.attributes) return null;
271
+ const attrs = element.attributes;
272
+ if (namespace) {
273
+ const prefixedName = `${namespace}:${name}`;
274
+ if (prefixedName in attrs) return attrs[prefixedName] ?? null;
275
+ }
276
+ if (name in attrs) return attrs[name] ?? null;
277
+ if (namespace) {
278
+ const suffix = `:${name}`;
279
+ for (const key of Object.keys(attrs)) if (key.endsWith(suffix)) return attrs[key] ?? null;
280
+ }
281
+ return null;
282
+ }
283
+ /**
284
+ * Read an attribute by local name, trying the element's own prefix first,
285
+ * then the canonical Word prefix, then unprefixed.
286
+ *
287
+ * OOXML lets a producer bind the WordprocessingML namespace under any
288
+ * prefix the file's xmlns declarations choose, so a strict `w:val` /
289
+ * `w:tag` lookup misses valid docs that use `ns0:` (or any other prefix
290
+ * resolving to the same URI). This helper mirrors `parseBooleanElement`'s
291
+ * tolerance for the attribute path — call it whenever you want to read
292
+ * an OOXML attribute that conventionally lives in the `w:` namespace
293
+ * but could appear under an alternate prefix bound to the same URI.
294
+ */
295
+ function getAttributeAnyPrefix(element, localName) {
296
+ if (!element) return null;
297
+ const elementName = element.name ?? "";
298
+ const colonIdx = elementName.indexOf(":");
299
+ const elementPrefix = colonIdx > 0 ? elementName.slice(0, colonIdx) : null;
300
+ if (elementPrefix && elementPrefix !== "w") {
301
+ const fromPrefix = getAttribute(element, elementPrefix, localName);
302
+ if (fromPrefix !== null) return fromPrefix;
303
+ }
304
+ const canonical = getAttribute(element, "w", localName);
305
+ if (canonical !== null) return canonical;
306
+ const attrs = element.attributes;
307
+ if (attrs) {
308
+ const suffix = `:${localName}`;
309
+ for (const [key, value] of Object.entries(attrs)) if (key === localName || key.endsWith(suffix)) return value;
310
+ }
311
+ return null;
312
+ }
313
+ /**
314
+ * Get an attribute value, trying multiple possible names
315
+ *
316
+ * @param element - Element to get attribute from
317
+ * @param names - Array of possible attribute names (with or without namespace)
318
+ * @returns First found attribute value or null
319
+ */
320
+ function getAttributeAny(element, names) {
321
+ if (!element || !element.attributes) return null;
322
+ const attrs = element.attributes;
323
+ for (const name of names) if (name in attrs) return attrs[name] ?? null;
324
+ return null;
325
+ }
326
+ /**
327
+ * Get all attributes from an element
328
+ *
329
+ * @param element - Element to get attributes from
330
+ * @returns Record of attribute name -> value
331
+ */
332
+ function getAttributes(element) {
333
+ if (!element || !element.attributes) return {};
334
+ return element.attributes;
335
+ }
336
+ /**
337
+ * Get the text content of an element (concatenates all text nodes)
338
+ *
339
+ * @param element - Element to get text from
340
+ * @returns Text content or empty string
341
+ */
342
+ function getTextContent(element) {
343
+ if (!element) return "";
344
+ if ("text" in element && typeof element.text === "string") return element.text;
345
+ if (!element.elements) return "";
346
+ let text = "";
347
+ for (const child of element.elements) if (child.type === "text" && "text" in child) text += child.text ?? "";
348
+ else if (child.type === "element") text += getTextContent(child);
349
+ return text;
350
+ }
351
+ /**
352
+ * Check if an element has a specific attribute with value "true" or "1"
353
+ *
354
+ * @param element - Element to check
355
+ * @param namespace - Attribute namespace
356
+ * @param name - Attribute name
357
+ * @returns true if attribute exists and is truthy
358
+ */
359
+ function hasFlag(element, namespace, name) {
360
+ const value = getAttribute(element, namespace, name);
361
+ if (value === null) return false;
362
+ if (value === "0" || value === "false" || value === "off") return false;
363
+ return true;
364
+ }
365
+ /**
366
+ * Check if a child element exists (used for boolean flags in OOXML)
367
+ *
368
+ * @param parent - Parent element
369
+ * @param namespace - Namespace prefix
370
+ * @param localName - Local element name
371
+ * @returns true if child element exists
372
+ */
373
+ function hasChild(parent, namespace, localName) {
374
+ return findChild(parent, namespace, localName) !== null;
375
+ }
376
+ /**
377
+ * Parse an OOXML color value
378
+ *
379
+ * @param element - Color element (e.g., w:color)
380
+ * @returns Object with val, themeColor, themeTint, themeShade
381
+ */
382
+ function parseColorElement(element) {
383
+ if (!element) return null;
384
+ const val = getAttribute(element, "w", "val");
385
+ const themeColor = getAttribute(element, "w", "themeColor");
386
+ const themeTint = getAttribute(element, "w", "themeTint");
387
+ const themeShade = getAttribute(element, "w", "themeShade");
388
+ return {
389
+ ...val != null ? { val } : {},
390
+ ...themeColor != null ? { themeColor } : {},
391
+ ...themeTint != null ? { themeTint } : {},
392
+ ...themeShade != null ? { themeShade } : {}
393
+ };
394
+ }
395
+ /**
396
+ * Parse a numeric value from an attribute, with optional scale
397
+ *
398
+ * @param element - Element containing the attribute
399
+ * @param namespace - Attribute namespace
400
+ * @param name - Attribute name
401
+ * @param scale - Optional scale factor (e.g., 20 for twips to points)
402
+ * @returns Parsed number or undefined
403
+ */
404
+ function parseNumericAttribute(element, namespace, name, scale = 1) {
405
+ const value = getAttribute(element, namespace, name);
406
+ if (value === null) return;
407
+ const num = Number.parseInt(value, 10);
408
+ if (Number.isNaN(num)) return;
409
+ return num * scale;
410
+ }
411
+ /**
412
+ * Parse a boolean value from an attribute or element presence
413
+ *
414
+ * OOXML boolean conventions:
415
+ * - Element presence with no val attribute = true
416
+ * - w:val="true" or w:val="1" = true
417
+ * - w:val="false" or w:val="0" = false
418
+ *
419
+ * @param element - Element to check
420
+ * @param namespace - Namespace for val attribute
421
+ * @returns boolean value
422
+ */
423
+ function parseBooleanElement(element, namespace = "w") {
424
+ if (!element) return false;
425
+ let val = null;
426
+ const elementName = element.name ?? "";
427
+ const colonIdx = elementName.indexOf(":");
428
+ const elementPrefix = colonIdx > 0 ? elementName.slice(0, colonIdx) : null;
429
+ if (elementPrefix && elementPrefix !== namespace) val = getAttribute(element, elementPrefix, "val");
430
+ if (val === null) val = getAttribute(element, namespace, "val");
431
+ if (val === null && element.attributes) {
432
+ for (const [key, value] of Object.entries(element.attributes)) if (key === "val" || key.endsWith(":val")) {
433
+ val = value;
434
+ break;
435
+ }
436
+ }
437
+ if (val === null) return true;
438
+ if (val === "0" || val === "false" || val === "off") return false;
439
+ return true;
440
+ }
441
+ /**
442
+ * Deep find - search recursively for an element
443
+ *
444
+ * @param root - Root element to search from
445
+ * @param namespace - Namespace prefix
446
+ * @param localName - Local element name
447
+ * @returns First matching element found or null
448
+ */
449
+ function findDeep(root, namespace, localName) {
450
+ if (!root) return null;
451
+ if (matchesName(root, namespace, localName)) return root;
452
+ if (root.elements) for (const child of root.elements) {
453
+ if (child.type !== "element") continue;
454
+ const found = findDeep(child, namespace, localName);
455
+ if (found) return found;
456
+ }
457
+ return null;
458
+ }
459
+ /**
460
+ * Find all elements matching name, searching recursively
461
+ *
462
+ * @param root - Root element to search from
463
+ * @param namespace - Namespace prefix
464
+ * @param localName - Local element name
465
+ * @returns Array of all matching elements
466
+ */
467
+ function findAllDeep(root, namespace, localName) {
468
+ const results = [];
469
+ function search(element) {
470
+ if (!element) return;
471
+ if (matchesName(element, namespace, localName)) results.push(element);
472
+ if (element.elements) {
473
+ for (const child of element.elements) if (child.type === "element") search(child);
474
+ }
475
+ }
476
+ search(root);
477
+ return results;
478
+ }
479
+ /**
480
+ * Collect every `xmlns` / `xmlns:*` declaration from an element's attributes.
481
+ *
482
+ * The serializer's hard-coded root namespaces only cover canonical prefixes
483
+ * (`a`, `w`, `wp`, `v`, `o`, …); a DOCX that binds a namespace to a
484
+ * non-canonical prefix would replay an unbound prefix when a captured subtree
485
+ * is emitted on its own. Carrying the source declarations forward keeps the
486
+ * raw replay self-contained regardless of the producer's prefix choice.
487
+ */
488
+ function collectXmlnsDeclarations(element) {
489
+ const out = {};
490
+ const attrs = element.attributes;
491
+ if (!attrs) return out;
492
+ for (const [key, value] of Object.entries(attrs)) if ((key === "xmlns" || key.startsWith("xmlns:")) && value !== void 0) out[key] = String(value);
493
+ return out;
494
+ }
495
+ /**
496
+ * Merge an element's own `xmlns` / `xmlns:*` declarations onto an inherited
497
+ * in-scope set, returning the accumulated set. Threaded down the ancestor
498
+ * chain (root -> paragraph -> run -> pict), the element's own declarations
499
+ * override an inherited binding for the same prefix, matching XML scoping. The
500
+ * inherited object is not mutated; the same reference is returned unchanged when
501
+ * the element declares nothing.
502
+ */
503
+ function mergeXmlnsDeclarations(inherited, element) {
504
+ const own = collectXmlnsDeclarations(element);
505
+ if (Object.keys(own).length === 0) return inherited;
506
+ return {
507
+ ...inherited,
508
+ ...own
509
+ };
510
+ }
511
+ /**
512
+ * Return a shallow clone of `element` whose attributes carry every declaration
513
+ * in `xmlnsDecls`. Existing attributes (including any namespace declarations the
514
+ * element already carries) win over the injected ones.
515
+ */
516
+ function cloneWithXmlnsDeclarations(element, xmlnsDecls) {
517
+ if (Object.keys(xmlnsDecls).length === 0) return element;
518
+ return {
519
+ ...element,
520
+ attributes: {
521
+ ...xmlnsDecls,
522
+ ...element.attributes
523
+ }
524
+ };
525
+ }
526
+ //#endregion
527
+ export { NAMESPACES, cloneWithXmlnsDeclarations, collectXmlnsDeclarations, elementToXml, findAllDeep, findByFullName, findChild, findChildByLocalName, findChildren, findChildrenByLocalName, findDeep, getAttribute, getAttributeAny, getAttributeAnyPrefix, getAttributes, getChildElements, getLocalName, getNamespacePrefix, getTextContent, hasChild, hasFlag, matchesName, mergeXmlnsDeclarations, parseBooleanElement, parseColorElement, parseNumericAttribute, parseXml, parseXmlDocument };
@@ -0,0 +1,13 @@
1
+ import { FlowBlock, Page } from "../layout-engine/types.js";
2
+
3
+ //#region src/fields/bookmarkPages.d.ts
4
+ /**
5
+ * Map each bookmark name to the 1-indexed page its anchoring paragraph lands on,
6
+ * for PAGEREF resolution. Computed as a post-pass over a finished layout: walk
7
+ * pages -> fragments -> the source block's bookmarks. A bookmark whose paragraph
8
+ * splits across pages takes the first (lowest) page it appears on, matching how
9
+ * Word resolves a PAGEREF to the start of the bookmark.
10
+ */
11
+ declare function buildBookmarkPageMap(pages: readonly Page[], blocks: readonly FlowBlock[]): Map<string, number>;
12
+ //#endregion
13
+ export { buildBookmarkPageMap };
@@ -0,0 +1,66 @@
1
+ //#region src/fields/bookmarkPages.ts
2
+ /**
3
+ * Map each bookmark name to the 1-indexed page its anchoring paragraph lands on,
4
+ * for PAGEREF resolution. Computed as a post-pass over a finished layout: walk
5
+ * pages -> fragments -> the source block's bookmarks. A bookmark whose paragraph
6
+ * splits across pages takes the first (lowest) page it appears on, matching how
7
+ * Word resolves a PAGEREF to the start of the bookmark.
8
+ */
9
+ function buildBookmarkPageMap(pages, blocks) {
10
+ const anchors = [];
11
+ for (const block of blocks) collectBookmarkAnchors(block, block.id, anchors);
12
+ const pageByBookmark = /* @__PURE__ */ new Map();
13
+ if (anchors.length === 0) return pageByBookmark;
14
+ for (const page of pages) for (const fragment of page.fragments) for (const anchor of anchors) {
15
+ if (!fragmentContainsAnchor(fragment, anchor)) continue;
16
+ assignBookmarkPage(pageByBookmark, anchor.names, page.number);
17
+ }
18
+ return pageByBookmark;
19
+ }
20
+ function collectBookmarkAnchors(block, topLevelId, anchors) {
21
+ if (block.kind === "paragraph") {
22
+ if (!block.bookmarks || block.bookmarks.length === 0) return;
23
+ anchors.push({
24
+ type: "block",
25
+ blockId: topLevelId,
26
+ names: [...block.bookmarks]
27
+ });
28
+ return;
29
+ }
30
+ if (block.kind === "table") {
31
+ for (let rowIndex = 0; rowIndex < block.rows.length; rowIndex++) {
32
+ const row = block.rows[rowIndex];
33
+ if (!row) continue;
34
+ for (const cell of row.cells) for (const child of cell.blocks) collectTableRowBookmarkAnchors(child, block.id, rowIndex, anchors);
35
+ }
36
+ return;
37
+ }
38
+ if (block.kind === "textBox") for (const child of block.content) collectBookmarkAnchors(child, topLevelId, anchors);
39
+ }
40
+ function collectTableRowBookmarkAnchors(block, tableId, rowIndex, anchors) {
41
+ if (block.kind === "paragraph") {
42
+ if (!block.bookmarks || block.bookmarks.length === 0) return;
43
+ anchors.push({
44
+ type: "tableRow",
45
+ blockId: tableId,
46
+ rowIndex,
47
+ names: [...block.bookmarks]
48
+ });
49
+ return;
50
+ }
51
+ if (block.kind === "table") {
52
+ for (const row of block.rows) for (const cell of row.cells) for (const child of cell.blocks) collectTableRowBookmarkAnchors(child, tableId, rowIndex, anchors);
53
+ return;
54
+ }
55
+ if (block.kind === "textBox") for (const child of block.content) collectTableRowBookmarkAnchors(child, tableId, rowIndex, anchors);
56
+ }
57
+ function fragmentContainsAnchor(fragment, anchor) {
58
+ if (fragment.blockId !== anchor.blockId) return false;
59
+ if (anchor.type === "block") return true;
60
+ return fragment.kind === "table" && anchor.rowIndex >= fragment.fromRow && anchor.rowIndex < fragment.toRow;
61
+ }
62
+ function assignBookmarkPage(pageByBookmark, names, pageNumber) {
63
+ for (const name of names) if (!pageByBookmark.has(name)) pageByBookmark.set(name, pageNumber);
64
+ }
65
+ //#endregion
66
+ export { buildBookmarkPageMap };
@@ -0,0 +1,16 @@
1
+ import { FlowBlock } from "../layout-engine/types.js";
2
+
3
+ //#region src/fields/bookmarkText.d.ts
4
+ type BookmarkTextInputs = {
5
+ fieldValues?: ReadonlyMap<number, string>;
6
+ seqValues?: ReadonlyMap<number, number>;
7
+ };
8
+ /**
9
+ * Map each bookmark name to the text of its anchoring paragraph, for REF
10
+ * cross-references (e.g. "see Section 1.3"). Folio anchors bookmarks at the
11
+ * paragraph level, so a REF resolves to that paragraph's visible text. Document
12
+ * order, independent of layout. First paragraph carrying a name wins.
13
+ */
14
+ declare function buildBookmarkText(blocks: readonly FlowBlock[], inputs?: BookmarkTextInputs): Map<string, string>;
15
+ //#endregion
16
+ export { buildBookmarkText };
@@ -0,0 +1,61 @@
1
+ import { parseFieldInstruction } from "../docx/fieldParser.js";
2
+ import { evaluateField } from "./evaluateField.js";
3
+ //#region src/fields/bookmarkText.ts
4
+ const EMPTY_STRING_NUMBER = /* @__PURE__ */ new Map();
5
+ const EMPTY_STRING_STRING = /* @__PURE__ */ new Map();
6
+ const EMPTY_NUMBER_NUMBER = /* @__PURE__ */ new Map();
7
+ /**
8
+ * Map each bookmark name to the text of its anchoring paragraph, for REF
9
+ * cross-references (e.g. "see Section 1.3"). Folio anchors bookmarks at the
10
+ * paragraph level, so a REF resolves to that paragraph's visible text. Document
11
+ * order, independent of layout. First paragraph carrying a name wins.
12
+ */
13
+ function buildBookmarkText(blocks, inputs = {}) {
14
+ const map = /* @__PURE__ */ new Map();
15
+ walkBlocks(blocks, map, inputs);
16
+ return map;
17
+ }
18
+ function walkBlocks(blocks, map, inputs) {
19
+ for (const block of blocks) if (block.kind === "paragraph") {
20
+ if (!block.bookmarks || block.bookmarks.length === 0) continue;
21
+ const text = paragraphText(block, inputs);
22
+ for (const name of block.bookmarks) if (!map.has(name)) map.set(name, text);
23
+ } else if (block.kind === "table") for (const row of block.rows) for (const cell of row.cells) walkBlocks(cell.blocks, map, inputs);
24
+ else if (block.kind === "textBox") walkBlocks(block.content, map, inputs);
25
+ }
26
+ function paragraphText(block, inputs) {
27
+ let text = "";
28
+ for (const run of block.runs) if (run.kind === "text") text += run.text;
29
+ else if (run.kind === "field") text += bookmarkFieldText(run, inputs);
30
+ return `${visibleListMarker(block)}${text}`.trim();
31
+ }
32
+ function bookmarkFieldText(run, inputs) {
33
+ if (run.kind !== "field") return "";
34
+ const resolved = run.pmStart === void 0 ? void 0 : inputs.fieldValues?.get(run.pmStart);
35
+ if (resolved !== void 0) return resolved;
36
+ if (run.pmStart === void 0 || !inputs.seqValues?.has(run.pmStart)) return run.fallback ?? "";
37
+ const parsed = parseFieldInstruction(run.instruction || run.fieldType);
38
+ if (parsed.type !== "SEQ") return run.fallback ?? "";
39
+ return evaluateField(parsed, {
40
+ pageNumber: 1,
41
+ totalPages: 1,
42
+ sectionPages: 1,
43
+ bookmarkPages: EMPTY_STRING_NUMBER,
44
+ bookmarkText: EMPTY_STRING_STRING,
45
+ seqValues: inputs.seqValues ?? EMPTY_NUMBER_NUMBER,
46
+ now: /* @__PURE__ */ new Date(0)
47
+ }, {
48
+ fallback: run.fallback ?? "",
49
+ instanceId: run.pmStart,
50
+ ...run.fldLock ? { locked: true } : {}
51
+ });
52
+ }
53
+ function visibleListMarker(block) {
54
+ const marker = block.attrs?.listMarker;
55
+ if (!marker || block.attrs?.listMarkerHidden) return "";
56
+ const normalized = marker.replace(/\t+/gu, " ").trim();
57
+ if (!normalized) return "";
58
+ return block.attrs?.listMarkerSuffix === "nothing" ? normalized : `${normalized} `;
59
+ }
60
+ //#endregion
61
+ export { buildBookmarkText };