@lapismd/mira 0.0.4 → 0.1.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 (305) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/extensions/index.d.ts +13 -1
  3. package/dist/extensions/index.d.ts.map +1 -1
  4. package/dist/extensions/index.js +13 -3
  5. package/dist/extensions/inline-links.d.ts +8 -0
  6. package/dist/extensions/inline-links.d.ts.map +1 -0
  7. package/dist/extensions/inline-links.js +120 -0
  8. package/dist/extensions/markdown-editing.d.ts +32 -0
  9. package/dist/extensions/markdown-editing.d.ts.map +1 -0
  10. package/dist/extensions/markdown-editing.js +1 -0
  11. package/dist/internal/codemirror/base/index.d.ts.map +1 -1
  12. package/dist/internal/codemirror/base/index.js +3 -0
  13. package/dist/internal/codemirror/markdown/index.d.ts.map +1 -1
  14. package/dist/internal/codemirror/markdown/index.js +2 -1
  15. package/dist/internal/codemirror/rich/block-controls.d.ts.map +1 -1
  16. package/dist/internal/codemirror/rich/block-controls.js +2 -0
  17. package/dist/internal/codemirror/rich/block-gutter-accessibility.d.ts +15 -0
  18. package/dist/internal/codemirror/rich/block-gutter-accessibility.d.ts.map +1 -0
  19. package/dist/internal/codemirror/rich/block-gutter-accessibility.js +67 -0
  20. package/dist/internal/codemirror/rich/index.d.ts.map +1 -1
  21. package/dist/internal/codemirror/rich/index.js +43 -9
  22. package/dist/internal/codemirror/rich/utils/images.d.ts +6 -3
  23. package/dist/internal/codemirror/rich/utils/images.d.ts.map +1 -1
  24. package/dist/internal/codemirror/rich/utils/images.js +16 -29
  25. package/dist/internal/codemirror/rich/utils/references.d.ts +15 -0
  26. package/dist/internal/codemirror/rich/utils/references.d.ts.map +1 -0
  27. package/dist/internal/codemirror/rich/utils/references.js +86 -0
  28. package/dist/internal/codemirror/rich/widgets/preview-widgets.d.ts +3 -0
  29. package/dist/internal/codemirror/rich/widgets/preview-widgets.d.ts.map +1 -1
  30. package/dist/internal/codemirror/rich/widgets/preview-widgets.js +31 -3
  31. package/dist/internal/inline-links/icons.d.ts +115 -0
  32. package/dist/internal/inline-links/icons.d.ts.map +1 -0
  33. package/dist/internal/inline-links/icons.js +148 -0
  34. package/dist/internal/inline-links/live-preview.d.ts +5 -0
  35. package/dist/internal/inline-links/live-preview.d.ts.map +1 -0
  36. package/dist/internal/inline-links/live-preview.js +135 -0
  37. package/dist/internal/inline-links/registry.d.ts +44 -0
  38. package/dist/internal/inline-links/registry.d.ts.map +1 -0
  39. package/dist/internal/inline-links/registry.js +153 -0
  40. package/dist/mira.svelte.d.ts +1 -1
  41. package/dist/preview/asset-url-lease.d.ts +6 -0
  42. package/dist/preview/asset-url-lease.d.ts.map +1 -0
  43. package/dist/preview/asset-url-lease.js +28 -0
  44. package/dist/preview/components/embed.svelte +10 -5
  45. package/dist/preview/components/embed.svelte.d.ts.map +1 -1
  46. package/dist/preview/components/image.svelte +7 -2
  47. package/dist/preview/components/image.svelte.d.ts.map +1 -1
  48. package/dist/preview/components/inline-link.svelte +94 -0
  49. package/dist/preview/components/inline-link.svelte.d.ts +16 -0
  50. package/dist/preview/components/inline-link.svelte.d.ts.map +1 -0
  51. package/dist/preview/components/link-destination-tooltip.svelte +63 -0
  52. package/dist/preview/components/link-destination-tooltip.svelte.d.ts +7 -0
  53. package/dist/preview/components/link-destination-tooltip.svelte.d.ts.map +1 -0
  54. package/dist/preview/components/link-site-icon.svelte +39 -0
  55. package/dist/preview/components/link-site-icon.svelte.d.ts +10 -0
  56. package/dist/preview/components/link-site-icon.svelte.d.ts.map +1 -0
  57. package/dist/preview/components/link.svelte +19 -9
  58. package/dist/preview/components/link.svelte.d.ts.map +1 -1
  59. package/dist/preview/editable-markdown-preview/editable-markdown-surface.svelte +26 -10
  60. package/dist/preview/editable-markdown-preview/editable-markdown-surface.svelte.d.ts.map +1 -1
  61. package/dist/preview/editable-markdown-preview/editing-session.d.ts +15 -0
  62. package/dist/preview/editable-markdown-preview/editing-session.d.ts.map +1 -0
  63. package/dist/preview/editable-markdown-preview/editing-session.js +103 -0
  64. package/dist/preview/editable-markdown-preview/editor-surface.svelte +13 -4
  65. package/dist/preview/editable-markdown-preview/editor-surface.svelte.d.ts +1 -0
  66. package/dist/preview/editable-markdown-preview/editor-surface.svelte.d.ts.map +1 -1
  67. package/dist/preview/editable-markdown-preview/serialized-writer.d.ts +10 -8
  68. package/dist/preview/editable-markdown-preview/serialized-writer.d.ts.map +1 -1
  69. package/dist/preview/editable-markdown-preview/serialized-writer.js +105 -6
  70. package/dist/preview/editable-markdown-preview.svelte +8 -6
  71. package/dist/preview/editable-markdown-preview.svelte.d.ts.map +1 -1
  72. package/dist/preview/index.d.ts +2 -0
  73. package/dist/preview/index.d.ts.map +1 -1
  74. package/dist/preview/index.js +2 -0
  75. package/dist/preview/markdown-preview.svelte +11 -0
  76. package/dist/preview/markdown-preview.svelte.d.ts.map +1 -1
  77. package/dist/preview/renderer/utils.js +0 -2
  78. package/dist/preview/styles/inline-links.css +38 -0
  79. package/dist/preview/styles/links-embeds-tags.css +2 -2
  80. package/dist/preview/styles/mermaid-highlight.css +4 -3
  81. package/dist/preview/styles/references.css +72 -0
  82. package/dist/preview/styles.css +2 -0
  83. package/dist/tables/editor-column.svelte +20 -7
  84. package/dist/tables/editor-column.svelte.d.ts +2 -0
  85. package/dist/tables/editor-column.svelte.d.ts.map +1 -1
  86. package/dist/tables/editor-table.svelte +4 -0
  87. package/dist/tables/editor-table.svelte.d.ts +2 -0
  88. package/dist/tables/editor-table.svelte.d.ts.map +1 -1
  89. package/dist/tables/grid-editor-column.svelte +6 -2
  90. package/dist/tables/grid-editor-column.svelte.d.ts +2 -0
  91. package/dist/tables/grid-editor-column.svelte.d.ts.map +1 -1
  92. package/dist/tables/grid-editor-table.svelte +4 -0
  93. package/dist/tables/grid-editor-table.svelte.d.ts +2 -0
  94. package/dist/tables/grid-editor-table.svelte.d.ts.map +1 -1
  95. package/dist/tables/index.d.ts +1 -0
  96. package/dist/tables/index.d.ts.map +1 -1
  97. package/dist/tables/index.js +1 -0
  98. package/dist/tables/markdown-table-data-cell.svelte +4 -0
  99. package/dist/tables/markdown-table-data-cell.svelte.d.ts +2 -0
  100. package/dist/tables/markdown-table-data-cell.svelte.d.ts.map +1 -1
  101. package/dist/tables/table-reader.svelte +101 -0
  102. package/dist/tables/table-reader.svelte.d.ts +21 -0
  103. package/dist/tables/table-reader.svelte.d.ts.map +1 -0
  104. package/dist/tables/types.d.ts +2 -0
  105. package/dist/tables/types.d.ts.map +1 -1
  106. package/dist/tables/widgets/grid-table-widget.d.ts +1 -1
  107. package/dist/tables/widgets/grid-table-widget.d.ts.map +1 -1
  108. package/dist/tables/widgets/grid-table-widget.js +5 -2
  109. package/dist/tables/widgets/lifecycle.d.ts +4 -0
  110. package/dist/tables/widgets/lifecycle.d.ts.map +1 -0
  111. package/dist/tables/widgets/lifecycle.js +13 -0
  112. package/dist/tables/widgets/pipe-table-widget.d.ts +1 -1
  113. package/dist/tables/widgets/pipe-table-widget.d.ts.map +1 -1
  114. package/dist/tables/widgets/pipe-table-widget.js +5 -2
  115. package/dist/ui/context-menu/context-menu-radio-group.svelte.d.ts +1 -1
  116. package/dist/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +1 -1
  117. package/dist/ui/toolbar/toolbar-group.svelte.d.ts +1 -1
  118. package/inline-links-NOTICE.md +31 -0
  119. package/package.json +6 -2
  120. package/dist/core/code-mirror.test.d.ts +0 -2
  121. package/dist/core/code-mirror.test.d.ts.map +0 -1
  122. package/dist/core/code-mirror.test.js +0 -68
  123. package/dist/core/images.test.d.ts +0 -2
  124. package/dist/core/images.test.d.ts.map +0 -1
  125. package/dist/core/images.test.js +0 -109
  126. package/dist/core/index.test.d.ts +0 -2
  127. package/dist/core/index.test.d.ts.map +0 -1
  128. package/dist/core/index.test.js +0 -11
  129. package/dist/core/markdown-actions.test.d.ts +0 -2
  130. package/dist/core/markdown-actions.test.d.ts.map +0 -1
  131. package/dist/core/markdown-actions.test.js +0 -182
  132. package/dist/extensions/doodle-dividers.test.d.ts +0 -2
  133. package/dist/extensions/doodle-dividers.test.d.ts.map +0 -1
  134. package/dist/extensions/doodle-dividers.test.js +0 -296
  135. package/dist/extensions/index.test.d.ts +0 -2
  136. package/dist/extensions/index.test.d.ts.map +0 -1
  137. package/dist/extensions/index.test.js +0 -283
  138. package/dist/index.test.d.ts +0 -2
  139. package/dist/index.test.d.ts.map +0 -1
  140. package/dist/index.test.js +0 -64
  141. package/dist/internal/appearance-context.test.d.ts +0 -2
  142. package/dist/internal/appearance-context.test.d.ts.map +0 -1
  143. package/dist/internal/appearance-context.test.js +0 -31
  144. package/dist/internal/codemirror/base/index.test.d.ts +0 -2
  145. package/dist/internal/codemirror/base/index.test.d.ts.map +0 -1
  146. package/dist/internal/codemirror/base/index.test.js +0 -303
  147. package/dist/internal/codemirror/base/search.test.d.ts +0 -2
  148. package/dist/internal/codemirror/base/search.test.d.ts.map +0 -1
  149. package/dist/internal/codemirror/base/search.test.js +0 -155
  150. package/dist/internal/codemirror/base/selection-toolbar.test.d.ts +0 -2
  151. package/dist/internal/codemirror/base/selection-toolbar.test.d.ts.map +0 -1
  152. package/dist/internal/codemirror/base/selection-toolbar.test.js +0 -149
  153. package/dist/internal/codemirror/markdown/authoring.test.d.ts +0 -2
  154. package/dist/internal/codemirror/markdown/authoring.test.d.ts.map +0 -1
  155. package/dist/internal/codemirror/markdown/authoring.test.js +0 -222
  156. package/dist/internal/codemirror/markdown/index.test.d.ts +0 -2
  157. package/dist/internal/codemirror/markdown/index.test.d.ts.map +0 -1
  158. package/dist/internal/codemirror/markdown/index.test.js +0 -158
  159. package/dist/internal/codemirror/markdown/showcase-fixture.test.d.ts +0 -2
  160. package/dist/internal/codemirror/markdown/showcase-fixture.test.d.ts.map +0 -1
  161. package/dist/internal/codemirror/markdown/showcase-fixture.test.js +0 -50
  162. package/dist/internal/codemirror/rich/block-controls.test.d.ts +0 -2
  163. package/dist/internal/codemirror/rich/block-controls.test.d.ts.map +0 -1
  164. package/dist/internal/codemirror/rich/block-controls.test.js +0 -401
  165. package/dist/internal/codemirror/rich/block-ranges.test.d.ts +0 -2
  166. package/dist/internal/codemirror/rich/block-ranges.test.d.ts.map +0 -1
  167. package/dist/internal/codemirror/rich/block-ranges.test.js +0 -310
  168. package/dist/internal/codemirror/rich/block-toolbar.test.d.ts +0 -2
  169. package/dist/internal/codemirror/rich/block-toolbar.test.d.ts.map +0 -1
  170. package/dist/internal/codemirror/rich/block-toolbar.test.js +0 -178
  171. package/dist/internal/codemirror/rich/decorations/fold-indicators.test.d.ts +0 -2
  172. package/dist/internal/codemirror/rich/decorations/fold-indicators.test.d.ts.map +0 -1
  173. package/dist/internal/codemirror/rich/decorations/fold-indicators.test.js +0 -8
  174. package/dist/internal/codemirror/rich/index.test.d.ts +0 -2
  175. package/dist/internal/codemirror/rich/index.test.d.ts.map +0 -1
  176. package/dist/internal/codemirror/rich/index.test.js +0 -607
  177. package/dist/internal/codemirror/rich/utils/code-block-lines.test.d.ts +0 -2
  178. package/dist/internal/codemirror/rich/utils/code-block-lines.test.d.ts.map +0 -1
  179. package/dist/internal/codemirror/rich/utils/code-block-lines.test.js +0 -82
  180. package/dist/internal/codemirror/rich/utils/fenced-code.test.d.ts +0 -2
  181. package/dist/internal/codemirror/rich/utils/fenced-code.test.d.ts.map +0 -1
  182. package/dist/internal/codemirror/rich/utils/fenced-code.test.js +0 -12
  183. package/dist/internal/codemirror/rich/utils/headings.test.d.ts +0 -2
  184. package/dist/internal/codemirror/rich/utils/headings.test.d.ts.map +0 -1
  185. package/dist/internal/codemirror/rich/utils/headings.test.js +0 -27
  186. package/dist/internal/codemirror/rich/utils/height-estimates.test.d.ts +0 -2
  187. package/dist/internal/codemirror/rich/utils/height-estimates.test.d.ts.map +0 -1
  188. package/dist/internal/codemirror/rich/utils/height-estimates.test.js +0 -10
  189. package/dist/internal/codemirror/rich/utils/images.test.d.ts +0 -2
  190. package/dist/internal/codemirror/rich/utils/images.test.d.ts.map +0 -1
  191. package/dist/internal/codemirror/rich/utils/images.test.js +0 -37
  192. package/dist/internal/codemirror/rich/utils/indent.test.d.ts +0 -2
  193. package/dist/internal/codemirror/rich/utils/indent.test.d.ts.map +0 -1
  194. package/dist/internal/codemirror/rich/utils/indent.test.js +0 -169
  195. package/dist/internal/codemirror/rich/utils/inline-math.test.d.ts +0 -2
  196. package/dist/internal/codemirror/rich/utils/inline-math.test.d.ts.map +0 -1
  197. package/dist/internal/codemirror/rich/utils/inline-math.test.js +0 -15
  198. package/dist/internal/codemirror/rich/utils/links.test.d.ts +0 -2
  199. package/dist/internal/codemirror/rich/utils/links.test.d.ts.map +0 -1
  200. package/dist/internal/codemirror/rich/utils/links.test.js +0 -28
  201. package/dist/internal/codemirror/rich/utils/list-callouts.test.d.ts +0 -2
  202. package/dist/internal/codemirror/rich/utils/list-callouts.test.d.ts.map +0 -1
  203. package/dist/internal/codemirror/rich/utils/list-callouts.test.js +0 -47
  204. package/dist/internal/codemirror/rich/utils/measured-indent.test.d.ts +0 -2
  205. package/dist/internal/codemirror/rich/utils/measured-indent.test.d.ts.map +0 -1
  206. package/dist/internal/codemirror/rich/utils/measured-indent.test.js +0 -102
  207. package/dist/internal/codemirror/rich/utils/ranges.test.d.ts +0 -2
  208. package/dist/internal/codemirror/rich/utils/ranges.test.d.ts.map +0 -1
  209. package/dist/internal/codemirror/rich/utils/ranges.test.js +0 -22
  210. package/dist/internal/codemirror/rich/utils/tasks.test.d.ts +0 -2
  211. package/dist/internal/codemirror/rich/utils/tasks.test.d.ts.map +0 -1
  212. package/dist/internal/codemirror/rich/utils/tasks.test.js +0 -57
  213. package/dist/internal/task-states.test.d.ts +0 -2
  214. package/dist/internal/task-states.test.d.ts.map +0 -1
  215. package/dist/internal/task-states.test.js +0 -36
  216. package/dist/mira-code-editor.test.d.ts +0 -2
  217. package/dist/mira-code-editor.test.d.ts.map +0 -1
  218. package/dist/mira-code-editor.test.js +0 -93
  219. package/dist/mode-position.test.d.ts +0 -2
  220. package/dist/mode-position.test.d.ts.map +0 -1
  221. package/dist/mode-position.test.js +0 -60
  222. package/dist/preview/code-language.test.d.ts +0 -2
  223. package/dist/preview/code-language.test.d.ts.map +0 -1
  224. package/dist/preview/code-language.test.js +0 -12
  225. package/dist/preview/components/icon.test.d.ts +0 -2
  226. package/dist/preview/components/icon.test.d.ts.map +0 -1
  227. package/dist/preview/components/icon.test.js +0 -20
  228. package/dist/preview/editable-markdown-preview/behavior.test.d.ts +0 -2
  229. package/dist/preview/editable-markdown-preview/behavior.test.d.ts.map +0 -1
  230. package/dist/preview/editable-markdown-preview/behavior.test.js +0 -36
  231. package/dist/preview/editable-markdown-preview/serialized-writer.test.d.ts +0 -2
  232. package/dist/preview/editable-markdown-preview/serialized-writer.test.d.ts.map +0 -1
  233. package/dist/preview/editable-markdown-preview/serialized-writer.test.js +0 -59
  234. package/dist/preview/embed-target.test.d.ts +0 -2
  235. package/dist/preview/embed-target.test.d.ts.map +0 -1
  236. package/dist/preview/embed-target.test.js +0 -78
  237. package/dist/preview/frontmatter/frontmatter.test.d.ts +0 -2
  238. package/dist/preview/frontmatter/frontmatter.test.d.ts.map +0 -1
  239. package/dist/preview/frontmatter/frontmatter.test.js +0 -190
  240. package/dist/preview/frontmatter/suggestions.test.d.ts +0 -2
  241. package/dist/preview/frontmatter/suggestions.test.d.ts.map +0 -1
  242. package/dist/preview/frontmatter/suggestions.test.js +0 -45
  243. package/dist/preview/outline.test.d.ts +0 -2
  244. package/dist/preview/outline.test.d.ts.map +0 -1
  245. package/dist/preview/outline.test.js +0 -98
  246. package/dist/preview/portable-surfaces.test.d.ts +0 -2
  247. package/dist/preview/portable-surfaces.test.d.ts.map +0 -1
  248. package/dist/preview/portable-surfaces.test.js +0 -513
  249. package/dist/preview/preview.test.d.ts +0 -2
  250. package/dist/preview/preview.test.d.ts.map +0 -1
  251. package/dist/preview/preview.test.js +0 -154
  252. package/dist/preview/remark/callouts.test.d.ts +0 -2
  253. package/dist/preview/remark/callouts.test.d.ts.map +0 -1
  254. package/dist/preview/remark/callouts.test.js +0 -23
  255. package/dist/preview/remark/custom-checklists.test.d.ts +0 -2
  256. package/dist/preview/remark/custom-checklists.test.d.ts.map +0 -1
  257. package/dist/preview/remark/custom-checklists.test.js +0 -51
  258. package/dist/preview/remark/links.test.d.ts +0 -2
  259. package/dist/preview/remark/links.test.d.ts.map +0 -1
  260. package/dist/preview/remark/links.test.js +0 -62
  261. package/dist/preview/remark/parity.test.d.ts +0 -2
  262. package/dist/preview/remark/parity.test.d.ts.map +0 -1
  263. package/dist/preview/remark/parity.test.js +0 -105
  264. package/dist/preview/styles/frontmatter-properties.test.d.ts +0 -2
  265. package/dist/preview/styles/frontmatter-properties.test.d.ts.map +0 -1
  266. package/dist/preview/styles/frontmatter-properties.test.js +0 -57
  267. package/dist/preview/styles/source-mode.test.d.ts +0 -2
  268. package/dist/preview/styles/source-mode.test.d.ts.map +0 -1
  269. package/dist/preview/styles/source-mode.test.js +0 -28
  270. package/dist/tables/extension.test.d.ts +0 -2
  271. package/dist/tables/extension.test.d.ts.map +0 -1
  272. package/dist/tables/extension.test.js +0 -100
  273. package/dist/tables/grid-editor-column.test.d.ts +0 -2
  274. package/dist/tables/grid-editor-column.test.d.ts.map +0 -1
  275. package/dist/tables/grid-editor-column.test.js +0 -27
  276. package/dist/tables/grid-table.test.d.ts +0 -2
  277. package/dist/tables/grid-table.test.d.ts.map +0 -1
  278. package/dist/tables/grid-table.test.js +0 -140
  279. package/dist/tables/index.test.d.ts +0 -2
  280. package/dist/tables/index.test.d.ts.map +0 -1
  281. package/dist/tables/index.test.js +0 -7
  282. package/dist/tables/inline-editor-extensions.test.d.ts +0 -2
  283. package/dist/tables/inline-editor-extensions.test.d.ts.map +0 -1
  284. package/dist/tables/inline-editor-extensions.test.js +0 -23
  285. package/dist/tables/pipe-table.test.d.ts +0 -2
  286. package/dist/tables/pipe-table.test.d.ts.map +0 -1
  287. package/dist/tables/pipe-table.test.js +0 -13
  288. package/dist/tables/table-node.test.d.ts +0 -2
  289. package/dist/tables/table-node.test.d.ts.map +0 -1
  290. package/dist/tables/table-node.test.js +0 -167
  291. package/dist/tables/widgets/source-button.test.d.ts +0 -2
  292. package/dist/tables/widgets/source-button.test.d.ts.map +0 -1
  293. package/dist/tables/widgets/source-button.test.js +0 -11
  294. package/dist/themes/theme-contract.test.d.ts +0 -2
  295. package/dist/themes/theme-contract.test.d.ts.map +0 -1
  296. package/dist/themes/theme-contract.test.js +0 -88
  297. package/dist/ui/index.test.d.ts +0 -2
  298. package/dist/ui/index.test.d.ts.map +0 -1
  299. package/dist/ui/index.test.js +0 -7
  300. package/dist/ui/styles.test.d.ts +0 -2
  301. package/dist/ui/styles.test.d.ts.map +0 -1
  302. package/dist/ui/styles.test.js +0 -26
  303. package/dist/ui/table-dnd/table-dnd-utils.test.d.ts +0 -2
  304. package/dist/ui/table-dnd/table-dnd-utils.test.d.ts.map +0 -1
  305. package/dist/ui/table-dnd/table-dnd-utils.test.js +0 -46
@@ -1 +1 @@
1
- {"version":3,"file":"grid-editor-column.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/grid-editor-column.svelte.ts"],"names":[],"mappings":"AAWC,KAAK,gBAAgB,GAAI;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC;CACvC,CAAC;AAmHJ,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"grid-editor-column.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/grid-editor-column.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGlD,KAAK,gBAAgB,GAAI;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC;CACvC,CAAC;AAsHJ,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  import * as Table from "@lapismd/mira/ui/table";
5
5
  import { cn } from "./utils";
6
6
  import ColumnEditor from "./grid-editor-column.svelte";
7
+ import type { MiraExtension } from "../extensions";
7
8
  import * as Tooltip from "@lapismd/mira/ui/tooltip";
8
9
  import Delete from "@lucide/svelte/icons/trash";
9
10
  import Elipsis from "@lucide/svelte/icons/ellipsis";
@@ -30,12 +31,14 @@
30
31
  onDelete = () => {},
31
32
  onMouseUp = () => {},
32
33
  selectedCells = [],
34
+ extensions = [],
33
35
  }: {
34
36
  node: GridTableNode;
35
37
  onChange?: (data: string, props?: Record<string, any>) => void;
36
38
  onDelete?: (evt: Event) => void;
37
39
  onMouseUp?: (evt: MouseEvent) => void;
38
40
  selectedCells?: Array<[number, number]>;
41
+ extensions?: MiraExtension[];
39
42
  } = $props();
40
43
  let tableVersion = $state(0);
41
44
  let columnCount = $derived.by(() => {
@@ -1107,6 +1110,7 @@
1107
1110
  })}
1108
1111
  >
1109
1112
  <ColumnEditor
1113
+ {extensions}
1110
1114
  content={cell.cell.content}
1111
1115
  class={cn({
1112
1116
  "text-left": cell.cell.align === "left",
@@ -1,10 +1,12 @@
1
1
  import { GridTableNode } from "./grid-table";
2
+ import type { MiraExtension } from "../extensions";
2
3
  type $$ComponentProps = {
3
4
  node: GridTableNode;
4
5
  onChange?: (data: string, props?: Record<string, any>) => void;
5
6
  onDelete?: (evt: Event) => void;
6
7
  onMouseUp?: (evt: MouseEvent) => void;
7
8
  selectedCells?: Array<[number, number]>;
9
+ extensions?: MiraExtension[];
8
10
  };
9
11
  declare const GridEditorTable: import("svelte").Component<$$ComponentProps, {}, "">;
10
12
  type GridEditorTable = ReturnType<typeof GridEditorTable>;
@@ -1 +1 @@
1
- {"version":3,"file":"grid-editor-table.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/grid-editor-table.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAgB,MAAM,cAAc,CAAC;AAwB1D,KAAK,gBAAgB,GAAI;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzC,CAAC;AAugCJ,QAAA,MAAM,eAAe,sDAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"grid-editor-table.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/grid-editor-table.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAgB,MAAM,cAAc,CAAC;AAI3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAqBlD,KAAK,gBAAgB,GAAI;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAC9B,CAAC;AAygCJ,QAAA,MAAM,eAAe,sDAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -7,6 +7,7 @@ export { GridTableNode, type ColType, type GridType, type RowType, } from "./gri
7
7
  export { $convertTableElement, TableNode } from "./table-node";
8
8
  import EditorColumn from "./editor-column.svelte";
9
9
  import EditorTable from "./editor-table.svelte";
10
+ export { default as TableReader } from "./table-reader.svelte";
10
11
  import GridEditorColumn from "./grid-editor-column.svelte";
11
12
  import GridEditorTable from "./grid-editor-table.svelte";
12
13
  export { EditorColumn, EditorColumn as column, EditorTable, EditorTable as Table, GridEditorColumn, GridEditorColumn as GridColumn, GridEditorTable, GridEditorTable as GridTable, };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tables/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,OAAO,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,eAAe,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EACL,YAAY,EACZ,YAAY,IAAI,MAAM,EACtB,WAAW,EACX,WAAW,IAAI,KAAK,EACpB,gBAAgB,EAChB,gBAAgB,IAAI,UAAU,EAC9B,eAAe,EACf,eAAe,IAAI,SAAS,GAC7B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tables/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,OAAO,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,eAAe,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EACL,YAAY,EACZ,YAAY,IAAI,MAAM,EACtB,WAAW,EACX,WAAW,IAAI,KAAK,EACpB,gBAAgB,EAChB,gBAAgB,IAAI,UAAU,EAC9B,eAAe,EACf,eAAe,IAAI,SAAS,GAC7B,CAAC"}
@@ -7,6 +7,7 @@ export { GridTableNode, } from "./grid-table";
7
7
  export { $convertTableElement, TableNode } from "./table-node";
8
8
  import EditorColumn from "./editor-column.svelte";
9
9
  import EditorTable from "./editor-table.svelte";
10
+ export { default as TableReader } from "./table-reader.svelte";
10
11
  import GridEditorColumn from "./grid-editor-column.svelte";
11
12
  import GridEditorTable from "./grid-editor-table.svelte";
12
13
  export { EditorColumn, EditorColumn as column, EditorTable, EditorTable as Table, GridEditorColumn, GridEditorColumn as GridColumn, GridEditorTable, GridEditorTable as GridTable, };
@@ -5,6 +5,7 @@
5
5
  import { cn } from "./utils";
6
6
  import type * as Mdast from "mdast";
7
7
  import ColumnEditor from "./editor-column.svelte";
8
+ import type { MiraExtension } from "../extensions";
8
9
  import type { MarkdownTableDragSource } from "./markdown-table-dnd";
9
10
  import {
10
11
  dropIndicatorClasses,
@@ -14,6 +15,7 @@
14
15
 
15
16
  type Props = {
16
17
  node: Mdast.Nodes;
18
+ extensions?: MiraExtension[];
17
19
  rowIndex: number;
18
20
  colIndex: number;
19
21
  sourceRowIndex?: number;
@@ -33,6 +35,7 @@
33
35
 
34
36
  let {
35
37
  node,
38
+ extensions = [],
36
39
  rowIndex,
37
40
  colIndex,
38
41
  sourceRowIndex = rowIndex,
@@ -109,6 +112,7 @@
109
112
  )}
110
113
  >
111
114
  <ColumnEditor
115
+ {extensions}
112
116
  {node}
113
117
  {onContentChange}
114
118
  {readonly}
@@ -1,7 +1,9 @@
1
1
  import type * as Mdast from "mdast";
2
+ import type { MiraExtension } from "../extensions";
2
3
  import type { MarkdownTableDragSource } from "./markdown-table-dnd";
3
4
  type Props = {
4
5
  node: Mdast.Nodes;
6
+ extensions?: MiraExtension[];
5
7
  rowIndex: number;
6
8
  colIndex: number;
7
9
  sourceRowIndex?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-table-data-cell.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/markdown-table-data-cell.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAQlE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAwFJ,QAAA,MAAM,qBAAqB,2CAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"markdown-table-data-cell.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/markdown-table-data-cell.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAQlE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;IAClB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AA0FJ,QAAA,MAAM,qBAAqB,2CAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,101 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import { TableNode } from "./table-node";
4
+ import { MarkdownPreview } from "@lapismd/mira/preview";
5
+ import type { MiraExtension } from "../extensions";
6
+ import * as Table from "@lapismd/mira/ui/table";
7
+
8
+ let {
9
+ markdown,
10
+ cell,
11
+ breakAfterRows = [],
12
+ afterRow,
13
+ extensions = [],
14
+ label = "Markdown table",
15
+ showHeader = true,
16
+ }: {
17
+ markdown: string;
18
+ /** Render original source-aware cells without enabling table mutations. */
19
+ cell?: Snippet<[{ row: number; column: number; text: string }]>;
20
+ /** Zero-based source rows, including the header at row zero. */
21
+ breakAfterRows?: readonly number[];
22
+ afterRow?: Snippet<[number]>;
23
+ extensions?: MiraExtension[];
24
+ label?: string;
25
+ showHeader?: boolean;
26
+ } = $props();
27
+ const table = $derived(TableNode.fromMarkdown(markdown)?.getMdastNode());
28
+ const rows = $derived(table?.children ?? []);
29
+ const segments = $derived.by(() => {
30
+ const ends = [...new Set([...breakAfterRows, rows.length - 1])]
31
+ .filter((row) => Number.isInteger(row) && row >= 0 && row < rows.length)
32
+ .sort((a, b) => a - b);
33
+ let start = 0;
34
+ return ends.map((end) => {
35
+ const segment = { start, end };
36
+ start = end + 1;
37
+ return segment;
38
+ });
39
+ });
40
+ </script>
41
+
42
+ <div class="mira-table-reader">
43
+ {#each segments as segment (segment.start)}
44
+ <div class="mira-table-reader__scroll">
45
+ <Table.Root aria-label={label} class="mira-table-reader__table">
46
+ <Table.Body>
47
+ {#each rows.slice(segment.start, segment.end + 1) as row, index (segment.start + index)}
48
+ {@const rowIndex = segment.start + index}
49
+ {#if showHeader || rowIndex > 0}
50
+ <Table.Row>
51
+ {#each row.children as value, column (column)}
52
+ {@const text = TableNode.toMarkdown(value).trim()}
53
+ <svelte:element
54
+ this={rowIndex === 0 ? "th" : "td"}
55
+ scope={rowIndex === 0 ? "col" : undefined}
56
+ style:text-align={table?.align?.[column] ?? "left"}
57
+ >
58
+ {#if cell}{@render cell({ row: rowIndex, column, text })}
59
+ {:else}<MarkdownPreview
60
+ value={text}
61
+ inline
62
+ htmlPolicy="safe"
63
+ {extensions}
64
+ />{/if}
65
+ </svelte:element>
66
+ {/each}
67
+ </Table.Row>
68
+ {/if}
69
+ {/each}
70
+ </Table.Body>
71
+ </Table.Root>
72
+ </div>
73
+ {#if breakAfterRows.includes(segment.end)}{@render afterRow?.(
74
+ segment.end,
75
+ )}{/if}
76
+ {/each}
77
+ </div>
78
+
79
+ <style>
80
+ .mira-table-reader {
81
+ min-width: 0;
82
+ }
83
+ .mira-table-reader__scroll {
84
+ overflow-x: auto;
85
+ }
86
+ .mira-table-reader :global(.mira-table-reader__table) {
87
+ border-collapse: collapse;
88
+ table-layout: fixed;
89
+ width: 100%;
90
+ }
91
+ .mira-table-reader
92
+ :global(.mira-table-reader__table > tbody > tr > :is(td, th)) {
93
+ border: 1px solid var(--mira-border, var(--border));
94
+ padding: var(--mira-table-reader-cell-padding, 0.375rem 0.625rem);
95
+ vertical-align: top;
96
+ }
97
+ .mira-table-reader :global(.mira-table-reader__table > tbody > tr > th) {
98
+ background: var(--mira-muted, var(--muted));
99
+ font-weight: 600;
100
+ }
101
+ </style>
@@ -0,0 +1,21 @@
1
+ import type { Snippet } from "svelte";
2
+ import type { MiraExtension } from "../extensions";
3
+ type $$ComponentProps = {
4
+ markdown: string;
5
+ /** Render original source-aware cells without enabling table mutations. */
6
+ cell?: Snippet<[{
7
+ row: number;
8
+ column: number;
9
+ text: string;
10
+ }]>;
11
+ /** Zero-based source rows, including the header at row zero. */
12
+ breakAfterRows?: readonly number[];
13
+ afterRow?: Snippet<[number]>;
14
+ extensions?: MiraExtension[];
15
+ label?: string;
16
+ showHeader?: boolean;
17
+ };
18
+ declare const TableReader: import("svelte").Component<$$ComponentProps, {}, "">;
19
+ type TableReader = ReturnType<typeof TableReader>;
20
+ export default TableReader;
21
+ //# sourceMappingURL=table-reader.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-reader.svelte.d.ts","sourceRoot":"","sources":["../../src/tables/table-reader.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGlD,KAAK,gBAAgB,GAAI;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAChE,gEAAgE;IAChE,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAgEJ,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { MiraExtension } from "../extensions";
1
2
  export declare const TYPE_TABLE = "gridTable";
2
3
  export declare const TYPE_HEADER = "gtHeader";
3
4
  export declare const TYPE_BODY = "gtBody";
@@ -13,6 +14,7 @@ export type MarkdownTable = {
13
14
  };
14
15
  export type MarkdownTableWidgetOptions = {
15
16
  markdown: string;
17
+ extensions?: MiraExtension[];
16
18
  onChange: (nextMarkdown: string) => void;
17
19
  onDelete?: () => void;
18
20
  onSource?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tables/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC,eAAO,MAAM,aAAa,cAAc,CAAC;AACzC,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACjD,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tables/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC,eAAO,MAAM,aAAa,cAAc,CAAC;AACzC,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACjD,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { MarkdownGridTableWidgetOptions } from "../types";
2
- export declare function createMarkdownGridTableWidget({ markdown, onChange, onDelete, onSource, }: MarkdownGridTableWidgetOptions): HTMLElement;
2
+ export declare function createMarkdownGridTableWidget({ markdown, onChange, onDelete, onSource, extensions, }: MarkdownGridTableWidgetOptions): HTMLElement;
3
3
  //# sourceMappingURL=grid-table-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grid-table-widget.d.ts","sourceRoot":"","sources":["../../../src/tables/widgets/grid-table-widget.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAG/D,wBAAgB,6BAA6B,CAAC,EAC5C,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE,8BAA8B,GAAG,WAAW,CAyB9C"}
1
+ {"version":3,"file":"grid-table-widget.d.ts","sourceRoot":"","sources":["../../../src/tables/widgets/grid-table-widget.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAI/D,wBAAgB,6BAA6B,CAAC,EAC5C,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAe,GAChB,EAAE,8BAA8B,GAAG,WAAW,CA2B9C"}
@@ -3,7 +3,8 @@ import { mount } from "svelte";
3
3
  import GridEditorTable from "../grid-editor-table.svelte";
4
4
  import { GridTableNode } from "../grid-table";
5
5
  import { createSourceButton } from "./source-button";
6
- export function createMarkdownGridTableWidget({ markdown, onChange, onDelete, onSource, }) {
6
+ import { registerTableWidgetMount } from "./lifecycle";
7
+ export function createMarkdownGridTableWidget({ markdown, onChange, onDelete, onSource, extensions = [], }) {
7
8
  const root = document.createElement("div");
8
9
  root.className =
9
10
  "mira-table-widget-shell mira-grid-table-widget-shell relative";
@@ -14,13 +15,15 @@ export function createMarkdownGridTableWidget({ markdown, onChange, onDelete, on
14
15
  const node = GridTableNode.fromMarkdown(markdown) ??
15
16
  GridTableNode.fromMarkdown("+---+\n| |\n+---+") ??
16
17
  new GridTableNode();
17
- mount(GridEditorTable, {
18
+ const component = mount(GridEditorTable, {
18
19
  target: root,
19
20
  props: {
20
21
  node,
22
+ extensions,
21
23
  onChange: (nextMarkdown) => onChange(nextMarkdown.trimEnd()),
22
24
  onDelete: () => onDelete?.(),
23
25
  },
24
26
  });
27
+ registerTableWidgetMount(root, component);
25
28
  return root;
26
29
  }
@@ -0,0 +1,4 @@
1
+ export declare function registerTableWidgetMount(root: HTMLElement, component: Record<string, unknown>): void;
2
+ /** Called by the owning CodeMirror widget; safe after repeated destruction. */
3
+ export declare function destroyTableWidget(root: HTMLElement): void;
4
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/tables/widgets/lifecycle.ts"],"names":[],"mappings":"AAIA,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,IAAI,CAEN;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAK1D"}
@@ -0,0 +1,13 @@
1
+ import { unmount } from "svelte";
2
+ const mounts = new WeakMap();
3
+ export function registerTableWidgetMount(root, component) {
4
+ mounts.set(root, component);
5
+ }
6
+ /** Called by the owning CodeMirror widget; safe after repeated destruction. */
7
+ export function destroyTableWidget(root) {
8
+ const component = mounts.get(root);
9
+ if (!component)
10
+ return;
11
+ mounts.delete(root);
12
+ void unmount(component);
13
+ }
@@ -1,3 +1,3 @@
1
1
  import type { MarkdownTableWidgetOptions } from "../types";
2
- export declare function createMarkdownTableWidget({ markdown, onChange, onDelete, onSource, }: MarkdownTableWidgetOptions): HTMLElement;
2
+ export declare function createMarkdownTableWidget({ markdown, onChange, onDelete, onSource, extensions, }: MarkdownTableWidgetOptions): HTMLElement;
3
3
  //# sourceMappingURL=pipe-table-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipe-table-widget.d.ts","sourceRoot":"","sources":["../../../src/tables/widgets/pipe-table-widget.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAG3D,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE,0BAA0B,GAAG,WAAW,CAwB1C"}
1
+ {"version":3,"file":"pipe-table-widget.d.ts","sourceRoot":"","sources":["../../../src/tables/widgets/pipe-table-widget.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAI3D,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAe,GAChB,EAAE,0BAA0B,GAAG,WAAW,CA0B1C"}
@@ -3,7 +3,8 @@ import { mount } from "svelte";
3
3
  import EditorTable from "../editor-table.svelte";
4
4
  import { TableNode } from "../table-node";
5
5
  import { createSourceButton } from "./source-button";
6
- export function createMarkdownTableWidget({ markdown, onChange, onDelete, onSource, }) {
6
+ import { registerTableWidgetMount } from "./lifecycle";
7
+ export function createMarkdownTableWidget({ markdown, onChange, onDelete, onSource, extensions = [], }) {
7
8
  const root = document.createElement("div");
8
9
  root.className = "mira-table-widget-shell relative";
9
10
  root.contentEditable = "false";
@@ -13,13 +14,15 @@ export function createMarkdownTableWidget({ markdown, onChange, onDelete, onSour
13
14
  const node = TableNode.fromMarkdown(markdown) ??
14
15
  TableNode.fromMarkdown("| |\n| --- |\n| |") ??
15
16
  new TableNode();
16
- mount(EditorTable, {
17
+ const component = mount(EditorTable, {
17
18
  target: root,
18
19
  props: {
19
20
  node,
21
+ extensions,
20
22
  onChange: (nextMarkdown) => onChange(nextMarkdown.trimEnd()),
21
23
  onDelete: () => onDelete?.(),
22
24
  },
23
25
  });
26
+ registerTableWidgetMount(root, component);
24
27
  return root;
25
28
  }
@@ -1,5 +1,5 @@
1
1
  import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
2
- declare const ContextMenuRadioGroup: import("svelte").Component<ContextMenuPrimitive.RadioGroupProps, {}, "value" | "ref">;
2
+ declare const ContextMenuRadioGroup: import("svelte").Component<ContextMenuPrimitive.RadioGroupProps, {}, "ref" | "value">;
3
3
  type ContextMenuRadioGroup = ReturnType<typeof ContextMenuRadioGroup>;
4
4
  export default ContextMenuRadioGroup;
5
5
  //# sourceMappingURL=context-menu-radio-group.svelte.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
- declare const DropdownMenuRadioGroup: import("svelte").Component<DropdownMenuPrimitive.RadioGroupProps, {}, "value" | "ref">;
2
+ declare const DropdownMenuRadioGroup: import("svelte").Component<DropdownMenuPrimitive.RadioGroupProps, {}, "ref" | "value">;
3
3
  type DropdownMenuRadioGroup = ReturnType<typeof DropdownMenuRadioGroup>;
4
4
  export default DropdownMenuRadioGroup;
5
5
  //# sourceMappingURL=dropdown-menu-radio-group.svelte.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { Toolbar as ToolbarPrimitive } from "bits-ui";
2
- declare const ToolbarGroup: import("svelte").Component<ToolbarPrimitive.GroupProps, {}, "value" | "ref">;
2
+ declare const ToolbarGroup: import("svelte").Component<ToolbarPrimitive.GroupProps, {}, "ref" | "value">;
3
3
  type ToolbarGroup = ReturnType<typeof ToolbarGroup>;
4
4
  export default ToolbarGroup;
5
5
  //# sourceMappingURL=toolbar-group.svelte.d.ts.map
@@ -0,0 +1,31 @@
1
+ # Inline-link icon attribution
2
+
3
+ The bundled monochrome site paths originate from Simple Icons 16.0.0
4
+ (revision `28241d80f8422eaed317ef968ad1e40b6d0d9163`), except Slack from
5
+ Simple Icons 15.0.0. They were adapted from jj-store's locally bundled site
6
+ registry; no runtime source checkout is required.
7
+
8
+ Source: <https://github.com/simple-icons/simple-icons>.
9
+ License: CC0 1.0 Universal, <https://creativecommons.org/publicdomain/zero/1.0/>.
10
+ Brands: GitHub, GitLab, Forgejo, Codeberg, Bitbucket, Facebook, X, Google,
11
+ Slack, Linear, Notion, Figma, YouTube, Discord, Reddit and Stack Overflow.
12
+ Brand trademarks remain the property of their respective owners.
13
+
14
+ The generic link path is adapted from Lucide 0.525.0 (`link`, ISC):
15
+ <https://github.com/lucide-icons/lucide/tree/0.525.0>.
16
+
17
+ Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part
18
+ of Feather (MIT). All other copyright (c) for Lucide are held by Lucide
19
+ Contributors 2022.
20
+
21
+ Permission to use, copy, modify, and/or distribute this software for any purpose
22
+ with or without fee is hereby granted, provided that the above copyright notice
23
+ and this permission notice appear in all copies.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
26
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
27
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
28
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
29
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
30
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
31
+ PERFORMANCE OF THIS SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lapismd/mira",
3
- "version": "0.0.4",
3
+ "version": "0.1.0",
4
4
  "description": "Composable Markdown editor, extension SDK, preview renderer, and UI for Mira.",
5
5
  "author": "Steve Juma <help@lapis.md>",
6
6
  "license": "Apache-2.0",
@@ -17,7 +17,11 @@
17
17
  "types": "./dist/index.d.ts",
18
18
  "files": [
19
19
  "CHANGELOG.md",
20
- "dist"
20
+ "inline-links-NOTICE.md",
21
+ "dist",
22
+ "!dist/**/*.test.*",
23
+ "!dist/**/*.spec.*",
24
+ "!dist/**/__tests__/**"
21
25
  ],
22
26
  "exports": {
23
27
  ".": {
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=code-mirror.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-mirror.test.d.ts","sourceRoot":"","sources":["../../src/core/code-mirror.test.ts"],"names":[],"mappings":""}
@@ -1,68 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { describe, expect, it } from "vitest";
3
- import { EditorView } from "@codemirror/view";
4
- import { defineMiraExtension } from "../extensions";
5
- import { createBaseCodeMirrorExtensions } from "../internal/codemirror/base";
6
- import { createMiraCodeMirrorExtensions } from "./code-mirror";
7
- const runtimeContext = (view) => ({
8
- view,
9
- mode: "source",
10
- getValue: () => view.state.doc.toString(),
11
- setValue: (value) => {
12
- view.dispatch({
13
- changes: { from: 0, to: view.state.doc.length, insert: value },
14
- });
15
- },
16
- focus: () => view.focus(),
17
- insertMarkdown: () => undefined,
18
- });
19
- describe("createMiraCodeMirrorExtensions", () => {
20
- it("includes the base CodeMirror layer by default", () => {
21
- const parent = document.createElement("div");
22
- const view = new EditorView({
23
- extensions: createMiraCodeMirrorExtensions({
24
- mode: "source",
25
- runtimeContext,
26
- }),
27
- parent,
28
- });
29
- expect(view.dom.classList.contains("mira-codemirror")).toBe(true);
30
- expect(view.contentDOM.getAttribute("aria-label")).toBe("Markdown editor");
31
- view.destroy();
32
- });
33
- it("omits only the base layer while retaining portable contributions", () => {
34
- const contribution = defineMiraExtension({
35
- name: "consumer-authoring",
36
- codeMirror: () => EditorView.editorAttributes.of({ class: "consumer-authoring" }),
37
- slashCommands: [
38
- {
39
- id: "consumer-command",
40
- label: "Consumer command",
41
- insert: "Consumer command",
42
- },
43
- ],
44
- });
45
- const shared = {
46
- mode: "source",
47
- extensions: [contribution],
48
- blockControls: true,
49
- runtimeContext,
50
- };
51
- const withBase = createMiraCodeMirrorExtensions(shared);
52
- const withoutBase = createMiraCodeMirrorExtensions({
53
- ...shared,
54
- includeBaseExtensions: false,
55
- });
56
- expect(withBase).toHaveLength(withoutBase.length + createBaseCodeMirrorExtensions().length);
57
- const parent = document.createElement("div");
58
- const view = new EditorView({
59
- doc: "/",
60
- extensions: withoutBase,
61
- parent,
62
- });
63
- expect(view.dom.classList.contains("mira-codemirror")).toBe(false);
64
- expect(view.dom.classList.contains("consumer-authoring")).toBe(true);
65
- expect(parent.querySelector(".mira-block-controls-gutter")).not.toBeNull();
66
- view.destroy();
67
- });
68
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=images.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"images.test.d.ts","sourceRoot":"","sources":["../../src/core/images.test.ts"],"names":[],"mappings":""}