@stll/folio-core 0.52.0 → 0.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/README.md +23 -0
  2. package/dist/ai-edits/apply.d.ts +26 -1
  3. package/dist/ai-edits/apply.js +1779 -141
  4. package/dist/ai-edits/batch-claims.d.ts +145 -0
  5. package/dist/ai-edits/batch-claims.js +275 -0
  6. package/dist/ai-edits/blockRange.js +9 -3
  7. package/dist/ai-edits/character-boundaries.d.ts +43 -0
  8. package/dist/ai-edits/character-boundaries.js +95 -0
  9. package/dist/ai-edits/clean-text.d.ts +33 -3
  10. package/dist/ai-edits/clean-text.js +52 -6
  11. package/dist/ai-edits/comment-lifecycle.d.ts +18 -0
  12. package/dist/ai-edits/comment-lifecycle.js +52 -0
  13. package/dist/ai-edits/headless.d.ts +91 -7
  14. package/dist/ai-edits/headless.js +520 -51
  15. package/dist/ai-edits/index.d.ts +2 -1
  16. package/dist/ai-edits/index.js +2 -1
  17. package/dist/ai-edits/minimal-replacement.d.ts +21 -6
  18. package/dist/ai-edits/minimal-replacement.js +134 -15
  19. package/dist/ai-edits/newListNumbering.d.ts +23 -0
  20. package/dist/ai-edits/newListNumbering.js +94 -0
  21. package/dist/ai-edits/note-references.d.ts +96 -0
  22. package/dist/ai-edits/note-references.js +139 -0
  23. package/dist/ai-edits/pending-suggestions.d.ts +79 -0
  24. package/dist/ai-edits/pending-suggestions.js +306 -0
  25. package/dist/ai-edits/read.d.ts +6 -4
  26. package/dist/ai-edits/read.js +113 -50
  27. package/dist/ai-edits/result-validation.d.ts +29 -0
  28. package/dist/ai-edits/result-validation.js +164 -0
  29. package/dist/ai-edits/revisionStretches.d.ts +17 -0
  30. package/dist/ai-edits/revisionStretches.js +80 -0
  31. package/dist/ai-edits/snapshot.d.ts +36 -3
  32. package/dist/ai-edits/snapshot.js +180 -25
  33. package/dist/ai-edits/table-cell-mutations.d.ts +4 -2
  34. package/dist/ai-edits/table-cell-mutations.js +6 -2
  35. package/dist/ai-edits/table-geometry.d.ts +1 -1
  36. package/dist/ai-edits/table-row-column-mutations.d.ts +44 -17
  37. package/dist/ai-edits/table-row-column-mutations.js +86 -34
  38. package/dist/ai-edits/types.d.ts +155 -16
  39. package/dist/compare/compare.d.ts +1 -1
  40. package/dist/compare/compare.js +65 -16
  41. package/dist/compare/content-alignment.d.ts +5 -1
  42. package/dist/compare/content-alignment.js +52 -34
  43. package/dist/compare/content-types.d.ts +7 -0
  44. package/dist/compare/content.d.ts +4 -1
  45. package/dist/compare/content.js +6 -1
  46. package/dist/compare/formatting.js +2 -1
  47. package/dist/compare/inline-atoms.d.ts +21 -4
  48. package/dist/compare/inline-atoms.js +138 -16
  49. package/dist/compare/inline-provenance.js +1 -1
  50. package/dist/compare/plan.js +10 -5
  51. package/dist/compare/scenario.js +14 -3
  52. package/dist/compare/section-boundary-properties.js +1 -1
  53. package/dist/compare/types.d.ts +4 -2
  54. package/dist/compare/types.js +2 -1
  55. package/dist/compare/verification.d.ts +1 -1
  56. package/dist/compare/verification.js +15 -3
  57. package/dist/controller/committedLayoutDiff.d.ts +25 -0
  58. package/dist/controller/committedLayoutDiff.js +71 -0
  59. package/dist/controller/contentControlWidgetController.d.ts +1 -1
  60. package/dist/controller/folioEditor.d.ts +1 -1
  61. package/dist/controller/fontReadiness.d.ts +70 -3
  62. package/dist/controller/fontReadiness.js +100 -10
  63. package/dist/controller/headerFooterEditorManager.js +6 -1
  64. package/dist/controller/layoutPipeline.d.ts +12 -10
  65. package/dist/controller/layoutPipeline.js +65 -11
  66. package/dist/controller/layoutRunOptions.d.ts +24 -0
  67. package/dist/controller/layoutRunOptions.js +17 -0
  68. package/dist/controller/layoutScheduler.d.ts +19 -14
  69. package/dist/controller/layoutScheduler.js +15 -12
  70. package/dist/controller/layoutSession.d.ts +26 -2
  71. package/dist/controller/layoutSession.js +1 -1
  72. package/dist/controller/noteEditorManager.js +8 -3
  73. package/dist/document-operations.d.ts +11 -2
  74. package/dist/document-operations.js +230 -21
  75. package/dist/docx/altChunk.d.ts +8 -0
  76. package/dist/docx/altChunk.js +17 -0
  77. package/dist/docx/archiveInflation.d.ts +127 -0
  78. package/dist/docx/archiveInflation.js +181 -0
  79. package/dist/docx/attributeRemainder.d.ts +1 -1
  80. package/dist/docx/blockContentParser.d.ts +64 -1
  81. package/dist/docx/blockContentParser.js +17 -4
  82. package/dist/docx/blockCustomXmlShell.d.ts +7 -0
  83. package/dist/docx/blockCustomXmlShell.js +14 -0
  84. package/dist/docx/blockPlainText.js +7 -0
  85. package/dist/docx/commentAnchorIndex.js +1 -1
  86. package/dist/docx/commentRangeIntegrity.js +8 -3
  87. package/dist/docx/commentReferenceNormalization.js +1 -1
  88. package/dist/docx/commentReplyMarkers.js +20 -1
  89. package/dist/docx/compatibility.d.ts +1 -1
  90. package/dist/docx/compatibility.js +34 -13
  91. package/dist/docx/containerChildren.gen.d.ts +1 -1
  92. package/dist/docx/containerChildren.gen.js +1 -0
  93. package/dist/docx/documentParser.js +12 -12
  94. package/dist/docx/drawingIdNormalization.d.ts +3 -1
  95. package/dist/docx/drawingIdNormalization.js +6 -1
  96. package/dist/docx/ensureParaIds.js +119 -97
  97. package/dist/docx/footnoteParser.js +8 -4
  98. package/dist/docx/headerFooterParser.js +3 -3
  99. package/dist/docx/headerFooterReferenceNormalization.d.ts +20 -1
  100. package/dist/docx/headerFooterReferenceNormalization.js +52 -27
  101. package/dist/docx/hyperlinkParser.d.ts +1 -1
  102. package/dist/docx/index.d.ts +1 -1
  103. package/dist/docx/listNumberingInstances.d.ts +59 -0
  104. package/dist/docx/listNumberingInstances.js +249 -0
  105. package/dist/docx/metadataPrivacy.js +24 -1
  106. package/dist/docx/normalizeBaseDirection.js +2 -1
  107. package/dist/docx/noteReferenceMark.d.ts +15 -0
  108. package/dist/docx/noteReferenceMark.js +48 -0
  109. package/dist/docx/opaqueCarrier.d.ts +7 -0
  110. package/dist/docx/opaqueCarrier.js +38 -0
  111. package/dist/docx/packageParts.js +4 -1
  112. package/dist/docx/paragraphParser.js +96 -27
  113. package/dist/docx/paragraphPropertySource.d.ts +4 -2
  114. package/dist/docx/paragraphPropertySource.js +10 -2
  115. package/dist/docx/paragraphTraversal.js +1 -0
  116. package/dist/docx/parseWarningMessage.js +4 -1
  117. package/dist/docx/parser.js +175 -22
  118. package/dist/docx/rezip.js +31 -7
  119. package/dist/docx/sdtProperties.js +1 -1
  120. package/dist/docx/sdtPropertiesPatch.js +3 -0
  121. package/dist/docx/selectiveSave.js +16 -9
  122. package/dist/docx/selectiveXmlPatch.d.ts +3 -1
  123. package/dist/docx/selectiveXmlPatch.js +186 -39
  124. package/dist/docx/serializer/blockCustomXmlSerializer.d.ts +5 -0
  125. package/dist/docx/serializer/blockCustomXmlSerializer.js +4 -0
  126. package/dist/docx/serializer/documentSerializer.js +2 -0
  127. package/dist/docx/serializer/headerFooterSerializer.js +2 -0
  128. package/dist/docx/serializer/noteSerializer.js +3 -1
  129. package/dist/docx/serializer/paragraphSerializer.js +33 -9
  130. package/dist/docx/serializer/tableSerializer.js +25 -38
  131. package/dist/docx/server/boundedArchive.d.ts +8 -13
  132. package/dist/docx/server/boundedArchive.js +70 -59
  133. package/dist/docx/server/createBilingualDocument.js +3 -3
  134. package/dist/docx/server/extractDocxText.d.ts +8 -2
  135. package/dist/docx/server/extractDocxText.js +2 -2
  136. package/dist/docx/server/validateDocxConformance.d.ts +1 -1
  137. package/dist/docx/server/validateDocxConformance.js +1 -0
  138. package/dist/docx/tableParser.d.ts +157 -1
  139. package/dist/docx/tableParser.js +89 -10
  140. package/dist/docx/textBoxParser.js +1 -1
  141. package/dist/docx/unzip.d.ts +20 -2
  142. package/dist/docx/unzip.js +136 -25
  143. package/dist/docx/wordprocessingPrefixes.d.ts +78 -0
  144. package/dist/docx/wordprocessingPrefixes.js +286 -0
  145. package/dist/fonts/embeddedFonts.js +1 -1
  146. package/dist/i18n/messages/catalogs.gen.d.ts +170 -34
  147. package/dist/i18n/messages/catalogs.gen.js +187 -51
  148. package/dist/i18n/messages/messages.gen.d.ts +10 -2
  149. package/dist/internal/compare/inline-presentation.d.ts +2 -1
  150. package/dist/internal/compare/inline-presentation.js +11 -10
  151. package/dist/internal/headlessRevisionResolutionGuard.d.ts +2 -8
  152. package/dist/internal/headlessRevisionResolutionGuard.js +2 -11
  153. package/dist/internal/indexedPositionMap.d.ts +11 -0
  154. package/dist/internal/indexedPositionMap.js +42 -0
  155. package/dist/internal/pageBreakRunSourceDescendantIndex.js +2 -1
  156. package/dist/internal/revisionResolutionEdits.d.ts +13 -0
  157. package/dist/internal/revisionResolutionEdits.js +19 -0
  158. package/dist/internal/revisionResolutionInline.d.ts +24 -0
  159. package/dist/internal/{headlessRevisionResolution.js → revisionResolutionInline.js} +61 -43
  160. package/dist/internal/revisionResolutionStep.d.ts +34 -0
  161. package/dist/internal/revisionResolutionStep.js +282 -0
  162. package/dist/internal/revisionResolutionTracking.d.ts +11 -0
  163. package/dist/internal/revisionResolutionTracking.js +124 -0
  164. package/dist/internal/wholeStoryRevisionResolution.d.ts +56 -0
  165. package/dist/internal/wholeStoryRevisionResolution.js +600 -0
  166. package/dist/layout-bridge/convert/markupViewFlow.d.ts +20 -0
  167. package/dist/layout-bridge/convert/markupViewFlow.js +123 -0
  168. package/dist/layout-bridge/convert/tableConversion.js +1 -1
  169. package/dist/layout-bridge/convert/toFlowBlocks.js +10 -1
  170. package/dist/layout-engine/layoutInstrumentation.d.ts +9 -1
  171. package/dist/layout-engine/layoutInstrumentation.js +4 -1
  172. package/dist/layout-engine/measure/cache.d.ts +18 -1
  173. package/dist/layout-engine/measure/cache.js +31 -1
  174. package/dist/layout-engine/measure/font-metrics.worker.js +3 -7
  175. package/dist/layout-engine/measure/measureContainer.js +7 -47
  176. package/dist/layout-engine/measure/measureHelpers.d.ts +6 -1
  177. package/dist/layout-engine/measure/measureHelpers.js +22 -2
  178. package/dist/layout-engine/measure/measureParagraph.js +2 -2
  179. package/dist/layout-engine/measure/measureWorker.js +2 -3
  180. package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +6 -7
  181. package/dist/layout-engine/measure/measureWorkerProtocol.js +1 -2
  182. package/dist/layout-engine/measure/paragraphMeasureShared.d.ts +12 -1
  183. package/dist/layout-engine/measure/paragraphMeasureShared.js +14 -1
  184. package/dist/layout-engine/types.d.ts +6 -0
  185. package/dist/layout-painter/renderPage.js +1 -0
  186. package/dist/layout-painter/renderParagraph.js +1 -1
  187. package/dist/managers/ContextMenuManager.js +5 -2
  188. package/dist/managers/types.d.ts +3 -0
  189. package/dist/markdown/escape.d.ts +2 -2
  190. package/dist/markdown/escape.js +4 -5
  191. package/dist/markdown/fromMarkdown.js +2 -1
  192. package/dist/markdown/internals.d.ts +11 -1
  193. package/dist/markdown/internals.js +24 -3
  194. package/dist/markdown/renderBlock.js +121 -25
  195. package/dist/markdown/renderParagraph.d.ts +13 -1
  196. package/dist/markdown/renderParagraph.js +85 -38
  197. package/dist/markdown/renderRuns.d.ts +10 -1
  198. package/dist/markdown/renderRuns.js +323 -69
  199. package/dist/markdown/renderTable.js +24 -12
  200. package/dist/markdown/trailers.js +2 -2
  201. package/dist/markdown/types.d.ts +29 -7
  202. package/dist/paged-layout/incrementalMeasure.d.ts +1 -2
  203. package/dist/paged-layout/incrementalMeasure.js +1 -9
  204. package/dist/paged-layout/transactionDirtyRange.d.ts +1 -3
  205. package/dist/paged-layout/transactionDirtyRange.js +29 -41
  206. package/dist/panel-layout.d.ts +83 -0
  207. package/dist/panel-layout.js +96 -0
  208. package/dist/prosemirror/anchoredTextBoxes.d.ts +37 -0
  209. package/dist/prosemirror/anchoredTextBoxes.js +156 -0
  210. package/dist/prosemirror/attrs/index.d.ts +6 -2
  211. package/dist/prosemirror/attrs/index.js +172 -1
  212. package/dist/prosemirror/clearRunColor.d.ts +6 -0
  213. package/dist/prosemirror/clearRunColor.js +46 -0
  214. package/dist/prosemirror/commands/comments.d.ts +7 -8
  215. package/dist/prosemirror/commands/comments.js +281 -212
  216. package/dist/prosemirror/commands/contentControls.d.ts +1 -1
  217. package/dist/prosemirror/commands/formatPainter.d.ts +1 -1
  218. package/dist/prosemirror/commands/formatPainter.js +1 -1
  219. package/dist/prosemirror/commands/formatting.d.ts +1 -1
  220. package/dist/prosemirror/commands/hyperlink.js +2 -1
  221. package/dist/prosemirror/commands/index.d.ts +2 -2
  222. package/dist/prosemirror/commands/index.js +2 -2
  223. package/dist/prosemirror/commands/paragraph.d.ts +7 -1
  224. package/dist/prosemirror/commands/paragraph.js +9 -1
  225. package/dist/prosemirror/commands/paragraphBookmarkJoin.d.ts +13 -0
  226. package/dist/prosemirror/commands/paragraphBookmarkJoin.js +22 -0
  227. package/dist/prosemirror/commands/pastePlainText.d.ts +1 -1
  228. package/dist/prosemirror/commands/propertyChangeScope.d.ts +3 -2
  229. package/dist/prosemirror/commands/propertyChangeScope.js +24 -3
  230. package/dist/prosemirror/commands/resolveAllTableChanges.d.ts +40 -0
  231. package/dist/prosemirror/commands/resolveAllTableChanges.js +620 -0
  232. package/dist/prosemirror/commands/resolveNodePropertyChangeAttrs.d.ts +15 -0
  233. package/dist/prosemirror/commands/resolveNodePropertyChangeAttrs.js +46 -0
  234. package/dist/prosemirror/commands/resolveParagraphProperties.d.ts +16 -0
  235. package/dist/prosemirror/commands/resolveParagraphProperties.js +73 -0
  236. package/dist/prosemirror/commands/sectionBreak.js +2 -1
  237. package/dist/prosemirror/commands/tableCellMergeResolution.d.ts +15 -2
  238. package/dist/prosemirror/commands/tableCellMergeResolution.js +23 -7
  239. package/dist/prosemirror/containerFinalParagraph.d.ts +11 -5
  240. package/dist/prosemirror/containerFinalParagraph.js +7 -6
  241. package/dist/prosemirror/contentControlRevisions.d.ts +1 -1
  242. package/dist/prosemirror/conversion/fromProseDoc.d.ts +2 -13
  243. package/dist/prosemirror/conversion/fromProseDoc.js +177 -605
  244. package/dist/prosemirror/conversion/toProseDoc.d.ts +4 -11
  245. package/dist/prosemirror/conversion/toProseDoc.js +70 -154
  246. package/dist/prosemirror/documentSchema.d.ts +8 -0
  247. package/dist/prosemirror/documentSchema.js +18 -0
  248. package/dist/prosemirror/emptyFieldResultRuns.d.ts +18 -0
  249. package/dist/prosemirror/emptyFieldResultRuns.js +33 -0
  250. package/dist/prosemirror/extensions/ExtensionManager.d.ts +1 -1
  251. package/dist/prosemirror/extensions/ExtensionManager.js +3 -1
  252. package/dist/prosemirror/extensions/StarterKit.js +5 -1
  253. package/dist/prosemirror/extensions/core/DocExtension.js +1 -1
  254. package/dist/prosemirror/extensions/core/ParagraphExtension.js +116 -63
  255. package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +4 -1
  256. package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.js +24 -3
  257. package/dist/prosemirror/extensions/features/JoinedRunStyleExtension.d.ts +20 -0
  258. package/dist/prosemirror/extensions/features/JoinedRunStyleExtension.js +43 -0
  259. package/dist/prosemirror/extensions/features/ListExtension.js +167 -128
  260. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +19 -2
  261. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.js +33 -20
  262. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +31 -2
  263. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +270 -99
  264. package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +3 -2
  265. package/dist/prosemirror/extensions/features/pasteCleanup.js +2 -1
  266. package/dist/prosemirror/extensions/features/pastedHeadingStyles.js +1 -1
  267. package/dist/prosemirror/extensions/features/pastedHtmlLists.d.ts +12 -0
  268. package/dist/prosemirror/extensions/features/pastedHtmlLists.js +124 -0
  269. package/dist/prosemirror/extensions/marks/FootnoteRefExtension.js +33 -11
  270. package/dist/prosemirror/extensions/marks/HyperlinkExtension.js +8 -4
  271. package/dist/prosemirror/extensions/marks/RunIdentityExtension.d.ts +21 -18
  272. package/dist/prosemirror/extensions/marks/RunIdentityExtension.js +37 -17
  273. package/dist/prosemirror/extensions/marks/StrikeExtension.js +2 -2
  274. package/dist/prosemirror/extensions/marks/SubscriptExtension.js +2 -2
  275. package/dist/prosemirror/extensions/marks/SuperscriptExtension.js +2 -2
  276. package/dist/prosemirror/extensions/marks/TextColorExtension.js +4 -3
  277. package/dist/prosemirror/extensions/marks/markUtils.d.ts +15 -8
  278. package/dist/prosemirror/extensions/marks/markUtils.js +25 -10
  279. package/dist/prosemirror/extensions/marks/noteReferenceDeletion.d.ts +12 -0
  280. package/dist/prosemirror/extensions/marks/noteReferenceDeletion.js +46 -0
  281. package/dist/prosemirror/extensions/nodes/BlockCustomXmlExtension.d.ts +6 -0
  282. package/dist/prosemirror/extensions/nodes/BlockCustomXmlExtension.js +52 -0
  283. package/dist/prosemirror/extensions/nodes/CommentReferenceExtension.js +2 -2
  284. package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +3 -3
  285. package/dist/prosemirror/extensions/nodes/FieldExtension.js +50 -15
  286. package/dist/prosemirror/extensions/nodes/HardBreakExtension.js +5 -3
  287. package/dist/prosemirror/extensions/nodes/PreservedBlockExtension.js +4 -1
  288. package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +1 -1
  289. package/dist/prosemirror/extensions/nodes/TableExtension.js +121 -226
  290. package/dist/prosemirror/extensions/types.d.ts +11 -1
  291. package/dist/prosemirror/findReplaceSelection.js +1 -1
  292. package/dist/prosemirror/hyperlinkRemoval.d.ts +9 -0
  293. package/dist/prosemirror/hyperlinkRemoval.js +129 -0
  294. package/dist/prosemirror/index.d.ts +5 -3
  295. package/dist/prosemirror/index.js +5 -3
  296. package/dist/prosemirror/indexedNodeLookup.d.ts +17 -0
  297. package/dist/prosemirror/indexedNodeLookup.js +103 -0
  298. package/dist/prosemirror/listAutoformatMarkers.d.ts +19 -0
  299. package/dist/prosemirror/listAutoformatMarkers.js +98 -0
  300. package/dist/prosemirror/listInstanceReferences.d.ts +12 -0
  301. package/dist/prosemirror/listInstanceReferences.js +72 -0
  302. package/dist/prosemirror/listLabels.d.ts +24 -0
  303. package/dist/prosemirror/listLabels.js +111 -0
  304. package/dist/prosemirror/listNumbering.d.ts +92 -0
  305. package/dist/prosemirror/listNumbering.js +330 -0
  306. package/dist/prosemirror/listRendering.d.ts +27 -0
  307. package/dist/prosemirror/listRendering.js +27 -0
  308. package/dist/prosemirror/listRenderingAttrs.d.ts +11 -2
  309. package/dist/prosemirror/listRenderingAttrs.js +8 -1
  310. package/dist/prosemirror/markupViewNotes.d.ts +8 -0
  311. package/dist/prosemirror/markupViewNotes.js +49 -0
  312. package/dist/prosemirror/markupViewProjection.d.ts +97 -0
  313. package/dist/prosemirror/markupViewProjection.js +88 -0
  314. package/dist/prosemirror/noteReferenceReview.d.ts +77 -0
  315. package/dist/prosemirror/noteReferenceReview.js +332 -0
  316. package/dist/prosemirror/numberingAttr.d.ts +9 -1
  317. package/dist/prosemirror/numberingAttr.js +9 -1
  318. package/dist/prosemirror/outlineLevelAttr.js +1 -1
  319. package/dist/prosemirror/paragraphIndentation.d.ts +10 -1
  320. package/dist/prosemirror/paragraphIndentation.js +32 -7
  321. package/dist/prosemirror/paragraphMarkJoin.d.ts +21 -0
  322. package/dist/prosemirror/paragraphMarkJoin.js +26 -0
  323. package/dist/prosemirror/paragraphPropertyCarry.d.ts +64 -0
  324. package/dist/prosemirror/paragraphPropertyCarry.js +158 -0
  325. package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +1 -1
  326. package/dist/prosemirror/plugins/documentNumbering.d.ts +27 -1
  327. package/dist/prosemirror/plugins/documentNumbering.js +97 -11
  328. package/dist/prosemirror/plugins/documentStyleState.d.ts +26 -0
  329. package/dist/prosemirror/plugins/documentStyleState.js +32 -0
  330. package/dist/prosemirror/plugins/documentStyles.d.ts +3 -13
  331. package/dist/prosemirror/plugins/documentStyles.js +67 -17
  332. package/dist/prosemirror/plugins/index.d.ts +2 -1
  333. package/dist/prosemirror/plugins/index.js +2 -1
  334. package/dist/prosemirror/plugins/paragraphStyleResolution.d.ts +15 -0
  335. package/dist/prosemirror/plugins/paragraphStyleResolution.js +230 -0
  336. package/dist/prosemirror/plugins/suggestionMode.d.ts +27 -3
  337. package/dist/prosemirror/plugins/suggestionMode.js +490 -63
  338. package/dist/prosemirror/plugins/templateDirectives.d.ts +1 -1
  339. package/dist/prosemirror/plugins/transactionInvariants.d.ts +32 -0
  340. package/dist/prosemirror/plugins/transactionInvariants.js +86 -0
  341. package/dist/prosemirror/positionSweep.d.ts +24 -0
  342. package/dist/prosemirror/positionSweep.js +222 -0
  343. package/dist/prosemirror/rebaseParagraphRunFormatting.d.ts +23 -3
  344. package/dist/prosemirror/rebaseParagraphRunFormatting.js +39 -13
  345. package/dist/prosemirror/rebaseParagraphRuns.d.ts +36 -0
  346. package/dist/prosemirror/rebaseParagraphRuns.js +99 -0
  347. package/dist/prosemirror/rejoinRunCarriers.d.ts +1 -1
  348. package/dist/prosemirror/replacedAnnotations.d.ts +33 -1
  349. package/dist/prosemirror/replacedAnnotations.js +170 -1
  350. package/dist/prosemirror/runFormattingFromMarks.d.ts +18 -0
  351. package/dist/prosemirror/runFormattingFromMarks.js +567 -0
  352. package/dist/prosemirror/runFormattingInlineCarriers.d.ts +1 -1
  353. package/dist/prosemirror/runFormattingReconciliation.js +10 -9
  354. package/dist/prosemirror/schema/index.d.ts +2 -2
  355. package/dist/prosemirror/schema/index.js +3 -0
  356. package/dist/prosemirror/schema/nodes.d.ts +44 -11
  357. package/dist/prosemirror/sectionMarkEdits.d.ts +20 -0
  358. package/dist/prosemirror/sectionMarkEdits.js +59 -0
  359. package/dist/prosemirror/storyListNumbering.d.ts +17 -0
  360. package/dist/prosemirror/storyListNumbering.js +102 -0
  361. package/dist/prosemirror/styles/paragraphStyleCascade.d.ts +59 -0
  362. package/dist/prosemirror/styles/paragraphStyleCascade.js +145 -0
  363. package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +21 -2
  364. package/dist/prosemirror/styles/resolvedStyleAttrs.js +38 -1
  365. package/dist/prosemirror/styles/tableStyleRegions.d.ts +31 -0
  366. package/dist/prosemirror/styles/tableStyleRegions.js +55 -0
  367. package/dist/prosemirror/tableCellPaste.d.ts +74 -0
  368. package/dist/prosemirror/tableCellPaste.js +525 -0
  369. package/dist/prosemirror/tableGridMutation.d.ts +87 -2
  370. package/dist/prosemirror/tableGridMutation.js +255 -2
  371. package/dist/prosemirror/tableRunIn.d.ts +51 -0
  372. package/dist/prosemirror/tableRunIn.js +165 -0
  373. package/dist/prosemirror/textInput.js +11 -2
  374. package/dist/prosemirror/trackedRevisionPath.d.ts +17 -0
  375. package/dist/prosemirror/trackedRevisionPath.js +32 -0
  376. package/dist/prosemirror/validation.js +5 -1
  377. package/dist/redline.js +93 -9
  378. package/dist/render-dom/BodySelectionOverlay.d.ts +4 -1
  379. package/dist/render-dom/BodySelectionOverlay.js +3 -2
  380. package/dist/server.d.ts +2 -2
  381. package/dist/utils/findReplace.js +2 -2
  382. package/dist/utils/mergeDocumentContent.js +1 -1
  383. package/dist/utils/noteReferenceLabels.d.ts +36 -0
  384. package/dist/utils/noteReferenceLabels.js +32 -0
  385. package/dist/utils/replaceText.js +1 -1
  386. package/dist/version-comparison.d.ts +1 -0
  387. package/dist/version-comparison.js +1 -0
  388. package/package.json +6 -5
  389. package/dist/internal/headlessRevisionResolution.d.ts +0 -23
@@ -1,6 +1,8 @@
1
1
  import { document_d_exports } from "../types/document.js";
2
2
  import { NumberingMap } from "./numberingParser.js";
3
+ import { ParseContext } from "./parseContext.js";
3
4
  import { XmlElement } from "./xmlParser.js";
5
+ import { OwnedElsewhere } from "./containerChildren.js";
4
6
  import { PreviewLedger } from "./previewBudget.js";
5
7
  import { StyleMap } from "./styleParser.js";
6
8
  //#region src/docx/tableParser.d.ts
@@ -68,6 +70,8 @@ declare function parseTableProperties(tblPrElement: XmlElement | null): document
68
70
  * {@link parseTablePropertyExceptionChanges}.
69
71
  */
70
72
  declare function parseTablePropertyExceptions(tblPrExElement: XmlElement | null): document_d_exports.TablePropertyExceptionFormatting | undefined;
73
+ declare function isTableCellMergeRevisionValue(value: unknown): value is "continue" | "rest";
74
+ declare function isTableCellMergeRevisionContinuation(value: "continue" | "rest" | undefined): boolean;
71
75
  /**
72
76
  * Parse table row properties (w:trPr)
73
77
  *
@@ -89,6 +93,20 @@ declare function parseConditionalFormatStyle(cnfElement: XmlElement | null): doc
89
93
  * @returns Parsed cell formatting
90
94
  */
91
95
  declare function parseTableCellProperties(tcPrElement: XmlElement | null): document_d_exports.TableCellFormatting | undefined;
96
+ /**
97
+ * Record a `CT_SdtRow` / `CT_SdtCell` on the rows or cells it wrapped.
98
+ *
99
+ * Both are transparent: what they hold is ordinary rows and cells, and the
100
+ * control adds properties and an end mark. folio keeps the children modelled
101
+ * and puts the control on each of them rather than modelling a wrapper
102
+ * between them, because a table's children are rows and a row's are cells,
103
+ * and neither has a node to spare for something that is not one.
104
+ *
105
+ * Outermost first, so a control inside a control — a bound row inside a
106
+ * repeating section — comes back nested the way it was written. The
107
+ * recursion reads the inner one first, so the outer prepends.
108
+ */
109
+ type TablePreservedChild = NonNullable<document_d_exports.TablePreservedMarkup["children"]>[number];
92
110
  /**
93
111
  * Parse table cell content, including nested block controls.
94
112
  *
@@ -105,6 +123,58 @@ type TableParseOptions = {
105
123
  rootXmlns?: Record<string, string>;
106
124
  /** The ledger of the package this table belongs to; a table read on its own has none. */
107
125
  previews?: PreviewLedger;
126
+ context?: ParseContext | undefined;
127
+ };
128
+ /** What a table's rows, cells and blocks read: the ledger is settled where the walk enters. */
129
+ type TableScope = TableParseOptions & {
130
+ previews: PreviewLedger;
131
+ };
132
+ /** The parts and maps a table's content is read against. */
133
+ type TableParseResources = {
134
+ styles: StyleMap | null;
135
+ theme: document_d_exports.Theme | null;
136
+ numbering: NumberingMap | null;
137
+ rels: document_d_exports.RelationshipMap | null;
138
+ media: Map<string, document_d_exports.MediaFile> | null;
139
+ };
140
+ /** One cell's block sequence, or a block control's inside it, as it is read. */
141
+ type CellChildrenWalk = {
142
+ resources: TableParseResources;
143
+ options: TableScope;
144
+ modelled: document_d_exports.TableCellBlock[];
145
+ captured: document_d_exports.PreservedChild[];
146
+ };
147
+ declare const CELL_CONTENT_HANDLERS: {
148
+ readonly p: (child: XmlElement, { resources: { styles, theme, numbering, rels, media }, options, modelled }: CellChildrenWalk) => void;
149
+ readonly tbl: (child: XmlElement, { resources: { styles, theme, numbering, rels, media }, options, modelled }: CellChildrenWalk) => void;
150
+ readonly sdt: (child: XmlElement, { resources, options, modelled }: CellChildrenWalk) => "capture" | undefined;
151
+ readonly customXml: (child: XmlElement, { resources, options, modelled }: CellChildrenWalk) => void;
152
+ readonly bookmarkStart: (child: XmlElement, { modelled }: CellChildrenWalk) => void;
153
+ readonly bookmarkEnd: (child: XmlElement, { modelled }: CellChildrenWalk) => void;
154
+ readonly tcPr: OwnedElsewhere<"block-content", "tcPr">;
155
+ readonly sectPr: "capture";
156
+ readonly altChunk: "capture";
157
+ readonly commentRangeEnd: "capture";
158
+ readonly commentRangeStart: "capture";
159
+ readonly customXmlDelRangeEnd: "capture";
160
+ readonly customXmlDelRangeStart: "capture";
161
+ readonly customXmlInsRangeEnd: "capture";
162
+ readonly customXmlInsRangeStart: "capture";
163
+ readonly customXmlMoveFromRangeEnd: "capture";
164
+ readonly customXmlMoveFromRangeStart: "capture";
165
+ readonly customXmlMoveToRangeEnd: "capture";
166
+ readonly customXmlMoveToRangeStart: "capture";
167
+ readonly del: "capture";
168
+ readonly ins: "capture";
169
+ readonly moveFrom: "capture";
170
+ readonly moveFromRangeEnd: "capture";
171
+ readonly moveFromRangeStart: "capture";
172
+ readonly moveTo: "capture";
173
+ readonly moveToRangeEnd: "capture";
174
+ readonly moveToRangeStart: "capture";
175
+ readonly permEnd: "capture";
176
+ readonly permStart: "capture";
177
+ readonly proofErr: "capture";
108
178
  };
109
179
  /**
110
180
  * Parse a table cell (w:tc)
@@ -118,6 +188,49 @@ type TableParseOptions = {
118
188
  * @returns Parsed table cell
119
189
  */
120
190
  declare function parseTableCell(tcElement: 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?: TableParseOptions): document_d_exports.TableCell;
191
+ /** One row's children, or a cell-level content control's, as they are read. */
192
+ type RowChildrenWalk = {
193
+ resources: TableParseResources;
194
+ options: TableScope;
195
+ row: document_d_exports.TableRow;
196
+ bookmarks: document_d_exports.PositionedBookmarkMarker[];
197
+ preservedChildren: TablePreservedChild[];
198
+ customXmlIdentity: {
199
+ next: number;
200
+ };
201
+ };
202
+ declare const ROW_CONTENT_HANDLERS: {
203
+ readonly commentRangeEnd: "capture";
204
+ readonly commentRangeStart: "capture";
205
+ readonly customXmlPr: "capture";
206
+ readonly customXmlDelRangeEnd: "capture";
207
+ readonly customXmlDelRangeStart: "capture";
208
+ readonly customXmlInsRangeEnd: "capture";
209
+ readonly customXmlInsRangeStart: "capture";
210
+ readonly customXmlMoveFromRangeEnd: "capture";
211
+ readonly customXmlMoveFromRangeStart: "capture";
212
+ readonly customXmlMoveToRangeEnd: "capture";
213
+ readonly customXmlMoveToRangeStart: "capture";
214
+ readonly del: "capture";
215
+ readonly ins: "capture";
216
+ readonly moveFrom: "capture";
217
+ readonly moveFromRangeEnd: "capture";
218
+ readonly moveFromRangeStart: "capture";
219
+ readonly moveTo: "capture";
220
+ readonly moveToRangeEnd: "capture";
221
+ readonly moveToRangeStart: "capture";
222
+ readonly permEnd: "capture";
223
+ readonly permStart: "capture";
224
+ readonly proofErr: "capture";
225
+ readonly tr: (child: XmlElement, { options }: RowChildrenWalk) => "capture";
226
+ readonly trPr: OwnedElsewhere<"row-content", "trPr">;
227
+ readonly tblPrEx: OwnedElsewhere<"row-content", "tblPrEx">;
228
+ readonly tc: (child: XmlElement, { resources: { styles, theme, numbering, rels, media }, options, row }: RowChildrenWalk) => void;
229
+ readonly sdt: (child: XmlElement, walk: RowChildrenWalk) => "capture" | undefined;
230
+ readonly customXml: (child: XmlElement, walk: RowChildrenWalk) => "capture" | undefined;
231
+ readonly bookmarkStart: (child: XmlElement, { row, bookmarks }: RowChildrenWalk) => void;
232
+ readonly bookmarkEnd: (child: XmlElement, { row, bookmarks }: RowChildrenWalk) => void;
233
+ };
121
234
  /**
122
235
  * Parse a table row (w:tr)
123
236
  *
@@ -137,6 +250,49 @@ declare function parseTableRow(trElement: XmlElement, styles: StyleMap | null, t
137
250
  * @returns Array of column widths in twips
138
251
  */
139
252
  declare function parseTableGrid(tblGridElement: XmlElement | null): number[] | undefined;
253
+ /** One table's children, or a row-level content control's, as they are read. */
254
+ type TableChildrenWalk = {
255
+ resources: TableParseResources;
256
+ options: TableScope;
257
+ table: document_d_exports.Table;
258
+ rowsWithGridOffsets: Set<number>;
259
+ bookmarks: document_d_exports.PositionedBookmarkMarker[];
260
+ preservedChildren: TablePreservedChild[];
261
+ customXmlIdentity: {
262
+ next: number;
263
+ };
264
+ };
265
+ declare const TABLE_CONTENT_HANDLERS: {
266
+ readonly bookmarkStart: (child: XmlElement, { table, bookmarks }: TableChildrenWalk) => void;
267
+ readonly bookmarkEnd: (child: XmlElement, { table, bookmarks }: TableChildrenWalk) => void;
268
+ readonly commentRangeEnd: "capture";
269
+ readonly commentRangeStart: "capture";
270
+ readonly customXmlPr: "capture";
271
+ readonly customXmlDelRangeEnd: "capture";
272
+ readonly customXmlDelRangeStart: "capture";
273
+ readonly customXmlInsRangeEnd: "capture";
274
+ readonly customXmlInsRangeStart: "capture";
275
+ readonly customXmlMoveFromRangeEnd: "capture";
276
+ readonly customXmlMoveFromRangeStart: "capture";
277
+ readonly customXmlMoveToRangeEnd: "capture";
278
+ readonly customXmlMoveToRangeStart: "capture";
279
+ readonly del: "capture";
280
+ readonly ins: "capture";
281
+ readonly moveFrom: "capture";
282
+ readonly moveFromRangeEnd: "capture";
283
+ readonly moveFromRangeStart: "capture";
284
+ readonly moveTo: "capture";
285
+ readonly moveToRangeEnd: "capture";
286
+ readonly moveToRangeStart: "capture";
287
+ readonly permEnd: "capture";
288
+ readonly permStart: "capture";
289
+ readonly proofErr: "capture";
290
+ readonly tblPr: OwnedElsewhere<"table-content", "tblPr">;
291
+ readonly tblGrid: OwnedElsewhere<"table-content", "tblGrid">;
292
+ readonly tr: (child: XmlElement, { resources: { styles, theme, numbering, rels, media }, options, table, rowsWithGridOffsets }: TableChildrenWalk) => void;
293
+ readonly sdt: (child: XmlElement, walk: TableChildrenWalk) => "capture" | undefined;
294
+ readonly customXml: (child: XmlElement, walk: TableChildrenWalk) => "capture" | undefined;
295
+ };
140
296
  /**
141
297
  * Parse a table element (w:tbl)
142
298
  *
@@ -215,4 +371,4 @@ declare function getHeaderRows(table: document_d_exports.Table): document_d_expo
215
371
  */
216
372
  declare function isFloatingTable(table: document_d_exports.Table): boolean;
217
373
  //#endregion
218
- export { MAX_TABLE_COLUMNS, getHeaderRows, getTableColumnCount, getTableRowCount, getTableText, hasHeaderRow, isCellHorizontallyMerged, isCellMergeContinuation, isCellMergeStart, isFloatingTable, parseCellMargins, parseConditionalFormatStyle, parseFloatingTableProperties, parseTable, parseTableBorders, parseTableCell, parseTableCellProperties, parseTableGrid, parseTableLook, parseTableMeasurement, parseTableProperties, parseTablePropertyExceptions, parseTableRow, parseTableRowProperties };
374
+ export { CELL_CONTENT_HANDLERS, MAX_TABLE_COLUMNS, ROW_CONTENT_HANDLERS, TABLE_CONTENT_HANDLERS, getHeaderRows, getTableColumnCount, getTableRowCount, getTableText, hasHeaderRow, isCellHorizontallyMerged, isCellMergeContinuation, isCellMergeStart, isFloatingTable, isTableCellMergeRevisionContinuation, isTableCellMergeRevisionValue, parseCellMargins, parseConditionalFormatStyle, parseFloatingTableProperties, parseTable, parseTableBorders, parseTableCell, parseTableCellProperties, parseTableGrid, parseTableLook, parseTableMeasurement, parseTableProperties, parseTablePropertyExceptions, parseTableRow, parseTableRowProperties };
@@ -1,4 +1,5 @@
1
1
  import { NO_MODELLED_ATTRIBUTES, attributeRemainder } from "./attributeRemainder.js";
2
+ import { blockCustomXmlShell } from "./blockCustomXmlShell.js";
2
3
  import { parseBookmarkEnd, parseBookmarkStart } from "./bookmarkParser.js";
3
4
  import { parseBorderSpec } from "./borderParser.js";
4
5
  import { CAPTURE, dispatchChildrenWithContext, keptUnless, ownedElsewhere, sequencePositions, withPreservedChildren } from "./containerChildren.js";
@@ -14,6 +15,7 @@ import { parsePropertyChangeInfo, parseTrackedChangeInfo } from "./trackedChange
14
15
  import { percentageSpelling, transitionalSlotEncoding } from "./transitionalSpelling.js";
15
16
  import { captureVerbatimXml } from "./verbatimCapture.js";
16
17
  import { WORDPROCESSINGML_NAMESPACE_URIS, cloneElement, findChild, findChildren, findWordprocessingChild, getAttribute, getAttributeByNamespaceUri, getLocalName, mergeXmlnsDeclarations, parseBooleanElement, parseNumericAttribute, parseOnOffAttribute, parseTableMeasurementValue, selectAlternateContentBranch } from "./xmlParser.js";
18
+ import { PARSE_WARNING_CODES } from "@stll/docx-core/model";
17
19
  //#region src/docx/tableParser.ts
18
20
  /**
19
21
  * Sanity cap on `w:gridSpan` (and the derived table column count). Word's
@@ -556,6 +558,12 @@ function parseTableCellVerticalMergeRevisionValue(value) {
556
558
  if (value === "cont") return "continue";
557
559
  if (value === "rest") return "rest";
558
560
  }
561
+ function isTableCellMergeRevisionValue(value) {
562
+ return value === "continue" || value === "rest";
563
+ }
564
+ function isTableCellMergeRevisionContinuation(value) {
565
+ return value === "continue";
566
+ }
559
567
  const ROW_PROPERTY_HANDLERS = {
560
568
  cnfStyle: (child, formatting) => {
561
569
  const conditionalFormat = parseConditionalFormatStyle(child);
@@ -755,13 +763,35 @@ function parseTableCellProperties(tcPrElement) {
755
763
  if (preserved) formatting.preserved = preserved;
756
764
  return withSourceXml(formatting, tcPrElement);
757
765
  }
766
+ const createCustomXmlWrapper = (element, identity) => ({
767
+ id: identity.next++,
768
+ ...blockCustomXmlShell(element)
769
+ });
770
+ const recordCustomXmlWrapper = (wrapped, wrapper) => {
771
+ for (const item of wrapped) item.carrierStack = [{
772
+ type: "customXml",
773
+ wrapper
774
+ }, ...item.carrierStack ?? []];
775
+ };
758
776
  const recordContentControl = (wrapped, carriers, sdtElement) => {
759
777
  const properties = parseSdtProperties(findWordprocessingChild(sdtElement, "sdtPr"), findWordprocessingChild(sdtElement, "sdtEndPr"));
760
778
  const siblings = captureSdtSiblingMarkers(sdtElement);
761
779
  if (siblings.before.length > 0) properties.rawSdtChildrenBeforeContent = siblings.before;
762
780
  if (siblings.after.length > 0) properties.rawSdtChildrenAfterContent = siblings.after;
763
- for (const item of wrapped) item.contentControls = [properties, ...item.contentControls ?? []];
764
- for (const item of carriers) item.contentControls = [properties, ...item.contentControls ?? []];
781
+ for (const item of wrapped) {
782
+ item.contentControls = [properties, ...item.contentControls ?? []];
783
+ item.carrierStack = [{
784
+ type: "sdt",
785
+ properties
786
+ }, ...item.carrierStack ?? []];
787
+ }
788
+ for (const item of carriers) {
789
+ item.contentControls = [properties, ...item.contentControls ?? []];
790
+ item.carrierStack = [{
791
+ type: "sdt",
792
+ properties
793
+ }, ...item.carrierStack ?? []];
794
+ }
765
795
  };
766
796
  /**
767
797
  * Accumulate a table container's own `xmlns:*` onto the inherited in-scope set,
@@ -779,7 +809,7 @@ const findLastFlowBlock = (blocks) => {
779
809
  for (let index = blocks.length - 1; index >= 0; index -= 1) {
780
810
  const block = blocks[index];
781
811
  if (block?.type === "paragraph" || block?.type === "table") return block;
782
- if (block?.type === "blockSdt") {
812
+ if (block?.type === "blockSdt" || block?.type === "blockCustomXml") {
783
813
  const nested = findLastFlowBlock(block.content);
784
814
  if (nested) return nested;
785
815
  }
@@ -825,6 +855,19 @@ const CELL_CONTENT_HANDLERS = {
825
855
  })
826
856
  });
827
857
  },
858
+ customXml: (child, { resources, options, modelled }) => {
859
+ const customXml = {
860
+ type: "blockCustomXml",
861
+ ...blockCustomXmlShell(child),
862
+ content: parseCellChildren({
863
+ element: child,
864
+ resources,
865
+ options: withContainerXmlns(options, child),
866
+ requireTrailingParagraph: false
867
+ })
868
+ };
869
+ modelled.push(customXml);
870
+ },
828
871
  bookmarkStart: (child, { modelled }) => {
829
872
  modelled.push(parseBookmarkStart(child));
830
873
  },
@@ -836,7 +879,6 @@ const CELL_CONTENT_HANDLERS = {
836
879
  altChunk: CAPTURE,
837
880
  commentRangeEnd: CAPTURE,
838
881
  commentRangeStart: CAPTURE,
839
- customXml: CAPTURE,
840
882
  customXmlDelRangeEnd: CAPTURE,
841
883
  customXmlDelRangeStart: CAPTURE,
842
884
  customXmlInsRangeEnd: CAPTURE,
@@ -959,6 +1001,21 @@ const ROW_CONTENT_HANDLERS = {
959
1001
  }
960
1002
  recordContentControl(wrapped, [...preservedChildren.slice(firstCaptured), ...bookmarks.slice(firstBookmark)], child);
961
1003
  },
1004
+ customXml: (child, walk) => {
1005
+ const firstWrapped = walk.row.cells.length;
1006
+ const firstCaptured = walk.preservedChildren.length;
1007
+ const firstBookmark = walk.bookmarks.length;
1008
+ dispatchRowChildren(child, walk);
1009
+ if (walk.row.cells.length === firstWrapped) {
1010
+ walk.preservedChildren.splice(firstCaptured);
1011
+ walk.bookmarks.splice(firstBookmark);
1012
+ return CAPTURE;
1013
+ }
1014
+ const wrapper = createCustomXmlWrapper(child, walk.customXmlIdentity);
1015
+ recordCustomXmlWrapper(walk.row.cells.slice(firstWrapped), wrapper);
1016
+ recordCustomXmlWrapper(walk.preservedChildren.slice(firstCaptured), wrapper);
1017
+ recordCustomXmlWrapper(walk.bookmarks.slice(firstBookmark), wrapper);
1018
+ },
962
1019
  bookmarkStart: (child, { row, bookmarks }) => {
963
1020
  bookmarks.push({
964
1021
  index: row.cells.length,
@@ -974,7 +1031,7 @@ const ROW_CONTENT_HANDLERS = {
974
1031
  ...ROW_CHILD_OWNERS,
975
1032
  commentRangeEnd: CAPTURE,
976
1033
  commentRangeStart: CAPTURE,
977
- customXml: CAPTURE,
1034
+ customXmlPr: CAPTURE,
978
1035
  customXmlDelRangeEnd: CAPTURE,
979
1036
  customXmlDelRangeStart: CAPTURE,
980
1037
  customXmlInsRangeEnd: CAPTURE,
@@ -994,7 +1051,13 @@ const ROW_CONTENT_HANDLERS = {
994
1051
  permEnd: CAPTURE,
995
1052
  permStart: CAPTURE,
996
1053
  proofErr: CAPTURE,
997
- tr: CAPTURE
1054
+ tr: (child, { options }) => {
1055
+ options.context?.warn({
1056
+ code: PARSE_WARNING_CODES.nestedRowOpaque,
1057
+ element: child.name ?? "w:tr"
1058
+ });
1059
+ return CAPTURE;
1060
+ }
998
1061
  };
999
1062
  /**
1000
1063
  * One row's children, or a cell-level content control's.
@@ -1055,7 +1118,8 @@ function parseTableRow(trElement, styles, theme, numbering, rels, media, options
1055
1118
  options: withContainerXmlns(options, trElement),
1056
1119
  row,
1057
1120
  bookmarks,
1058
- preservedChildren
1121
+ preservedChildren,
1122
+ customXmlIdentity: { next: 0 }
1059
1123
  });
1060
1124
  if (preservedChildren.length > 0) row.preserved = { children: preservedChildren };
1061
1125
  if (bookmarks.length > 0) row.bookmarks = bookmarks;
@@ -1167,6 +1231,21 @@ const TABLE_CONTENT_HANDLERS = {
1167
1231
  }
1168
1232
  recordContentControl(wrapped, [...preservedChildren.slice(firstCaptured), ...bookmarks.slice(firstBookmark)], child);
1169
1233
  },
1234
+ customXml: (child, walk) => {
1235
+ const firstWrapped = walk.table.rows.length;
1236
+ const firstCaptured = walk.preservedChildren.length;
1237
+ const firstBookmark = walk.bookmarks.length;
1238
+ dispatchTableChildren(child, walk);
1239
+ if (walk.table.rows.length === firstWrapped) {
1240
+ walk.preservedChildren.splice(firstCaptured);
1241
+ walk.bookmarks.splice(firstBookmark);
1242
+ return CAPTURE;
1243
+ }
1244
+ const wrapper = createCustomXmlWrapper(child, walk.customXmlIdentity);
1245
+ recordCustomXmlWrapper(walk.table.rows.slice(firstWrapped), wrapper);
1246
+ recordCustomXmlWrapper(walk.preservedChildren.slice(firstCaptured), wrapper);
1247
+ recordCustomXmlWrapper(walk.bookmarks.slice(firstBookmark), wrapper);
1248
+ },
1170
1249
  ...TABLE_CHILD_OWNERS,
1171
1250
  bookmarkStart: (child, { table, bookmarks }) => {
1172
1251
  bookmarks.push({
@@ -1182,7 +1261,6 @@ const TABLE_CONTENT_HANDLERS = {
1182
1261
  },
1183
1262
  commentRangeEnd: CAPTURE,
1184
1263
  commentRangeStart: CAPTURE,
1185
- customXml: CAPTURE,
1186
1264
  customXmlPr: CAPTURE,
1187
1265
  customXmlDelRangeEnd: CAPTURE,
1188
1266
  customXmlDelRangeStart: CAPTURE,
@@ -1269,7 +1347,8 @@ function parseTable(tblElement, styles, theme, numbering, rels, media, options)
1269
1347
  table,
1270
1348
  rowsWithGridOffsets,
1271
1349
  bookmarks,
1272
- preservedChildren
1350
+ preservedChildren,
1351
+ customXmlIdentity: { next: 0 }
1273
1352
  });
1274
1353
  if (table.rows.length === 0) return;
1275
1354
  if (preservedChildren.length > 0) table.preserved = { children: preservedChildren };
@@ -1382,4 +1461,4 @@ function isFloatingTable(table) {
1382
1461
  return table.formatting?.floating !== void 0;
1383
1462
  }
1384
1463
  //#endregion
1385
- export { MAX_TABLE_COLUMNS, getHeaderRows, getTableColumnCount, getTableRowCount, getTableText, hasHeaderRow, isCellHorizontallyMerged, isCellMergeContinuation, isCellMergeStart, isFloatingTable, parseCellMargins, parseConditionalFormatStyle, parseFloatingTableProperties, parseTable, parseTableBorders, parseTableCell, parseTableCellProperties, parseTableGrid, parseTableLook, parseTableMeasurement, parseTableProperties, parseTablePropertyExceptions, parseTableRow, parseTableRowProperties };
1464
+ export { CELL_CONTENT_HANDLERS, MAX_TABLE_COLUMNS, ROW_CONTENT_HANDLERS, TABLE_CONTENT_HANDLERS, getHeaderRows, getTableColumnCount, getTableRowCount, getTableText, hasHeaderRow, isCellHorizontallyMerged, isCellMergeContinuation, isCellMergeStart, isFloatingTable, isTableCellMergeRevisionContinuation, isTableCellMergeRevisionValue, parseCellMargins, parseConditionalFormatStyle, parseFloatingTableProperties, parseTable, parseTableBorders, parseTableCell, parseTableCellProperties, parseTableGrid, parseTableLook, parseTableMeasurement, parseTableProperties, parseTablePropertyExceptions, parseTableRow, parseTableRowProperties };
@@ -300,7 +300,7 @@ const getTextBoxBlockText = (block) => {
300
300
  return runTexts.join("");
301
301
  }
302
302
  if (block.type === "table") return block.rows.map((row) => row.cells.map((cell) => cell.content.map(getTextBoxBlockText).join("\n")).join(" ")).join("\n");
303
- if (block.type !== "blockSdt") return "";
303
+ if (block.type !== "blockSdt" && block.type !== "blockCustomXml") return "";
304
304
  return block.content.map(getTextBoxBlockText).join("\n");
305
305
  };
306
306
  /**
@@ -25,6 +25,13 @@ type DocxUnzipLimits = {
25
25
  * memory as bytes, not on what the parsed structure retains.
26
26
  */
27
27
  maxTotalUncompressedBytes: number;
28
+ /**
29
+ * Inflated bytes allowed per compressed byte, for each markup or text entry
30
+ * and for the package as a whole. Binary entries are bounded by the byte
31
+ * limits and the package ratio only, and entries and packages under 4 MiB
32
+ * inflated are exempt.
33
+ */
34
+ maxCompressionRatio: number;
28
35
  /** Elements allowed in one XML part, counted before any tree is built. */
29
36
  maxXmlElementsPerPart: number;
30
37
  /** Attributes allowed in one XML part, counted before any tree is built. */
@@ -75,13 +82,24 @@ type RawDocxContent = {
75
82
  /** True when the input was a password-protected CFB container. */
76
83
  wasEncrypted: boolean;
77
84
  };
85
+ /** How {@link unzipDocx} treats the parts it does not extract. */
86
+ type UnzipDocxBehavior = {
87
+ /**
88
+ * Inflate every part the unzip does not extract, within its declared size,
89
+ * so a later read of the returned package can trust that size. Callers
90
+ * that discard the package after reading the extracted parts can skip it.
91
+ * Defaults to `true`.
92
+ */
93
+ verifyUnreadEntries?: boolean;
94
+ };
78
95
  /**
79
96
  * Extract all content from a DOCX file
80
97
  *
81
98
  * @param buffer - DOCX file as ArrayBuffer
82
99
  * @returns Promise resolving to extracted content
83
100
  */
84
- declare function unzipDocx(buffer: ArrayBuffer, options?: DocxUnzipOptions): Promise<RawDocxContent>;
101
+ declare function unzipDocx(buffer: ArrayBuffer, options?: DocxUnzipOptions, { verifyUnreadEntries }?: UnzipDocxBehavior): Promise<RawDocxContent>;
102
+ declare function getEntryUncompressedSize(file: JSZip.JSZipObject): number | null;
85
103
  /**
86
104
  * Get a list of all files in the DOCX
87
105
  *
@@ -142,4 +160,4 @@ declare function getContentSummary(content: RawDocxContent): {
142
160
  totalFiles: number;
143
161
  };
144
162
  //#endregion
145
- export { DocxSecurityError, DocxUnzipLimits, DocxUnzipOptions, RawDocxContent, extractFile, getContentSummary, getFileList, getMediaMimeType, hasFile, mediaToDataUrl, unzipDocx };
163
+ export { DocxSecurityError, DocxUnzipLimits, DocxUnzipOptions, RawDocxContent, UnzipDocxBehavior, extractFile, getContentSummary, getEntryUncompressedSize, getFileList, getMediaMimeType, hasFile, mediaToDataUrl, unzipDocx };