notra-editor 0.8.0 → 0.8.2

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 (231) hide show
  1. package/dist/components/blockquote-button/blockquote-button.cjs +5 -3
  2. package/dist/components/blockquote-button/blockquote-button.cjs.map +1 -1
  3. package/dist/components/blockquote-button/blockquote-button.mjs +5 -3
  4. package/dist/components/blockquote-button/blockquote-button.mjs.map +1 -1
  5. package/dist/components/code-block-button/code-block-button.cjs +5 -3
  6. package/dist/components/code-block-button/code-block-button.cjs.map +1 -1
  7. package/dist/components/code-block-button/code-block-button.mjs +5 -3
  8. package/dist/components/code-block-button/code-block-button.mjs.map +1 -1
  9. package/dist/components/code-block-view/code-block-shell.cjs +4 -2
  10. package/dist/components/code-block-view/code-block-shell.cjs.map +1 -1
  11. package/dist/components/code-block-view/code-block-shell.mjs +3 -2
  12. package/dist/components/code-block-view/code-block-shell.mjs.map +1 -1
  13. package/dist/components/code-block-view/code-block-view.cjs +6 -4
  14. package/dist/components/code-block-view/code-block-view.cjs.map +1 -1
  15. package/dist/components/code-block-view/code-block-view.mjs +6 -4
  16. package/dist/components/code-block-view/code-block-view.mjs.map +1 -1
  17. package/dist/components/code-block-view/language-select.cjs +9 -7
  18. package/dist/components/code-block-view/language-select.cjs.map +1 -1
  19. package/dist/components/code-block-view/language-select.mjs +9 -7
  20. package/dist/components/code-block-view/language-select.mjs.map +1 -1
  21. package/dist/components/copy-button.cjs +6 -4
  22. package/dist/components/copy-button.cjs.map +1 -1
  23. package/dist/components/copy-button.mjs +6 -4
  24. package/dist/components/copy-button.mjs.map +1 -1
  25. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.cjs +8 -6
  26. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.cjs.map +1 -1
  27. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.mjs +8 -6
  28. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.mjs.map +1 -1
  29. package/dist/components/heading-dropdown-menu/heading-menu-item.cjs +6 -4
  30. package/dist/components/heading-dropdown-menu/heading-menu-item.cjs.map +1 -1
  31. package/dist/components/heading-dropdown-menu/heading-menu-item.mjs +5 -4
  32. package/dist/components/heading-dropdown-menu/heading-menu-item.mjs.map +1 -1
  33. package/dist/components/heading-dropdown-menu/use-heading.cjs +4 -2
  34. package/dist/components/heading-dropdown-menu/use-heading.cjs.map +1 -1
  35. package/dist/components/heading-dropdown-menu/use-heading.mjs +3 -2
  36. package/dist/components/heading-dropdown-menu/use-heading.mjs.map +1 -1
  37. package/dist/components/image-popover/image-input-form.cjs +127 -0
  38. package/dist/components/image-popover/image-input-form.cjs.map +1 -0
  39. package/dist/components/image-popover/image-input-form.d.cts +16 -0
  40. package/dist/components/image-popover/image-input-form.d.ts +16 -0
  41. package/dist/components/image-popover/image-input-form.mjs +103 -0
  42. package/dist/components/image-popover/image-input-form.mjs.map +1 -0
  43. package/dist/components/image-popover/image-popover.cjs +35 -92
  44. package/dist/components/image-popover/image-popover.cjs.map +1 -1
  45. package/dist/components/image-popover/image-popover.mjs +36 -93
  46. package/dist/components/image-popover/image-popover.mjs.map +1 -1
  47. package/dist/components/image-popover/use-image-popover.cjs +2 -0
  48. package/dist/components/image-popover/use-image-popover.cjs.map +1 -1
  49. package/dist/components/image-popover/use-image-popover.mjs +1 -0
  50. package/dist/components/image-popover/use-image-popover.mjs.map +1 -1
  51. package/dist/components/link-popover/link-popover.cjs +10 -8
  52. package/dist/components/link-popover/link-popover.cjs.map +1 -1
  53. package/dist/components/link-popover/link-popover.mjs +10 -8
  54. package/dist/components/link-popover/link-popover.mjs.map +1 -1
  55. package/dist/components/link-popover/use-link-popover.cjs +2 -0
  56. package/dist/components/link-popover/use-link-popover.cjs.map +1 -1
  57. package/dist/components/link-popover/use-link-popover.mjs +1 -0
  58. package/dist/components/link-popover/use-link-popover.mjs.map +1 -1
  59. package/dist/components/list-dropdown-menu/list-dropdown-menu.cjs +8 -6
  60. package/dist/components/list-dropdown-menu/list-dropdown-menu.cjs.map +1 -1
  61. package/dist/components/list-dropdown-menu/list-dropdown-menu.mjs +8 -6
  62. package/dist/components/list-dropdown-menu/list-dropdown-menu.mjs.map +1 -1
  63. package/dist/components/list-dropdown-menu/list-menu-item.cjs +6 -4
  64. package/dist/components/list-dropdown-menu/list-menu-item.cjs.map +1 -1
  65. package/dist/components/list-dropdown-menu/list-menu-item.mjs +5 -4
  66. package/dist/components/list-dropdown-menu/list-menu-item.mjs.map +1 -1
  67. package/dist/components/list-dropdown-menu/use-list.cjs +5 -3
  68. package/dist/components/list-dropdown-menu/use-list.cjs.map +1 -1
  69. package/dist/components/list-dropdown-menu/use-list.mjs +4 -3
  70. package/dist/components/list-dropdown-menu/use-list.mjs.map +1 -1
  71. package/dist/components/mark-button/mark-button.cjs +6 -4
  72. package/dist/components/mark-button/mark-button.cjs.map +1 -1
  73. package/dist/components/mark-button/mark-button.mjs +6 -4
  74. package/dist/components/mark-button/mark-button.mjs.map +1 -1
  75. package/dist/components/mark-button/use-mark.cjs +4 -2
  76. package/dist/components/mark-button/use-mark.cjs.map +1 -1
  77. package/dist/components/mark-button/use-mark.mjs +3 -2
  78. package/dist/components/mark-button/use-mark.mjs.map +1 -1
  79. package/dist/components/slash-dropdown-menu/slash-dropdown-menu.cjs +151 -0
  80. package/dist/components/slash-dropdown-menu/slash-dropdown-menu.cjs.map +1 -0
  81. package/dist/components/slash-dropdown-menu/slash-dropdown-menu.d.cts +9 -0
  82. package/dist/components/slash-dropdown-menu/slash-dropdown-menu.d.ts +9 -0
  83. package/dist/components/slash-dropdown-menu/slash-dropdown-menu.mjs +127 -0
  84. package/dist/components/slash-dropdown-menu/slash-dropdown-menu.mjs.map +1 -0
  85. package/dist/components/slash-dropdown-menu/slash-image-popover.cjs +80 -0
  86. package/dist/components/slash-dropdown-menu/slash-image-popover.cjs.map +1 -0
  87. package/dist/components/slash-dropdown-menu/slash-image-popover.d.cts +11 -0
  88. package/dist/components/slash-dropdown-menu/slash-image-popover.d.ts +11 -0
  89. package/dist/components/slash-dropdown-menu/slash-image-popover.mjs +56 -0
  90. package/dist/components/slash-dropdown-menu/slash-image-popover.mjs.map +1 -0
  91. package/dist/components/slash-dropdown-menu/use-slash-items.cjs +138 -0
  92. package/dist/components/slash-dropdown-menu/use-slash-items.cjs.map +1 -0
  93. package/dist/components/slash-dropdown-menu/use-slash-items.d.cts +11 -0
  94. package/dist/components/slash-dropdown-menu/use-slash-items.d.ts +11 -0
  95. package/dist/components/slash-dropdown-menu/use-slash-items.mjs +125 -0
  96. package/dist/components/slash-dropdown-menu/use-slash-items.mjs.map +1 -0
  97. package/dist/components/suggestion-menu/filter-suggestion-items.cjs +57 -0
  98. package/dist/components/suggestion-menu/filter-suggestion-items.cjs.map +1 -0
  99. package/dist/components/suggestion-menu/filter-suggestion-items.d.cts +6 -0
  100. package/dist/components/suggestion-menu/filter-suggestion-items.d.ts +6 -0
  101. package/dist/components/suggestion-menu/filter-suggestion-items.mjs +32 -0
  102. package/dist/components/suggestion-menu/filter-suggestion-items.mjs.map +1 -0
  103. package/dist/components/suggestion-menu/suggestion-menu-types.cjs +19 -0
  104. package/dist/components/suggestion-menu/suggestion-menu-types.cjs.map +1 -0
  105. package/dist/components/suggestion-menu/suggestion-menu-types.d.cts +22 -0
  106. package/dist/components/suggestion-menu/suggestion-menu-types.d.ts +22 -0
  107. package/dist/components/suggestion-menu/suggestion-menu-types.mjs +1 -0
  108. package/dist/components/suggestion-menu/suggestion-menu-types.mjs.map +1 -0
  109. package/dist/components/suggestion-menu/suggestion-menu.cjs +205 -0
  110. package/dist/components/suggestion-menu/suggestion-menu.cjs.map +1 -0
  111. package/dist/components/suggestion-menu/suggestion-menu.d.cts +27 -0
  112. package/dist/components/suggestion-menu/suggestion-menu.d.ts +27 -0
  113. package/dist/components/suggestion-menu/suggestion-menu.mjs +181 -0
  114. package/dist/components/suggestion-menu/suggestion-menu.mjs.map +1 -0
  115. package/dist/components/toolbar/toolbar.cjs +4 -2
  116. package/dist/components/toolbar/toolbar.cjs.map +1 -1
  117. package/dist/components/toolbar/toolbar.mjs +3 -2
  118. package/dist/components/toolbar/toolbar.mjs.map +1 -1
  119. package/dist/components/ui/button.cjs +5 -3
  120. package/dist/components/ui/button.cjs.map +1 -1
  121. package/dist/components/ui/button.mjs +4 -3
  122. package/dist/components/ui/button.mjs.map +1 -1
  123. package/dist/components/ui/command.cjs +6 -5
  124. package/dist/components/ui/command.cjs.map +1 -1
  125. package/dist/components/ui/command.mjs +5 -5
  126. package/dist/components/ui/command.mjs.map +1 -1
  127. package/dist/components/ui/dialog.cjs +5 -4
  128. package/dist/components/ui/dialog.cjs.map +1 -1
  129. package/dist/components/ui/dialog.mjs +4 -4
  130. package/dist/components/ui/dialog.mjs.map +1 -1
  131. package/dist/components/ui/dropdown-menu.cjs +4 -3
  132. package/dist/components/ui/dropdown-menu.cjs.map +1 -1
  133. package/dist/components/ui/dropdown-menu.mjs +3 -3
  134. package/dist/components/ui/dropdown-menu.mjs.map +1 -1
  135. package/dist/components/ui/input-group.cjs +9 -7
  136. package/dist/components/ui/input-group.cjs.map +1 -1
  137. package/dist/components/ui/input-group.d.cts +1 -1
  138. package/dist/components/ui/input-group.d.ts +1 -1
  139. package/dist/components/ui/input-group.mjs +9 -7
  140. package/dist/components/ui/input-group.mjs.map +1 -1
  141. package/dist/components/ui/input.cjs +3 -1
  142. package/dist/components/ui/input.cjs.map +1 -1
  143. package/dist/components/ui/input.mjs +2 -1
  144. package/dist/components/ui/input.mjs.map +1 -1
  145. package/dist/components/ui/popover.cjs +4 -3
  146. package/dist/components/ui/popover.cjs.map +1 -1
  147. package/dist/components/ui/popover.mjs +3 -3
  148. package/dist/components/ui/popover.mjs.map +1 -1
  149. package/dist/components/ui/separator.cjs +4 -3
  150. package/dist/components/ui/separator.cjs.map +1 -1
  151. package/dist/components/ui/separator.mjs +3 -3
  152. package/dist/components/ui/separator.mjs.map +1 -1
  153. package/dist/components/ui/spacer.cjs +2 -0
  154. package/dist/components/ui/spacer.cjs.map +1 -1
  155. package/dist/components/ui/spacer.mjs +1 -0
  156. package/dist/components/ui/spacer.mjs.map +1 -1
  157. package/dist/components/ui/textarea.cjs +3 -1
  158. package/dist/components/ui/textarea.cjs.map +1 -1
  159. package/dist/components/ui/textarea.mjs +2 -1
  160. package/dist/components/ui/textarea.mjs.map +1 -1
  161. package/dist/components/undo-redo-button/undo-redo-button.cjs +6 -4
  162. package/dist/components/undo-redo-button/undo-redo-button.cjs.map +1 -1
  163. package/dist/components/undo-redo-button/undo-redo-button.mjs +6 -4
  164. package/dist/components/undo-redo-button/undo-redo-button.mjs.map +1 -1
  165. package/dist/components/undo-redo-button/use-undo-redo.cjs +4 -2
  166. package/dist/components/undo-redo-button/use-undo-redo.cjs.map +1 -1
  167. package/dist/components/undo-redo-button/use-undo-redo.mjs +3 -2
  168. package/dist/components/undo-redo-button/use-undo-redo.mjs.map +1 -1
  169. package/dist/extensions/code-block.cjs +8 -6
  170. package/dist/extensions/code-block.cjs.map +1 -1
  171. package/dist/extensions/code-block.mjs +7 -6
  172. package/dist/extensions/code-block.mjs.map +1 -1
  173. package/dist/extensions/editor.cjs +5 -3
  174. package/dist/extensions/editor.cjs.map +1 -1
  175. package/dist/extensions/editor.mjs +4 -3
  176. package/dist/extensions/editor.mjs.map +1 -1
  177. package/dist/extensions/index.cjs +4 -2
  178. package/dist/extensions/index.cjs.map +1 -1
  179. package/dist/extensions/index.mjs +3 -2
  180. package/dist/extensions/index.mjs.map +1 -1
  181. package/dist/extensions/shared.cjs +5 -3
  182. package/dist/extensions/shared.cjs.map +1 -1
  183. package/dist/extensions/shared.mjs +4 -3
  184. package/dist/extensions/shared.mjs.map +1 -1
  185. package/dist/hooks/use-copy-to-clipboard.cjs +3 -2
  186. package/dist/hooks/use-copy-to-clipboard.cjs.map +1 -1
  187. package/dist/hooks/use-copy-to-clipboard.mjs +2 -2
  188. package/dist/hooks/use-copy-to-clipboard.mjs.map +1 -1
  189. package/dist/hooks/use-floating-element.cjs +55 -0
  190. package/dist/hooks/use-floating-element.cjs.map +1 -0
  191. package/dist/hooks/use-floating-element.d.cts +21 -0
  192. package/dist/hooks/use-floating-element.d.ts +21 -0
  193. package/dist/hooks/use-floating-element.mjs +35 -0
  194. package/dist/hooks/use-floating-element.mjs.map +1 -0
  195. package/dist/hooks/use-markdown-editor.cjs +6 -1
  196. package/dist/hooks/use-markdown-editor.cjs.map +1 -1
  197. package/dist/hooks/use-markdown-editor.d.cts +1 -1
  198. package/dist/hooks/use-markdown-editor.d.ts +1 -1
  199. package/dist/hooks/use-markdown-editor.mjs +5 -1
  200. package/dist/hooks/use-markdown-editor.mjs.map +1 -1
  201. package/dist/index.cjs +18 -16
  202. package/dist/index.cjs.map +1 -1
  203. package/dist/index.mjs +17 -16
  204. package/dist/index.mjs.map +1 -1
  205. package/dist/lib/highlight-code-to-html.cjs +2 -0
  206. package/dist/lib/highlight-code-to-html.cjs.map +1 -1
  207. package/dist/lib/highlight-code-to-html.mjs +1 -0
  208. package/dist/lib/highlight-code-to-html.mjs.map +1 -1
  209. package/dist/lib/languages.cjs +4 -2
  210. package/dist/lib/languages.cjs.map +1 -1
  211. package/dist/lib/languages.mjs +3 -2
  212. package/dist/lib/languages.mjs.map +1 -1
  213. package/dist/lib/utils.cjs +2 -0
  214. package/dist/lib/utils.cjs.map +1 -1
  215. package/dist/lib/utils.mjs +1 -0
  216. package/dist/lib/utils.mjs.map +1 -1
  217. package/dist/notra-editor.cjs +17 -13
  218. package/dist/notra-editor.cjs.map +1 -1
  219. package/dist/notra-editor.mjs +17 -13
  220. package/dist/notra-editor.mjs.map +1 -1
  221. package/dist/notra-reader.cjs +9 -7
  222. package/dist/notra-reader.cjs.map +1 -1
  223. package/dist/notra-reader.mjs +8 -7
  224. package/dist/notra-reader.mjs.map +1 -1
  225. package/dist/styles/globals.css +6 -0
  226. package/dist/themes/default/editor.css +50 -0
  227. package/dist/utils/markdown-to-json.cjs +5 -3
  228. package/dist/utils/markdown-to-json.cjs.map +1 -1
  229. package/dist/utils/markdown-to-json.mjs +4 -3
  230. package/dist/utils/markdown-to-json.mjs.map +1 -1
  231. package/package.json +4 -1
package/dist/index.mjs CHANGED
@@ -1,28 +1,29 @@
1
+ // src/index.ts
1
2
  import "./styles/globals.css";
2
- import { NotraEditor } from "./notra-editor";
3
- import { NotraReader } from "./notra-reader";
3
+ import { NotraEditor } from "./notra-editor.mjs";
4
+ import { NotraReader } from "./notra-reader.mjs";
4
5
  import {
5
6
  Toolbar,
6
7
  ToolbarGroup,
7
8
  ToolbarSeparator
8
- } from "./components/toolbar/toolbar";
9
- import { UndoRedoButton } from "./components/undo-redo-button/undo-redo-button";
10
- import { Spacer } from "./components/ui/spacer";
11
- import { MarkButton } from "./components/mark-button/mark-button";
12
- import { HeadingDropdownMenu } from "./components/heading-dropdown-menu/heading-dropdown-menu";
13
- import { ListDropdownMenu } from "./components/list-dropdown-menu/list-dropdown-menu";
14
- import { BlockquoteButton } from "./components/blockquote-button/blockquote-button";
15
- import { CodeBlockButton } from "./components/code-block-button/code-block-button";
16
- import { LinkPopover } from "./components/link-popover/link-popover";
17
- import { ImagePopover } from "./components/image-popover/image-popover";
9
+ } from "./components/toolbar/toolbar.mjs";
10
+ import { UndoRedoButton } from "./components/undo-redo-button/undo-redo-button.mjs";
11
+ import { Spacer } from "./components/ui/spacer.mjs";
12
+ import { MarkButton } from "./components/mark-button/mark-button.mjs";
13
+ import { HeadingDropdownMenu } from "./components/heading-dropdown-menu/heading-dropdown-menu.mjs";
14
+ import { ListDropdownMenu } from "./components/list-dropdown-menu/list-dropdown-menu.mjs";
15
+ import { BlockquoteButton } from "./components/blockquote-button/blockquote-button.mjs";
16
+ import { CodeBlockButton } from "./components/code-block-button/code-block-button.mjs";
17
+ import { LinkPopover } from "./components/link-popover/link-popover.mjs";
18
+ import { ImagePopover } from "./components/image-popover/image-popover.mjs";
18
19
  import {
19
20
  CodeBlockExtension,
20
21
  createCodeBlockExtension,
21
22
  defaultLowlight
22
- } from "./extensions/code-block";
23
- import { LanguageSelect } from "./components/code-block-view/language-select";
24
- import { LANGUAGES, getLanguageLabel } from "./lib/languages";
25
- import { highlightCodeToHtml } from "./lib/highlight-code-to-html";
23
+ } from "./extensions/code-block.mjs";
24
+ import { LanguageSelect } from "./components/code-block-view/language-select.mjs";
25
+ import { LANGUAGES, getLanguageLabel } from "./lib/languages.mjs";
26
+ import { highlightCodeToHtml } from "./lib/highlight-code-to-html.mjs";
26
27
  export {
27
28
  BlockquoteButton,
28
29
  CodeBlockButton,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import './styles/globals.css';\n\nexport { NotraEditor } from './notra-editor';\nexport type { NotraEditorProps } from './notra-editor';\n\nexport { NotraReader } from './notra-reader';\nexport type { NotraReaderProps } from './notra-reader';\n\nexport {\n\tToolbar,\n\tToolbarGroup,\n\tToolbarSeparator\n} from './components/toolbar/toolbar';\nexport type {\n\tToolbarProps,\n\tToolbarSeparatorProps\n} from './components/toolbar/toolbar';\n\nexport { UndoRedoButton } from './components/undo-redo-button/undo-redo-button';\nexport type { UndoRedoButtonProps } from './components/undo-redo-button/undo-redo-button';\n\nexport { Spacer } from './components/ui/spacer';\n\nexport { MarkButton } from './components/mark-button/mark-button';\nexport type { MarkButtonProps } from './components/mark-button/mark-button';\nexport type { MarkType } from './components/mark-button/use-mark';\n\nexport { HeadingDropdownMenu } from './components/heading-dropdown-menu/heading-dropdown-menu';\nexport type { HeadingDropdownMenuProps } from './components/heading-dropdown-menu/heading-dropdown-menu';\n\nexport { ListDropdownMenu } from './components/list-dropdown-menu/list-dropdown-menu';\nexport type { ListDropdownMenuProps } from './components/list-dropdown-menu/list-dropdown-menu';\n\nexport { BlockquoteButton } from './components/blockquote-button/blockquote-button';\nexport type { BlockquoteButtonProps } from './components/blockquote-button/blockquote-button';\n\nexport { CodeBlockButton } from './components/code-block-button/code-block-button';\nexport type { CodeBlockButtonProps } from './components/code-block-button/code-block-button';\n\nexport { LinkPopover } from './components/link-popover/link-popover';\nexport type { LinkPopoverProps } from './components/link-popover/link-popover';\n\nexport { ImagePopover } from './components/image-popover/image-popover';\nexport type { ImagePopoverProps } from './components/image-popover/image-popover';\n\nexport {\n\tCodeBlockExtension,\n\tcreateCodeBlockExtension,\n\tdefaultLowlight\n} from './extensions/code-block';\n\nexport { LanguageSelect } from './components/code-block-view/language-select';\nexport type { LanguageSelectProps } from './components/code-block-view/language-select';\n\nexport { LANGUAGES, getLanguageLabel } from './lib/languages';\nexport type { Language } from './lib/languages';\n\nexport { highlightCodeToHtml } from './lib/highlight-code-to-html';\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,mBAAmB;AAG5B,SAAS,mBAAmB;AAG5B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAMP,SAAS,sBAAsB;AAG/B,SAAS,cAAc;AAEvB,SAAS,kBAAkB;AAI3B,SAAS,2BAA2B;AAGpC,SAAS,wBAAwB;AAGjC,SAAS,wBAAwB;AAGjC,SAAS,uBAAuB;AAGhC,SAAS,mBAAmB;AAG5B,SAAS,oBAAoB;AAG7B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,SAAS,sBAAsB;AAG/B,SAAS,WAAW,wBAAwB;AAG5C,SAAS,2BAA2B;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import './styles/globals.css';\n\nexport { NotraEditor } from './notra-editor.js';\nexport type { NotraEditorProps } from './notra-editor.js';\n\nexport { NotraReader } from './notra-reader.js';\nexport type { NotraReaderProps } from './notra-reader.js';\n\nexport {\n\tToolbar,\n\tToolbarGroup,\n\tToolbarSeparator\n} from './components/toolbar/toolbar.js';\nexport type {\n\tToolbarProps,\n\tToolbarSeparatorProps\n} from './components/toolbar/toolbar.js';\n\nexport { UndoRedoButton } from './components/undo-redo-button/undo-redo-button.js';\nexport type { UndoRedoButtonProps } from './components/undo-redo-button/undo-redo-button.js';\n\nexport { Spacer } from './components/ui/spacer.js';\n\nexport { MarkButton } from './components/mark-button/mark-button.js';\nexport type { MarkButtonProps } from './components/mark-button/mark-button.js';\nexport type { MarkType } from './components/mark-button/use-mark.js';\n\nexport { HeadingDropdownMenu } from './components/heading-dropdown-menu/heading-dropdown-menu.js';\nexport type { HeadingDropdownMenuProps } from './components/heading-dropdown-menu/heading-dropdown-menu.js';\n\nexport { ListDropdownMenu } from './components/list-dropdown-menu/list-dropdown-menu.js';\nexport type { ListDropdownMenuProps } from './components/list-dropdown-menu/list-dropdown-menu.js';\n\nexport { BlockquoteButton } from './components/blockquote-button/blockquote-button.js';\nexport type { BlockquoteButtonProps } from './components/blockquote-button/blockquote-button.js';\n\nexport { CodeBlockButton } from './components/code-block-button/code-block-button.js';\nexport type { CodeBlockButtonProps } from './components/code-block-button/code-block-button.js';\n\nexport { LinkPopover } from './components/link-popover/link-popover.js';\nexport type { LinkPopoverProps } from './components/link-popover/link-popover.js';\n\nexport { ImagePopover } from './components/image-popover/image-popover.js';\nexport type { ImagePopoverProps } from './components/image-popover/image-popover.js';\n\nexport {\n\tCodeBlockExtension,\n\tcreateCodeBlockExtension,\n\tdefaultLowlight\n} from './extensions/code-block.js';\n\nexport { LanguageSelect } from './components/code-block-view/language-select.js';\nexport type { LanguageSelectProps } from './components/code-block-view/language-select.js';\n\nexport { LANGUAGES, getLanguageLabel } from './lib/languages.js';\nexport type { Language } from './lib/languages.js';\n\nexport { highlightCodeToHtml } from './lib/highlight-code-to-html.js';\n"],"mappings":";AAAA,OAAO;AAEP,SAAS,mBAAmB;AAG5B,SAAS,mBAAmB;AAG5B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAMP,SAAS,sBAAsB;AAG/B,SAAS,cAAc;AAEvB,SAAS,kBAAkB;AAI3B,SAAS,2BAA2B;AAGpC,SAAS,wBAAwB;AAGjC,SAAS,wBAAwB;AAGjC,SAAS,uBAAuB;AAGhC,SAAS,mBAAmB;AAG5B,SAAS,oBAAoB;AAG7B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,SAAS,sBAAsB;AAG/B,SAAS,WAAW,wBAAwB;AAG5C,SAAS,2BAA2B;","names":[]}
@@ -16,6 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/highlight-code-to-html.ts
19
21
  var highlight_code_to_html_exports = {};
20
22
  __export(highlight_code_to_html_exports, {
21
23
  highlightCodeToHtml: () => highlightCodeToHtml
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/highlight-code-to-html.ts"],"sourcesContent":["import { toHtml } from 'hast-util-to-html';\n\nimport type { createLowlight } from 'lowlight';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\n// Server-safe: lowlight + hast-util-to-html are pure JS and run in Node.\n// Used by NotraReader's nodeMapping.codeBlock; the editor uses the\n// extension's built-in ProseMirror decorations instead.\nexport function highlightCodeToHtml(\n\tcode: string,\n\tlanguage: string | null | undefined,\n\tlowlight: Lowlight\n): string {\n\tif (!code) return '';\n\n\tconst lang = language ?? 'auto';\n\n\t// \"plaintext\" deliberately skips highlighting — emit only escaped text.\n\tif (lang === 'plaintext') {\n\t\treturn toHtml({ type: 'text', value: code });\n\t}\n\n\tconst tree =\n\t\tlang === 'auto' || !lowlight.registered(lang)\n\t\t\t? lowlight.highlightAuto(code)\n\t\t\t: lowlight.highlight(lang, code);\n\n\treturn toHtml(tree);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAuB;AAShB,SAAS,oBACf,MACA,UACA,UACS;AACT,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,OAAO,YAAY;AAGzB,MAAI,SAAS,aAAa;AACzB,eAAO,iCAAO,EAAE,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC5C;AAEA,QAAM,OACL,SAAS,UAAU,CAAC,SAAS,WAAW,IAAI,IACzC,SAAS,cAAc,IAAI,IAC3B,SAAS,UAAU,MAAM,IAAI;AAEjC,aAAO,iCAAO,IAAI;AACnB;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/highlight-code-to-html.ts"],"sourcesContent":["import { toHtml } from 'hast-util-to-html';\n\nimport type { createLowlight } from 'lowlight';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\n// Server-safe: lowlight + hast-util-to-html are pure JS and run in Node.\n// Used by NotraReader's nodeMapping.codeBlock; the editor uses the\n// extension's built-in ProseMirror decorations instead.\nexport function highlightCodeToHtml(\n\tcode: string,\n\tlanguage: string | null | undefined,\n\tlowlight: Lowlight\n): string {\n\tif (!code) return '';\n\n\tconst lang = language ?? 'auto';\n\n\t// \"plaintext\" deliberately skips highlighting — emit only escaped text.\n\tif (lang === 'plaintext') {\n\t\treturn toHtml({ type: 'text', value: code });\n\t}\n\n\tconst tree =\n\t\tlang === 'auto' || !lowlight.registered(lang)\n\t\t\t? lowlight.highlightAuto(code)\n\t\t\t: lowlight.highlight(lang, code);\n\n\treturn toHtml(tree);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAuB;AAShB,SAAS,oBACf,MACA,UACA,UACS;AACT,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,OAAO,YAAY;AAGzB,MAAI,SAAS,aAAa;AACzB,eAAO,iCAAO,EAAE,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC5C;AAEA,QAAM,OACL,SAAS,UAAU,CAAC,SAAS,WAAW,IAAI,IACzC,SAAS,cAAc,IAAI,IAC3B,SAAS,UAAU,MAAM,IAAI;AAEjC,aAAO,iCAAO,IAAI;AACnB;","names":[]}
@@ -1,3 +1,4 @@
1
+ // src/lib/highlight-code-to-html.ts
1
2
  import { toHtml } from "hast-util-to-html";
2
3
  function highlightCodeToHtml(code, language, lowlight) {
3
4
  if (!code) return "";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/highlight-code-to-html.ts"],"sourcesContent":["import { toHtml } from 'hast-util-to-html';\n\nimport type { createLowlight } from 'lowlight';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\n// Server-safe: lowlight + hast-util-to-html are pure JS and run in Node.\n// Used by NotraReader's nodeMapping.codeBlock; the editor uses the\n// extension's built-in ProseMirror decorations instead.\nexport function highlightCodeToHtml(\n\tcode: string,\n\tlanguage: string | null | undefined,\n\tlowlight: Lowlight\n): string {\n\tif (!code) return '';\n\n\tconst lang = language ?? 'auto';\n\n\t// \"plaintext\" deliberately skips highlighting — emit only escaped text.\n\tif (lang === 'plaintext') {\n\t\treturn toHtml({ type: 'text', value: code });\n\t}\n\n\tconst tree =\n\t\tlang === 'auto' || !lowlight.registered(lang)\n\t\t\t? lowlight.highlightAuto(code)\n\t\t\t: lowlight.highlight(lang, code);\n\n\treturn toHtml(tree);\n}\n"],"mappings":"AAAA,SAAS,cAAc;AAShB,SAAS,oBACf,MACA,UACA,UACS;AACT,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,OAAO,YAAY;AAGzB,MAAI,SAAS,aAAa;AACzB,WAAO,OAAO,EAAE,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC5C;AAEA,QAAM,OACL,SAAS,UAAU,CAAC,SAAS,WAAW,IAAI,IACzC,SAAS,cAAc,IAAI,IAC3B,SAAS,UAAU,MAAM,IAAI;AAEjC,SAAO,OAAO,IAAI;AACnB;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/highlight-code-to-html.ts"],"sourcesContent":["import { toHtml } from 'hast-util-to-html';\n\nimport type { createLowlight } from 'lowlight';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\n// Server-safe: lowlight + hast-util-to-html are pure JS and run in Node.\n// Used by NotraReader's nodeMapping.codeBlock; the editor uses the\n// extension's built-in ProseMirror decorations instead.\nexport function highlightCodeToHtml(\n\tcode: string,\n\tlanguage: string | null | undefined,\n\tlowlight: Lowlight\n): string {\n\tif (!code) return '';\n\n\tconst lang = language ?? 'auto';\n\n\t// \"plaintext\" deliberately skips highlighting — emit only escaped text.\n\tif (lang === 'plaintext') {\n\t\treturn toHtml({ type: 'text', value: code });\n\t}\n\n\tconst tree =\n\t\tlang === 'auto' || !lowlight.registered(lang)\n\t\t\t? lowlight.highlightAuto(code)\n\t\t\t: lowlight.highlight(lang, code);\n\n\treturn toHtml(tree);\n}\n"],"mappings":";AAAA,SAAS,cAAc;AAShB,SAAS,oBACf,MACA,UACA,UACS;AACT,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,OAAO,YAAY;AAGzB,MAAI,SAAS,aAAa;AACzB,WAAO,OAAO,EAAE,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC5C;AAEA,QAAM,OACL,SAAS,UAAU,CAAC,SAAS,WAAW,IAAI,IACzC,SAAS,cAAc,IAAI,IAC3B,SAAS,UAAU,MAAM,IAAI;AAEjC,SAAO,OAAO,IAAI;AACnB;","names":[]}
@@ -16,6 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/languages.ts
19
21
  var languages_exports = {};
20
22
  __export(languages_exports, {
21
23
  LANGUAGES: () => LANGUAGES,
@@ -23,7 +25,7 @@ __export(languages_exports, {
23
25
  normalizeLanguage: () => normalizeLanguage
24
26
  });
25
27
  module.exports = __toCommonJS(languages_exports);
26
- const LANGUAGES = [
28
+ var LANGUAGES = [
27
29
  { label: "Auto", value: "auto" },
28
30
  { label: "Plain Text", value: "plaintext" },
29
31
  { label: "ABAP", value: "abap" },
@@ -154,7 +156,7 @@ const LANGUAGES = [
154
156
  },
155
157
  { label: "YAML", value: "yaml", aliases: ["yml"] }
156
158
  ];
157
- const ALIAS_TO_CANONICAL = (() => {
159
+ var ALIAS_TO_CANONICAL = (() => {
158
160
  const map = /* @__PURE__ */ new Map();
159
161
  for (const lang of LANGUAGES) {
160
162
  for (const alias of lang.aliases ?? []) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/languages.ts"],"sourcesContent":["export interface Language {\n\tlabel: string;\n\tvalue: string;\n\t/**\n\t * Aliases recognized by highlight.js for this language. Used by\n\t * `normalizeLanguage` so the markdown input rule (e.g. ```js + Enter)\n\t * stores the canonical `value` instead of the raw alias. Only canonical\n\t * values are listed in this table; an alias that already exists as a\n\t * canonical `value` (e.g. `html` for `xml`) is intentionally excluded\n\t * to preserve the existing UI label.\n\t */\n\taliases?: string[];\n}\n\n// Curated set transcribed from demo/notra/components/editor/ui/language-select.tsx.\n// Keep the order: auto and plaintext first, then alphabetical by label.\n// `aliases` mirror the `aliases` field of the corresponding highlight.js\n// language module (highlight.js@11). Entries missing from highlight.js's\n// shipped languages have no aliases.\nexport const LANGUAGES: Language[] = [\n\t{ label: 'Auto', value: 'auto' },\n\t{ label: 'Plain Text', value: 'plaintext' },\n\t{ label: 'ABAP', value: 'abap' },\n\t{ label: 'Agda', value: 'agda' },\n\t{ label: 'Arduino', value: 'arduino', aliases: ['ino'] },\n\t{ label: 'ASCII Art', value: 'ascii' },\n\t{ label: 'Assembly', value: 'x86asm' },\n\t{ label: 'Bash', value: 'bash', aliases: ['sh', 'zsh'] },\n\t{ label: 'BASIC', value: 'basic' },\n\t{ label: 'BNF', value: 'bnf' },\n\t{ label: 'C', value: 'c', aliases: ['h'] },\n\t{ label: 'C#', value: 'csharp', aliases: ['cs', 'c#'] },\n\t{\n\t\tlabel: 'C++',\n\t\tvalue: 'cpp',\n\t\taliases: ['cc', 'c++', 'h++', 'hpp', 'hh', 'hxx', 'cxx']\n\t},\n\t{ label: 'Clojure', value: 'clojure', aliases: ['clj', 'edn'] },\n\t{\n\t\tlabel: 'CoffeeScript',\n\t\tvalue: 'coffeescript',\n\t\taliases: ['coffee', 'cson', 'iced']\n\t},\n\t{ label: 'Coq', value: 'coq' },\n\t{ label: 'CSS', value: 'css' },\n\t{ label: 'Dart', value: 'dart' },\n\t{ label: 'Dhall', value: 'dhall' },\n\t{ label: 'Diff', value: 'diff', aliases: ['patch'] },\n\t{ label: 'Docker', value: 'dockerfile', aliases: ['docker'] },\n\t{ label: 'EBNF', value: 'ebnf' },\n\t{ label: 'Elixir', value: 'elixir', aliases: ['ex', 'exs'] },\n\t{ label: 'Elm', value: 'elm' },\n\t{ label: 'Erlang', value: 'erlang', aliases: ['erl'] },\n\t{ label: 'F#', value: 'fsharp', aliases: ['fs', 'f#'] },\n\t{ label: 'Flow', value: 'flow' },\n\t{ label: 'Fortran', value: 'fortran', aliases: ['f90', 'f95'] },\n\t{ label: 'Gherkin', value: 'gherkin', aliases: ['feature'] },\n\t{ label: 'GLSL', value: 'glsl' },\n\t{ label: 'Go', value: 'go', aliases: ['golang'] },\n\t{ label: 'GraphQL', value: 'graphql', aliases: ['gql'] },\n\t{ label: 'Groovy', value: 'groovy' },\n\t{ label: 'Haskell', value: 'haskell', aliases: ['hs'] },\n\t{ label: 'HCL', value: 'hcl' },\n\t{ label: 'HTML', value: 'html' },\n\t{ label: 'Idris', value: 'idris' },\n\t{ label: 'Java', value: 'java', aliases: ['jsp'] },\n\t{\n\t\tlabel: 'JavaScript',\n\t\tvalue: 'javascript',\n\t\taliases: ['js', 'jsx', 'mjs', 'cjs']\n\t},\n\t{ label: 'JSON', value: 'json', aliases: ['jsonc'] },\n\t{ label: 'Julia', value: 'julia' },\n\t{ label: 'Kotlin', value: 'kotlin', aliases: ['kt', 'kts'] },\n\t{ label: 'LaTeX', value: 'latex', aliases: ['tex'] },\n\t{ label: 'Less', value: 'less' },\n\t{ label: 'Lisp', value: 'lisp' },\n\t{ label: 'LiveScript', value: 'livescript', aliases: ['ls'] },\n\t{ label: 'LLVM IR', value: 'llvm' },\n\t{ label: 'Lua', value: 'lua', aliases: ['pluto'] },\n\t{ label: 'Makefile', value: 'makefile', aliases: ['mk', 'mak', 'make'] },\n\t{ label: 'Markdown', value: 'markdown', aliases: ['md', 'mkdown', 'mkd'] },\n\t{ label: 'Markup', value: 'markup' },\n\t{ label: 'MATLAB', value: 'matlab' },\n\t{ label: 'Mathematica', value: 'mathematica', aliases: ['mma', 'wl'] },\n\t{ label: 'Mermaid', value: 'mermaid' },\n\t{ label: 'Nix', value: 'nix', aliases: ['nixos'] },\n\t{ label: 'Notion Formula', value: 'notion' },\n\t{\n\t\tlabel: 'Objective-C',\n\t\tvalue: 'objectivec',\n\t\taliases: ['mm', 'objc', 'obj-c', 'obj-c++', 'objective-c++']\n\t},\n\t{ label: 'OCaml', value: 'ocaml', aliases: ['ml'] },\n\t{ label: 'Pascal', value: 'pascal' },\n\t{ label: 'Perl', value: 'perl', aliases: ['pl', 'pm'] },\n\t{ label: 'PHP', value: 'php' },\n\t{ label: 'PowerShell', value: 'powershell', aliases: ['pwsh', 'ps', 'ps1'] },\n\t{ label: 'Prolog', value: 'prolog' },\n\t{ label: 'Protocol Buffers', value: 'protobuf', aliases: ['proto'] },\n\t{ label: 'PureScript', value: 'purescript' },\n\t{ label: 'Python', value: 'python', aliases: ['py', 'gyp', 'ipython'] },\n\t{ label: 'R', value: 'r' },\n\t{ label: 'Racket', value: 'racket' },\n\t{ label: 'Reason', value: 'reasonml', aliases: ['re'] },\n\t{\n\t\tlabel: 'Ruby',\n\t\tvalue: 'ruby',\n\t\taliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb']\n\t},\n\t{ label: 'Rust', value: 'rust', aliases: ['rs'] },\n\t{ label: 'Sass', value: 'sass' },\n\t{ label: 'Scala', value: 'scala' },\n\t{ label: 'Scheme', value: 'scheme', aliases: ['scm'] },\n\t{ label: 'SCSS', value: 'scss' },\n\t{ label: 'Shell', value: 'shell', aliases: ['console', 'shellsession'] },\n\t{ label: 'Smalltalk', value: 'smalltalk', aliases: ['st'] },\n\t{ label: 'Solidity', value: 'solidity' },\n\t{ label: 'SQL', value: 'sql' },\n\t{ label: 'Swift', value: 'swift' },\n\t{ label: 'TOML', value: 'toml' },\n\t{\n\t\tlabel: 'TypeScript',\n\t\tvalue: 'typescript',\n\t\taliases: ['ts', 'tsx', 'mts', 'cts']\n\t},\n\t{ label: 'VB.Net', value: 'vbnet', aliases: ['vb'] },\n\t{ label: 'Verilog', value: 'verilog', aliases: ['v', 'sv', 'svh'] },\n\t{ label: 'VHDL', value: 'vhdl' },\n\t{ label: 'Visual Basic', value: 'visualbasic' },\n\t{ label: 'WebAssembly', value: 'wasm' },\n\t{\n\t\tlabel: 'XML',\n\t\tvalue: 'xml',\n\t\t// Note: highlight.js also lists \"html\" here, but `html` is its own\n\t\t// canonical entry above; including it would rewrite html → xml.\n\t\taliases: [\n\t\t\t'xhtml',\n\t\t\t'rss',\n\t\t\t'atom',\n\t\t\t'xjb',\n\t\t\t'xsd',\n\t\t\t'xsl',\n\t\t\t'plist',\n\t\t\t'wsf',\n\t\t\t'svg'\n\t\t]\n\t},\n\t{ label: 'YAML', value: 'yaml', aliases: ['yml'] }\n];\n\nconst ALIAS_TO_CANONICAL = (() => {\n\tconst map = new Map<string, string>();\n\n\tfor (const lang of LANGUAGES) {\n\t\tfor (const alias of lang.aliases ?? []) {\n\t\t\tmap.set(alias, lang.value);\n\t\t}\n\t}\n\n\treturn map;\n})();\n\n/**\n * Resolve a user-supplied language identifier to a canonical LANGUAGES.value.\n * Aliases (e.g. `js`, `ts`, `py`) collapse to their canonical form\n * (`javascript`, `typescript`, `python`); unknown identifiers and canonical\n * values pass through unchanged. Empty / undefined input returns ''.\n */\nexport function normalizeLanguage(input: string | undefined | null): string {\n\tif (!input) return '';\n\n\treturn ALIAS_TO_CANONICAL.get(input) ?? input;\n}\n\nexport function getLanguageLabel(value: string | null | undefined): string {\n\tif (!value) return 'Auto';\n\n\tconst found = LANGUAGES.find((l) => l.value === value);\n\n\treturn found?.label ?? value;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/lib/languages.ts"],"sourcesContent":["export interface Language {\n\tlabel: string;\n\tvalue: string;\n\t/**\n\t * Aliases recognized by highlight.js for this language. Used by\n\t * `normalizeLanguage` so the markdown input rule (e.g. ```js + Enter)\n\t * stores the canonical `value` instead of the raw alias. Only canonical\n\t * values are listed in this table; an alias that already exists as a\n\t * canonical `value` (e.g. `html` for `xml`) is intentionally excluded\n\t * to preserve the existing UI label.\n\t */\n\taliases?: string[];\n}\n\n// Curated set transcribed from demo/notra/components/editor/ui/language-select.tsx.\n// Keep the order: auto and plaintext first, then alphabetical by label.\n// `aliases` mirror the `aliases` field of the corresponding highlight.js\n// language module (highlight.js@11). Entries missing from highlight.js's\n// shipped languages have no aliases.\nexport const LANGUAGES: Language[] = [\n\t{ label: 'Auto', value: 'auto' },\n\t{ label: 'Plain Text', value: 'plaintext' },\n\t{ label: 'ABAP', value: 'abap' },\n\t{ label: 'Agda', value: 'agda' },\n\t{ label: 'Arduino', value: 'arduino', aliases: ['ino'] },\n\t{ label: 'ASCII Art', value: 'ascii' },\n\t{ label: 'Assembly', value: 'x86asm' },\n\t{ label: 'Bash', value: 'bash', aliases: ['sh', 'zsh'] },\n\t{ label: 'BASIC', value: 'basic' },\n\t{ label: 'BNF', value: 'bnf' },\n\t{ label: 'C', value: 'c', aliases: ['h'] },\n\t{ label: 'C#', value: 'csharp', aliases: ['cs', 'c#'] },\n\t{\n\t\tlabel: 'C++',\n\t\tvalue: 'cpp',\n\t\taliases: ['cc', 'c++', 'h++', 'hpp', 'hh', 'hxx', 'cxx']\n\t},\n\t{ label: 'Clojure', value: 'clojure', aliases: ['clj', 'edn'] },\n\t{\n\t\tlabel: 'CoffeeScript',\n\t\tvalue: 'coffeescript',\n\t\taliases: ['coffee', 'cson', 'iced']\n\t},\n\t{ label: 'Coq', value: 'coq' },\n\t{ label: 'CSS', value: 'css' },\n\t{ label: 'Dart', value: 'dart' },\n\t{ label: 'Dhall', value: 'dhall' },\n\t{ label: 'Diff', value: 'diff', aliases: ['patch'] },\n\t{ label: 'Docker', value: 'dockerfile', aliases: ['docker'] },\n\t{ label: 'EBNF', value: 'ebnf' },\n\t{ label: 'Elixir', value: 'elixir', aliases: ['ex', 'exs'] },\n\t{ label: 'Elm', value: 'elm' },\n\t{ label: 'Erlang', value: 'erlang', aliases: ['erl'] },\n\t{ label: 'F#', value: 'fsharp', aliases: ['fs', 'f#'] },\n\t{ label: 'Flow', value: 'flow' },\n\t{ label: 'Fortran', value: 'fortran', aliases: ['f90', 'f95'] },\n\t{ label: 'Gherkin', value: 'gherkin', aliases: ['feature'] },\n\t{ label: 'GLSL', value: 'glsl' },\n\t{ label: 'Go', value: 'go', aliases: ['golang'] },\n\t{ label: 'GraphQL', value: 'graphql', aliases: ['gql'] },\n\t{ label: 'Groovy', value: 'groovy' },\n\t{ label: 'Haskell', value: 'haskell', aliases: ['hs'] },\n\t{ label: 'HCL', value: 'hcl' },\n\t{ label: 'HTML', value: 'html' },\n\t{ label: 'Idris', value: 'idris' },\n\t{ label: 'Java', value: 'java', aliases: ['jsp'] },\n\t{\n\t\tlabel: 'JavaScript',\n\t\tvalue: 'javascript',\n\t\taliases: ['js', 'jsx', 'mjs', 'cjs']\n\t},\n\t{ label: 'JSON', value: 'json', aliases: ['jsonc'] },\n\t{ label: 'Julia', value: 'julia' },\n\t{ label: 'Kotlin', value: 'kotlin', aliases: ['kt', 'kts'] },\n\t{ label: 'LaTeX', value: 'latex', aliases: ['tex'] },\n\t{ label: 'Less', value: 'less' },\n\t{ label: 'Lisp', value: 'lisp' },\n\t{ label: 'LiveScript', value: 'livescript', aliases: ['ls'] },\n\t{ label: 'LLVM IR', value: 'llvm' },\n\t{ label: 'Lua', value: 'lua', aliases: ['pluto'] },\n\t{ label: 'Makefile', value: 'makefile', aliases: ['mk', 'mak', 'make'] },\n\t{ label: 'Markdown', value: 'markdown', aliases: ['md', 'mkdown', 'mkd'] },\n\t{ label: 'Markup', value: 'markup' },\n\t{ label: 'MATLAB', value: 'matlab' },\n\t{ label: 'Mathematica', value: 'mathematica', aliases: ['mma', 'wl'] },\n\t{ label: 'Mermaid', value: 'mermaid' },\n\t{ label: 'Nix', value: 'nix', aliases: ['nixos'] },\n\t{ label: 'Notion Formula', value: 'notion' },\n\t{\n\t\tlabel: 'Objective-C',\n\t\tvalue: 'objectivec',\n\t\taliases: ['mm', 'objc', 'obj-c', 'obj-c++', 'objective-c++']\n\t},\n\t{ label: 'OCaml', value: 'ocaml', aliases: ['ml'] },\n\t{ label: 'Pascal', value: 'pascal' },\n\t{ label: 'Perl', value: 'perl', aliases: ['pl', 'pm'] },\n\t{ label: 'PHP', value: 'php' },\n\t{ label: 'PowerShell', value: 'powershell', aliases: ['pwsh', 'ps', 'ps1'] },\n\t{ label: 'Prolog', value: 'prolog' },\n\t{ label: 'Protocol Buffers', value: 'protobuf', aliases: ['proto'] },\n\t{ label: 'PureScript', value: 'purescript' },\n\t{ label: 'Python', value: 'python', aliases: ['py', 'gyp', 'ipython'] },\n\t{ label: 'R', value: 'r' },\n\t{ label: 'Racket', value: 'racket' },\n\t{ label: 'Reason', value: 'reasonml', aliases: ['re'] },\n\t{\n\t\tlabel: 'Ruby',\n\t\tvalue: 'ruby',\n\t\taliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb']\n\t},\n\t{ label: 'Rust', value: 'rust', aliases: ['rs'] },\n\t{ label: 'Sass', value: 'sass' },\n\t{ label: 'Scala', value: 'scala' },\n\t{ label: 'Scheme', value: 'scheme', aliases: ['scm'] },\n\t{ label: 'SCSS', value: 'scss' },\n\t{ label: 'Shell', value: 'shell', aliases: ['console', 'shellsession'] },\n\t{ label: 'Smalltalk', value: 'smalltalk', aliases: ['st'] },\n\t{ label: 'Solidity', value: 'solidity' },\n\t{ label: 'SQL', value: 'sql' },\n\t{ label: 'Swift', value: 'swift' },\n\t{ label: 'TOML', value: 'toml' },\n\t{\n\t\tlabel: 'TypeScript',\n\t\tvalue: 'typescript',\n\t\taliases: ['ts', 'tsx', 'mts', 'cts']\n\t},\n\t{ label: 'VB.Net', value: 'vbnet', aliases: ['vb'] },\n\t{ label: 'Verilog', value: 'verilog', aliases: ['v', 'sv', 'svh'] },\n\t{ label: 'VHDL', value: 'vhdl' },\n\t{ label: 'Visual Basic', value: 'visualbasic' },\n\t{ label: 'WebAssembly', value: 'wasm' },\n\t{\n\t\tlabel: 'XML',\n\t\tvalue: 'xml',\n\t\t// Note: highlight.js also lists \"html\" here, but `html` is its own\n\t\t// canonical entry above; including it would rewrite html → xml.\n\t\taliases: [\n\t\t\t'xhtml',\n\t\t\t'rss',\n\t\t\t'atom',\n\t\t\t'xjb',\n\t\t\t'xsd',\n\t\t\t'xsl',\n\t\t\t'plist',\n\t\t\t'wsf',\n\t\t\t'svg'\n\t\t]\n\t},\n\t{ label: 'YAML', value: 'yaml', aliases: ['yml'] }\n];\n\nconst ALIAS_TO_CANONICAL = (() => {\n\tconst map = new Map<string, string>();\n\n\tfor (const lang of LANGUAGES) {\n\t\tfor (const alias of lang.aliases ?? []) {\n\t\t\tmap.set(alias, lang.value);\n\t\t}\n\t}\n\n\treturn map;\n})();\n\n/**\n * Resolve a user-supplied language identifier to a canonical LANGUAGES.value.\n * Aliases (e.g. `js`, `ts`, `py`) collapse to their canonical form\n * (`javascript`, `typescript`, `python`); unknown identifiers and canonical\n * values pass through unchanged. Empty / undefined input returns ''.\n */\nexport function normalizeLanguage(input: string | undefined | null): string {\n\tif (!input) return '';\n\n\treturn ALIAS_TO_CANONICAL.get(input) ?? input;\n}\n\nexport function getLanguageLabel(value: string | null | undefined): string {\n\tif (!value) return 'Auto';\n\n\tconst found = LANGUAGES.find((l) => l.value === value);\n\n\treturn found?.label ?? value;\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,5 @@
1
- const LANGUAGES = [
1
+ // src/lib/languages.ts
2
+ var LANGUAGES = [
2
3
  { label: "Auto", value: "auto" },
3
4
  { label: "Plain Text", value: "plaintext" },
4
5
  { label: "ABAP", value: "abap" },
@@ -129,7 +130,7 @@ const LANGUAGES = [
129
130
  },
130
131
  { label: "YAML", value: "yaml", aliases: ["yml"] }
131
132
  ];
132
- const ALIAS_TO_CANONICAL = (() => {
133
+ var ALIAS_TO_CANONICAL = (() => {
133
134
  const map = /* @__PURE__ */ new Map();
134
135
  for (const lang of LANGUAGES) {
135
136
  for (const alias of lang.aliases ?? []) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/languages.ts"],"sourcesContent":["export interface Language {\n\tlabel: string;\n\tvalue: string;\n\t/**\n\t * Aliases recognized by highlight.js for this language. Used by\n\t * `normalizeLanguage` so the markdown input rule (e.g. ```js + Enter)\n\t * stores the canonical `value` instead of the raw alias. Only canonical\n\t * values are listed in this table; an alias that already exists as a\n\t * canonical `value` (e.g. `html` for `xml`) is intentionally excluded\n\t * to preserve the existing UI label.\n\t */\n\taliases?: string[];\n}\n\n// Curated set transcribed from demo/notra/components/editor/ui/language-select.tsx.\n// Keep the order: auto and plaintext first, then alphabetical by label.\n// `aliases` mirror the `aliases` field of the corresponding highlight.js\n// language module (highlight.js@11). Entries missing from highlight.js's\n// shipped languages have no aliases.\nexport const LANGUAGES: Language[] = [\n\t{ label: 'Auto', value: 'auto' },\n\t{ label: 'Plain Text', value: 'plaintext' },\n\t{ label: 'ABAP', value: 'abap' },\n\t{ label: 'Agda', value: 'agda' },\n\t{ label: 'Arduino', value: 'arduino', aliases: ['ino'] },\n\t{ label: 'ASCII Art', value: 'ascii' },\n\t{ label: 'Assembly', value: 'x86asm' },\n\t{ label: 'Bash', value: 'bash', aliases: ['sh', 'zsh'] },\n\t{ label: 'BASIC', value: 'basic' },\n\t{ label: 'BNF', value: 'bnf' },\n\t{ label: 'C', value: 'c', aliases: ['h'] },\n\t{ label: 'C#', value: 'csharp', aliases: ['cs', 'c#'] },\n\t{\n\t\tlabel: 'C++',\n\t\tvalue: 'cpp',\n\t\taliases: ['cc', 'c++', 'h++', 'hpp', 'hh', 'hxx', 'cxx']\n\t},\n\t{ label: 'Clojure', value: 'clojure', aliases: ['clj', 'edn'] },\n\t{\n\t\tlabel: 'CoffeeScript',\n\t\tvalue: 'coffeescript',\n\t\taliases: ['coffee', 'cson', 'iced']\n\t},\n\t{ label: 'Coq', value: 'coq' },\n\t{ label: 'CSS', value: 'css' },\n\t{ label: 'Dart', value: 'dart' },\n\t{ label: 'Dhall', value: 'dhall' },\n\t{ label: 'Diff', value: 'diff', aliases: ['patch'] },\n\t{ label: 'Docker', value: 'dockerfile', aliases: ['docker'] },\n\t{ label: 'EBNF', value: 'ebnf' },\n\t{ label: 'Elixir', value: 'elixir', aliases: ['ex', 'exs'] },\n\t{ label: 'Elm', value: 'elm' },\n\t{ label: 'Erlang', value: 'erlang', aliases: ['erl'] },\n\t{ label: 'F#', value: 'fsharp', aliases: ['fs', 'f#'] },\n\t{ label: 'Flow', value: 'flow' },\n\t{ label: 'Fortran', value: 'fortran', aliases: ['f90', 'f95'] },\n\t{ label: 'Gherkin', value: 'gherkin', aliases: ['feature'] },\n\t{ label: 'GLSL', value: 'glsl' },\n\t{ label: 'Go', value: 'go', aliases: ['golang'] },\n\t{ label: 'GraphQL', value: 'graphql', aliases: ['gql'] },\n\t{ label: 'Groovy', value: 'groovy' },\n\t{ label: 'Haskell', value: 'haskell', aliases: ['hs'] },\n\t{ label: 'HCL', value: 'hcl' },\n\t{ label: 'HTML', value: 'html' },\n\t{ label: 'Idris', value: 'idris' },\n\t{ label: 'Java', value: 'java', aliases: ['jsp'] },\n\t{\n\t\tlabel: 'JavaScript',\n\t\tvalue: 'javascript',\n\t\taliases: ['js', 'jsx', 'mjs', 'cjs']\n\t},\n\t{ label: 'JSON', value: 'json', aliases: ['jsonc'] },\n\t{ label: 'Julia', value: 'julia' },\n\t{ label: 'Kotlin', value: 'kotlin', aliases: ['kt', 'kts'] },\n\t{ label: 'LaTeX', value: 'latex', aliases: ['tex'] },\n\t{ label: 'Less', value: 'less' },\n\t{ label: 'Lisp', value: 'lisp' },\n\t{ label: 'LiveScript', value: 'livescript', aliases: ['ls'] },\n\t{ label: 'LLVM IR', value: 'llvm' },\n\t{ label: 'Lua', value: 'lua', aliases: ['pluto'] },\n\t{ label: 'Makefile', value: 'makefile', aliases: ['mk', 'mak', 'make'] },\n\t{ label: 'Markdown', value: 'markdown', aliases: ['md', 'mkdown', 'mkd'] },\n\t{ label: 'Markup', value: 'markup' },\n\t{ label: 'MATLAB', value: 'matlab' },\n\t{ label: 'Mathematica', value: 'mathematica', aliases: ['mma', 'wl'] },\n\t{ label: 'Mermaid', value: 'mermaid' },\n\t{ label: 'Nix', value: 'nix', aliases: ['nixos'] },\n\t{ label: 'Notion Formula', value: 'notion' },\n\t{\n\t\tlabel: 'Objective-C',\n\t\tvalue: 'objectivec',\n\t\taliases: ['mm', 'objc', 'obj-c', 'obj-c++', 'objective-c++']\n\t},\n\t{ label: 'OCaml', value: 'ocaml', aliases: ['ml'] },\n\t{ label: 'Pascal', value: 'pascal' },\n\t{ label: 'Perl', value: 'perl', aliases: ['pl', 'pm'] },\n\t{ label: 'PHP', value: 'php' },\n\t{ label: 'PowerShell', value: 'powershell', aliases: ['pwsh', 'ps', 'ps1'] },\n\t{ label: 'Prolog', value: 'prolog' },\n\t{ label: 'Protocol Buffers', value: 'protobuf', aliases: ['proto'] },\n\t{ label: 'PureScript', value: 'purescript' },\n\t{ label: 'Python', value: 'python', aliases: ['py', 'gyp', 'ipython'] },\n\t{ label: 'R', value: 'r' },\n\t{ label: 'Racket', value: 'racket' },\n\t{ label: 'Reason', value: 'reasonml', aliases: ['re'] },\n\t{\n\t\tlabel: 'Ruby',\n\t\tvalue: 'ruby',\n\t\taliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb']\n\t},\n\t{ label: 'Rust', value: 'rust', aliases: ['rs'] },\n\t{ label: 'Sass', value: 'sass' },\n\t{ label: 'Scala', value: 'scala' },\n\t{ label: 'Scheme', value: 'scheme', aliases: ['scm'] },\n\t{ label: 'SCSS', value: 'scss' },\n\t{ label: 'Shell', value: 'shell', aliases: ['console', 'shellsession'] },\n\t{ label: 'Smalltalk', value: 'smalltalk', aliases: ['st'] },\n\t{ label: 'Solidity', value: 'solidity' },\n\t{ label: 'SQL', value: 'sql' },\n\t{ label: 'Swift', value: 'swift' },\n\t{ label: 'TOML', value: 'toml' },\n\t{\n\t\tlabel: 'TypeScript',\n\t\tvalue: 'typescript',\n\t\taliases: ['ts', 'tsx', 'mts', 'cts']\n\t},\n\t{ label: 'VB.Net', value: 'vbnet', aliases: ['vb'] },\n\t{ label: 'Verilog', value: 'verilog', aliases: ['v', 'sv', 'svh'] },\n\t{ label: 'VHDL', value: 'vhdl' },\n\t{ label: 'Visual Basic', value: 'visualbasic' },\n\t{ label: 'WebAssembly', value: 'wasm' },\n\t{\n\t\tlabel: 'XML',\n\t\tvalue: 'xml',\n\t\t// Note: highlight.js also lists \"html\" here, but `html` is its own\n\t\t// canonical entry above; including it would rewrite html → xml.\n\t\taliases: [\n\t\t\t'xhtml',\n\t\t\t'rss',\n\t\t\t'atom',\n\t\t\t'xjb',\n\t\t\t'xsd',\n\t\t\t'xsl',\n\t\t\t'plist',\n\t\t\t'wsf',\n\t\t\t'svg'\n\t\t]\n\t},\n\t{ label: 'YAML', value: 'yaml', aliases: ['yml'] }\n];\n\nconst ALIAS_TO_CANONICAL = (() => {\n\tconst map = new Map<string, string>();\n\n\tfor (const lang of LANGUAGES) {\n\t\tfor (const alias of lang.aliases ?? []) {\n\t\t\tmap.set(alias, lang.value);\n\t\t}\n\t}\n\n\treturn map;\n})();\n\n/**\n * Resolve a user-supplied language identifier to a canonical LANGUAGES.value.\n * Aliases (e.g. `js`, `ts`, `py`) collapse to their canonical form\n * (`javascript`, `typescript`, `python`); unknown identifiers and canonical\n * values pass through unchanged. Empty / undefined input returns ''.\n */\nexport function normalizeLanguage(input: string | undefined | null): string {\n\tif (!input) return '';\n\n\treturn ALIAS_TO_CANONICAL.get(input) ?? input;\n}\n\nexport function getLanguageLabel(value: string | null | undefined): string {\n\tif (!value) return 'Auto';\n\n\tconst found = LANGUAGES.find((l) => l.value === value);\n\n\treturn found?.label ?? value;\n}\n"],"mappings":"AAmBO,MAAM,YAAwB;AAAA,EACpC,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,cAAc,OAAO,YAAY;AAAA,EAC1C,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC,KAAK,EAAE;AAAA,EACvD,EAAE,OAAO,aAAa,OAAO,QAAQ;AAAA,EACrC,EAAE,OAAO,YAAY,OAAO,SAAS;AAAA,EACrC,EAAE,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAAC,MAAM,KAAK,EAAE;AAAA,EACvD,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACjC,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,GAAG,EAAE;AAAA,EACzC,EAAE,OAAO,MAAM,OAAO,UAAU,SAAS,CAAC,MAAM,IAAI,EAAE;AAAA,EACtD;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,CAAC,MAAM,OAAO,OAAO,OAAO,MAAM,OAAO,KAAK;AAAA,EACxD;AAAA,EACA,EAAE,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC,OAAO,KAAK,EAAE;AAAA,EAC9D;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,CAAC,UAAU,QAAQ,MAAM;AAAA,EACnC;AAAA,EACA,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACjC,EAAE,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAAC,OAAO,EAAE;AAAA,EACnD,EAAE,OAAO,UAAU,OAAO,cAAc,SAAS,CAAC,QAAQ,EAAE;AAAA,EAC5D,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,UAAU,OAAO,UAAU,SAAS,CAAC,MAAM,KAAK,EAAE;AAAA,EAC3D,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,UAAU,OAAO,UAAU,SAAS,CAAC,KAAK,EAAE;AAAA,EACrD,EAAE,OAAO,MAAM,OAAO,UAAU,SAAS,CAAC,MAAM,IAAI,EAAE;AAAA,EACtD,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC,OAAO,KAAK,EAAE;AAAA,EAC9D,EAAE,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC,SAAS,EAAE;AAAA,EAC3D,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,MAAM,OAAO,MAAM,SAAS,CAAC,QAAQ,EAAE;AAAA,EAChD,EAAE,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC,KAAK,EAAE;AAAA,EACvD,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC,IAAI,EAAE;AAAA,EACtD,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACjC,EAAE,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAAC,KAAK,EAAE;AAAA,EACjD;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,CAAC,MAAM,OAAO,OAAO,KAAK;AAAA,EACpC;AAAA,EACA,EAAE,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAAC,OAAO,EAAE;AAAA,EACnD,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACjC,EAAE,OAAO,UAAU,OAAO,UAAU,SAAS,CAAC,MAAM,KAAK,EAAE;AAAA,EAC3D,EAAE,OAAO,SAAS,OAAO,SAAS,SAAS,CAAC,KAAK,EAAE;AAAA,EACnD,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,cAAc,OAAO,cAAc,SAAS,CAAC,IAAI,EAAE;AAAA,EAC5D,EAAE,OAAO,WAAW,OAAO,OAAO;AAAA,EAClC,EAAE,OAAO,OAAO,OAAO,OAAO,SAAS,CAAC,OAAO,EAAE;AAAA,EACjD,EAAE,OAAO,YAAY,OAAO,YAAY,SAAS,CAAC,MAAM,OAAO,MAAM,EAAE;AAAA,EACvE,EAAE,OAAO,YAAY,OAAO,YAAY,SAAS,CAAC,MAAM,UAAU,KAAK,EAAE;AAAA,EACzE,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,eAAe,OAAO,eAAe,SAAS,CAAC,OAAO,IAAI,EAAE;AAAA,EACrE,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,EACrC,EAAE,OAAO,OAAO,OAAO,OAAO,SAAS,CAAC,OAAO,EAAE;AAAA,EACjD,EAAE,OAAO,kBAAkB,OAAO,SAAS;AAAA,EAC3C;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,CAAC,MAAM,QAAQ,SAAS,WAAW,eAAe;AAAA,EAC5D;AAAA,EACA,EAAE,OAAO,SAAS,OAAO,SAAS,SAAS,CAAC,IAAI,EAAE;AAAA,EAClD,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAAC,MAAM,IAAI,EAAE;AAAA,EACtD,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,cAAc,OAAO,cAAc,SAAS,CAAC,QAAQ,MAAM,KAAK,EAAE;AAAA,EAC3E,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,oBAAoB,OAAO,YAAY,SAAS,CAAC,OAAO,EAAE;AAAA,EACnE,EAAE,OAAO,cAAc,OAAO,aAAa;AAAA,EAC3C,EAAE,OAAO,UAAU,OAAO,UAAU,SAAS,CAAC,MAAM,OAAO,SAAS,EAAE;AAAA,EACtE,EAAE,OAAO,KAAK,OAAO,IAAI;AAAA,EACzB,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,UAAU,OAAO,YAAY,SAAS,CAAC,IAAI,EAAE;AAAA,EACtD;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,CAAC,MAAM,WAAW,WAAW,QAAQ,KAAK;AAAA,EACpD;AAAA,EACA,EAAE,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAAC,IAAI,EAAE;AAAA,EAChD,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACjC,EAAE,OAAO,UAAU,OAAO,UAAU,SAAS,CAAC,KAAK,EAAE;AAAA,EACrD,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,SAAS,OAAO,SAAS,SAAS,CAAC,WAAW,cAAc,EAAE;AAAA,EACvE,EAAE,OAAO,aAAa,OAAO,aAAa,SAAS,CAAC,IAAI,EAAE;AAAA,EAC1D,EAAE,OAAO,YAAY,OAAO,WAAW;AAAA,EACvC,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACjC,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,CAAC,MAAM,OAAO,OAAO,KAAK;AAAA,EACpC;AAAA,EACA,EAAE,OAAO,UAAU,OAAO,SAAS,SAAS,CAAC,IAAI,EAAE;AAAA,EACnD,EAAE,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC,KAAK,MAAM,KAAK,EAAE;AAAA,EAClE,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,gBAAgB,OAAO,cAAc;AAAA,EAC9C,EAAE,OAAO,eAAe,OAAO,OAAO;AAAA,EACtC;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA;AAAA;AAAA,IAGP,SAAS;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EACA,EAAE,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAAC,KAAK,EAAE;AAClD;AAEA,MAAM,sBAAsB,MAAM;AACjC,QAAM,MAAM,oBAAI,IAAoB;AAEpC,aAAW,QAAQ,WAAW;AAC7B,eAAW,SAAS,KAAK,WAAW,CAAC,GAAG;AACvC,UAAI,IAAI,OAAO,KAAK,KAAK;AAAA,IAC1B;AAAA,EACD;AAEA,SAAO;AACR,GAAG;AAQI,SAAS,kBAAkB,OAA0C;AAC3E,MAAI,CAAC,MAAO,QAAO;AAEnB,SAAO,mBAAmB,IAAI,KAAK,KAAK;AACzC;AAEO,SAAS,iBAAiB,OAA0C;AAC1E,MAAI,CAAC,MAAO,QAAO;AAEnB,QAAM,QAAQ,UAAU,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK;AAErD,SAAO,OAAO,SAAS;AACxB;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/languages.ts"],"sourcesContent":["export interface Language {\n\tlabel: string;\n\tvalue: string;\n\t/**\n\t * Aliases recognized by highlight.js for this language. Used by\n\t * `normalizeLanguage` so the markdown input rule (e.g. ```js + Enter)\n\t * stores the canonical `value` instead of the raw alias. Only canonical\n\t * values are listed in this table; an alias that already exists as a\n\t * canonical `value` (e.g. `html` for `xml`) is intentionally excluded\n\t * to preserve the existing UI label.\n\t */\n\taliases?: string[];\n}\n\n// Curated set transcribed from demo/notra/components/editor/ui/language-select.tsx.\n// Keep the order: auto and plaintext first, then alphabetical by label.\n// `aliases` mirror the `aliases` field of the corresponding highlight.js\n// language module (highlight.js@11). Entries missing from highlight.js's\n// shipped languages have no aliases.\nexport const LANGUAGES: Language[] = [\n\t{ label: 'Auto', value: 'auto' },\n\t{ label: 'Plain Text', value: 'plaintext' },\n\t{ label: 'ABAP', value: 'abap' },\n\t{ label: 'Agda', value: 'agda' },\n\t{ label: 'Arduino', value: 'arduino', aliases: ['ino'] },\n\t{ label: 'ASCII Art', value: 'ascii' },\n\t{ label: 'Assembly', value: 'x86asm' },\n\t{ label: 'Bash', value: 'bash', aliases: ['sh', 'zsh'] },\n\t{ label: 'BASIC', value: 'basic' },\n\t{ label: 'BNF', value: 'bnf' },\n\t{ label: 'C', value: 'c', aliases: ['h'] },\n\t{ label: 'C#', value: 'csharp', aliases: ['cs', 'c#'] },\n\t{\n\t\tlabel: 'C++',\n\t\tvalue: 'cpp',\n\t\taliases: ['cc', 'c++', 'h++', 'hpp', 'hh', 'hxx', 'cxx']\n\t},\n\t{ label: 'Clojure', value: 'clojure', aliases: ['clj', 'edn'] },\n\t{\n\t\tlabel: 'CoffeeScript',\n\t\tvalue: 'coffeescript',\n\t\taliases: ['coffee', 'cson', 'iced']\n\t},\n\t{ label: 'Coq', value: 'coq' },\n\t{ label: 'CSS', value: 'css' },\n\t{ label: 'Dart', value: 'dart' },\n\t{ label: 'Dhall', value: 'dhall' },\n\t{ label: 'Diff', value: 'diff', aliases: ['patch'] },\n\t{ label: 'Docker', value: 'dockerfile', aliases: ['docker'] },\n\t{ label: 'EBNF', value: 'ebnf' },\n\t{ label: 'Elixir', value: 'elixir', aliases: ['ex', 'exs'] },\n\t{ label: 'Elm', value: 'elm' },\n\t{ label: 'Erlang', value: 'erlang', aliases: ['erl'] },\n\t{ label: 'F#', value: 'fsharp', aliases: ['fs', 'f#'] },\n\t{ label: 'Flow', value: 'flow' },\n\t{ label: 'Fortran', value: 'fortran', aliases: ['f90', 'f95'] },\n\t{ label: 'Gherkin', value: 'gherkin', aliases: ['feature'] },\n\t{ label: 'GLSL', value: 'glsl' },\n\t{ label: 'Go', value: 'go', aliases: ['golang'] },\n\t{ label: 'GraphQL', value: 'graphql', aliases: ['gql'] },\n\t{ label: 'Groovy', value: 'groovy' },\n\t{ label: 'Haskell', value: 'haskell', aliases: ['hs'] },\n\t{ label: 'HCL', value: 'hcl' },\n\t{ label: 'HTML', value: 'html' },\n\t{ label: 'Idris', value: 'idris' },\n\t{ label: 'Java', value: 'java', aliases: ['jsp'] },\n\t{\n\t\tlabel: 'JavaScript',\n\t\tvalue: 'javascript',\n\t\taliases: ['js', 'jsx', 'mjs', 'cjs']\n\t},\n\t{ label: 'JSON', value: 'json', aliases: ['jsonc'] },\n\t{ label: 'Julia', value: 'julia' },\n\t{ label: 'Kotlin', value: 'kotlin', aliases: ['kt', 'kts'] },\n\t{ label: 'LaTeX', value: 'latex', aliases: ['tex'] },\n\t{ label: 'Less', value: 'less' },\n\t{ label: 'Lisp', value: 'lisp' },\n\t{ label: 'LiveScript', value: 'livescript', aliases: ['ls'] },\n\t{ label: 'LLVM IR', value: 'llvm' },\n\t{ label: 'Lua', value: 'lua', aliases: ['pluto'] },\n\t{ label: 'Makefile', value: 'makefile', aliases: ['mk', 'mak', 'make'] },\n\t{ label: 'Markdown', value: 'markdown', aliases: ['md', 'mkdown', 'mkd'] },\n\t{ label: 'Markup', value: 'markup' },\n\t{ label: 'MATLAB', value: 'matlab' },\n\t{ label: 'Mathematica', value: 'mathematica', aliases: ['mma', 'wl'] },\n\t{ label: 'Mermaid', value: 'mermaid' },\n\t{ label: 'Nix', value: 'nix', aliases: ['nixos'] },\n\t{ label: 'Notion Formula', value: 'notion' },\n\t{\n\t\tlabel: 'Objective-C',\n\t\tvalue: 'objectivec',\n\t\taliases: ['mm', 'objc', 'obj-c', 'obj-c++', 'objective-c++']\n\t},\n\t{ label: 'OCaml', value: 'ocaml', aliases: ['ml'] },\n\t{ label: 'Pascal', value: 'pascal' },\n\t{ label: 'Perl', value: 'perl', aliases: ['pl', 'pm'] },\n\t{ label: 'PHP', value: 'php' },\n\t{ label: 'PowerShell', value: 'powershell', aliases: ['pwsh', 'ps', 'ps1'] },\n\t{ label: 'Prolog', value: 'prolog' },\n\t{ label: 'Protocol Buffers', value: 'protobuf', aliases: ['proto'] },\n\t{ label: 'PureScript', value: 'purescript' },\n\t{ label: 'Python', value: 'python', aliases: ['py', 'gyp', 'ipython'] },\n\t{ label: 'R', value: 'r' },\n\t{ label: 'Racket', value: 'racket' },\n\t{ label: 'Reason', value: 'reasonml', aliases: ['re'] },\n\t{\n\t\tlabel: 'Ruby',\n\t\tvalue: 'ruby',\n\t\taliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb']\n\t},\n\t{ label: 'Rust', value: 'rust', aliases: ['rs'] },\n\t{ label: 'Sass', value: 'sass' },\n\t{ label: 'Scala', value: 'scala' },\n\t{ label: 'Scheme', value: 'scheme', aliases: ['scm'] },\n\t{ label: 'SCSS', value: 'scss' },\n\t{ label: 'Shell', value: 'shell', aliases: ['console', 'shellsession'] },\n\t{ label: 'Smalltalk', value: 'smalltalk', aliases: ['st'] },\n\t{ label: 'Solidity', value: 'solidity' },\n\t{ label: 'SQL', value: 'sql' },\n\t{ label: 'Swift', value: 'swift' },\n\t{ label: 'TOML', value: 'toml' },\n\t{\n\t\tlabel: 'TypeScript',\n\t\tvalue: 'typescript',\n\t\taliases: ['ts', 'tsx', 'mts', 'cts']\n\t},\n\t{ label: 'VB.Net', value: 'vbnet', aliases: ['vb'] },\n\t{ label: 'Verilog', value: 'verilog', aliases: ['v', 'sv', 'svh'] },\n\t{ label: 'VHDL', value: 'vhdl' },\n\t{ label: 'Visual Basic', value: 'visualbasic' },\n\t{ label: 'WebAssembly', value: 'wasm' },\n\t{\n\t\tlabel: 'XML',\n\t\tvalue: 'xml',\n\t\t// Note: highlight.js also lists \"html\" here, but `html` is its own\n\t\t// canonical entry above; including it would rewrite html → xml.\n\t\taliases: [\n\t\t\t'xhtml',\n\t\t\t'rss',\n\t\t\t'atom',\n\t\t\t'xjb',\n\t\t\t'xsd',\n\t\t\t'xsl',\n\t\t\t'plist',\n\t\t\t'wsf',\n\t\t\t'svg'\n\t\t]\n\t},\n\t{ label: 'YAML', value: 'yaml', aliases: ['yml'] }\n];\n\nconst ALIAS_TO_CANONICAL = (() => {\n\tconst map = new Map<string, string>();\n\n\tfor (const lang of LANGUAGES) {\n\t\tfor (const alias of lang.aliases ?? []) {\n\t\t\tmap.set(alias, lang.value);\n\t\t}\n\t}\n\n\treturn map;\n})();\n\n/**\n * Resolve a user-supplied language identifier to a canonical LANGUAGES.value.\n * Aliases (e.g. `js`, `ts`, `py`) collapse to their canonical form\n * (`javascript`, `typescript`, `python`); unknown identifiers and canonical\n * values pass through unchanged. Empty / undefined input returns ''.\n */\nexport function normalizeLanguage(input: string | undefined | null): string {\n\tif (!input) return '';\n\n\treturn ALIAS_TO_CANONICAL.get(input) ?? input;\n}\n\nexport function getLanguageLabel(value: string | null | undefined): string {\n\tif (!value) return 'Auto';\n\n\tconst found = LANGUAGES.find((l) => l.value === value);\n\n\treturn found?.label ?? value;\n}\n"],"mappings":"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","names":[]}
@@ -16,6 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/utils.ts
19
21
  var utils_exports = {};
20
22
  __export(utils_exports, {
21
23
  cn: () => cn
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC3C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC5B;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC3C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC5B;","names":[]}
@@ -1,3 +1,4 @@
1
+ // src/lib/utils.ts
1
2
  import { clsx } from "clsx";
2
3
  import { twMerge } from "tailwind-merge";
3
4
  function cn(...inputs) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n"],"mappings":"AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC3C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC5B;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n"],"mappings":";AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC3C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC5B;","names":[]}
@@ -17,24 +17,27 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/notra-editor.tsx
20
22
  var notra_editor_exports = {};
21
23
  __export(notra_editor_exports, {
22
24
  NotraEditor: () => NotraEditor
23
25
  });
24
26
  module.exports = __toCommonJS(notra_editor_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
27
  var import_react = require("@tiptap/react");
27
- var import_blockquote_button = require("./components/blockquote-button/blockquote-button");
28
- var import_code_block_button = require("./components/code-block-button/code-block-button");
29
- var import_heading_dropdown_menu = require("./components/heading-dropdown-menu/heading-dropdown-menu");
30
- var import_image_popover = require("./components/image-popover/image-popover");
31
- var import_link_popover = require("./components/link-popover/link-popover");
32
- var import_list_dropdown_menu = require("./components/list-dropdown-menu/list-dropdown-menu");
33
- var import_mark_button = require("./components/mark-button/mark-button");
34
- var import_toolbar = require("./components/toolbar/toolbar");
35
- var import_spacer = require("./components/ui/spacer");
36
- var import_undo_redo_button = require("./components/undo-redo-button/undo-redo-button");
37
- var import_use_markdown_editor = require("./hooks/use-markdown-editor");
28
+ var import_blockquote_button = require("./components/blockquote-button/blockquote-button.cjs");
29
+ var import_code_block_button = require("./components/code-block-button/code-block-button.cjs");
30
+ var import_heading_dropdown_menu = require("./components/heading-dropdown-menu/heading-dropdown-menu.cjs");
31
+ var import_image_popover = require("./components/image-popover/image-popover.cjs");
32
+ var import_link_popover = require("./components/link-popover/link-popover.cjs");
33
+ var import_list_dropdown_menu = require("./components/list-dropdown-menu/list-dropdown-menu.cjs");
34
+ var import_mark_button = require("./components/mark-button/mark-button.cjs");
35
+ var import_slash_dropdown_menu = require("./components/slash-dropdown-menu/slash-dropdown-menu.cjs");
36
+ var import_toolbar = require("./components/toolbar/toolbar.cjs");
37
+ var import_spacer = require("./components/ui/spacer.cjs");
38
+ var import_undo_redo_button = require("./components/undo-redo-button/undo-redo-button.cjs");
39
+ var import_use_markdown_editor = require("./hooks/use-markdown-editor.cjs");
40
+ var import_jsx_runtime = require("react/jsx-runtime");
38
41
  function NotraEditor({ value, onChange }) {
39
42
  const { editor } = (0, import_use_markdown_editor.useMarkdownEditor)({
40
43
  value,
@@ -71,7 +74,8 @@ function NotraEditor({ value, onChange }) {
71
74
  ] }),
72
75
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_spacer.Spacer, {})
73
76
  ] }),
74
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.EditorContent, { className: "notra-editor-content", editor })
77
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.EditorContent, { className: "notra-editor-content", editor }),
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_slash_dropdown_menu.SlashDropdownMenu, { editor })
75
79
  ] });
76
80
  }
77
81
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/notra-editor.tsx"],"sourcesContent":["'use client';\n\nimport { EditorContent } from '@tiptap/react';\n\nimport { BlockquoteButton } from './components/blockquote-button/blockquote-button';\nimport { CodeBlockButton } from './components/code-block-button/code-block-button';\nimport { HeadingDropdownMenu } from './components/heading-dropdown-menu/heading-dropdown-menu';\nimport { ImagePopover } from './components/image-popover/image-popover';\nimport { LinkPopover } from './components/link-popover/link-popover';\nimport { ListDropdownMenu } from './components/list-dropdown-menu/list-dropdown-menu';\nimport { MarkButton } from './components/mark-button/mark-button';\nimport {\n\tToolbar,\n\tToolbarGroup,\n\tToolbarSeparator\n} from './components/toolbar/toolbar';\nimport { Spacer } from './components/ui/spacer';\nimport { UndoRedoButton } from './components/undo-redo-button/undo-redo-button';\nimport { useMarkdownEditor } from './hooks/use-markdown-editor';\n\nexport interface NotraEditorProps {\n\t/** Markdown content (source of truth) */\n\tvalue: string;\n\t/** Called when content changes, receives updated Markdown */\n\tonChange: (value: string) => void;\n}\n\nexport function NotraEditor({ value, onChange }: NotraEditorProps) {\n\tconst { editor } = useMarkdownEditor({\n\t\tvalue,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<div className=\"notra notra-editor-wrapper\">\n\t\t\t<Toolbar variant=\"fixed\">\n\t\t\t\t<Spacer />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<UndoRedoButton action=\"undo\" editor={editor} />\n\t\t\t\t\t<UndoRedoButton action=\"redo\" editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarSeparator />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<HeadingDropdownMenu editor={editor} levels={[1, 2, 3, 4]} />\n\t\t\t\t\t<ListDropdownMenu\n\t\t\t\t\t\teditor={editor}\n\t\t\t\t\t\ttypes={['bulletList', 'orderedList', 'taskList']}\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockquoteButton editor={editor} />\n\t\t\t\t\t<CodeBlockButton editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarSeparator />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<MarkButton editor={editor} type=\"bold\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"italic\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"strike\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"code\" />\n\t\t\t\t\t<LinkPopover editor={editor} />\n\t\t\t\t\t<ImagePopover editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<Spacer />\n\t\t\t</Toolbar>\n\t\t\t<EditorContent className=\"notra-editor-content\" editor={editor} />\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCI;AAlCJ,mBAA8B;AAE9B,+BAAiC;AACjC,+BAAgC;AAChC,mCAAoC;AACpC,2BAA6B;AAC7B,0BAA4B;AAC5B,gCAAiC;AACjC,yBAA2B;AAC3B,qBAIO;AACP,oBAAuB;AACvB,8BAA+B;AAC/B,iCAAkC;AAS3B,SAAS,YAAY,EAAE,OAAO,SAAS,GAAqB;AAClE,QAAM,EAAE,OAAO,QAAI,8CAAkB;AAAA,IACpC;AAAA,IACA;AAAA,EACD,CAAC;AAED,SACC,6CAAC,SAAI,WAAU,8BACd;AAAA,iDAAC,0BAAQ,SAAQ,SAChB;AAAA,kDAAC,wBAAO;AAAA,MACR,6CAAC,+BACA;AAAA,oDAAC,0CAAe,QAAO,QAAO,QAAgB;AAAA,QAC9C,4CAAC,0CAAe,QAAO,QAAO,QAAgB;AAAA,SAC/C;AAAA,MACA,4CAAC,mCAAiB;AAAA,MAClB,6CAAC,+BACA;AAAA,oDAAC,oDAAoB,QAAgB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG;AAAA,QAC3D;AAAA,UAAC;AAAA;AAAA,YACA;AAAA,YACA,OAAO,CAAC,cAAc,eAAe,UAAU;AAAA;AAAA,QAChD;AAAA,QACA,4CAAC,6CAAiB,QAAgB;AAAA,QAClC,4CAAC,4CAAgB,QAAgB;AAAA,SAClC;AAAA,MACA,4CAAC,mCAAiB;AAAA,MAClB,6CAAC,+BACA;AAAA,oDAAC,iCAAW,QAAgB,MAAK,QAAO;AAAA,QACxC,4CAAC,iCAAW,QAAgB,MAAK,UAAS;AAAA,QAC1C,4CAAC,iCAAW,QAAgB,MAAK,UAAS;AAAA,QAC1C,4CAAC,iCAAW,QAAgB,MAAK,QAAO;AAAA,QACxC,4CAAC,mCAAY,QAAgB;AAAA,QAC7B,4CAAC,qCAAa,QAAgB;AAAA,SAC/B;AAAA,MACA,4CAAC,wBAAO;AAAA,OACT;AAAA,IACA,4CAAC,8BAAc,WAAU,wBAAuB,QAAgB;AAAA,KACjE;AAEF;","names":[]}
1
+ {"version":3,"sources":["../src/notra-editor.tsx"],"sourcesContent":["'use client';\n\nimport { EditorContent } from '@tiptap/react';\n\nimport { BlockquoteButton } from './components/blockquote-button/blockquote-button.js';\nimport { CodeBlockButton } from './components/code-block-button/code-block-button.js';\nimport { HeadingDropdownMenu } from './components/heading-dropdown-menu/heading-dropdown-menu.js';\nimport { ImagePopover } from './components/image-popover/image-popover.js';\nimport { LinkPopover } from './components/link-popover/link-popover.js';\nimport { ListDropdownMenu } from './components/list-dropdown-menu/list-dropdown-menu.js';\nimport { MarkButton } from './components/mark-button/mark-button.js';\nimport { SlashDropdownMenu } from './components/slash-dropdown-menu/slash-dropdown-menu.js';\nimport {\n\tToolbar,\n\tToolbarGroup,\n\tToolbarSeparator\n} from './components/toolbar/toolbar.js';\nimport { Spacer } from './components/ui/spacer.js';\nimport { UndoRedoButton } from './components/undo-redo-button/undo-redo-button.js';\nimport { useMarkdownEditor } from './hooks/use-markdown-editor.js';\n\nexport interface NotraEditorProps {\n\t/** Markdown content (source of truth) */\n\tvalue: string;\n\t/** Called when content changes, receives updated Markdown */\n\tonChange: (value: string) => void;\n}\n\nexport function NotraEditor({ value, onChange }: NotraEditorProps) {\n\tconst { editor } = useMarkdownEditor({\n\t\tvalue,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<div className=\"notra notra-editor-wrapper\">\n\t\t\t<Toolbar variant=\"fixed\">\n\t\t\t\t<Spacer />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<UndoRedoButton action=\"undo\" editor={editor} />\n\t\t\t\t\t<UndoRedoButton action=\"redo\" editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarSeparator />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<HeadingDropdownMenu editor={editor} levels={[1, 2, 3, 4]} />\n\t\t\t\t\t<ListDropdownMenu\n\t\t\t\t\t\teditor={editor}\n\t\t\t\t\t\ttypes={['bulletList', 'orderedList', 'taskList']}\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockquoteButton editor={editor} />\n\t\t\t\t\t<CodeBlockButton editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarSeparator />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<MarkButton editor={editor} type=\"bold\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"italic\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"strike\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"code\" />\n\t\t\t\t\t<LinkPopover editor={editor} />\n\t\t\t\t\t<ImagePopover editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<Spacer />\n\t\t\t</Toolbar>\n\t\t\t<EditorContent className=\"notra-editor-content\" editor={editor} />\n\t\t\t<SlashDropdownMenu editor={editor} />\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA8B;AAE9B,+BAAiC;AACjC,+BAAgC;AAChC,mCAAoC;AACpC,2BAA6B;AAC7B,0BAA4B;AAC5B,gCAAiC;AACjC,yBAA2B;AAC3B,iCAAkC;AAClC,qBAIO;AACP,oBAAuB;AACvB,8BAA+B;AAC/B,iCAAkC;AAkB9B;AATG,SAAS,YAAY,EAAE,OAAO,SAAS,GAAqB;AAClE,QAAM,EAAE,OAAO,QAAI,8CAAkB;AAAA,IACpC;AAAA,IACA;AAAA,EACD,CAAC;AAED,SACC,6CAAC,SAAI,WAAU,8BACd;AAAA,iDAAC,0BAAQ,SAAQ,SAChB;AAAA,kDAAC,wBAAO;AAAA,MACR,6CAAC,+BACA;AAAA,oDAAC,0CAAe,QAAO,QAAO,QAAgB;AAAA,QAC9C,4CAAC,0CAAe,QAAO,QAAO,QAAgB;AAAA,SAC/C;AAAA,MACA,4CAAC,mCAAiB;AAAA,MAClB,6CAAC,+BACA;AAAA,oDAAC,oDAAoB,QAAgB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG;AAAA,QAC3D;AAAA,UAAC;AAAA;AAAA,YACA;AAAA,YACA,OAAO,CAAC,cAAc,eAAe,UAAU;AAAA;AAAA,QAChD;AAAA,QACA,4CAAC,6CAAiB,QAAgB;AAAA,QAClC,4CAAC,4CAAgB,QAAgB;AAAA,SAClC;AAAA,MACA,4CAAC,mCAAiB;AAAA,MAClB,6CAAC,+BACA;AAAA,oDAAC,iCAAW,QAAgB,MAAK,QAAO;AAAA,QACxC,4CAAC,iCAAW,QAAgB,MAAK,UAAS;AAAA,QAC1C,4CAAC,iCAAW,QAAgB,MAAK,UAAS;AAAA,QAC1C,4CAAC,iCAAW,QAAgB,MAAK,QAAO;AAAA,QACxC,4CAAC,mCAAY,QAAgB;AAAA,QAC7B,4CAAC,qCAAa,QAAgB;AAAA,SAC/B;AAAA,MACA,4CAAC,wBAAO;AAAA,OACT;AAAA,IACA,4CAAC,8BAAc,WAAU,wBAAuB,QAAgB;AAAA,IAChE,4CAAC,gDAAkB,QAAgB;AAAA,KACpC;AAEF;","names":[]}
@@ -1,21 +1,24 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
2
+
3
+ // src/notra-editor.tsx
3
4
  import { EditorContent } from "@tiptap/react";
4
- import { BlockquoteButton } from "./components/blockquote-button/blockquote-button";
5
- import { CodeBlockButton } from "./components/code-block-button/code-block-button";
6
- import { HeadingDropdownMenu } from "./components/heading-dropdown-menu/heading-dropdown-menu";
7
- import { ImagePopover } from "./components/image-popover/image-popover";
8
- import { LinkPopover } from "./components/link-popover/link-popover";
9
- import { ListDropdownMenu } from "./components/list-dropdown-menu/list-dropdown-menu";
10
- import { MarkButton } from "./components/mark-button/mark-button";
5
+ import { BlockquoteButton } from "./components/blockquote-button/blockquote-button.mjs";
6
+ import { CodeBlockButton } from "./components/code-block-button/code-block-button.mjs";
7
+ import { HeadingDropdownMenu } from "./components/heading-dropdown-menu/heading-dropdown-menu.mjs";
8
+ import { ImagePopover } from "./components/image-popover/image-popover.mjs";
9
+ import { LinkPopover } from "./components/link-popover/link-popover.mjs";
10
+ import { ListDropdownMenu } from "./components/list-dropdown-menu/list-dropdown-menu.mjs";
11
+ import { MarkButton } from "./components/mark-button/mark-button.mjs";
12
+ import { SlashDropdownMenu } from "./components/slash-dropdown-menu/slash-dropdown-menu.mjs";
11
13
  import {
12
14
  Toolbar,
13
15
  ToolbarGroup,
14
16
  ToolbarSeparator
15
- } from "./components/toolbar/toolbar";
16
- import { Spacer } from "./components/ui/spacer";
17
- import { UndoRedoButton } from "./components/undo-redo-button/undo-redo-button";
18
- import { useMarkdownEditor } from "./hooks/use-markdown-editor";
17
+ } from "./components/toolbar/toolbar.mjs";
18
+ import { Spacer } from "./components/ui/spacer.mjs";
19
+ import { UndoRedoButton } from "./components/undo-redo-button/undo-redo-button.mjs";
20
+ import { useMarkdownEditor } from "./hooks/use-markdown-editor.mjs";
21
+ import { jsx, jsxs } from "react/jsx-runtime";
19
22
  function NotraEditor({ value, onChange }) {
20
23
  const { editor } = useMarkdownEditor({
21
24
  value,
@@ -52,7 +55,8 @@ function NotraEditor({ value, onChange }) {
52
55
  ] }),
53
56
  /* @__PURE__ */ jsx(Spacer, {})
54
57
  ] }),
55
- /* @__PURE__ */ jsx(EditorContent, { className: "notra-editor-content", editor })
58
+ /* @__PURE__ */ jsx(EditorContent, { className: "notra-editor-content", editor }),
59
+ /* @__PURE__ */ jsx(SlashDropdownMenu, { editor })
56
60
  ] });
57
61
  }
58
62
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/notra-editor.tsx"],"sourcesContent":["'use client';\n\nimport { EditorContent } from '@tiptap/react';\n\nimport { BlockquoteButton } from './components/blockquote-button/blockquote-button';\nimport { CodeBlockButton } from './components/code-block-button/code-block-button';\nimport { HeadingDropdownMenu } from './components/heading-dropdown-menu/heading-dropdown-menu';\nimport { ImagePopover } from './components/image-popover/image-popover';\nimport { LinkPopover } from './components/link-popover/link-popover';\nimport { ListDropdownMenu } from './components/list-dropdown-menu/list-dropdown-menu';\nimport { MarkButton } from './components/mark-button/mark-button';\nimport {\n\tToolbar,\n\tToolbarGroup,\n\tToolbarSeparator\n} from './components/toolbar/toolbar';\nimport { Spacer } from './components/ui/spacer';\nimport { UndoRedoButton } from './components/undo-redo-button/undo-redo-button';\nimport { useMarkdownEditor } from './hooks/use-markdown-editor';\n\nexport interface NotraEditorProps {\n\t/** Markdown content (source of truth) */\n\tvalue: string;\n\t/** Called when content changes, receives updated Markdown */\n\tonChange: (value: string) => void;\n}\n\nexport function NotraEditor({ value, onChange }: NotraEditorProps) {\n\tconst { editor } = useMarkdownEditor({\n\t\tvalue,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<div className=\"notra notra-editor-wrapper\">\n\t\t\t<Toolbar variant=\"fixed\">\n\t\t\t\t<Spacer />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<UndoRedoButton action=\"undo\" editor={editor} />\n\t\t\t\t\t<UndoRedoButton action=\"redo\" editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarSeparator />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<HeadingDropdownMenu editor={editor} levels={[1, 2, 3, 4]} />\n\t\t\t\t\t<ListDropdownMenu\n\t\t\t\t\t\teditor={editor}\n\t\t\t\t\t\ttypes={['bulletList', 'orderedList', 'taskList']}\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockquoteButton editor={editor} />\n\t\t\t\t\t<CodeBlockButton editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarSeparator />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<MarkButton editor={editor} type=\"bold\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"italic\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"strike\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"code\" />\n\t\t\t\t\t<LinkPopover editor={editor} />\n\t\t\t\t\t<ImagePopover editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<Spacer />\n\t\t\t</Toolbar>\n\t\t\t<EditorContent className=\"notra-editor-content\" editor={editor} />\n\t\t</div>\n\t);\n}\n"],"mappings":";AAoCI,cACA,YADA;AAlCJ,SAAS,qBAAqB;AAE9B,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AACjC,SAAS,kBAAkB;AAC3B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAS3B,SAAS,YAAY,EAAE,OAAO,SAAS,GAAqB;AAClE,QAAM,EAAE,OAAO,IAAI,kBAAkB;AAAA,IACpC;AAAA,IACA;AAAA,EACD,CAAC;AAED,SACC,qBAAC,SAAI,WAAU,8BACd;AAAA,yBAAC,WAAQ,SAAQ,SAChB;AAAA,0BAAC,UAAO;AAAA,MACR,qBAAC,gBACA;AAAA,4BAAC,kBAAe,QAAO,QAAO,QAAgB;AAAA,QAC9C,oBAAC,kBAAe,QAAO,QAAO,QAAgB;AAAA,SAC/C;AAAA,MACA,oBAAC,oBAAiB;AAAA,MAClB,qBAAC,gBACA;AAAA,4BAAC,uBAAoB,QAAgB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG;AAAA,QAC3D;AAAA,UAAC;AAAA;AAAA,YACA;AAAA,YACA,OAAO,CAAC,cAAc,eAAe,UAAU;AAAA;AAAA,QAChD;AAAA,QACA,oBAAC,oBAAiB,QAAgB;AAAA,QAClC,oBAAC,mBAAgB,QAAgB;AAAA,SAClC;AAAA,MACA,oBAAC,oBAAiB;AAAA,MAClB,qBAAC,gBACA;AAAA,4BAAC,cAAW,QAAgB,MAAK,QAAO;AAAA,QACxC,oBAAC,cAAW,QAAgB,MAAK,UAAS;AAAA,QAC1C,oBAAC,cAAW,QAAgB,MAAK,UAAS;AAAA,QAC1C,oBAAC,cAAW,QAAgB,MAAK,QAAO;AAAA,QACxC,oBAAC,eAAY,QAAgB;AAAA,QAC7B,oBAAC,gBAAa,QAAgB;AAAA,SAC/B;AAAA,MACA,oBAAC,UAAO;AAAA,OACT;AAAA,IACA,oBAAC,iBAAc,WAAU,wBAAuB,QAAgB;AAAA,KACjE;AAEF;","names":[]}
1
+ {"version":3,"sources":["../src/notra-editor.tsx"],"sourcesContent":["'use client';\n\nimport { EditorContent } from '@tiptap/react';\n\nimport { BlockquoteButton } from './components/blockquote-button/blockquote-button.js';\nimport { CodeBlockButton } from './components/code-block-button/code-block-button.js';\nimport { HeadingDropdownMenu } from './components/heading-dropdown-menu/heading-dropdown-menu.js';\nimport { ImagePopover } from './components/image-popover/image-popover.js';\nimport { LinkPopover } from './components/link-popover/link-popover.js';\nimport { ListDropdownMenu } from './components/list-dropdown-menu/list-dropdown-menu.js';\nimport { MarkButton } from './components/mark-button/mark-button.js';\nimport { SlashDropdownMenu } from './components/slash-dropdown-menu/slash-dropdown-menu.js';\nimport {\n\tToolbar,\n\tToolbarGroup,\n\tToolbarSeparator\n} from './components/toolbar/toolbar.js';\nimport { Spacer } from './components/ui/spacer.js';\nimport { UndoRedoButton } from './components/undo-redo-button/undo-redo-button.js';\nimport { useMarkdownEditor } from './hooks/use-markdown-editor.js';\n\nexport interface NotraEditorProps {\n\t/** Markdown content (source of truth) */\n\tvalue: string;\n\t/** Called when content changes, receives updated Markdown */\n\tonChange: (value: string) => void;\n}\n\nexport function NotraEditor({ value, onChange }: NotraEditorProps) {\n\tconst { editor } = useMarkdownEditor({\n\t\tvalue,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<div className=\"notra notra-editor-wrapper\">\n\t\t\t<Toolbar variant=\"fixed\">\n\t\t\t\t<Spacer />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<UndoRedoButton action=\"undo\" editor={editor} />\n\t\t\t\t\t<UndoRedoButton action=\"redo\" editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarSeparator />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<HeadingDropdownMenu editor={editor} levels={[1, 2, 3, 4]} />\n\t\t\t\t\t<ListDropdownMenu\n\t\t\t\t\t\teditor={editor}\n\t\t\t\t\t\ttypes={['bulletList', 'orderedList', 'taskList']}\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockquoteButton editor={editor} />\n\t\t\t\t\t<CodeBlockButton editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<ToolbarSeparator />\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<MarkButton editor={editor} type=\"bold\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"italic\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"strike\" />\n\t\t\t\t\t<MarkButton editor={editor} type=\"code\" />\n\t\t\t\t\t<LinkPopover editor={editor} />\n\t\t\t\t\t<ImagePopover editor={editor} />\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t<Spacer />\n\t\t\t</Toolbar>\n\t\t\t<EditorContent className=\"notra-editor-content\" editor={editor} />\n\t\t\t<SlashDropdownMenu editor={editor} />\n\t\t</div>\n\t);\n}\n"],"mappings":";;;AAEA,SAAS,qBAAqB;AAE9B,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AACjC,SAAS,kBAAkB;AAC3B,SAAS,yBAAyB;AAClC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAkB9B,cACA,YADA;AATG,SAAS,YAAY,EAAE,OAAO,SAAS,GAAqB;AAClE,QAAM,EAAE,OAAO,IAAI,kBAAkB;AAAA,IACpC;AAAA,IACA;AAAA,EACD,CAAC;AAED,SACC,qBAAC,SAAI,WAAU,8BACd;AAAA,yBAAC,WAAQ,SAAQ,SAChB;AAAA,0BAAC,UAAO;AAAA,MACR,qBAAC,gBACA;AAAA,4BAAC,kBAAe,QAAO,QAAO,QAAgB;AAAA,QAC9C,oBAAC,kBAAe,QAAO,QAAO,QAAgB;AAAA,SAC/C;AAAA,MACA,oBAAC,oBAAiB;AAAA,MAClB,qBAAC,gBACA;AAAA,4BAAC,uBAAoB,QAAgB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG;AAAA,QAC3D;AAAA,UAAC;AAAA;AAAA,YACA;AAAA,YACA,OAAO,CAAC,cAAc,eAAe,UAAU;AAAA;AAAA,QAChD;AAAA,QACA,oBAAC,oBAAiB,QAAgB;AAAA,QAClC,oBAAC,mBAAgB,QAAgB;AAAA,SAClC;AAAA,MACA,oBAAC,oBAAiB;AAAA,MAClB,qBAAC,gBACA;AAAA,4BAAC,cAAW,QAAgB,MAAK,QAAO;AAAA,QACxC,oBAAC,cAAW,QAAgB,MAAK,UAAS;AAAA,QAC1C,oBAAC,cAAW,QAAgB,MAAK,UAAS;AAAA,QAC1C,oBAAC,cAAW,QAAgB,MAAK,QAAO;AAAA,QACxC,oBAAC,eAAY,QAAgB;AAAA,QAC7B,oBAAC,gBAAa,QAAgB;AAAA,SAC/B;AAAA,MACA,oBAAC,UAAO;AAAA,OACT;AAAA,IACA,oBAAC,iBAAc,WAAU,wBAAuB,QAAgB;AAAA,IAChE,oBAAC,qBAAkB,QAAgB;AAAA,KACpC;AAEF;","names":[]}
@@ -16,19 +16,21 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/notra-reader.tsx
19
21
  var notra_reader_exports = {};
20
22
  __export(notra_reader_exports, {
21
23
  NotraReader: () => NotraReader
22
24
  });
23
25
  module.exports = __toCommonJS(notra_reader_exports);
24
- var import_jsx_runtime = require("react/jsx-runtime");
25
26
  var import_react = require("@tiptap/static-renderer/pm/react");
26
- var import_code_block_shell = require("./components/code-block-view/code-block-shell");
27
- var import_extensions = require("./extensions");
28
- var import_code_block = require("./extensions/code-block");
29
- var import_highlight_code_to_html = require("./lib/highlight-code-to-html");
30
- var import_languages = require("./lib/languages");
31
- var import_markdown_to_json = require("./utils/markdown-to-json");
27
+ var import_code_block_shell = require("./components/code-block-view/code-block-shell.cjs");
28
+ var import_code_block = require("./extensions/code-block.cjs");
29
+ var import_extensions = require("./extensions/index.cjs");
30
+ var import_highlight_code_to_html = require("./lib/highlight-code-to-html.cjs");
31
+ var import_languages = require("./lib/languages.cjs");
32
+ var import_markdown_to_json = require("./utils/markdown-to-json.cjs");
33
+ var import_jsx_runtime = require("react/jsx-runtime");
32
34
  function NotraReader({
33
35
  content,
34
36
  lowlight = import_code_block.defaultLowlight
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/notra-reader.tsx"],"sourcesContent":["import { renderToReactElement } from '@tiptap/static-renderer/pm/react';\nimport { type createLowlight } from 'lowlight';\n\nimport { CodeBlockShell } from './components/code-block-view/code-block-shell';\nimport { sharedExtensions } from './extensions';\nimport { defaultLowlight } from './extensions/code-block';\nimport { highlightCodeToHtml } from './lib/highlight-code-to-html';\nimport { getLanguageLabel } from './lib/languages';\nimport { markdownToJSON } from './utils/markdown-to-json';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\nexport interface NotraReaderProps {\n\t/** Markdown content to render */\n\tcontent: string;\n\t/**\n\t * Optional lowlight instance for syntax highlighting. Defaults to the same\n\t * `defaultLowlight` (createLowlight(common)) used by `CodeBlockExtension`.\n\t * Pass a custom instance if you configured the editor with\n\t * `createCodeBlockExtension(myLowlight)` and want the reader to highlight\n\t * the same superset of languages.\n\t */\n\tlowlight?: Lowlight;\n}\n\nexport function NotraReader({\n\tcontent,\n\tlowlight = defaultLowlight\n}: NotraReaderProps) {\n\tconst json = markdownToJSON(content);\n\n\tconst rendered = renderToReactElement({\n\t\textensions: sharedExtensions,\n\t\tcontent: json,\n\t\toptions: {\n\t\t\tnodeMapping: {\n\t\t\t\tcodeBlock: ({ node }) => {\n\t\t\t\t\tconst language = (node.attrs.language as string) ?? '';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CodeBlockShell\n\t\t\t\t\t\t\tlanguageSlot={<span>{getLanguageLabel(language)}</span>}\n\t\t\t\t\t\t\tvalue={node.textContent}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<code\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t__html: highlightCodeToHtml(\n\t\t\t\t\t\t\t\t\t\tnode.textContent,\n\t\t\t\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\t\t\t\tlowlight\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"hljs\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</CodeBlockShell>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn <article className=\"notra notra-prose\">{rendered}</article>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAyCqB;AAzCrB,mBAAqC;AAGrC,8BAA+B;AAC/B,wBAAiC;AACjC,wBAAgC;AAChC,oCAAoC;AACpC,uBAAiC;AACjC,8BAA+B;AAiBxB,SAAS,YAAY;AAAA,EAC3B;AAAA,EACA,WAAW;AACZ,GAAqB;AACpB,QAAM,WAAO,wCAAe,OAAO;AAEnC,QAAM,eAAW,mCAAqB;AAAA,IACrC,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,MACR,aAAa;AAAA,QACZ,WAAW,CAAC,EAAE,KAAK,MAAM;AACxB,gBAAM,WAAY,KAAK,MAAM,YAAuB;AAEpD,iBACC;AAAA,YAAC;AAAA;AAAA,cACA,cAAc,4CAAC,UAAM,iDAAiB,QAAQ,GAAE;AAAA,cAChD,OAAO,KAAK;AAAA,cAEZ;AAAA,gBAAC;AAAA;AAAA,kBACA,yBAAyB;AAAA,oBACxB,YAAQ;AAAA,sBACP,KAAK;AAAA,sBACL;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA,WAAU;AAAA;AAAA,cACX;AAAA;AAAA,UACD;AAAA,QAEF;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAC;AAED,SAAO,4CAAC,aAAQ,WAAU,qBAAqB,oBAAS;AACzD;","names":[]}
1
+ {"version":3,"sources":["../src/notra-reader.tsx"],"sourcesContent":["import { renderToReactElement } from '@tiptap/static-renderer/pm/react';\nimport { type createLowlight } from 'lowlight';\n\nimport { CodeBlockShell } from './components/code-block-view/code-block-shell.js';\nimport { defaultLowlight } from './extensions/code-block.js';\nimport { sharedExtensions } from './extensions/index.js';\nimport { highlightCodeToHtml } from './lib/highlight-code-to-html.js';\nimport { getLanguageLabel } from './lib/languages.js';\nimport { markdownToJSON } from './utils/markdown-to-json.js';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\nexport interface NotraReaderProps {\n\t/** Markdown content to render */\n\tcontent: string;\n\t/**\n\t * Optional lowlight instance for syntax highlighting. Defaults to the same\n\t * `defaultLowlight` (createLowlight(common)) used by `CodeBlockExtension`.\n\t * Pass a custom instance if you configured the editor with\n\t * `createCodeBlockExtension(myLowlight)` and want the reader to highlight\n\t * the same superset of languages.\n\t */\n\tlowlight?: Lowlight;\n}\n\nexport function NotraReader({\n\tcontent,\n\tlowlight = defaultLowlight\n}: NotraReaderProps) {\n\tconst json = markdownToJSON(content);\n\n\tconst rendered = renderToReactElement({\n\t\textensions: sharedExtensions,\n\t\tcontent: json,\n\t\toptions: {\n\t\t\tnodeMapping: {\n\t\t\t\tcodeBlock: ({ node }) => {\n\t\t\t\t\tconst language = (node.attrs.language as string) ?? '';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CodeBlockShell\n\t\t\t\t\t\t\tlanguageSlot={<span>{getLanguageLabel(language)}</span>}\n\t\t\t\t\t\t\tvalue={node.textContent}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<code\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t__html: highlightCodeToHtml(\n\t\t\t\t\t\t\t\t\t\tnode.textContent,\n\t\t\t\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\t\t\t\tlowlight\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"hljs\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</CodeBlockShell>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn <article className=\"notra notra-prose\">{rendered}</article>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAqC;AAGrC,8BAA+B;AAC/B,wBAAgC;AAChC,wBAAiC;AACjC,oCAAoC;AACpC,uBAAiC;AACjC,8BAA+B;AAiCV;AAhBd,SAAS,YAAY;AAAA,EAC3B;AAAA,EACA,WAAW;AACZ,GAAqB;AACpB,QAAM,WAAO,wCAAe,OAAO;AAEnC,QAAM,eAAW,mCAAqB;AAAA,IACrC,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,MACR,aAAa;AAAA,QACZ,WAAW,CAAC,EAAE,KAAK,MAAM;AACxB,gBAAM,WAAY,KAAK,MAAM,YAAuB;AAEpD,iBACC;AAAA,YAAC;AAAA;AAAA,cACA,cAAc,4CAAC,UAAM,iDAAiB,QAAQ,GAAE;AAAA,cAChD,OAAO,KAAK;AAAA,cAEZ;AAAA,gBAAC;AAAA;AAAA,kBACA,yBAAyB;AAAA,oBACxB,YAAQ;AAAA,sBACP,KAAK;AAAA,sBACL;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA,WAAU;AAAA;AAAA,cACX;AAAA;AAAA,UACD;AAAA,QAEF;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAC;AAED,SAAO,4CAAC,aAAQ,WAAU,qBAAqB,oBAAS;AACzD;","names":[]}
@@ -1,11 +1,12 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ // src/notra-reader.tsx
2
2
  import { renderToReactElement } from "@tiptap/static-renderer/pm/react";
3
- import { CodeBlockShell } from "./components/code-block-view/code-block-shell";
4
- import { sharedExtensions } from "./extensions";
5
- import { defaultLowlight } from "./extensions/code-block";
6
- import { highlightCodeToHtml } from "./lib/highlight-code-to-html";
7
- import { getLanguageLabel } from "./lib/languages";
8
- import { markdownToJSON } from "./utils/markdown-to-json";
3
+ import { CodeBlockShell } from "./components/code-block-view/code-block-shell.mjs";
4
+ import { defaultLowlight } from "./extensions/code-block.mjs";
5
+ import { sharedExtensions } from "./extensions/index.mjs";
6
+ import { highlightCodeToHtml } from "./lib/highlight-code-to-html.mjs";
7
+ import { getLanguageLabel } from "./lib/languages.mjs";
8
+ import { markdownToJSON } from "./utils/markdown-to-json.mjs";
9
+ import { jsx } from "react/jsx-runtime";
9
10
  function NotraReader({
10
11
  content,
11
12
  lowlight = defaultLowlight
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/notra-reader.tsx"],"sourcesContent":["import { renderToReactElement } from '@tiptap/static-renderer/pm/react';\nimport { type createLowlight } from 'lowlight';\n\nimport { CodeBlockShell } from './components/code-block-view/code-block-shell';\nimport { sharedExtensions } from './extensions';\nimport { defaultLowlight } from './extensions/code-block';\nimport { highlightCodeToHtml } from './lib/highlight-code-to-html';\nimport { getLanguageLabel } from './lib/languages';\nimport { markdownToJSON } from './utils/markdown-to-json';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\nexport interface NotraReaderProps {\n\t/** Markdown content to render */\n\tcontent: string;\n\t/**\n\t * Optional lowlight instance for syntax highlighting. Defaults to the same\n\t * `defaultLowlight` (createLowlight(common)) used by `CodeBlockExtension`.\n\t * Pass a custom instance if you configured the editor with\n\t * `createCodeBlockExtension(myLowlight)` and want the reader to highlight\n\t * the same superset of languages.\n\t */\n\tlowlight?: Lowlight;\n}\n\nexport function NotraReader({\n\tcontent,\n\tlowlight = defaultLowlight\n}: NotraReaderProps) {\n\tconst json = markdownToJSON(content);\n\n\tconst rendered = renderToReactElement({\n\t\textensions: sharedExtensions,\n\t\tcontent: json,\n\t\toptions: {\n\t\t\tnodeMapping: {\n\t\t\t\tcodeBlock: ({ node }) => {\n\t\t\t\t\tconst language = (node.attrs.language as string) ?? '';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CodeBlockShell\n\t\t\t\t\t\t\tlanguageSlot={<span>{getLanguageLabel(language)}</span>}\n\t\t\t\t\t\t\tvalue={node.textContent}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<code\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t__html: highlightCodeToHtml(\n\t\t\t\t\t\t\t\t\t\tnode.textContent,\n\t\t\t\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\t\t\t\tlowlight\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"hljs\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</CodeBlockShell>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn <article className=\"notra notra-prose\">{rendered}</article>;\n}\n"],"mappings":"AAyCqB;AAzCrB,SAAS,4BAA4B;AAGrC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAiBxB,SAAS,YAAY;AAAA,EAC3B;AAAA,EACA,WAAW;AACZ,GAAqB;AACpB,QAAM,OAAO,eAAe,OAAO;AAEnC,QAAM,WAAW,qBAAqB;AAAA,IACrC,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,MACR,aAAa;AAAA,QACZ,WAAW,CAAC,EAAE,KAAK,MAAM;AACxB,gBAAM,WAAY,KAAK,MAAM,YAAuB;AAEpD,iBACC;AAAA,YAAC;AAAA;AAAA,cACA,cAAc,oBAAC,UAAM,2BAAiB,QAAQ,GAAE;AAAA,cAChD,OAAO,KAAK;AAAA,cAEZ;AAAA,gBAAC;AAAA;AAAA,kBACA,yBAAyB;AAAA,oBACxB,QAAQ;AAAA,sBACP,KAAK;AAAA,sBACL;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA,WAAU;AAAA;AAAA,cACX;AAAA;AAAA,UACD;AAAA,QAEF;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAC;AAED,SAAO,oBAAC,aAAQ,WAAU,qBAAqB,oBAAS;AACzD;","names":[]}
1
+ {"version":3,"sources":["../src/notra-reader.tsx"],"sourcesContent":["import { renderToReactElement } from '@tiptap/static-renderer/pm/react';\nimport { type createLowlight } from 'lowlight';\n\nimport { CodeBlockShell } from './components/code-block-view/code-block-shell.js';\nimport { defaultLowlight } from './extensions/code-block.js';\nimport { sharedExtensions } from './extensions/index.js';\nimport { highlightCodeToHtml } from './lib/highlight-code-to-html.js';\nimport { getLanguageLabel } from './lib/languages.js';\nimport { markdownToJSON } from './utils/markdown-to-json.js';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\nexport interface NotraReaderProps {\n\t/** Markdown content to render */\n\tcontent: string;\n\t/**\n\t * Optional lowlight instance for syntax highlighting. Defaults to the same\n\t * `defaultLowlight` (createLowlight(common)) used by `CodeBlockExtension`.\n\t * Pass a custom instance if you configured the editor with\n\t * `createCodeBlockExtension(myLowlight)` and want the reader to highlight\n\t * the same superset of languages.\n\t */\n\tlowlight?: Lowlight;\n}\n\nexport function NotraReader({\n\tcontent,\n\tlowlight = defaultLowlight\n}: NotraReaderProps) {\n\tconst json = markdownToJSON(content);\n\n\tconst rendered = renderToReactElement({\n\t\textensions: sharedExtensions,\n\t\tcontent: json,\n\t\toptions: {\n\t\t\tnodeMapping: {\n\t\t\t\tcodeBlock: ({ node }) => {\n\t\t\t\t\tconst language = (node.attrs.language as string) ?? '';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CodeBlockShell\n\t\t\t\t\t\t\tlanguageSlot={<span>{getLanguageLabel(language)}</span>}\n\t\t\t\t\t\t\tvalue={node.textContent}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<code\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t__html: highlightCodeToHtml(\n\t\t\t\t\t\t\t\t\t\tnode.textContent,\n\t\t\t\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\t\t\t\tlowlight\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"hljs\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</CodeBlockShell>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn <article className=\"notra notra-prose\">{rendered}</article>;\n}\n"],"mappings":";AAAA,SAAS,4BAA4B;AAGrC,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAiCV;AAhBd,SAAS,YAAY;AAAA,EAC3B;AAAA,EACA,WAAW;AACZ,GAAqB;AACpB,QAAM,OAAO,eAAe,OAAO;AAEnC,QAAM,WAAW,qBAAqB;AAAA,IACrC,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,MACR,aAAa;AAAA,QACZ,WAAW,CAAC,EAAE,KAAK,MAAM;AACxB,gBAAM,WAAY,KAAK,MAAM,YAAuB;AAEpD,iBACC;AAAA,YAAC;AAAA;AAAA,cACA,cAAc,oBAAC,UAAM,2BAAiB,QAAQ,GAAE;AAAA,cAChD,OAAO,KAAK;AAAA,cAEZ;AAAA,gBAAC;AAAA;AAAA,kBACA,yBAAyB;AAAA,oBACxB,QAAQ;AAAA,sBACP,KAAK;AAAA,sBACL;AAAA,sBACA;AAAA,oBACD;AAAA,kBACD;AAAA,kBACA,WAAU;AAAA;AAAA,cACX;AAAA;AAAA,UACD;AAAA,QAEF;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAC;AAED,SAAO,oBAAC,aAAQ,WAAU,qBAAqB,oBAAS;AACzD;","names":[]}
@@ -396,6 +396,9 @@
396
396
  .nt\:flex-col-reverse {
397
397
  flex-direction: column-reverse;
398
398
  }
399
+ .nt\:flex-row {
400
+ flex-direction: row;
401
+ }
399
402
  .nt\:items-center {
400
403
  align-items: center;
401
404
  }
@@ -608,6 +611,9 @@
608
611
  .nt\:text-center {
609
612
  text-align: center;
610
613
  }
614
+ .nt\:text-left {
615
+ text-align: left;
616
+ }
611
617
  .nt\:font-heading {
612
618
  font-family: var(--font-sans);
613
619
  }