@stll/folio-core 0.46.0 → 0.47.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 (370) hide show
  1. package/dist/ai-edits/apply.d.ts +17 -1
  2. package/dist/ai-edits/apply.js +31 -27
  3. package/dist/ai-edits/headless.d.ts +9 -2
  4. package/dist/ai-edits/headless.js +5 -3
  5. package/dist/ai-edits/read.d.ts +1 -0
  6. package/dist/ai-edits/read.js +1 -0
  7. package/dist/ai-edits/snapshot.js +32 -27
  8. package/dist/ai-edits/table-cell-mutations.js +15 -7
  9. package/dist/ai-edits/table-geometry.js +21 -18
  10. package/dist/ai-edits/table-template.js +2 -2
  11. package/dist/compare/compare.js +2 -1
  12. package/dist/compare/content-alignment.js +192 -46
  13. package/dist/compare/content-types.d.ts +8 -2
  14. package/dist/compare/content.js +2 -11
  15. package/dist/compare/plan.js +7 -4
  16. package/dist/compare/section-boundary-properties.js +1 -2
  17. package/dist/content-controls/checkboxDisplay.d.ts +8 -2
  18. package/dist/content-controls/checkboxDisplay.js +11 -5
  19. package/dist/content-controls/mutateContentControls.js +41 -42
  20. package/dist/controller/layoutPipeline.js +8 -3
  21. package/dist/display-list/build/buildDisplayList.js +7 -7
  22. package/dist/display-list/build/imagePrimitives.d.ts +4 -4
  23. package/dist/display-list/build/imagePrimitives.js +38 -20
  24. package/dist/display-list/build/pageBorderPrimitives.js +2 -1
  25. package/dist/display-list/build/paragraphPrimitives.js +93 -13
  26. package/dist/display-list/build/previewPrimitives.d.ts +10 -0
  27. package/dist/display-list/build/previewPrimitives.js +89 -0
  28. package/dist/display-list/build/strokes.d.ts +177 -8
  29. package/dist/display-list/build/strokes.js +167 -47
  30. package/dist/display-list/build/tablePrimitives.js +4 -2
  31. package/dist/display-list/build/textBoxPrimitives.js +6 -4
  32. package/dist/display-list/build/textDecorations.d.ts +15 -1
  33. package/dist/display-list/build/textDecorations.js +15 -1
  34. package/dist/display-list/dom/renderDisplayListToDom.js +1 -19
  35. package/dist/display-list/primitives.d.ts +13 -2
  36. package/dist/display-list/primitives.js +36 -1
  37. package/dist/document-operations.d.ts +9 -2
  38. package/dist/document-operations.js +5 -3
  39. package/dist/docx/attributeRemainder.d.ts +34 -1
  40. package/dist/docx/attributeRemainder.js +49 -3
  41. package/dist/docx/blockContentParser.d.ts +2 -0
  42. package/dist/docx/blockContentParser.js +39 -67
  43. package/dist/docx/blockPlainText.js +3 -1
  44. package/dist/docx/borderParser.js +26 -11
  45. package/dist/docx/builtInStyles.d.ts +8 -16
  46. package/dist/docx/builtInStyles.js +54 -17
  47. package/dist/docx/commentAnchorIndex.js +1 -1
  48. package/dist/docx/commentParser.js +3 -3
  49. package/dist/docx/commentRangeIntegrity.js +1 -1
  50. package/dist/docx/commentRangeJoin.js +1 -1
  51. package/dist/docx/commentReferenceNormalization.js +3 -2
  52. package/dist/docx/commentReplyMarkers.js +1 -1
  53. package/dist/docx/compatibility.js +56 -42
  54. package/dist/docx/containerChildren.d.ts +110 -13
  55. package/dist/docx/containerChildren.gen.d.ts +16 -1
  56. package/dist/docx/containerChildren.gen.js +18 -1
  57. package/dist/docx/containerChildren.js +63 -13
  58. package/dist/docx/diagramPreview.d.ts +14 -2
  59. package/dist/docx/diagramPreview.js +81 -169
  60. package/dist/docx/documentParser.js +4 -1
  61. package/dist/docx/drawingAnchor.d.ts +87 -0
  62. package/dist/docx/drawingAnchor.js +201 -0
  63. package/dist/docx/drawingUtils.d.ts +43 -38
  64. package/dist/docx/drawingUtils.js +205 -118
  65. package/dist/docx/fontTableParser.js +102 -41
  66. package/dist/docx/footnoteParser.js +10 -6
  67. package/dist/docx/groupDrawingParser.js +4 -3
  68. package/dist/docx/headerFooterReferenceNormalization.js +1 -1
  69. package/dist/docx/hyperlinkParser.d.ts +45 -7
  70. package/dist/docx/hyperlinkParser.js +126 -57
  71. package/dist/docx/imageParser.js +127 -107
  72. package/dist/docx/index.d.ts +2 -1
  73. package/dist/docx/index.js +2 -1
  74. package/dist/docx/inlineContentRemovals.d.ts +28 -0
  75. package/dist/docx/inlineContentRemovals.js +46 -0
  76. package/dist/docx/inlineWrapperContent.d.ts +84 -3
  77. package/dist/docx/inlineWrapperContent.js +85 -4
  78. package/dist/docx/inlineWrapperParser.d.ts +11 -0
  79. package/dist/docx/inlineWrapperParser.js +60 -0
  80. package/dist/docx/nonVisualDrawingProps.d.ts +5 -13
  81. package/dist/docx/normalizeBaseDirection.js +4 -2
  82. package/dist/docx/numberingParser.d.ts +25 -2
  83. package/dist/docx/numberingParser.js +264 -361
  84. package/dist/docx/numberingReference.d.ts +9 -16
  85. package/dist/docx/numberingReference.js +17 -16
  86. package/dist/docx/numberingReferenceNormalization.js +7 -7
  87. package/dist/docx/ooxmlCounterFormatter.d.ts +1 -1
  88. package/dist/docx/ooxmlCounterFormatter.js +4 -1
  89. package/dist/docx/paraIdAttribute.d.ts +91 -1
  90. package/dist/docx/paraIdAttribute.js +79 -1
  91. package/dist/docx/paragraphParser.d.ts +9 -24
  92. package/dist/docx/paragraphParser.js +212 -396
  93. package/dist/docx/paragraphProperties.d.ts +23 -0
  94. package/dist/docx/paragraphProperties.js +279 -0
  95. package/dist/docx/paragraphPropertySource.js +2 -0
  96. package/dist/docx/paragraphTextBoxEnrichment.d.ts +2 -1
  97. package/dist/docx/paragraphTextBoxEnrichment.js +14 -7
  98. package/dist/docx/paragraphTraversal.d.ts +14 -10
  99. package/dist/docx/paragraphTraversal.js +47 -49
  100. package/dist/docx/parseWarningMessage.js +3 -0
  101. package/dist/docx/parserEnums.d.ts +6 -8
  102. package/dist/docx/parserEnums.js +4 -6
  103. package/dist/docx/preservedRunContent.js +16 -6
  104. package/dist/docx/previewBudget.d.ts +44 -23
  105. package/dist/docx/previewBudget.js +61 -30
  106. package/dist/docx/propertyElementAttributes.d.ts +178 -0
  107. package/dist/docx/propertyElementAttributes.js +114 -0
  108. package/dist/docx/renderedPageBreakNormalization.js +2 -2
  109. package/dist/docx/rezip.d.ts +28 -2
  110. package/dist/docx/rezip.js +78 -9
  111. package/dist/docx/runConsolidator.d.ts +42 -2
  112. package/dist/docx/runConsolidator.js +60 -6
  113. package/dist/docx/runParser.d.ts +54 -18
  114. package/dist/docx/runParser.js +379 -295
  115. package/dist/docx/runPayload.d.ts +5 -0
  116. package/dist/docx/runPayload.js +4 -0
  117. package/dist/docx/sdtProperties.d.ts +39 -5
  118. package/dist/docx/sdtProperties.js +205 -84
  119. package/dist/docx/sdtPropertiesPatch.d.ts +5 -9
  120. package/dist/docx/sdtPropertiesPatch.js +68 -112
  121. package/dist/docx/sectionParser.d.ts +1 -2
  122. package/dist/docx/sectionParser.js +236 -240
  123. package/dist/docx/selectiveSave.js +3 -2
  124. package/dist/docx/selectiveXmlPatch.d.ts +21 -2
  125. package/dist/docx/selectiveXmlPatch.js +195 -99
  126. package/dist/docx/serializer/blockSdtSerializer.js +2 -96
  127. package/dist/docx/serializer/borderSerializer.d.ts +5 -5
  128. package/dist/docx/serializer/borderSerializer.js +10 -8
  129. package/dist/docx/serializer/documentSerializer.js +3 -0
  130. package/dist/docx/serializer/fontTableSerializer.js +31 -3
  131. package/dist/docx/serializer/headerFooterSerializer.js +3 -0
  132. package/dist/docx/serializer/markupRangeAttributes.d.ts +9 -1
  133. package/dist/docx/serializer/markupRangeAttributes.js +9 -1
  134. package/dist/docx/serializer/noteSerializer.js +3 -0
  135. package/dist/docx/serializer/numberingSerializer.d.ts +1 -6
  136. package/dist/docx/serializer/numberingSerializer.js +81 -79
  137. package/dist/docx/serializer/paragraphSerializer.d.ts +1 -9
  138. package/dist/docx/serializer/paragraphSerializer.js +88 -188
  139. package/dist/docx/serializer/runSerializer.d.ts +1 -5
  140. package/dist/docx/serializer/runSerializer.js +109 -59
  141. package/dist/docx/serializer/sdtPropertiesSerializer.d.ts +26 -0
  142. package/dist/docx/serializer/sdtPropertiesSerializer.js +111 -0
  143. package/dist/docx/serializer/sectionPropertiesSerializer.js +34 -45
  144. package/dist/docx/serializer/settingsSerializer.js +6 -4
  145. package/dist/docx/serializer/stylesSerializer.js +8 -11
  146. package/dist/docx/serializer/tableSerializer.js +268 -100
  147. package/dist/docx/serializer/textFormattingSerializer.d.ts +28 -4
  148. package/dist/docx/serializer/textFormattingSerializer.js +111 -101
  149. package/dist/docx/serializer/xmlUtils.d.ts +1 -1
  150. package/dist/docx/serializer/xmlUtils.js +1 -1
  151. package/dist/docx/server/createBilingualDocument.js +18 -16
  152. package/dist/docx/server/migrateYjsAttrSchema.js +3 -3
  153. package/dist/docx/settingsParser.js +7 -4
  154. package/dist/docx/shadingParser.d.ts +2 -1
  155. package/dist/docx/shadingParser.js +43 -7
  156. package/dist/docx/shapeParser.js +8 -3
  157. package/dist/docx/strictNames.d.ts +11 -0
  158. package/dist/docx/strictNames.gen.d.ts +45 -0
  159. package/dist/docx/strictNames.gen.js +50 -0
  160. package/dist/docx/strictNames.js +43 -0
  161. package/dist/docx/strictValueEncodings.gen.js +133 -131
  162. package/dist/docx/styleParser.js +17 -349
  163. package/dist/docx/tableParser.d.ts +10 -1
  164. package/dist/docx/tableParser.js +505 -181
  165. package/dist/docx/textBoxParser.d.ts +3 -1
  166. package/dist/docx/textBoxParser.js +18 -8
  167. package/dist/docx/themeColorAttribute.d.ts +13 -0
  168. package/dist/docx/themeColorAttribute.js +24 -0
  169. package/dist/docx/trackedMoveRangeNormalization.js +2 -1
  170. package/dist/docx/vmlImageParser.d.ts +13 -4
  171. package/dist/docx/vmlImageParser.js +74 -31
  172. package/dist/docx/vmlPreview.js +2 -2
  173. package/dist/docx/wrapPolygon.d.ts +30 -0
  174. package/dist/docx/wrapPolygon.js +70 -0
  175. package/dist/docx/xmlParser.d.ts +14 -1
  176. package/dist/docx/xmlParser.js +18 -2
  177. package/dist/fonts/embeddedFonts.js +3 -3
  178. package/dist/headless-layout.js +2 -0
  179. package/dist/i18n/messages/catalogs.gen.d.ts +68 -0
  180. package/dist/i18n/messages/catalogs.gen.js +102 -34
  181. package/dist/i18n/messages/messages.gen.d.ts +4 -0
  182. package/dist/internal/headlessRevisionResolution.js +9 -0
  183. package/dist/internal/pageBreakRunSourceDescendantIndex.js +3 -1
  184. package/dist/internal/paragraphFormattingSerialization.d.ts +20 -9
  185. package/dist/internal/paragraphFormattingSerialization.js +118 -83
  186. package/dist/layout-bridge/convert/footnoteLayout.d.ts +1 -0
  187. package/dist/layout-bridge/convert/footnoteLayout.js +1 -0
  188. package/dist/layout-bridge/convert/headerFooterLayout.d.ts +1 -0
  189. package/dist/layout-bridge/convert/headerFooterLayout.js +2 -0
  190. package/dist/layout-bridge/convert/toFlowBlocks.d.ts +17 -12
  191. package/dist/layout-bridge/convert/toFlowBlocks.js +177 -101
  192. package/dist/layout-engine/index.d.ts +2 -2
  193. package/dist/layout-engine/index.js +53 -17
  194. package/dist/layout-engine/measure/measureBlocks.d.ts +3 -0
  195. package/dist/layout-engine/measure/measureBlocks.js +6 -10
  196. package/dist/layout-engine/measure/tableCellGrid.js +2 -1
  197. package/dist/layout-engine/measure/tableFragmentBorderGeometry.js +2 -1
  198. package/dist/layout-engine/measure/tableInlinePlacement.js +2 -5
  199. package/dist/layout-engine/paragraphSequence.js +3 -2
  200. package/dist/layout-engine/renderedBreakReconciliation.js +2 -1
  201. package/dist/layout-engine/section-breaks.d.ts +49 -2
  202. package/dist/layout-engine/section-breaks.js +55 -4
  203. package/dist/layout-engine/types.d.ts +47 -17
  204. package/dist/layout-engine/types.js +16 -1
  205. package/dist/layout-painter/borderStroke.d.ts +18 -4
  206. package/dist/layout-painter/renderPage.js +6 -4
  207. package/dist/layout-painter/renderParagraph.d.ts +2 -1
  208. package/dist/layout-painter/renderParagraph.js +13 -26
  209. package/dist/layout-painter/renderTable.d.ts +4 -1
  210. package/dist/layout-painter/renderTable.js +22 -22
  211. package/dist/layout-painter/renderTextBox.js +5 -3
  212. package/dist/markdown/renderBlock.js +3 -1
  213. package/dist/markdown/renderRuns.js +7 -2
  214. package/dist/markdown/renderTable.js +2 -1
  215. package/dist/model.d.ts +3 -3
  216. package/dist/model.js +2 -2
  217. package/dist/paged-layout/sectionBlockWidths.d.ts +3 -0
  218. package/dist/paged-layout/sectionBlockWidths.js +26 -4
  219. package/dist/prosemirror/attrs/index.d.ts +22 -4
  220. package/dist/prosemirror/attrs/index.js +498 -60
  221. package/dist/prosemirror/bookmarkBoundaryAttrs.d.ts +9 -1
  222. package/dist/prosemirror/bookmarkBoundaryAttrs.js +22 -3
  223. package/dist/prosemirror/commands/comments.js +68 -53
  224. package/dist/prosemirror/commands/contentControls.js +24 -19
  225. package/dist/prosemirror/commands/image.d.ts +1 -1
  226. package/dist/prosemirror/commands/image.js +4 -1
  227. package/dist/prosemirror/commands/paragraph.d.ts +2 -1
  228. package/dist/prosemirror/commands/propertyChangeScope.d.ts +12 -4
  229. package/dist/prosemirror/commands/propertyChangeScope.js +22 -4
  230. package/dist/prosemirror/commands/sectionBreak.d.ts +33 -1
  231. package/dist/prosemirror/commands/sectionBreak.js +187 -11
  232. package/dist/prosemirror/conversion/fromProseDoc.d.ts +18 -2
  233. package/dist/prosemirror/conversion/fromProseDoc.js +330 -183
  234. package/dist/prosemirror/conversion/index.d.ts +2 -2
  235. package/dist/prosemirror/conversion/preservedSinkCarriers.d.ts +39 -0
  236. package/dist/prosemirror/conversion/preservedSinkCarriers.js +19 -0
  237. package/dist/prosemirror/conversion/runShadingMark.js +14 -1
  238. package/dist/prosemirror/conversion/sdtAttrs.d.ts +10 -1
  239. package/dist/prosemirror/conversion/sdtAttrs.js +19 -5
  240. package/dist/prosemirror/conversion/toProseDoc.js +371 -141
  241. package/dist/prosemirror/emptyRangeAnchor.d.ts +53 -0
  242. package/dist/prosemirror/emptyRangeAnchor.js +158 -0
  243. package/dist/prosemirror/extensions/StarterKit.js +8 -2
  244. package/dist/prosemirror/extensions/core/DocExtension.js +1 -1
  245. package/dist/prosemirror/extensions/core/ParagraphExtension.js +19 -15
  246. package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +3 -2
  247. package/dist/prosemirror/extensions/features/ListExtension.js +43 -24
  248. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +4 -3
  249. package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +3 -3
  250. package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +5 -5
  251. package/dist/prosemirror/extensions/features/pasteCleanup.d.ts +3 -1
  252. package/dist/prosemirror/extensions/features/pasteCleanup.js +56 -2
  253. package/dist/prosemirror/extensions/features/pastedHeadingStyles.js +5 -4
  254. package/dist/prosemirror/extensions/markRegistry.d.ts +26 -2
  255. package/dist/prosemirror/extensions/markRegistry.js +73 -10
  256. package/dist/prosemirror/extensions/marks/InlineWrapperExtension.js +17 -3
  257. package/dist/prosemirror/extensions/marks/RunIdentityExtension.d.ts +26 -0
  258. package/dist/prosemirror/extensions/marks/RunIdentityExtension.js +134 -0
  259. package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.js +2 -1
  260. package/dist/prosemirror/extensions/marks/UnderlineExtension.js +12 -18
  261. package/dist/prosemirror/extensions/marks/markUtils.js +2 -1
  262. package/dist/prosemirror/extensions/nodes/BlockBookmarkBoundaryExtension.d.ts +29 -0
  263. package/dist/prosemirror/extensions/nodes/BlockBookmarkBoundaryExtension.js +46 -0
  264. package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +4 -3
  265. package/dist/prosemirror/extensions/nodes/BlockSdtExtension.js +18 -13
  266. package/dist/prosemirror/extensions/nodes/BookmarkBoundaryExtension.js +28 -53
  267. package/dist/prosemirror/extensions/nodes/CommentReferenceExtension.js +10 -0
  268. package/dist/prosemirror/extensions/nodes/ImageExtension.js +8 -1
  269. package/dist/prosemirror/extensions/nodes/MoveRangeBoundaryExtension.d.ts +11 -0
  270. package/dist/prosemirror/extensions/nodes/MoveRangeBoundaryExtension.js +43 -0
  271. package/dist/prosemirror/extensions/nodes/RangeAnchorExtension.d.ts +13 -0
  272. package/dist/prosemirror/extensions/nodes/RangeAnchorExtension.js +65 -0
  273. package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +3 -1
  274. package/dist/prosemirror/extensions/nodes/SdtExtension.js +22 -16
  275. package/dist/prosemirror/extensions/nodes/ShapeExtension.js +4 -0
  276. package/dist/prosemirror/extensions/nodes/TableExtension.js +141 -123
  277. package/dist/prosemirror/extensions/nodes/TextBoxExtension.js +4 -0
  278. package/dist/prosemirror/extensions/nodes/bookmarkBoundaryDom.d.ts +23 -0
  279. package/dist/prosemirror/extensions/nodes/bookmarkBoundaryDom.js +57 -0
  280. package/dist/prosemirror/extensions/types.d.ts +12 -3
  281. package/dist/prosemirror/index.d.ts +4 -2
  282. package/dist/prosemirror/index.js +2 -1
  283. package/dist/prosemirror/inlineWrapperStack.js +20 -3
  284. package/dist/prosemirror/listMarker.d.ts +2 -2
  285. package/dist/prosemirror/listMarker.js +7 -8
  286. package/dist/prosemirror/listRenderingAttrs.js +11 -1
  287. package/dist/prosemirror/listState.d.ts +62 -0
  288. package/dist/prosemirror/listState.js +49 -0
  289. package/dist/prosemirror/moveRangeBoundaryAttrs.d.ts +13 -0
  290. package/dist/prosemirror/moveRangeBoundaryAttrs.js +114 -0
  291. package/dist/prosemirror/numberedRefFields.js +4 -4
  292. package/dist/prosemirror/numberingAttr.d.ts +55 -0
  293. package/dist/prosemirror/numberingAttr.js +74 -0
  294. package/dist/prosemirror/outlineLevelAttr.d.ts +29 -0
  295. package/dist/prosemirror/outlineLevelAttr.js +42 -0
  296. package/dist/prosemirror/paragraphFormattingProvenance.d.ts +9 -0
  297. package/dist/prosemirror/paragraphFormattingProvenance.js +4 -1
  298. package/dist/prosemirror/plugins/selectionTracker.d.ts +3 -6
  299. package/dist/prosemirror/plugins/selectionTracker.js +3 -10
  300. package/dist/prosemirror/rangeAnchorAttrs.d.ts +14 -0
  301. package/dist/prosemirror/rangeAnchorAttrs.js +101 -0
  302. package/dist/prosemirror/replacedAnnotations.d.ts +1 -1
  303. package/dist/prosemirror/replacedAnnotations.js +24 -6
  304. package/dist/prosemirror/revisionCarriers.d.ts +86 -2
  305. package/dist/prosemirror/revisionCarriers.js +86 -60
  306. package/dist/prosemirror/runFormattingInlineCarriers.d.ts +2 -0
  307. package/dist/prosemirror/runFormattingInlineCarriers.js +2 -0
  308. package/dist/prosemirror/runIdentity.d.ts +28 -0
  309. package/dist/prosemirror/runIdentity.js +36 -0
  310. package/dist/prosemirror/runStyleFormatting.js +1 -1
  311. package/dist/prosemirror/schema/index.d.ts +2 -2
  312. package/dist/prosemirror/schema/marks.d.ts +23 -4
  313. package/dist/prosemirror/schema/nodes.d.ts +220 -24
  314. package/dist/prosemirror/sectionCarrier.d.ts +37 -0
  315. package/dist/prosemirror/sectionCarrier.js +40 -0
  316. package/dist/prosemirror/selectionState.d.ts +3 -0
  317. package/dist/prosemirror/selectionState.js +4 -1
  318. package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +5 -4
  319. package/dist/prosemirror/styles/resolvedStyleAttrs.js +15 -13
  320. package/dist/prosemirror/tableResize.js +5 -6
  321. package/dist/prosemirror/trackedRunInlineAtoms.d.ts +2 -0
  322. package/dist/prosemirror/trackedRunInlineAtoms.js +2 -0
  323. package/dist/prosemirror/utils/extractTrackedChanges.d.ts +10 -11
  324. package/dist/prosemirror/utils/extractTrackedChanges.js +109 -92
  325. package/dist/prosemirror/validation.js +17 -6
  326. package/dist/prosemirror/yjsDocumentMetadata.d.ts +2 -2
  327. package/dist/prosemirror/yjsDocumentMetadata.js +428 -7
  328. package/dist/prosemirror/zeroWidthAnchors.js +4 -0
  329. package/dist/style-sets/extract.js +4 -4
  330. package/dist/style-sets/stellaStyle.js +36 -23
  331. package/dist/types/colors.d.ts +2 -2
  332. package/dist/types/content.d.ts +2 -2
  333. package/dist/types/documentEnumValues.d.ts +53 -26
  334. package/dist/types/documentEnumValues.js +72 -174
  335. package/dist/types/formatting.d.ts +2 -2
  336. package/dist/types/index.d.ts +9 -2
  337. package/dist/utils/borderCss.d.ts +246 -0
  338. package/dist/utils/borderCss.js +325 -0
  339. package/dist/utils/colorResolver.d.ts +4 -3
  340. package/dist/utils/colorResolver.js +45 -76
  341. package/dist/utils/createDocument.js +24 -6
  342. package/dist/utils/findReplace.js +52 -10
  343. package/dist/utils/formatToStyle.d.ts +84 -2
  344. package/dist/utils/formatToStyle.js +133 -52
  345. package/dist/utils/headingCollector.js +3 -2
  346. package/dist/utils/mergeDocumentContent.js +5 -3
  347. package/dist/utils/paragraphFormattingMerge.js +27 -6
  348. package/dist/utils/replaceText.js +1 -1
  349. package/dist/utils/tableOperations.d.ts +5 -3
  350. package/dist/utils/tableOperations.js +14 -1
  351. package/dist/utils/tablePlacement.d.ts +7 -0
  352. package/dist/utils/tablePlacement.js +14 -0
  353. package/dist/utils/textDirectionFlow.d.ts +15 -0
  354. package/dist/utils/textDirectionFlow.js +38 -0
  355. package/dist/utils/textFormattingMerge.js +16 -4
  356. package/package.json +10 -10
  357. package/dist/ai-edits/__fixtures__/paragraphs.d.ts +0 -17
  358. package/dist/ai-edits/__fixtures__/paragraphs.js +0 -33
  359. package/dist/compare/__fixtures__/body-sequence.d.ts +0 -119
  360. package/dist/compare/__fixtures__/body-sequence.js +0 -225
  361. package/dist/compare/__fixtures__/nested-table.d.ts +0 -16
  362. package/dist/compare/__fixtures__/nested-table.js +0 -50
  363. package/dist/compare/__fixtures__/numbered-list.d.ts +0 -34
  364. package/dist/compare/__fixtures__/numbered-list.js +0 -85
  365. package/dist/docx/bookmarkPlacement.d.ts +0 -9
  366. package/dist/docx/bookmarkPlacement.js +0 -52
  367. package/dist/fonts/embeddedFontTable.d.ts +0 -45
  368. package/dist/fonts/embeddedFontTable.js +0 -80
  369. package/dist/prosemirror/extensions/marks/PageBreakRunOwnerExtension.d.ts +0 -13
  370. package/dist/prosemirror/extensions/marks/PageBreakRunOwnerExtension.js +0 -39
@@ -1,3 +1,4 @@
1
+ import { ParagraphAttrsPatch } from "../schema/nodes.js";
1
2
  import { ResolvedParagraphStyle } from "./styleResolver.js";
2
3
  import { NumberingMap } from "../../docx/numberingParser.js";
3
4
  //#region src/prosemirror/styles/resolvedStyleAttrs.d.ts
@@ -11,7 +12,7 @@ type ResolvedStyleIdentity = {
11
12
  * style's properties (e.g. a heading's spacing) never leak through. Returns
12
13
  * a partial attrs object to merge over the paragraph's existing attrs.
13
14
  */
14
- declare function paragraphAttrsFromResolvedStyle(resolved: ResolvedParagraphStyle, identity: ResolvedStyleIdentity): Record<string, unknown>;
15
+ declare function paragraphAttrsFromResolvedStyle(resolved: ResolvedParagraphStyle, identity: ResolvedStyleIdentity): ParagraphAttrsPatch;
15
16
  /**
16
17
  * The list attrs a style's `w:pPr/w:numPr` controls (numbering reference plus
17
18
  * the baked marker-rendering attrs that `toProseDoc` normally derives from
@@ -30,18 +31,18 @@ declare function paragraphAttrsFromResolvedStyle(resolved: ResolvedParagraphStyl
30
31
  * paragraph's inline LISTNUM fields, which the picker has no view of. A
31
32
  * subsequent save + reload re-derives them from the document content.
32
33
  */
33
- declare function listAttrsFromResolvedStyle(resolved: ResolvedParagraphStyle, numbering: NumberingMap | null | undefined): Record<string, unknown> | null;
34
+ declare function listAttrsFromResolvedStyle(resolved: ResolvedParagraphStyle, numbering: NumberingMap | null | undefined): ParagraphAttrsPatch | null;
34
35
  /** Project one resolved numbering level into the complete editor attr group. */
35
36
  declare function listAttrsFromNumbering(numPr: {
36
37
  numId: number;
37
38
  ilvl: number;
38
- }, numbering: NumberingMap | null | undefined): Record<string, unknown>;
39
+ }, numbering: NumberingMap | null | undefined): ParagraphAttrsPatch;
39
40
  /** Recompute every level-dependent attr when a paragraph changes list level. */
40
41
  declare function listLevelAttrPatch(attrs: {
41
42
  listImplicitChildLevelAdvances?: number | null;
42
43
  }, numPr: {
43
44
  numId: number;
44
45
  ilvl: number;
45
- }, numbering: NumberingMap | null | undefined): Record<string, unknown>;
46
+ }, numbering: NumberingMap | null | undefined): ParagraphAttrsPatch;
46
47
  //#endregion
47
48
  export { listAttrsFromNumbering, listAttrsFromResolvedStyle, listLevelAttrPatch, paragraphAttrsFromResolvedStyle };
@@ -1,9 +1,10 @@
1
1
  import { computeListRendering, numberingLevelHasMarkerSlot } from "../../docx/numberingParser.js";
2
- import { isNumberingReference } from "../../docx/numberingReference.js";
2
+ import { paragraphNumberingReference } from "../../docx/numberingReference.js";
3
3
  import { tableOfContentsStyleLevel } from "../../utils/tableOfContentsStyle.js";
4
4
  import { setAutospacingBaseValue } from "../autospacingBase.js";
5
5
  import { CLEARED_LIST_RENDERING_ATTRS } from "../listMarker.js";
6
6
  import { listRenderingAttrPatch } from "../listRenderingAttrs.js";
7
+ import { paragraphNumberingAttr } from "../numberingAttr.js";
7
8
  import { styleResolvedParagraphFormatting } from "../paragraphFormattingProvenance.js";
8
9
  //#region src/prosemirror/styles/resolvedStyleAttrs.ts
9
10
  /**
@@ -77,22 +78,23 @@ function autospacingBaseFromResolvedParagraphFormatting(ppr) {
77
78
  */
78
79
  function listAttrsFromResolvedStyle(resolved, numbering) {
79
80
  const numPr = resolved.paragraphFormatting?.numPr;
80
- if (!numPr || !isNumberingReference(numPr.numId)) return null;
81
+ if (numPr?.kind !== "reference") return null;
82
+ const { numId, ilvl = 0 } = numPr;
81
83
  const attrs = listAttrsFromNumbering({
82
- numId: numPr.numId,
83
- ilvl: numPr.ilvl ?? 0
84
+ numId,
85
+ ilvl
84
86
  }, numbering);
85
- const level = numbering?.getLevel(numPr.numId, numPr.ilvl ?? 0);
86
- attrs["numPrFromStyle"] = {
87
- numId: numPr.numId,
88
- ilvl: numPr.ilvl ?? 0
89
- };
87
+ const level = numbering?.getLevel(numId, ilvl);
88
+ attrs.numPrFromStyle = paragraphNumberingAttr(paragraphNumberingReference({
89
+ numId,
90
+ ilvl
91
+ }));
90
92
  const ppr = resolved.paragraphFormatting;
91
93
  if (level?.pPr) {
92
- if (ppr?.indentLeft === void 0 && level.pPr.indentLeft !== void 0) attrs["indentLeft"] = level.pPr.indentLeft;
94
+ if (ppr?.indentLeft === void 0 && level.pPr.indentLeft !== void 0) attrs.indentLeft = level.pPr.indentLeft;
93
95
  if (!(ppr?.indentFirstLine !== void 0 || ppr?.hangingIndent !== void 0) && numberingLevelHasMarkerSlot(level)) {
94
- if (level.pPr.indentFirstLine !== void 0) attrs["indentFirstLine"] = level.pPr.indentFirstLine;
95
- if (level.pPr.hangingIndent !== void 0) attrs["hangingIndent"] = level.pPr.hangingIndent;
96
+ if (level.pPr.indentFirstLine !== void 0) attrs.indentFirstLine = level.pPr.indentFirstLine;
97
+ if (level.pPr.hangingIndent !== void 0) attrs.hangingIndent = level.pPr.hangingIndent;
96
98
  }
97
99
  }
98
100
  return attrs;
@@ -106,7 +108,7 @@ function listAttrsFromNumbering(numPr, numbering) {
106
108
  const rendering = numbering ? computeListRendering(targetNumPr, numbering) : null;
107
109
  return {
108
110
  ...CLEARED_LIST_RENDERING_ATTRS,
109
- numPr: targetNumPr,
111
+ numPr: paragraphNumberingAttr(paragraphNumberingReference(targetNumPr)),
110
112
  ...rendering && listRenderingAttrPatch(rendering)
111
113
  };
112
114
  }
@@ -1,3 +1,4 @@
1
+ import { mergeTableCellAttrs } from "./attrs/index.js";
1
2
  //#region src/prosemirror/tableResize.ts
2
3
  /** 1px ≈ 15 twips at 96dpi (20 twips/pt × 72pt/in ÷ 96px/in). */
3
4
  const TWIPS_PER_PIXEL = 15;
@@ -88,12 +89,11 @@ function commitColumnResize(view, opts) {
88
89
  const colspan = cell.attrs["colspan"] || 1;
89
90
  if (cellColIdx === colIdx || cellColIdx === colIdx + 1) {
90
91
  const newWidth = cellColIdx === colIdx ? newLeft : newRight;
91
- tr.setNodeMarkup(tr.mapping.map(cellOffset), void 0, {
92
- ...cell.attrs,
92
+ tr.setNodeMarkup(tr.mapping.map(cellOffset), void 0, mergeTableCellAttrs(cell, {
93
93
  width: newWidth,
94
94
  widthType: "dxa",
95
95
  colwidth: null
96
- });
96
+ }));
97
97
  }
98
98
  cellOffset += cell.nodeSize;
99
99
  cellColIdx += colspan;
@@ -145,12 +145,11 @@ function commitRightEdgeResize(view, opts) {
145
145
  let cellColIdx = 0;
146
146
  row.forEach((cell) => {
147
147
  const colspan = cell.attrs["colspan"] || 1;
148
- if (cellColIdx === colIdx) tr.setNodeMarkup(tr.mapping.map(cellOffset), void 0, {
149
- ...cell.attrs,
148
+ if (cellColIdx === colIdx) tr.setNodeMarkup(tr.mapping.map(cellOffset), void 0, mergeTableCellAttrs(cell, {
150
149
  width: newWidth,
151
150
  widthType: "dxa",
152
151
  colwidth: null
153
- });
152
+ }));
154
153
  cellOffset += cell.nodeSize;
155
154
  cellColIdx += colspan;
156
155
  });
@@ -16,8 +16,10 @@ declare const TRACKED_RUN_INLINE_ATOM_DISPOSITIONS: Readonly<{
16
16
  readonly hardBreak: "carry";
17
17
  readonly image: "carry";
18
18
  readonly math: "carry";
19
+ readonly moveRangeBoundary: "transparent";
19
20
  readonly pageBreakRun: "page-break-carrier";
20
21
  readonly preservedXml: "carry";
22
+ readonly rangeAnchor: "transparent";
21
23
  readonly renderedPageBreak: "transparent";
22
24
  readonly shape: "carry";
23
25
  readonly structuredField: "carry";
@@ -15,8 +15,10 @@ const TRACKED_RUN_INLINE_ATOM_DISPOSITIONS = Object.freeze({
15
15
  hardBreak: "carry",
16
16
  image: "carry",
17
17
  math: "carry",
18
+ moveRangeBoundary: "transparent",
18
19
  pageBreakRun: "page-break-carrier",
19
20
  preservedXml: "carry",
21
+ rangeAnchor: "transparent",
20
22
  renderedPageBreak: "transparent",
21
23
  shape: "carry",
22
24
  structuredField: "carry",
@@ -1,3 +1,4 @@
1
+ import { PropertyRevisionCarrier } from "../revisionCarriers.js";
1
2
  import { EditorState } from "prosemirror-state";
2
3
  //#region src/prosemirror/utils/extractTrackedChanges.d.ts
3
4
  /**
@@ -20,18 +21,16 @@ type TrackedChangeEntry = {
20
21
  * - `paragraphMarkInsertion` / `paragraphMarkDeletion` — Enter /
21
22
  * Backspace produced a tracked paragraph break (`<w:pPr><w:rPr><w:ins/>` /
22
23
  * `<w:del/>`).
23
- * - `paragraphPropertiesChanged` — formatting (alignment, spacing,
24
- * etc.) on the paragraph was changed (`<w:pPrChange>`).
25
- * - `rowInserted` / `rowDeleted` / `rowPropertiesChanged` — table
26
- * row authored / removed / formatted (`<w:trPr><w:ins/>` / `<w:del/>`
27
- * / `<w:trPrChange>`).
28
- * - `cellInserted` / `cellDeleted` / `cellMerged` /
29
- * `cellPropertiesChanged` — per-cell revisions
30
- * (`<w:cellIns>` / `<w:cellDel>` / `<w:cellMerge>` / `<w:tcPrChange>`).
31
- * - `tablePropertiesChanged` — table-level formatting
32
- * (`<w:tblPrChange>`).
24
+ * - `rowInserted` / `rowDeleted` — table row authored / removed
25
+ * (`<w:trPr><w:ins/>` / `<w:del/>`).
26
+ * - `cellInserted` / `cellDeleted` / `cellMerged` — per-cell structural
27
+ * revisions (`<w:cellIns>` / `<w:cellDel>` / `<w:cellMerge>`).
28
+ * - {@link PropertyRevisionCarrier} — a tracked property revision carried on
29
+ * a node's attrs (`<w:pPrChange>`, `<w:sectPrChange>`, `<w:tblPrChange>`,
30
+ * `<w:tblPrExChange>`, `<w:trPrChange>`, `<w:tcPrChange>`). The set comes
31
+ * from the site table, not from a list kept here.
33
32
  */
34
- type: "insertion" | "deletion" | "replacement" | "runPropertiesChanged" | "paragraphMarkInsertion" | "paragraphMarkDeletion" | "paragraphPropertiesChanged" | "rowInserted" | "rowDeleted" | "rowPropertiesChanged" | "cellInserted" | "cellDeleted" | "cellMerged" | "cellPropertiesChanged" | "tableInserted" | "tableDeleted" | "tablePropertiesChanged";
33
+ type: "insertion" | "deletion" | "replacement" | "runPropertiesChanged" | "paragraphMarkInsertion" | "paragraphMarkDeletion" | "rowInserted" | "rowDeleted" | "cellInserted" | "cellDeleted" | "cellMerged" | "tableInserted" | "tableDeleted" | PropertyRevisionCarrier;
35
34
  /**
36
35
  * Affected text. For inline types this is the run's text; for
37
36
  * structural types it's the surrounding paragraph / cell content
@@ -1,4 +1,5 @@
1
1
  import { expectRunPropertyChangeMarkAttrs } from "../attrs/index.js";
2
+ import { nodePropertyRevisionSites, propertyRevisionMetadata, propertyRevisionRecords } from "../revisionCarriers.js";
2
3
  import { getTableCellMergeChange } from "../tableCellMergeRevision.js";
3
4
  //#region src/prosemirror/utils/extractTrackedChanges.ts
4
5
  const EMPTY_RESULT = {
@@ -71,19 +72,6 @@ function extractTrackedChanges(state) {
71
72
  to: pos + node.nodeSize,
72
73
  revisionId: del.revisionId
73
74
  });
74
- const pPrChange = node.attrs["pPrChange"];
75
- if (Array.isArray(pPrChange)) for (const entry of pPrChange) {
76
- if (!entry?.info || typeof entry.info.id !== "number") continue;
77
- raw.push({
78
- type: "paragraphPropertiesChanged",
79
- text: node.textContent || "",
80
- author: entry.info.author || "",
81
- date: entry.info.date ?? void 0,
82
- from: pos,
83
- to: pos + node.nodeSize,
84
- revisionId: entry.info.id
85
- });
86
- }
87
75
  }
88
76
  if (node.type.name === "tableRow") {
89
77
  const trIns = node.attrs["trIns"];
@@ -122,19 +110,6 @@ function extractTrackedChanges(state) {
122
110
  entry
123
111
  });
124
112
  }
125
- const trPrChange = node.attrs["trPrChange"];
126
- if (Array.isArray(trPrChange)) for (const entry of trPrChange) {
127
- if (!entry?.info || typeof entry.info.id !== "number") continue;
128
- raw.push({
129
- type: "rowPropertiesChanged",
130
- text: node.textContent || "",
131
- author: entry.info.author || "",
132
- date: entry.info.date ?? void 0,
133
- from: pos,
134
- to: pos + node.nodeSize,
135
- revisionId: entry.info.id
136
- });
137
- }
138
113
  }
139
114
  if (node.type.name === "tableCell" || node.type.name === "tableHeader") {
140
115
  const cellMarker = node.attrs["cellMarker"];
@@ -168,34 +143,8 @@ function extractTrackedChanges(state) {
168
143
  revisionId: change.info.id
169
144
  });
170
145
  }
171
- const tcPrChange = node.attrs["tcPrChange"];
172
- if (Array.isArray(tcPrChange)) for (const entry of tcPrChange) {
173
- if (!entry?.info || typeof entry.info.id !== "number") continue;
174
- raw.push({
175
- type: "cellPropertiesChanged",
176
- text: node.textContent || "",
177
- author: entry.info.author || "",
178
- date: entry.info.date ?? void 0,
179
- from: pos,
180
- to: pos + node.nodeSize,
181
- revisionId: entry.info.id
182
- });
183
- }
184
146
  }
185
147
  if (node.type.name === "table") {
186
- const tblPrChange = node.attrs["tblPrChange"];
187
- if (Array.isArray(tblPrChange)) for (const entry of tblPrChange) {
188
- if (!entry?.info || typeof entry.info.id !== "number") continue;
189
- raw.push({
190
- type: "tablePropertiesChanged",
191
- text: "",
192
- author: entry.info.author || "",
193
- date: entry.info.date ?? void 0,
194
- from: pos,
195
- to: pos + node.nodeSize,
196
- revisionId: entry.info.id
197
- });
198
- }
199
148
  const firstRow = node.firstChild;
200
149
  const firstIns = firstRow?.attrs["trIns"];
201
150
  const firstDel = firstRow?.attrs["trDel"];
@@ -239,6 +188,19 @@ function extractTrackedChanges(state) {
239
188
  }
240
189
  }
241
190
  }
191
+ for (const site of nodePropertyRevisionSites(node.type.name)) for (const record of propertyRevisionRecords(node, site)) {
192
+ const metadata = propertyRevisionMetadata(record.info);
193
+ if (!metadata) continue;
194
+ raw.push({
195
+ type: site.carrier,
196
+ text: node.textContent || "",
197
+ author: metadata.author,
198
+ date: metadata.date ?? void 0,
199
+ from: pos,
200
+ to: pos + node.nodeSize,
201
+ revisionId: metadata.id
202
+ });
203
+ }
242
204
  if (!node.isInline) return;
243
205
  let inlineText;
244
206
  if (node.isText) inlineText = node.text || "";
@@ -293,39 +255,81 @@ function extractTrackedChanges(state) {
293
255
  const rid = meta.revisions.values().next().value;
294
256
  commentToRevision.set(cid, rid);
295
257
  }
296
- const STRUCTURAL_PRIORITY = {
297
- tableInserted: 6,
298
- tableDeleted: 6,
299
- tablePropertiesChanged: 5,
300
- rowInserted: 4,
301
- rowDeleted: 4,
302
- rowPropertiesChanged: 4,
303
- cellInserted: 3,
304
- cellDeleted: 3,
305
- cellMerged: 3,
306
- cellPropertiesChanged: 3,
307
- paragraphMarkInsertion: 2,
308
- paragraphMarkDeletion: 2,
309
- paragraphPropertiesChanged: 2,
310
- runPropertiesChanged: 1
311
- };
312
- const STRUCTURAL_FAMILY_BY_TYPE = {
313
- tableInserted: "insertion",
314
- rowInserted: "insertion",
315
- cellInserted: "insertion",
316
- paragraphMarkInsertion: "insertion",
317
- tableDeleted: "deletion",
318
- rowDeleted: "deletion",
319
- cellDeleted: "deletion",
320
- paragraphMarkDeletion: "deletion",
321
- tablePropertiesChanged: "properties",
322
- rowPropertiesChanged: "properties",
323
- cellPropertiesChanged: "properties",
324
- paragraphPropertiesChanged: "properties",
325
- runPropertiesChanged: "properties",
326
- cellMerged: "merge"
258
+ const STRUCTURAL_COALESCING = {
259
+ tableInserted: {
260
+ type: "coalesce",
261
+ family: "insertion",
262
+ priority: 6
263
+ },
264
+ tableDeleted: {
265
+ type: "coalesce",
266
+ family: "deletion",
267
+ priority: 6
268
+ },
269
+ tablePropertiesChanged: {
270
+ type: "coalesce",
271
+ family: "properties",
272
+ priority: 5
273
+ },
274
+ tablePropertyExceptionsChanged: { type: "separate" },
275
+ rowInserted: {
276
+ type: "coalesce",
277
+ family: "insertion",
278
+ priority: 4
279
+ },
280
+ rowDeleted: {
281
+ type: "coalesce",
282
+ family: "deletion",
283
+ priority: 4
284
+ },
285
+ rowPropertiesChanged: {
286
+ type: "coalesce",
287
+ family: "properties",
288
+ priority: 4
289
+ },
290
+ cellInserted: {
291
+ type: "coalesce",
292
+ family: "insertion",
293
+ priority: 3
294
+ },
295
+ cellDeleted: {
296
+ type: "coalesce",
297
+ family: "deletion",
298
+ priority: 3
299
+ },
300
+ cellMerged: {
301
+ type: "coalesce",
302
+ family: "merge",
303
+ priority: 3
304
+ },
305
+ cellPropertiesChanged: {
306
+ type: "coalesce",
307
+ family: "properties",
308
+ priority: 3
309
+ },
310
+ paragraphMarkInsertion: {
311
+ type: "coalesce",
312
+ family: "insertion",
313
+ priority: 2
314
+ },
315
+ paragraphMarkDeletion: {
316
+ type: "coalesce",
317
+ family: "deletion",
318
+ priority: 2
319
+ },
320
+ paragraphPropertiesChanged: {
321
+ type: "coalesce",
322
+ family: "properties",
323
+ priority: 2
324
+ },
325
+ sectionPropertiesChanged: { type: "separate" },
326
+ runPropertiesChanged: {
327
+ type: "coalesce",
328
+ family: "properties",
329
+ priority: 1
330
+ }
327
331
  };
328
- const isStructuralType = (t) => t in STRUCTURAL_PRIORITY;
332
+ const isStructuralType = (type) => type !== "insertion" && type !== "deletion" && type !== "replacement";
329
333
  const slotByKey = /* @__PURE__ */ new Map();
330
334
  const ordered = [];
331
335
  const mergeIds = (survivor, dropped) => {
@@ -340,18 +344,31 @@ function extractTrackedChanges(state) {
340
344
  ordered.push(entry);
341
345
  continue;
342
346
  }
343
- const key = `${STRUCTURAL_FAMILY_BY_TYPE[entry.type] ?? entry.type}|${entry.author}|${entry.date ?? ""}`;
347
+ const policy = STRUCTURAL_COALESCING[entry.type];
348
+ if (policy.type === "separate") {
349
+ ordered.push(entry);
350
+ continue;
351
+ }
352
+ const key = `${policy.family}|${entry.author}|${entry.date ?? ""}`;
344
353
  const slot = slotByKey.get(key);
345
354
  if (slot === void 0) {
346
- slotByKey.set(key, ordered.push(entry) - 1);
355
+ slotByKey.set(key, {
356
+ index: ordered.push(entry) - 1,
357
+ priority: policy.priority
358
+ });
347
359
  continue;
348
360
  }
349
- const existing = ordered[slot];
350
- if ((STRUCTURAL_PRIORITY[entry.type] ?? 0) > (STRUCTURAL_PRIORITY[existing.type] ?? 0)) ordered[slot] = {
351
- ...entry,
352
- coalescedRevisionIds: mergeIds(entry, existing)
353
- };
354
- else ordered[slot] = {
361
+ const existing = ordered[slot.index];
362
+ if (policy.priority > slot.priority) {
363
+ ordered[slot.index] = {
364
+ ...entry,
365
+ coalescedRevisionIds: mergeIds(entry, existing)
366
+ };
367
+ slotByKey.set(key, {
368
+ index: slot.index,
369
+ priority: policy.priority
370
+ });
371
+ } else ordered[slot.index] = {
355
372
  ...existing,
356
373
  coalescedRevisionIds: mergeIds(existing, entry)
357
374
  };
@@ -1,6 +1,9 @@
1
- import { readBlockSdtAttrs, readCharacterSpacingMarkAttrs, readCharacterStyleMarkAttrs, readCommentMarkAttrs, readEmphasisMarkAttrs, readFieldAttrs, readFontFamilyMarkAttrs, readFontSizeMarkAttrs, readFootnoteRefMarkAttrs, readHardBreakAttrs, readHighlightMarkAttrs, readHyperlinkMarkAttrs, readImageAttrs, readInlineWrapperMarkAttrs, readLanguageMarkAttrs, readMathAttrs, readPageBreakRunAttrs, readPageBreakRunOwnerMarkAttrs, readParagraphAttrs, readPreservedBlockAttrs, readPreservedXmlAttrs, readRunFormattingOverrideMarkAttrs, readRunPropertyChangeMarkAttrs, readRunShadingMarkAttrs, readSdtAttrs, readShapeAttrs, readStrikeMarkAttrs, readSymbolAttrs, readTabAttrs, readTableAttrs, readTableCellAttrs, readTableRowAttrs, readTextBoxAttrs, readTextColorMarkAttrs, readTextEffectMarkAttrs, readTrackedChangeMarkAttrs, readUnderlineMarkAttrs } from "./attrs/index.js";
1
+ import { readBlockSdtAttrs, readCharacterSpacingMarkAttrs, readCharacterStyleMarkAttrs, readCommentMarkAttrs, readEmphasisMarkAttrs, readFieldAttrs, readFontFamilyMarkAttrs, readFontSizeMarkAttrs, readFootnoteRefMarkAttrs, readHardBreakAttrs, readHighlightMarkAttrs, readHyperlinkMarkAttrs, readImageAttrs, readInlineWrapperMarkAttrs, readLanguageMarkAttrs, readMathAttrs, readPageBreakRunAttrs, readParagraphAttrs, readPreservedBlockAttrs, readPreservedXmlAttrs, readRunFormattingOverrideMarkAttrs, readRunIdentityMarkAttrs, readRunPropertyChangeMarkAttrs, readRunShadingMarkAttrs, readSdtAttrs, readShapeAttrs, readStrikeMarkAttrs, readSymbolAttrs, readTabAttrs, readTableAttrs, readTableCellAttrs, readTableRowAttrs, readTextBoxAttrs, readTextColorMarkAttrs, readTextEffectMarkAttrs, readTrackedChangeMarkAttrs, readUnderlineMarkAttrs } from "./attrs/index.js";
2
2
  import { readBookmarkBoundaryAttrs } from "./bookmarkBoundaryAttrs.js";
3
3
  import { readCommentReferenceAttrs } from "./commentReferenceAttrs.js";
4
+ import { INLINE_WRAPPER_MARK_NAME } from "./extensions/marks/InlineWrapperExtension.js";
5
+ import { readMoveRangeBoundaryAttrs } from "./moveRangeBoundaryAttrs.js";
6
+ import { readRangeAnchorAttrs } from "./rangeAnchorAttrs.js";
4
7
  import { readTextBoxAnchorAttrs } from "./textBoxAnchorAttrs.js";
5
8
  //#region src/prosemirror/validation.ts
6
9
  var ProseMirrorDocumentValidationError = class extends Error {
@@ -84,7 +87,7 @@ const validateBookmarkBoundaryStructure = (doc, issues) => {
84
87
  path: bookmarkPath
85
88
  });
86
89
  }
87
- if (node.type.name === "bookmarkBoundary") {
90
+ if (node.type.name === "bookmarkBoundary" || node.type.name === "blockBookmarkBoundary") {
88
91
  const result = readBookmarkBoundaryAttrs(node);
89
92
  if (result.ok) {
90
93
  const attrs = result.value;
@@ -141,11 +144,18 @@ const validateNodeAttrs = (node, path, issues) => {
141
144
  case "pageBreak":
142
145
  case "renderedPageBreak": return;
143
146
  case "bookmarkBoundary":
147
+ case "blockBookmarkBoundary":
144
148
  appendAttrIssues(path, readBookmarkBoundaryAttrs(node), issues);
145
149
  return;
146
150
  case "commentReference":
147
151
  appendAttrIssues(path, readCommentReferenceAttrs(node), issues);
148
152
  return;
153
+ case "rangeAnchor":
154
+ appendAttrIssues(path, readRangeAnchorAttrs(node), issues);
155
+ return;
156
+ case "moveRangeBoundary":
157
+ appendAttrIssues(path, readMoveRangeBoundaryAttrs(node), issues);
158
+ return;
149
159
  case "tab":
150
160
  appendAttrIssues(path, readTabAttrs(node), issues);
151
161
  return;
@@ -195,6 +205,7 @@ const validateNodeAttrs = (node, path, issues) => {
195
205
  const hasStructuredHyperlink = node.content.content.some((child) => child.marks.some((mark) => mark.type.name === "hyperlink"));
196
206
  const hasPageBreakCarrier = node.content.content.some((child) => child.type.name === "pageBreakRun");
197
207
  const hasPreservedCapture = node.content.content.some((child) => child.type.name === "preservedXml");
208
+ const hasInlineWrapper = node.content.content.some((child) => child.marks.some((mark) => mark.type.name === INLINE_WRAPPER_MARK_NAME));
198
209
  if (fieldAttrs.value.fieldKind === "complex" && !hasPageBreakCarrier) issues.push({
199
210
  path: `${path}.content`,
200
211
  message: "Complex fields cannot contain structured result children."
@@ -203,9 +214,9 @@ const validateNodeAttrs = (node, path, issues) => {
203
214
  path: `${path}.content`,
204
215
  message: "Complex field results cannot contain hyperlink content."
205
216
  });
206
- else if (!hasStructuredHyperlink && !hasPageBreakCarrier && !hasPreservedCapture) issues.push({
217
+ else if (!hasStructuredHyperlink && !hasPageBreakCarrier && !hasPreservedCapture && !hasInlineWrapper) issues.push({
207
218
  path: `${path}.content`,
208
- message: "Structured simple fields require hyperlink content."
219
+ message: "Structured simple fields require hyperlink, page-break, preserved or wrapper content."
209
220
  });
210
221
  node.forEach((child, _offset, index) => {
211
222
  const childPath = `${path}.content[${index}]`;
@@ -316,8 +327,8 @@ const validateMarks = (marks, path, issues) => {
316
327
  case "runPropertyChange":
317
328
  appendAttrIssues(markPath, readRunPropertyChangeMarkAttrs(mark), issues);
318
329
  continue;
319
- case "pageBreakRunOwner":
320
- appendAttrIssues(markPath, readPageBreakRunOwnerMarkAttrs(mark), issues);
330
+ case "runIdentity":
331
+ appendAttrIssues(markPath, readRunIdentityMarkAttrs(mark), issues);
321
332
  continue;
322
333
  case "runFormattingOverride":
323
334
  appendAttrIssues(markPath, readRunFormattingOverrideMarkAttrs(mark), issues);
@@ -8,14 +8,14 @@ import * as Y from "yjs";
8
8
  */
9
9
  type AttrSchemaMigrationStep = (fragment: Y.XmlFragment) => number;
10
10
  /** Every attr-schema version this build reads, oldest first, with no gaps. */
11
- declare const FOLIO_YJS_ATTR_SCHEMA_VERSIONS: readonly [0, 1, 2, 3];
11
+ declare const FOLIO_YJS_ATTR_SCHEMA_VERSIONS: readonly [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
12
12
  /** An attr-schema version this build can read. */
13
13
  type FolioYjsAttrSchemaVersion = (typeof FOLIO_YJS_ATTR_SCHEMA_VERSIONS)[number];
14
14
  /**
15
15
  * The attr-schema version this build writes. Derived against the migration map
16
16
  * so the constant and the map cannot disagree.
17
17
  */
18
- declare const FOLIO_YJS_ATTR_SCHEMA_VERSION = 3;
18
+ declare const FOLIO_YJS_ATTR_SCHEMA_VERSION = 11;
19
19
  /**
20
20
  * The steps that carry a snapshot written under `fromVersion` up to
21
21
  * {@link FOLIO_YJS_ATTR_SCHEMA_VERSION}, in order. Empty when the snapshot is