@stll/folio-core 0.14.1 → 0.15.1

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 (444) 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/compat/eigenpal.d.ts +2 -1
  17. package/dist/compat/eigenpal.js +2 -1
  18. package/dist/content-controls/errors.d.ts +0 -1
  19. package/dist/content-controls/findContentControls.d.ts +6 -4
  20. package/dist/content-controls/mutateContentControls.d.ts +0 -1
  21. package/dist/controller/activeEditorStory.d.ts +1 -6
  22. package/dist/controller/collaborationModules.d.ts +0 -1
  23. package/dist/controller/contentControlWidgetController.d.ts +0 -1
  24. package/dist/controller/folioEditor.d.ts +2 -2
  25. package/dist/controller/folioEditorEvents.d.ts +5 -3
  26. package/dist/controller/fontReadiness.d.ts +0 -1
  27. package/dist/controller/headerFooterEditorManager.d.ts +1 -5
  28. package/dist/controller/hiddenEditorApi.d.ts +35 -18
  29. package/dist/controller/hiddenEditorManager.d.ts +5 -3
  30. package/dist/controller/latestRequestGate.d.ts +3 -1
  31. package/dist/controller/layoutPipeline.d.ts +1 -1
  32. package/dist/controller/layoutScheduler.d.ts +8 -5
  33. package/dist/controller/layoutSession.d.ts +0 -1
  34. package/dist/controller/noteEditorManager.d.ts +0 -1
  35. package/dist/document-operations.d.ts +5 -12
  36. package/dist/document-stories.d.ts +0 -1
  37. package/dist/docx/blockContentParser.d.ts +0 -1
  38. package/dist/docx/blockContentParser.js +1 -0
  39. package/dist/docx/bookmarkParser.d.ts +5 -3
  40. package/dist/docx/bookmarkPlacement.d.ts +0 -1
  41. package/dist/docx/commentParser.d.ts +0 -1
  42. package/dist/docx/commentRangeIntegrity.d.ts +0 -1
  43. package/dist/docx/commentReferenceNormalization.d.ts +1 -9
  44. package/dist/docx/commentReplyMarkers.d.ts +0 -1
  45. package/dist/docx/compatibility.d.ts +0 -1
  46. package/dist/docx/conformance.d.ts +0 -1
  47. package/dist/docx/corePropertiesParser.d.ts +0 -1
  48. package/dist/docx/documentParser.d.ts +0 -1
  49. package/dist/docx/documentParser.js +3 -1
  50. package/dist/docx/drawingUtils.d.ts +23 -2
  51. package/dist/docx/drawingUtils.js +23 -1
  52. package/dist/docx/encryption/agileDecryption.d.ts +0 -1
  53. package/dist/docx/encryption/cryptoBytes.js +4 -1
  54. package/dist/docx/encryption/openEncryptedDocx.d.ts +5 -2
  55. package/dist/docx/ensureParaIds.d.ts +7 -3
  56. package/dist/docx/fieldParser.d.ts +23 -11
  57. package/dist/docx/fontTableParser.d.ts +0 -1
  58. package/dist/docx/footnoteParser.d.ts +26 -13
  59. package/dist/docx/footnoteParser.js +4 -2
  60. package/dist/docx/groupDrawingParser.d.ts +0 -1
  61. package/dist/docx/headerFooterParser.d.ts +9 -5
  62. package/dist/docx/headerFooterRefParser.d.ts +0 -1
  63. package/dist/docx/headerFooterReferenceNormalization.d.ts +1 -6
  64. package/dist/docx/headerFooterVerbatim.d.ts +2 -2
  65. package/dist/docx/hyperlinkParser.d.ts +0 -1
  66. package/dist/docx/hyperlinkParser.js +1 -9
  67. package/dist/docx/imageParser.d.ts +0 -1
  68. package/dist/docx/imageParser.js +15 -7
  69. package/dist/docx/mathToMathml.d.ts +0 -1
  70. package/dist/docx/metadataPrivacy.d.ts +1 -3
  71. package/dist/docx/modelValidation.d.ts +0 -1
  72. package/dist/docx/newImage.d.ts +11 -0
  73. package/dist/docx/newImage.js +11 -0
  74. package/dist/docx/normalizeBaseDirection.d.ts +0 -1
  75. package/dist/docx/notePropertiesParser.d.ts +0 -1
  76. package/dist/docx/numberingParser.d.ts +10 -6
  77. package/dist/docx/numberingParser.js +4 -2
  78. package/dist/docx/numberingReferenceNormalization.d.ts +1 -9
  79. package/dist/docx/paragraphParser.d.ts +0 -1
  80. package/dist/docx/paragraphParser.js +27 -14
  81. package/dist/docx/paragraphTextBoxEnrichment.d.ts +0 -1
  82. package/dist/docx/paragraphTextBoxEnrichment.js +2 -1
  83. package/dist/docx/paragraphTraversal.d.ts +1 -8
  84. package/dist/docx/parser.d.ts +15 -8
  85. package/dist/docx/parser.js +12 -1
  86. package/dist/docx/parserEnums.d.ts +2 -2
  87. package/dist/docx/parserEnums.js +3 -2
  88. package/dist/docx/relsParser.d.ts +1 -0
  89. package/dist/docx/renderedPageBreakNormalization.d.ts +12 -0
  90. package/dist/docx/renderedPageBreakNormalization.js +59 -0
  91. package/dist/docx/replyToComment.d.ts +2 -2
  92. package/dist/docx/rezip.d.ts +6 -7
  93. package/dist/docx/rezip.js +136 -102
  94. package/dist/docx/runConsolidator.d.ts +0 -1
  95. package/dist/docx/runParser.d.ts +0 -1
  96. package/dist/docx/runParser.js +9 -12
  97. package/dist/docx/sdtProperties.d.ts +0 -1
  98. package/dist/docx/sdtPropertiesPatch.d.ts +0 -1
  99. package/dist/docx/sectionParser.d.ts +0 -1
  100. package/dist/docx/selectiveSave.d.ts +5 -3
  101. package/dist/docx/selectiveSave.js +2 -2
  102. package/dist/docx/selectiveSaveFlags.d.ts +4 -2
  103. package/dist/docx/selectiveXmlPatch.js +20 -8
  104. package/dist/docx/serializer/blockSdtSerializer.d.ts +0 -1
  105. package/dist/docx/serializer/blockSdtSerializer.js +2 -1
  106. package/dist/docx/serializer/borderSerializer.d.ts +0 -1
  107. package/dist/docx/serializer/commentSerializer.d.ts +0 -1
  108. package/dist/docx/serializer/commentSerializer.js +11 -37
  109. package/dist/docx/serializer/documentSerializer.d.ts +0 -1
  110. package/dist/docx/serializer/documentSerializer.js +1 -1
  111. package/dist/docx/serializer/fontTableSerializer.d.ts +0 -1
  112. package/dist/docx/serializer/headerFooterSerializer.d.ts +0 -1
  113. package/dist/docx/serializer/headerFooterSerializer.js +1 -1
  114. package/dist/docx/serializer/noteSerializer.d.ts +0 -1
  115. package/dist/docx/serializer/noteSerializer.js +1 -1
  116. package/dist/docx/serializer/numberingSerializer.d.ts +0 -1
  117. package/dist/docx/serializer/paragraphSerializer.d.ts +0 -1
  118. package/dist/docx/serializer/paragraphSerializer.js +10 -23
  119. package/dist/docx/serializer/runSerializer.d.ts +0 -1
  120. package/dist/docx/serializer/runSerializer.js +37 -22
  121. package/dist/docx/serializer/sectionPropertiesSerializer.d.ts +0 -1
  122. package/dist/docx/serializer/sectionPropertiesSerializer.js +5 -4
  123. package/dist/docx/serializer/settingsSerializer.d.ts +0 -1
  124. package/dist/docx/serializer/stylesSerializer.d.ts +0 -1
  125. package/dist/docx/serializer/tableSerializer.d.ts +0 -1
  126. package/dist/docx/serializer/tableSerializer.js +2 -0
  127. package/dist/docx/serializer/themeSerializer.d.ts +0 -1
  128. package/dist/docx/serializer/xmlUtils.js +10 -1
  129. package/dist/docx/server/applyDocxXmlPatchProposal.d.ts +3 -10
  130. package/dist/docx/server/docxToMarkdown.d.ts +0 -1
  131. package/dist/docx/server/evaluateDocxXmlPatchProposal.d.ts +3 -9
  132. package/dist/docx/server/inspectDocxPackage.d.ts +3 -8
  133. package/dist/docx/server/validateDocxConformance.d.ts +0 -1
  134. package/dist/docx/settingsParser.d.ts +2 -2
  135. package/dist/docx/shapeParser.d.ts +0 -1
  136. package/dist/docx/shapeParser.js +11 -10
  137. package/dist/docx/streamingXmlParser.d.ts +16 -0
  138. package/dist/docx/streamingXmlParser.js +248 -0
  139. package/dist/docx/styleParser.d.ts +0 -1
  140. package/dist/docx/styleParser.js +6 -4
  141. package/dist/docx/tableParser.d.ts +1 -2
  142. package/dist/docx/tableParser.js +3 -6
  143. package/dist/docx/textBoxParser.d.ts +1 -2
  144. package/dist/docx/textBoxParser.js +4 -1
  145. package/dist/docx/textWhitespace.d.ts +4 -0
  146. package/dist/docx/textWhitespace.js +4 -0
  147. package/dist/docx/themeParser.d.ts +0 -1
  148. package/dist/docx/trackedMoveRangeNormalization.d.ts +1 -8
  149. package/dist/docx/unzip.d.ts +6 -3
  150. package/dist/docx/unzip.js +96 -40
  151. package/dist/docx/vmlImageParser.d.ts +0 -1
  152. package/dist/docx/vmlImageParser.js +3 -1
  153. package/dist/docx/watermarkParser.d.ts +0 -1
  154. package/dist/docx/xmlParser.d.ts +21 -8
  155. package/dist/docx/xmlParser.js +126 -43
  156. package/dist/fields/bookmarkPages.d.ts +0 -1
  157. package/dist/fields/bookmarkText.d.ts +0 -1
  158. package/dist/fields/evaluateField.d.ts +5 -3
  159. package/dist/fields/fieldContext.d.ts +11 -5
  160. package/dist/fields/resolveFieldValues.d.ts +4 -3
  161. package/dist/fields/sectionPageCounts.d.ts +0 -1
  162. package/dist/fields/seqValues.d.ts +0 -1
  163. package/dist/fonts/embeddedFontTable.d.ts +5 -2
  164. package/dist/fonts/embeddedFonts.d.ts +15 -7
  165. package/dist/index.d.ts +3 -1
  166. package/dist/index.js +2 -1
  167. package/dist/layout-bridge/cellSelectionHighlight.d.ts +0 -1
  168. package/dist/layout-bridge/convert/footnoteLayout.d.ts +5 -3
  169. package/dist/layout-bridge/convert/headerFooterLayout.d.ts +2 -2
  170. package/dist/layout-bridge/convert/paragraphFrames.d.ts +0 -1
  171. package/dist/layout-bridge/convert/templatePreviewFlow.d.ts +8 -8
  172. package/dist/layout-bridge/convert/toFlowBlocks.d.ts +25 -13
  173. package/dist/layout-bridge/convert/wrapEditorViewAsSurface.d.ts +3 -2
  174. package/dist/layout-bridge/dom/findHfPmSpans.d.ts +2 -1
  175. package/dist/layout-bridge/dom/noteStoryDom.d.ts +0 -1
  176. package/dist/layout-bridge/engine/clickToPosition.d.ts +5 -3
  177. package/dist/layout-bridge/engine/hitTest.d.ts +40 -19
  178. package/dist/layout-bridge/engine/selectionRects.d.ts +16 -8
  179. package/dist/layout-bridge/engine/tableWidthUtils.d.ts +0 -1
  180. package/dist/layout-bridge/headerFooterLayout.d.ts +0 -1
  181. package/dist/layout-bridge/sectionColumns.d.ts +0 -1
  182. package/dist/layout-bridge/tableInsertHover.d.ts +8 -4
  183. package/dist/layout-engine/headerFooterRefs.d.ts +0 -1
  184. package/dist/layout-engine/index.d.ts +0 -1
  185. package/dist/layout-engine/justificationCompatibility.d.ts +0 -1
  186. package/dist/layout-engine/keep-together.d.ts +7 -4
  187. package/dist/layout-engine/layoutInstrumentation.d.ts +0 -1
  188. package/dist/layout-engine/lineFlow.d.ts +0 -1
  189. package/dist/layout-engine/measure/cache.d.ts +0 -1
  190. package/dist/layout-engine/measure/effectiveLineBreakPolicy.d.ts +6 -7
  191. package/dist/layout-engine/measure/floatingTablePosition.d.ts +0 -1
  192. package/dist/layout-engine/measure/floatingZones.d.ts +14 -6
  193. package/dist/layout-engine/measure/font-metrics.worker.d.ts +0 -1
  194. package/dist/layout-engine/measure/lineBreakProvider.d.ts +20 -9
  195. package/dist/layout-engine/measure/lineBreaks.d.ts +0 -1
  196. package/dist/layout-engine/measure/listMarkerWidth.d.ts +0 -1
  197. package/dist/layout-engine/measure/measureBlocks.d.ts +1 -0
  198. package/dist/layout-engine/measure/measureContainer.d.ts +0 -1
  199. package/dist/layout-engine/measure/measureHelpers.d.ts +0 -1
  200. package/dist/layout-engine/measure/measureParagraph.d.ts +3 -2
  201. package/dist/layout-engine/measure/measureParagraph.js +23 -3
  202. package/dist/layout-engine/measure/measureProvider.d.ts +0 -1
  203. package/dist/layout-engine/measure/measureTypes.d.ts +4 -2
  204. package/dist/layout-engine/measure/measureWorker.d.ts +0 -1
  205. package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +0 -1
  206. package/dist/layout-engine/measure/tableCellFloating.d.ts +0 -1
  207. package/dist/layout-engine/measure/tableCellFlow.d.ts +0 -1
  208. package/dist/layout-engine/measure/tableCellGrid.d.ts +0 -1
  209. package/dist/layout-engine/measure/textBoxParagraphLayout.d.ts +0 -1
  210. package/dist/layout-engine/measure/textMeasurementPolicy.d.ts +0 -1
  211. package/dist/layout-engine/paginator.d.ts +66 -33
  212. package/dist/layout-engine/paragraphFragmentRange.d.ts +0 -1
  213. package/dist/layout-engine/paragraphFrame.d.ts +0 -1
  214. package/dist/layout-engine/paragraphSequence.d.ts +0 -1
  215. package/dist/layout-engine/paragraphSpacing.d.ts +1 -5
  216. package/dist/layout-engine/pmPageIndex.d.ts +0 -1
  217. package/dist/layout-engine/renderedBreakReconciliation.d.ts +2 -17
  218. package/dist/layout-engine/section-breaks.d.ts +34 -17
  219. package/dist/layout-engine/tableRowBreak.d.ts +4 -3
  220. package/dist/layout-engine/textBoxFlow.d.ts +0 -1
  221. package/dist/layout-engine/textBoxGroup.d.ts +0 -1
  222. package/dist/layout-engine/types.d.ts +382 -189
  223. package/dist/layout-painter/anchoredImagePosition.d.ts +0 -1
  224. package/dist/layout-painter/borderStroke.d.ts +0 -1
  225. package/dist/layout-painter/imageLayout.d.ts +14 -7
  226. package/dist/layout-painter/index.d.ts +9 -5
  227. package/dist/layout-painter/registry/modules/image.d.ts +0 -1
  228. package/dist/layout-painter/registry/modules/paragraph.d.ts +0 -1
  229. package/dist/layout-painter/registry/modules/table.d.ts +0 -1
  230. package/dist/layout-painter/registry/modules/textBox.d.ts +0 -1
  231. package/dist/layout-painter/registry/modules.d.ts +0 -1
  232. package/dist/layout-painter/registry/registry.d.ts +0 -1
  233. package/dist/layout-painter/registry/types.d.ts +0 -1
  234. package/dist/layout-painter/renderFragment.d.ts +2 -2
  235. package/dist/layout-painter/renderImage.d.ts +0 -1
  236. package/dist/layout-painter/renderPage.d.ts +71 -42
  237. package/dist/layout-painter/renderParagraph.d.ts +28 -14
  238. package/dist/layout-painter/renderParagraph.js +6 -2
  239. package/dist/layout-painter/renderTable.d.ts +0 -1
  240. package/dist/layout-painter/renderTextBox.d.ts +0 -1
  241. package/dist/layout-painter/renderUtils.d.ts +17 -9
  242. package/dist/layout-painter/renderWatermark.d.ts +2 -2
  243. package/dist/layout-painter/sdtBoundary.d.ts +0 -1
  244. package/dist/managers/AutoSaveManager.d.ts +22 -11
  245. package/dist/managers/ClipboardManager.d.ts +0 -1
  246. package/dist/managers/ContextMenuManager.d.ts +5 -8
  247. package/dist/managers/DocumentLoaderManager.d.ts +12 -6
  248. package/dist/managers/EditorModeManager.d.ts +3 -2
  249. package/dist/managers/ErrorManager.d.ts +0 -1
  250. package/dist/managers/FindReplaceManager.d.ts +0 -1
  251. package/dist/managers/HistoryManager.d.ts +19 -9
  252. package/dist/managers/TableSelectionManager.d.ts +0 -1
  253. package/dist/managers/editorShortcuts.d.ts +4 -6
  254. package/dist/markdown/annotations.d.ts +0 -1
  255. package/dist/markdown/fromMarkdown.d.ts +0 -1
  256. package/dist/markdown/fromMarkdown.js +55 -5
  257. package/dist/markdown/images.d.ts +0 -1
  258. package/dist/markdown/index.d.ts +0 -1
  259. package/dist/markdown/internals.d.ts +0 -1
  260. package/dist/markdown/renderBlock.d.ts +0 -1
  261. package/dist/markdown/renderParagraph.d.ts +0 -1
  262. package/dist/markdown/renderRuns.d.ts +0 -1
  263. package/dist/markdown/renderTable.d.ts +0 -1
  264. package/dist/markdown/trailers.d.ts +0 -1
  265. package/dist/markdown/types.d.ts +39 -18
  266. package/dist/model.d.ts +3 -5
  267. package/dist/model.js +2 -2
  268. package/dist/paged-layout/incrementalMeasure.d.ts +1 -10
  269. package/dist/paged-layout/pageText.d.ts +1 -1
  270. package/dist/paged-layout/paragraphFlash.d.ts +0 -1
  271. package/dist/paged-layout/paragraphFlashTypes.d.ts +5 -2
  272. package/dist/paged-layout/rangeProjection.d.ts +10 -5
  273. package/dist/paged-layout/scrollNavigation.d.ts +0 -1
  274. package/dist/paged-layout/scrollPageInfo.d.ts +12 -13
  275. package/dist/paged-layout/scrollToPmPosition.d.ts +0 -1
  276. package/dist/paged-layout/sectionBlockWidths.d.ts +2 -11
  277. package/dist/paged-layout/sectionGeometry.d.ts +0 -1
  278. package/dist/paged-layout/selectionViewportRect.d.ts +0 -1
  279. package/dist/paged-layout/transactionDirtyRange.d.ts +0 -1
  280. package/dist/paged-layout/zoomScrollAnchor.d.ts +2 -12
  281. package/dist/prosemirror/attrs/index.d.ts +2 -2
  282. package/dist/prosemirror/attrs/index.js +5 -0
  283. package/dist/prosemirror/autospacingBase.d.ts +0 -1
  284. package/dist/prosemirror/cellDragSelection.d.ts +6 -4
  285. package/dist/prosemirror/commands/comments.d.ts +6 -4
  286. package/dist/prosemirror/commands/contentControls.d.ts +5 -3
  287. package/dist/prosemirror/commands/contentControlsBlockFill.d.ts +1 -1
  288. package/dist/prosemirror/commands/formatPainter.d.ts +0 -1
  289. package/dist/prosemirror/commands/formatting.d.ts +1 -1
  290. package/dist/prosemirror/commands/hyperlink.d.ts +4 -9
  291. package/dist/prosemirror/commands/image.d.ts +0 -1
  292. package/dist/prosemirror/commands/pageBreak.d.ts +0 -1
  293. package/dist/prosemirror/commands/paragraph.d.ts +0 -1
  294. package/dist/prosemirror/commands/pastePlainText.d.ts +0 -1
  295. package/dist/prosemirror/commands/propertyChangeScope.d.ts +0 -1
  296. package/dist/prosemirror/commands/sectionBreak.d.ts +0 -1
  297. package/dist/prosemirror/commands/table.d.ts +0 -1
  298. package/dist/prosemirror/commands/tableCellMergeResolution.d.ts +0 -1
  299. package/dist/prosemirror/commentIdAllocator.d.ts +2 -2
  300. package/dist/prosemirror/commentOps.d.ts +0 -1
  301. package/dist/prosemirror/conversion/effectiveTableCellFormatting.d.ts +1 -10
  302. package/dist/prosemirror/conversion/fromProseDoc.d.ts +0 -1
  303. package/dist/prosemirror/conversion/fromProseDoc.js +7 -4
  304. package/dist/prosemirror/conversion/runShadingMark.d.ts +0 -1
  305. package/dist/prosemirror/conversion/sdtAttrs.d.ts +0 -1
  306. package/dist/prosemirror/conversion/toProseDoc.d.ts +3 -2
  307. package/dist/prosemirror/conversion/toProseDoc.js +16 -2
  308. package/dist/prosemirror/extensions/ExtensionManager.d.ts +0 -1
  309. package/dist/prosemirror/extensions/StarterKit.d.ts +7 -4
  310. package/dist/prosemirror/extensions/core/DocExtension.d.ts +0 -1
  311. package/dist/prosemirror/extensions/core/HistoryExtension.d.ts +0 -1
  312. package/dist/prosemirror/extensions/core/ParagraphExtension.d.ts +0 -1
  313. package/dist/prosemirror/extensions/core/TextExtension.d.ts +0 -1
  314. package/dist/prosemirror/extensions/create.d.ts +0 -1
  315. package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts +0 -1
  316. package/dist/prosemirror/extensions/features/BaseKeymapExtension.d.ts +0 -1
  317. package/dist/prosemirror/extensions/features/BidiShortcutExtension.d.ts +0 -1
  318. package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.d.ts +0 -1
  319. package/dist/prosemirror/extensions/features/DropCursorExtension.d.ts +0 -1
  320. package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts +0 -1
  321. package/dist/prosemirror/extensions/features/GapCursorExtension.d.ts +0 -1
  322. package/dist/prosemirror/extensions/features/ImageDragExtension.d.ts +0 -1
  323. package/dist/prosemirror/extensions/features/ImagePasteExtension.d.ts +0 -1
  324. package/dist/prosemirror/extensions/features/ListExtension.d.ts +0 -1
  325. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +0 -1
  326. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +7 -4
  327. package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +0 -1
  328. package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.d.ts +0 -1
  329. package/dist/prosemirror/extensions/features/SelectionTrackerExtension.d.ts +0 -1
  330. package/dist/prosemirror/extensions/features/bidiShortcutController.d.ts +3 -1
  331. package/dist/prosemirror/extensions/marks/AllCapsExtension.d.ts +0 -1
  332. package/dist/prosemirror/extensions/marks/BoldExtension.d.ts +0 -1
  333. package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.d.ts +0 -1
  334. package/dist/prosemirror/extensions/marks/CharacterStyleExtension.d.ts +0 -1
  335. package/dist/prosemirror/extensions/marks/CommentExtension.d.ts +0 -1
  336. package/dist/prosemirror/extensions/marks/FontFamilyExtension.d.ts +0 -1
  337. package/dist/prosemirror/extensions/marks/FontFamilyExtension.js +1 -0
  338. package/dist/prosemirror/extensions/marks/FontSizeExtension.d.ts +0 -1
  339. package/dist/prosemirror/extensions/marks/FootnoteRefExtension.d.ts +0 -1
  340. package/dist/prosemirror/extensions/marks/HiddenTextExtension.d.ts +0 -1
  341. package/dist/prosemirror/extensions/marks/HighlightExtension.d.ts +0 -1
  342. package/dist/prosemirror/extensions/marks/HyperlinkExtension.d.ts +0 -1
  343. package/dist/prosemirror/extensions/marks/ItalicExtension.d.ts +0 -1
  344. package/dist/prosemirror/extensions/marks/LanguageExtension.d.ts +0 -1
  345. package/dist/prosemirror/extensions/marks/RtlExtension.d.ts +0 -1
  346. package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.d.ts +0 -1
  347. package/dist/prosemirror/extensions/marks/RunShadingExtension.d.ts +0 -1
  348. package/dist/prosemirror/extensions/marks/SmallCapsExtension.d.ts +0 -1
  349. package/dist/prosemirror/extensions/marks/StrikeExtension.d.ts +0 -1
  350. package/dist/prosemirror/extensions/marks/SubscriptExtension.d.ts +0 -1
  351. package/dist/prosemirror/extensions/marks/SuperscriptExtension.d.ts +0 -1
  352. package/dist/prosemirror/extensions/marks/TextColorExtension.d.ts +0 -1
  353. package/dist/prosemirror/extensions/marks/TextEffectExtension.d.ts +0 -1
  354. package/dist/prosemirror/extensions/marks/TextEffectsExtensions.d.ts +0 -1
  355. package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.d.ts +0 -1
  356. package/dist/prosemirror/extensions/marks/UnderlineExtension.d.ts +0 -1
  357. package/dist/prosemirror/extensions/marks/markUtils.d.ts +0 -1
  358. package/dist/prosemirror/extensions/marks/markUtils.js +4 -1
  359. package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +0 -1
  360. package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +0 -1
  361. package/dist/prosemirror/extensions/nodes/HardBreakExtension.d.ts +0 -1
  362. package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.d.ts +0 -1
  363. package/dist/prosemirror/extensions/nodes/ImageExtension.d.ts +0 -1
  364. package/dist/prosemirror/extensions/nodes/ImageExtension.js +2 -0
  365. package/dist/prosemirror/extensions/nodes/MathExtension.d.ts +0 -1
  366. package/dist/prosemirror/extensions/nodes/PageBreakExtension.d.ts +0 -1
  367. package/dist/prosemirror/extensions/nodes/RenderedPageBreakExtension.d.ts +0 -1
  368. package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +0 -1
  369. package/dist/prosemirror/extensions/nodes/ShapeExtension.d.ts +0 -1
  370. package/dist/prosemirror/extensions/nodes/ShapeExtension.js +2 -0
  371. package/dist/prosemirror/extensions/nodes/TabExtension.d.ts +0 -1
  372. package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +4 -3
  373. package/dist/prosemirror/extensions/nodes/TextBoxAnchorExtension.d.ts +0 -1
  374. package/dist/prosemirror/extensions/nodes/TextBoxExtension.d.ts +53 -27
  375. package/dist/prosemirror/extensions/types.d.ts +0 -1
  376. package/dist/prosemirror/findReplaceSelection.d.ts +5 -3
  377. package/dist/prosemirror/imageCommit.d.ts +0 -1
  378. package/dist/prosemirror/index.d.ts +4 -0
  379. package/dist/prosemirror/insertOperations.d.ts +0 -1
  380. package/dist/prosemirror/paraText.d.ts +0 -1
  381. package/dist/prosemirror/plugins/aiCitationDecorations.d.ts +2 -2
  382. package/dist/prosemirror/plugins/aiSuggestionDecorations.d.ts +0 -1
  383. package/dist/prosemirror/plugins/anonymizationDecorations.d.ts +9 -7
  384. package/dist/prosemirror/plugins/autocompleteSuggestion.d.ts +2 -2
  385. package/dist/prosemirror/plugins/contentControlWidgets.d.ts +4 -7
  386. package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +3 -8
  387. package/dist/prosemirror/plugins/documentStyles.d.ts +0 -1
  388. package/dist/prosemirror/plugins/pmTextScan.d.ts +2 -2
  389. package/dist/prosemirror/plugins/revisionIds.d.ts +0 -1
  390. package/dist/prosemirror/plugins/selectionTracker.d.ts +23 -12
  391. package/dist/prosemirror/plugins/suggestionMode.d.ts +0 -1
  392. package/dist/prosemirror/plugins/templateDirectives.d.ts +10 -8
  393. package/dist/prosemirror/plugins/templatePreviewValues.d.ts +10 -5
  394. package/dist/prosemirror/plugins/templateSlashMenu.d.ts +2 -2
  395. package/dist/prosemirror/queries.d.ts +0 -1
  396. package/dist/prosemirror/schema/index.d.ts +0 -1
  397. package/dist/prosemirror/schema/marks.d.ts +8 -5
  398. package/dist/prosemirror/schema/nodes.d.ts +340 -163
  399. package/dist/prosemirror/selectionState.d.ts +13 -7
  400. package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +0 -1
  401. package/dist/prosemirror/styles/styleResolver.d.ts +3 -2
  402. package/dist/prosemirror/tableCellMergeRevision.d.ts +0 -1
  403. package/dist/prosemirror/tableResize.d.ts +0 -1
  404. package/dist/prosemirror/textBoxAnchorAttrs.d.ts +0 -1
  405. package/dist/prosemirror/utils/extractTrackedChanges.d.ts +8 -5
  406. package/dist/prosemirror/utils/findParagraphByParaId.d.ts +0 -1
  407. package/dist/prosemirror/utils/tabCalculator.d.ts +18 -7
  408. package/dist/prosemirror/utils/visualLineNavigation.d.ts +0 -1
  409. package/dist/prosemirror/validation.d.ts +0 -1
  410. package/dist/redline.d.ts +16 -8
  411. package/dist/render-dom/BodySelectionOverlay.d.ts +1 -9
  412. package/dist/render-dom/HeaderFooterSelectionOverlay.d.ts +0 -1
  413. package/dist/render-dom/RemoteSelectionOverlay.d.ts +1 -8
  414. package/dist/render-dom/resolveSidebarItemPositions.d.ts +1 -9
  415. package/dist/style-engine/styleEngine.d.ts +21 -11
  416. package/dist/style-sets/extract.d.ts +4 -3
  417. package/dist/style-sets/stellaStyle.d.ts +0 -1
  418. package/dist/style-sets/types.d.ts +0 -1
  419. package/dist/symbols.d.ts +6 -2
  420. package/dist/types/block-id.d.ts +3 -6
  421. package/dist/types/document.d.ts +0 -3
  422. package/dist/types/documentEnumValues.d.ts +2 -1
  423. package/dist/types/documentEnumValues.js +6 -1
  424. package/dist/utils/clipboard.d.ts +17 -8
  425. package/dist/utils/colorResolver.d.ts +9 -5
  426. package/dist/utils/createDocument.d.ts +19 -10
  427. package/dist/utils/documentLoaderBehavior.d.ts +1 -5
  428. package/dist/utils/docxInput.js +1 -0
  429. package/dist/utils/findReplace.d.ts +0 -1
  430. package/dist/utils/fontFamilyMerge.d.ts +0 -1
  431. package/dist/utils/fontResolver.d.ts +10 -4
  432. package/dist/utils/formatToStyle.d.ts +0 -1
  433. package/dist/utils/headerFooter.d.ts +8 -16
  434. package/dist/utils/headingCollector.d.ts +7 -4
  435. package/dist/utils/mergeDocumentContent.d.ts +28 -0
  436. package/dist/utils/mergeDocumentContent.js +145 -0
  437. package/dist/utils/paragraphFormattingMerge.d.ts +0 -1
  438. package/dist/utils/replaceText.d.ts +0 -1
  439. package/dist/utils/rotationBoundingBox.d.ts +0 -1
  440. package/dist/utils/tableOperations.d.ts +0 -1
  441. package/dist/utils/textFormattingMerge.d.ts +0 -1
  442. package/dist/version-comparison.d.ts +12 -6
  443. package/dist/watermark/index.d.ts +0 -1
  444. package/package.json +3 -3
@@ -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";
@@ -536,6 +536,7 @@ function parseCellContent(tcElement, styles, theme, numbering, rels, media, opti
536
536
  }
537
537
  if (localName === "tbl") {
538
538
  const table = parseTable(child, styles, theme, numbering, rels, media, options);
539
+ if (!table) return;
539
540
  if (prependBookmarkMarkersToFirstParagraphInBlocks([table], pendingBookmarkMarkers)) pendingBookmarkMarkers.length = 0;
540
541
  content.push(table);
541
542
  return;
@@ -635,11 +636,6 @@ function parseTableRow(trElement, styles, theme, numbering, rels, media, options
635
636
  if (pendingBookmarkMarkers.length > 0) appendBookmarkMarkersToLastCell(row, pendingBookmarkMarkers);
636
637
  return row;
637
638
  }
638
- function getLocalName(name) {
639
- if (!name) return "";
640
- const colonIndex = name.indexOf(":");
641
- return colonIndex === -1 ? name : name.slice(colonIndex + 1);
642
- }
643
639
  function parseBookmarkMarker(child, localName) {
644
640
  if (localName === "bookmarkStart") return parseBookmarkStart(child);
645
641
  return parseBookmarkEnd(child);
@@ -751,6 +747,7 @@ function parseTable(tblElement, styles, theme, numbering, rels, media, options)
751
747
  for (const sdtChild of getChildElements(sdtContent)) parseTableChild(sdtChild);
752
748
  };
753
749
  for (const child of getChildElements(tblElement)) parseTableChild(child);
750
+ if (table.rows.length === 0) return;
754
751
  inferImplicitSingleCellRowSpans(table, rowsWithGridOffsets);
755
752
  return table;
756
753
  }
@@ -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
  }
@@ -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 };
@@ -1,5 +1,4 @@
1
1
  import { document_d_exports } from "../types/document.js";
2
-
3
2
  //#region src/docx/themeParser.d.ts
4
3
  /**
5
4
  * Parse theme1.xml content
@@ -1,5 +1,4 @@
1
1
  import { document_d_exports } from "../types/document.js";
2
-
3
2
  //#region src/docx/trackedMoveRangeNormalization.d.ts
4
3
  type NormalizeTrackedMoveRangesInput = {
5
4
  documentBody: document_d_exports.DocumentBody;
@@ -11,12 +10,6 @@ type NormalizeTrackedMoveRangesInput = {
11
10
  type NormalizeTrackedMoveRangesResult = {
12
11
  removedUnbalancedMoveRangeMarkers: number;
13
12
  };
14
- declare const normalizeTrackedMoveRanges: ({
15
- documentBody,
16
- headers,
17
- footers,
18
- footnotes,
19
- endnotes
20
- }: NormalizeTrackedMoveRangesInput) => NormalizeTrackedMoveRangesResult;
13
+ declare const normalizeTrackedMoveRanges: ({ documentBody, headers, footers, footnotes, endnotes }: NormalizeTrackedMoveRangesInput) => NormalizeTrackedMoveRangesResult;
21
14
  //#endregion
22
15
  export { normalizeTrackedMoveRanges };
@@ -1,5 +1,4 @@
1
1
  import JSZip from "jszip";
2
-
3
2
  //#region src/docx/unzip.d.ts
4
3
  declare class DocxSecurityError extends Error {
5
4
  constructor(message: string);
@@ -14,7 +13,10 @@ type DocxUnzipLimits = {
14
13
  allowedMediaMimeTypes: ReadonlySet<string>;
15
14
  };
16
15
  type DocxUnzipOptions = Partial<Omit<DocxUnzipLimits, "allowedMediaMimeTypes">> & {
17
- allowedMediaMimeTypes?: Iterable<string>; /** Password for Agile-encrypted .docx files (Office 2010+). */
16
+ allowedMediaMimeTypes?: Iterable<string>;
17
+ /** Extract every XML part into allXml instead of only parts used by the parser. */
18
+ extractAllXml?: boolean;
19
+ /** Password for Agile-encrypted .docx files (Office 2010+). */
18
20
  password?: string | undefined;
19
21
  };
20
22
  /**
@@ -46,7 +48,8 @@ type RawDocxContent = {
46
48
  allXml: Map<string, string>;
47
49
  originalZip: JSZip;
48
50
  originalBuffer: ArrayBuffer;
49
- warnings: string[]; /** True when the input was a password-protected CFB container. */
51
+ warnings: string[];
52
+ /** True when the input was a password-protected CFB container. */
50
53
  wasEncrypted: boolean;
51
54
  };
52
55
  /**
@@ -59,6 +59,27 @@ const DEFAULT_UNZIP_LIMITS = {
59
59
  maxTotalUncompressedBytes: 250 * MEBIBYTE,
60
60
  allowedMediaMimeTypes: DEFAULT_ALLOWED_MEDIA_MIME_TYPES
61
61
  };
62
+ const PARSED_XML_PARTS = /* @__PURE__ */ new Set([
63
+ "[content_types].xml",
64
+ "_rels/.rels",
65
+ "docprops/app.xml",
66
+ "docprops/core.xml",
67
+ "docprops/custom.xml",
68
+ "word/_rels/document.xml.rels",
69
+ "word/_rels/fonttable.xml.rels",
70
+ "word/comments.xml",
71
+ "word/commentsextended.xml",
72
+ "word/commentsextensible.xml",
73
+ "word/document.xml",
74
+ "word/endnotes.xml",
75
+ "word/fonttable.xml",
76
+ "word/footnotes.xml",
77
+ "word/numbering.xml",
78
+ "word/settings.xml",
79
+ "word/styles.xml",
80
+ "word/theme/theme1.xml"
81
+ ]);
82
+ const shouldExtractXmlPart = (path) => PARSED_XML_PARTS.has(path) || path.startsWith("word/");
62
83
  const ZIP_END_OF_CENTRAL_DIRECTORY_SIGNATURE = 101010256;
63
84
  const ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE = 33639248;
64
85
  const ZIP_END_OF_CENTRAL_DIRECTORY_SIZE = 22;
@@ -73,9 +94,10 @@ const ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIZE = 46;
73
94
  async function unzipDocx(buffer, options = {}) {
74
95
  const limits = createUnzipLimits(options);
75
96
  if (buffer.byteLength > limits.maxInputBytes) throw new DocxSecurityError("DOCX file exceeds the maximum allowed size");
76
- const zipBuffer = await openDocxBuffer(buffer, { password: options.password });
97
+ const containerType = detectDocxContainerType(buffer);
98
+ const zipBuffer = containerType === DOCX_CONTAINER_TYPES.ZIP ? buffer : await openDocxBuffer(buffer, { password: options.password });
77
99
  if (zipBuffer.byteLength > limits.maxInputBytes) throw new DocxSecurityError("DOCX file exceeds the maximum allowed size");
78
- const wasEncrypted = detectDocxContainerType(buffer) === DOCX_CONTAINER_TYPES.CFB;
100
+ const wasEncrypted = containerType === DOCX_CONTAINER_TYPES.CFB;
79
101
  const loaded = await loadDocxZip(zipBuffer, limits.maxFiles);
80
102
  if (loaded.buffer.byteLength > limits.maxInputBytes) throw new DocxSecurityError("DOCX file exceeds the maximum allowed size");
81
103
  const { zip } = loaded;
@@ -111,6 +133,7 @@ async function unzipDocx(buffer, options = {}) {
111
133
  wasEncrypted
112
134
  };
113
135
  let totalUncompressedBytes = 0;
136
+ const extractionTasks = [];
114
137
  for (const [path, file] of entries) {
115
138
  if (!isSafeDocxPath(path)) throw new DocxSecurityError("DOCX file contains an unsafe entry path");
116
139
  if (!isPreservableDocxEntry(path)) continue;
@@ -122,34 +145,16 @@ async function unzipDocx(buffer, options = {}) {
122
145
  }
123
146
  if (lowerPath.endsWith(".xml") || lowerPath.endsWith(".rels")) {
124
147
  assertEntrySize(path, declaredSize, limits.maxXmlBytes);
125
- const xmlContent = await file.async("text");
126
- assertExtractedSize(path, xmlContent.length, limits.maxXmlBytes);
127
- content.allXml.set(path, xmlContent);
128
- if (lowerPath === "word/document.xml") content.documentXml = xmlContent;
129
- else if (lowerPath === "word/styles.xml") content.stylesXml = xmlContent;
130
- else if (lowerPath === "word/theme/theme1.xml") content.themeXml = xmlContent;
131
- else if (lowerPath === "word/numbering.xml") content.numberingXml = xmlContent;
132
- else if (lowerPath === "word/fonttable.xml") content.fontTableXml = xmlContent;
133
- else if (lowerPath === "word/settings.xml") content.settingsXml = xmlContent;
134
- else if (lowerPath === "word/websettings.xml") content.webSettingsXml = xmlContent;
135
- else if (lowerPath === "word/footnotes.xml") content.footnotesXml = xmlContent;
136
- else if (lowerPath === "word/endnotes.xml") content.endnotesXml = xmlContent;
137
- else if (lowerPath === "word/comments.xml") content.commentsXml = xmlContent;
138
- else if (lowerPath === "word/commentsextensible.xml") content.commentsExtensibleXml = xmlContent;
139
- else if (lowerPath === "word/commentsextended.xml") content.commentsExtendedXml = xmlContent;
140
- else if (lowerPath === "word/_rels/document.xml.rels") content.documentRels = xmlContent;
141
- else if (lowerPath === "_rels/.rels") content.packageRels = xmlContent;
142
- else if (lowerPath === "[content_types].xml") content.contentTypesXml = xmlContent;
143
- else if (lowerPath === "docprops/core.xml") content.corePropsXml = xmlContent;
144
- else if (lowerPath === "docprops/app.xml") content.appPropsXml = xmlContent;
145
- else if (lowerPath === "docprops/custom.xml") content.customPropsXml = xmlContent;
146
- else if (/^word\/header[^/]*\.xml$/u.test(lowerPath)) {
147
- const filename = path.split("/").pop() || path;
148
- content.headers.set(filename, xmlContent);
149
- } else if (/^word\/footer[^/]*\.xml$/u.test(lowerPath)) {
150
- const filename = path.split("/").pop() || path;
151
- content.footers.set(filename, xmlContent);
152
- }
148
+ if (options.extractAllXml === false && !shouldExtractXmlPart(lowerPath)) continue;
149
+ extractionTasks.push(file.async("text").then((xmlContent) => {
150
+ assertExtractedSize(path, xmlContent.length, limits.maxXmlBytes);
151
+ return {
152
+ type: "xml",
153
+ path,
154
+ lowerPath,
155
+ content: xmlContent
156
+ };
157
+ }));
153
158
  } else if (lowerPath.startsWith("word/media/")) {
154
159
  const mimeType = getMediaMimeType(path);
155
160
  if (!limits.allowedMediaMimeTypes.has(mimeType)) continue;
@@ -157,22 +162,73 @@ async function unzipDocx(buffer, options = {}) {
157
162
  content.warnings.push(`Skipped oversized media file: ${path}; original entry preserved for round-trip.`);
158
163
  continue;
159
164
  }
160
- const binaryContent = await file.async("arraybuffer");
161
- if (binaryContent.byteLength > limits.maxMediaBytes) {
162
- content.warnings.push(`Skipped oversized media file: ${path}; original entry preserved for round-trip.`);
163
- continue;
164
- }
165
- if (!isMediaContentAllowed(binaryContent, mimeType)) continue;
166
- content.media.set(path, binaryContent);
165
+ extractionTasks.push(file.async("arraybuffer").then((binaryContent) => {
166
+ if (binaryContent.byteLength > limits.maxMediaBytes) {
167
+ content.warnings.push(`Skipped oversized media file: ${path}; original entry preserved for round-trip.`);
168
+ return null;
169
+ }
170
+ if (!isMediaContentAllowed(binaryContent, mimeType)) return null;
171
+ return {
172
+ type: "media",
173
+ path,
174
+ mimeType,
175
+ content: binaryContent
176
+ };
177
+ }));
167
178
  } else if (lowerPath.startsWith("word/fonts/")) {
168
179
  if (isEntryTooLarge(declaredSize, limits.maxFontBytes)) continue;
169
- const binaryContent = await file.async("arraybuffer");
170
- if (binaryContent.byteLength > limits.maxFontBytes) continue;
171
- content.fonts.set(path, binaryContent);
180
+ extractionTasks.push(file.async("arraybuffer").then((binaryContent) => {
181
+ if (binaryContent.byteLength > limits.maxFontBytes) return null;
182
+ return {
183
+ type: "font",
184
+ path,
185
+ content: binaryContent
186
+ };
187
+ }));
172
188
  }
173
189
  }
190
+ for (const extracted of await Promise.all(extractionTasks)) {
191
+ if (!extracted) continue;
192
+ if (extracted.type === "xml") {
193
+ assignXmlContent(content, extracted);
194
+ continue;
195
+ }
196
+ if (extracted.type === "media") {
197
+ content.media.set(extracted.path, extracted.content);
198
+ continue;
199
+ }
200
+ content.fonts.set(extracted.path, extracted.content);
201
+ }
174
202
  return content;
175
203
  }
204
+ function assignXmlContent(content, { path, lowerPath, content: xmlContent }) {
205
+ content.allXml.set(path, xmlContent);
206
+ if (lowerPath === "word/document.xml") content.documentXml = xmlContent;
207
+ else if (lowerPath === "word/styles.xml") content.stylesXml = xmlContent;
208
+ else if (lowerPath === "word/theme/theme1.xml") content.themeXml = xmlContent;
209
+ else if (lowerPath === "word/numbering.xml") content.numberingXml = xmlContent;
210
+ else if (lowerPath === "word/fonttable.xml") content.fontTableXml = xmlContent;
211
+ else if (lowerPath === "word/settings.xml") content.settingsXml = xmlContent;
212
+ else if (lowerPath === "word/websettings.xml") content.webSettingsXml = xmlContent;
213
+ else if (lowerPath === "word/footnotes.xml") content.footnotesXml = xmlContent;
214
+ else if (lowerPath === "word/endnotes.xml") content.endnotesXml = xmlContent;
215
+ else if (lowerPath === "word/comments.xml") content.commentsXml = xmlContent;
216
+ else if (lowerPath === "word/commentsextensible.xml") content.commentsExtensibleXml = xmlContent;
217
+ else if (lowerPath === "word/commentsextended.xml") content.commentsExtendedXml = xmlContent;
218
+ else if (lowerPath === "word/_rels/document.xml.rels") content.documentRels = xmlContent;
219
+ else if (lowerPath === "_rels/.rels") content.packageRels = xmlContent;
220
+ else if (lowerPath === "[content_types].xml") content.contentTypesXml = xmlContent;
221
+ else if (lowerPath === "docprops/core.xml") content.corePropsXml = xmlContent;
222
+ else if (lowerPath === "docprops/app.xml") content.appPropsXml = xmlContent;
223
+ else if (lowerPath === "docprops/custom.xml") content.customPropsXml = xmlContent;
224
+ else if (/^word\/header[^/]*\.xml$/u.test(lowerPath)) {
225
+ const filename = path.split("/").pop() || path;
226
+ content.headers.set(filename, xmlContent);
227
+ } else if (/^word\/footer[^/]*\.xml$/u.test(lowerPath)) {
228
+ const filename = path.split("/").pop() || path;
229
+ content.footers.set(filename, xmlContent);
230
+ }
231
+ }
176
232
  async function loadDocxZip(buffer, maxFiles) {
177
233
  try {
178
234
  return {
@@ -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/vmlImageParser.d.ts
5
4
  /**
6
5
  * Parse a `w:pict` element into an inline image, or null when it carries no
@@ -1,4 +1,4 @@
1
- import { cloneWithXmlnsDeclarations, elementToXml, findAllDeep, findChild, getAttribute, getChildElements, getLocalName } from "./xmlParser.js";
1
+ import { cloneWithXmlnsDeclarations, elementToXml, findAllDeep, findChild, findDeep, getAttribute, getChildElements, getLocalName } from "./xmlParser.js";
2
2
  import { pixelsToEmu } from "../utils/units.js";
3
3
  import { sanitizeImageSrc } from "../utils/sanitizeImageSrc.js";
4
4
  import { resolveImageData } from "./imageParser.js";
@@ -136,6 +136,7 @@ const previewImage = (pictElement, svg, widthPx, heightPx, style, rootXmlns) =>
136
136
  };
137
137
  };
138
138
  const parseStandaloneShapePreview = (pictElement, shape, rootXmlns) => {
139
+ if (findDeep(shape, "v", "textbox")) return null;
139
140
  const style = parseStyleAttr(getAttribute(shape, null, "style"));
140
141
  const widthPx = cssLengthToPx(style["width"]);
141
142
  const heightPx = cssLengthToPx(style["height"]);
@@ -159,6 +160,7 @@ const parseGroupPreview = (pictElement, group, rootXmlns) => {
159
160
  if (size.first <= 0 || size.second <= 0) return null;
160
161
  const content = getChildElements(group).slice(0, MAX_VML_PREVIEW_SHAPES).map((child) => {
161
162
  const localName = getLocalName(child.name ?? "");
163
+ if (findDeep(child, "v", "textbox")) return "";
162
164
  if (localName === "line") {
163
165
  const from = coordinatePair(getAttribute(child, null, "from"));
164
166
  const to = coordinatePair(getAttribute(child, null, "to"));
@@ -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/watermarkParser.d.ts
5
4
  /**
6
5
  * Result of walking a header for its watermark. Carries the modeled