phormat 0.0.5

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 (489) hide show
  1. package/README.md +102 -0
  2. package/dist/assets/example-test.svelte +228 -0
  3. package/dist/debug/JsonDebug.svelte +19 -0
  4. package/dist/debug/JsonDebug.svelte.d.ts +6 -0
  5. package/dist/debug/JsonDebugNode.svelte +138 -0
  6. package/dist/debug/JsonDebugNode.svelte.d.ts +11 -0
  7. package/dist/demo/documentLifecycle.d.ts +57 -0
  8. package/dist/demo/documentLifecycle.js +196 -0
  9. package/dist/demo/index.d.ts +2 -0
  10. package/dist/demo/index.js +2 -0
  11. package/dist/editor/BlockEditor.svelte +112 -0
  12. package/dist/editor/BlockEditor.svelte.d.ts +7 -0
  13. package/dist/editor/BlockRow.svelte +76 -0
  14. package/dist/editor/BlockRow.svelte.d.ts +20 -0
  15. package/dist/editor/Editor.svelte +103 -0
  16. package/dist/editor/Editor.svelte.d.ts +7 -0
  17. package/dist/editor/MarkdownEditor.svelte.d.ts +160 -0
  18. package/dist/editor/MarkdownEditor.svelte.js +1119 -0
  19. package/dist/editor/NestedRowChrome.svelte +160 -0
  20. package/dist/editor/NestedRowChrome.svelte.d.ts +20 -0
  21. package/dist/editor/PhormatEditor.svelte +206 -0
  22. package/dist/editor/PhormatEditor.svelte.d.ts +26 -0
  23. package/dist/editor/RawMarkdownPanel.svelte +39 -0
  24. package/dist/editor/RawMarkdownPanel.svelte.d.ts +6 -0
  25. package/dist/editor/block-specs/BlockSpecMissing.svelte +12 -0
  26. package/dist/editor/block-specs/BlockSpecMissing.svelte.d.ts +7 -0
  27. package/dist/editor/block-specs/blockquote/BlockquoteRenderer.svelte +32 -0
  28. package/dist/editor/block-specs/blockquote/BlockquoteRenderer.svelte.d.ts +21 -0
  29. package/dist/editor/block-specs/blockquote/commands.d.ts +2 -0
  30. package/dist/editor/block-specs/blockquote/commands.js +65 -0
  31. package/dist/editor/block-specs/blockquote/index.d.ts +6 -0
  32. package/dist/editor/block-specs/blockquote/index.js +5 -0
  33. package/dist/editor/block-specs/blockquote/inlineSecondPass.d.ts +6 -0
  34. package/dist/editor/block-specs/blockquote/inlineSecondPass.js +35 -0
  35. package/dist/editor/block-specs/blockquote/parse.d.ts +16 -0
  36. package/dist/editor/block-specs/blockquote/parse.js +188 -0
  37. package/dist/editor/block-specs/blockquote/reconcile.d.ts +2 -0
  38. package/dist/editor/block-specs/blockquote/reconcile.js +9 -0
  39. package/dist/editor/block-specs/blockquote/serialize.d.ts +6 -0
  40. package/dist/editor/block-specs/blockquote/serialize.js +55 -0
  41. package/dist/editor/block-specs/blockquote/types.d.ts +20 -0
  42. package/dist/editor/block-specs/blockquote/types.js +1 -0
  43. package/dist/editor/block-specs/blockquoteSpec.d.ts +4 -0
  44. package/dist/editor/block-specs/blockquoteSpec.js +37 -0
  45. package/dist/editor/block-specs/callout/CalloutRenderer.svelte +38 -0
  46. package/dist/editor/block-specs/callout/CalloutRenderer.svelte.d.ts +21 -0
  47. package/dist/editor/block-specs/callout/CalloutTypeIcon.svelte +14 -0
  48. package/dist/editor/block-specs/callout/CalloutTypeIcon.svelte.d.ts +7 -0
  49. package/dist/editor/block-specs/callout/commands.d.ts +2 -0
  50. package/dist/editor/block-specs/callout/commands.js +65 -0
  51. package/dist/editor/block-specs/callout/icons.d.ts +10 -0
  52. package/dist/editor/block-specs/callout/icons.js +52 -0
  53. package/dist/editor/block-specs/callout/index.d.ts +9 -0
  54. package/dist/editor/block-specs/callout/index.js +7 -0
  55. package/dist/editor/block-specs/callout/inlineSecondPass.d.ts +6 -0
  56. package/dist/editor/block-specs/callout/inlineSecondPass.js +9 -0
  57. package/dist/editor/block-specs/callout/parse.d.ts +9 -0
  58. package/dist/editor/block-specs/callout/parse.js +83 -0
  59. package/dist/editor/block-specs/callout/parseBody.d.ts +6 -0
  60. package/dist/editor/block-specs/callout/parseBody.js +290 -0
  61. package/dist/editor/block-specs/callout/reconcile.d.ts +2 -0
  62. package/dist/editor/block-specs/callout/reconcile.js +8 -0
  63. package/dist/editor/block-specs/callout/serialize.d.ts +5 -0
  64. package/dist/editor/block-specs/callout/serialize.js +65 -0
  65. package/dist/editor/block-specs/callout/types.d.ts +7 -0
  66. package/dist/editor/block-specs/callout/types.js +1 -0
  67. package/dist/editor/block-specs/calloutSpec.d.ts +2 -0
  68. package/dist/editor/block-specs/calloutSpec.js +23 -0
  69. package/dist/editor/block-specs/codeFence/CodeFenceRenderer.svelte +18 -0
  70. package/dist/editor/block-specs/codeFence/CodeFenceRenderer.svelte.d.ts +21 -0
  71. package/dist/editor/block-specs/codeFence/commands.d.ts +2 -0
  72. package/dist/editor/block-specs/codeFence/commands.js +1 -0
  73. package/dist/editor/block-specs/codeFence/index.d.ts +5 -0
  74. package/dist/editor/block-specs/codeFence/index.js +4 -0
  75. package/dist/editor/block-specs/codeFence/inlineSecondPass.d.ts +3 -0
  76. package/dist/editor/block-specs/codeFence/inlineSecondPass.js +5 -0
  77. package/dist/editor/block-specs/codeFence/reconcile.d.ts +2 -0
  78. package/dist/editor/block-specs/codeFence/reconcile.js +5 -0
  79. package/dist/editor/block-specs/codeFence/serialize.d.ts +2 -0
  80. package/dist/editor/block-specs/codeFence/serialize.js +8 -0
  81. package/dist/editor/block-specs/codeFence/types.d.ts +6 -0
  82. package/dist/editor/block-specs/codeFence/types.js +1 -0
  83. package/dist/editor/block-specs/codeFenceSpec.d.ts +2 -0
  84. package/dist/editor/block-specs/codeFenceSpec.js +23 -0
  85. package/dist/editor/block-specs/columns/ColumnsRenderer.svelte +18 -0
  86. package/dist/editor/block-specs/columns/ColumnsRenderer.svelte.d.ts +21 -0
  87. package/dist/editor/block-specs/columns/EditableColumns.svelte +16 -0
  88. package/dist/editor/block-specs/columns/EditableColumns.svelte.d.ts +4 -0
  89. package/dist/editor/block-specs/columns/commands.d.ts +2 -0
  90. package/dist/editor/block-specs/columns/commands.js +1 -0
  91. package/dist/editor/block-specs/columns/index.d.ts +6 -0
  92. package/dist/editor/block-specs/columns/index.js +5 -0
  93. package/dist/editor/block-specs/columns/inlineSecondPass.d.ts +3 -0
  94. package/dist/editor/block-specs/columns/inlineSecondPass.js +5 -0
  95. package/dist/editor/block-specs/columns/parse.d.ts +20 -0
  96. package/dist/editor/block-specs/columns/parse.js +111 -0
  97. package/dist/editor/block-specs/columns/reconcile.d.ts +2 -0
  98. package/dist/editor/block-specs/columns/reconcile.js +6 -0
  99. package/dist/editor/block-specs/columns/serialize.d.ts +2 -0
  100. package/dist/editor/block-specs/columns/serialize.js +16 -0
  101. package/dist/editor/block-specs/columns/types.d.ts +4 -0
  102. package/dist/editor/block-specs/columns/types.js +1 -0
  103. package/dist/editor/block-specs/columnsSpec.d.ts +2 -0
  104. package/dist/editor/block-specs/columnsSpec.js +24 -0
  105. package/dist/editor/block-specs/heading/HeaderRenderer.svelte +30 -0
  106. package/dist/editor/block-specs/heading/HeaderRenderer.svelte.d.ts +21 -0
  107. package/dist/editor/block-specs/heading/commands.d.ts +2 -0
  108. package/dist/editor/block-specs/heading/commands.js +41 -0
  109. package/dist/editor/block-specs/heading/edit.d.ts +10 -0
  110. package/dist/editor/block-specs/heading/edit.js +33 -0
  111. package/dist/editor/block-specs/heading/index.d.ts +7 -0
  112. package/dist/editor/block-specs/heading/index.js +6 -0
  113. package/dist/editor/block-specs/heading/inlineSecondPass.d.ts +4 -0
  114. package/dist/editor/block-specs/heading/inlineSecondPass.js +20 -0
  115. package/dist/editor/block-specs/heading/parse.d.ts +5 -0
  116. package/dist/editor/block-specs/heading/parse.js +18 -0
  117. package/dist/editor/block-specs/heading/reconcile.d.ts +2 -0
  118. package/dist/editor/block-specs/heading/reconcile.js +8 -0
  119. package/dist/editor/block-specs/heading/serialize.d.ts +2 -0
  120. package/dist/editor/block-specs/heading/serialize.js +9 -0
  121. package/dist/editor/block-specs/heading/types.d.ts +5 -0
  122. package/dist/editor/block-specs/heading/types.js +1 -0
  123. package/dist/editor/block-specs/headingSpec.d.ts +2 -0
  124. package/dist/editor/block-specs/headingSpec.js +28 -0
  125. package/dist/editor/block-specs/horizontalRule/HorizontalRuleRenderer.svelte +15 -0
  126. package/dist/editor/block-specs/horizontalRule/HorizontalRuleRenderer.svelte.d.ts +21 -0
  127. package/dist/editor/block-specs/horizontalRule/commands.d.ts +2 -0
  128. package/dist/editor/block-specs/horizontalRule/commands.js +1 -0
  129. package/dist/editor/block-specs/horizontalRule/index.d.ts +6 -0
  130. package/dist/editor/block-specs/horizontalRule/index.js +5 -0
  131. package/dist/editor/block-specs/horizontalRule/inlineSecondPass.d.ts +3 -0
  132. package/dist/editor/block-specs/horizontalRule/inlineSecondPass.js +5 -0
  133. package/dist/editor/block-specs/horizontalRule/parse.d.ts +2 -0
  134. package/dist/editor/block-specs/horizontalRule/parse.js +15 -0
  135. package/dist/editor/block-specs/horizontalRule/reconcile.d.ts +2 -0
  136. package/dist/editor/block-specs/horizontalRule/reconcile.js +5 -0
  137. package/dist/editor/block-specs/horizontalRule/serialize.d.ts +2 -0
  138. package/dist/editor/block-specs/horizontalRule/serialize.js +3 -0
  139. package/dist/editor/block-specs/horizontalRule/types.d.ts +3 -0
  140. package/dist/editor/block-specs/horizontalRule/types.js +1 -0
  141. package/dist/editor/block-specs/horizontalRuleSpec.d.ts +2 -0
  142. package/dist/editor/block-specs/horizontalRuleSpec.js +24 -0
  143. package/dist/editor/block-specs/list/ListRenderer.svelte +70 -0
  144. package/dist/editor/block-specs/list/ListRenderer.svelte.d.ts +21 -0
  145. package/dist/editor/block-specs/list/commands.d.ts +2 -0
  146. package/dist/editor/block-specs/list/commands.js +65 -0
  147. package/dist/editor/block-specs/list/index.d.ts +6 -0
  148. package/dist/editor/block-specs/list/index.js +5 -0
  149. package/dist/editor/block-specs/list/inlineSecondPass.d.ts +6 -0
  150. package/dist/editor/block-specs/list/inlineSecondPass.js +78 -0
  151. package/dist/editor/block-specs/list/parse.d.ts +11 -0
  152. package/dist/editor/block-specs/list/parse.js +312 -0
  153. package/dist/editor/block-specs/list/reconcile.d.ts +2 -0
  154. package/dist/editor/block-specs/list/reconcile.js +6 -0
  155. package/dist/editor/block-specs/list/serialize.d.ts +4 -0
  156. package/dist/editor/block-specs/list/serialize.js +83 -0
  157. package/dist/editor/block-specs/list/types.d.ts +27 -0
  158. package/dist/editor/block-specs/list/types.js +1 -0
  159. package/dist/editor/block-specs/listSpec.d.ts +4 -0
  160. package/dist/editor/block-specs/listSpec.js +24 -0
  161. package/dist/editor/block-specs/paragraph/ParagraphRenderer.svelte +22 -0
  162. package/dist/editor/block-specs/paragraph/ParagraphRenderer.svelte.d.ts +21 -0
  163. package/dist/editor/block-specs/paragraph/commands.d.ts +2 -0
  164. package/dist/editor/block-specs/paragraph/commands.js +41 -0
  165. package/dist/editor/block-specs/paragraph/edit.d.ts +10 -0
  166. package/dist/editor/block-specs/paragraph/edit.js +69 -0
  167. package/dist/editor/block-specs/paragraph/index.d.ts +7 -0
  168. package/dist/editor/block-specs/paragraph/index.js +6 -0
  169. package/dist/editor/block-specs/paragraph/inlineSecondPass.d.ts +3 -0
  170. package/dist/editor/block-specs/paragraph/inlineSecondPass.js +25 -0
  171. package/dist/editor/block-specs/paragraph/parse.d.ts +9 -0
  172. package/dist/editor/block-specs/paragraph/parse.js +76 -0
  173. package/dist/editor/block-specs/paragraph/reconcile.d.ts +2 -0
  174. package/dist/editor/block-specs/paragraph/reconcile.js +9 -0
  175. package/dist/editor/block-specs/paragraph/serialize.d.ts +4 -0
  176. package/dist/editor/block-specs/paragraph/serialize.js +39 -0
  177. package/dist/editor/block-specs/paragraph/types.d.ts +10 -0
  178. package/dist/editor/block-specs/paragraph/types.js +1 -0
  179. package/dist/editor/block-specs/paragraphSpec.d.ts +2 -0
  180. package/dist/editor/block-specs/paragraphSpec.js +24 -0
  181. package/dist/editor/block-specs/registry.d.ts +10 -0
  182. package/dist/editor/block-specs/registry.js +34 -0
  183. package/dist/editor/block-specs/table/TableRenderer.svelte +53 -0
  184. package/dist/editor/block-specs/table/TableRenderer.svelte.d.ts +21 -0
  185. package/dist/editor/block-specs/table/commands.d.ts +2 -0
  186. package/dist/editor/block-specs/table/commands.js +1 -0
  187. package/dist/editor/block-specs/table/edit.d.ts +10 -0
  188. package/dist/editor/block-specs/table/edit.js +127 -0
  189. package/dist/editor/block-specs/table/editCommands.d.ts +18 -0
  190. package/dist/editor/block-specs/table/editCommands.js +87 -0
  191. package/dist/editor/block-specs/table/index.d.ts +8 -0
  192. package/dist/editor/block-specs/table/index.js +6 -0
  193. package/dist/editor/block-specs/table/inlineSecondPass.d.ts +3 -0
  194. package/dist/editor/block-specs/table/inlineSecondPass.js +22 -0
  195. package/dist/editor/block-specs/table/parse.d.ts +17 -0
  196. package/dist/editor/block-specs/table/parse.js +181 -0
  197. package/dist/editor/block-specs/table/reconcile.d.ts +2 -0
  198. package/dist/editor/block-specs/table/reconcile.js +6 -0
  199. package/dist/editor/block-specs/table/serialize.d.ts +3 -0
  200. package/dist/editor/block-specs/table/serialize.js +32 -0
  201. package/dist/editor/block-specs/table/types.d.ts +11 -0
  202. package/dist/editor/block-specs/table/types.js +1 -0
  203. package/dist/editor/block-specs/tableSpec.d.ts +2 -0
  204. package/dist/editor/block-specs/tableSpec.js +25 -0
  205. package/dist/editor/block-specs/toc/EditableToc.svelte +16 -0
  206. package/dist/editor/block-specs/toc/EditableToc.svelte.d.ts +4 -0
  207. package/dist/editor/block-specs/toc/TocRenderer.svelte +22 -0
  208. package/dist/editor/block-specs/toc/TocRenderer.svelte.d.ts +21 -0
  209. package/dist/editor/block-specs/toc/commands.d.ts +2 -0
  210. package/dist/editor/block-specs/toc/commands.js +1 -0
  211. package/dist/editor/block-specs/toc/index.d.ts +6 -0
  212. package/dist/editor/block-specs/toc/index.js +5 -0
  213. package/dist/editor/block-specs/toc/inlineSecondPass.d.ts +3 -0
  214. package/dist/editor/block-specs/toc/inlineSecondPass.js +5 -0
  215. package/dist/editor/block-specs/toc/parse.d.ts +10 -0
  216. package/dist/editor/block-specs/toc/parse.js +43 -0
  217. package/dist/editor/block-specs/toc/reconcile.d.ts +2 -0
  218. package/dist/editor/block-specs/toc/reconcile.js +5 -0
  219. package/dist/editor/block-specs/toc/serialize.d.ts +2 -0
  220. package/dist/editor/block-specs/toc/serialize.js +6 -0
  221. package/dist/editor/block-specs/toc/types.d.ts +8 -0
  222. package/dist/editor/block-specs/toc/types.js +1 -0
  223. package/dist/editor/block-specs/tocSpec.d.ts +2 -0
  224. package/dist/editor/block-specs/tocSpec.js +24 -0
  225. package/dist/editor/block-specs/toggle/ToggleRenderer.svelte +19 -0
  226. package/dist/editor/block-specs/toggle/ToggleRenderer.svelte.d.ts +21 -0
  227. package/dist/editor/block-specs/toggle/commands.d.ts +2 -0
  228. package/dist/editor/block-specs/toggle/commands.js +1 -0
  229. package/dist/editor/block-specs/toggle/index.d.ts +7 -0
  230. package/dist/editor/block-specs/toggle/index.js +5 -0
  231. package/dist/editor/block-specs/toggle/inlineSecondPass.d.ts +3 -0
  232. package/dist/editor/block-specs/toggle/inlineSecondPass.js +5 -0
  233. package/dist/editor/block-specs/toggle/parse.d.ts +9 -0
  234. package/dist/editor/block-specs/toggle/parse.js +78 -0
  235. package/dist/editor/block-specs/toggle/reconcile.d.ts +2 -0
  236. package/dist/editor/block-specs/toggle/reconcile.js +6 -0
  237. package/dist/editor/block-specs/toggle/serialize.d.ts +4 -0
  238. package/dist/editor/block-specs/toggle/serialize.js +13 -0
  239. package/dist/editor/block-specs/toggle/types.d.ts +5 -0
  240. package/dist/editor/block-specs/toggle/types.js +1 -0
  241. package/dist/editor/block-specs/toggleSpec.d.ts +2 -0
  242. package/dist/editor/block-specs/toggleSpec.js +24 -0
  243. package/dist/editor/block-specs/types.d.ts +26 -0
  244. package/dist/editor/block-specs/types.js +1 -0
  245. package/dist/editor/blocks/EditableBlockquote.svelte +52 -0
  246. package/dist/editor/blocks/EditableBlockquote.svelte.d.ts +10 -0
  247. package/dist/editor/blocks/EditableBlockquoteNodes.svelte +134 -0
  248. package/dist/editor/blocks/EditableBlockquoteNodes.svelte.d.ts +14 -0
  249. package/dist/editor/blocks/EditableBlockquoteParagraph.svelte +44 -0
  250. package/dist/editor/blocks/EditableBlockquoteParagraph.svelte.d.ts +12 -0
  251. package/dist/editor/blocks/EditableCallout.svelte +182 -0
  252. package/dist/editor/blocks/EditableCallout.svelte.d.ts +11 -0
  253. package/dist/editor/blocks/EditableCalloutListItemRow.svelte +169 -0
  254. package/dist/editor/blocks/EditableCalloutListItemRow.svelte.d.ts +15 -0
  255. package/dist/editor/blocks/EditableCalloutNodes.svelte +91 -0
  256. package/dist/editor/blocks/EditableCalloutNodes.svelte.d.ts +13 -0
  257. package/dist/editor/blocks/EditableCalloutParagraph.svelte +39 -0
  258. package/dist/editor/blocks/EditableCalloutParagraph.svelte.d.ts +12 -0
  259. package/dist/editor/blocks/EditableCodeBlock.svelte +43 -0
  260. package/dist/editor/blocks/EditableCodeBlock.svelte.d.ts +10 -0
  261. package/dist/editor/blocks/EditableHeading.svelte +161 -0
  262. package/dist/editor/blocks/EditableHeading.svelte.d.ts +10 -0
  263. package/dist/editor/blocks/EditableHorizontalRule.svelte +20 -0
  264. package/dist/editor/blocks/EditableHorizontalRule.svelte.d.ts +10 -0
  265. package/dist/editor/blocks/EditableInlineSurface.svelte +423 -0
  266. package/dist/editor/blocks/EditableInlineSurface.svelte.d.ts +26 -0
  267. package/dist/editor/blocks/EditableList.svelte +77 -0
  268. package/dist/editor/blocks/EditableList.svelte.d.ts +17 -0
  269. package/dist/editor/blocks/EditableListItemRow.svelte +231 -0
  270. package/dist/editor/blocks/EditableListItemRow.svelte.d.ts +19 -0
  271. package/dist/editor/blocks/EditableParagraph.svelte +208 -0
  272. package/dist/editor/blocks/EditableParagraph.svelte.d.ts +10 -0
  273. package/dist/editor/blocks/EditableParagraphNodes.svelte +89 -0
  274. package/dist/editor/blocks/EditableParagraphNodes.svelte.d.ts +15 -0
  275. package/dist/editor/blocks/EditableTable.svelte +83 -0
  276. package/dist/editor/blocks/EditableTable.svelte.d.ts +10 -0
  277. package/dist/editor/blocks/EditableTableCell.svelte +89 -0
  278. package/dist/editor/blocks/EditableTableCell.svelte.d.ts +15 -0
  279. package/dist/editor/blocks/EditableToggle.svelte +94 -0
  280. package/dist/editor/blocks/EditableToggle.svelte.d.ts +10 -0
  281. package/dist/editor/commandMenu.d.ts +18 -0
  282. package/dist/editor/commandMenu.js +83 -0
  283. package/dist/editor/commandRegistry.d.ts +48 -0
  284. package/dist/editor/commandRegistry.js +133 -0
  285. package/dist/editor/context/assetBaseUrl.d.ts +6 -0
  286. package/dist/editor/context/assetBaseUrl.js +20 -0
  287. package/dist/editor/dom/editorHistoryKeydown.d.ts +6 -0
  288. package/dist/editor/dom/editorHistoryKeydown.js +31 -0
  289. package/dist/editor/dom/plainEnterKeydown.d.ts +12 -0
  290. package/dist/editor/dom/plainEnterKeydown.js +53 -0
  291. package/dist/editor/dom/plaintextCaret.d.ts +12 -0
  292. package/dist/editor/dom/plaintextCaret.js +61 -0
  293. package/dist/editor/dom/syncDocumentSelectionFocus.d.ts +17 -0
  294. package/dist/editor/dom/syncDocumentSelectionFocus.js +56 -0
  295. package/dist/editor/draftPersistence.d.ts +27 -0
  296. package/dist/editor/draftPersistence.js +83 -0
  297. package/dist/editor/editorHistoryHandle.d.ts +16 -0
  298. package/dist/editor/editorHistoryHandle.js +22 -0
  299. package/dist/editor/inlineChrome/InlineChromeCoordinator.svelte +174 -0
  300. package/dist/editor/inlineChrome/InlineChromeCoordinator.svelte.d.ts +8 -0
  301. package/dist/editor/inlineChrome/InlineFormattingToolbar.svelte +181 -0
  302. package/dist/editor/inlineChrome/InlineFormattingToolbar.svelte.d.ts +3 -0
  303. package/dist/editor/inlineChrome/inlineChromeActions.d.ts +17 -0
  304. package/dist/editor/inlineChrome/inlineChromeActions.js +148 -0
  305. package/dist/editor/inlineChrome/inlineChromeState.svelte.d.ts +23 -0
  306. package/dist/editor/inlineChrome/inlineChromeState.svelte.js +21 -0
  307. package/dist/editor/inlineChrome/inlineToolbarIcons.d.ts +14 -0
  308. package/dist/editor/inlineChrome/inlineToolbarIcons.js +14 -0
  309. package/dist/editor/inlineChrome/inlineWrapActive.d.ts +3 -0
  310. package/dist/editor/inlineChrome/inlineWrapActive.js +19 -0
  311. package/dist/editor/inlineChrome/selectionRect.d.ts +2 -0
  312. package/dist/editor/inlineChrome/selectionRect.js +23 -0
  313. package/dist/editor/model/blockEditCommands.d.ts +73 -0
  314. package/dist/editor/model/blockEditCommands.js +719 -0
  315. package/dist/editor/model/blockTree.d.ts +39 -0
  316. package/dist/editor/model/blockTree.js +185 -0
  317. package/dist/editor/model/blockTreeDrop.d.ts +9 -0
  318. package/dist/editor/model/blockTreeDrop.js +295 -0
  319. package/dist/editor/model/blockTreeMutations.d.ts +10 -0
  320. package/dist/editor/model/blockTreeMutations.js +68 -0
  321. package/dist/editor/model/calloutEditCommands.d.ts +39 -0
  322. package/dist/editor/model/calloutEditCommands.js +305 -0
  323. package/dist/editor/model/documentSelection.d.ts +8 -0
  324. package/dist/editor/model/documentSelection.js +56 -0
  325. package/dist/editor/model/documentSelectionFromSource.d.ts +3 -0
  326. package/dist/editor/model/documentSelectionFromSource.js +45 -0
  327. package/dist/editor/model/documentToRenderBlocks.d.ts +3 -0
  328. package/dist/editor/model/documentToRenderBlocks.js +13 -0
  329. package/dist/editor/model/editorPipeline.bench.d.ts +1 -0
  330. package/dist/editor/model/editorPipeline.bench.js +27 -0
  331. package/dist/editor/model/editorTransactions.d.ts +20 -0
  332. package/dist/editor/model/editorTransactions.js +68 -0
  333. package/dist/editor/model/emptyParagraph.d.ts +11 -0
  334. package/dist/editor/model/emptyParagraph.js +25 -0
  335. package/dist/editor/model/enterCommands.d.ts +16 -0
  336. package/dist/editor/model/enterCommands.js +288 -0
  337. package/dist/editor/model/extensionSyntaxWarnings.d.ts +29 -0
  338. package/dist/editor/model/extensionSyntaxWarnings.js +122 -0
  339. package/dist/editor/model/findBlockAtSourceOffset.d.ts +3 -0
  340. package/dist/editor/model/findBlockAtSourceOffset.js +20 -0
  341. package/dist/editor/model/fixtures/serialization-fidelity/reorder-gaps.svelte +4 -0
  342. package/dist/editor/model/focusOutcome.d.ts +25 -0
  343. package/dist/editor/model/focusOutcome.js +1 -0
  344. package/dist/editor/model/incrementalReparse.d.ts +16 -0
  345. package/dist/editor/model/incrementalReparse.js +111 -0
  346. package/dist/editor/model/index.d.ts +22 -0
  347. package/dist/editor/model/index.js +19 -0
  348. package/dist/editor/model/inlineDraftCommit.d.ts +17 -0
  349. package/dist/editor/model/inlineDraftCommit.js +187 -0
  350. package/dist/editor/model/inlineDraftMerge.d.ts +8 -0
  351. package/dist/editor/model/inlineDraftMerge.js +81 -0
  352. package/dist/editor/model/inlineEditCommands.d.ts +28 -0
  353. package/dist/editor/model/inlineEditCommands.js +581 -0
  354. package/dist/editor/model/inlinePlain.d.ts +3 -0
  355. package/dist/editor/model/inlinePlain.js +28 -0
  356. package/dist/editor/model/inlineSecondPass.d.ts +4 -0
  357. package/dist/editor/model/inlineSecondPass.js +47 -0
  358. package/dist/editor/model/line-utils.d.ts +14 -0
  359. package/dist/editor/model/line-utils.js +38 -0
  360. package/dist/editor/model/listEditCommands.d.ts +56 -0
  361. package/dist/editor/model/listEditCommands.js +299 -0
  362. package/dist/editor/model/nestedContainerTransactions.d.ts +36 -0
  363. package/dist/editor/model/nestedContainerTransactions.js +336 -0
  364. package/dist/editor/model/parseMarkdownDocument.d.ts +2 -0
  365. package/dist/editor/model/parseMarkdownDocument.js +324 -0
  366. package/dist/editor/model/quoteEditCommands.d.ts +39 -0
  367. package/dist/editor/model/quoteEditCommands.js +323 -0
  368. package/dist/editor/model/reconcileBlockIds.d.ts +9 -0
  369. package/dist/editor/model/reconcileBlockIds.js +297 -0
  370. package/dist/editor/model/reparseOptions.d.ts +12 -0
  371. package/dist/editor/model/reparseOptions.js +1 -0
  372. package/dist/editor/model/resolveEnterPlainSnapshot.d.ts +6 -0
  373. package/dist/editor/model/resolveEnterPlainSnapshot.js +23 -0
  374. package/dist/editor/model/richInlines.d.ts +16 -0
  375. package/dist/editor/model/richInlines.js +494 -0
  376. package/dist/editor/model/serializeInlineNodes.d.ts +3 -0
  377. package/dist/editor/model/serializeInlineNodes.js +45 -0
  378. package/dist/editor/model/serializeMarkdownDocument.d.ts +30 -0
  379. package/dist/editor/model/serializeMarkdownDocument.js +150 -0
  380. package/dist/editor/model/structureParseWarnings.d.ts +10 -0
  381. package/dist/editor/model/structureParseWarnings.js +60 -0
  382. package/dist/editor/model/syntheticInlineRanges.d.ts +3 -0
  383. package/dist/editor/model/syntheticInlineRanges.js +36 -0
  384. package/dist/editor/model/types.d.ts +185 -0
  385. package/dist/editor/model/types.js +26 -0
  386. package/dist/editor/plugins/autolinks/AutolinkRenderer.svelte +20 -0
  387. package/dist/editor/plugins/autolinks/AutolinkRenderer.svelte.d.ts +21 -0
  388. package/dist/editor/plugins/autolinks/index.d.ts +2 -0
  389. package/dist/editor/plugins/autolinks/index.js +4 -0
  390. package/dist/editor/plugins/autolinks/parse-autolinks.d.ts +2 -0
  391. package/dist/editor/plugins/autolinks/parse-autolinks.js +68 -0
  392. package/dist/editor/plugins/autolinks/types.d.ts +6 -0
  393. package/dist/editor/plugins/autolinks/types.js +1 -0
  394. package/dist/editor/plugins/emphasis/EmphasisRenderer.svelte +15 -0
  395. package/dist/editor/plugins/emphasis/EmphasisRenderer.svelte.d.ts +21 -0
  396. package/dist/editor/plugins/emphasis/index.d.ts +2 -0
  397. package/dist/editor/plugins/emphasis/index.js +4 -0
  398. package/dist/editor/plugins/emphasis/parse-emphasis.d.ts +2 -0
  399. package/dist/editor/plugins/emphasis/parse-emphasis.js +188 -0
  400. package/dist/editor/plugins/emphasis/types.d.ts +24 -0
  401. package/dist/editor/plugins/emphasis/types.js +1 -0
  402. package/dist/editor/plugins/escaping/EscapingRenderer.svelte +18 -0
  403. package/dist/editor/plugins/escaping/EscapingRenderer.svelte.d.ts +21 -0
  404. package/dist/editor/plugins/escaping/index.d.ts +2 -0
  405. package/dist/editor/plugins/escaping/index.js +4 -0
  406. package/dist/editor/plugins/escaping/parse-escaping.d.ts +6 -0
  407. package/dist/editor/plugins/escaping/parse-escaping.js +26 -0
  408. package/dist/editor/plugins/escaping/types.d.ts +10 -0
  409. package/dist/editor/plugins/escaping/types.js +1 -0
  410. package/dist/editor/plugins/extended-task-list/ExtendedTaskListRenderer.svelte +25 -0
  411. package/dist/editor/plugins/extended-task-list/ExtendedTaskListRenderer.svelte.d.ts +21 -0
  412. package/dist/editor/plugins/extended-task-list/index.d.ts +2 -0
  413. package/dist/editor/plugins/extended-task-list/index.js +4 -0
  414. package/dist/editor/plugins/extended-task-list/parse-extended-task-list.d.ts +2 -0
  415. package/dist/editor/plugins/extended-task-list/parse-extended-task-list.js +35 -0
  416. package/dist/editor/plugins/extended-task-list/types.d.ts +6 -0
  417. package/dist/editor/plugins/extended-task-list/types.js +1 -0
  418. package/dist/editor/plugins/highlight/HighlightRenderer.svelte +16 -0
  419. package/dist/editor/plugins/highlight/HighlightRenderer.svelte.d.ts +21 -0
  420. package/dist/editor/plugins/highlight/index.d.ts +2 -0
  421. package/dist/editor/plugins/highlight/index.js +4 -0
  422. package/dist/editor/plugins/highlight/parse-highlights.d.ts +4 -0
  423. package/dist/editor/plugins/highlight/parse-highlights.js +49 -0
  424. package/dist/editor/plugins/highlight/types.d.ts +6 -0
  425. package/dist/editor/plugins/highlight/types.js +1 -0
  426. package/dist/editor/plugins/index.d.ts +1 -0
  427. package/dist/editor/plugins/index.js +1 -0
  428. package/dist/editor/plugins/links-images/LinksImagesRenderer.svelte +53 -0
  429. package/dist/editor/plugins/links-images/LinksImagesRenderer.svelte.d.ts +21 -0
  430. package/dist/editor/plugins/links-images/index.d.ts +2 -0
  431. package/dist/editor/plugins/links-images/index.js +4 -0
  432. package/dist/editor/plugins/links-images/parse-image-layout.d.ts +28 -0
  433. package/dist/editor/plugins/links-images/parse-image-layout.js +147 -0
  434. package/dist/editor/plugins/links-images/parse-links-images.d.ts +25 -0
  435. package/dist/editor/plugins/links-images/parse-links-images.js +236 -0
  436. package/dist/editor/plugins/links-images/resolve-asset-url.d.ts +5 -0
  437. package/dist/editor/plugins/links-images/resolve-asset-url.js +21 -0
  438. package/dist/editor/plugins/links-images/types.d.ts +11 -0
  439. package/dist/editor/plugins/links-images/types.js +1 -0
  440. package/dist/editor/plugins/mention/MentionRenderer.svelte +18 -0
  441. package/dist/editor/plugins/mention/MentionRenderer.svelte.d.ts +21 -0
  442. package/dist/editor/plugins/mention/index.d.ts +2 -0
  443. package/dist/editor/plugins/mention/index.js +4 -0
  444. package/dist/editor/plugins/mention/parse-mentions.d.ts +2 -0
  445. package/dist/editor/plugins/mention/parse-mentions.js +54 -0
  446. package/dist/editor/plugins/mention/types.d.ts +14 -0
  447. package/dist/editor/plugins/mention/types.js +1 -0
  448. package/dist/editor/plugins/raw-text/RawTextRenderer.svelte +19 -0
  449. package/dist/editor/plugins/raw-text/RawTextRenderer.svelte.d.ts +21 -0
  450. package/dist/editor/plugins/raw-text/index.d.ts +2 -0
  451. package/dist/editor/plugins/raw-text/index.js +4 -0
  452. package/dist/editor/plugins/raw-text/types.d.ts +4 -0
  453. package/dist/editor/plugins/raw-text/types.js +1 -0
  454. package/dist/editor/plugins/shared/InlineNodes.svelte +113 -0
  455. package/dist/editor/plugins/shared/InlineNodes.svelte.d.ts +21 -0
  456. package/dist/editor/plugins/shared/InlineNodesEdit.svelte +78 -0
  457. package/dist/editor/plugins/shared/InlineNodesEdit.svelte.d.ts +21 -0
  458. package/dist/editor/plugins/strikethrough/StrikethroughRenderer.svelte +9 -0
  459. package/dist/editor/plugins/strikethrough/StrikethroughRenderer.svelte.d.ts +21 -0
  460. package/dist/editor/plugins/strikethrough/index.d.ts +2 -0
  461. package/dist/editor/plugins/strikethrough/index.js +4 -0
  462. package/dist/editor/plugins/strikethrough/parse-strikethrough.d.ts +3 -0
  463. package/dist/editor/plugins/strikethrough/parse-strikethrough.js +38 -0
  464. package/dist/editor/plugins/strikethrough/types.d.ts +4 -0
  465. package/dist/editor/plugins/strikethrough/types.js +1 -0
  466. package/dist/editor/plugins/synced-block/SyncedBlockRenderer.svelte +16 -0
  467. package/dist/editor/plugins/synced-block/SyncedBlockRenderer.svelte.d.ts +21 -0
  468. package/dist/editor/plugins/synced-block/index.d.ts +2 -0
  469. package/dist/editor/plugins/synced-block/index.js +4 -0
  470. package/dist/editor/plugins/synced-block/parse-synced-blocks.d.ts +2 -0
  471. package/dist/editor/plugins/synced-block/parse-synced-blocks.js +15 -0
  472. package/dist/editor/plugins/synced-block/types.d.ts +4 -0
  473. package/dist/editor/plugins/synced-block/types.js +1 -0
  474. package/dist/editor/plugins/types.d.ts +19 -0
  475. package/dist/editor/plugins/types.js +1 -0
  476. package/dist/editor/plugins/wiki-link/WikiLinkRenderer.svelte +15 -0
  477. package/dist/editor/plugins/wiki-link/WikiLinkRenderer.svelte.d.ts +21 -0
  478. package/dist/editor/plugins/wiki-link/index.d.ts +2 -0
  479. package/dist/editor/plugins/wiki-link/index.js +4 -0
  480. package/dist/editor/plugins/wiki-link/parse-wiki-links.d.ts +2 -0
  481. package/dist/editor/plugins/wiki-link/parse-wiki-links.js +30 -0
  482. package/dist/editor/plugins/wiki-link/types.d.ts +8 -0
  483. package/dist/editor/plugins/wiki-link/types.js +1 -0
  484. package/dist/editor/taskCheckboxStates.d.ts +5 -0
  485. package/dist/editor/taskCheckboxStates.js +28 -0
  486. package/dist/index.d.ts +6 -0
  487. package/dist/index.js +9 -0
  488. package/dist/styles/index.css +6 -0
  489. package/package.json +84 -0
@@ -0,0 +1,148 @@
1
+ import { findBlockLocation } from '../model/blockTree';
2
+ import { cloneInlineNodeDeep, splitInlineNodesAtPlainOffset } from '../model/inlineEditCommands';
3
+ import { getCommandsForSurface } from '../commandRegistry';
4
+ import { inlineChromeState } from './inlineChromeState.svelte';
5
+ function blockLocation(editor, blockId) {
6
+ return findBlockLocation(editor.document.blocks, blockId);
7
+ }
8
+ function unwrapLinkInNodes(nodes, start, end) {
9
+ const a = Math.min(start, end);
10
+ const b = Math.max(start, end);
11
+ const s1 = splitInlineNodesAtPlainOffset(nodes.map(cloneInlineNodeDeep), a);
12
+ const s2 = splitInlineNodesAtPlainOffset(s1.right, b - a);
13
+ const mid = s2.left;
14
+ if (mid.length === 1 && mid[0]?.type === 'link') {
15
+ const link = mid[0];
16
+ return [...s1.left, ...link.children.map(cloneInlineNodeDeep), ...s2.right];
17
+ }
18
+ return null;
19
+ }
20
+ export function commandContextForBlockId(editor, blockId) {
21
+ const loc = blockLocation(editor, blockId);
22
+ if (!loc)
23
+ return null;
24
+ const block = loc.block;
25
+ const blockIndex = loc.topLevelIndex;
26
+ const nested = loc.path.length > 1;
27
+ const canMoveUp = loc.index > 0;
28
+ const canMoveDown = loc.index < loc.siblings.length - 1;
29
+ return {
30
+ editor,
31
+ blockIndex,
32
+ blockId: nested ? loc.parent.id : block.id,
33
+ blockType: nested ? loc.parent.type : block.type,
34
+ blockSynthetic: (nested ? loc.parent : block).sourceRange.synthetic ?? false,
35
+ canMoveUp,
36
+ canMoveDown,
37
+ nestedRowBlockId: nested ? block.id : undefined,
38
+ nestedRowBlockType: nested ? block.type : undefined
39
+ };
40
+ }
41
+ function applyWrapOnBlock(editor, blockId, plainStart, plainEnd, kind, linkHref) {
42
+ const loc = blockLocation(editor, blockId);
43
+ if (!loc)
44
+ return;
45
+ if (loc.path.length > 1) {
46
+ editor.applyInlineWrapOnNestedRow(loc.topLevelIndex, loc.block.id, plainStart, plainEnd, kind, linkHref);
47
+ return;
48
+ }
49
+ if (loc.block.type === 'paragraph' || loc.block.type === 'heading') {
50
+ editor.applyInlineWrapAt(loc.topLevelIndex, plainStart, plainEnd, kind, linkHref);
51
+ }
52
+ }
53
+ export function applyWrapFromChrome(kind, linkHref) {
54
+ const s = inlineChromeState;
55
+ const editor = s.editor;
56
+ const blockId = s.blockId;
57
+ if (!editor || !blockId || s.plainStart === s.plainEnd)
58
+ return;
59
+ applyWrapOnBlock(editor, blockId, s.plainStart, s.plainEnd, kind, linkHref);
60
+ }
61
+ export function applyUnlinkFromChrome() {
62
+ const s = inlineChromeState;
63
+ const editor = s.editor;
64
+ const blockId = s.blockId;
65
+ if (!editor || !blockId)
66
+ return;
67
+ const loc = blockLocation(editor, blockId);
68
+ if (!loc?.block.inlines?.length)
69
+ return;
70
+ const unwrapped = unwrapLinkInNodes(loc.block.inlines, s.plainStart, s.plainEnd);
71
+ if (unwrapped) {
72
+ applyWrapOnBlock(editor, blockId, s.plainStart, s.plainEnd, 'link', '');
73
+ return;
74
+ }
75
+ applyWrapOnBlock(editor, blockId, s.plainStart, s.plainEnd, 'link', '');
76
+ }
77
+ export function runTurnIntoCommand(commandId) {
78
+ const s = inlineChromeState;
79
+ const editor = s.editor;
80
+ const blockId = s.blockId;
81
+ if (!editor || !blockId)
82
+ return;
83
+ const ctx = commandContextForBlockId(editor, blockId);
84
+ if (!ctx)
85
+ return;
86
+ const cmd = getCommandsForSurface('blockMenu', ctx).find((c) => c.id === commandId);
87
+ cmd?.run(ctx);
88
+ }
89
+ export function headingCommandsForChrome() {
90
+ const s = inlineChromeState;
91
+ const editor = s.editor;
92
+ const blockId = s.blockId;
93
+ if (!editor || !blockId)
94
+ return [];
95
+ const ctx = commandContextForBlockId(editor, blockId);
96
+ if (!ctx)
97
+ return [];
98
+ return getCommandsForSurface('blockMenu', ctx).filter((c) => c.group === 'turnInto');
99
+ }
100
+ export function resolveLinkHoverFromElement(el) {
101
+ const linkEl = el.closest('[data-md-inline-link]');
102
+ if (!linkEl)
103
+ return null;
104
+ const surface = linkEl.closest('[data-md-inline-surface]');
105
+ const blockId = surface?.getAttribute('data-md-inline-surface');
106
+ if (!blockId)
107
+ return null;
108
+ const start = Number(linkEl.getAttribute('data-md-plain-start'));
109
+ const end = Number(linkEl.getAttribute('data-md-plain-end'));
110
+ const href = linkEl.getAttribute('data-md-link-href') ?? '';
111
+ if (!Number.isFinite(start) || !Number.isFinite(end))
112
+ return null;
113
+ return { blockId, plainStart: start, plainEnd: end, href };
114
+ }
115
+ export function applyLinkHrefFromChrome(href) {
116
+ const s = inlineChromeState;
117
+ const editor = s.editor;
118
+ if (!editor)
119
+ return;
120
+ if (s.linkHover) {
121
+ applyWrapOnBlock(editor, s.linkHover.blockId, s.linkHover.plainStart, s.linkHover.plainEnd, 'link', href.trim());
122
+ return;
123
+ }
124
+ if (s.blockId && s.plainStart !== s.plainEnd) {
125
+ applyWrapOnBlock(editor, s.blockId, s.plainStart, s.plainEnd, 'link', href.trim());
126
+ }
127
+ }
128
+ export function currentInlinesForChrome() {
129
+ const s = inlineChromeState;
130
+ const editor = s.editor;
131
+ const blockId = s.blockId;
132
+ if (!editor || !blockId)
133
+ return [];
134
+ const loc = blockLocation(editor, blockId);
135
+ if (!loc)
136
+ return [];
137
+ const block = loc.block;
138
+ if (block.inlines?.length)
139
+ return block.inlines;
140
+ const text = block.type === 'heading'
141
+ ? block.data.text
142
+ : block.type === 'paragraph'
143
+ ? block.data.text
144
+ : '';
145
+ if (text)
146
+ return [{ type: 'text', text, sourceRange: block.sourceRange }];
147
+ return [];
148
+ }
@@ -0,0 +1,23 @@
1
+ import type { MarkdownEditor } from '../MarkdownEditor.svelte';
2
+ export type InlineChromePanel = 'root' | 'heading' | 'link-edit';
3
+ export type InlineChromeMode = 'closed' | 'selection' | 'link-hover';
4
+ export type LinkHoverTarget = {
5
+ blockId: string;
6
+ plainStart: number;
7
+ plainEnd: number;
8
+ href: string;
9
+ element: HTMLElement;
10
+ };
11
+ export declare class InlineChromeState {
12
+ mode: InlineChromeMode;
13
+ panel: InlineChromePanel;
14
+ editor: MarkdownEditor | null;
15
+ /** Leaf block receiving formatting (paragraph, heading, or nested row). */
16
+ blockId: string | null;
17
+ plainStart: number;
18
+ plainEnd: number;
19
+ linkHover: LinkHoverTarget | null;
20
+ linkDraftHref: string;
21
+ reset(): void;
22
+ }
23
+ export declare const inlineChromeState: InlineChromeState;
@@ -0,0 +1,21 @@
1
+ export class InlineChromeState {
2
+ mode = $state('closed');
3
+ panel = $state('root');
4
+ editor = $state(null);
5
+ /** Leaf block receiving formatting (paragraph, heading, or nested row). */
6
+ blockId = $state(null);
7
+ plainStart = $state(0);
8
+ plainEnd = $state(0);
9
+ linkHover = $state(null);
10
+ linkDraftHref = $state('');
11
+ reset() {
12
+ this.mode = 'closed';
13
+ this.panel = 'root';
14
+ this.blockId = null;
15
+ this.plainStart = 0;
16
+ this.plainEnd = 0;
17
+ this.linkHover = null;
18
+ this.linkDraftHref = '';
19
+ }
20
+ }
21
+ export const inlineChromeState = new InlineChromeState();
@@ -0,0 +1,14 @@
1
+ /** Iconify lucide ids for the inline formatting toolbar. */
2
+ export declare const inlineToolbarIcons: {
3
+ readonly bold: "lucide:bold";
4
+ readonly italic: "lucide:italic";
5
+ readonly code: "lucide:code";
6
+ readonly strikethrough: "lucide:strikethrough";
7
+ readonly highlight: "lucide:highlighter";
8
+ readonly link: "lucide:link";
9
+ readonly externalLink: "lucide:external-link";
10
+ readonly unlink: "lucide:unlink";
11
+ readonly heading: "lucide:heading";
12
+ readonly chevronLeft: "lucide:chevron-left";
13
+ readonly paragraph: "lucide:pilcrow";
14
+ };
@@ -0,0 +1,14 @@
1
+ /** Iconify lucide ids for the inline formatting toolbar. */
2
+ export const inlineToolbarIcons = {
3
+ bold: 'lucide:bold',
4
+ italic: 'lucide:italic',
5
+ code: 'lucide:code',
6
+ strikethrough: 'lucide:strikethrough',
7
+ highlight: 'lucide:highlighter',
8
+ link: 'lucide:link',
9
+ externalLink: 'lucide:external-link',
10
+ unlink: 'lucide:unlink',
11
+ heading: 'lucide:heading',
12
+ chevronLeft: 'lucide:chevron-left',
13
+ paragraph: 'lucide:pilcrow'
14
+ };
@@ -0,0 +1,3 @@
1
+ import type { InlineNode } from '../model/types.js';
2
+ import type { InlineWrapKind } from '../model/inlineEditCommands.js';
3
+ export declare function activeWrapKindsForRange(nodes: InlineNode[], start: number, end: number): Set<InlineWrapKind>;
@@ -0,0 +1,19 @@
1
+ import { inlineRangeFullyCoveredByKind } from '../model/inlineEditCommands.js';
2
+ const WRAP_TYPES = [
3
+ 'strong',
4
+ 'emphasis',
5
+ 'code',
6
+ 'strikethrough',
7
+ 'highlight',
8
+ 'link'
9
+ ];
10
+ export function activeWrapKindsForRange(nodes, start, end) {
11
+ const active = new Set();
12
+ if (start === end)
13
+ return active;
14
+ for (const kind of WRAP_TYPES) {
15
+ if (inlineRangeFullyCoveredByKind(nodes, start, end, kind))
16
+ active.add(kind);
17
+ }
18
+ return active;
19
+ }
@@ -0,0 +1,2 @@
1
+ /** Union of client rects for the current DOM selection (viewport coordinates). */
2
+ export declare function selectionBoundingRect(): DOMRect | null;
@@ -0,0 +1,23 @@
1
+ /** Union of client rects for the current DOM selection (viewport coordinates). */
2
+ export function selectionBoundingRect() {
3
+ const sel = window.getSelection();
4
+ if (!sel || sel.rangeCount === 0 || sel.isCollapsed)
5
+ return null;
6
+ const range = sel.getRangeAt(0);
7
+ const rects = range.getClientRects();
8
+ if (rects.length === 0) {
9
+ const r = range.getBoundingClientRect();
10
+ return r.width === 0 && r.height === 0 ? null : r;
11
+ }
12
+ let left = Infinity;
13
+ let top = Infinity;
14
+ let right = -Infinity;
15
+ let bottom = -Infinity;
16
+ for (const r of rects) {
17
+ left = Math.min(left, r.left);
18
+ top = Math.min(top, r.top);
19
+ right = Math.max(right, r.right);
20
+ bottom = Math.max(bottom, r.bottom);
21
+ }
22
+ return new DOMRect(left, top, right - left, bottom - top);
23
+ }
@@ -0,0 +1,73 @@
1
+ import type { HeaderBlock } from '../block-specs/heading/types';
2
+ import { type TransactionBuildResult } from './editorTransactions';
3
+ import type { EditorDocument, EditorSelection } from './types';
4
+ import type { FocusOutcome } from './focusOutcome';
5
+ import { type InlineWrapKind } from './inlineEditCommands';
6
+ export type SourceEditOk = {
7
+ ok: true;
8
+ source: string;
9
+ selection: EditorSelection;
10
+ };
11
+ export type SourceEditErr = {
12
+ ok: false;
13
+ error: string;
14
+ };
15
+ export type SourceEditResult = SourceEditOk | SourceEditErr;
16
+ export type SplitBlockAtPlainOffsetResult = SourceEditResult;
17
+ export declare const EDITOR_HISTORY_LIMIT = 120;
18
+ export declare function replaceSourceRange(source: string, start: number, end: number, replacement: string): string;
19
+ /** Serialized block markdown often omits the final line terminator that `sourceRange.end` still covers. */
20
+ export declare function normalizeBlockSliceReplacement(source: string, start: number, end: number, replacement: string): string;
21
+ export declare function replaceBlockSourceRange(source: string, start: number, end: number, replacement: string): string;
22
+ export { paragraphBlockFromPlainText, paragraphBlockToPlainText, paragraphDisplayPlain, paragraphPlainOffsetToSourceOffset } from '../block-specs/paragraph';
23
+ export { headingBodySourceRange, headingDisplayPlain, headingMarkdown, headingPlainOffsetToSourceOffset } from '../block-specs/heading/edit';
24
+ /** Replace paragraph or heading body from a plain-text edit; preserves `inlines` when a single-character delta patches the AST. */
25
+ export declare function updateBlockPlainText(source: string, doc: EditorDocument, blockIndex: number, plainText: string, kind: 'paragraph' | 'heading', selectionPlainOffset: number): SourceEditResult;
26
+ /** Wrap plain-text selection in Markdown inline spans (paragraph or heading body). */
27
+ export declare function applyInlineWrap(source: string, doc: EditorDocument, blockIndex: number, plainStart: number, plainEnd: number, kind: InlineWrapKind, linkHref?: string): SourceEditResult;
28
+ /** Turn `# title` / `- item` / `1. item` plain lines into the corresponding Markdown block slice. */
29
+ export declare function isStructuralMarkdownShortcutLine(plainText: string): boolean;
30
+ export type StructuralShortcutTrigger = 'space' | 'enter' | 'blur';
31
+ /** Whether Space, Enter, or blur should run **structural markdown shortcut** for this plain line. */
32
+ export declare function isStructuralMarkdownShortcutTrigger(plainText: string, trigger: StructuralShortcutTrigger, options?: {
33
+ allowMarkerOnlyList?: boolean;
34
+ }): boolean;
35
+ /** Marker-only list/task prefixes completed by Space or Enter (not blur). Paragraph bodies only. */
36
+ export declare function markerOnlyListShortcutMarkdown(plainText: string): string | null;
37
+ export declare function paragraphShortcutMarkdown(plainText: string): string | null;
38
+ export type StructuralShortcutEdit = SourceEditOk & {
39
+ focusAfter: FocusOutcome;
40
+ };
41
+ /** Focus after **structural markdown shortcut** conversion (heading body plain or list item body). */
42
+ export declare function buildStructuralShortcutFocusOutcome(doc: EditorDocument, blockIndex: number, plainText: string, md: string): FocusOutcome;
43
+ /** Apply line-start markdown shortcut on a top-level **paragraph** or **heading** body. */
44
+ export declare function applyStructuralMarkdownShortcut(source: string, doc: EditorDocument, blockIndex: number, plainText: string): StructuralShortcutEdit | SourceEditErr;
45
+ /** @deprecated Prefer {@link applyStructuralMarkdownShortcut}. */
46
+ export declare function applyParagraphShortcut(source: string, doc: EditorDocument, blockIndex: number, plainText: string): SourceEditResult;
47
+ export declare function splitBlockAtPlainOffset(source: string, doc: EditorDocument, blockIndex: number, plainOffset: number, kind: 'paragraph' | 'heading'): SplitBlockAtPlainOffsetResult;
48
+ /** Insert an empty paragraph before (`after === false`) or after the block. */
49
+ export declare function insertEmptyParagraphRelative(source: string, doc: EditorDocument, blockIndex: number, after: boolean): SourceEditOk;
50
+ /** Source transaction for inserting a canonical empty **paragraph** sibling. */
51
+ export declare function buildEmptyParagraphInsertTransaction(source: string, doc: EditorDocument, blockIndex: number, after: boolean, txId: string): TransactionBuildResult;
52
+ export type MergeWithPreviousResult = SourceEditOk & {
53
+ focusAfter: FocusOutcome;
54
+ };
55
+ export declare function mergeWithPreviousBlock(source: string, doc: EditorDocument, blockIndex: number): MergeWithPreviousResult | SourceEditErr;
56
+ /** Replace the raw markdown slice for one block (used for list/code/blockquote textareas). */
57
+ export declare function replaceBlockMarkdownSlice(source: string, doc: EditorDocument, blockIndex: number, replacement: string): SourceEditResult;
58
+ export declare function deleteBlock(source: string, doc: EditorDocument, blockIndex: number): SourceEditResult;
59
+ /** Inserts a copy of the block's markdown after it; caret at start of duplicate body region. */
60
+ export declare function duplicateBlock(source: string, doc: EditorDocument, blockIndex: number): SourceEditResult;
61
+ /** Swap two adjacent blocks so the lower-index block moves earlier (same as moving block at `lowerIndex` up). */
62
+ export declare function swapAdjacentBlocks(source: string, doc: EditorDocument, upperBlockIndex: number): SourceEditResult;
63
+ export declare function moveBlockUp(source: string, doc: EditorDocument, blockIndex: number): SourceEditResult;
64
+ export declare function moveBlockDown(source: string, doc: EditorDocument, blockIndex: number): SourceEditResult;
65
+ /**
66
+ * Reorders blocks by moving one block to a new index via repeated {@link swapAdjacentBlocks},
67
+ * reparsing between swaps so ranges stay valid. Preserves irregular inter-block gaps that would
68
+ * be lost by joining slices with a single `\n\n`.
69
+ */
70
+ export declare function moveBlockToIndex(source: string, doc: EditorDocument, fromIndex: number, toIndex: number): SourceEditResult;
71
+ export declare function convertParagraphToHeading(source: string, doc: EditorDocument, blockIndex: number, level: HeaderBlock['level']): SourceEditResult;
72
+ export declare function convertHeadingLevel(source: string, doc: EditorDocument, blockIndex: number, level: HeaderBlock['level']): SourceEditResult;
73
+ export declare function convertHeadingToParagraph(source: string, doc: EditorDocument, blockIndex: number): SourceEditResult;