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
@@ -3104,3 +3104,53 @@
3104
3104
  text-overflow: clip;
3105
3105
  overflow: visible;
3106
3106
  }
3107
+
3108
+ /* Slash command — decoration in the document while the menu is open */
3109
+ .notra-slash-decoration {
3110
+ color: var(--tt-gray-light-a-400);
3111
+ }
3112
+ .notra-slash-decoration::after {
3113
+ content: attr(data-decoration-content);
3114
+ color: var(--tt-gray-light-a-400);
3115
+ opacity: 0.7;
3116
+ margin-left: 0.125rem;
3117
+ }
3118
+
3119
+ :root.dark .notra-slash-decoration,
3120
+ .dark .notra-slash-decoration {
3121
+ color: var(--tt-gray-dark-a-400);
3122
+ }
3123
+ :root.dark .notra-slash-decoration::after,
3124
+ .dark .notra-slash-decoration::after {
3125
+ color: var(--tt-gray-dark-a-400);
3126
+ }
3127
+
3128
+ /* Slash command / suggestion menu — floating dropdown */
3129
+ .notra-suggestion-menu {
3130
+ background: var(--tt-popover-bg-color, var(--white));
3131
+ border: 1px solid var(--tt-popover-border-color, var(--tt-gray-light-a-100));
3132
+ border-radius: 0.5rem;
3133
+ box-shadow: var(--tt-shadow-elevated-md);
3134
+ max-height: var(--suggestion-menu-max-height, 384px);
3135
+ overflow-y: auto;
3136
+ padding: 0.25rem;
3137
+ min-width: 16rem;
3138
+ }
3139
+
3140
+ .notra-slash-card {
3141
+ display: flex;
3142
+ flex-direction: column;
3143
+ gap: 0.125rem;
3144
+ }
3145
+
3146
+ .notra-slash-group-label {
3147
+ font-size: 0.75rem;
3148
+ font-weight: 500;
3149
+ color: var(--tt-gray-light-a-600);
3150
+ padding: 0.375rem 0.5rem 0.125rem;
3151
+ }
3152
+
3153
+ :root.dark .notra-slash-group-label,
3154
+ .dark .notra-slash-group-label {
3155
+ color: var(--tt-gray-dark-a-600);
3156
+ }
@@ -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/utils/markdown-to-json.ts
19
21
  var markdown_to_json_exports = {};
20
22
  __export(markdown_to_json_exports, {
21
23
  markdownToJSON: () => markdownToJSON
@@ -23,12 +25,12 @@ __export(markdown_to_json_exports, {
23
25
  module.exports = __toCommonJS(markdown_to_json_exports);
24
26
  var import_core = require("@tiptap/core");
25
27
  var import_tiptap_markdown = require("tiptap-markdown");
26
- var import_extensions = require("../extensions");
27
- const parserExtensions = [
28
+ var import_extensions = require("../extensions/index.cjs");
29
+ var parserExtensions = [
28
30
  ...import_extensions.sharedExtensions,
29
31
  import_tiptap_markdown.Markdown.configure({ html: false })
30
32
  ];
31
- let parserEditor = null;
33
+ var parserEditor = null;
32
34
  function getParserEditor() {
33
35
  if (!parserEditor) {
34
36
  parserEditor = new import_core.Editor({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/markdown-to-json.ts"],"sourcesContent":["import { Editor } from '@tiptap/core';\nimport { Markdown } from 'tiptap-markdown';\n\nimport { sharedExtensions } from '../extensions';\n\n// Parser needs shared content model + Markdown for markdown→JSON conversion\n// No clipboard features needed (transformPastedText/transformCopiedText are editor-only)\nconst parserExtensions = [\n\t...sharedExtensions,\n\tMarkdown.configure({ html: false })\n];\n\nlet parserEditor: Editor | null = null;\n\nfunction getParserEditor(): Editor {\n\tif (!parserEditor) {\n\t\tparserEditor = new Editor({\n\t\t\textensions: parserExtensions,\n\t\t\tcontent: ''\n\t\t});\n\t}\n\n\treturn parserEditor;\n}\n\n/**\n * Convert a Markdown string to Tiptap-compatible JSON (ProseMirror document).\n * Uses a singleton headless Tiptap editor for parsing.\n */\nexport function markdownToJSON(markdown: string): Record<string, unknown> {\n\tconst editor = getParserEditor();\n\n\teditor.commands.setContent(markdown);\n\n\treturn editor.getJSON() as Record<string, unknown>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAuB;AACvB,6BAAyB;AAEzB,wBAAiC;AAIjC,MAAM,mBAAmB;AAAA,EACxB,GAAG;AAAA,EACH,gCAAS,UAAU,EAAE,MAAM,MAAM,CAAC;AACnC;AAEA,IAAI,eAA8B;AAElC,SAAS,kBAA0B;AAClC,MAAI,CAAC,cAAc;AAClB,mBAAe,IAAI,mBAAO;AAAA,MACzB,YAAY;AAAA,MACZ,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAEA,SAAO;AACR;AAMO,SAAS,eAAe,UAA2C;AACzE,QAAM,SAAS,gBAAgB;AAE/B,SAAO,SAAS,WAAW,QAAQ;AAEnC,SAAO,OAAO,QAAQ;AACvB;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/markdown-to-json.ts"],"sourcesContent":["import { Editor } from '@tiptap/core';\nimport { Markdown } from 'tiptap-markdown';\n\nimport { sharedExtensions } from '../extensions/index.js';\n\n// Parser needs shared content model + Markdown for markdown→JSON conversion\n// No clipboard features needed (transformPastedText/transformCopiedText are editor-only)\nconst parserExtensions = [\n\t...sharedExtensions,\n\tMarkdown.configure({ html: false })\n];\n\nlet parserEditor: Editor | null = null;\n\nfunction getParserEditor(): Editor {\n\tif (!parserEditor) {\n\t\tparserEditor = new Editor({\n\t\t\textensions: parserExtensions,\n\t\t\tcontent: ''\n\t\t});\n\t}\n\n\treturn parserEditor;\n}\n\n/**\n * Convert a Markdown string to Tiptap-compatible JSON (ProseMirror document).\n * Uses a singleton headless Tiptap editor for parsing.\n */\nexport function markdownToJSON(markdown: string): Record<string, unknown> {\n\tconst editor = getParserEditor();\n\n\teditor.commands.setContent(markdown);\n\n\treturn editor.getJSON() as Record<string, unknown>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAuB;AACvB,6BAAyB;AAEzB,wBAAiC;AAIjC,IAAM,mBAAmB;AAAA,EACxB,GAAG;AAAA,EACH,gCAAS,UAAU,EAAE,MAAM,MAAM,CAAC;AACnC;AAEA,IAAI,eAA8B;AAElC,SAAS,kBAA0B;AAClC,MAAI,CAAC,cAAc;AAClB,mBAAe,IAAI,mBAAO;AAAA,MACzB,YAAY;AAAA,MACZ,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAEA,SAAO;AACR;AAMO,SAAS,eAAe,UAA2C;AACzE,QAAM,SAAS,gBAAgB;AAE/B,SAAO,SAAS,WAAW,QAAQ;AAEnC,SAAO,OAAO,QAAQ;AACvB;","names":[]}
@@ -1,11 +1,12 @@
1
+ // src/utils/markdown-to-json.ts
1
2
  import { Editor } from "@tiptap/core";
2
3
  import { Markdown } from "tiptap-markdown";
3
- import { sharedExtensions } from "../extensions";
4
- const parserExtensions = [
4
+ import { sharedExtensions } from "../extensions/index.mjs";
5
+ var parserExtensions = [
5
6
  ...sharedExtensions,
6
7
  Markdown.configure({ html: false })
7
8
  ];
8
- let parserEditor = null;
9
+ var parserEditor = null;
9
10
  function getParserEditor() {
10
11
  if (!parserEditor) {
11
12
  parserEditor = new Editor({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/markdown-to-json.ts"],"sourcesContent":["import { Editor } from '@tiptap/core';\nimport { Markdown } from 'tiptap-markdown';\n\nimport { sharedExtensions } from '../extensions';\n\n// Parser needs shared content model + Markdown for markdown→JSON conversion\n// No clipboard features needed (transformPastedText/transformCopiedText are editor-only)\nconst parserExtensions = [\n\t...sharedExtensions,\n\tMarkdown.configure({ html: false })\n];\n\nlet parserEditor: Editor | null = null;\n\nfunction getParserEditor(): Editor {\n\tif (!parserEditor) {\n\t\tparserEditor = new Editor({\n\t\t\textensions: parserExtensions,\n\t\t\tcontent: ''\n\t\t});\n\t}\n\n\treturn parserEditor;\n}\n\n/**\n * Convert a Markdown string to Tiptap-compatible JSON (ProseMirror document).\n * Uses a singleton headless Tiptap editor for parsing.\n */\nexport function markdownToJSON(markdown: string): Record<string, unknown> {\n\tconst editor = getParserEditor();\n\n\teditor.commands.setContent(markdown);\n\n\treturn editor.getJSON() as Record<string, unknown>;\n}\n"],"mappings":"AAAA,SAAS,cAAc;AACvB,SAAS,gBAAgB;AAEzB,SAAS,wBAAwB;AAIjC,MAAM,mBAAmB;AAAA,EACxB,GAAG;AAAA,EACH,SAAS,UAAU,EAAE,MAAM,MAAM,CAAC;AACnC;AAEA,IAAI,eAA8B;AAElC,SAAS,kBAA0B;AAClC,MAAI,CAAC,cAAc;AAClB,mBAAe,IAAI,OAAO;AAAA,MACzB,YAAY;AAAA,MACZ,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAEA,SAAO;AACR;AAMO,SAAS,eAAe,UAA2C;AACzE,QAAM,SAAS,gBAAgB;AAE/B,SAAO,SAAS,WAAW,QAAQ;AAEnC,SAAO,OAAO,QAAQ;AACvB;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/markdown-to-json.ts"],"sourcesContent":["import { Editor } from '@tiptap/core';\nimport { Markdown } from 'tiptap-markdown';\n\nimport { sharedExtensions } from '../extensions/index.js';\n\n// Parser needs shared content model + Markdown for markdown→JSON conversion\n// No clipboard features needed (transformPastedText/transformCopiedText are editor-only)\nconst parserExtensions = [\n\t...sharedExtensions,\n\tMarkdown.configure({ html: false })\n];\n\nlet parserEditor: Editor | null = null;\n\nfunction getParserEditor(): Editor {\n\tif (!parserEditor) {\n\t\tparserEditor = new Editor({\n\t\t\textensions: parserExtensions,\n\t\t\tcontent: ''\n\t\t});\n\t}\n\n\treturn parserEditor;\n}\n\n/**\n * Convert a Markdown string to Tiptap-compatible JSON (ProseMirror document).\n * Uses a singleton headless Tiptap editor for parsing.\n */\nexport function markdownToJSON(markdown: string): Record<string, unknown> {\n\tconst editor = getParserEditor();\n\n\teditor.commands.setContent(markdown);\n\n\treturn editor.getJSON() as Record<string, unknown>;\n}\n"],"mappings":";AAAA,SAAS,cAAc;AACvB,SAAS,gBAAgB;AAEzB,SAAS,wBAAwB;AAIjC,IAAM,mBAAmB;AAAA,EACxB,GAAG;AAAA,EACH,SAAS,UAAU,EAAE,MAAM,MAAM,CAAC;AACnC;AAEA,IAAI,eAA8B;AAElC,SAAS,kBAA0B;AAClC,MAAI,CAAC,cAAc;AAClB,mBAAe,IAAI,OAAO;AAAA,MACzB,YAAY;AAAA,MACZ,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAEA,SAAO;AACR;AAMO,SAAS,eAAe,UAA2C;AACzE,QAAM,SAAS,gBAAgB;AAE/B,SAAO,SAAS,WAAW,QAAQ;AAEnC,SAAO,OAAO,QAAQ;AACvB;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "notra-editor",
3
3
  "type": "module",
4
- "version": "0.8.0",
4
+ "version": "0.8.2",
5
5
  "description": "A Markdown-first rich text editor for React",
6
6
  "license": "MIT",
7
7
  "keywords": [
@@ -38,6 +38,7 @@
38
38
  "react-dom": "^19.0.0"
39
39
  },
40
40
  "dependencies": {
41
+ "@floating-ui/react": "^0.27.0",
41
42
  "@radix-ui/react-slot": "^1.2.4",
42
43
  "@tiptap/core": "^3.22.4",
43
44
  "@tiptap/extension-code-block": "^3.22.4",
@@ -49,6 +50,7 @@
49
50
  "@tiptap/react": "^3.22.4",
50
51
  "@tiptap/starter-kit": "^3.22.4",
51
52
  "@tiptap/static-renderer": "^3.22.4",
53
+ "@tiptap/suggestion": "^3.22.4",
52
54
  "class-variance-authority": "^0.7.1",
53
55
  "clsx": "^2.1.1",
54
56
  "cmdk": "^1.1.1",
@@ -65,6 +67,7 @@
65
67
  "@testing-library/react": "^16.3.0",
66
68
  "@types/react": "19.2.2",
67
69
  "@types/react-dom": "19.2.2",
70
+ "esbuild": "^0.28.0",
68
71
  "jsdom": "^26.1.0",
69
72
  "postcss": "^8.5.10",
70
73
  "postcss-cli": "^11.0.1",