@latentic/live-markdown 0.3.0 → 0.4.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 (341) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +2 -2
  3. package/dist/chunk-V6TY7KAL.js +8 -0
  4. package/dist/chunk-V6TY7KAL.js.map +1 -0
  5. package/dist/codemirror/CodeMirrorMarkdownEditor.d.ts +106 -0
  6. package/dist/codemirror/CodeMirrorMarkdownEditor.js +482 -0
  7. package/dist/codemirror/CodeMirrorMarkdownEditor.js.map +1 -0
  8. package/dist/codemirror/byteOffset.d.ts +17 -0
  9. package/dist/codemirror/byteOffset.js +19 -0
  10. package/dist/codemirror/byteOffset.js.map +1 -0
  11. package/dist/codemirror/caretLayer.d.ts +19 -0
  12. package/dist/codemirror/caretLayer.js +44 -0
  13. package/dist/codemirror/caretLayer.js.map +1 -0
  14. package/dist/codemirror/clipboard/copyRich.d.ts +37 -0
  15. package/dist/codemirror/clipboard/copyRich.js +72 -0
  16. package/dist/codemirror/clipboard/copyRich.js.map +1 -0
  17. package/dist/codemirror/clipboard/htmlToMarkdown.d.ts +20 -0
  18. package/dist/codemirror/clipboard/htmlToMarkdown.js +91 -0
  19. package/dist/codemirror/clipboard/htmlToMarkdown.js.map +1 -0
  20. package/dist/codemirror/clipboard/pasteMarkdown.d.ts +18 -0
  21. package/dist/codemirror/clipboard/pasteMarkdown.js +41 -0
  22. package/dist/codemirror/clipboard/pasteMarkdown.js.map +1 -0
  23. package/dist/codemirror/code/codeHighlight.d.ts +13 -0
  24. package/dist/codemirror/code/codeHighlight.js +15 -0
  25. package/dist/codemirror/code/codeHighlight.js.map +1 -0
  26. package/dist/codemirror/code/codeLangAffordance.d.ts +17 -0
  27. package/dist/codemirror/code/codeLangAffordance.js +80 -0
  28. package/dist/codemirror/code/codeLangAffordance.js.map +1 -0
  29. package/dist/codemirror/code/codeLanguageMenu.d.ts +40 -0
  30. package/dist/codemirror/code/codeLanguageMenu.js +184 -0
  31. package/dist/codemirror/code/codeLanguageMenu.js.map +1 -0
  32. package/dist/codemirror/code/codePalette.d.ts +39 -0
  33. package/dist/codemirror/code/codePalette.js +53 -0
  34. package/dist/codemirror/code/codePalette.js.map +1 -0
  35. package/dist/codemirror/code/fenceAutoClose.d.ts +30 -0
  36. package/dist/codemirror/code/fenceAutoClose.js +171 -0
  37. package/dist/codemirror/code/fenceAutoClose.js.map +1 -0
  38. package/dist/codemirror/code/fenceCaretGuard.d.ts +28 -0
  39. package/dist/codemirror/code/fenceCaretGuard.js +66 -0
  40. package/dist/codemirror/code/fenceCaretGuard.js.map +1 -0
  41. package/dist/codemirror/code/fenceDeleteGuards.d.ts +22 -0
  42. package/dist/codemirror/code/fenceDeleteGuards.js +105 -0
  43. package/dist/codemirror/code/fenceDeleteGuards.js.map +1 -0
  44. package/dist/codemirror/code/fenceTabIndent.d.ts +8 -0
  45. package/dist/codemirror/code/fenceTabIndent.js +50 -0
  46. package/dist/codemirror/code/fenceTabIndent.js.map +1 -0
  47. package/dist/codemirror/code/highlightFence.d.ts +25 -0
  48. package/dist/codemirror/code/highlightFence.js +45 -0
  49. package/dist/codemirror/code/highlightFence.js.map +1 -0
  50. package/dist/codemirror/code/index.d.ts +9 -0
  51. package/dist/codemirror/code/index.js +8 -0
  52. package/dist/codemirror/code/index.js.map +1 -0
  53. package/dist/codemirror/core/codeContext.d.ts +32 -0
  54. package/dist/codemirror/core/codeContext.js +22 -0
  55. package/dist/codemirror/core/codeContext.js.map +1 -0
  56. package/dist/codemirror/core/editorTestHarness.d.ts +31 -0
  57. package/dist/codemirror/core/editorTestHarness.js +69 -0
  58. package/dist/codemirror/core/editorTestHarness.js.map +1 -0
  59. package/dist/codemirror/core/editorTheme.d.ts +39 -0
  60. package/dist/codemirror/core/editorTheme.js +498 -0
  61. package/dist/codemirror/core/editorTheme.js.map +1 -0
  62. package/dist/codemirror/core/hostFacets.d.ts +58 -0
  63. package/dist/codemirror/core/hostFacets.js +27 -0
  64. package/dist/codemirror/core/hostFacets.js.map +1 -0
  65. package/dist/codemirror/core/hrWidget.d.ts +22 -0
  66. package/dist/codemirror/core/hrWidget.js +22 -0
  67. package/dist/codemirror/core/hrWidget.js.map +1 -0
  68. package/dist/codemirror/core/htmlEscape.d.ts +6 -0
  69. package/dist/codemirror/core/htmlEscape.js +12 -0
  70. package/dist/codemirror/core/htmlEscape.js.map +1 -0
  71. package/dist/codemirror/core/index.d.ts +13 -0
  72. package/dist/codemirror/core/index.js +9 -0
  73. package/dist/codemirror/core/index.js.map +1 -0
  74. package/dist/codemirror/core/inlineScan.d.ts +49 -0
  75. package/dist/codemirror/core/inlineScan.js +31 -0
  76. package/dist/codemirror/core/inlineScan.js.map +1 -0
  77. package/dist/codemirror/core/lineStructure.d.ts +47 -0
  78. package/dist/codemirror/core/lineStructure.js +64 -0
  79. package/dist/codemirror/core/lineStructure.js.map +1 -0
  80. package/dist/codemirror/core/linkResolution.d.ts +36 -0
  81. package/dist/codemirror/core/linkResolution.js +58 -0
  82. package/dist/codemirror/core/linkResolution.js.map +1 -0
  83. package/dist/codemirror/core/paint.d.ts +118 -0
  84. package/dist/codemirror/core/paint.js +42 -0
  85. package/dist/codemirror/core/paint.js.map +1 -0
  86. package/dist/codemirror/core/parseToEnd.d.ts +24 -0
  87. package/dist/codemirror/core/parseToEnd.js +38 -0
  88. package/dist/codemirror/core/parseToEnd.js.map +1 -0
  89. package/dist/codemirror/core/plugin.d.ts +32 -0
  90. package/dist/codemirror/core/plugin.js +161 -0
  91. package/dist/codemirror/core/plugin.js.map +1 -0
  92. package/dist/codemirror/core/registry.d.ts +38 -0
  93. package/dist/codemirror/core/registry.js +133 -0
  94. package/dist/codemirror/core/registry.js.map +1 -0
  95. package/dist/codemirror/core/testKeys.d.ts +17 -0
  96. package/dist/codemirror/core/testKeys.js +11 -0
  97. package/dist/codemirror/core/testKeys.js.map +1 -0
  98. package/dist/codemirror/core/treeAt.d.ts +31 -0
  99. package/dist/codemirror/core/treeAt.js +10 -0
  100. package/dist/codemirror/core/treeAt.js.map +1 -0
  101. package/dist/codemirror/extensions/footnoteExtension.d.ts +9 -0
  102. package/dist/codemirror/extensions/footnoteExtension.js +14 -0
  103. package/dist/codemirror/extensions/footnoteExtension.js.map +1 -0
  104. package/dist/codemirror/extensions/highlightExtension.d.ts +9 -0
  105. package/dist/codemirror/extensions/highlightExtension.js +14 -0
  106. package/dist/codemirror/extensions/highlightExtension.js.map +1 -0
  107. package/dist/codemirror/extensions/index.d.ts +12 -0
  108. package/dist/codemirror/extensions/index.js +19 -0
  109. package/dist/codemirror/extensions/index.js.map +1 -0
  110. package/dist/codemirror/extensions/loader.d.ts +24 -0
  111. package/dist/codemirror/extensions/loader.js +33 -0
  112. package/dist/codemirror/extensions/loader.js.map +1 -0
  113. package/dist/codemirror/extensions/mathExtension.d.ts +9 -0
  114. package/dist/codemirror/extensions/mathExtension.js +14 -0
  115. package/dist/codemirror/extensions/mathExtension.js.map +1 -0
  116. package/dist/codemirror/extensions/mermaidExtension.d.ts +9 -0
  117. package/dist/codemirror/extensions/mermaidExtension.js +12 -0
  118. package/dist/codemirror/extensions/mermaidExtension.js.map +1 -0
  119. package/dist/codemirror/extensions/tableExtension.d.ts +13 -0
  120. package/dist/codemirror/extensions/tableExtension.js +39 -0
  121. package/dist/codemirror/extensions/tableExtension.js.map +1 -0
  122. package/dist/codemirror/extensions/types.d.ts +39 -0
  123. package/dist/codemirror/extensions/types.js +1 -0
  124. package/dist/codemirror/extensions/types.js.map +1 -0
  125. package/dist/codemirror/extensions/wikilinkExtension.d.ts +9 -0
  126. package/dist/codemirror/extensions/wikilinkExtension.js +14 -0
  127. package/dist/codemirror/extensions/wikilinkExtension.js.map +1 -0
  128. package/dist/codemirror/features/blockCommandSteps.d.ts +20 -0
  129. package/dist/codemirror/features/blockCommandSteps.js +83 -0
  130. package/dist/codemirror/features/blockCommandSteps.js.map +1 -0
  131. package/dist/codemirror/footnote/footnotePlugin.d.ts +10 -0
  132. package/dist/codemirror/footnote/footnotePlugin.js +78 -0
  133. package/dist/codemirror/footnote/footnotePlugin.js.map +1 -0
  134. package/dist/codemirror/footnote/footnoteScanRule.d.ts +9 -0
  135. package/dist/codemirror/footnote/footnoteScanRule.js +12 -0
  136. package/dist/codemirror/footnote/footnoteScanRule.js.map +1 -0
  137. package/dist/codemirror/footnote/index.d.ts +2 -0
  138. package/dist/codemirror/footnote/index.js +2 -0
  139. package/dist/codemirror/footnote/index.js.map +1 -0
  140. package/dist/codemirror/format/blockCommands.d.ts +17 -0
  141. package/dist/codemirror/format/blockCommands.js +176 -0
  142. package/dist/codemirror/format/blockCommands.js.map +1 -0
  143. package/dist/codemirror/format/formatCommands.d.ts +11 -0
  144. package/dist/codemirror/format/formatCommands.js +132 -0
  145. package/dist/codemirror/format/formatCommands.js.map +1 -0
  146. package/dist/codemirror/format/index.d.ts +4 -0
  147. package/dist/codemirror/format/index.js +3 -0
  148. package/dist/codemirror/format/index.js.map +1 -0
  149. package/dist/codemirror/highlight/highlightPlugin.d.ts +10 -0
  150. package/dist/codemirror/highlight/highlightPlugin.js +66 -0
  151. package/dist/codemirror/highlight/highlightPlugin.js.map +1 -0
  152. package/dist/codemirror/highlight/highlightScanRule.d.ts +8 -0
  153. package/dist/codemirror/highlight/highlightScanRule.js +12 -0
  154. package/dist/codemirror/highlight/highlightScanRule.js.map +1 -0
  155. package/dist/codemirror/highlight/index.d.ts +2 -0
  156. package/dist/codemirror/highlight/index.js +2 -0
  157. package/dist/codemirror/highlight/index.js.map +1 -0
  158. package/dist/codemirror/html/htmlWidget.d.ts +23 -0
  159. package/dist/codemirror/html/htmlWidget.js +67 -0
  160. package/dist/codemirror/html/htmlWidget.js.map +1 -0
  161. package/dist/codemirror/html/index.d.ts +4 -0
  162. package/dist/codemirror/html/index.js +2 -0
  163. package/dist/codemirror/html/index.js.map +1 -0
  164. package/dist/codemirror/image/imageActionMenu.d.ts +14 -0
  165. package/dist/codemirror/image/imageActionMenu.js +112 -0
  166. package/dist/codemirror/image/imageActionMenu.js.map +1 -0
  167. package/dist/codemirror/image/imageEditEvent.d.ts +20 -0
  168. package/dist/codemirror/image/imageEditEvent.js +6 -0
  169. package/dist/codemirror/image/imageEditEvent.js.map +1 -0
  170. package/dist/codemirror/image/imageInsertHandlers.d.ts +13 -0
  171. package/dist/codemirror/image/imageInsertHandlers.js +64 -0
  172. package/dist/codemirror/image/imageInsertHandlers.js.map +1 -0
  173. package/dist/codemirror/image/imageWidget.d.ts +49 -0
  174. package/dist/codemirror/image/imageWidget.js +83 -0
  175. package/dist/codemirror/image/imageWidget.js.map +1 -0
  176. package/dist/codemirror/image/index.d.ts +8 -0
  177. package/dist/codemirror/image/index.js +5 -0
  178. package/dist/codemirror/image/index.js.map +1 -0
  179. package/dist/codemirror/interaction/clickModel.d.ts +43 -0
  180. package/dist/codemirror/interaction/clickModel.js +99 -0
  181. package/dist/codemirror/interaction/clickModel.js.map +1 -0
  182. package/dist/codemirror/interaction/cursorModel.d.ts +10 -0
  183. package/dist/codemirror/interaction/cursorModel.js +58 -0
  184. package/dist/codemirror/interaction/cursorModel.js.map +1 -0
  185. package/dist/codemirror/interaction/deleteNormalizer.d.ts +18 -0
  186. package/dist/codemirror/interaction/deleteNormalizer.js +157 -0
  187. package/dist/codemirror/interaction/deleteNormalizer.js.map +1 -0
  188. package/dist/codemirror/interaction/flankingGuard.d.ts +20 -0
  189. package/dist/codemirror/interaction/flankingGuard.js +48 -0
  190. package/dist/codemirror/interaction/flankingGuard.js.map +1 -0
  191. package/dist/codemirror/interaction/index.d.ts +7 -0
  192. package/dist/codemirror/interaction/index.js +6 -0
  193. package/dist/codemirror/interaction/index.js.map +1 -0
  194. package/dist/codemirror/interaction/visiblePosition.d.ts +43 -0
  195. package/dist/codemirror/interaction/visiblePosition.js +98 -0
  196. package/dist/codemirror/interaction/visiblePosition.js.map +1 -0
  197. package/dist/codemirror/list/bulletWidget.d.ts +61 -0
  198. package/dist/codemirror/list/bulletWidget.js +84 -0
  199. package/dist/codemirror/list/bulletWidget.js.map +1 -0
  200. package/dist/codemirror/list/index.d.ts +4 -0
  201. package/dist/codemirror/list/index.js +3 -0
  202. package/dist/codemirror/list/index.js.map +1 -0
  203. package/dist/codemirror/list/listContinuation.d.ts +28 -0
  204. package/dist/codemirror/list/listContinuation.js +61 -0
  205. package/dist/codemirror/list/listContinuation.js.map +1 -0
  206. package/dist/codemirror/list/listIndent.d.ts +8 -0
  207. package/dist/codemirror/list/listIndent.js +95 -0
  208. package/dist/codemirror/list/listIndent.js.map +1 -0
  209. package/dist/codemirror/list/taskCheckboxWidget.d.ts +42 -0
  210. package/dist/codemirror/list/taskCheckboxWidget.js +47 -0
  211. package/dist/codemirror/list/taskCheckboxWidget.js.map +1 -0
  212. package/dist/codemirror/math/index.d.ts +3 -0
  213. package/dist/codemirror/math/index.js +2 -0
  214. package/dist/codemirror/math/index.js.map +1 -0
  215. package/dist/codemirror/math/mathPlugin.d.ts +10 -0
  216. package/dist/codemirror/math/mathPlugin.js +73 -0
  217. package/dist/codemirror/math/mathPlugin.js.map +1 -0
  218. package/dist/codemirror/math/mathScanRule.d.ts +16 -0
  219. package/dist/codemirror/math/mathScanRule.js +18 -0
  220. package/dist/codemirror/math/mathScanRule.js.map +1 -0
  221. package/dist/codemirror/math/mathWidget.d.ts +15 -0
  222. package/dist/codemirror/math/mathWidget.js +36 -0
  223. package/dist/codemirror/math/mathWidget.js.map +1 -0
  224. package/dist/codemirror/mermaid/index.d.ts +4 -0
  225. package/dist/codemirror/mermaid/index.js +3 -0
  226. package/dist/codemirror/mermaid/index.js.map +1 -0
  227. package/dist/codemirror/mermaid/mermaidPlugin.d.ts +25 -0
  228. package/dist/codemirror/mermaid/mermaidPlugin.js +78 -0
  229. package/dist/codemirror/mermaid/mermaidPlugin.js.map +1 -0
  230. package/dist/codemirror/mermaid/mermaidRender.d.ts +42 -0
  231. package/dist/codemirror/mermaid/mermaidRender.js +136 -0
  232. package/dist/codemirror/mermaid/mermaidRender.js.map +1 -0
  233. package/dist/codemirror/mermaid/mermaidWidget.d.ts +42 -0
  234. package/dist/codemirror/mermaid/mermaidWidget.js +142 -0
  235. package/dist/codemirror/mermaid/mermaidWidget.js.map +1 -0
  236. package/dist/codemirror/selectionLayer.d.ts +43 -0
  237. package/dist/codemirror/selectionLayer.js +135 -0
  238. package/dist/codemirror/selectionLayer.js.map +1 -0
  239. package/dist/codemirror/table/cellDividerWidget.d.ts +9 -0
  240. package/dist/codemirror/table/cellDividerWidget.js +19 -0
  241. package/dist/codemirror/table/cellDividerWidget.js.map +1 -0
  242. package/dist/codemirror/table/index.d.ts +5 -0
  243. package/dist/codemirror/table/index.js +4 -0
  244. package/dist/codemirror/table/index.js.map +1 -0
  245. package/dist/codemirror/table/tableArmed.d.ts +27 -0
  246. package/dist/codemirror/table/tableArmed.js +43 -0
  247. package/dist/codemirror/table/tableArmed.js.map +1 -0
  248. package/dist/codemirror/table/tableCell.d.ts +19 -0
  249. package/dist/codemirror/table/tableCell.js +15 -0
  250. package/dist/codemirror/table/tableCell.js.map +1 -0
  251. package/dist/codemirror/table/tableCellNav.d.ts +51 -0
  252. package/dist/codemirror/table/tableCellNav.js +47 -0
  253. package/dist/codemirror/table/tableCellNav.js.map +1 -0
  254. package/dist/codemirror/table/tableContextMenu.d.ts +22 -0
  255. package/dist/codemirror/table/tableContextMenu.js +139 -0
  256. package/dist/codemirror/table/tableContextMenu.js.map +1 -0
  257. package/dist/codemirror/table/tableEditCommands.d.ts +29 -0
  258. package/dist/codemirror/table/tableEditCommands.js +86 -0
  259. package/dist/codemirror/table/tableEditCommands.js.map +1 -0
  260. package/dist/codemirror/table/tableExcerpt.d.ts +29 -0
  261. package/dist/codemirror/table/tableExcerpt.js +34 -0
  262. package/dist/codemirror/table/tableExcerpt.js.map +1 -0
  263. package/dist/codemirror/table/tableField.d.ts +6 -0
  264. package/dist/codemirror/table/tableField.js +37 -0
  265. package/dist/codemirror/table/tableField.js.map +1 -0
  266. package/dist/codemirror/table/tableGeometry.d.ts +33 -0
  267. package/dist/codemirror/table/tableGeometry.js +28 -0
  268. package/dist/codemirror/table/tableGeometry.js.map +1 -0
  269. package/dist/codemirror/table/tableInline.d.ts +37 -0
  270. package/dist/codemirror/table/tableInline.js +105 -0
  271. package/dist/codemirror/table/tableInline.js.map +1 -0
  272. package/dist/codemirror/table/tableModel.d.ts +45 -0
  273. package/dist/codemirror/table/tableModel.js +98 -0
  274. package/dist/codemirror/table/tableModel.js.map +1 -0
  275. package/dist/codemirror/tablev2/bridgeRules.d.ts +48 -0
  276. package/dist/codemirror/tablev2/bridgeRules.js +42 -0
  277. package/dist/codemirror/tablev2/bridgeRules.js.map +1 -0
  278. package/dist/codemirror/tablev2/cellEditingSurface.d.ts +79 -0
  279. package/dist/codemirror/tablev2/cellEditingSurface.js +70 -0
  280. package/dist/codemirror/tablev2/cellEditingSurface.js.map +1 -0
  281. package/dist/codemirror/tablev2/cellText.d.ts +11 -0
  282. package/dist/codemirror/tablev2/cellText.js +12 -0
  283. package/dist/codemirror/tablev2/cellText.js.map +1 -0
  284. package/dist/codemirror/tablev2/inlineCellSurface.d.ts +38 -0
  285. package/dist/codemirror/tablev2/inlineCellSurface.js +162 -0
  286. package/dist/codemirror/tablev2/inlineCellSurface.js.map +1 -0
  287. package/dist/codemirror/tablev2/overlayCellSurface.d.ts +36 -0
  288. package/dist/codemirror/tablev2/overlayCellSurface.js +150 -0
  289. package/dist/codemirror/tablev2/overlayCellSurface.js.map +1 -0
  290. package/dist/codemirror/tablev2/tableEditingSteps.d.ts +12 -0
  291. package/dist/codemirror/tablev2/tableEditingSteps.js +518 -0
  292. package/dist/codemirror/tablev2/tableEditingSteps.js.map +1 -0
  293. package/dist/codemirror/tablev2/tableV2HoverControls.d.ts +23 -0
  294. package/dist/codemirror/tablev2/tableV2HoverControls.js +89 -0
  295. package/dist/codemirror/tablev2/tableV2HoverControls.js.map +1 -0
  296. package/dist/codemirror/tablev2/tableV2Interaction.d.ts +29 -0
  297. package/dist/codemirror/tablev2/tableV2Interaction.js +224 -0
  298. package/dist/codemirror/tablev2/tableV2Interaction.js.map +1 -0
  299. package/dist/codemirror/tablev2/tableV2Selection.d.ts +45 -0
  300. package/dist/codemirror/tablev2/tableV2Selection.js +81 -0
  301. package/dist/codemirror/tablev2/tableV2Selection.js.map +1 -0
  302. package/dist/codemirror/tablev2/tableV2Sync.d.ts +13 -0
  303. package/dist/codemirror/tablev2/tableV2Sync.js +13 -0
  304. package/dist/codemirror/tablev2/tableV2Sync.js.map +1 -0
  305. package/dist/codemirror/tablev2/tableWidgetV2.d.ts +46 -0
  306. package/dist/codemirror/tablev2/tableWidgetV2.js +139 -0
  307. package/dist/codemirror/tablev2/tableWidgetV2.js.map +1 -0
  308. package/dist/codemirror/updateBus.d.ts +29 -0
  309. package/dist/codemirror/updateBus.js +26 -0
  310. package/dist/codemirror/updateBus.js.map +1 -0
  311. package/dist/codemirror/wikilink/index.d.ts +3 -0
  312. package/dist/codemirror/wikilink/index.js +2 -0
  313. package/dist/codemirror/wikilink/index.js.map +1 -0
  314. package/dist/codemirror/wikilink/wikilinkPlugin.d.ts +40 -0
  315. package/dist/codemirror/wikilink/wikilinkPlugin.js +89 -0
  316. package/dist/codemirror/wikilink/wikilinkPlugin.js.map +1 -0
  317. package/dist/codemirror/wikilink/wikilinkScanRule.d.ts +9 -0
  318. package/dist/codemirror/wikilink/wikilinkScanRule.js +13 -0
  319. package/dist/codemirror/wikilink/wikilinkScanRule.js.map +1 -0
  320. package/dist/frontmatter.d.ts +79 -0
  321. package/dist/frontmatter.js +58 -0
  322. package/dist/frontmatter.js.map +1 -0
  323. package/dist/imageInsert.d.ts +66 -0
  324. package/dist/imageInsert.js +111 -0
  325. package/dist/imageInsert.js.map +1 -0
  326. package/dist/imageSrcResolver.d.ts +55 -0
  327. package/dist/imageSrcResolver.js +49 -0
  328. package/dist/imageSrcResolver.js.map +1 -0
  329. package/dist/index.d.ts +35 -880
  330. package/dist/index.js +128 -5989
  331. package/dist/index.js.map +1 -1
  332. package/dist/links/wikilink.d.ts +26 -0
  333. package/dist/links/wikilink.js +54 -0
  334. package/dist/links/wikilink.js.map +1 -0
  335. package/dist/links/workspaceLink.d.ts +34 -0
  336. package/dist/links/workspaceLink.js +60 -0
  337. package/dist/links/workspaceLink.js.map +1 -0
  338. package/dist/types.d.ts +20 -0
  339. package/dist/types.js +1 -0
  340. package/dist/types.js.map +1 -0
  341. package/package.json +7 -3
@@ -0,0 +1,111 @@
1
+ import "./chunk-V6TY7KAL.js";
2
+ async function insertImageBlob(opts) {
3
+ const alt = opts.alt ?? defaultAltFromMime(opts.blob.type);
4
+ const filename = buildImageFilename(opts.blob.type);
5
+ if (opts.saveBytes) {
6
+ try {
7
+ const bytes = new Uint8Array(await opts.blob.arrayBuffer());
8
+ await opts.saveBytes(`images/${filename}`, bytes);
9
+ return {
10
+ markdownReference: `images/${filename}`,
11
+ alt
12
+ };
13
+ } catch (error) {
14
+ return {
15
+ markdownReference: await blobToDataUrl(opts.blob),
16
+ alt,
17
+ warning: error instanceof Error ? `Saved as inline data URL: ${error.message}` : "Saved as inline data URL \u2014 workspace write unavailable"
18
+ };
19
+ }
20
+ }
21
+ return {
22
+ markdownReference: await blobToDataUrl(opts.blob),
23
+ alt,
24
+ warning: "Saved as inline data URL \u2014 no file storage configured"
25
+ };
26
+ }
27
+ function buildImageMarkdown(result) {
28
+ return `![${result.alt}](${result.markdownReference})`;
29
+ }
30
+ function extractImageBlobs(items) {
31
+ if (!items) return [];
32
+ const blobs = [];
33
+ for (let i = 0; i < items.length; i += 1) {
34
+ const item = items[i];
35
+ if (item.kind === "file" && item.type.startsWith("image/")) {
36
+ const blob = item.getAsFile();
37
+ if (blob) {
38
+ blobs.push(blob);
39
+ }
40
+ }
41
+ }
42
+ return blobs;
43
+ }
44
+ function extractImageFiles(files) {
45
+ if (!files) return [];
46
+ const out = [];
47
+ for (let i = 0; i < files.length; i += 1) {
48
+ const file = files[i];
49
+ if (file.type.startsWith("image/")) {
50
+ out.push(file);
51
+ }
52
+ }
53
+ return out;
54
+ }
55
+ function defaultAltFromMime(mime) {
56
+ const sub = mime.split("/")[1] ?? "image";
57
+ return `pasted-${sub}`;
58
+ }
59
+ function buildImageFilename(mime) {
60
+ const ext = extensionForMime(mime);
61
+ const ts = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
62
+ const suffix = Math.random().toString(36).slice(2, 8);
63
+ return `pasted-${ts}-${suffix}.${ext}`;
64
+ }
65
+ function extensionForMime(mime) {
66
+ switch (mime) {
67
+ case "image/png":
68
+ return "png";
69
+ case "image/jpeg":
70
+ case "image/jpg":
71
+ return "jpg";
72
+ case "image/gif":
73
+ return "gif";
74
+ case "image/webp":
75
+ return "webp";
76
+ case "image/svg+xml":
77
+ return "svg";
78
+ case "image/bmp":
79
+ return "bmp";
80
+ default:
81
+ return "bin";
82
+ }
83
+ }
84
+ async function blobToDataUrl(blob) {
85
+ const buffer = new Uint8Array(await blob.arrayBuffer());
86
+ const base64 = bytesToBase64(buffer);
87
+ const mime = blob.type || "application/octet-stream";
88
+ return `data:${mime};base64,${base64}`;
89
+ }
90
+ function bytesToBase64(bytes) {
91
+ if (typeof btoa === "function") {
92
+ let binary = "";
93
+ const chunk = 32768;
94
+ for (let i = 0; i < bytes.length; i += chunk) {
95
+ binary += String.fromCharCode(...bytes.subarray(i, i + chunk));
96
+ }
97
+ return btoa(binary);
98
+ }
99
+ const buffer = globalThis.Buffer;
100
+ if (buffer && typeof buffer.from === "function") {
101
+ return buffer.from(bytes).toString("base64");
102
+ }
103
+ throw new Error("No base64 encoder available in this environment");
104
+ }
105
+ export {
106
+ buildImageMarkdown,
107
+ extractImageBlobs,
108
+ extractImageFiles,
109
+ insertImageBlob
110
+ };
111
+ //# sourceMappingURL=imageInsert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/imageInsert.ts"],"sourcesContent":["/**\n * Image-insertion pipeline. Used by both paste-from-clipboard and\n * drag-and-drop. Both produce a `Blob`; this module turns the blob\n * into a markdown-reference-able path:\n *\n * * When a `saveBytes` writer is injected (a desktop host): writes\n * the bytes to `images/<timestamp>-<hash>.<ext>` and returns the\n * relative path. The markdown reference is portable across\n * machines because it's a real on-disk file.\n * * Otherwise (plain browser, or the write fails): falls back to a\n * data URL embedded directly in the markdown. The markdown file\n * bloats but the image stays visible through page reload without\n * needing a binary file API.\n *\n * The writer is injected rather than imported so this module stays\n * environment-agnostic — the editor reads it off a CM6 facet\n * ({@link saveImageBytesFacet}) the host wires up.\n *\n * Returned `markdownReference` is what the caller drops into\n * `![alt](…)`. `warning` is set in the data-URL fallback case so\n * the caller can surface a note to the user.\n */\nexport interface ImageInsertOptions {\n blob: Blob;\n /**\n * Persist the bytes at a workspace-relative path. `null`/omitted ⇒\n * inline as a data URL (browser fallback).\n */\n saveBytes?: ((relPath: string, bytes: Uint8Array) => Promise<void>) | null;\n /**\n * Alt text the user typed (currently always synthesized as\n * \"pasted-image\" or \"dropped-image\"; in phase 3d the inline\n * rename UI lets the user edit it post-insert).\n */\n alt?: string;\n}\n\nexport interface ImageInsertResult {\n markdownReference: string;\n alt: string;\n warning?: string;\n}\n\n/**\n * Save the blob and return the markdown reference. Errors are\n * structured (the caller decides whether to retry with a fallback\n * or surface a notification).\n */\nexport async function insertImageBlob(opts: ImageInsertOptions): Promise<ImageInsertResult> {\n const alt = opts.alt ?? defaultAltFromMime(opts.blob.type);\n const filename = buildImageFilename(opts.blob.type);\n\n // Try the on-disk pipeline first. Falls back to a data URL when no\n // writer is injected (plain browser) or the write fails for a\n // recoverable reason.\n if (opts.saveBytes) {\n try {\n const bytes = new Uint8Array(await opts.blob.arrayBuffer());\n await opts.saveBytes(`images/${filename}`, bytes);\n return {\n markdownReference: `images/${filename}`,\n alt,\n };\n } catch (error) {\n return {\n markdownReference: await blobToDataUrl(opts.blob),\n alt,\n warning:\n error instanceof Error\n ? `Saved as inline data URL: ${error.message}`\n : \"Saved as inline data URL — workspace write unavailable\",\n };\n }\n }\n\n return {\n markdownReference: await blobToDataUrl(opts.blob),\n alt,\n warning: \"Saved as inline data URL — no file storage configured\",\n };\n}\n\n/**\n * Build a markdown image insertion string from the result. Keeps\n * the call site (handlePaste / handleDrop) tidy.\n */\nexport function buildImageMarkdown(result: ImageInsertResult): string {\n return `![${result.alt}](${result.markdownReference})`;\n}\n\n/**\n * Scan a DataTransferItemList for image blobs. Returns every\n * image found, in order. Empty array when nothing matches —\n * caller treats that as \"fall through to text paste\".\n */\nexport function extractImageBlobs(items: DataTransferItemList | null | undefined): Blob[] {\n if (!items) return [];\n const blobs: Blob[] = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (item.kind === \"file\" && item.type.startsWith(\"image/\")) {\n const blob = item.getAsFile();\n if (blob) {\n blobs.push(blob);\n }\n }\n }\n return blobs;\n}\n\n/**\n * Scan a FileList (drag-and-drop's `dataTransfer.files`) for\n * image files. Drag-drop and paste use different shapes; this\n * keeps the two paths symmetrical at the call site.\n */\nexport function extractImageFiles(files: FileList | null | undefined): File[] {\n if (!files) return [];\n const out: File[] = [];\n for (let i = 0; i < files.length; i += 1) {\n const file = files[i];\n if (file.type.startsWith(\"image/\")) {\n out.push(file);\n }\n }\n return out;\n}\n\nfunction defaultAltFromMime(mime: string): string {\n const sub = mime.split(\"/\")[1] ?? \"image\";\n return `pasted-${sub}`;\n}\n\nfunction buildImageFilename(mime: string): string {\n const ext = extensionForMime(mime);\n // Timestamp first so files sort chronologically; short suffix\n // disambiguates within-tick collisions (multi-image drops).\n const ts = new Date().toISOString().replace(/[:.]/g, \"-\");\n const suffix = Math.random().toString(36).slice(2, 8);\n return `pasted-${ts}-${suffix}.${ext}`;\n}\n\nfunction extensionForMime(mime: string): string {\n switch (mime) {\n case \"image/png\":\n return \"png\";\n case \"image/jpeg\":\n case \"image/jpg\":\n return \"jpg\";\n case \"image/gif\":\n return \"gif\";\n case \"image/webp\":\n return \"webp\";\n case \"image/svg+xml\":\n return \"svg\";\n case \"image/bmp\":\n return \"bmp\";\n default:\n return \"bin\";\n }\n}\n\nasync function blobToDataUrl(blob: Blob): Promise<string> {\n // Built-in `FileReader.readAsDataURL` is the conventional path\n // but it isn't available in node test environments. Building\n // the data URL by hand from the byte buffer keeps the helper\n // testable AND avoids an extra async hop in production.\n const buffer = new Uint8Array(await blob.arrayBuffer());\n const base64 = bytesToBase64(buffer);\n const mime = blob.type || \"application/octet-stream\";\n return `data:${mime};base64,${base64}`;\n}\n\nfunction bytesToBase64(bytes: Uint8Array): string {\n // Browser path — `btoa` over the string built from char codes.\n if (typeof btoa === \"function\") {\n let binary = \"\";\n const chunk = 0x8000;\n for (let i = 0; i < bytes.length; i += chunk) {\n // String.fromCharCode handles small slices; chunking\n // avoids the \"Maximum call stack size exceeded\" issue with\n // the spread operator on multi-MB images.\n binary += String.fromCharCode(...bytes.subarray(i, i + chunk));\n }\n return btoa(binary);\n }\n // Node path — Buffer is available in vitest's node environment.\n // We use `globalThis` to avoid pulling in a Node type\n // declaration on the browser side.\n const buffer = (globalThis as unknown as { Buffer?: { from: (b: Uint8Array) => { toString: (enc: string) => string } } }).Buffer;\n if (buffer && typeof buffer.from === \"function\") {\n return buffer.from(bytes).toString(\"base64\");\n }\n throw new Error(\"No base64 encoder available in this environment\");\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Display-time resolution of image `src` values for the editor — the
3
+ * environment-agnostic pieces.
4
+ *
5
+ * Markdown stores image references **workspace-relative and portable** (e.g.
6
+ * `images/pasted-….png`), which is what lands on disk and survives moving the
7
+ * folder between machines. A WebView, though, can't load a bare relative path
8
+ * against its app origin, so a host that streams local files needs to map the
9
+ * reference onto its own asset protocol.
10
+ *
11
+ * This module provides the host-independent parts: the POSIX path helpers
12
+ * (`computeFileDir` / `joinPath` / …), the `hasUriScheme` guard, and
13
+ * `defaultResolveImageSrc` (render as-is — the browser/SSR default). A desktop
14
+ * host composes these with its file API (e.g. Tauri `convertFileSrc`) to build
15
+ * its own resolver and injects it via the editor's `resolveImageSrc` prop. The
16
+ * stored markdown reference is never rewritten — only the rendered `<img src>`.
17
+ *
18
+ * Paths are treated as POSIX (`/`), matching the macOS/Linux workspace folders
19
+ * this targets. Windows-style drive paths are passed through unresolved.
20
+ */
21
+ interface ImageResolveContext {
22
+ /** Absolute OS directory of the markdown file being edited, or null. */
23
+ fileDir: string | null;
24
+ }
25
+ /**
26
+ * True when `src` already carries a URI scheme, a protocol-relative `//`, or a
27
+ * bare fragment — i.e. it's directly loadable and needs no path resolution. A
28
+ * host's display-src resolver uses this to decide whether to map a relative
29
+ * workspace path onto its own asset protocol.
30
+ */
31
+ declare function hasUriScheme(src: string): boolean;
32
+ /**
33
+ * Environment-agnostic default for the editor's `resolveImageSrcFacet`: render
34
+ * the reference as-is. Data URLs and absolute/schemed URLs load directly; a
35
+ * relative ref resolves against the page origin (or shows broken if no backing
36
+ * file). A desktop host overrides the facet with its own resolver, which maps
37
+ * relative paths onto a local asset protocol.
38
+ */
39
+ declare function defaultResolveImageSrc(rawSrc: string, _ctx: ImageResolveContext): string;
40
+ /**
41
+ * The directory a relative image reference resolves against: the folder
42
+ * containing the active markdown file. Falls back to the workspace root when
43
+ * the file path is unknown, and to null when there's no workspace.
44
+ */
45
+ declare function computeFileDir(workspaceRoot: string | null | undefined, filePath: string | null | undefined): string | null;
46
+ declare function isAbsolutePath(p: string): boolean;
47
+ /** POSIX `dirname`: the parent of a path, with trailing slashes ignored. */
48
+ declare function dirnamePath(p: string): string;
49
+ /**
50
+ * Join `rel` onto `dir`, normalizing `.` and `..` segments. Absolute-ness is
51
+ * inherited from `dir`; `..` never escapes above an absolute root.
52
+ */
53
+ declare function joinPath(dir: string, rel: string): string;
54
+
55
+ export { type ImageResolveContext, computeFileDir, defaultResolveImageSrc, dirnamePath, hasUriScheme, isAbsolutePath, joinPath };
@@ -0,0 +1,49 @@
1
+ import "./chunk-V6TY7KAL.js";
2
+ const HAS_SCHEME = /^(?:[a-z][a-z0-9+.-]*:|\/\/|#)/i;
3
+ function hasUriScheme(src) {
4
+ return HAS_SCHEME.test(src.trim());
5
+ }
6
+ function defaultResolveImageSrc(rawSrc, _ctx) {
7
+ return rawSrc.trim();
8
+ }
9
+ function computeFileDir(workspaceRoot, filePath) {
10
+ if (!workspaceRoot) return null;
11
+ if (!filePath) return workspaceRoot;
12
+ return dirnamePath(joinPath(workspaceRoot, filePath));
13
+ }
14
+ function isAbsolutePath(p) {
15
+ return p.startsWith("/");
16
+ }
17
+ function dirnamePath(p) {
18
+ const trimmed = p.replace(/\/+$/, "");
19
+ const idx = trimmed.lastIndexOf("/");
20
+ if (idx < 0) return ".";
21
+ if (idx === 0) return "/";
22
+ return trimmed.slice(0, idx);
23
+ }
24
+ function joinPath(dir, rel) {
25
+ const isAbs = isAbsolutePath(dir);
26
+ const out = [];
27
+ for (const part of `${dir}/${rel}`.split("/")) {
28
+ if (part === "" || part === ".") continue;
29
+ if (part === "..") {
30
+ if (out.length && out[out.length - 1] !== "..") {
31
+ out.pop();
32
+ } else if (!isAbs) {
33
+ out.push("..");
34
+ }
35
+ continue;
36
+ }
37
+ out.push(part);
38
+ }
39
+ return (isAbs ? "/" : "") + out.join("/");
40
+ }
41
+ export {
42
+ computeFileDir,
43
+ defaultResolveImageSrc,
44
+ dirnamePath,
45
+ hasUriScheme,
46
+ isAbsolutePath,
47
+ joinPath
48
+ };
49
+ //# sourceMappingURL=imageSrcResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/imageSrcResolver.ts"],"sourcesContent":["/**\n * Display-time resolution of image `src` values for the editor — the\n * environment-agnostic pieces.\n *\n * Markdown stores image references **workspace-relative and portable** (e.g.\n * `images/pasted-….png`), which is what lands on disk and survives moving the\n * folder between machines. A WebView, though, can't load a bare relative path\n * against its app origin, so a host that streams local files needs to map the\n * reference onto its own asset protocol.\n *\n * This module provides the host-independent parts: the POSIX path helpers\n * (`computeFileDir` / `joinPath` / …), the `hasUriScheme` guard, and\n * `defaultResolveImageSrc` (render as-is — the browser/SSR default). A desktop\n * host composes these with its file API (e.g. Tauri `convertFileSrc`) to build\n * its own resolver and injects it via the editor's `resolveImageSrc` prop. The\n * stored markdown reference is never rewritten — only the rendered `<img src>`.\n *\n * Paths are treated as POSIX (`/`), matching the macOS/Linux workspace folders\n * this targets. Windows-style drive paths are passed through unresolved.\n */\nexport interface ImageResolveContext {\n /** Absolute OS directory of the markdown file being edited, or null. */\n fileDir: string | null;\n}\n\n// Anything that already carries a scheme (`data:`, `http(s):`, `asset:`,\n// `blob:`, `file:`, `tauri:`, `mailto:` …), a protocol-relative `//`, or a bare\n// fragment `#` is \"already resolvable\" — no path resolution applies.\nconst HAS_SCHEME = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/|#)/i;\n\n/**\n * True when `src` already carries a URI scheme, a protocol-relative `//`, or a\n * bare fragment — i.e. it's directly loadable and needs no path resolution. A\n * host's display-src resolver uses this to decide whether to map a relative\n * workspace path onto its own asset protocol.\n */\nexport function hasUriScheme(src: string): boolean {\n return HAS_SCHEME.test(src.trim());\n}\n\n/**\n * Environment-agnostic default for the editor's `resolveImageSrcFacet`: render\n * the reference as-is. Data URLs and absolute/schemed URLs load directly; a\n * relative ref resolves against the page origin (or shows broken if no backing\n * file). A desktop host overrides the facet with its own resolver, which maps\n * relative paths onto a local asset protocol.\n */\nexport function defaultResolveImageSrc(rawSrc: string, _ctx: ImageResolveContext): string {\n return rawSrc.trim();\n}\n\n/**\n * The directory a relative image reference resolves against: the folder\n * containing the active markdown file. Falls back to the workspace root when\n * the file path is unknown, and to null when there's no workspace.\n */\nexport function computeFileDir(\n workspaceRoot: string | null | undefined,\n filePath: string | null | undefined,\n): string | null {\n if (!workspaceRoot) return null;\n if (!filePath) return workspaceRoot;\n return dirnamePath(joinPath(workspaceRoot, filePath));\n}\n\nexport function isAbsolutePath(p: string): boolean {\n return p.startsWith(\"/\");\n}\n\n/** POSIX `dirname`: the parent of a path, with trailing slashes ignored. */\nexport function dirnamePath(p: string): string {\n const trimmed = p.replace(/\\/+$/, \"\");\n const idx = trimmed.lastIndexOf(\"/\");\n if (idx < 0) return \".\";\n if (idx === 0) return \"/\";\n return trimmed.slice(0, idx);\n}\n\n/**\n * Join `rel` onto `dir`, normalizing `.` and `..` segments. Absolute-ness is\n * inherited from `dir`; `..` never escapes above an absolute root.\n */\nexport function joinPath(dir: string, rel: string): string {\n const isAbs = isAbsolutePath(dir);\n const out: string[] = [];\n for (const part of `${dir}/${rel}`.split(\"/\")) {\n if (part === \"\" || part === \".\") continue;\n if (part === \"..\") {\n if (out.length && out[out.length - 1] !== \"..\") {\n out.pop();\n } else if (!isAbs) {\n out.push(\"..\");\n }\n continue;\n }\n out.push(part);\n }\n return (isAbs ? \"/\" : \"\") + out.join(\"/\");\n}\n"],"mappings":";AA4BA,MAAM,aAAa;AAQZ,SAAS,aAAa,KAAsB;AACjD,SAAO,WAAW,KAAK,IAAI,KAAK,CAAC;AACnC;AASO,SAAS,uBAAuB,QAAgB,MAAmC;AACxF,SAAO,OAAO,KAAK;AACrB;AAOO,SAAS,eACd,eACA,UACe;AACf,MAAI,CAAC,cAAe,QAAO;AAC3B,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,YAAY,SAAS,eAAe,QAAQ,CAAC;AACtD;AAEO,SAAS,eAAe,GAAoB;AACjD,SAAO,EAAE,WAAW,GAAG;AACzB;AAGO,SAAS,YAAY,GAAmB;AAC7C,QAAM,UAAU,EAAE,QAAQ,QAAQ,EAAE;AACpC,QAAM,MAAM,QAAQ,YAAY,GAAG;AACnC,MAAI,MAAM,EAAG,QAAO;AACpB,MAAI,QAAQ,EAAG,QAAO;AACtB,SAAO,QAAQ,MAAM,GAAG,GAAG;AAC7B;AAMO,SAAS,SAAS,KAAa,KAAqB;AACzD,QAAM,QAAQ,eAAe,GAAG;AAChC,QAAM,MAAgB,CAAC;AACvB,aAAW,QAAQ,GAAG,GAAG,IAAI,GAAG,GAAG,MAAM,GAAG,GAAG;AAC7C,QAAI,SAAS,MAAM,SAAS,IAAK;AACjC,QAAI,SAAS,MAAM;AACjB,UAAI,IAAI,UAAU,IAAI,IAAI,SAAS,CAAC,MAAM,MAAM;AAC9C,YAAI,IAAI;AAAA,MACV,WAAW,CAAC,OAAO;AACjB,YAAI,KAAK,IAAI;AAAA,MACf;AACA;AAAA,IACF;AACA,QAAI,KAAK,IAAI;AAAA,EACf;AACA,UAAQ,QAAQ,MAAM,MAAM,IAAI,KAAK,GAAG;AAC1C;","names":[]}