@stll/folio-core 0.51.0 → 0.53.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 (316) 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 +1519 -105
  4. package/dist/ai-edits/batch-claims.d.ts +130 -0
  5. package/dist/ai-edits/batch-claims.js +244 -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 +71 -7
  14. package/dist/ai-edits/headless.js +381 -41
  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 +1 -1
  26. package/dist/ai-edits/read.js +56 -43
  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/snapshot.d.ts +36 -3
  30. package/dist/ai-edits/snapshot.js +177 -23
  31. package/dist/ai-edits/table-cell-mutations.d.ts +1 -1
  32. package/dist/ai-edits/table-cell-mutations.js +4 -1
  33. package/dist/ai-edits/table-geometry.d.ts +1 -1
  34. package/dist/ai-edits/table-row-column-mutations.d.ts +38 -16
  35. package/dist/ai-edits/table-row-column-mutations.js +61 -26
  36. package/dist/ai-edits/types.d.ts +155 -16
  37. package/dist/compare/compare.d.ts +1 -1
  38. package/dist/compare/compare.js +65 -16
  39. package/dist/compare/content-alignment.js +13 -2
  40. package/dist/compare/content-types.d.ts +7 -0
  41. package/dist/compare/content.d.ts +4 -1
  42. package/dist/compare/content.js +6 -1
  43. package/dist/compare/formatting.js +2 -1
  44. package/dist/compare/inline-atoms.d.ts +21 -4
  45. package/dist/compare/inline-atoms.js +138 -16
  46. package/dist/compare/inline-provenance.js +18 -22
  47. package/dist/compare/plan.js +10 -5
  48. package/dist/compare/scenario.js +14 -3
  49. package/dist/compare/section-boundary-properties.js +14 -1
  50. package/dist/compare/types.d.ts +4 -2
  51. package/dist/compare/types.js +2 -1
  52. package/dist/compare/verification.d.ts +1 -1
  53. package/dist/compare/verification.js +15 -3
  54. package/dist/controller/committedLayoutDiff.d.ts +25 -0
  55. package/dist/controller/committedLayoutDiff.js +71 -0
  56. package/dist/controller/contentControlWidgetController.d.ts +1 -1
  57. package/dist/controller/folioEditor.d.ts +1 -1
  58. package/dist/controller/fontReadiness.d.ts +70 -3
  59. package/dist/controller/fontReadiness.js +100 -10
  60. package/dist/controller/headerFooterEditorManager.js +6 -1
  61. package/dist/controller/layoutPipeline.d.ts +12 -10
  62. package/dist/controller/layoutPipeline.js +62 -9
  63. package/dist/controller/layoutRunOptions.d.ts +24 -0
  64. package/dist/controller/layoutRunOptions.js +17 -0
  65. package/dist/controller/layoutScheduler.d.ts +19 -14
  66. package/dist/controller/layoutScheduler.js +15 -12
  67. package/dist/controller/layoutSession.d.ts +26 -2
  68. package/dist/controller/layoutSession.js +1 -1
  69. package/dist/controller/noteEditorManager.js +8 -3
  70. package/dist/document-operations.d.ts +11 -2
  71. package/dist/document-operations.js +230 -21
  72. package/dist/docx/altChunk.d.ts +8 -0
  73. package/dist/docx/altChunk.js +17 -0
  74. package/dist/docx/attributeRemainder.d.ts +1 -1
  75. package/dist/docx/blockContentParser.d.ts +64 -1
  76. package/dist/docx/blockContentParser.js +17 -4
  77. package/dist/docx/blockCustomXmlShell.d.ts +7 -0
  78. package/dist/docx/blockCustomXmlShell.js +14 -0
  79. package/dist/docx/blockPlainText.js +7 -0
  80. package/dist/docx/commentAnchorIndex.js +1 -1
  81. package/dist/docx/commentRangeIntegrity.js +8 -3
  82. package/dist/docx/commentReferenceNormalization.js +1 -1
  83. package/dist/docx/commentReplyMarkers.js +20 -1
  84. package/dist/docx/compatibility.d.ts +1 -1
  85. package/dist/docx/compatibility.js +34 -13
  86. package/dist/docx/containerChildren.gen.d.ts +1 -1
  87. package/dist/docx/containerChildren.gen.js +1 -0
  88. package/dist/docx/documentParser.js +12 -12
  89. package/dist/docx/drawingIdNormalization.d.ts +3 -1
  90. package/dist/docx/drawingIdNormalization.js +6 -1
  91. package/dist/docx/ensureParaIds.js +119 -97
  92. package/dist/docx/footnoteParser.js +8 -4
  93. package/dist/docx/headerFooterParser.js +3 -3
  94. package/dist/docx/headerFooterReferenceNormalization.d.ts +20 -1
  95. package/dist/docx/headerFooterReferenceNormalization.js +52 -27
  96. package/dist/docx/hyperlinkParser.d.ts +1 -1
  97. package/dist/docx/index.d.ts +1 -1
  98. package/dist/docx/listNumberingInstances.d.ts +59 -0
  99. package/dist/docx/listNumberingInstances.js +249 -0
  100. package/dist/docx/normalizeBaseDirection.js +2 -1
  101. package/dist/docx/opaqueCarrier.d.ts +7 -0
  102. package/dist/docx/opaqueCarrier.js +38 -0
  103. package/dist/docx/packageParts.js +4 -1
  104. package/dist/docx/paragraphParser.js +91 -24
  105. package/dist/docx/paragraphPropertySource.d.ts +4 -2
  106. package/dist/docx/paragraphPropertySource.js +7 -1
  107. package/dist/docx/paragraphTraversal.js +1 -0
  108. package/dist/docx/parseWarningMessage.js +4 -1
  109. package/dist/docx/parser.js +173 -20
  110. package/dist/docx/rezip.js +27 -5
  111. package/dist/docx/sdtProperties.js +1 -1
  112. package/dist/docx/sdtPropertiesPatch.js +3 -0
  113. package/dist/docx/selectiveSave.js +16 -9
  114. package/dist/docx/selectiveXmlPatch.js +106 -37
  115. package/dist/docx/serializer/blockCustomXmlSerializer.d.ts +5 -0
  116. package/dist/docx/serializer/blockCustomXmlSerializer.js +4 -0
  117. package/dist/docx/serializer/documentSerializer.js +2 -0
  118. package/dist/docx/serializer/headerFooterSerializer.js +2 -0
  119. package/dist/docx/serializer/noteSerializer.js +3 -1
  120. package/dist/docx/serializer/paragraphSerializer.js +33 -9
  121. package/dist/docx/serializer/tableSerializer.js +25 -38
  122. package/dist/docx/server/createBilingualDocument.js +3 -3
  123. package/dist/docx/tableParser.d.ts +157 -1
  124. package/dist/docx/tableParser.js +89 -10
  125. package/dist/docx/textBoxParser.js +1 -1
  126. package/dist/docx/unzip.d.ts +2 -1
  127. package/dist/docx/unzip.js +1 -1
  128. package/dist/docx/wordprocessingPrefixes.d.ts +78 -0
  129. package/dist/docx/wordprocessingPrefixes.js +286 -0
  130. package/dist/generated/text_shaper.js +26 -0
  131. package/dist/generated/text_shaper_bg.wasm +0 -0
  132. package/dist/i18n/messages/catalogs.gen.d.ts +136 -0
  133. package/dist/i18n/messages/catalogs.gen.js +153 -17
  134. package/dist/i18n/messages/messages.gen.d.ts +8 -0
  135. package/dist/internal/compare/inline-presentation.d.ts +2 -1
  136. package/dist/internal/compare/inline-presentation.js +11 -10
  137. package/dist/internal/headlessRevisionResolutionGuard.d.ts +2 -8
  138. package/dist/internal/headlessRevisionResolutionGuard.js +2 -11
  139. package/dist/internal/indexedPositionMap.d.ts +11 -0
  140. package/dist/internal/indexedPositionMap.js +42 -0
  141. package/dist/internal/pageBreakRunSourceDescendantIndex.js +2 -1
  142. package/dist/internal/revisionResolutionEdits.d.ts +13 -0
  143. package/dist/internal/revisionResolutionEdits.js +19 -0
  144. package/dist/internal/revisionResolutionInline.d.ts +24 -0
  145. package/dist/internal/{headlessRevisionResolution.js → revisionResolutionInline.js} +61 -43
  146. package/dist/internal/revisionResolutionStep.d.ts +34 -0
  147. package/dist/internal/revisionResolutionStep.js +282 -0
  148. package/dist/internal/revisionResolutionTracking.d.ts +11 -0
  149. package/dist/internal/revisionResolutionTracking.js +124 -0
  150. package/dist/internal/wholeStoryRevisionResolution.d.ts +56 -0
  151. package/dist/internal/wholeStoryRevisionResolution.js +530 -0
  152. package/dist/layout-bridge/convert/markupViewFlow.d.ts +20 -0
  153. package/dist/layout-bridge/convert/markupViewFlow.js +123 -0
  154. package/dist/layout-bridge/convert/tableConversion.js +1 -1
  155. package/dist/layout-bridge/convert/toFlowBlocks.js +10 -1
  156. package/dist/layout-engine/layoutInstrumentation.d.ts +9 -1
  157. package/dist/layout-engine/layoutInstrumentation.js +4 -1
  158. package/dist/layout-engine/measure/cache.d.ts +18 -1
  159. package/dist/layout-engine/measure/cache.js +31 -1
  160. package/dist/layout-engine/measure/font-metrics.worker.js +3 -7
  161. package/dist/layout-engine/measure/measureContainer.js +7 -47
  162. package/dist/layout-engine/measure/measureHelpers.d.ts +6 -1
  163. package/dist/layout-engine/measure/measureHelpers.js +22 -2
  164. package/dist/layout-engine/measure/measureWorker.js +2 -3
  165. package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +6 -7
  166. package/dist/layout-engine/measure/measureWorkerProtocol.js +1 -2
  167. package/dist/layout-engine/types.d.ts +6 -0
  168. package/dist/layout-painter/renderPage.js +1 -0
  169. package/dist/layout-painter/renderParagraph.js +1 -1
  170. package/dist/managers/ContextMenuManager.js +5 -2
  171. package/dist/managers/types.d.ts +3 -0
  172. package/dist/markdown/fromMarkdown.js +2 -1
  173. package/dist/markdown/internals.d.ts +11 -1
  174. package/dist/markdown/internals.js +24 -3
  175. package/dist/markdown/renderBlock.js +39 -9
  176. package/dist/markdown/renderParagraph.d.ts +13 -1
  177. package/dist/markdown/renderParagraph.js +85 -38
  178. package/dist/markdown/renderRuns.js +3 -10
  179. package/dist/markdown/renderTable.js +24 -12
  180. package/dist/markdown/trailers.js +2 -2
  181. package/dist/markdown/types.d.ts +29 -7
  182. package/dist/paged-layout/incrementalMeasure.d.ts +1 -2
  183. package/dist/paged-layout/incrementalMeasure.js +1 -9
  184. package/dist/paged-layout/transactionDirtyRange.d.ts +1 -3
  185. package/dist/paged-layout/transactionDirtyRange.js +29 -41
  186. package/dist/panel-layout.d.ts +83 -0
  187. package/dist/panel-layout.js +96 -0
  188. package/dist/prosemirror/anchoredTextBoxes.d.ts +37 -0
  189. package/dist/prosemirror/anchoredTextBoxes.js +156 -0
  190. package/dist/prosemirror/attrs/index.d.ts +6 -2
  191. package/dist/prosemirror/attrs/index.js +172 -1
  192. package/dist/prosemirror/commands/comments.d.ts +7 -8
  193. package/dist/prosemirror/commands/comments.js +241 -207
  194. package/dist/prosemirror/commands/contentControls.d.ts +1 -1
  195. package/dist/prosemirror/commands/formatPainter.d.ts +1 -1
  196. package/dist/prosemirror/commands/formatting.d.ts +1 -1
  197. package/dist/prosemirror/commands/index.d.ts +2 -2
  198. package/dist/prosemirror/commands/index.js +2 -2
  199. package/dist/prosemirror/commands/paragraph.d.ts +7 -1
  200. package/dist/prosemirror/commands/paragraph.js +9 -1
  201. package/dist/prosemirror/commands/paragraphBookmarkJoin.d.ts +13 -0
  202. package/dist/prosemirror/commands/paragraphBookmarkJoin.js +22 -0
  203. package/dist/prosemirror/commands/pastePlainText.d.ts +1 -1
  204. package/dist/prosemirror/commands/resolveAllTableChanges.d.ts +40 -0
  205. package/dist/prosemirror/commands/resolveAllTableChanges.js +615 -0
  206. package/dist/prosemirror/commands/resolveNodePropertyChangeAttrs.d.ts +15 -0
  207. package/dist/prosemirror/commands/resolveNodePropertyChangeAttrs.js +46 -0
  208. package/dist/prosemirror/commands/resolveParagraphProperties.d.ts +16 -0
  209. package/dist/prosemirror/commands/resolveParagraphProperties.js +59 -0
  210. package/dist/prosemirror/commands/sectionBreak.js +2 -1
  211. package/dist/prosemirror/commands/tableCellMergeResolution.d.ts +8 -2
  212. package/dist/prosemirror/commands/tableCellMergeResolution.js +1 -1
  213. package/dist/prosemirror/contentControlRevisions.d.ts +1 -1
  214. package/dist/prosemirror/conversion/fromProseDoc.js +181 -31
  215. package/dist/prosemirror/conversion/toProseDoc.js +39 -4
  216. package/dist/prosemirror/emptyFieldResultRuns.d.ts +18 -0
  217. package/dist/prosemirror/emptyFieldResultRuns.js +33 -0
  218. package/dist/prosemirror/extensions/ExtensionManager.d.ts +1 -1
  219. package/dist/prosemirror/extensions/ExtensionManager.js +3 -1
  220. package/dist/prosemirror/extensions/StarterKit.js +3 -1
  221. package/dist/prosemirror/extensions/core/DocExtension.js +1 -1
  222. package/dist/prosemirror/extensions/core/ParagraphExtension.js +12 -0
  223. package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +3 -0
  224. package/dist/prosemirror/extensions/features/ListExtension.js +161 -123
  225. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +19 -2
  226. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.js +33 -20
  227. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +31 -2
  228. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +270 -99
  229. package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +3 -2
  230. package/dist/prosemirror/extensions/features/pasteCleanup.js +2 -1
  231. package/dist/prosemirror/extensions/features/pastedHtmlLists.d.ts +12 -0
  232. package/dist/prosemirror/extensions/features/pastedHtmlLists.js +126 -0
  233. package/dist/prosemirror/extensions/marks/FootnoteRefExtension.js +21 -5
  234. package/dist/prosemirror/extensions/marks/RunIdentityExtension.d.ts +21 -18
  235. package/dist/prosemirror/extensions/marks/RunIdentityExtension.js +37 -17
  236. package/dist/prosemirror/extensions/marks/markUtils.d.ts +7 -2
  237. package/dist/prosemirror/extensions/marks/markUtils.js +8 -2
  238. package/dist/prosemirror/extensions/marks/noteReferenceDeletion.d.ts +10 -0
  239. package/dist/prosemirror/extensions/marks/noteReferenceDeletion.js +35 -0
  240. package/dist/prosemirror/extensions/nodes/BlockCustomXmlExtension.d.ts +6 -0
  241. package/dist/prosemirror/extensions/nodes/BlockCustomXmlExtension.js +52 -0
  242. package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +3 -3
  243. package/dist/prosemirror/extensions/nodes/FieldExtension.js +50 -15
  244. package/dist/prosemirror/extensions/nodes/PreservedBlockExtension.js +4 -1
  245. package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +1 -1
  246. package/dist/prosemirror/extensions/nodes/TableExtension.js +19 -18
  247. package/dist/prosemirror/extensions/types.d.ts +4 -1
  248. package/dist/prosemirror/findReplaceSelection.js +1 -1
  249. package/dist/prosemirror/index.d.ts +3 -2
  250. package/dist/prosemirror/index.js +3 -2
  251. package/dist/prosemirror/indexedNodeLookup.d.ts +17 -0
  252. package/dist/prosemirror/indexedNodeLookup.js +103 -0
  253. package/dist/prosemirror/listAutoformatMarkers.d.ts +19 -0
  254. package/dist/prosemirror/listAutoformatMarkers.js +98 -0
  255. package/dist/prosemirror/listInstanceReferences.d.ts +12 -0
  256. package/dist/prosemirror/listInstanceReferences.js +72 -0
  257. package/dist/prosemirror/listLabels.d.ts +24 -0
  258. package/dist/prosemirror/listLabels.js +111 -0
  259. package/dist/prosemirror/listNumbering.d.ts +110 -0
  260. package/dist/prosemirror/listNumbering.js +345 -0
  261. package/dist/prosemirror/listRenderingAttrs.d.ts +11 -2
  262. package/dist/prosemirror/listRenderingAttrs.js +8 -1
  263. package/dist/prosemirror/markupViewProjection.d.ts +95 -0
  264. package/dist/prosemirror/markupViewProjection.js +83 -0
  265. package/dist/prosemirror/numberingAttr.d.ts +9 -1
  266. package/dist/prosemirror/numberingAttr.js +9 -1
  267. package/dist/prosemirror/outlineLevelAttr.js +1 -1
  268. package/dist/prosemirror/paragraphIndentation.d.ts +10 -1
  269. package/dist/prosemirror/paragraphIndentation.js +29 -7
  270. package/dist/prosemirror/paragraphMarkJoin.d.ts +19 -0
  271. package/dist/prosemirror/paragraphMarkJoin.js +24 -0
  272. package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +1 -1
  273. package/dist/prosemirror/plugins/documentNumbering.d.ts +27 -1
  274. package/dist/prosemirror/plugins/documentNumbering.js +97 -11
  275. package/dist/prosemirror/plugins/documentStyles.d.ts +10 -1
  276. package/dist/prosemirror/plugins/documentStyles.js +14 -1
  277. package/dist/prosemirror/plugins/suggestionMode.d.ts +16 -2
  278. package/dist/prosemirror/plugins/suggestionMode.js +116 -52
  279. package/dist/prosemirror/plugins/templateDirectives.d.ts +1 -1
  280. package/dist/prosemirror/plugins/transactionInvariants.d.ts +32 -0
  281. package/dist/prosemirror/plugins/transactionInvariants.js +86 -0
  282. package/dist/prosemirror/positionSweep.d.ts +24 -0
  283. package/dist/prosemirror/positionSweep.js +222 -0
  284. package/dist/prosemirror/rebaseParagraphRunFormatting.d.ts +1 -1
  285. package/dist/prosemirror/rejoinRunCarriers.d.ts +1 -1
  286. package/dist/prosemirror/replacedAnnotations.d.ts +33 -1
  287. package/dist/prosemirror/replacedAnnotations.js +170 -1
  288. package/dist/prosemirror/runFormattingInlineCarriers.d.ts +1 -1
  289. package/dist/prosemirror/runStyleFormatting.d.ts +7 -1
  290. package/dist/prosemirror/runStyleFormatting.js +13 -7
  291. package/dist/prosemirror/schema/index.d.ts +2 -2
  292. package/dist/prosemirror/schema/index.js +3 -0
  293. package/dist/prosemirror/schema/nodes.d.ts +42 -11
  294. package/dist/prosemirror/sectionMarkEdits.d.ts +20 -0
  295. package/dist/prosemirror/sectionMarkEdits.js +59 -0
  296. package/dist/prosemirror/storyListNumbering.d.ts +17 -0
  297. package/dist/prosemirror/storyListNumbering.js +102 -0
  298. package/dist/prosemirror/tableGridMutation.d.ts +48 -2
  299. package/dist/prosemirror/tableGridMutation.js +106 -1
  300. package/dist/prosemirror/validation.js +5 -1
  301. package/dist/redline.js +93 -9
  302. package/dist/render-dom/BodySelectionOverlay.d.ts +4 -1
  303. package/dist/render-dom/BodySelectionOverlay.js +3 -2
  304. package/dist/shaping/shaper.d.ts +47 -4
  305. package/dist/shaping/shaper.js +46 -15
  306. package/dist/text-shaping.d.ts +4 -0
  307. package/dist/text-shaping.js +4 -0
  308. package/dist/utils/findReplace.js +2 -2
  309. package/dist/utils/mergeDocumentContent.js +1 -1
  310. package/dist/utils/noteReferenceLabels.d.ts +36 -0
  311. package/dist/utils/noteReferenceLabels.js +32 -0
  312. package/dist/utils/replaceText.js +1 -1
  313. package/dist/version-comparison.d.ts +1 -0
  314. package/dist/version-comparison.js +1 -0
  315. package/package.json +8 -2
  316. package/dist/internal/headlessRevisionResolution.d.ts +0 -23
@@ -5,10 +5,11 @@ import { isValidHexColor, resolveColor } from "../../../utils/colorResolver.js";
5
5
  import { resolveTablePlacementAlignment } from "../../../utils/tablePlacement.js";
6
6
  import { textFlowCss } from "../../../utils/textDirectionFlow.js";
7
7
  import { expectTableAttrs, expectTableCellAttrs, expectTableRowAttrs, mergeTableAttrs, mergeTableCellAttrs, mergeTableRowAttrs } from "../../attrs/index.js";
8
+ import { removeTableRow } from "../../tableGridMutation.js";
8
9
  import { createExtension, createNodeExtension } from "../create.js";
9
10
  import { panic } from "better-result";
10
11
  import { statesNoBorder } from "@stll/docx-core/model";
11
- import { CellSelection, TableMap, columnResizing, mergeCells, removeRow, selectedRect, splitCell, tableEditing } from "prosemirror-tables";
12
+ import { CellSelection, TableMap, columnResizing, mergeCells, selectedRect, splitCell, tableEditing } from "prosemirror-tables";
12
13
  import { Plugin, PluginKey, Selection, TextSelection } from "prosemirror-state";
13
14
  import { Decoration, DecorationSet } from "prosemirror-view";
14
15
  //#region src/prosemirror/extensions/nodes/TableExtension.ts
@@ -233,6 +234,7 @@ const tableSpec = {
233
234
  tblPrChange: { default: null },
234
235
  _bookmarks: { default: null },
235
236
  _preserved: { default: null },
237
+ carrierStack: { default: null },
236
238
  _suggestedInsert: { default: null }
237
239
  },
238
240
  parseDOM: [{
@@ -283,6 +285,7 @@ const tableRowSpec = {
283
285
  _preservedAttributes: { default: null },
284
286
  _bookmarks: { default: null },
285
287
  contentControls: { default: null },
288
+ carrierStack: { default: null },
286
289
  _preserved: { default: null },
287
290
  trIns: { default: null },
288
291
  trDel: { default: null }
@@ -367,7 +370,7 @@ const statedCellWidth = (value, type) => ({
367
370
  }
368
371
  });
369
372
  const tableCellSpec = {
370
- content: "(paragraph | table | textBox | blockSdt | preservedBlock | blockBookmarkBoundary)+",
373
+ content: "(paragraph | table | textBox | blockSdt | blockCustomXml | preservedBlock | blockBookmarkBoundary)+",
371
374
  tableRole: "cell",
372
375
  isolating: true,
373
376
  attrs: {
@@ -393,6 +396,7 @@ const tableCellSpec = {
393
396
  tcPrChange: { default: null },
394
397
  cellMarker: { default: null },
395
398
  contentControls: { default: null },
399
+ carrierStack: { default: null },
396
400
  _preserveVMergeRestart: { default: null },
397
401
  _docxVMergeContinuationCells: { default: null }
398
402
  },
@@ -436,7 +440,7 @@ const tableCellSpec = {
436
440
  }
437
441
  };
438
442
  const tableHeaderSpec = {
439
- content: "(paragraph | table | textBox | blockSdt | preservedBlock | blockBookmarkBoundary)+",
443
+ content: "(paragraph | table | textBox | blockSdt | blockCustomXml | preservedBlock | blockBookmarkBoundary)+",
440
444
  tableRole: "header_cell",
441
445
  isolating: true,
442
446
  attrs: {
@@ -462,6 +466,7 @@ const tableHeaderSpec = {
462
466
  tcPrChange: { default: null },
463
467
  cellMarker: { default: null },
464
468
  contentControls: { default: null },
469
+ carrierStack: { default: null },
465
470
  _preserveVMergeRestart: { default: null },
466
471
  _docxVMergeContinuationCells: { default: null }
467
472
  },
@@ -893,7 +898,7 @@ const TablePluginExtension = createExtension({
893
898
  }
894
899
  const rect = selectedRect(state);
895
900
  for (let row = lastRow; row >= firstRow; row--) {
896
- removeRow(tr, rect, row);
901
+ removeTableRow(tr, rect, row);
897
902
  if (row > firstRow) {
898
903
  const updated = tr.doc.nodeAt(rect.tableStart - 1);
899
904
  if (updated) {
@@ -1095,10 +1100,11 @@ const TablePluginExtension = createExtension({
1095
1100
  if (!context.isInTable || context.tablePos === void 0 || !context.table) return false;
1096
1101
  if (dispatch) {
1097
1102
  const tableStart = context.tablePos + 1;
1098
- const $first = state.doc.resolve(tableStart);
1099
- const $last = state.doc.resolve(context.tablePos + context.table.nodeSize - 2);
1100
- const cellSel = CellSelection.create(state.doc, $first.pos, $last.pos);
1101
- dispatch(state.tr.setSelection(cellSel));
1103
+ const { map } = TableMap.get(context.table);
1104
+ const first = map.at(0);
1105
+ const last = map.at(-1);
1106
+ if (first === void 0 || last === void 0) return false;
1107
+ dispatch(state.tr.setSelection(CellSelection.create(state.doc, tableStart + first, tableStart + last)));
1102
1108
  }
1103
1109
  return true;
1104
1110
  }
@@ -1106,16 +1112,11 @@ const TablePluginExtension = createExtension({
1106
1112
  const context = getTableContext(state);
1107
1113
  if (!context.isInTable || context.tablePos === void 0 || !context.table || context.rowIndex === void 0) return false;
1108
1114
  if (dispatch) {
1109
- let rowPos = context.tablePos + 1;
1110
- for (let r = 0; r < context.rowIndex; r++) {
1111
- const row = context.table.child(r);
1112
- rowPos += row.nodeSize;
1113
- }
1114
- const row = context.table.child(context.rowIndex);
1115
- const firstCellPos = rowPos + 1;
1116
- const lastCellPos = rowPos + row.nodeSize - 2;
1117
- const cellSel = CellSelection.create(state.doc, firstCellPos, lastCellPos);
1118
- dispatch(state.tr.setSelection(cellSel));
1115
+ const tableStart = context.tablePos + 1;
1116
+ const tableMap = TableMap.get(context.table);
1117
+ const firstCell = tableMap.map[context.rowIndex * tableMap.width];
1118
+ if (firstCell === void 0) return false;
1119
+ dispatch(state.tr.setSelection(CellSelection.rowSelection(state.doc.resolve(tableStart + firstCell))));
1119
1120
  }
1120
1121
  return true;
1121
1122
  }
@@ -5,8 +5,8 @@ import { TablePropertiesCommand } from "../../utils/tableOperations.js";
5
5
  import { SectionBreakType } from "../sectionCarrier.js";
6
6
  import { GenerateTableOfContentsOptions, ResolvedStyleAttrs } from "./core/ParagraphExtension.js";
7
7
  import { BorderPreset, TableBorderPreset } from "./nodes/TableExtension.js";
8
- import { Command, Plugin } from "prosemirror-state";
9
8
  import { MarkSpec, NodeSpec, Schema } from "prosemirror-model";
9
+ import { Command, Plugin } from "prosemirror-state";
10
10
  //#region src/prosemirror/extensions/types.d.ts
11
11
  /**
12
12
  * A border a host asks folio to apply.
@@ -103,6 +103,9 @@ type FolioCommandArguments = {
103
103
  increaseListLevel: [];
104
104
  decreaseListLevel: [];
105
105
  removeList: [];
106
+ restartNumbering: [];
107
+ continueNumbering: [];
108
+ setNumberingValue: [value: number];
106
109
  setSpaceBefore: [twips: number];
107
110
  setSpaceAfter: [twips: number];
108
111
  applyStyle: [styleId: string, resolvedAttrs?: ResolvedStyleAttrs];
@@ -51,7 +51,7 @@ function forEachSearchParagraph(doc, visit) {
51
51
  if (!visit(child, childPos, paragraphIndex)) return false;
52
52
  paragraphIndex++;
53
53
  } else if (child.type.name === "table" && !walkTable(child, childPos)) return false;
54
- else if (child.type.name === "blockSdt" && !walkBlocks(child, childPos + 1)) return false;
54
+ else if ((child.type.name === "blockSdt" || child.type.name === "blockCustomXml") && !walkBlocks(child, childPos + 1)) return false;
55
55
  offset += child.nodeSize;
56
56
  }
57
57
  return true;
@@ -5,13 +5,14 @@ import { schema, singletonManager } from "./schema/index.js";
5
5
  import { getParagraphAlignment, getParagraphBidi, getStyleId } from "./extensions/core/ParagraphExtension.js";
6
6
  import { BorderPreset, TableBorderPreset, TableContextInfo, getTableContext, isInTable as isInTableCell } from "./extensions/nodes/TableExtension.js";
7
7
  import { TableBorderCommandSpec, TableCellBorderCommandSpec } from "./extensions/types.js";
8
+ import { ListNumberingMenuState, NO_LIST_NUMBERING_MENU, listNumberingMenuState } from "./listNumbering.js";
8
9
  import { CapturedTextFormatting, PAINTABLE_MARK_NAMES, applyFormatMarks, captureFormatMarks } from "./commands/formatPainter.js";
9
10
  import { clearFormatting, getMarkAttr, isMarkActive } from "./extensions/marks/markUtils.js";
10
11
  import { getHyperlinkAttrs, getSelectedText, isHyperlinkActive } from "./extensions/marks/HyperlinkExtension.js";
11
12
  import { clearFontFamily, clearFontSize, clearHighlight, clearTextColor, insertHyperlink, removeHyperlink, setFontFamily, setFontSize, setHighlight, setHyperlink, setTextColor, toggleBold, toggleItalic, toggleStrike, toggleSubscript, toggleSuperscript, toggleUnderline } from "./commands/formatting.js";
12
13
  import { insertImageFromFile } from "./commands/image.js";
13
14
  import { getListInfo, isInList } from "./extensions/features/ListExtension.js";
14
- import { addTabStop, alignCenter, alignJustify, alignLeft, alignRight, applyStyle, clearStyle, decreaseIndent, decreaseListLevel, generateTableOfContents, increaseIndent, increaseListLevel, removeList, removeTabStop, setAlignment, setIndentFirstLine, setIndentLeft, setIndentRight, setLineSpacing, setLtr, setRtl, toggleBidi, toggleBulletList, toggleNumberedList } from "./commands/paragraph.js";
15
+ import { addTabStop, alignCenter, alignJustify, alignLeft, alignRight, applyStyle, clearStyle, continueNumbering, decreaseIndent, decreaseListLevel, generateTableOfContents, increaseIndent, increaseListLevel, removeList, removeTabStop, restartNumbering, setAlignment, setIndentFirstLine, setIndentLeft, setIndentRight, setLineSpacing, setLtr, setNumberingValue, setRtl, toggleBidi, toggleBulletList, toggleNumberedList } from "./commands/paragraph.js";
15
16
  import { addColumnLeft, addColumnRight, addRowAbove, addRowBelow, applyTableStyle, autoFitContents, deleteColumn, deleteRow, deleteTable, distributeColumns, insertTable, mergeCells, removeTableBorders, selectColumn, selectRow, selectTable, setAllTableBorders, setCellBorder, setCellFillColor, setCellMargins, setCellTextDirection, setCellVerticalAlign, setInsideTableBorders, setOutsideTableBorders, setRowHeight, setTableBorderColor, setTableBorderPreset, setTableBorderWidth, setTableBorders, setTableProperties, splitCell, toggleHeaderRow, toggleNoWrap } from "./commands/table.js";
16
17
  import { insertPageBreak } from "./commands/pageBreak.js";
17
18
  import "./commands/index.js";
@@ -28,4 +29,4 @@ import { createDocumentStylesPlugin, documentStylesKey, getDocumentBuiltInStyles
28
29
  import "./plugins/index.js";
29
30
  import { insertPageBreakInView, insertTableInView, insertTableOfContentsInView } from "./insertOperations.js";
30
31
  import { TextSelection } from "prosemirror-state";
31
- export { type ActiveListState, type BorderPreset, type CapturedTextFormatting, type FontFamilyAttrs, type FontSizeAttrs, type FromProseDocOptions, type HyperlinkAttrs, type ImageAttrs, type ListState, type ListType, NO_LIST_STATE, PAINTABLE_MARK_NAMES, type ParagraphAttrs, type ProjectionReuse, type ProseMirrorDocumentValidationIssue, type ResolvedParagraphStyle, type SelectionChangeCallback, type SelectionContext, type SelectionState, StyleResolver, type TableBorderCommandSpec, type TableBorderPreset, type TableCellBorderCommandSpec, type TableContextInfo, type TextColorAttrs, TextSelection, type ToProseDocOptions, type UnderlineAttrs, type ValidateProseMirrorDocumentResult, addColumnLeft, addColumnRight, addRowAbove, addRowBelow, addTabStop, alignCenter, alignJustify, alignLeft, alignRight, applyFormatMarks, applyStyle, applyTableStyle, assertValidProseMirrorDocument, autoFitContents, captureFormatMarks, clearFontFamily, clearFontSize, clearFormatting, clearHighlight, clearStyle, clearTextColor, createDocumentStylesPlugin, createEmptyDoc, createSelectionTrackerPlugin, createStyleResolver, decreaseIndent, decreaseListLevel, deleteColumn, deleteRow, deleteTable, distributeColumns, documentStylesKey, ensureParaIdsInState, extractSelectionContext, extractSelectionState, formatProseMirrorDocumentIssues, fromProseDoc, generateTableOfContents, getDocumentBuiltInStyles, getDocumentStyleResolver, getHyperlinkAttrs, getListInfo, getMarkAttr, getParagraphAlignment, getParagraphBidi, getSelectedText, getSelectionContext, getStyleId, getTableContext, increaseIndent, increaseListLevel, insertHyperlink, insertImageFromFile, insertPageBreak, insertPageBreakInView, insertTable, insertTableInView, insertTableOfContentsInView, isHyperlinkActive, isInList, isInListState, isInTableCell as isInTable, isMarkActive, listStateLevel, mergeCells, removeHyperlink, removeList, removeTabStop, removeTableBorders, resolveListState, sameListState, schema, selectColumn, selectRow, selectTable, selectionTrackerKey, setAlignment, setAllTableBorders, setCellBorder, setCellFillColor, setCellMargins, setCellTextDirection, setCellVerticalAlign, setFontFamily, setFontSize, setHighlight, setHyperlink, setIndentFirstLine, setIndentLeft, setIndentRight, setInsideTableBorders, setLineSpacing, setLtr, setOutsideTableBorders, setRowHeight, setRtl, setTableBorderColor, setTableBorderPreset, setTableBorderWidth, setTableBorders, setTableProperties, setTextColor, singletonManager, splitCell, toProseDoc, toggleBidi, toggleBold, toggleBulletList, toggleHeaderRow, toggleItalic, toggleNoWrap, toggleNumberedList, toggleStrike, toggleSubscript, toggleSuperscript, toggleUnderline, updateDocumentContent, validateProseMirrorDocument };
32
+ export { type ActiveListState, type BorderPreset, type CapturedTextFormatting, type FontFamilyAttrs, type FontSizeAttrs, type FromProseDocOptions, type HyperlinkAttrs, type ImageAttrs, type ListNumberingMenuState, type ListState, type ListType, NO_LIST_NUMBERING_MENU, NO_LIST_STATE, PAINTABLE_MARK_NAMES, type ParagraphAttrs, type ProjectionReuse, type ProseMirrorDocumentValidationIssue, type ResolvedParagraphStyle, type SelectionChangeCallback, type SelectionContext, type SelectionState, StyleResolver, type TableBorderCommandSpec, type TableBorderPreset, type TableCellBorderCommandSpec, type TableContextInfo, type TextColorAttrs, TextSelection, type ToProseDocOptions, type UnderlineAttrs, type ValidateProseMirrorDocumentResult, addColumnLeft, addColumnRight, addRowAbove, addRowBelow, addTabStop, alignCenter, alignJustify, alignLeft, alignRight, applyFormatMarks, applyStyle, applyTableStyle, assertValidProseMirrorDocument, autoFitContents, captureFormatMarks, clearFontFamily, clearFontSize, clearFormatting, clearHighlight, clearStyle, clearTextColor, continueNumbering, createDocumentStylesPlugin, createEmptyDoc, createSelectionTrackerPlugin, createStyleResolver, decreaseIndent, decreaseListLevel, deleteColumn, deleteRow, deleteTable, distributeColumns, documentStylesKey, ensureParaIdsInState, extractSelectionContext, extractSelectionState, formatProseMirrorDocumentIssues, fromProseDoc, generateTableOfContents, getDocumentBuiltInStyles, getDocumentStyleResolver, getHyperlinkAttrs, getListInfo, getMarkAttr, getParagraphAlignment, getParagraphBidi, getSelectedText, getSelectionContext, getStyleId, getTableContext, increaseIndent, increaseListLevel, insertHyperlink, insertImageFromFile, insertPageBreak, insertPageBreakInView, insertTable, insertTableInView, insertTableOfContentsInView, isHyperlinkActive, isInList, isInListState, isInTableCell as isInTable, isMarkActive, listNumberingMenuState, listStateLevel, mergeCells, removeHyperlink, removeList, removeTabStop, removeTableBorders, resolveListState, restartNumbering, sameListState, schema, selectColumn, selectRow, selectTable, selectionTrackerKey, setAlignment, setAllTableBorders, setCellBorder, setCellFillColor, setCellMargins, setCellTextDirection, setCellVerticalAlign, setFontFamily, setFontSize, setHighlight, setHyperlink, setIndentFirstLine, setIndentLeft, setIndentRight, setInsideTableBorders, setLineSpacing, setLtr, setNumberingValue, setOutsideTableBorders, setRowHeight, setRtl, setTableBorderColor, setTableBorderPreset, setTableBorderWidth, setTableBorders, setTableProperties, setTextColor, singletonManager, splitCell, toProseDoc, toggleBidi, toggleBold, toggleBulletList, toggleHeaderRow, toggleItalic, toggleNoWrap, toggleNumberedList, toggleStrike, toggleSubscript, toggleSuperscript, toggleUnderline, updateDocumentContent, validateProseMirrorDocument };
@@ -2,7 +2,7 @@ import { PAINTABLE_MARK_NAMES, applyFormatMarks, captureFormatMarks } from "./co
2
2
  import { clearFontFamily, clearFontSize, clearHighlight, clearTextColor, insertHyperlink, removeHyperlink, setFontFamily, setFontSize, setHighlight, setHyperlink, setTextColor, toggleBold, toggleItalic, toggleStrike, toggleSubscript, toggleSuperscript, toggleUnderline } from "./commands/formatting.js";
3
3
  import { insertImageFromFile } from "./commands/image.js";
4
4
  import { insertPageBreak } from "./commands/pageBreak.js";
5
- import { addTabStop, alignCenter, alignJustify, alignLeft, alignRight, applyStyle, clearStyle, decreaseIndent, decreaseListLevel, generateTableOfContents, increaseIndent, increaseListLevel, removeList, removeTabStop, setAlignment, setIndentFirstLine, setIndentLeft, setIndentRight, setLineSpacing, setLtr, setRtl, toggleBidi, toggleBulletList, toggleNumberedList } from "./commands/paragraph.js";
5
+ import { addTabStop, alignCenter, alignJustify, alignLeft, alignRight, applyStyle, clearStyle, continueNumbering, decreaseIndent, decreaseListLevel, generateTableOfContents, increaseIndent, increaseListLevel, removeList, removeTabStop, restartNumbering, setAlignment, setIndentFirstLine, setIndentLeft, setIndentRight, setLineSpacing, setLtr, setNumberingValue, setRtl, toggleBidi, toggleBulletList, toggleNumberedList } from "./commands/paragraph.js";
6
6
  import { addColumnLeft, addColumnRight, addRowAbove, addRowBelow, applyTableStyle, autoFitContents, deleteColumn, deleteRow, deleteTable, distributeColumns, insertTable, mergeCells, removeTableBorders, selectColumn, selectRow, selectTable, setAllTableBorders, setCellBorder, setCellFillColor, setCellMargins, setCellTextDirection, setCellVerticalAlign, setInsideTableBorders, setOutsideTableBorders, setRowHeight, setTableBorderColor, setTableBorderPreset, setTableBorderWidth, setTableBorders, setTableProperties, splitCell, toggleHeaderRow, toggleNoWrap } from "./commands/table.js";
7
7
  import { fromProseDoc, updateDocumentContent } from "./conversion/fromProseDoc.js";
8
8
  import { createEmptyDoc, toProseDoc } from "./conversion/toProseDoc.js";
@@ -13,6 +13,7 @@ import { getHyperlinkAttrs, getSelectedText, isHyperlinkActive } from "./extensi
13
13
  import { clearFormatting, getMarkAttr, isMarkActive } from "./extensions/marks/markUtils.js";
14
14
  import { getTableContext, isInTable as isInTableCell } from "./extensions/nodes/TableExtension.js";
15
15
  import { insertPageBreakInView, insertTableInView, insertTableOfContentsInView } from "./insertOperations.js";
16
+ import { NO_LIST_NUMBERING_MENU, listNumberingMenuState } from "./listNumbering.js";
16
17
  import { NO_LIST_STATE, isInListState, listStateLevel, resolveListState, sameListState } from "./listState.js";
17
18
  import { createDocumentStylesPlugin, documentStylesKey, getDocumentBuiltInStyles, getDocumentStyleResolver } from "./plugins/documentStyles.js";
18
19
  import { createSelectionTrackerPlugin, extractSelectionContext, getSelectionContext, selectionTrackerKey } from "./plugins/selectionTracker.js";
@@ -21,4 +22,4 @@ import { extractSelectionState } from "./selectionState.js";
21
22
  import { StyleResolver, createStyleResolver } from "./styles/styleResolver.js";
22
23
  import { assertValidProseMirrorDocument, formatProseMirrorDocumentIssues, validateProseMirrorDocument } from "./validation.js";
23
24
  import { TextSelection } from "prosemirror-state";
24
- export { NO_LIST_STATE, PAINTABLE_MARK_NAMES, StyleResolver, TextSelection, addColumnLeft, addColumnRight, addRowAbove, addRowBelow, addTabStop, alignCenter, alignJustify, alignLeft, alignRight, applyFormatMarks, applyStyle, applyTableStyle, assertValidProseMirrorDocument, autoFitContents, captureFormatMarks, clearFontFamily, clearFontSize, clearFormatting, clearHighlight, clearStyle, clearTextColor, createDocumentStylesPlugin, createEmptyDoc, createSelectionTrackerPlugin, createStyleResolver, decreaseIndent, decreaseListLevel, deleteColumn, deleteRow, deleteTable, distributeColumns, documentStylesKey, ensureParaIdsInState, extractSelectionContext, extractSelectionState, formatProseMirrorDocumentIssues, fromProseDoc, generateTableOfContents, getDocumentBuiltInStyles, getDocumentStyleResolver, getHyperlinkAttrs, getListInfo, getMarkAttr, getParagraphAlignment, getParagraphBidi, getSelectedText, getSelectionContext, getStyleId, getTableContext, increaseIndent, increaseListLevel, insertHyperlink, insertImageFromFile, insertPageBreak, insertPageBreakInView, insertTable, insertTableInView, insertTableOfContentsInView, isHyperlinkActive, isInList, isInListState, isInTableCell as isInTable, isMarkActive, listStateLevel, mergeCells, removeHyperlink, removeList, removeTabStop, removeTableBorders, resolveListState, sameListState, schema, selectColumn, selectRow, selectTable, selectionTrackerKey, setAlignment, setAllTableBorders, setCellBorder, setCellFillColor, setCellMargins, setCellTextDirection, setCellVerticalAlign, setFontFamily, setFontSize, setHighlight, setHyperlink, setIndentFirstLine, setIndentLeft, setIndentRight, setInsideTableBorders, setLineSpacing, setLtr, setOutsideTableBorders, setRowHeight, setRtl, setTableBorderColor, setTableBorderPreset, setTableBorderWidth, setTableBorders, setTableProperties, setTextColor, singletonManager, splitCell, toProseDoc, toggleBidi, toggleBold, toggleBulletList, toggleHeaderRow, toggleItalic, toggleNoWrap, toggleNumberedList, toggleStrike, toggleSubscript, toggleSuperscript, toggleUnderline, updateDocumentContent, validateProseMirrorDocument };
25
+ export { NO_LIST_NUMBERING_MENU, NO_LIST_STATE, PAINTABLE_MARK_NAMES, StyleResolver, TextSelection, addColumnLeft, addColumnRight, addRowAbove, addRowBelow, addTabStop, alignCenter, alignJustify, alignLeft, alignRight, applyFormatMarks, applyStyle, applyTableStyle, assertValidProseMirrorDocument, autoFitContents, captureFormatMarks, clearFontFamily, clearFontSize, clearFormatting, clearHighlight, clearStyle, clearTextColor, continueNumbering, createDocumentStylesPlugin, createEmptyDoc, createSelectionTrackerPlugin, createStyleResolver, decreaseIndent, decreaseListLevel, deleteColumn, deleteRow, deleteTable, distributeColumns, documentStylesKey, ensureParaIdsInState, extractSelectionContext, extractSelectionState, formatProseMirrorDocumentIssues, fromProseDoc, generateTableOfContents, getDocumentBuiltInStyles, getDocumentStyleResolver, getHyperlinkAttrs, getListInfo, getMarkAttr, getParagraphAlignment, getParagraphBidi, getSelectedText, getSelectionContext, getStyleId, getTableContext, increaseIndent, increaseListLevel, insertHyperlink, insertImageFromFile, insertPageBreak, insertPageBreakInView, insertTable, insertTableInView, insertTableOfContentsInView, isHyperlinkActive, isInList, isInListState, isInTableCell as isInTable, isMarkActive, listNumberingMenuState, listStateLevel, mergeCells, removeHyperlink, removeList, removeTabStop, removeTableBorders, resolveListState, restartNumbering, sameListState, schema, selectColumn, selectRow, selectTable, selectionTrackerKey, setAlignment, setAllTableBorders, setCellBorder, setCellFillColor, setCellMargins, setCellTextDirection, setCellVerticalAlign, setFontFamily, setFontSize, setHighlight, setHyperlink, setIndentFirstLine, setIndentLeft, setIndentRight, setInsideTableBorders, setLineSpacing, setLtr, setNumberingValue, setOutsideTableBorders, setRowHeight, setRtl, setTableBorderColor, setTableBorderPreset, setTableBorderWidth, setTableBorders, setTableProperties, setTextColor, singletonManager, splitCell, toProseDoc, toggleBidi, toggleBold, toggleBulletList, toggleHeaderRow, toggleItalic, toggleNoWrap, toggleNumberedList, toggleStrike, toggleSubscript, toggleSuperscript, toggleUnderline, updateDocumentContent, validateProseMirrorDocument };
@@ -0,0 +1,17 @@
1
+ import { Node } from "prosemirror-model";
2
+ //#region src/prosemirror/indexedNodeLookup.d.ts
3
+ type NodesBetweenCallback = (node: Node, pos: number, parent: Node | null, index: number) => boolean | void;
4
+ /** `doc.nodesBetween(from, to, visit)`, locating `from` by binary search. */
5
+ declare const nodesBetweenIndexed: (doc: Node, from: number, to: number, visit: NodesBetweenCallback) => void;
6
+ /** `doc.nodeAt(pos)`. */
7
+ declare const nodeAtIndexed: (doc: Node, pos: number) => Node | null;
8
+ /**
9
+ * The innermost paragraph `doc.resolve(pos)` passes through, and the position
10
+ * before it (`$pos.before(depth)`), or null outside every paragraph.
11
+ */
12
+ declare const enclosingParagraphIndexed: (doc: Node, pos: number) => {
13
+ node: Node;
14
+ pos: number;
15
+ } | null;
16
+ //#endregion
17
+ export { enclosingParagraphIndexed, nodeAtIndexed, nodesBetweenIndexed };
@@ -0,0 +1,103 @@
1
+ //#region src/prosemirror/indexedNodeLookup.ts
2
+ /** Below this many children a linear scan is as fast as building the table. */
3
+ const LINEAR_SCAN_LIMIT = 16;
4
+ const childOffsetCache = /* @__PURE__ */ new WeakMap();
5
+ /** `offsets[i]` is where child `i` starts; `offsets[childCount]` is the size. */
6
+ const childOffsets = (fragment) => {
7
+ const cached = childOffsetCache.get(fragment);
8
+ if (cached) return cached;
9
+ const offsets = new Int32Array(fragment.childCount + 1);
10
+ let pos = 0;
11
+ fragment.forEach((child, _offset, index) => {
12
+ offsets[index] = pos;
13
+ pos += child.nodeSize;
14
+ });
15
+ offsets[fragment.childCount] = pos;
16
+ childOffsetCache.set(fragment, offsets);
17
+ return offsets;
18
+ };
19
+ /** The first child that ends after `pos` (its end is past `pos`), and its start. */
20
+ const firstChildEndingAfter = (fragment, pos) => {
21
+ if (fragment.childCount <= LINEAR_SCAN_LIMIT) {
22
+ let start = 0;
23
+ for (let index = 0; index < fragment.childCount; index++) {
24
+ const end = start + fragment.child(index).nodeSize;
25
+ if (end > pos) return [index, start];
26
+ start = end;
27
+ }
28
+ return [fragment.childCount, start];
29
+ }
30
+ const offsets = childOffsets(fragment);
31
+ let low = 0;
32
+ let high = fragment.childCount;
33
+ while (low < high) {
34
+ const middle = low + high >>> 1;
35
+ if (offsets[middle + 1] > pos) high = middle;
36
+ else low = middle + 1;
37
+ }
38
+ return [low, offsets[low]];
39
+ };
40
+ const visitBetween = (parent, from, to, visit, nodeStart) => {
41
+ const fragment = parent.content;
42
+ let [index, pos] = firstChildEndingAfter(fragment, from);
43
+ for (; pos < to; index++) {
44
+ const child = fragment.child(index);
45
+ const end = pos + child.nodeSize;
46
+ if (visit(child, nodeStart + pos, parent, index) !== false && child.content.size) {
47
+ const start = pos + 1;
48
+ visitBetween(child, Math.max(0, from - start), Math.min(child.content.size, to - start), visit, nodeStart + start);
49
+ }
50
+ pos = end;
51
+ }
52
+ };
53
+ /** `doc.nodesBetween(from, to, visit)`, locating `from` by binary search. */
54
+ const nodesBetweenIndexed = (doc, from, to, visit) => {
55
+ visitBetween(doc, from, to, visit, 0);
56
+ };
57
+ /** `Fragment.findIndex(pos)`: the child at `pos`, or the one after a boundary. */
58
+ const findChildIndex = (fragment, pos) => {
59
+ if (pos === 0) return [0, 0];
60
+ if (pos === fragment.size) return [fragment.childCount, pos];
61
+ if (pos > fragment.size || pos < 0) throw new RangeError(`Position ${String(pos)} outside of fragment (${fragment.toString()})`);
62
+ const [index, start] = firstChildEndingAfter(fragment, pos - 1);
63
+ const end = start + fragment.child(index).nodeSize;
64
+ return end === pos ? [index + 1, end] : [index, start];
65
+ };
66
+ /** `doc.nodeAt(pos)`. */
67
+ const nodeAtIndexed = (doc, pos) => {
68
+ let rest = pos;
69
+ for (let node = doc;;) {
70
+ const [index, offset] = findChildIndex(node.content, rest);
71
+ const child = node.maybeChild(index);
72
+ if (!child) return null;
73
+ if (offset === rest || child.isText) return child;
74
+ rest -= offset + 1;
75
+ node = child;
76
+ }
77
+ };
78
+ /**
79
+ * The innermost paragraph `doc.resolve(pos)` passes through, and the position
80
+ * before it (`$pos.before(depth)`), or null outside every paragraph.
81
+ */
82
+ const enclosingParagraphIndexed = (doc, pos) => {
83
+ if (!(pos >= 0 && pos <= doc.content.size)) throw new RangeError(`Position ${String(pos)} out of range`);
84
+ let paragraph = null;
85
+ let start = 0;
86
+ let parentOffset = pos;
87
+ for (let node = doc;;) {
88
+ const [index, offset] = findChildIndex(node.content, parentOffset);
89
+ const rest = parentOffset - offset;
90
+ if (!rest) return paragraph;
91
+ const child = node.child(index);
92
+ if (child.isText) return paragraph;
93
+ if (child.type.name === "paragraph") paragraph = {
94
+ node: child,
95
+ pos: start + offset
96
+ };
97
+ parentOffset = rest - 1;
98
+ start += offset + 1;
99
+ node = child;
100
+ }
101
+ };
102
+ //#endregion
103
+ export { enclosingParagraphIndexed, nodeAtIndexed, nodesBetweenIndexed };
@@ -0,0 +1,19 @@
1
+ import { ListRequest } from "./listNumbering.js";
2
+ //#region src/prosemirror/listAutoformatMarkers.d.ts
3
+ /**
4
+ * A marker plus the space that triggers the conversion. The text before the
5
+ * caret must be exactly this, so a marker typed mid-paragraph never matches.
6
+ */
7
+ declare const LIST_MARKER_PATTERN: RegExp;
8
+ /**
9
+ * The lists `text` (the paragraph's text up to and including the typed space)
10
+ * may ask for, most likely first, or `null` when it is not a marker.
11
+ *
12
+ * A single letter that is also a roman digit is ambiguous: `i.` usually
13
+ * starts a roman list, but directly under an `h.` item it continues the
14
+ * letters. The caller prefers whichever interpretation a neighbouring list
15
+ * already has, and otherwise takes the first.
16
+ */
17
+ declare const listRequestsForMarker: (text: string) => ListRequest[] | null;
18
+ //#endregion
19
+ export { LIST_MARKER_PATTERN, listRequestsForMarker };
@@ -0,0 +1,98 @@
1
+ //#region src/prosemirror/listAutoformatMarkers.ts
2
+ /**
3
+ * A marker plus the space that triggers the conversion. The text before the
4
+ * caret must be exactly this, so a marker typed mid-paragraph never matches.
5
+ */
6
+ const LIST_MARKER_PATTERN = /^(?:[-*]|\d{1,3}[.)]|[A-Za-z]+[.)]) $/u;
7
+ const BULLET_PATTERN = /^[-*] $/u;
8
+ const NUMBER_PATTERN = /^(?<value>\d{1,3})(?<punctuation>[.)]) $/u;
9
+ const LETTERS_PATTERN = /^(?<letters>[a-z]+|[A-Z]+)(?<punctuation>[.)]) $/u;
10
+ /**
11
+ * The largest roman numeral read as a list marker. Past it the letters spell
12
+ * words (`mix`, `civil`, `dim`) far more often than list items.
13
+ */
14
+ const MAX_ROMAN_MARKER = 50;
15
+ const ROMAN_VALUES = [
16
+ ["m", 1e3],
17
+ ["cm", 900],
18
+ ["d", 500],
19
+ ["cd", 400],
20
+ ["c", 100],
21
+ ["xc", 90],
22
+ ["l", 50],
23
+ ["xl", 40],
24
+ ["x", 10],
25
+ ["ix", 9],
26
+ ["v", 5],
27
+ ["iv", 4],
28
+ ["i", 1]
29
+ ];
30
+ const toRoman = (value) => {
31
+ let remaining = value;
32
+ let roman = "";
33
+ for (const [digits, digitValue] of ROMAN_VALUES) while (remaining >= digitValue) {
34
+ roman += digits;
35
+ remaining -= digitValue;
36
+ }
37
+ return roman;
38
+ };
39
+ const ROMAN_DIGIT_VALUES = {
40
+ i: 1,
41
+ v: 5,
42
+ x: 10,
43
+ l: 50,
44
+ c: 100,
45
+ d: 500,
46
+ m: 1e3
47
+ };
48
+ /** The value of a canonically spelled roman numeral, or `undefined`. */
49
+ const romanValue = (letters) => {
50
+ const lower = letters.toLowerCase();
51
+ let total = 0;
52
+ for (let index = 0; index < lower.length; index += 1) {
53
+ const value = ROMAN_DIGIT_VALUES[lower.charAt(index)];
54
+ if (value === void 0) return;
55
+ const next = ROMAN_DIGIT_VALUES[lower.charAt(index + 1)] ?? 0;
56
+ total += value < next ? -value : value;
57
+ }
58
+ return total > 0 && toRoman(total) === lower ? total : void 0;
59
+ };
60
+ const numbered = (numFmt, punctuation, start) => ({
61
+ kind: "numbered",
62
+ format: {
63
+ numFmt,
64
+ lvlText: `%1${punctuation}`
65
+ },
66
+ start
67
+ });
68
+ const letterFormat = (letters) => letters === letters.toUpperCase() ? "upperLetter" : "lowerLetter";
69
+ const romanFormat = (letters) => letters === letters.toUpperCase() ? "upperRoman" : "lowerRoman";
70
+ /**
71
+ * The lists `text` (the paragraph's text up to and including the typed space)
72
+ * may ask for, most likely first, or `null` when it is not a marker.
73
+ *
74
+ * A single letter that is also a roman digit is ambiguous: `i.` usually
75
+ * starts a roman list, but directly under an `h.` item it continues the
76
+ * letters. The caller prefers whichever interpretation a neighbouring list
77
+ * already has, and otherwise takes the first.
78
+ */
79
+ const listRequestsForMarker = (text) => {
80
+ if (BULLET_PATTERN.test(text)) return [{ kind: "bullet" }];
81
+ const number = NUMBER_PATTERN.exec(text)?.groups;
82
+ if (number) {
83
+ const value = Number.parseInt(number["value"] ?? "", 10);
84
+ return value >= 1 ? [numbered("decimal", number["punctuation"] ?? ".", value)] : null;
85
+ }
86
+ const lettered = LETTERS_PATTERN.exec(text)?.groups;
87
+ if (!lettered) return null;
88
+ const letters = lettered["letters"] ?? "";
89
+ const punctuation = lettered["punctuation"] ?? ".";
90
+ const roman = romanValue(letters);
91
+ const asRoman = roman !== void 0 && roman <= MAX_ROMAN_MARKER ? numbered(romanFormat(letters), punctuation, roman) : void 0;
92
+ if (letters.length > 1) return asRoman ? [asRoman] : null;
93
+ const asLetter = numbered(letterFormat(letters), punctuation, letters.toLowerCase().charCodeAt(0) - "a".charCodeAt(0) + 1);
94
+ if (!asRoman) return [asLetter];
95
+ return roman === 1 ? [asRoman, asLetter] : [asLetter, asRoman];
96
+ };
97
+ //#endregion
98
+ export { LIST_MARKER_PATTERN, listRequestsForMarker };
@@ -0,0 +1,12 @@
1
+ import { document_d_exports } from "../types/document.js";
2
+ import { Node } from "prosemirror-model";
3
+ //#region src/prosemirror/listInstanceReferences.d.ts
4
+ /** The instances one paragraph names, live or as a tracked change's previous state. */
5
+ declare const paragraphListReferences: (node: Node) => number[];
6
+ /**
7
+ * `definitions` plus every instance `doc` references and only its paragraphs
8
+ * define: what the package's numbering part has to hold for `doc` to save.
9
+ */
10
+ declare const completeNumberingForDoc: (definitions: document_d_exports.NumberingDefinitions | undefined, doc: Node) => document_d_exports.NumberingDefinitions | undefined;
11
+ //#endregion
12
+ export { completeNumberingForDoc, paragraphListReferences };
@@ -0,0 +1,72 @@
1
+ import { completeListNumbering } from "../docx/listNumberingInstances.js";
2
+ import { paragraphNumberingLevel, paragraphNumberingReferenceId } from "../docx/numberingReference.js";
3
+ import { expectParagraphAttrs } from "./attrs/index.js";
4
+ import { hasListRendering, listRenderingFromAttrs } from "./listRenderingAttrs.js";
5
+ //#region src/prosemirror/listInstanceReferences.ts
6
+ const PARAGRAPH_NODE = "paragraph";
7
+ /**
8
+ * Record `attrs`' reference when it names an instance the package lacks and
9
+ * states what it renders as. A reference with no rendering carries nothing to
10
+ * define an instance from.
11
+ */
12
+ const collectReference = (attrs, sink) => {
13
+ const numId = paragraphNumberingReferenceId(attrs.numPr);
14
+ if (numId === void 0 || sink.isDefined(numId)) return;
15
+ if (!hasListRendering(attrs)) return;
16
+ sink.references.push({
17
+ numId,
18
+ ilvl: paragraphNumberingLevel(attrs.numPr) ?? 0,
19
+ rendering: listRenderingFromAttrs({
20
+ attrs,
21
+ numId
22
+ })
23
+ });
24
+ };
25
+ /**
26
+ * Every reference in `doc`, live or recorded as a tracked change's previous
27
+ * state, to an instance `isDefined` does not know. A rejected change restores
28
+ * its previous numbering, so that instance has to exist as well.
29
+ */
30
+ const undefinedListInstanceReferences = (doc, isDefined) => {
31
+ const sink = {
32
+ isDefined,
33
+ references: []
34
+ };
35
+ doc.descendants((node) => {
36
+ if (node.type.name !== PARAGRAPH_NODE) return true;
37
+ const attrs = expectParagraphAttrs(node);
38
+ collectReference(attrs, sink);
39
+ for (const change of attrs._propertyChanges ?? []) {
40
+ const previous = change.previousFormatting;
41
+ if (previous?.numPr) collectReference({
42
+ ...previous,
43
+ numPr: previous.numPr
44
+ }, sink);
45
+ }
46
+ return false;
47
+ });
48
+ return sink.references;
49
+ };
50
+ /** The instances one paragraph names, live or as a tracked change's previous state. */
51
+ const paragraphListReferences = (node) => {
52
+ if (node.type.name !== PARAGRAPH_NODE) return [];
53
+ const attrs = expectParagraphAttrs(node);
54
+ const numIds = [];
55
+ const add = (numPr) => {
56
+ const numId = paragraphNumberingReferenceId(numPr ?? void 0);
57
+ if (numId !== void 0) numIds.push(numId);
58
+ };
59
+ add(attrs.numPr);
60
+ for (const change of attrs._propertyChanges ?? []) add(change.previousFormatting?.numPr);
61
+ return numIds;
62
+ };
63
+ /**
64
+ * `definitions` plus every instance `doc` references and only its paragraphs
65
+ * define: what the package's numbering part has to hold for `doc` to save.
66
+ */
67
+ const completeNumberingForDoc = (definitions, doc) => {
68
+ const defined = new Set((definitions?.nums ?? []).map(({ numId }) => numId));
69
+ return completeListNumbering(definitions, undefinedListInstanceReferences(doc, (numId) => defined.has(numId)));
70
+ };
71
+ //#endregion
72
+ export { completeNumberingForDoc, paragraphListReferences };
@@ -0,0 +1,24 @@
1
+ import { document_d_exports } from "../types/document.js";
2
+ import { ParagraphAttrs } from "./schema/nodes.js";
3
+ import { ParagraphNumberingOverride } from "../docx/numberingReference.js";
4
+ //#region src/prosemirror/listLabels.d.ts
5
+ /**
6
+ * The attrs the counter reads for a paragraph of the document model, as
7
+ * `toProseDoc` projects them (`listRenderingAttrPatch`), without the layout
8
+ * attrs no label depends on: a reader that walks the model (Markdown) counts
9
+ * every list paragraph through here.
10
+ */
11
+ declare const listLabelAttrsFromRendering: (rendering: document_d_exports.ListRendering, numPrFromStyle: ParagraphNumberingOverride | undefined) => ParagraphAttrs;
12
+ /**
13
+ * Advances past one paragraph and answers the label it shows, or `undefined`
14
+ * when it shows none.
15
+ */
16
+ type ListLabelCounter = (attrs: Readonly<ParagraphAttrs>) => string | undefined;
17
+ /**
18
+ * A counter over paragraph attrs in document order. Call it for every
19
+ * paragraph, numbered or not: whether a list continues depends on what stands
20
+ * between its items.
21
+ */
22
+ declare const createListLabelCounter: () => ListLabelCounter;
23
+ //#endregion
24
+ export { ListLabelCounter, createListLabelCounter, listLabelAttrsFromRendering };