@stll/folio-core 0.15.0 → 0.15.2

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 (449) hide show
  1. package/dist/ai-edits/apply.d.ts +2 -2
  2. package/dist/ai-edits/blockRange.d.ts +3 -17
  3. package/dist/ai-edits/clean-text.d.ts +0 -1
  4. package/dist/ai-edits/headless.d.ts +23 -19
  5. package/dist/ai-edits/read.d.ts +8 -5
  6. package/dist/ai-edits/scoped-reading.d.ts +0 -1
  7. package/dist/ai-edits/snapshot.d.ts +1 -7
  8. package/dist/ai-edits/table-cell-mutations.d.ts +4 -31
  9. package/dist/ai-edits/table-row-column-mutations.d.ts +9 -39
  10. package/dist/ai-edits/table-targets.d.ts +0 -1
  11. package/dist/ai-edits/types.d.ts +32 -17
  12. package/dist/ai-suggestions/apply.d.ts +0 -1
  13. package/dist/ai-suggestions/conflict.d.ts +0 -1
  14. package/dist/ai-suggestions/text-positions.d.ts +2 -2
  15. package/dist/ai-suggestions/types.d.ts +27 -13
  16. package/dist/content-controls/errors.d.ts +0 -1
  17. package/dist/content-controls/findContentControls.d.ts +6 -4
  18. package/dist/content-controls/mutateContentControls.d.ts +0 -1
  19. package/dist/controller/activeEditorStory.d.ts +1 -6
  20. package/dist/controller/collaborationModules.d.ts +0 -1
  21. package/dist/controller/contentControlWidgetController.d.ts +0 -1
  22. package/dist/controller/folioEditor.d.ts +2 -2
  23. package/dist/controller/folioEditorEvents.d.ts +5 -3
  24. package/dist/controller/fontReadiness.d.ts +0 -1
  25. package/dist/controller/headerFooterEditorManager.d.ts +1 -5
  26. package/dist/controller/hiddenEditorApi.d.ts +35 -18
  27. package/dist/controller/hiddenEditorManager.d.ts +5 -3
  28. package/dist/controller/latestRequestGate.d.ts +3 -1
  29. package/dist/controller/layoutPipeline.d.ts +1 -1
  30. package/dist/controller/layoutScheduler.d.ts +8 -5
  31. package/dist/controller/layoutSession.d.ts +0 -1
  32. package/dist/controller/noteEditorManager.d.ts +0 -1
  33. package/dist/document-operations.d.ts +5 -12
  34. package/dist/document-stories.d.ts +0 -1
  35. package/dist/docx/blockContentParser.d.ts +0 -1
  36. package/dist/docx/blockContentParser.js +1 -0
  37. package/dist/docx/bookmarkParser.d.ts +5 -3
  38. package/dist/docx/bookmarkPlacement.d.ts +0 -1
  39. package/dist/docx/commentParser.d.ts +0 -1
  40. package/dist/docx/commentParser.js +30 -2
  41. package/dist/docx/commentRangeIntegrity.d.ts +0 -1
  42. package/dist/docx/commentReferenceNormalization.d.ts +1 -9
  43. package/dist/docx/commentReplyMarkers.d.ts +0 -1
  44. package/dist/docx/compatibility.d.ts +0 -1
  45. package/dist/docx/conformance.d.ts +0 -1
  46. package/dist/docx/corePropertiesParser.d.ts +0 -1
  47. package/dist/docx/documentParser.d.ts +0 -1
  48. package/dist/docx/documentParser.js +3 -1
  49. package/dist/docx/drawingIdNormalization.d.ts +5 -0
  50. package/dist/docx/drawingIdNormalization.js +35 -0
  51. package/dist/docx/drawingUtils.d.ts +24 -3
  52. package/dist/docx/drawingUtils.js +134 -28
  53. package/dist/docx/encryption/agileDecryption.d.ts +0 -1
  54. package/dist/docx/encryption/cryptoBytes.js +4 -1
  55. package/dist/docx/encryption/openEncryptedDocx.d.ts +5 -2
  56. package/dist/docx/ensureParaIds.d.ts +7 -3
  57. package/dist/docx/fieldParser.d.ts +23 -11
  58. package/dist/docx/fontTableParser.d.ts +0 -1
  59. package/dist/docx/footnoteParser.d.ts +26 -13
  60. package/dist/docx/footnoteParser.js +4 -2
  61. package/dist/docx/groupDrawingParser.d.ts +0 -1
  62. package/dist/docx/headerFooterParser.d.ts +9 -5
  63. package/dist/docx/headerFooterRefParser.d.ts +0 -1
  64. package/dist/docx/headerFooterReferenceNormalization.d.ts +1 -6
  65. package/dist/docx/headerFooterVerbatim.d.ts +4 -3
  66. package/dist/docx/headerFooterVerbatim.js +6 -1
  67. package/dist/docx/hyperlinkParser.d.ts +0 -1
  68. package/dist/docx/hyperlinkParser.js +1 -9
  69. package/dist/docx/imageParser.d.ts +0 -1
  70. package/dist/docx/imageParser.js +15 -7
  71. package/dist/docx/mathToMathml.d.ts +0 -1
  72. package/dist/docx/metadataPrivacy.d.ts +1 -3
  73. package/dist/docx/modelValidation.d.ts +0 -1
  74. package/dist/docx/newImage.d.ts +11 -0
  75. package/dist/docx/newImage.js +11 -0
  76. package/dist/docx/normalizeBaseDirection.d.ts +0 -1
  77. package/dist/docx/notePropertiesParser.d.ts +0 -1
  78. package/dist/docx/numberingParser.d.ts +10 -6
  79. package/dist/docx/numberingParser.js +4 -2
  80. package/dist/docx/numberingReferenceNormalization.d.ts +1 -9
  81. package/dist/docx/paragraphParser.d.ts +0 -1
  82. package/dist/docx/paragraphParser.js +31 -15
  83. package/dist/docx/paragraphTextBoxEnrichment.d.ts +0 -1
  84. package/dist/docx/paragraphTextBoxEnrichment.js +2 -1
  85. package/dist/docx/paragraphTraversal.d.ts +5 -10
  86. package/dist/docx/paragraphTraversal.js +20 -13
  87. package/dist/docx/parser.d.ts +15 -8
  88. package/dist/docx/parser.js +22 -1
  89. package/dist/docx/parserEnums.d.ts +5 -2
  90. package/dist/docx/parserEnums.js +6 -2
  91. package/dist/docx/relsParser.d.ts +1 -0
  92. package/dist/docx/renderedPageBreakNormalization.d.ts +12 -0
  93. package/dist/docx/renderedPageBreakNormalization.js +59 -0
  94. package/dist/docx/replyToComment.d.ts +2 -2
  95. package/dist/docx/rezip.d.ts +6 -7
  96. package/dist/docx/rezip.js +136 -102
  97. package/dist/docx/runConsolidator.d.ts +0 -1
  98. package/dist/docx/runConsolidator.js +0 -1
  99. package/dist/docx/runParser.d.ts +0 -1
  100. package/dist/docx/runParser.js +25 -12
  101. package/dist/docx/sdtProperties.d.ts +0 -1
  102. package/dist/docx/sdtPropertiesPatch.d.ts +0 -1
  103. package/dist/docx/sectionParser.d.ts +0 -1
  104. package/dist/docx/selectiveSave.d.ts +5 -3
  105. package/dist/docx/selectiveSave.js +2 -2
  106. package/dist/docx/selectiveSaveFlags.d.ts +4 -2
  107. package/dist/docx/selectiveXmlPatch.js +20 -8
  108. package/dist/docx/serializer/blockSdtSerializer.d.ts +0 -1
  109. package/dist/docx/serializer/blockSdtSerializer.js +2 -1
  110. package/dist/docx/serializer/borderSerializer.d.ts +0 -1
  111. package/dist/docx/serializer/commentSerializer.d.ts +0 -1
  112. package/dist/docx/serializer/commentSerializer.js +19 -40
  113. package/dist/docx/serializer/documentSerializer.d.ts +0 -1
  114. package/dist/docx/serializer/documentSerializer.js +1 -1
  115. package/dist/docx/serializer/fontTableSerializer.d.ts +0 -1
  116. package/dist/docx/serializer/headerFooterSerializer.d.ts +0 -1
  117. package/dist/docx/serializer/headerFooterSerializer.js +1 -1
  118. package/dist/docx/serializer/noteSerializer.d.ts +0 -1
  119. package/dist/docx/serializer/noteSerializer.js +1 -1
  120. package/dist/docx/serializer/numberingSerializer.d.ts +0 -1
  121. package/dist/docx/serializer/paragraphSerializer.d.ts +0 -1
  122. package/dist/docx/serializer/paragraphSerializer.js +10 -23
  123. package/dist/docx/serializer/runSerializer.d.ts +0 -1
  124. package/dist/docx/serializer/runSerializer.js +53 -32
  125. package/dist/docx/serializer/sectionPropertiesSerializer.d.ts +0 -1
  126. package/dist/docx/serializer/sectionPropertiesSerializer.js +7 -5
  127. package/dist/docx/serializer/settingsSerializer.d.ts +0 -1
  128. package/dist/docx/serializer/stylesSerializer.d.ts +0 -1
  129. package/dist/docx/serializer/tableSerializer.d.ts +0 -1
  130. package/dist/docx/serializer/tableSerializer.js +2 -0
  131. package/dist/docx/serializer/themeSerializer.d.ts +0 -1
  132. package/dist/docx/serializer/xmlUtils.js +10 -1
  133. package/dist/docx/server/applyDocxXmlPatchProposal.d.ts +3 -10
  134. package/dist/docx/server/docxToMarkdown.d.ts +0 -1
  135. package/dist/docx/server/evaluateDocxXmlPatchProposal.d.ts +3 -9
  136. package/dist/docx/server/inspectDocxPackage.d.ts +3 -8
  137. package/dist/docx/server/validateDocxConformance.d.ts +0 -1
  138. package/dist/docx/settingsParser.d.ts +2 -2
  139. package/dist/docx/shapeParser.d.ts +0 -1
  140. package/dist/docx/shapeParser.js +16 -123
  141. package/dist/docx/streamingXmlParser.d.ts +16 -0
  142. package/dist/docx/streamingXmlParser.js +248 -0
  143. package/dist/docx/styleParser.d.ts +0 -1
  144. package/dist/docx/styleParser.js +6 -4
  145. package/dist/docx/tableParser.d.ts +1 -2
  146. package/dist/docx/tableParser.js +11 -12
  147. package/dist/docx/textBoxParser.d.ts +1 -2
  148. package/dist/docx/textBoxParser.js +5 -2
  149. package/dist/docx/textWhitespace.d.ts +4 -0
  150. package/dist/docx/textWhitespace.js +4 -0
  151. package/dist/docx/themeParser.d.ts +0 -1
  152. package/dist/docx/trackedMoveRangeNormalization.d.ts +1 -8
  153. package/dist/docx/unzip.d.ts +6 -3
  154. package/dist/docx/unzip.js +96 -40
  155. package/dist/docx/vmlImageParser.d.ts +0 -1
  156. package/dist/docx/vmlImageParser.js +3 -1
  157. package/dist/docx/watermarkParser.d.ts +0 -1
  158. package/dist/docx/xmlParser.d.ts +21 -8
  159. package/dist/docx/xmlParser.js +126 -43
  160. package/dist/fields/bookmarkPages.d.ts +0 -1
  161. package/dist/fields/bookmarkText.d.ts +0 -1
  162. package/dist/fields/evaluateField.d.ts +5 -3
  163. package/dist/fields/fieldContext.d.ts +11 -5
  164. package/dist/fields/resolveFieldValues.d.ts +4 -3
  165. package/dist/fields/sectionPageCounts.d.ts +0 -1
  166. package/dist/fields/seqValues.d.ts +0 -1
  167. package/dist/fonts/embeddedFontTable.d.ts +5 -2
  168. package/dist/fonts/embeddedFonts.d.ts +15 -7
  169. package/dist/index.d.ts +1 -0
  170. package/dist/layout-bridge/cellSelectionHighlight.d.ts +0 -1
  171. package/dist/layout-bridge/convert/footnoteLayout.d.ts +5 -3
  172. package/dist/layout-bridge/convert/headerFooterLayout.d.ts +2 -2
  173. package/dist/layout-bridge/convert/paragraphFrames.d.ts +0 -1
  174. package/dist/layout-bridge/convert/templatePreviewFlow.d.ts +8 -8
  175. package/dist/layout-bridge/convert/toFlowBlocks.d.ts +25 -13
  176. package/dist/layout-bridge/convert/wrapEditorViewAsSurface.d.ts +3 -2
  177. package/dist/layout-bridge/dom/findHfPmSpans.d.ts +2 -1
  178. package/dist/layout-bridge/dom/noteStoryDom.d.ts +0 -1
  179. package/dist/layout-bridge/engine/clickToPosition.d.ts +5 -3
  180. package/dist/layout-bridge/engine/hitTest.d.ts +40 -19
  181. package/dist/layout-bridge/engine/selectionRects.d.ts +16 -8
  182. package/dist/layout-bridge/engine/tableWidthUtils.d.ts +0 -1
  183. package/dist/layout-bridge/headerFooterLayout.d.ts +0 -1
  184. package/dist/layout-bridge/sectionColumns.d.ts +0 -1
  185. package/dist/layout-bridge/tableInsertHover.d.ts +8 -4
  186. package/dist/layout-engine/headerFooterRefs.d.ts +0 -1
  187. package/dist/layout-engine/index.d.ts +0 -1
  188. package/dist/layout-engine/justificationCompatibility.d.ts +0 -1
  189. package/dist/layout-engine/keep-together.d.ts +7 -4
  190. package/dist/layout-engine/layoutInstrumentation.d.ts +0 -1
  191. package/dist/layout-engine/lineFlow.d.ts +0 -1
  192. package/dist/layout-engine/measure/cache.d.ts +0 -1
  193. package/dist/layout-engine/measure/effectiveLineBreakPolicy.d.ts +6 -7
  194. package/dist/layout-engine/measure/floatingTablePosition.d.ts +0 -1
  195. package/dist/layout-engine/measure/floatingZones.d.ts +14 -6
  196. package/dist/layout-engine/measure/font-metrics.worker.d.ts +0 -1
  197. package/dist/layout-engine/measure/lineBreakProvider.d.ts +20 -9
  198. package/dist/layout-engine/measure/lineBreaks.d.ts +0 -1
  199. package/dist/layout-engine/measure/listMarkerWidth.d.ts +0 -1
  200. package/dist/layout-engine/measure/measureBlocks.d.ts +1 -0
  201. package/dist/layout-engine/measure/measureContainer.d.ts +0 -1
  202. package/dist/layout-engine/measure/measureHelpers.d.ts +0 -1
  203. package/dist/layout-engine/measure/measureParagraph.d.ts +3 -2
  204. package/dist/layout-engine/measure/measureParagraph.js +23 -3
  205. package/dist/layout-engine/measure/measureProvider.d.ts +0 -1
  206. package/dist/layout-engine/measure/measureTypes.d.ts +4 -2
  207. package/dist/layout-engine/measure/measureWorker.d.ts +0 -1
  208. package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +0 -1
  209. package/dist/layout-engine/measure/tableCellFloating.d.ts +0 -1
  210. package/dist/layout-engine/measure/tableCellFlow.d.ts +0 -1
  211. package/dist/layout-engine/measure/tableCellGrid.d.ts +0 -1
  212. package/dist/layout-engine/measure/textBoxParagraphLayout.d.ts +0 -1
  213. package/dist/layout-engine/measure/textMeasurementPolicy.d.ts +0 -1
  214. package/dist/layout-engine/paginator.d.ts +66 -33
  215. package/dist/layout-engine/paragraphFragmentRange.d.ts +0 -1
  216. package/dist/layout-engine/paragraphFrame.d.ts +0 -1
  217. package/dist/layout-engine/paragraphSequence.d.ts +0 -1
  218. package/dist/layout-engine/paragraphSpacing.d.ts +1 -5
  219. package/dist/layout-engine/pmPageIndex.d.ts +0 -1
  220. package/dist/layout-engine/renderedBreakReconciliation.d.ts +2 -17
  221. package/dist/layout-engine/section-breaks.d.ts +34 -17
  222. package/dist/layout-engine/tableRowBreak.d.ts +4 -3
  223. package/dist/layout-engine/textBoxFlow.d.ts +0 -1
  224. package/dist/layout-engine/textBoxGroup.d.ts +0 -1
  225. package/dist/layout-engine/types.d.ts +382 -189
  226. package/dist/layout-painter/anchoredImagePosition.d.ts +0 -1
  227. package/dist/layout-painter/borderStroke.d.ts +0 -1
  228. package/dist/layout-painter/imageLayout.d.ts +14 -7
  229. package/dist/layout-painter/index.d.ts +9 -5
  230. package/dist/layout-painter/registry/modules/image.d.ts +0 -1
  231. package/dist/layout-painter/registry/modules/paragraph.d.ts +0 -1
  232. package/dist/layout-painter/registry/modules/table.d.ts +0 -1
  233. package/dist/layout-painter/registry/modules/textBox.d.ts +0 -1
  234. package/dist/layout-painter/registry/modules.d.ts +0 -1
  235. package/dist/layout-painter/registry/registry.d.ts +0 -1
  236. package/dist/layout-painter/registry/types.d.ts +0 -1
  237. package/dist/layout-painter/renderFragment.d.ts +2 -2
  238. package/dist/layout-painter/renderImage.d.ts +0 -1
  239. package/dist/layout-painter/renderPage.d.ts +71 -42
  240. package/dist/layout-painter/renderParagraph.d.ts +28 -14
  241. package/dist/layout-painter/renderParagraph.js +6 -2
  242. package/dist/layout-painter/renderTable.d.ts +0 -1
  243. package/dist/layout-painter/renderTextBox.d.ts +0 -1
  244. package/dist/layout-painter/renderUtils.d.ts +17 -9
  245. package/dist/layout-painter/renderWatermark.d.ts +2 -2
  246. package/dist/layout-painter/sdtBoundary.d.ts +0 -1
  247. package/dist/managers/AutoSaveManager.d.ts +22 -11
  248. package/dist/managers/ClipboardManager.d.ts +0 -1
  249. package/dist/managers/ContextMenuManager.d.ts +5 -8
  250. package/dist/managers/DocumentLoaderManager.d.ts +12 -6
  251. package/dist/managers/EditorModeManager.d.ts +3 -2
  252. package/dist/managers/ErrorManager.d.ts +0 -1
  253. package/dist/managers/FindReplaceManager.d.ts +0 -1
  254. package/dist/managers/HistoryManager.d.ts +19 -9
  255. package/dist/managers/TableSelectionManager.d.ts +0 -1
  256. package/dist/managers/editorShortcuts.d.ts +4 -6
  257. package/dist/markdown/annotations.d.ts +0 -1
  258. package/dist/markdown/fromMarkdown.d.ts +0 -1
  259. package/dist/markdown/images.d.ts +0 -1
  260. package/dist/markdown/index.d.ts +0 -1
  261. package/dist/markdown/internals.d.ts +0 -1
  262. package/dist/markdown/renderBlock.d.ts +0 -1
  263. package/dist/markdown/renderParagraph.d.ts +0 -1
  264. package/dist/markdown/renderRuns.d.ts +0 -1
  265. package/dist/markdown/renderTable.d.ts +0 -1
  266. package/dist/markdown/trailers.d.ts +0 -1
  267. package/dist/markdown/types.d.ts +39 -18
  268. package/dist/model.d.ts +3 -5
  269. package/dist/model.js +2 -2
  270. package/dist/paged-layout/incrementalMeasure.d.ts +1 -10
  271. package/dist/paged-layout/pageText.d.ts +1 -1
  272. package/dist/paged-layout/paragraphFlash.d.ts +0 -1
  273. package/dist/paged-layout/paragraphFlashTypes.d.ts +5 -2
  274. package/dist/paged-layout/rangeProjection.d.ts +10 -5
  275. package/dist/paged-layout/scrollNavigation.d.ts +0 -1
  276. package/dist/paged-layout/scrollPageInfo.d.ts +12 -13
  277. package/dist/paged-layout/scrollToPmPosition.d.ts +0 -1
  278. package/dist/paged-layout/sectionBlockWidths.d.ts +2 -11
  279. package/dist/paged-layout/sectionGeometry.d.ts +0 -1
  280. package/dist/paged-layout/selectionViewportRect.d.ts +0 -1
  281. package/dist/paged-layout/transactionDirtyRange.d.ts +0 -1
  282. package/dist/paged-layout/zoomScrollAnchor.d.ts +2 -12
  283. package/dist/prosemirror/attrs/index.d.ts +6 -4
  284. package/dist/prosemirror/attrs/index.js +22 -2
  285. package/dist/prosemirror/autospacingBase.d.ts +0 -1
  286. package/dist/prosemirror/cellDragSelection.d.ts +6 -4
  287. package/dist/prosemirror/commands/comments.d.ts +6 -4
  288. package/dist/prosemirror/commands/contentControls.d.ts +5 -3
  289. package/dist/prosemirror/commands/contentControlsBlockFill.d.ts +1 -1
  290. package/dist/prosemirror/commands/formatPainter.d.ts +0 -1
  291. package/dist/prosemirror/commands/formatting.d.ts +1 -1
  292. package/dist/prosemirror/commands/hyperlink.d.ts +4 -9
  293. package/dist/prosemirror/commands/image.d.ts +0 -1
  294. package/dist/prosemirror/commands/pageBreak.d.ts +0 -1
  295. package/dist/prosemirror/commands/paragraph.d.ts +0 -1
  296. package/dist/prosemirror/commands/pastePlainText.d.ts +0 -1
  297. package/dist/prosemirror/commands/propertyChangeScope.d.ts +0 -1
  298. package/dist/prosemirror/commands/sectionBreak.d.ts +0 -1
  299. package/dist/prosemirror/commands/table.d.ts +0 -1
  300. package/dist/prosemirror/commands/tableCellMergeResolution.d.ts +0 -1
  301. package/dist/prosemirror/commentIdAllocator.d.ts +2 -2
  302. package/dist/prosemirror/commentOps.d.ts +0 -1
  303. package/dist/prosemirror/conversion/effectiveTableCellFormatting.d.ts +1 -10
  304. package/dist/prosemirror/conversion/fromProseDoc.d.ts +0 -1
  305. package/dist/prosemirror/conversion/fromProseDoc.js +17 -10
  306. package/dist/prosemirror/conversion/runShadingMark.d.ts +0 -1
  307. package/dist/prosemirror/conversion/sdtAttrs.d.ts +0 -1
  308. package/dist/prosemirror/conversion/toProseDoc.d.ts +3 -2
  309. package/dist/prosemirror/conversion/toProseDoc.js +17 -3
  310. package/dist/prosemirror/extensions/ExtensionManager.d.ts +0 -1
  311. package/dist/prosemirror/extensions/StarterKit.d.ts +7 -4
  312. package/dist/prosemirror/extensions/core/DocExtension.d.ts +0 -1
  313. package/dist/prosemirror/extensions/core/HistoryExtension.d.ts +0 -1
  314. package/dist/prosemirror/extensions/core/ParagraphExtension.d.ts +0 -1
  315. package/dist/prosemirror/extensions/core/TextExtension.d.ts +0 -1
  316. package/dist/prosemirror/extensions/create.d.ts +0 -1
  317. package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts +0 -1
  318. package/dist/prosemirror/extensions/features/BaseKeymapExtension.d.ts +0 -1
  319. package/dist/prosemirror/extensions/features/BidiShortcutExtension.d.ts +0 -1
  320. package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.d.ts +0 -1
  321. package/dist/prosemirror/extensions/features/DropCursorExtension.d.ts +0 -1
  322. package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts +0 -1
  323. package/dist/prosemirror/extensions/features/GapCursorExtension.d.ts +0 -1
  324. package/dist/prosemirror/extensions/features/ImageDragExtension.d.ts +0 -1
  325. package/dist/prosemirror/extensions/features/ImagePasteExtension.d.ts +0 -1
  326. package/dist/prosemirror/extensions/features/ListExtension.d.ts +0 -1
  327. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +0 -1
  328. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +7 -4
  329. package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +0 -1
  330. package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.d.ts +0 -1
  331. package/dist/prosemirror/extensions/features/SelectionTrackerExtension.d.ts +0 -1
  332. package/dist/prosemirror/extensions/features/bidiShortcutController.d.ts +3 -1
  333. package/dist/prosemirror/extensions/marks/AllCapsExtension.d.ts +0 -1
  334. package/dist/prosemirror/extensions/marks/BoldExtension.d.ts +0 -1
  335. package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.d.ts +0 -1
  336. package/dist/prosemirror/extensions/marks/CharacterStyleExtension.d.ts +0 -1
  337. package/dist/prosemirror/extensions/marks/CommentExtension.d.ts +0 -1
  338. package/dist/prosemirror/extensions/marks/FontFamilyExtension.d.ts +0 -1
  339. package/dist/prosemirror/extensions/marks/FontFamilyExtension.js +1 -0
  340. package/dist/prosemirror/extensions/marks/FontSizeExtension.d.ts +0 -1
  341. package/dist/prosemirror/extensions/marks/FootnoteRefExtension.d.ts +0 -1
  342. package/dist/prosemirror/extensions/marks/HiddenTextExtension.d.ts +0 -1
  343. package/dist/prosemirror/extensions/marks/HighlightExtension.d.ts +0 -1
  344. package/dist/prosemirror/extensions/marks/HyperlinkExtension.d.ts +0 -1
  345. package/dist/prosemirror/extensions/marks/ItalicExtension.d.ts +0 -1
  346. package/dist/prosemirror/extensions/marks/LanguageExtension.d.ts +0 -1
  347. package/dist/prosemirror/extensions/marks/RtlExtension.d.ts +0 -1
  348. package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.d.ts +0 -1
  349. package/dist/prosemirror/extensions/marks/RunShadingExtension.d.ts +0 -1
  350. package/dist/prosemirror/extensions/marks/SmallCapsExtension.d.ts +0 -1
  351. package/dist/prosemirror/extensions/marks/StrikeExtension.d.ts +0 -1
  352. package/dist/prosemirror/extensions/marks/SubscriptExtension.d.ts +0 -1
  353. package/dist/prosemirror/extensions/marks/SuperscriptExtension.d.ts +0 -1
  354. package/dist/prosemirror/extensions/marks/TextColorExtension.d.ts +0 -1
  355. package/dist/prosemirror/extensions/marks/TextEffectExtension.d.ts +0 -1
  356. package/dist/prosemirror/extensions/marks/TextEffectsExtensions.d.ts +0 -1
  357. package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.d.ts +0 -1
  358. package/dist/prosemirror/extensions/marks/UnderlineExtension.d.ts +0 -1
  359. package/dist/prosemirror/extensions/marks/markUtils.d.ts +0 -1
  360. package/dist/prosemirror/extensions/marks/markUtils.js +4 -1
  361. package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +0 -1
  362. package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +0 -1
  363. package/dist/prosemirror/extensions/nodes/HardBreakExtension.d.ts +0 -1
  364. package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.d.ts +0 -1
  365. package/dist/prosemirror/extensions/nodes/ImageExtension.d.ts +0 -1
  366. package/dist/prosemirror/extensions/nodes/ImageExtension.js +2 -0
  367. package/dist/prosemirror/extensions/nodes/MathExtension.d.ts +0 -1
  368. package/dist/prosemirror/extensions/nodes/PageBreakExtension.d.ts +0 -1
  369. package/dist/prosemirror/extensions/nodes/RenderedPageBreakExtension.d.ts +0 -1
  370. package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +0 -1
  371. package/dist/prosemirror/extensions/nodes/ShapeExtension.d.ts +0 -1
  372. package/dist/prosemirror/extensions/nodes/ShapeExtension.js +2 -0
  373. package/dist/prosemirror/extensions/nodes/TabExtension.d.ts +0 -1
  374. package/dist/prosemirror/extensions/nodes/TabExtension.js +32 -9
  375. package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +4 -3
  376. package/dist/prosemirror/extensions/nodes/TextBoxAnchorExtension.d.ts +0 -1
  377. package/dist/prosemirror/extensions/nodes/TextBoxExtension.d.ts +53 -27
  378. package/dist/prosemirror/extensions/types.d.ts +0 -1
  379. package/dist/prosemirror/findReplaceSelection.d.ts +5 -3
  380. package/dist/prosemirror/imageCommit.d.ts +0 -1
  381. package/dist/prosemirror/index.d.ts +4 -0
  382. package/dist/prosemirror/insertOperations.d.ts +0 -1
  383. package/dist/prosemirror/paraText.d.ts +0 -1
  384. package/dist/prosemirror/plugins/aiCitationDecorations.d.ts +2 -2
  385. package/dist/prosemirror/plugins/aiSuggestionDecorations.d.ts +0 -1
  386. package/dist/prosemirror/plugins/anonymizationDecorations.d.ts +9 -7
  387. package/dist/prosemirror/plugins/autocompleteSuggestion.d.ts +2 -2
  388. package/dist/prosemirror/plugins/contentControlWidgets.d.ts +4 -7
  389. package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +3 -8
  390. package/dist/prosemirror/plugins/documentStyles.d.ts +0 -1
  391. package/dist/prosemirror/plugins/pmTextScan.d.ts +2 -2
  392. package/dist/prosemirror/plugins/revisionIds.d.ts +0 -1
  393. package/dist/prosemirror/plugins/selectionTracker.d.ts +23 -12
  394. package/dist/prosemirror/plugins/suggestionMode.d.ts +0 -1
  395. package/dist/prosemirror/plugins/templateDirectives.d.ts +10 -8
  396. package/dist/prosemirror/plugins/templatePreviewValues.d.ts +10 -5
  397. package/dist/prosemirror/plugins/templateSlashMenu.d.ts +2 -2
  398. package/dist/prosemirror/queries.d.ts +0 -1
  399. package/dist/prosemirror/schema/index.d.ts +2 -3
  400. package/dist/prosemirror/schema/marks.d.ts +8 -5
  401. package/dist/prosemirror/schema/nodes.d.ts +344 -164
  402. package/dist/prosemirror/selectionState.d.ts +13 -7
  403. package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +0 -1
  404. package/dist/prosemirror/styles/styleResolver.d.ts +3 -2
  405. package/dist/prosemirror/tableCellMergeRevision.d.ts +0 -1
  406. package/dist/prosemirror/tableResize.d.ts +0 -1
  407. package/dist/prosemirror/textBoxAnchorAttrs.d.ts +0 -1
  408. package/dist/prosemirror/utils/extractTrackedChanges.d.ts +8 -5
  409. package/dist/prosemirror/utils/findParagraphByParaId.d.ts +0 -1
  410. package/dist/prosemirror/utils/tabCalculator.d.ts +18 -7
  411. package/dist/prosemirror/utils/visualLineNavigation.d.ts +0 -1
  412. package/dist/prosemirror/validation.d.ts +0 -1
  413. package/dist/prosemirror/validation.js +5 -3
  414. package/dist/redline.d.ts +16 -8
  415. package/dist/render-dom/BodySelectionOverlay.d.ts +1 -9
  416. package/dist/render-dom/HeaderFooterSelectionOverlay.d.ts +0 -1
  417. package/dist/render-dom/RemoteSelectionOverlay.d.ts +1 -8
  418. package/dist/render-dom/resolveSidebarItemPositions.d.ts +1 -9
  419. package/dist/style-engine/styleEngine.d.ts +21 -11
  420. package/dist/style-sets/extract.d.ts +4 -3
  421. package/dist/style-sets/stellaStyle.d.ts +0 -1
  422. package/dist/style-sets/types.d.ts +0 -1
  423. package/dist/symbols.d.ts +6 -2
  424. package/dist/types/block-id.d.ts +3 -6
  425. package/dist/types/content.d.ts +2 -2
  426. package/dist/types/document.d.ts +0 -3
  427. package/dist/types/documentEnumValues.d.ts +5 -1
  428. package/dist/types/documentEnumValues.js +19 -1
  429. package/dist/types/index.d.ts +2 -1
  430. package/dist/utils/clipboard.d.ts +17 -8
  431. package/dist/utils/colorResolver.d.ts +9 -5
  432. package/dist/utils/createDocument.d.ts +19 -10
  433. package/dist/utils/documentLoaderBehavior.d.ts +1 -5
  434. package/dist/utils/docxInput.js +1 -0
  435. package/dist/utils/findReplace.d.ts +0 -1
  436. package/dist/utils/fontFamilyMerge.d.ts +0 -1
  437. package/dist/utils/fontResolver.d.ts +10 -4
  438. package/dist/utils/formatToStyle.d.ts +0 -1
  439. package/dist/utils/headerFooter.d.ts +8 -16
  440. package/dist/utils/headingCollector.d.ts +7 -4
  441. package/dist/utils/mergeDocumentContent.d.ts +0 -1
  442. package/dist/utils/paragraphFormattingMerge.d.ts +0 -1
  443. package/dist/utils/replaceText.d.ts +0 -1
  444. package/dist/utils/rotationBoundingBox.d.ts +0 -1
  445. package/dist/utils/tableOperations.d.ts +0 -1
  446. package/dist/utils/textFormattingMerge.d.ts +0 -1
  447. package/dist/version-comparison.d.ts +12 -6
  448. package/dist/watermark/index.d.ts +0 -1
  449. package/package.json +3 -3
@@ -1,5 +1,4 @@
1
1
  import { DocxArchiveOptions } from "./boundedArchive.js";
2
-
3
2
  //#region src/docx/server/inspectDocxPackage.d.ts
4
3
  declare const FOLIO_DOCX_PACKAGE_INSPECTION_VERSION: 1;
5
4
  declare const FOLIO_DOCX_PACKAGE_INSPECTION_DEFAULTS: Readonly<{
@@ -37,7 +36,8 @@ type FolioDocxInspectedXmlPart = {
37
36
  readonly path: string;
38
37
  readonly contentType: string | null;
39
38
  readonly byteLength: number;
40
- readonly sha256: string; /** Untrusted document data; callers must not treat this text as instructions. */
39
+ readonly sha256: string;
40
+ /** Untrusted document data; callers must not treat this text as instructions. */
41
41
  readonly text: string;
42
42
  };
43
43
  type FolioDocxPackageInspection = {
@@ -54,12 +54,7 @@ type ReadRequestedXmlPartsOptions = {
54
54
  maxBytes: number;
55
55
  }) => Promise<Uint8Array | null>;
56
56
  };
57
- declare const readRequestedXmlParts: ({
58
- paths,
59
- partsByPath,
60
- limits,
61
- readEntryUint8
62
- }: ReadRequestedXmlPartsOptions) => Promise<FolioDocxInspectedXmlPart[]>;
57
+ declare const readRequestedXmlParts: ({ paths, partsByPath, limits, readEntryUint8 }: ReadRequestedXmlPartsOptions) => Promise<FolioDocxInspectedXmlPart[]>;
63
58
  /**
64
59
  * Inspect package metadata and only the explicitly requested XML part bodies.
65
60
  * This reports archive contents, not package conformance; use the conformance
@@ -1,6 +1,5 @@
1
1
  import { document_d_exports } from "../../types/document.js";
2
2
  import { DocxArchiveOptions } from "./boundedArchive.js";
3
-
4
3
  //#region src/docx/server/validateDocxConformance.d.ts
5
4
  declare const FOLIO_DOCX_CONFORMANCE_REPORT_VERSION: 1;
6
5
  declare const FOLIO_DOCX_CONFORMANCE_PROFILE: "folio-supported-v1";
@@ -1,8 +1,8 @@
1
1
  import { document_d_exports } from "../types/document.js";
2
-
3
2
  //#region src/docx/settingsParser.d.ts
4
3
  type FolioDocumentSettings = document_d_exports.DocumentSettings & {
5
- /** Swap left/right section margins on even physical pages. */mirrorMargins?: boolean;
4
+ /** Swap left/right section margins on even physical pages. */
5
+ mirrorMargins?: boolean;
6
6
  };
7
7
  /** OOXML default per §17.6.13 when `w:defaultTabStop` is absent. */
8
8
  declare const DEFAULT_TAB_STOP_TWIPS = 720;
@@ -1,6 +1,5 @@
1
1
  import { document_d_exports } from "../types/document.js";
2
2
  import { XmlElement } from "./xmlParser.js";
3
-
4
3
  //#region src/docx/shapeParser.d.ts
5
4
  /**
6
5
  * Parse a `<wps:wsp>` element into a Shape model. Does NOT pick up the
@@ -1,6 +1,6 @@
1
- import { ShapeOutlineStyleSchema, ShapeTypeSchema, narrowEnum } from "./parserEnums.js";
2
- import { findAllDeep, findChildByLocalName, findChildrenByLocalName, getAttribute, parseNumericAttribute } from "./xmlParser.js";
3
- import { parseAnchorPosition, parseAnchorWrap, parseColorElement, parseFill } from "./drawingUtils.js";
1
+ import { ShapeTypeSchema, narrowEnum } from "./parserEnums.js";
2
+ import { findAllDeep, findChildByLocalName, getAttribute, parseNumericAttribute } from "./xmlParser.js";
3
+ import { parseAnchorPosition, parseAnchorWrap, parseFill, parseOutline } from "./drawingUtils.js";
4
4
  //#region src/docx/shapeParser.ts
5
5
  /** Convert OOXML rotation (1/60000ths of a degree) to degrees. */
6
6
  function rotToDegrees(rot) {
@@ -13,115 +13,7 @@ function rotToDegrees(rot) {
13
13
  * Falls through to `drawingUtils.parseFill` for solid / none cases.
14
14
  */
15
15
  function parseShapeFill(spPr) {
16
- const base = parseFill(spPr);
17
- if (base?.type !== "gradient" || !spPr) return base;
18
- const gradFill = findChildByLocalName(spPr, "gradFill");
19
- if (!gradFill) return base;
20
- return parseGradientFill(gradFill);
21
- }
22
- function parseGradientFill(gradFill) {
23
- let gradientType = "linear";
24
- let angle;
25
- const lin = findChildByLocalName(gradFill, "lin");
26
- if (lin) {
27
- gradientType = "linear";
28
- const ang = getAttribute(lin, null, "ang");
29
- if (ang) {
30
- const parsed = Number.parseInt(ang, 10);
31
- angle = Number.isNaN(parsed) ? void 0 : parsed / 6e4;
32
- }
33
- }
34
- const path = findChildByLocalName(gradFill, "path");
35
- if (path) {
36
- const pathType = getAttribute(path, null, "path");
37
- if (pathType === "circle") gradientType = "radial";
38
- else if (pathType === "rect") gradientType = "rectangular";
39
- else gradientType = "path";
40
- }
41
- const stops = [];
42
- const gsLst = findChildByLocalName(gradFill, "gsLst");
43
- if (gsLst) for (const gs of findChildrenByLocalName(gsLst, "gs")) {
44
- const pos = getAttribute(gs, null, "pos");
45
- const position = pos ? Number.parseInt(pos, 10) : 0;
46
- const color = parseColorElement(gs);
47
- if (color) stops.push({
48
- position: Number.isNaN(position) ? 0 : position,
49
- color
50
- });
51
- }
52
- return {
53
- type: "gradient",
54
- gradient: {
55
- type: gradientType,
56
- ...angle !== void 0 ? { angle } : {},
57
- stops
58
- }
59
- };
60
- }
61
- const LINE_END_TYPES = /* @__PURE__ */ new Set([
62
- "none",
63
- "triangle",
64
- "stealth",
65
- "diamond",
66
- "oval",
67
- "arrow"
68
- ]);
69
- function narrowLineEndType(value) {
70
- if (value === null || value === void 0) return "none";
71
- for (const allowed of LINE_END_TYPES) if (allowed === value) return allowed;
72
- return "none";
73
- }
74
- function narrowLineEndSize(value) {
75
- if (value === "sm" || value === "med" || value === "lg") return value;
76
- }
77
- function parseLineEnd(element) {
78
- const type = narrowLineEndType(getAttribute(element, null, "type"));
79
- const width = narrowLineEndSize(getAttribute(element, null, "w"));
80
- const length = narrowLineEndSize(getAttribute(element, null, "len"));
81
- return {
82
- type,
83
- ...width !== void 0 ? { width } : {},
84
- ...length !== void 0 ? { length } : {}
85
- };
86
- }
87
- /**
88
- * Parse a shape outline with cap, join, and arrow end fidelity. Returns
89
- * `undefined` when the spPr has no `<a:ln>`, an explicit `<a:noFill/>`,
90
- * or no usable attributes.
91
- */
92
- function parseShapeOutline(spPr) {
93
- const ln = findChildByLocalName(spPr, "ln");
94
- if (!ln) return;
95
- if (findChildByLocalName(ln, "noFill")) return;
96
- const outline = {};
97
- const w = getAttribute(ln, null, "w");
98
- if (w) {
99
- const parsed = Number.parseInt(w, 10);
100
- if (!Number.isNaN(parsed)) outline.width = parsed;
101
- }
102
- const cap = getAttribute(ln, null, "cap");
103
- if (cap === "flat") outline.cap = "flat";
104
- else if (cap === "rnd") outline.cap = "round";
105
- else if (cap === "sq") outline.cap = "square";
106
- if (findChildByLocalName(ln, "bevel")) outline.join = "bevel";
107
- else if (findChildByLocalName(ln, "round")) outline.join = "round";
108
- else if (findChildByLocalName(ln, "miter")) outline.join = "miter";
109
- const solidFill = findChildByLocalName(ln, "solidFill");
110
- if (solidFill) {
111
- const color = parseColorElement(solidFill);
112
- if (color) outline.color = color;
113
- }
114
- const prstDash = findChildByLocalName(ln, "prstDash");
115
- if (prstDash) {
116
- const narrowed = narrowEnum(getAttribute(prstDash, null, "val"), ShapeOutlineStyleSchema);
117
- if (narrowed !== void 0) outline.style = narrowed;
118
- }
119
- const headEnd = findChildByLocalName(ln, "headEnd");
120
- if (headEnd) outline.headEnd = parseLineEnd(headEnd);
121
- const tailEnd = findChildByLocalName(ln, "tailEnd");
122
- if (tailEnd) outline.tailEnd = parseLineEnd(tailEnd);
123
- if (outline.width === void 0 && outline.color === void 0 && outline.cap === void 0 && outline.join === void 0 && outline.style === void 0 && outline.headEnd === void 0 && outline.tailEnd === void 0) return;
124
- return outline;
16
+ return parseFill(spPr);
125
17
  }
126
18
  function parseTransform(xfrm) {
127
19
  if (!xfrm) return { size: {
@@ -179,13 +71,10 @@ function colorNeedsRawPreservation(color) {
179
71
  }
180
72
  function fillNeedsRawPreservation(fill) {
181
73
  if (!fill) return false;
182
- if (fill.type === "solid") return colorNeedsRawPreservation(fill.color);
74
+ if (fill.type === "solid") return false;
183
75
  if (fill.type === "gradient") return fill.gradient?.stops.some((stop) => colorNeedsRawPreservation(stop.color)) ?? false;
184
76
  return false;
185
77
  }
186
- function outlineNeedsRawPreservation(outline) {
187
- return colorNeedsRawPreservation(outline?.color);
188
- }
189
78
  /**
190
79
  * Parse a `<wps:wsp>` element into a Shape model. Does NOT pick up the
191
80
  * extent / position / wrap fields — those live on the wrapping
@@ -197,7 +86,7 @@ function parseShape(node) {
197
86
  const shapeType = parseShapeType(spPr);
198
87
  const { size, transform } = parseTransform(findChildByLocalName(spPr, "xfrm"));
199
88
  const fill = parseShapeFill(spPr);
200
- const outline = parseShapeOutline(spPr);
89
+ const outline = parseOutline(spPr);
201
90
  const id = cNvPr ? getAttribute(cNvPr, null, "id") ?? void 0 : void 0;
202
91
  const name = cNvPr ? getAttribute(cNvPr, null, "name") ?? void 0 : void 0;
203
92
  const shape = {
@@ -231,13 +120,17 @@ function parseShapeFromDrawing(drawingEl) {
231
120
  if (!wsp) return null;
232
121
  if (findChildByLocalName(wsp, "txbx") !== null) return null;
233
122
  const spPr = findChildByLocalName(wsp, "spPr");
234
- if (hasUnsupportedGeometry(spPr) || hasUnsupportedRgbColorModifiers(spPr) || hasUnmodeledFill(spPr) || fillNeedsRawPreservation(parseShapeFill(spPr)) || outlineNeedsRawPreservation(parseShapeOutline(spPr))) return null;
123
+ if (hasUnsupportedGeometry(spPr) || hasUnsupportedRgbColorModifiers(spPr) || hasUnmodeledFill(spPr) || fillNeedsRawPreservation(parseShapeFill(spPr))) return null;
235
124
  const shape = parseShape(wsp);
236
125
  const extent = findChildByLocalName(container, "extent");
237
- if (extent) shape.size = {
238
- width: parseNumericAttribute(extent, null, "cx") ?? shape.size.width,
239
- height: parseNumericAttribute(extent, null, "cy") ?? shape.size.height
240
- };
126
+ if (extent) {
127
+ const outerWidth = parseNumericAttribute(extent, null, "cx");
128
+ const outerHeight = parseNumericAttribute(extent, null, "cy");
129
+ shape.size = {
130
+ width: outerWidth !== void 0 && (outerWidth > 0 || shape.size.width === 0) ? outerWidth : shape.size.width,
131
+ height: outerHeight !== void 0 && (outerHeight > 0 || shape.size.height === 0) ? outerHeight : shape.size.height
132
+ };
133
+ }
241
134
  if (container === anchor) {
242
135
  const position = parseAnchorPosition(container);
243
136
  if (position) shape.position = position;
@@ -266,7 +159,7 @@ function shouldPreserveRawShapeDrawing(drawingEl) {
266
159
  if (hasUnsupportedGeometry(spPr)) return true;
267
160
  if (hasUnsupportedRgbColorModifiers(spPr)) return true;
268
161
  if (hasUnmodeledFill(spPr)) return true;
269
- return fillNeedsRawPreservation(parseShapeFill(spPr)) || outlineNeedsRawPreservation(parseShapeOutline(spPr));
162
+ return fillNeedsRawPreservation(parseShapeFill(spPr));
270
163
  }
271
164
  //#endregion
272
165
  export { parseShape, parseShapeFromDrawing, shouldPreserveRawShapeDrawing };
@@ -0,0 +1,16 @@
1
+ import { XmlElement } from "./xmlParser.js";
2
+ //#region src/docx/streamingXmlParser.d.ts
3
+ type ParseXmlResult = {
4
+ status: "parsed";
5
+ value: XmlElement;
6
+ } | {
7
+ status: "unsupported";
8
+ };
9
+ /**
10
+ * Parse ordinary OOXML into Folio's existing element representation in one
11
+ * pass. Unsupported or malformed constructs return a sentinel so callers can
12
+ * retain the general-purpose parser as a compatibility fallback.
13
+ */
14
+ declare const parseStreamingXml: (xml: string) => ParseXmlResult;
15
+ //#endregion
16
+ export { parseStreamingXml };
@@ -0,0 +1,248 @@
1
+ //#region src/docx/streamingXmlParser.ts
2
+ const BUILT_IN_ENTITIES = {
3
+ amp: "&",
4
+ apos: "'",
5
+ gt: ">",
6
+ lt: "<",
7
+ quot: "\""
8
+ };
9
+ /**
10
+ * Parse ordinary OOXML into Folio's existing element representation in one
11
+ * pass. Unsupported or malformed constructs return a sentinel so callers can
12
+ * retain the general-purpose parser as a compatibility fallback.
13
+ */
14
+ const parseStreamingXml = (xml) => {
15
+ const root = { elements: [] };
16
+ const stack = [];
17
+ let cursor = 0;
18
+ let mergeAdjacentText = false;
19
+ while (cursor < xml.length) {
20
+ const open = xml.indexOf("<", cursor);
21
+ if (open === -1) {
22
+ if (!appendText(xml.slice(cursor), stack, mergeAdjacentText)) return { status: "unsupported" };
23
+ break;
24
+ }
25
+ if (open > cursor && !appendText(xml.slice(cursor, open), stack, mergeAdjacentText)) return { status: "unsupported" };
26
+ if (open > cursor) mergeAdjacentText = true;
27
+ if (xml.startsWith("<!--", open)) {
28
+ const close = xml.indexOf("-->", open + 4);
29
+ if (close === -1) return { status: "unsupported" };
30
+ cursor = close + 3;
31
+ continue;
32
+ }
33
+ if (xml.startsWith("<![CDATA[", open)) {
34
+ const close = xml.indexOf("]]>", open + 9);
35
+ if (close === -1 || !appendRawText(normalizeLineEndings(xml.slice(open + 9, close)), stack)) return { status: "unsupported" };
36
+ cursor = close + 3;
37
+ mergeAdjacentText = false;
38
+ continue;
39
+ }
40
+ if (xml.startsWith("<?", open)) {
41
+ const close = xml.indexOf("?>", open + 2);
42
+ if (close === -1) return { status: "unsupported" };
43
+ cursor = close + 2;
44
+ continue;
45
+ }
46
+ if (xml.startsWith("<!", open)) return { status: "unsupported" };
47
+ const close = findTagClose(xml, open + 1);
48
+ if (close === -1) return { status: "unsupported" };
49
+ if (xml.charCodeAt(open + 1) === 47) {
50
+ const name = xml.slice(open + 2, close).trim();
51
+ const frame = stack.pop();
52
+ if (!frame || frame.name !== name) return { status: "unsupported" };
53
+ cursor = close + 1;
54
+ mergeAdjacentText = false;
55
+ continue;
56
+ }
57
+ const parsedTag = parseOpenTag(xml, open + 1, close);
58
+ if (parsedTag.status === "unsupported") return parsedTag;
59
+ const parent = stack.at(-1)?.element ?? root;
60
+ appendElement(parent, parsedTag.element);
61
+ if (!parsedTag.selfClosing) {
62
+ if (stack.length >= 100) return { status: "unsupported" };
63
+ stack.push({
64
+ element: parsedTag.element,
65
+ name: parsedTag.name
66
+ });
67
+ }
68
+ cursor = close + 1;
69
+ mergeAdjacentText = false;
70
+ }
71
+ if (stack.length > 0) return { status: "unsupported" };
72
+ return {
73
+ status: "parsed",
74
+ value: root
75
+ };
76
+ };
77
+ const parseOpenTag = (xml, start, close) => {
78
+ let cursor = skipWhitespace(xml, start, close);
79
+ const nameStart = cursor;
80
+ cursor = scanName(xml, cursor, close);
81
+ if (cursor === nameStart) return { status: "unsupported" };
82
+ const name = xml.slice(nameStart, cursor);
83
+ if (isUnsafePropertyName(name)) return { status: "unsupported" };
84
+ let attributes;
85
+ let selfClosing = false;
86
+ while (cursor < close) {
87
+ cursor = skipWhitespace(xml, cursor, close);
88
+ if (cursor >= close) break;
89
+ if (xml.charCodeAt(cursor) === 47) {
90
+ selfClosing = true;
91
+ cursor = skipWhitespace(xml, cursor + 1, close);
92
+ if (cursor !== close) return { status: "unsupported" };
93
+ break;
94
+ }
95
+ const attributeNameStart = cursor;
96
+ cursor = scanName(xml, cursor, close);
97
+ if (cursor === attributeNameStart) return { status: "unsupported" };
98
+ const attributeName = xml.slice(attributeNameStart, cursor);
99
+ if (isUnsafePropertyName(attributeName)) return { status: "unsupported" };
100
+ cursor = skipWhitespace(xml, cursor, close);
101
+ if (xml.charCodeAt(cursor) !== 61) return { status: "unsupported" };
102
+ cursor = skipWhitespace(xml, cursor + 1, close);
103
+ const quote = xml.charCodeAt(cursor);
104
+ if (quote !== 34 && quote !== 39) return { status: "unsupported" };
105
+ const valueStart = cursor + 1;
106
+ cursor = xml.indexOf(quote === 34 ? "\"" : "'", valueStart);
107
+ if (cursor === -1 || cursor > close) return { status: "unsupported" };
108
+ const decoded = decodeXmlEntities(normalizeLineEndings(xml.slice(valueStart, cursor)));
109
+ if (decoded === null) return { status: "unsupported" };
110
+ attributes ??= {};
111
+ attributes[attributeName] = decoded;
112
+ cursor += 1;
113
+ }
114
+ const element = {
115
+ type: "element",
116
+ name
117
+ };
118
+ if (attributes) element.attributes = attributes;
119
+ return {
120
+ status: "parsed",
121
+ element,
122
+ name,
123
+ selfClosing
124
+ };
125
+ };
126
+ const appendElement = (parent, child) => {
127
+ parent.elements ??= [];
128
+ parent.elements.push(child);
129
+ };
130
+ const appendText = (text, stack, mergeAdjacentText) => {
131
+ if (text.length === 0) return true;
132
+ const decoded = decodeXmlEntities(normalizeLineEndings(text));
133
+ if (decoded === null) return false;
134
+ const parent = stack.at(-1)?.element;
135
+ const previous = mergeAdjacentText ? parent?.elements?.at(-1) : void 0;
136
+ if (previous?.type === "text" && typeof previous.text === "string") {
137
+ previous.text += decoded;
138
+ return true;
139
+ }
140
+ return appendRawText(decoded, stack);
141
+ };
142
+ const appendRawText = (text, stack) => {
143
+ const parent = stack.at(-1)?.element;
144
+ if (!parent) return text.trim().length === 0;
145
+ appendElement(parent, {
146
+ type: "text",
147
+ text
148
+ });
149
+ return true;
150
+ };
151
+ const findTagClose = (xml, start) => {
152
+ let quote = 0;
153
+ for (let cursor = start; cursor < xml.length; cursor += 1) {
154
+ const code = xml.charCodeAt(cursor);
155
+ if (quote !== 0) {
156
+ if (code === quote) quote = 0;
157
+ continue;
158
+ }
159
+ if (code === 34 || code === 39) {
160
+ quote = code;
161
+ continue;
162
+ }
163
+ if (code === 62) return cursor;
164
+ }
165
+ return -1;
166
+ };
167
+ const skipWhitespace = (xml, start, limit) => {
168
+ let cursor = start;
169
+ while (cursor < limit) {
170
+ const code = xml.charCodeAt(cursor);
171
+ if (code !== 9 && code !== 10 && code !== 13 && code !== 32) break;
172
+ cursor += 1;
173
+ }
174
+ return cursor;
175
+ };
176
+ const scanName = (xml, start, limit) => {
177
+ let cursor = start;
178
+ while (cursor < limit) {
179
+ const code = xml.charCodeAt(cursor);
180
+ if (code === 9 || code === 10 || code === 13 || code === 32 || code === 47 || code === 61 || code === 62) break;
181
+ cursor += 1;
182
+ }
183
+ return cursor;
184
+ };
185
+ const decodeXmlEntities = (value) => {
186
+ const firstEntity = value.indexOf("&");
187
+ if (firstEntity === -1) return value;
188
+ const parts = [];
189
+ let cursor = 0;
190
+ let entityStart = firstEntity;
191
+ while (entityStart !== -1) {
192
+ parts.push(value.slice(cursor, entityStart));
193
+ const entityEnd = value.indexOf(";", entityStart + 1);
194
+ if (entityEnd === -1) return null;
195
+ const entity = value.slice(entityStart + 1, entityEnd);
196
+ const decoded = decodeXmlEntity(entity);
197
+ if (decoded === null) return null;
198
+ parts.push(decoded);
199
+ cursor = entityEnd + 1;
200
+ entityStart = value.indexOf("&", cursor);
201
+ }
202
+ parts.push(value.slice(cursor));
203
+ return parts.join("");
204
+ };
205
+ const normalizeLineEndings = (value) => {
206
+ if (!value.includes("\r")) return value;
207
+ return value.replaceAll("\r\n", "\n").replaceAll("\r", "\n");
208
+ };
209
+ const decodeXmlEntity = (entity) => {
210
+ switch (entity) {
211
+ case "amp": return BUILT_IN_ENTITIES.amp;
212
+ case "apos": return BUILT_IN_ENTITIES.apos;
213
+ case "gt": return BUILT_IN_ENTITIES.gt;
214
+ case "lt": return BUILT_IN_ENTITIES.lt;
215
+ case "quot": return BUILT_IN_ENTITIES.quot;
216
+ }
217
+ if (entity.charCodeAt(0) !== 35) return null;
218
+ const hexadecimal = entity.charCodeAt(1) === 120 || entity.charCodeAt(1) === 88;
219
+ const digits = entity.slice(hexadecimal ? 2 : 1);
220
+ if (digits.length === 0 || !hasOnlyDigits(digits, hexadecimal)) return null;
221
+ const codePoint = Number.parseInt(digits, hexadecimal ? 16 : 10);
222
+ if (!Number.isInteger(codePoint) || codePoint <= 0 || codePoint > 1114111 || codePoint >= 55296 && codePoint <= 57343) return null;
223
+ return String.fromCodePoint(codePoint);
224
+ };
225
+ const hasOnlyDigits = (value, hexadecimal) => {
226
+ for (let index = 0; index < value.length; index += 1) {
227
+ const code = value.charCodeAt(index);
228
+ if (!(code >= 48 && code <= 57) && !(hexadecimal && code >= 97 && code <= 102) && !(hexadecimal && code >= 65 && code <= 70)) return false;
229
+ }
230
+ return true;
231
+ };
232
+ const isUnsafePropertyName = (name) => {
233
+ switch (name) {
234
+ case "__defineGetter__":
235
+ case "__defineSetter__":
236
+ case "__lookupGetter__":
237
+ case "__lookupSetter__":
238
+ case "__proto__":
239
+ case "constructor":
240
+ case "hasOwnProperty":
241
+ case "prototype":
242
+ case "toString":
243
+ case "valueOf": return true;
244
+ default: return false;
245
+ }
246
+ };
247
+ //#endregion
248
+ export { parseStreamingXml };
@@ -1,5 +1,4 @@
1
1
  import { document_d_exports } from "../types/document.js";
2
-
3
2
  //#region src/docx/styleParser.d.ts
4
3
  /**
5
4
  * Style map keyed by styleId
@@ -1,5 +1,5 @@
1
- import { BorderStyleSchema, ConditionalStyleTypeSchema, EmphasisMarkSchema, FontThemeSchema, HighlightColorSchema, LineSpacingRuleSchema, ParagraphAlignmentSchema, ShadingPatternSchema, StyleTypeSchema, TabLeaderSchema, TabStopAlignmentSchema, TableCellTextDirectionSchema, TableRowHeightRuleSchema, TableWidthTypeSchema, TextEffectSchema, ThemeColorSlotSchema, UnderlineStyleSchema, narrowEnum } from "./parserEnums.js";
2
- import { findChild, findChildren, getAttribute, getLocalName, parseBooleanElement, parseNumericAttribute, parseTableMeasurementValue, parseXmlDocument } from "./xmlParser.js";
1
+ import { BorderStyleSchema, ConditionalStyleTypeSchema, EmphasisMarkSchema, FontHintSchema, FontThemeSchema, HighlightColorSchema, LineSpacingRuleSchema, ParagraphAlignmentSchema, ShadingPatternSchema, StyleTypeSchema, TabLeaderSchema, TabStopAlignmentSchema, TableCellTextDirectionSchema, TableRowHeightRuleSchema, TableWidthTypeSchema, TextEffectSchema, ThemeColorSlotSchema, UnderlineStyleSchema, narrowEnum } from "./parserEnums.js";
2
+ import { findChild, findChildren, getAttribute, getLocalName, parseBooleanElement, parseNumberingLevelAttribute, parseNumericAttribute, parseTableMeasurementValue, parseXmlDocument } from "./xmlParser.js";
3
3
  import { mergeTextFormatting } from "../utils/textFormattingMerge.js";
4
4
  import { mergeParagraphFormatting } from "../utils/paragraphFormattingMerge.js";
5
5
  import { resolveThemeFontRef } from "./themeParser.js";
@@ -76,6 +76,8 @@ function parseRunProperties(rPr, theme) {
76
76
  if (eastAsia) fontFamily.eastAsia = eastAsia;
77
77
  const csFont = getAttribute(rFonts, "w", "cs");
78
78
  if (csFont) fontFamily.cs = csFont;
79
+ const hint = narrowEnum(getAttribute(rFonts, "w", "hint"), FontHintSchema);
80
+ if (hint) fontFamily.hint = hint;
79
81
  const asciiTheme = narrowEnum(getAttribute(rFonts, "w", "asciiTheme"), FontThemeSchema);
80
82
  if (asciiTheme) {
81
83
  fontFamily.asciiTheme = asciiTheme;
@@ -244,7 +246,7 @@ function parseTabStops(tabs) {
244
246
  alignment
245
247
  };
246
248
  const leader = narrowEnum(getAttribute(tab, "w", "leader"), TabLeaderSchema);
247
- if (leader) tabStop.leader = leader;
249
+ if (leader && leader !== "none") tabStop.leader = leader;
248
250
  result.push(tabStop);
249
251
  }
250
252
  }
@@ -342,7 +344,7 @@ function parseParagraphProperties(pPr, theme) {
342
344
  if (val !== void 0) formatting.numPr.numId = val;
343
345
  }
344
346
  if (ilvl) {
345
- const val = parseNumericAttribute(ilvl, "w", "val");
347
+ const val = parseNumberingLevelAttribute(ilvl);
346
348
  if (val !== void 0) formatting.numPr.ilvl = val;
347
349
  }
348
350
  }
@@ -2,7 +2,6 @@ import { document_d_exports } from "../types/document.js";
2
2
  import { NumberingMap } from "./numberingParser.js";
3
3
  import { StyleMap } from "./styleParser.js";
4
4
  import { XmlElement } from "./xmlParser.js";
5
-
6
5
  //#region src/docx/tableParser.d.ts
7
6
  /**
8
7
  * Sanity cap on `w:gridSpan` (and the derived table column count). Word's
@@ -139,7 +138,7 @@ declare function parseTableGrid(tblGridElement: XmlElement | null): number[] | u
139
138
  declare function parseTable(tblElement: XmlElement, styles: StyleMap | null, theme: document_d_exports.Theme | null, numbering: NumberingMap | null, rels: document_d_exports.RelationshipMap | null, media: Map<string, document_d_exports.MediaFile> | null, options?: {
140
139
  inHeaderFooter?: boolean;
141
140
  rootXmlns?: Record<string, string>;
142
- }): document_d_exports.Table;
141
+ }): document_d_exports.Table | undefined;
143
142
  /**
144
143
  * Get the number of columns in a table
145
144
  *
@@ -1,5 +1,5 @@
1
1
  import { BorderStyleSchema, FloatingTableXSpecSchema, FloatingTableYSpecSchema, ShadingPatternSchema, TableCellTextDirectionSchema, ThemeColorSlotSchema, narrowEnum } from "./parserEnums.js";
2
- import { findChild, findChildByLocalName, findChildren, getAttribute, getChildElements, mergeXmlnsDeclarations, parseBooleanElement, parseNumericAttribute, parseTableMeasurementValue } from "./xmlParser.js";
2
+ import { findChild, findChildByLocalName, findChildren, getAttribute, getChildElements, getLocalName, mergeXmlnsDeclarations, parseBooleanElement, parseNumericAttribute, parseTableMeasurementValue } from "./xmlParser.js";
3
3
  import { parseBookmarkEnd, parseBookmarkStart } from "./bookmarkParser.js";
4
4
  import { parseParagraph } from "./paragraphParser.js";
5
5
  import { appendBookmarkMarkerToLastParagraphInBlocks, appendBookmarkMarkerToLastParagraphInCells, prependBookmarkMarkersToFirstParagraphInBlocks, prependBookmarkMarkersToFirstParagraphInCell } from "./bookmarkPlacement.js";
@@ -394,12 +394,14 @@ function parseTableRowProperties(trPrElement) {
394
394
  const heightElement = findChild(trPrElement, "w", "trHeight");
395
395
  if (heightElement) {
396
396
  const heightVal = parseNumericAttribute(heightElement, "w", "val");
397
- if (heightVal !== void 0 && heightVal > 0) formatting.height = {
398
- value: heightVal,
399
- type: "dxa"
400
- };
401
- const hRule = getAttribute(heightElement, "w", "hRule");
402
- if (hRule === "auto" || hRule === "atLeast" || hRule === "exact") formatting.heightRule = hRule;
397
+ if (heightVal !== void 0 && heightVal > 0) {
398
+ formatting.height = {
399
+ value: heightVal,
400
+ type: "dxa"
401
+ };
402
+ const hRule = getAttribute(heightElement, "w", "hRule");
403
+ if (hRule === "auto" || hRule === "atLeast" || hRule === "exact") formatting.heightRule = hRule;
404
+ }
403
405
  }
404
406
  if (parseBooleanElement(findChild(trPrElement, "w", "tblHeader"))) formatting.header = true;
405
407
  if (parseBooleanElement(findChild(trPrElement, "w", "cantSplit"))) formatting.cantSplit = true;
@@ -536,6 +538,7 @@ function parseCellContent(tcElement, styles, theme, numbering, rels, media, opti
536
538
  }
537
539
  if (localName === "tbl") {
538
540
  const table = parseTable(child, styles, theme, numbering, rels, media, options);
541
+ if (!table) return;
539
542
  if (prependBookmarkMarkersToFirstParagraphInBlocks([table], pendingBookmarkMarkers)) pendingBookmarkMarkers.length = 0;
540
543
  content.push(table);
541
544
  return;
@@ -635,11 +638,6 @@ function parseTableRow(trElement, styles, theme, numbering, rels, media, options
635
638
  if (pendingBookmarkMarkers.length > 0) appendBookmarkMarkersToLastCell(row, pendingBookmarkMarkers);
636
639
  return row;
637
640
  }
638
- function getLocalName(name) {
639
- if (!name) return "";
640
- const colonIndex = name.indexOf(":");
641
- return colonIndex === -1 ? name : name.slice(colonIndex + 1);
642
- }
643
641
  function parseBookmarkMarker(child, localName) {
644
642
  if (localName === "bookmarkStart") return parseBookmarkStart(child);
645
643
  return parseBookmarkEnd(child);
@@ -751,6 +749,7 @@ function parseTable(tblElement, styles, theme, numbering, rels, media, options)
751
749
  for (const sdtChild of getChildElements(sdtContent)) parseTableChild(sdtChild);
752
750
  };
753
751
  for (const child of getChildElements(tblElement)) parseTableChild(child);
752
+ if (table.rows.length === 0) return;
754
753
  inferImplicitSingleCellRowSpans(table, rowsWithGridOffsets);
755
754
  return table;
756
755
  }
@@ -2,7 +2,6 @@ import { document_d_exports } from "../types/document.js";
2
2
  import { NumberingMap } from "./numberingParser.js";
3
3
  import { StyleMap } from "./styleParser.js";
4
4
  import { XmlElement } from "./xmlParser.js";
5
-
6
5
  //#region src/docx/textBoxParser.d.ts
7
6
  /**
8
7
  * Extract raw paragraph elements from w:txbxContent
@@ -19,7 +18,7 @@ type ParagraphParserFn = (node: XmlElement, styles: StyleMap | null, theme: docu
19
18
  /**
20
19
  * Type for the table parser function to avoid circular imports
21
20
  */
22
- type TableParserFn = (node: XmlElement, styles: StyleMap | null, theme: document_d_exports.Theme | null, numbering: NumberingMap | null, rels: document_d_exports.RelationshipMap | null, media: Map<string, document_d_exports.MediaFile> | null) => document_d_exports.Table;
21
+ type TableParserFn = (node: XmlElement, styles: StyleMap | null, theme: document_d_exports.Theme | null, numbering: NumberingMap | null, rels: document_d_exports.RelationshipMap | null, media: Map<string, document_d_exports.MediaFile> | null) => document_d_exports.Table | undefined;
23
22
  /**
24
23
  * Parse text box content with provided parser functions
25
24
  * This avoids circular dependencies by accepting parser functions as parameters
@@ -55,7 +55,10 @@ function parseTextBoxContent(txbxContent, parseParagraph, parseTable, styles, th
55
55
  if (localName === "p") {
56
56
  const paragraph = parseParagraph(child, styles, theme, numbering, rels, media);
57
57
  blocks.push(paragraph);
58
- } else if (localName === "tbl" && parseTable) blocks.push(parseTable(child, styles, theme, numbering, rels, media));
58
+ } else if (localName === "tbl" && parseTable) {
59
+ const table = parseTable(child, styles, theme, numbering, rels, media);
60
+ if (table) blocks.push(table);
61
+ }
59
62
  }
60
63
  return blocks;
61
64
  }
@@ -130,7 +133,7 @@ function parseTextBox(drawingEl) {
130
133
  if (position) textBox.position = position;
131
134
  const wrap = parseAnchorWrap(container);
132
135
  if (wrap) textBox.wrap = wrap;
133
- }
136
+ } else textBox.wrap = { type: "inline" };
134
137
  return textBox;
135
138
  }
136
139
  /**
@@ -0,0 +1,4 @@
1
+ //#region src/docx/textWhitespace.d.ts
2
+ declare const requiresXmlSpacePreserve: (text: string) => boolean;
3
+ //#endregion
4
+ export { requiresXmlSpacePreserve };
@@ -0,0 +1,4 @@
1
+ //#region src/docx/textWhitespace.ts
2
+ const requiresXmlSpacePreserve = (text) => text.startsWith(" ") || text.endsWith(" ") || text.includes(" ");
3
+ //#endregion
4
+ export { requiresXmlSpacePreserve };