@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,13 @@
1
- import { EMPTY_BUILT_IN_STYLE_INDEX } from "../../docx/builtInStyles.js";
1
+ import "../extensions/features/JoinedRunStyleExtension.js";
2
+ import { rebaseParagraphRuns } from "../rebaseParagraphRuns.js";
2
3
  import { StyleResolver, createStyleResolver } from "../styles/styleResolver.js";
3
- import { Plugin, PluginKey } from "prosemirror-state";
4
+ import { getDocumentNumbering } from "./documentNumbering.js";
5
+ import { documentStylesKey, getDocumentBuiltInStyles, getDocumentStyleDefinitions, getDocumentStyleResolver } from "./documentStyleState.js";
6
+ import { resolveEditedParagraphStyles } from "./paragraphStyleResolution.js";
7
+ import { Mark } from "prosemirror-model";
8
+ import { Mapping, ReplaceStep } from "prosemirror-transform";
9
+ import { Plugin } from "prosemirror-state";
10
+ import { isHistoryTransaction } from "prosemirror-history";
4
11
  //#region src/prosemirror/plugins/documentStyles.ts
5
12
  /**
6
13
  * documentStyles plugin — makes the document's StyleResolver reachable from
@@ -18,7 +25,57 @@ import { Plugin, PluginKey } from "prosemirror-state";
18
25
  * EditorState. When absent, style-aware commands fall back to their
19
26
  * style-agnostic behavior.
20
27
  */
21
- const documentStylesKey = new PluginKey("documentStyles");
28
+ /** Rebase surviving right-hand runs when ordinary replacement steps consume a paragraph opening. */
29
+ const rebaseEditedParagraphJoins = (transactions, tr, resolver) => {
30
+ const maps = transactions.flatMap((transaction) => transaction.mapping.maps);
31
+ let offset = 0;
32
+ for (const transaction of transactions) {
33
+ if (isHistoryTransaction(transaction) || transaction.getMeta("joinedRunsRestyled") === true || !transaction.steps.every((step) => step instanceof ReplaceStep)) {
34
+ offset += transaction.steps.length;
35
+ continue;
36
+ }
37
+ for (const [index, step] of transaction.steps.entries()) {
38
+ const before = transaction.docs[index];
39
+ if (!before) continue;
40
+ const map = step.getMap();
41
+ const mapping = new Mapping([map, ...new Mapping(maps.slice(offset + index + 1)).maps]);
42
+ map.forEach((oldFrom, oldTo) => {
43
+ before.nodesBetween(oldFrom, oldTo, (paragraph, position) => {
44
+ if (paragraph.type.name !== "paragraph") return true;
45
+ if (!map.mapResult(position, 1).deleted) return false;
46
+ const from = mapping.map(position + 1, 1);
47
+ const to = mapping.map(position + paragraph.nodeSize - 1, -1);
48
+ if (from >= to) return false;
49
+ const at = tr.doc.resolve(from);
50
+ if (at.parent.type.name !== "paragraph") return false;
51
+ const targetPosition = at.start() - 1;
52
+ if (targetPosition === mapping.map(position, 1)) return false;
53
+ const surviving = tr.doc.nodeAt(from);
54
+ const original = before.nodeAt(mapping.invert().map(from, 1));
55
+ if (!surviving || !original || !Mark.sameSet(surviving.marks, original.marks)) return false;
56
+ rebaseParagraphRuns({
57
+ tr,
58
+ position: targetPosition,
59
+ previous: paragraph,
60
+ styleResolver: resolver,
61
+ range: {
62
+ from,
63
+ to
64
+ }
65
+ });
66
+ return false;
67
+ });
68
+ });
69
+ }
70
+ offset += transaction.steps.length;
71
+ }
72
+ };
73
+ let bareStyleResolver;
74
+ /** The cascade of a package that defines no styles: docDefaults-free built-ins. */
75
+ const bareResolver = () => {
76
+ bareStyleResolver ??= createStyleResolver(void 0);
77
+ return bareStyleResolver;
78
+ };
22
79
  /**
23
80
  * Create the plugin holding a StyleResolver for the document's `styles` for
24
81
  * the lifetime of the EditorState. The resolver is fixed per document load;
@@ -36,22 +93,15 @@ function createDocumentStylesPlugin(styles) {
36
93
  state: {
37
94
  init: () => resolver,
38
95
  apply: (_tr, value) => value
96
+ },
97
+ appendTransaction: (transactions, _oldState, newState) => {
98
+ const styleResolver = documentStylesKey.getState(newState) ?? bareResolver();
99
+ const tr = resolveEditedParagraphStyles(transactions, newState, styleResolver, () => getDocumentNumbering(newState)) ?? newState.tr;
100
+ rebaseEditedParagraphJoins(transactions, tr, styleResolver);
101
+ return tr.docChanged ? tr : null;
39
102
  }
40
103
  });
41
104
  }
42
- /** Read the document's StyleResolver, or null when the plugin isn't installed. */
43
- function getDocumentStyleResolver(state) {
44
- return documentStylesKey.getState(state) ?? null;
45
- }
46
- /**
47
- * Read the document's built-in style index, for the callers that classify
48
- * paragraphs (heading collection, markdown export, the AI snapshot). Without
49
- * the plugin every lookup misses, which degrades classification to the
50
- * paragraph's own outline level rather than to English style ids.
51
- */
52
- function getDocumentBuiltInStyles(state) {
53
- return getDocumentStyleResolver(state)?.builtInStyles ?? EMPTY_BUILT_IN_STYLE_INDEX;
54
- }
55
105
  /** Reconfigure so ProseMirror replaces the keyed plugin's resolver state. */
56
106
  const withDocumentStyles = (state, styles) => {
57
107
  const previous = documentStylesKey.get(state);
@@ -59,4 +109,4 @@ const withDocumentStyles = (state, styles) => {
59
109
  return state.reconfigure({ plugins: retained }).reconfigure({ plugins: [...retained, createDocumentStylesPlugin(styles)] });
60
110
  };
61
111
  //#endregion
62
- export { createDocumentStylesPlugin, documentStylesKey, getDocumentBuiltInStyles, getDocumentStyleResolver, withDocumentStyles };
112
+ export { createDocumentStylesPlugin, documentStylesKey, getDocumentBuiltInStyles, getDocumentStyleDefinitions, getDocumentStyleResolver, withDocumentStyles };
@@ -1,3 +1,4 @@
1
1
  import { SelectionChangeCallback, SelectionContext, createSelectionTrackerPlugin, extractSelectionContext, getSelectionContext, selectionTrackerKey } from "./selectionTracker.js";
2
- import { createDocumentStylesPlugin, documentStylesKey, getDocumentBuiltInStyles, getDocumentStyleResolver } from "./documentStyles.js";
2
+ import { documentStylesKey, getDocumentBuiltInStyles, getDocumentStyleResolver } from "./documentStyleState.js";
3
+ import { createDocumentStylesPlugin } from "./documentStyles.js";
3
4
  export { type SelectionChangeCallback, type SelectionContext, createDocumentStylesPlugin, createSelectionTrackerPlugin, documentStylesKey, extractSelectionContext, getDocumentBuiltInStyles, getDocumentStyleResolver, getSelectionContext, selectionTrackerKey };
@@ -1,3 +1,4 @@
1
- import { createDocumentStylesPlugin, documentStylesKey, getDocumentBuiltInStyles, getDocumentStyleResolver } from "./documentStyles.js";
1
+ import { documentStylesKey, getDocumentBuiltInStyles, getDocumentStyleResolver } from "./documentStyleState.js";
2
+ import { createDocumentStylesPlugin } from "./documentStyles.js";
2
3
  import { createSelectionTrackerPlugin, extractSelectionContext, getSelectionContext, selectionTrackerKey } from "./selectionTracker.js";
3
4
  export { createDocumentStylesPlugin, createSelectionTrackerPlugin, documentStylesKey, extractSelectionContext, getDocumentBuiltInStyles, getDocumentStyleResolver, getSelectionContext, selectionTrackerKey };
@@ -0,0 +1,15 @@
1
+ import { StyleEngine } from "../../style-engine/styleEngine.js";
2
+ import "../../style-engine/index.js";
3
+ import { NumberingMap } from "../../docx/numberingParser.js";
4
+ import { ParagraphCascadeResolver } from "../styles/paragraphStyleCascade.js";
5
+ import { EditorState, Transaction } from "prosemirror-state";
6
+ //#region src/prosemirror/plugins/paragraphStyleResolution.d.ts
7
+ type ParagraphStyleResolver = ParagraphCascadeResolver & Pick<StyleEngine, "getDefaultTableStyle">;
8
+ /**
9
+ * Project the style cascade onto every paragraph the transactions touched
10
+ * that has not been projected yet. Returns the transaction to append, or null
11
+ * when every touched paragraph already reads as a reopened document would.
12
+ */
13
+ declare const resolveEditedParagraphStyles: (transactions: readonly Transaction[], state: EditorState, resolver: ParagraphStyleResolver, numbering: () => NumberingMap | null) => Transaction | null;
14
+ //#endregion
15
+ export { resolveEditedParagraphStyles };
@@ -0,0 +1,230 @@
1
+ import { resolveTableLook } from "../../docx/tableLook.js";
2
+ import { tableOfContentsStyleLevel } from "../../utils/tableOfContentsStyle.js";
3
+ import { expectParagraphAttrs, expectTableAttrs, expectTableCellAttrs, expectTableRowAttrs } from "../attrs/index.js";
4
+ import { setAutospacingBaseValue } from "../autospacingBase.js";
5
+ import { directionToAuthoredBidi } from "../paragraphDirection.js";
6
+ import { paragraphStyleCascadeAttrs, tableCellParagraphOverlay } from "../styles/paragraphStyleCascade.js";
7
+ import { listAttrsFromResolvedStyle } from "../styles/resolvedStyleAttrs.js";
8
+ import { tableCellStyleRegions, tableRowBand } from "../styles/tableStyleRegions.js";
9
+ import { TableMap } from "prosemirror-tables";
10
+ import { Mapping } from "prosemirror-transform";
11
+ import { isHistoryTransaction } from "prosemirror-history";
12
+ //#region src/prosemirror/plugins/paragraphStyleResolution.ts
13
+ /** The ranges of `doc` the given transactions changed, in its own positions. */
14
+ const changedRanges = (transactions) => {
15
+ const ranges = [];
16
+ const maps = transactions.flatMap((transaction) => transaction.mapping.maps);
17
+ let offset = 0;
18
+ for (const transaction of transactions) {
19
+ const own = transaction.mapping.maps.length;
20
+ if (transaction.docChanged && !isHistoryTransaction(transaction)) for (const [index, map] of transaction.mapping.maps.entries()) {
21
+ const following = new Mapping(maps.slice(offset + index + 1));
22
+ map.forEach((_oldFrom, _oldTo, from, to) => {
23
+ ranges.push([following.map(from, -1), following.map(to, 1)]);
24
+ });
25
+ }
26
+ offset += own;
27
+ }
28
+ return ranges;
29
+ };
30
+ /**
31
+ * What the paragraph states itself, as the cascade reads it: every attr the
32
+ * node holds a value for. Only called for paragraphs the load path never
33
+ * projected, whose attrs hold nothing inherited yet.
34
+ */
35
+ const statedFormatting = (attrs) => {
36
+ const formatting = {};
37
+ const copy = (key) => {
38
+ const value = attrs[key];
39
+ if (value !== null && value !== void 0) Reflect.set(formatting, key, value);
40
+ };
41
+ copy("alignment");
42
+ copy("spaceBefore");
43
+ copy("spaceAfter");
44
+ copy("lineSpacing");
45
+ copy("lineSpacingRule");
46
+ copy("snapToGrid");
47
+ copy("indentLeft");
48
+ copy("indentRight");
49
+ copy("indentFirstLine");
50
+ if (attrs.indentFirstLine !== null && attrs.indentFirstLine !== void 0) copy("hangingIndent");
51
+ copy("borders");
52
+ copy("shading");
53
+ copy("tabs");
54
+ copy("kinsoku");
55
+ copy("overflowPunctuation");
56
+ copy("suppressAutoHyphens");
57
+ copy("pageBreakBefore");
58
+ copy("keepNext");
59
+ copy("keepLines");
60
+ copy("widowControl");
61
+ copy("contextualSpacing");
62
+ copy("runInWithNext");
63
+ copy("outlineLevel");
64
+ copy("numPr");
65
+ const bidi = directionToAuthoredBidi(attrs.direction);
66
+ if (bidi !== void 0) formatting.bidi = bidi;
67
+ return formatting;
68
+ };
69
+ const isUnset = (value) => value === null || value === void 0;
70
+ /**
71
+ * The attrs the cascade supplies that `paragraph` leaves unset, or null when
72
+ * it already reads the way a reopened document would.
73
+ */
74
+ const cascadePatch = (node, resolver, tableParagraphOverlay, numbering) => {
75
+ const attrs = expectParagraphAttrs(node);
76
+ const styleId = attrs.styleId ?? void 0;
77
+ const { attrs: cascade, stylePpr } = paragraphStyleCascadeAttrs({
78
+ styleId,
79
+ formatting: statedFormatting(attrs),
80
+ styleResolver: resolver,
81
+ tableParagraphOverlay,
82
+ includeParagraphMarkRunProperties: false
83
+ });
84
+ const patch = {};
85
+ const fill = (key) => {
86
+ const value = cascade[key];
87
+ if (!isUnset(value) && isUnset(attrs[key])) patch[key] = value;
88
+ };
89
+ const lineProvenance = attrs.lineSpacingExplicit;
90
+ const filledSides = {
91
+ before: !attrs.spacingExplicit?.before && isUnset(attrs.spaceBefore),
92
+ after: !attrs.spacingExplicit?.after && isUnset(attrs.spaceAfter)
93
+ };
94
+ if (filledSides.before) fill("spaceBefore");
95
+ if (filledSides.after) fill("spaceAfter");
96
+ if (lineProvenance !== "value" && lineProvenance !== "both" && lineProvenance !== true) fill("lineSpacing");
97
+ if (lineProvenance !== "rule" && lineProvenance !== "both" && lineProvenance !== true) fill("lineSpacingRule");
98
+ for (const key of ["spacingFromDocDefaults", "spacingFromImplicitDefaultStyle"]) {
99
+ const inherited = cascade[key];
100
+ const side = {
101
+ ...inherited?.before && filledSides.before ? { before: true } : {},
102
+ ...inherited?.after && filledSides.after ? { after: true } : {}
103
+ };
104
+ if (side.before || side.after) patch[key] = {
105
+ ...attrs[key],
106
+ ...side
107
+ };
108
+ }
109
+ if (isUnset(attrs.indentFirstLine) && attrs.hangingIndent !== true) {
110
+ fill("indentFirstLine");
111
+ if (cascade.hangingIndent === true) patch.hangingIndent = true;
112
+ }
113
+ for (const key of [
114
+ "alignment",
115
+ "alignmentFromStyle",
116
+ "_resolvedFormatting",
117
+ "snapToGrid",
118
+ "indentLeft",
119
+ "indentRight",
120
+ "borders",
121
+ "shading",
122
+ "tabs",
123
+ "kinsoku",
124
+ "overflowPunctuation",
125
+ "suppressAutoHyphens",
126
+ "pageBreakBefore",
127
+ "keepNext",
128
+ "keepLines",
129
+ "widowControl",
130
+ "contextualSpacing",
131
+ "runInWithNext",
132
+ "outlineLevel",
133
+ "direction",
134
+ "defaultTextFormatting"
135
+ ]) fill(key);
136
+ if (styleId !== void 0 && isUnset(attrs._tableOfContentsLevel)) {
137
+ const styleName = resolver.getStyle(styleId)?.name;
138
+ const level = tableOfContentsStyleLevel({
139
+ styleId,
140
+ ...styleName ? { styleName } : {}
141
+ });
142
+ if (level !== void 0) patch._tableOfContentsLevel = level;
143
+ }
144
+ if (stylePpr?.numPr?.kind === "reference" && isUnset(attrs.numPr) && isUnset(attrs.numPrFromStyle)) {
145
+ const listAttrs = listAttrsFromResolvedStyle({ paragraphFormatting: stylePpr }, numbering());
146
+ const takesLevelIndent = {
147
+ indentLeft: isUnset(attrs.indentLeft) && patch.indentLeft === void 0,
148
+ indentFirstLine: isUnset(attrs.indentFirstLine) && attrs.hangingIndent !== true && patch.indentFirstLine === void 0
149
+ };
150
+ takesLevelIndent["hangingIndent"] = takesLevelIndent["indentFirstLine"] === true;
151
+ for (const [key, value] of Object.entries(listAttrs ?? {})) {
152
+ if (takesLevelIndent[key] === false) continue;
153
+ Reflect.set(patch, key, value);
154
+ }
155
+ }
156
+ const autospacingBase = {};
157
+ if (stylePpr?.beforeAutospacing && patch.spaceBefore !== void 0) setAutospacingBaseValue(autospacingBase, "before", patch.spaceBefore);
158
+ if (stylePpr?.afterAutospacing && patch.spaceAfter !== void 0) setAutospacingBaseValue(autospacingBase, "after", patch.spaceAfter);
159
+ if (Object.keys(autospacingBase).length > 0) patch._autospacingBase = {
160
+ ...attrs._autospacingBase,
161
+ ...autospacingBase
162
+ };
163
+ return Object.keys(patch).length > 0 ? patch : null;
164
+ };
165
+ /** The table-style regions for the cell at `depth` of `$pos`, as the load path picks them. */
166
+ const cellStyleRegions = ($pos, depth) => {
167
+ const table = $pos.node(depth - 2);
168
+ const row = $pos.node(depth - 1);
169
+ const map = TableMap.get(table);
170
+ const cellPos = $pos.before(depth) - $pos.start(depth - 2);
171
+ const rect = map.findCell(cellPos);
172
+ const look = resolveTableLook(expectTableAttrs(table).look ?? void 0);
173
+ return tableCellStyleRegions({
174
+ look,
175
+ rowIndex: rect.top,
176
+ totalRows: map.height,
177
+ column: rect.left,
178
+ colspan: rect.right - rect.left,
179
+ totalColumns: map.width,
180
+ rowBand: tableRowBand(look, rect.top, map.height),
181
+ rowConditionalFormat: expectTableRowAttrs(row)._originalFormatting?.conditionalFormat,
182
+ cellConditionalFormat: expectTableCellAttrs($pos.node(depth))._originalFormatting?.conditionalFormat
183
+ });
184
+ };
185
+ /**
186
+ * The table-style paragraph overlay for a paragraph directly inside a table
187
+ * cell (or a block container in one), as the load path layers it.
188
+ */
189
+ const cellParagraphOverlay = ($pos, resolver) => {
190
+ for (let depth = $pos.depth; depth > 0; depth -= 1) {
191
+ const ancestor = $pos.node(depth);
192
+ const role = ancestor.type.spec["tableRole"];
193
+ if (role === "cell" || role === "header_cell") {
194
+ const styleId = $pos.node(depth - 2).attrs["styleId"];
195
+ return tableCellParagraphOverlay(resolver, typeof styleId === "string" ? styleId : null, cellStyleRegions($pos, depth));
196
+ }
197
+ if (ancestor.type.name === "textBox") return;
198
+ }
199
+ };
200
+ /**
201
+ * Project the style cascade onto every paragraph the transactions touched
202
+ * that has not been projected yet. Returns the transaction to append, or null
203
+ * when every touched paragraph already reads as a reopened document would.
204
+ */
205
+ const resolveEditedParagraphStyles = (transactions, state, resolver, numbering) => {
206
+ const ranges = changedRanges(transactions);
207
+ if (ranges.length === 0) return null;
208
+ const tr = state.tr;
209
+ const seen = /* @__PURE__ */ new Set();
210
+ const docSize = state.doc.content.size;
211
+ for (const [rangeFrom, rangeTo] of ranges) {
212
+ const from = Math.max(0, Math.min(rangeFrom, docSize));
213
+ const to = Math.max(from, Math.min(rangeTo, docSize));
214
+ state.doc.nodesBetween(from, to, (node, pos) => {
215
+ if (node.type.name !== "paragraph") return !node.isTextblock;
216
+ if (seen.has(pos)) return false;
217
+ seen.add(pos);
218
+ if (node.attrs["_originalFormatting"] !== null) return false;
219
+ const patch = cascadePatch(node, resolver, cellParagraphOverlay(state.doc.resolve(pos), resolver), numbering);
220
+ if (patch) for (const [key, value] of Object.entries(patch)) {
221
+ const current = node.attrs[key];
222
+ if (current !== value && !(isUnset(current) && isUnset(value))) tr.setNodeAttribute(pos, key, value);
223
+ }
224
+ return false;
225
+ });
226
+ }
227
+ return tr.docChanged ? tr : null;
228
+ };
229
+ //#endregion
230
+ export { resolveEditedParagraphStyles };
@@ -1,10 +1,16 @@
1
- import { EditorState, Plugin, PluginKey, Transaction } from "prosemirror-state";
2
1
  import { Slice } from "prosemirror-model";
2
+ import { EditorState, Plugin, PluginKey, Transaction } from "prosemirror-state";
3
3
  import { EditorView } from "prosemirror-view";
4
4
  //#region src/prosemirror/plugins/suggestionMode.d.ts
5
5
  declare const suggestionModeKey: PluginKey<SuggestionModeState>;
6
6
  declare const SUGGESTION_META = "suggestionModeApplied";
7
7
  declare const SUGGESTION_BYPASS_META = "suggestionModeBypass";
8
+ /**
9
+ * The text a tracked text-input transaction typed. Rules that react to typing
10
+ * (list autoformat) read it, because this plugin claims text input before any
11
+ * input rule sees it.
12
+ */
13
+ declare const SUGGESTED_TEXT_INPUT_META = "suggestionModeTextInput";
8
14
  type SuggestionModeState = {
9
15
  active: boolean;
10
16
  author: string;
@@ -18,11 +24,27 @@ declare function makeRevisionInfo(state: EditorState): {
18
24
  * With track changes on, pasting over a non-empty text selection marks the
19
25
  * replaced text as a tracked deletion and the pasted slice as a tracked
20
26
  * insertion (so they read as one replacement), matching typing over a
21
- * selection. Returns false for a collapsed cursor or non-text selection so the
27
+ * selection. Select-all (an `AllSelection`) counts as a text selection over the
28
+ * whole document. Returns false for a collapsed cursor or another selection so the
22
29
  * default paste + the `appendTransaction` catch-all marks a plain insertion
23
30
  * (eigenpal/docx-editor#784).
24
31
  */
25
32
  declare function handleSuggestionPaste(view: EditorView, slice: Slice, pluginState: SuggestionModeState): boolean;
33
+ /**
34
+ * With track changes on, a paste into a table's cells (a cell selection, or a
35
+ * block of copied cells) replaces each cell's content the way a paste over a
36
+ * text selection does: the old content struck through, the pasted content
37
+ * after it as an insertion. When the pasted content is whole paragraphs, the
38
+ * last one ends the cell, so its paragraph mark is tracked as added too:
39
+ * rejecting then drops it and accepting joins the struck paragraphs into it.
40
+ */
41
+ declare function handleSuggestionTableCellPaste(view: EditorView, slice: Slice, pluginState: SuggestionModeState): boolean;
42
+ /**
43
+ * Remove `from`..`to` of `tr.doc` as a suggestion: text the current author
44
+ * inserted is retracted, anything else is marked deleted. `false` when the
45
+ * editor is not suggesting.
46
+ */
47
+ declare function suggestRangeDeletion(state: EditorState, tr: Transaction, from: number, to: number): boolean;
26
48
  /**
27
49
  * Track-changes Enter: split the paragraph and stamp `pPrMark = 'ins'` on the
28
50
  * FIRST half of the split (the upper paragraph), per ECMA-376 §17.13.5. The
@@ -48,6 +70,8 @@ declare function handleSuggestionEnter(view: EditorView, pluginState: Suggestion
48
70
  * is a table). The default merge path then runs unchanged.
49
71
  */
50
72
  declare function paragraphBoundaryTarget(state: EditorState, direction: "backward" | "forward"): number | null;
73
+ /** Apply the editor's selected-content deletion path for a host cut action. */
74
+ declare const deleteSelectionAsSuggestion: (state: EditorState, dispatch: (tr: Transaction) => void) => boolean;
51
75
  /**
52
76
  * Create the suggestion mode plugin.
53
77
  * When active, text edits become tracked changes.
@@ -66,4 +90,4 @@ declare function setSuggestionMode(active: boolean, state: EditorState, dispatch
66
90
  */
67
91
  declare function isSuggestionModeActive(state: EditorState): boolean;
68
92
  //#endregion
69
- export { SUGGESTION_BYPASS_META, SUGGESTION_META, createSuggestionModePlugin, handleSuggestionEnter, handleSuggestionPaste, isSuggestionModeActive, makeRevisionInfo, paragraphBoundaryTarget, setSuggestionMode, suggestionModeKey, toggleSuggestionMode };
93
+ export { SUGGESTED_TEXT_INPUT_META, SUGGESTION_BYPASS_META, SUGGESTION_META, createSuggestionModePlugin, deleteSelectionAsSuggestion, handleSuggestionEnter, handleSuggestionPaste, handleSuggestionTableCellPaste, isSuggestionModeActive, makeRevisionInfo, paragraphBoundaryTarget, setSuggestionMode, suggestRangeDeletion, suggestionModeKey, toggleSuggestionMode };