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
@@ -17,20 +17,22 @@ 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/components/blockquote-button/blockquote-button.tsx
20
22
  var blockquote_button_exports = {};
21
23
  __export(blockquote_button_exports, {
22
24
  BlockquoteButton: () => BlockquoteButton
23
25
  });
24
26
  module.exports = __toCommonJS(blockquote_button_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
27
  var import_lucide_react = require("lucide-react");
27
28
  var import_react = require("react");
28
- var import_button = require("../ui/button");
29
+ var import_button = require("../ui/button.cjs");
30
+ var import_jsx_runtime = require("react/jsx-runtime");
29
31
  function canToggleBlockquote(editor) {
30
32
  if (!editor || !editor.isEditable) return false;
31
33
  return editor.can().toggleWrap("blockquote") || editor.can().clearNodes();
32
34
  }
33
- const BlockquoteButton = (0, import_react.forwardRef)(({ editor, onClick, ...buttonProps }, ref) => {
35
+ var BlockquoteButton = (0, import_react.forwardRef)(({ editor, onClick, ...buttonProps }, ref) => {
34
36
  const [isActive, setIsActive] = (0, import_react.useState)(false);
35
37
  const [canToggle, setCanToggle] = (0, import_react.useState)(false);
36
38
  (0, import_react.useEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/blockquote-button/blockquote-button.tsx"],"sourcesContent":["'use client';\n\nimport { TextQuote } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '../ui/button';\n\nimport type { Editor } from '@tiptap/core';\n\nexport interface BlockquoteButtonProps extends Omit<\n\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t'type'\n> {\n\teditor: Editor | null;\n}\n\nfunction canToggleBlockquote(editor: Editor | null): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn editor.can().toggleWrap('blockquote') || editor.can().clearNodes();\n}\n\nexport const BlockquoteButton = forwardRef<\n\tHTMLButtonElement,\n\tBlockquoteButtonProps\n>(({ editor, onClick, ...buttonProps }, ref) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst [canToggle, setCanToggle] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst update = () => {\n\t\t\tsetIsActive(editor.isActive('blockquote'));\n\t\t\tsetCanToggle(canToggleBlockquote(editor));\n\t\t};\n\n\t\tupdate();\n\n\t\teditor.on('selectionUpdate', update);\n\t\teditor.on('transaction', update);\n\n\t\treturn () => {\n\t\t\teditor.off('selectionUpdate', update);\n\t\t\teditor.off('transaction', update);\n\t\t};\n\t}, [editor]);\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tonClick?.(event);\n\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (!editor) return;\n\n\t\t\tif (editor.isActive('blockquote')) {\n\t\t\t\teditor.chain().focus().lift('blockquote').run();\n\t\t\t} else {\n\t\t\t\t// clearNodes first to convert any block type to paragraph,\n\t\t\t\t// then wrap in blockquote\n\t\t\t\teditor.chain().focus().clearNodes().wrapIn('blockquote').run();\n\t\t\t}\n\t\t},\n\t\t[editor, onClick]\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\taria-label=\"Blockquote\"\n\t\t\taria-pressed={isActive}\n\t\t\tdata-active-state={isActive ? 'on' : 'off'}\n\t\t\tdisabled={!canToggle}\n\t\t\tsize=\"icon\"\n\t\t\ttabIndex={-1}\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={handleClick}\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t<TextQuote\n\t\t\t\tclassName={isActive ? 'nt:text-[var(--tt-brand-color-500)]' : undefined}\n\t\t\t/>\n\t\t</Button>\n\t);\n});\n\nBlockquoteButton.displayName = 'BlockquoteButton';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiFG;AA/EH,0BAA0B;AAC1B,mBAA6D;AAE7D,oBAAuB;AAWvB,SAAS,oBAAoB,QAAgC;AAC5D,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SAAO,OAAO,IAAI,EAAE,WAAW,YAAY,KAAK,OAAO,IAAI,EAAE,WAAW;AACzE;AAEO,MAAM,uBAAmB,yBAG9B,CAAC,EAAE,QAAQ,SAAS,GAAG,YAAY,GAAG,QAAQ;AAC/C,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,KAAK;AAEhD,8BAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,MAAM;AACpB,kBAAY,OAAO,SAAS,YAAY,CAAC;AACzC,mBAAa,oBAAoB,MAAM,CAAC;AAAA,IACzC;AAEA,WAAO;AAEP,WAAO,GAAG,mBAAmB,MAAM;AACnC,WAAO,GAAG,eAAe,MAAM;AAE/B,WAAO,MAAM;AACZ,aAAO,IAAI,mBAAmB,MAAM;AACpC,aAAO,IAAI,eAAe,MAAM;AAAA,IACjC;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,kBAAc;AAAA,IACnB,CAAC,UAA+C;AAC/C,gBAAU,KAAK;AAEf,UAAI,MAAM,iBAAkB;AAE5B,UAAI,CAAC,OAAQ;AAEb,UAAI,OAAO,SAAS,YAAY,GAAG;AAClC,eAAO,MAAM,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,IAAI;AAAA,MAC/C,OAAO;AAGN,eAAO,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,YAAY,EAAE,IAAI;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,qBAAmB,WAAW,OAAO;AAAA,MACrC,UAAU,CAAC;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAW,wCAAwC;AAAA;AAAA,MAC/D;AAAA;AAAA,EACD;AAEF,CAAC;AAED,iBAAiB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/blockquote-button/blockquote-button.tsx"],"sourcesContent":["'use client';\n\nimport { TextQuote } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '../ui/button.js';\n\nimport type { Editor } from '@tiptap/core';\n\nexport interface BlockquoteButtonProps extends Omit<\n\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t'type'\n> {\n\teditor: Editor | null;\n}\n\nfunction canToggleBlockquote(editor: Editor | null): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn editor.can().toggleWrap('blockquote') || editor.can().clearNodes();\n}\n\nexport const BlockquoteButton = forwardRef<\n\tHTMLButtonElement,\n\tBlockquoteButtonProps\n>(({ editor, onClick, ...buttonProps }, ref) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst [canToggle, setCanToggle] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst update = () => {\n\t\t\tsetIsActive(editor.isActive('blockquote'));\n\t\t\tsetCanToggle(canToggleBlockquote(editor));\n\t\t};\n\n\t\tupdate();\n\n\t\teditor.on('selectionUpdate', update);\n\t\teditor.on('transaction', update);\n\n\t\treturn () => {\n\t\t\teditor.off('selectionUpdate', update);\n\t\t\teditor.off('transaction', update);\n\t\t};\n\t}, [editor]);\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tonClick?.(event);\n\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (!editor) return;\n\n\t\t\tif (editor.isActive('blockquote')) {\n\t\t\t\teditor.chain().focus().lift('blockquote').run();\n\t\t\t} else {\n\t\t\t\t// clearNodes first to convert any block type to paragraph,\n\t\t\t\t// then wrap in blockquote\n\t\t\t\teditor.chain().focus().clearNodes().wrapIn('blockquote').run();\n\t\t\t}\n\t\t},\n\t\t[editor, onClick]\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\taria-label=\"Blockquote\"\n\t\t\taria-pressed={isActive}\n\t\t\tdata-active-state={isActive ? 'on' : 'off'}\n\t\t\tdisabled={!canToggle}\n\t\t\tsize=\"icon\"\n\t\t\ttabIndex={-1}\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={handleClick}\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t<TextQuote\n\t\t\t\tclassName={isActive ? 'nt:text-[var(--tt-brand-color-500)]' : undefined}\n\t\t\t/>\n\t\t</Button>\n\t);\n});\n\nBlockquoteButton.displayName = 'BlockquoteButton';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA0B;AAC1B,mBAA6D;AAE7D,oBAAuB;AA4EpB;AAjEH,SAAS,oBAAoB,QAAgC;AAC5D,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SAAO,OAAO,IAAI,EAAE,WAAW,YAAY,KAAK,OAAO,IAAI,EAAE,WAAW;AACzE;AAEO,IAAM,uBAAmB,yBAG9B,CAAC,EAAE,QAAQ,SAAS,GAAG,YAAY,GAAG,QAAQ;AAC/C,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,KAAK;AAEhD,8BAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,MAAM;AACpB,kBAAY,OAAO,SAAS,YAAY,CAAC;AACzC,mBAAa,oBAAoB,MAAM,CAAC;AAAA,IACzC;AAEA,WAAO;AAEP,WAAO,GAAG,mBAAmB,MAAM;AACnC,WAAO,GAAG,eAAe,MAAM;AAE/B,WAAO,MAAM;AACZ,aAAO,IAAI,mBAAmB,MAAM;AACpC,aAAO,IAAI,eAAe,MAAM;AAAA,IACjC;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,kBAAc;AAAA,IACnB,CAAC,UAA+C;AAC/C,gBAAU,KAAK;AAEf,UAAI,MAAM,iBAAkB;AAE5B,UAAI,CAAC,OAAQ;AAEb,UAAI,OAAO,SAAS,YAAY,GAAG;AAClC,eAAO,MAAM,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,IAAI;AAAA,MAC/C,OAAO;AAGN,eAAO,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,YAAY,EAAE,IAAI;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,qBAAmB,WAAW,OAAO;AAAA,MACrC,UAAU,CAAC;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAW,wCAAwC;AAAA;AAAA,MAC/D;AAAA;AAAA,EACD;AAEF,CAAC;AAED,iBAAiB,cAAc;","names":[]}
@@ -1,13 +1,15 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
2
+
3
+ // src/components/blockquote-button/blockquote-button.tsx
3
4
  import { TextQuote } from "lucide-react";
4
5
  import { forwardRef, useCallback, useEffect, useState } from "react";
5
- import { Button } from "../ui/button";
6
+ import { Button } from "../ui/button.mjs";
7
+ import { jsx } from "react/jsx-runtime";
6
8
  function canToggleBlockquote(editor) {
7
9
  if (!editor || !editor.isEditable) return false;
8
10
  return editor.can().toggleWrap("blockquote") || editor.can().clearNodes();
9
11
  }
10
- const BlockquoteButton = forwardRef(({ editor, onClick, ...buttonProps }, ref) => {
12
+ var BlockquoteButton = forwardRef(({ editor, onClick, ...buttonProps }, ref) => {
11
13
  const [isActive, setIsActive] = useState(false);
12
14
  const [canToggle, setCanToggle] = useState(false);
13
15
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/blockquote-button/blockquote-button.tsx"],"sourcesContent":["'use client';\n\nimport { TextQuote } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '../ui/button';\n\nimport type { Editor } from '@tiptap/core';\n\nexport interface BlockquoteButtonProps extends Omit<\n\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t'type'\n> {\n\teditor: Editor | null;\n}\n\nfunction canToggleBlockquote(editor: Editor | null): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn editor.can().toggleWrap('blockquote') || editor.can().clearNodes();\n}\n\nexport const BlockquoteButton = forwardRef<\n\tHTMLButtonElement,\n\tBlockquoteButtonProps\n>(({ editor, onClick, ...buttonProps }, ref) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst [canToggle, setCanToggle] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst update = () => {\n\t\t\tsetIsActive(editor.isActive('blockquote'));\n\t\t\tsetCanToggle(canToggleBlockquote(editor));\n\t\t};\n\n\t\tupdate();\n\n\t\teditor.on('selectionUpdate', update);\n\t\teditor.on('transaction', update);\n\n\t\treturn () => {\n\t\t\teditor.off('selectionUpdate', update);\n\t\t\teditor.off('transaction', update);\n\t\t};\n\t}, [editor]);\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tonClick?.(event);\n\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (!editor) return;\n\n\t\t\tif (editor.isActive('blockquote')) {\n\t\t\t\teditor.chain().focus().lift('blockquote').run();\n\t\t\t} else {\n\t\t\t\t// clearNodes first to convert any block type to paragraph,\n\t\t\t\t// then wrap in blockquote\n\t\t\t\teditor.chain().focus().clearNodes().wrapIn('blockquote').run();\n\t\t\t}\n\t\t},\n\t\t[editor, onClick]\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\taria-label=\"Blockquote\"\n\t\t\taria-pressed={isActive}\n\t\t\tdata-active-state={isActive ? 'on' : 'off'}\n\t\t\tdisabled={!canToggle}\n\t\t\tsize=\"icon\"\n\t\t\ttabIndex={-1}\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={handleClick}\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t<TextQuote\n\t\t\t\tclassName={isActive ? 'nt:text-[var(--tt-brand-color-500)]' : undefined}\n\t\t\t/>\n\t\t</Button>\n\t);\n});\n\nBlockquoteButton.displayName = 'BlockquoteButton';\n"],"mappings":";AAiFG;AA/EH,SAAS,iBAAiB;AAC1B,SAAS,YAAY,aAAa,WAAW,gBAAgB;AAE7D,SAAS,cAAc;AAWvB,SAAS,oBAAoB,QAAgC;AAC5D,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SAAO,OAAO,IAAI,EAAE,WAAW,YAAY,KAAK,OAAO,IAAI,EAAE,WAAW;AACzE;AAEO,MAAM,mBAAmB,WAG9B,CAAC,EAAE,QAAQ,SAAS,GAAG,YAAY,GAAG,QAAQ;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,YAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,MAAM;AACpB,kBAAY,OAAO,SAAS,YAAY,CAAC;AACzC,mBAAa,oBAAoB,MAAM,CAAC;AAAA,IACzC;AAEA,WAAO;AAEP,WAAO,GAAG,mBAAmB,MAAM;AACnC,WAAO,GAAG,eAAe,MAAM;AAE/B,WAAO,MAAM;AACZ,aAAO,IAAI,mBAAmB,MAAM;AACpC,aAAO,IAAI,eAAe,MAAM;AAAA,IACjC;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,cAAc;AAAA,IACnB,CAAC,UAA+C;AAC/C,gBAAU,KAAK;AAEf,UAAI,MAAM,iBAAkB;AAE5B,UAAI,CAAC,OAAQ;AAEb,UAAI,OAAO,SAAS,YAAY,GAAG;AAClC,eAAO,MAAM,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,IAAI;AAAA,MAC/C,OAAO;AAGN,eAAO,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,YAAY,EAAE,IAAI;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,qBAAmB,WAAW,OAAO;AAAA,MACrC,UAAU,CAAC;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAW,wCAAwC;AAAA;AAAA,MAC/D;AAAA;AAAA,EACD;AAEF,CAAC;AAED,iBAAiB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/blockquote-button/blockquote-button.tsx"],"sourcesContent":["'use client';\n\nimport { TextQuote } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '../ui/button.js';\n\nimport type { Editor } from '@tiptap/core';\n\nexport interface BlockquoteButtonProps extends Omit<\n\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t'type'\n> {\n\teditor: Editor | null;\n}\n\nfunction canToggleBlockquote(editor: Editor | null): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn editor.can().toggleWrap('blockquote') || editor.can().clearNodes();\n}\n\nexport const BlockquoteButton = forwardRef<\n\tHTMLButtonElement,\n\tBlockquoteButtonProps\n>(({ editor, onClick, ...buttonProps }, ref) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst [canToggle, setCanToggle] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst update = () => {\n\t\t\tsetIsActive(editor.isActive('blockquote'));\n\t\t\tsetCanToggle(canToggleBlockquote(editor));\n\t\t};\n\n\t\tupdate();\n\n\t\teditor.on('selectionUpdate', update);\n\t\teditor.on('transaction', update);\n\n\t\treturn () => {\n\t\t\teditor.off('selectionUpdate', update);\n\t\t\teditor.off('transaction', update);\n\t\t};\n\t}, [editor]);\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tonClick?.(event);\n\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (!editor) return;\n\n\t\t\tif (editor.isActive('blockquote')) {\n\t\t\t\teditor.chain().focus().lift('blockquote').run();\n\t\t\t} else {\n\t\t\t\t// clearNodes first to convert any block type to paragraph,\n\t\t\t\t// then wrap in blockquote\n\t\t\t\teditor.chain().focus().clearNodes().wrapIn('blockquote').run();\n\t\t\t}\n\t\t},\n\t\t[editor, onClick]\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\taria-label=\"Blockquote\"\n\t\t\taria-pressed={isActive}\n\t\t\tdata-active-state={isActive ? 'on' : 'off'}\n\t\t\tdisabled={!canToggle}\n\t\t\tsize=\"icon\"\n\t\t\ttabIndex={-1}\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={handleClick}\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t<TextQuote\n\t\t\t\tclassName={isActive ? 'nt:text-[var(--tt-brand-color-500)]' : undefined}\n\t\t\t/>\n\t\t</Button>\n\t);\n});\n\nBlockquoteButton.displayName = 'BlockquoteButton';\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAAS,YAAY,aAAa,WAAW,gBAAgB;AAE7D,SAAS,cAAc;AA4EpB;AAjEH,SAAS,oBAAoB,QAAgC;AAC5D,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SAAO,OAAO,IAAI,EAAE,WAAW,YAAY,KAAK,OAAO,IAAI,EAAE,WAAW;AACzE;AAEO,IAAM,mBAAmB,WAG9B,CAAC,EAAE,QAAQ,SAAS,GAAG,YAAY,GAAG,QAAQ;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,YAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,MAAM;AACpB,kBAAY,OAAO,SAAS,YAAY,CAAC;AACzC,mBAAa,oBAAoB,MAAM,CAAC;AAAA,IACzC;AAEA,WAAO;AAEP,WAAO,GAAG,mBAAmB,MAAM;AACnC,WAAO,GAAG,eAAe,MAAM;AAE/B,WAAO,MAAM;AACZ,aAAO,IAAI,mBAAmB,MAAM;AACpC,aAAO,IAAI,eAAe,MAAM;AAAA,IACjC;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,cAAc;AAAA,IACnB,CAAC,UAA+C;AAC/C,gBAAU,KAAK;AAEf,UAAI,MAAM,iBAAkB;AAE5B,UAAI,CAAC,OAAQ;AAEb,UAAI,OAAO,SAAS,YAAY,GAAG;AAClC,eAAO,MAAM,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,IAAI;AAAA,MAC/C,OAAO;AAGN,eAAO,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,YAAY,EAAE,IAAI;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,qBAAmB,WAAW,OAAO;AAAA,MACrC,UAAU,CAAC;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAW,wCAAwC;AAAA;AAAA,MAC/D;AAAA;AAAA,EACD;AAEF,CAAC;AAED,iBAAiB,cAAc;","names":[]}
@@ -17,20 +17,22 @@ 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/components/code-block-button/code-block-button.tsx
20
22
  var code_block_button_exports = {};
21
23
  __export(code_block_button_exports, {
22
24
  CodeBlockButton: () => CodeBlockButton
23
25
  });
24
26
  module.exports = __toCommonJS(code_block_button_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
27
  var import_lucide_react = require("lucide-react");
27
28
  var import_react = require("react");
28
- var import_button = require("../ui/button");
29
+ var import_button = require("../ui/button.cjs");
30
+ var import_jsx_runtime = require("react/jsx-runtime");
29
31
  function canToggleCodeBlock(editor) {
30
32
  if (!editor || !editor.isEditable) return false;
31
33
  return editor.can().toggleNode("codeBlock", "paragraph") || editor.can().clearNodes();
32
34
  }
33
- const CodeBlockButton = (0, import_react.forwardRef)(({ editor, onClick, ...buttonProps }, ref) => {
35
+ var CodeBlockButton = (0, import_react.forwardRef)(({ editor, onClick, ...buttonProps }, ref) => {
34
36
  const [isActive, setIsActive] = (0, import_react.useState)(false);
35
37
  const [canToggle, setCanToggle] = (0, import_react.useState)(false);
36
38
  (0, import_react.useEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-block-button/code-block-button.tsx"],"sourcesContent":["'use client';\n\nimport { SquareCode } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '../ui/button';\n\nimport type { Editor } from '@tiptap/core';\n\nexport interface CodeBlockButtonProps extends Omit<\n\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t'type'\n> {\n\teditor: Editor | null;\n}\n\nfunction canToggleCodeBlock(editor: Editor | null): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn (\n\t\teditor.can().toggleNode('codeBlock', 'paragraph') ||\n\t\teditor.can().clearNodes()\n\t);\n}\n\nexport const CodeBlockButton = forwardRef<\n\tHTMLButtonElement,\n\tCodeBlockButtonProps\n>(({ editor, onClick, ...buttonProps }, ref) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst [canToggle, setCanToggle] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst update = () => {\n\t\t\tsetIsActive(editor.isActive('codeBlock'));\n\t\t\tsetCanToggle(canToggleCodeBlock(editor));\n\t\t};\n\n\t\tupdate();\n\n\t\teditor.on('selectionUpdate', update);\n\t\teditor.on('transaction', update);\n\n\t\treturn () => {\n\t\t\teditor.off('selectionUpdate', update);\n\t\t\teditor.off('transaction', update);\n\t\t};\n\t}, [editor]);\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tonClick?.(event);\n\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (!editor) return;\n\n\t\t\tif (editor.isActive('codeBlock')) {\n\t\t\t\teditor.chain().focus().setNode('paragraph').run();\n\t\t\t} else {\n\t\t\t\t// clearNodes first to convert any block type to paragraph,\n\t\t\t\t// then toggle to codeBlock\n\t\t\t\teditor\n\t\t\t\t\t.chain()\n\t\t\t\t\t.focus()\n\t\t\t\t\t.clearNodes()\n\t\t\t\t\t.toggleNode('codeBlock', 'paragraph')\n\t\t\t\t\t.run();\n\t\t\t}\n\t\t},\n\t\t[editor, onClick]\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\taria-label=\"Code Block\"\n\t\t\taria-pressed={isActive}\n\t\t\tdata-active-state={isActive ? 'on' : 'off'}\n\t\t\tdisabled={!canToggle}\n\t\t\tsize=\"icon\"\n\t\t\ttabIndex={-1}\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={handleClick}\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t<SquareCode\n\t\t\t\tclassName={isActive ? 'nt:text-[var(--tt-brand-color-500)]' : undefined}\n\t\t\t/>\n\t\t</Button>\n\t);\n});\n\nCodeBlockButton.displayName = 'CodeBlockButton';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAyFG;AAvFH,0BAA2B;AAC3B,mBAA6D;AAE7D,oBAAuB;AAWvB,SAAS,mBAAmB,QAAgC;AAC3D,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SACC,OAAO,IAAI,EAAE,WAAW,aAAa,WAAW,KAChD,OAAO,IAAI,EAAE,WAAW;AAE1B;AAEO,MAAM,sBAAkB,yBAG7B,CAAC,EAAE,QAAQ,SAAS,GAAG,YAAY,GAAG,QAAQ;AAC/C,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,KAAK;AAEhD,8BAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,MAAM;AACpB,kBAAY,OAAO,SAAS,WAAW,CAAC;AACxC,mBAAa,mBAAmB,MAAM,CAAC;AAAA,IACxC;AAEA,WAAO;AAEP,WAAO,GAAG,mBAAmB,MAAM;AACnC,WAAO,GAAG,eAAe,MAAM;AAE/B,WAAO,MAAM;AACZ,aAAO,IAAI,mBAAmB,MAAM;AACpC,aAAO,IAAI,eAAe,MAAM;AAAA,IACjC;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,kBAAc;AAAA,IACnB,CAAC,UAA+C;AAC/C,gBAAU,KAAK;AAEf,UAAI,MAAM,iBAAkB;AAE5B,UAAI,CAAC,OAAQ;AAEb,UAAI,OAAO,SAAS,WAAW,GAAG;AACjC,eAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,WAAW,EAAE,IAAI;AAAA,MACjD,OAAO;AAGN,eACE,MAAM,EACN,MAAM,EACN,WAAW,EACX,WAAW,aAAa,WAAW,EACnC,IAAI;AAAA,MACP;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,qBAAmB,WAAW,OAAO;AAAA,MACrC,UAAU,CAAC;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAW,wCAAwC;AAAA;AAAA,MAC/D;AAAA;AAAA,EACD;AAEF,CAAC;AAED,gBAAgB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/code-block-button/code-block-button.tsx"],"sourcesContent":["'use client';\n\nimport { SquareCode } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '../ui/button.js';\n\nimport type { Editor } from '@tiptap/core';\n\nexport interface CodeBlockButtonProps extends Omit<\n\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t'type'\n> {\n\teditor: Editor | null;\n}\n\nfunction canToggleCodeBlock(editor: Editor | null): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn (\n\t\teditor.can().toggleNode('codeBlock', 'paragraph') ||\n\t\teditor.can().clearNodes()\n\t);\n}\n\nexport const CodeBlockButton = forwardRef<\n\tHTMLButtonElement,\n\tCodeBlockButtonProps\n>(({ editor, onClick, ...buttonProps }, ref) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst [canToggle, setCanToggle] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst update = () => {\n\t\t\tsetIsActive(editor.isActive('codeBlock'));\n\t\t\tsetCanToggle(canToggleCodeBlock(editor));\n\t\t};\n\n\t\tupdate();\n\n\t\teditor.on('selectionUpdate', update);\n\t\teditor.on('transaction', update);\n\n\t\treturn () => {\n\t\t\teditor.off('selectionUpdate', update);\n\t\t\teditor.off('transaction', update);\n\t\t};\n\t}, [editor]);\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tonClick?.(event);\n\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (!editor) return;\n\n\t\t\tif (editor.isActive('codeBlock')) {\n\t\t\t\teditor.chain().focus().setNode('paragraph').run();\n\t\t\t} else {\n\t\t\t\t// clearNodes first to convert any block type to paragraph,\n\t\t\t\t// then toggle to codeBlock\n\t\t\t\teditor\n\t\t\t\t\t.chain()\n\t\t\t\t\t.focus()\n\t\t\t\t\t.clearNodes()\n\t\t\t\t\t.toggleNode('codeBlock', 'paragraph')\n\t\t\t\t\t.run();\n\t\t\t}\n\t\t},\n\t\t[editor, onClick]\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\taria-label=\"Code Block\"\n\t\t\taria-pressed={isActive}\n\t\t\tdata-active-state={isActive ? 'on' : 'off'}\n\t\t\tdisabled={!canToggle}\n\t\t\tsize=\"icon\"\n\t\t\ttabIndex={-1}\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={handleClick}\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t<SquareCode\n\t\t\t\tclassName={isActive ? 'nt:text-[var(--tt-brand-color-500)]' : undefined}\n\t\t\t/>\n\t\t</Button>\n\t);\n});\n\nCodeBlockButton.displayName = 'CodeBlockButton';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA2B;AAC3B,mBAA6D;AAE7D,oBAAuB;AAoFpB;AAzEH,SAAS,mBAAmB,QAAgC;AAC3D,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SACC,OAAO,IAAI,EAAE,WAAW,aAAa,WAAW,KAChD,OAAO,IAAI,EAAE,WAAW;AAE1B;AAEO,IAAM,sBAAkB,yBAG7B,CAAC,EAAE,QAAQ,SAAS,GAAG,YAAY,GAAG,QAAQ;AAC/C,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,KAAK;AAEhD,8BAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,MAAM;AACpB,kBAAY,OAAO,SAAS,WAAW,CAAC;AACxC,mBAAa,mBAAmB,MAAM,CAAC;AAAA,IACxC;AAEA,WAAO;AAEP,WAAO,GAAG,mBAAmB,MAAM;AACnC,WAAO,GAAG,eAAe,MAAM;AAE/B,WAAO,MAAM;AACZ,aAAO,IAAI,mBAAmB,MAAM;AACpC,aAAO,IAAI,eAAe,MAAM;AAAA,IACjC;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,kBAAc;AAAA,IACnB,CAAC,UAA+C;AAC/C,gBAAU,KAAK;AAEf,UAAI,MAAM,iBAAkB;AAE5B,UAAI,CAAC,OAAQ;AAEb,UAAI,OAAO,SAAS,WAAW,GAAG;AACjC,eAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,WAAW,EAAE,IAAI;AAAA,MACjD,OAAO;AAGN,eACE,MAAM,EACN,MAAM,EACN,WAAW,EACX,WAAW,aAAa,WAAW,EACnC,IAAI;AAAA,MACP;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,qBAAmB,WAAW,OAAO;AAAA,MACrC,UAAU,CAAC;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAW,wCAAwC;AAAA;AAAA,MAC/D;AAAA;AAAA,EACD;AAEF,CAAC;AAED,gBAAgB,cAAc;","names":[]}
@@ -1,13 +1,15 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
2
+
3
+ // src/components/code-block-button/code-block-button.tsx
3
4
  import { SquareCode } from "lucide-react";
4
5
  import { forwardRef, useCallback, useEffect, useState } from "react";
5
- import { Button } from "../ui/button";
6
+ import { Button } from "../ui/button.mjs";
7
+ import { jsx } from "react/jsx-runtime";
6
8
  function canToggleCodeBlock(editor) {
7
9
  if (!editor || !editor.isEditable) return false;
8
10
  return editor.can().toggleNode("codeBlock", "paragraph") || editor.can().clearNodes();
9
11
  }
10
- const CodeBlockButton = forwardRef(({ editor, onClick, ...buttonProps }, ref) => {
12
+ var CodeBlockButton = forwardRef(({ editor, onClick, ...buttonProps }, ref) => {
11
13
  const [isActive, setIsActive] = useState(false);
12
14
  const [canToggle, setCanToggle] = useState(false);
13
15
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-block-button/code-block-button.tsx"],"sourcesContent":["'use client';\n\nimport { SquareCode } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '../ui/button';\n\nimport type { Editor } from '@tiptap/core';\n\nexport interface CodeBlockButtonProps extends Omit<\n\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t'type'\n> {\n\teditor: Editor | null;\n}\n\nfunction canToggleCodeBlock(editor: Editor | null): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn (\n\t\teditor.can().toggleNode('codeBlock', 'paragraph') ||\n\t\teditor.can().clearNodes()\n\t);\n}\n\nexport const CodeBlockButton = forwardRef<\n\tHTMLButtonElement,\n\tCodeBlockButtonProps\n>(({ editor, onClick, ...buttonProps }, ref) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst [canToggle, setCanToggle] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst update = () => {\n\t\t\tsetIsActive(editor.isActive('codeBlock'));\n\t\t\tsetCanToggle(canToggleCodeBlock(editor));\n\t\t};\n\n\t\tupdate();\n\n\t\teditor.on('selectionUpdate', update);\n\t\teditor.on('transaction', update);\n\n\t\treturn () => {\n\t\t\teditor.off('selectionUpdate', update);\n\t\t\teditor.off('transaction', update);\n\t\t};\n\t}, [editor]);\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tonClick?.(event);\n\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (!editor) return;\n\n\t\t\tif (editor.isActive('codeBlock')) {\n\t\t\t\teditor.chain().focus().setNode('paragraph').run();\n\t\t\t} else {\n\t\t\t\t// clearNodes first to convert any block type to paragraph,\n\t\t\t\t// then toggle to codeBlock\n\t\t\t\teditor\n\t\t\t\t\t.chain()\n\t\t\t\t\t.focus()\n\t\t\t\t\t.clearNodes()\n\t\t\t\t\t.toggleNode('codeBlock', 'paragraph')\n\t\t\t\t\t.run();\n\t\t\t}\n\t\t},\n\t\t[editor, onClick]\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\taria-label=\"Code Block\"\n\t\t\taria-pressed={isActive}\n\t\t\tdata-active-state={isActive ? 'on' : 'off'}\n\t\t\tdisabled={!canToggle}\n\t\t\tsize=\"icon\"\n\t\t\ttabIndex={-1}\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={handleClick}\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t<SquareCode\n\t\t\t\tclassName={isActive ? 'nt:text-[var(--tt-brand-color-500)]' : undefined}\n\t\t\t/>\n\t\t</Button>\n\t);\n});\n\nCodeBlockButton.displayName = 'CodeBlockButton';\n"],"mappings":";AAyFG;AAvFH,SAAS,kBAAkB;AAC3B,SAAS,YAAY,aAAa,WAAW,gBAAgB;AAE7D,SAAS,cAAc;AAWvB,SAAS,mBAAmB,QAAgC;AAC3D,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SACC,OAAO,IAAI,EAAE,WAAW,aAAa,WAAW,KAChD,OAAO,IAAI,EAAE,WAAW;AAE1B;AAEO,MAAM,kBAAkB,WAG7B,CAAC,EAAE,QAAQ,SAAS,GAAG,YAAY,GAAG,QAAQ;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,YAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,MAAM;AACpB,kBAAY,OAAO,SAAS,WAAW,CAAC;AACxC,mBAAa,mBAAmB,MAAM,CAAC;AAAA,IACxC;AAEA,WAAO;AAEP,WAAO,GAAG,mBAAmB,MAAM;AACnC,WAAO,GAAG,eAAe,MAAM;AAE/B,WAAO,MAAM;AACZ,aAAO,IAAI,mBAAmB,MAAM;AACpC,aAAO,IAAI,eAAe,MAAM;AAAA,IACjC;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,cAAc;AAAA,IACnB,CAAC,UAA+C;AAC/C,gBAAU,KAAK;AAEf,UAAI,MAAM,iBAAkB;AAE5B,UAAI,CAAC,OAAQ;AAEb,UAAI,OAAO,SAAS,WAAW,GAAG;AACjC,eAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,WAAW,EAAE,IAAI;AAAA,MACjD,OAAO;AAGN,eACE,MAAM,EACN,MAAM,EACN,WAAW,EACX,WAAW,aAAa,WAAW,EACnC,IAAI;AAAA,MACP;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,qBAAmB,WAAW,OAAO;AAAA,MACrC,UAAU,CAAC;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAW,wCAAwC;AAAA;AAAA,MAC/D;AAAA;AAAA,EACD;AAEF,CAAC;AAED,gBAAgB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/code-block-button/code-block-button.tsx"],"sourcesContent":["'use client';\n\nimport { SquareCode } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '../ui/button.js';\n\nimport type { Editor } from '@tiptap/core';\n\nexport interface CodeBlockButtonProps extends Omit<\n\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t'type'\n> {\n\teditor: Editor | null;\n}\n\nfunction canToggleCodeBlock(editor: Editor | null): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn (\n\t\teditor.can().toggleNode('codeBlock', 'paragraph') ||\n\t\teditor.can().clearNodes()\n\t);\n}\n\nexport const CodeBlockButton = forwardRef<\n\tHTMLButtonElement,\n\tCodeBlockButtonProps\n>(({ editor, onClick, ...buttonProps }, ref) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst [canToggle, setCanToggle] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst update = () => {\n\t\t\tsetIsActive(editor.isActive('codeBlock'));\n\t\t\tsetCanToggle(canToggleCodeBlock(editor));\n\t\t};\n\n\t\tupdate();\n\n\t\teditor.on('selectionUpdate', update);\n\t\teditor.on('transaction', update);\n\n\t\treturn () => {\n\t\t\teditor.off('selectionUpdate', update);\n\t\t\teditor.off('transaction', update);\n\t\t};\n\t}, [editor]);\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tonClick?.(event);\n\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (!editor) return;\n\n\t\t\tif (editor.isActive('codeBlock')) {\n\t\t\t\teditor.chain().focus().setNode('paragraph').run();\n\t\t\t} else {\n\t\t\t\t// clearNodes first to convert any block type to paragraph,\n\t\t\t\t// then toggle to codeBlock\n\t\t\t\teditor\n\t\t\t\t\t.chain()\n\t\t\t\t\t.focus()\n\t\t\t\t\t.clearNodes()\n\t\t\t\t\t.toggleNode('codeBlock', 'paragraph')\n\t\t\t\t\t.run();\n\t\t\t}\n\t\t},\n\t\t[editor, onClick]\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\taria-label=\"Code Block\"\n\t\t\taria-pressed={isActive}\n\t\t\tdata-active-state={isActive ? 'on' : 'off'}\n\t\t\tdisabled={!canToggle}\n\t\t\tsize=\"icon\"\n\t\t\ttabIndex={-1}\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={handleClick}\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t<SquareCode\n\t\t\t\tclassName={isActive ? 'nt:text-[var(--tt-brand-color-500)]' : undefined}\n\t\t\t/>\n\t\t</Button>\n\t);\n});\n\nCodeBlockButton.displayName = 'CodeBlockButton';\n"],"mappings":";;;AAEA,SAAS,kBAAkB;AAC3B,SAAS,YAAY,aAAa,WAAW,gBAAgB;AAE7D,SAAS,cAAc;AAoFpB;AAzEH,SAAS,mBAAmB,QAAgC;AAC3D,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SACC,OAAO,IAAI,EAAE,WAAW,aAAa,WAAW,KAChD,OAAO,IAAI,EAAE,WAAW;AAE1B;AAEO,IAAM,kBAAkB,WAG7B,CAAC,EAAE,QAAQ,SAAS,GAAG,YAAY,GAAG,QAAQ;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,YAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,MAAM;AACpB,kBAAY,OAAO,SAAS,WAAW,CAAC;AACxC,mBAAa,mBAAmB,MAAM,CAAC;AAAA,IACxC;AAEA,WAAO;AAEP,WAAO,GAAG,mBAAmB,MAAM;AACnC,WAAO,GAAG,eAAe,MAAM;AAE/B,WAAO,MAAM;AACZ,aAAO,IAAI,mBAAmB,MAAM;AACpC,aAAO,IAAI,eAAe,MAAM;AAAA,IACjC;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,cAAc;AAAA,IACnB,CAAC,UAA+C;AAC/C,gBAAU,KAAK;AAEf,UAAI,MAAM,iBAAkB;AAE5B,UAAI,CAAC,OAAQ;AAEb,UAAI,OAAO,SAAS,WAAW,GAAG;AACjC,eAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,WAAW,EAAE,IAAI;AAAA,MACjD,OAAO;AAGN,eACE,MAAM,EACN,MAAM,EACN,WAAW,EACX,WAAW,aAAa,WAAW,EACnC,IAAI;AAAA,MACP;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,qBAAmB,WAAW,OAAO;AAAA,MACrC,UAAU,CAAC;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAW,wCAAwC;AAAA;AAAA,MAC/D;AAAA;AAAA,EACD;AAEF,CAAC;AAED,gBAAgB,cAAc;","names":[]}
@@ -16,14 +16,16 @@ 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/components/code-block-view/code-block-shell.tsx
19
21
  var code_block_shell_exports = {};
20
22
  __export(code_block_shell_exports, {
21
23
  CodeBlockShell: () => CodeBlockShell
22
24
  });
23
25
  module.exports = __toCommonJS(code_block_shell_exports);
26
+ var import_copy_button = require("../copy-button.cjs");
24
27
  var import_jsx_runtime = require("react/jsx-runtime");
25
- var import_copy_button = require("../copy-button");
26
- const CodeBlockShell = ({
28
+ var CodeBlockShell = ({
27
29
  value,
28
30
  languageSlot,
29
31
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-block-view/code-block-shell.tsx"],"sourcesContent":["import { CopyButton } from '../copy-button';\n\nimport type { ReactNode } from 'react';\n\ninterface CodeBlockShellProps {\n\tvalue: string;\n\tlanguageSlot: ReactNode;\n\tchildren: ReactNode;\n}\n\n// Visual frame shared by the editor (NodeView) and reader (nodeMapping).\n// `languageSlot` lets each consumer plug its own widget into the top bar:\n// the editor passes <LanguageSelect>, the reader passes a static label.\n// `children` is the <code> element (NodeViewContent in the editor, a\n// dangerouslySetInnerHTML <code> in the reader).\nexport const CodeBlockShell = ({\n\tvalue,\n\tlanguageSlot,\n\tchildren\n}: CodeBlockShellProps) => (\n\t<div className=\"nt:relative\">\n\t\t<div className=\"nt:absolute nt:inset-x-0 nt:top-0 nt:flex nt:h-9 nt:items-center nt:justify-between nt:px-2\">\n\t\t\t<div className=\"nt:min-w-0 nt:flex-1\">{languageSlot}</div>\n\t\t\t<CopyButton value={value} />\n\t\t</div>\n\t\t<pre className=\"nt:!pt-9 hljs\">{children}</pre>\n\t</div>\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBE;AArBF,yBAA2B;AAepB,MAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACD,MACC,6CAAC,SAAI,WAAU,eACd;AAAA,+CAAC,SAAI,WAAU,+FACd;AAAA,gDAAC,SAAI,WAAU,wBAAwB,wBAAa;AAAA,IACpD,4CAAC,iCAAW,OAAc;AAAA,KAC3B;AAAA,EACA,4CAAC,SAAI,WAAU,iBAAiB,UAAS;AAAA,GAC1C;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/code-block-view/code-block-shell.tsx"],"sourcesContent":["import { CopyButton } from '../copy-button.js';\n\nimport type { ReactNode } from 'react';\n\ninterface CodeBlockShellProps {\n\tvalue: string;\n\tlanguageSlot: ReactNode;\n\tchildren: ReactNode;\n}\n\n// Visual frame shared by the editor (NodeView) and reader (nodeMapping).\n// `languageSlot` lets each consumer plug its own widget into the top bar:\n// the editor passes <LanguageSelect>, the reader passes a static label.\n// `children` is the <code> element (NodeViewContent in the editor, a\n// dangerouslySetInnerHTML <code> in the reader).\nexport const CodeBlockShell = ({\n\tvalue,\n\tlanguageSlot,\n\tchildren\n}: CodeBlockShellProps) => (\n\t<div className=\"nt:relative\">\n\t\t<div className=\"nt:absolute nt:inset-x-0 nt:top-0 nt:flex nt:h-9 nt:items-center nt:justify-between nt:px-2\">\n\t\t\t<div className=\"nt:min-w-0 nt:flex-1\">{languageSlot}</div>\n\t\t\t<CopyButton value={value} />\n\t\t</div>\n\t\t<pre className=\"nt:!pt-9 hljs\">{children}</pre>\n\t</div>\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA2B;AAqBzB;AANK,IAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACD,MACC,6CAAC,SAAI,WAAU,eACd;AAAA,+CAAC,SAAI,WAAU,+FACd;AAAA,gDAAC,SAAI,WAAU,wBAAwB,wBAAa;AAAA,IACpD,4CAAC,iCAAW,OAAc;AAAA,KAC3B;AAAA,EACA,4CAAC,SAAI,WAAU,iBAAiB,UAAS;AAAA,GAC1C;","names":[]}
@@ -1,6 +1,7 @@
1
+ // src/components/code-block-view/code-block-shell.tsx
2
+ import { CopyButton } from "../copy-button.mjs";
1
3
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { CopyButton } from "../copy-button";
3
- const CodeBlockShell = ({
4
+ var CodeBlockShell = ({
4
5
  value,
5
6
  languageSlot,
6
7
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-block-view/code-block-shell.tsx"],"sourcesContent":["import { CopyButton } from '../copy-button';\n\nimport type { ReactNode } from 'react';\n\ninterface CodeBlockShellProps {\n\tvalue: string;\n\tlanguageSlot: ReactNode;\n\tchildren: ReactNode;\n}\n\n// Visual frame shared by the editor (NodeView) and reader (nodeMapping).\n// `languageSlot` lets each consumer plug its own widget into the top bar:\n// the editor passes <LanguageSelect>, the reader passes a static label.\n// `children` is the <code> element (NodeViewContent in the editor, a\n// dangerouslySetInnerHTML <code> in the reader).\nexport const CodeBlockShell = ({\n\tvalue,\n\tlanguageSlot,\n\tchildren\n}: CodeBlockShellProps) => (\n\t<div className=\"nt:relative\">\n\t\t<div className=\"nt:absolute nt:inset-x-0 nt:top-0 nt:flex nt:h-9 nt:items-center nt:justify-between nt:px-2\">\n\t\t\t<div className=\"nt:min-w-0 nt:flex-1\">{languageSlot}</div>\n\t\t\t<CopyButton value={value} />\n\t\t</div>\n\t\t<pre className=\"nt:!pt-9 hljs\">{children}</pre>\n\t</div>\n);\n"],"mappings":"AAqBE,SACC,KADD;AArBF,SAAS,kBAAkB;AAepB,MAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACD,MACC,qBAAC,SAAI,WAAU,eACd;AAAA,uBAAC,SAAI,WAAU,+FACd;AAAA,wBAAC,SAAI,WAAU,wBAAwB,wBAAa;AAAA,IACpD,oBAAC,cAAW,OAAc;AAAA,KAC3B;AAAA,EACA,oBAAC,SAAI,WAAU,iBAAiB,UAAS;AAAA,GAC1C;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/code-block-view/code-block-shell.tsx"],"sourcesContent":["import { CopyButton } from '../copy-button.js';\n\nimport type { ReactNode } from 'react';\n\ninterface CodeBlockShellProps {\n\tvalue: string;\n\tlanguageSlot: ReactNode;\n\tchildren: ReactNode;\n}\n\n// Visual frame shared by the editor (NodeView) and reader (nodeMapping).\n// `languageSlot` lets each consumer plug its own widget into the top bar:\n// the editor passes <LanguageSelect>, the reader passes a static label.\n// `children` is the <code> element (NodeViewContent in the editor, a\n// dangerouslySetInnerHTML <code> in the reader).\nexport const CodeBlockShell = ({\n\tvalue,\n\tlanguageSlot,\n\tchildren\n}: CodeBlockShellProps) => (\n\t<div className=\"nt:relative\">\n\t\t<div className=\"nt:absolute nt:inset-x-0 nt:top-0 nt:flex nt:h-9 nt:items-center nt:justify-between nt:px-2\">\n\t\t\t<div className=\"nt:min-w-0 nt:flex-1\">{languageSlot}</div>\n\t\t\t<CopyButton value={value} />\n\t\t</div>\n\t\t<pre className=\"nt:!pt-9 hljs\">{children}</pre>\n\t</div>\n);\n"],"mappings":";AAAA,SAAS,kBAAkB;AAqBzB,SACC,KADD;AANK,IAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACD,MACC,qBAAC,SAAI,WAAU,eACd;AAAA,uBAAC,SAAI,WAAU,+FACd;AAAA,wBAAC,SAAI,WAAU,wBAAwB,wBAAa;AAAA,IACpD,oBAAC,cAAW,OAAc;AAAA,KAC3B;AAAA,EACA,oBAAC,SAAI,WAAU,iBAAiB,UAAS;AAAA,GAC1C;","names":[]}
@@ -17,16 +17,18 @@ 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/components/code-block-view/code-block-view.tsx
20
22
  var code_block_view_exports = {};
21
23
  __export(code_block_view_exports, {
22
24
  CodeBlockView: () => CodeBlockView
23
25
  });
24
26
  module.exports = __toCommonJS(code_block_view_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
27
  var import_react = require("@tiptap/react");
27
- var import_code_block_shell = require("./code-block-shell");
28
- var import_language_select = require("./language-select");
29
- const CodeBlockView = ({ node, updateAttributes }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.NodeViewWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
28
+ var import_code_block_shell = require("./code-block-shell.cjs");
29
+ var import_language_select = require("./language-select.cjs");
30
+ var import_jsx_runtime = require("react/jsx-runtime");
31
+ var CodeBlockView = ({ node, updateAttributes }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.NodeViewWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
30
32
  import_code_block_shell.CodeBlockShell,
31
33
  {
32
34
  languageSlot: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-block-view/code-block-view.tsx"],"sourcesContent":["'use client';\n\nimport {\n\tNodeViewContent,\n\tNodeViewWrapper,\n\ttype NodeViewProps\n} from '@tiptap/react';\n\nimport { CodeBlockShell } from './code-block-shell';\nimport { LanguageSelect } from './language-select';\n\n// Editor-side React NodeView. Tiptap mounts content-editable DOM directly\n// onto the <code> rendered by NodeViewContent. lowlight decorates that\n// content with <span class=\"hljs-*\"> spans on every transaction.\nexport const CodeBlockView = ({ node, updateAttributes }: NodeViewProps) => (\n\t<NodeViewWrapper>\n\t\t<CodeBlockShell\n\t\t\tlanguageSlot={\n\t\t\t\t<LanguageSelect\n\t\t\t\t\tlanguage={(node.attrs.language as string) ?? ''}\n\t\t\t\t\tonLanguageChange={(language) => updateAttributes({ language })}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tvalue={node.textContent}\n\t\t>\n\t\t\t<NodeViewContent<'code'> as=\"code\" className=\"hljs\" />\n\t\t</CodeBlockShell>\n\t</NodeViewWrapper>\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBI;AAhBJ,mBAIO;AAEP,8BAA+B;AAC/B,6BAA+B;AAKxB,MAAM,gBAAgB,CAAC,EAAE,MAAM,iBAAiB,MACtD,4CAAC,gCACA;AAAA,EAAC;AAAA;AAAA,IACA,cACC;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,KAAK,MAAM,YAAuB;AAAA,QAC7C,kBAAkB,CAAC,aAAa,iBAAiB,EAAE,SAAS,CAAC;AAAA;AAAA,IAC9D;AAAA,IAED,OAAO,KAAK;AAAA,IAEZ,sDAAC,gCAAwB,IAAG,QAAO,WAAU,QAAO;AAAA;AACrD,GACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/code-block-view/code-block-view.tsx"],"sourcesContent":["'use client';\n\nimport {\n\tNodeViewContent,\n\tNodeViewWrapper,\n\ttype NodeViewProps\n} from '@tiptap/react';\n\nimport { CodeBlockShell } from './code-block-shell.js';\nimport { LanguageSelect } from './language-select.js';\n\n// Editor-side React NodeView. Tiptap mounts content-editable DOM directly\n// onto the <code> rendered by NodeViewContent. lowlight decorates that\n// content with <span class=\"hljs-*\"> spans on every transaction.\nexport const CodeBlockView = ({ node, updateAttributes }: NodeViewProps) => (\n\t<NodeViewWrapper>\n\t\t<CodeBlockShell\n\t\t\tlanguageSlot={\n\t\t\t\t<LanguageSelect\n\t\t\t\t\tlanguage={(node.attrs.language as string) ?? ''}\n\t\t\t\t\tonLanguageChange={(language) => updateAttributes({ language })}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tvalue={node.textContent}\n\t\t>\n\t\t\t<NodeViewContent<'code'> as=\"code\" className=\"hljs\" />\n\t\t</CodeBlockShell>\n\t</NodeViewWrapper>\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAIO;AAEP,8BAA+B;AAC/B,6BAA+B;AAS3B;AAJG,IAAM,gBAAgB,CAAC,EAAE,MAAM,iBAAiB,MACtD,4CAAC,gCACA;AAAA,EAAC;AAAA;AAAA,IACA,cACC;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,KAAK,MAAM,YAAuB;AAAA,QAC7C,kBAAkB,CAAC,aAAa,iBAAiB,EAAE,SAAS,CAAC;AAAA;AAAA,IAC9D;AAAA,IAED,OAAO,KAAK;AAAA,IAEZ,sDAAC,gCAAwB,IAAG,QAAO,WAAU,QAAO;AAAA;AACrD,GACD;","names":[]}
@@ -1,12 +1,14 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
2
+
3
+ // src/components/code-block-view/code-block-view.tsx
3
4
  import {
4
5
  NodeViewContent,
5
6
  NodeViewWrapper
6
7
  } from "@tiptap/react";
7
- import { CodeBlockShell } from "./code-block-shell";
8
- import { LanguageSelect } from "./language-select";
9
- const CodeBlockView = ({ node, updateAttributes }) => /* @__PURE__ */ jsx(NodeViewWrapper, { children: /* @__PURE__ */ jsx(
8
+ import { CodeBlockShell } from "./code-block-shell.mjs";
9
+ import { LanguageSelect } from "./language-select.mjs";
10
+ import { jsx } from "react/jsx-runtime";
11
+ var CodeBlockView = ({ node, updateAttributes }) => /* @__PURE__ */ jsx(NodeViewWrapper, { children: /* @__PURE__ */ jsx(
10
12
  CodeBlockShell,
11
13
  {
12
14
  languageSlot: /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-block-view/code-block-view.tsx"],"sourcesContent":["'use client';\n\nimport {\n\tNodeViewContent,\n\tNodeViewWrapper,\n\ttype NodeViewProps\n} from '@tiptap/react';\n\nimport { CodeBlockShell } from './code-block-shell';\nimport { LanguageSelect } from './language-select';\n\n// Editor-side React NodeView. Tiptap mounts content-editable DOM directly\n// onto the <code> rendered by NodeViewContent. lowlight decorates that\n// content with <span class=\"hljs-*\"> spans on every transaction.\nexport const CodeBlockView = ({ node, updateAttributes }: NodeViewProps) => (\n\t<NodeViewWrapper>\n\t\t<CodeBlockShell\n\t\t\tlanguageSlot={\n\t\t\t\t<LanguageSelect\n\t\t\t\t\tlanguage={(node.attrs.language as string) ?? ''}\n\t\t\t\t\tonLanguageChange={(language) => updateAttributes({ language })}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tvalue={node.textContent}\n\t\t>\n\t\t\t<NodeViewContent<'code'> as=\"code\" className=\"hljs\" />\n\t\t</CodeBlockShell>\n\t</NodeViewWrapper>\n);\n"],"mappings":";AAkBI;AAhBJ;AAAA,EACC;AAAA,EACA;AAAA,OAEM;AAEP,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAKxB,MAAM,gBAAgB,CAAC,EAAE,MAAM,iBAAiB,MACtD,oBAAC,mBACA;AAAA,EAAC;AAAA;AAAA,IACA,cACC;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,KAAK,MAAM,YAAuB;AAAA,QAC7C,kBAAkB,CAAC,aAAa,iBAAiB,EAAE,SAAS,CAAC;AAAA;AAAA,IAC9D;AAAA,IAED,OAAO,KAAK;AAAA,IAEZ,8BAAC,mBAAwB,IAAG,QAAO,WAAU,QAAO;AAAA;AACrD,GACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/code-block-view/code-block-view.tsx"],"sourcesContent":["'use client';\n\nimport {\n\tNodeViewContent,\n\tNodeViewWrapper,\n\ttype NodeViewProps\n} from '@tiptap/react';\n\nimport { CodeBlockShell } from './code-block-shell.js';\nimport { LanguageSelect } from './language-select.js';\n\n// Editor-side React NodeView. Tiptap mounts content-editable DOM directly\n// onto the <code> rendered by NodeViewContent. lowlight decorates that\n// content with <span class=\"hljs-*\"> spans on every transaction.\nexport const CodeBlockView = ({ node, updateAttributes }: NodeViewProps) => (\n\t<NodeViewWrapper>\n\t\t<CodeBlockShell\n\t\t\tlanguageSlot={\n\t\t\t\t<LanguageSelect\n\t\t\t\t\tlanguage={(node.attrs.language as string) ?? ''}\n\t\t\t\t\tonLanguageChange={(language) => updateAttributes({ language })}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tvalue={node.textContent}\n\t\t>\n\t\t\t<NodeViewContent<'code'> as=\"code\" className=\"hljs\" />\n\t\t</CodeBlockShell>\n\t</NodeViewWrapper>\n);\n"],"mappings":";;;AAEA;AAAA,EACC;AAAA,EACA;AAAA,OAEM;AAEP,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAS3B;AAJG,IAAM,gBAAgB,CAAC,EAAE,MAAM,iBAAiB,MACtD,oBAAC,mBACA;AAAA,EAAC;AAAA;AAAA,IACA,cACC;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,KAAK,MAAM,YAAuB;AAAA,QAC7C,kBAAkB,CAAC,aAAa,iBAAiB,EAAE,SAAS,CAAC;AAAA;AAAA,IAC9D;AAAA,IAED,OAAO,KAAK;AAAA,IAEZ,8BAAC,mBAAwB,IAAG,QAAO,WAAU,QAAO;AAAA;AACrD,GACD;","names":[]}
@@ -17,20 +17,22 @@ 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/components/code-block-view/language-select.tsx
20
22
  var language_select_exports = {};
21
23
  __export(language_select_exports, {
22
24
  LanguageSelect: () => LanguageSelect
23
25
  });
24
26
  module.exports = __toCommonJS(language_select_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
27
  var import_lucide_react = require("lucide-react");
27
28
  var import_react = require("react");
28
- var import_languages = require("../../lib/languages");
29
- var import_utils = require("../../lib/utils");
30
- var import_button = require("../ui/button");
31
- var import_command = require("../ui/command");
32
- var import_popover = require("../ui/popover");
33
- const LanguageSelect = ({
29
+ var import_languages = require("../../lib/languages.cjs");
30
+ var import_utils = require("../../lib/utils.cjs");
31
+ var import_button = require("../ui/button.cjs");
32
+ var import_command = require("../ui/command.cjs");
33
+ var import_popover = require("../ui/popover.cjs");
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var LanguageSelect = ({
34
36
  language,
35
37
  onLanguageChange
36
38
  }) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-block-view/language-select.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { LANGUAGES, getLanguageLabel } from '../../lib/languages';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList\n} from '../ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nexport interface LanguageSelectProps {\n\t/** Current language value (e.g. \"typescript\"); empty / \"auto\" → \"Auto\" label */\n\tlanguage: string;\n\t/** Called with the new value when the user picks a language */\n\tonLanguageChange: (language: string) => void;\n}\n\nexport const LanguageSelect = ({\n\tlanguage,\n\tonLanguageChange\n}: LanguageSelectProps) => {\n\tconst [open, setOpen] = useState(false);\n\tconst current = language || 'auto';\n\tconst label = getLanguageLabel(current);\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild onClick={(e) => e.stopPropagation()}>\n\t\t\t\t<Button\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\tclassName=\"nt:h-7 nt:gap-1 nt:px-2 nt:text-xs\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t\t<ChevronDownIcon className=\"nt:size-3 nt:opacity-50\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent align=\"start\" className=\"nt:w-[200px] nt:p-0\">\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder=\"Search language...\" />\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>No language found.</CommandEmpty>\n\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t{LANGUAGES.map((item) => (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\t\tvalue={item.value}\n\t\t\t\t\t\t\t\t\tonSelect={(value) => {\n\t\t\t\t\t\t\t\t\t\tonLanguageChange(value);\n\t\t\t\t\t\t\t\t\t\tsetOpen(false);\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\t\t{item.label}\n\t\t\t\t\t\t\t\t\t<CheckIcon\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'nt:ml-auto nt:size-4',\n\t\t\t\t\t\t\t\t\t\t\tcurrent === item.value ? 'nt:opacity-100' : 'nt:opacity-0'\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCI;AAlCJ,0BAA2C;AAC3C,mBAAyB;AAEzB,uBAA4C;AAC5C,mBAAmB;AACnB,oBAAuB;AACvB,qBAOO;AACP,qBAAwD;AASjD,MAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AACD,MAA2B;AAC1B,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,KAAK;AACtC,QAAM,UAAU,YAAY;AAC5B,QAAM,YAAQ,mCAAiB,OAAO;AAEtC,SACC,6CAAC,0BAAQ,MAAY,cAAc,SAClC;AAAA,gDAAC,iCAAe,SAAO,MAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GACzD;AAAA,MAAC;AAAA;AAAA,QACA,iBAAe;AAAA,QACf,WAAU;AAAA,QACV,MAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QAEP;AAAA;AAAA,UACD,4CAAC,uCAAgB,WAAU,2BAA0B;AAAA;AAAA;AAAA,IACtD,GACD;AAAA,IACA,4CAAC,iCAAe,OAAM,SAAQ,WAAU,uBACvC,uDAAC,0BACA;AAAA,kDAAC,+BAAa,aAAY,sBAAqB;AAAA,MAC/C,6CAAC,8BACA;AAAA,oDAAC,+BAAa,gCAAkB;AAAA,QAChC,4CAAC,+BACC,qCAAU,IAAI,CAAC,SACf;AAAA,UAAC;AAAA;AAAA,YAEA,OAAO,KAAK;AAAA,YACZ,UAAU,CAAC,UAAU;AACpB,+BAAiB,KAAK;AACtB,sBAAQ,KAAK;AAAA,YACd;AAAA,YAEC;AAAA,mBAAK;AAAA,cACN;AAAA,gBAAC;AAAA;AAAA,kBACA,eAAW;AAAA,oBACV;AAAA,oBACA,YAAY,KAAK,QAAQ,mBAAmB;AAAA,kBAC7C;AAAA;AAAA,cACD;AAAA;AAAA;AAAA,UAbK,KAAK;AAAA,QAcX,CACA,GACF;AAAA,SACD;AAAA,OACD,GACD;AAAA,KACD;AAEF;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/code-block-view/language-select.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { LANGUAGES, getLanguageLabel } from '../../lib/languages.js';\nimport { cn } from '../../lib/utils.js';\nimport { Button } from '../ui/button.js';\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList\n} from '../ui/command.js';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover.js';\n\nexport interface LanguageSelectProps {\n\t/** Current language value (e.g. \"typescript\"); empty / \"auto\" → \"Auto\" label */\n\tlanguage: string;\n\t/** Called with the new value when the user picks a language */\n\tonLanguageChange: (language: string) => void;\n}\n\nexport const LanguageSelect = ({\n\tlanguage,\n\tonLanguageChange\n}: LanguageSelectProps) => {\n\tconst [open, setOpen] = useState(false);\n\tconst current = language || 'auto';\n\tconst label = getLanguageLabel(current);\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild onClick={(e) => e.stopPropagation()}>\n\t\t\t\t<Button\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\tclassName=\"nt:h-7 nt:gap-1 nt:px-2 nt:text-xs\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t\t<ChevronDownIcon className=\"nt:size-3 nt:opacity-50\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent align=\"start\" className=\"nt:w-[200px] nt:p-0\">\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder=\"Search language...\" />\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>No language found.</CommandEmpty>\n\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t{LANGUAGES.map((item) => (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\t\tvalue={item.value}\n\t\t\t\t\t\t\t\t\tonSelect={(value) => {\n\t\t\t\t\t\t\t\t\t\tonLanguageChange(value);\n\t\t\t\t\t\t\t\t\t\tsetOpen(false);\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\t\t{item.label}\n\t\t\t\t\t\t\t\t\t<CheckIcon\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'nt:ml-auto nt:size-4',\n\t\t\t\t\t\t\t\t\t\t\tcurrent === item.value ? 'nt:opacity-100' : 'nt:opacity-0'\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA2C;AAC3C,mBAAyB;AAEzB,uBAA4C;AAC5C,mBAAmB;AACnB,oBAAuB;AACvB,qBAOO;AACP,qBAAwD;AAoBpD;AAXG,IAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AACD,MAA2B;AAC1B,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,KAAK;AACtC,QAAM,UAAU,YAAY;AAC5B,QAAM,YAAQ,mCAAiB,OAAO;AAEtC,SACC,6CAAC,0BAAQ,MAAY,cAAc,SAClC;AAAA,gDAAC,iCAAe,SAAO,MAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GACzD;AAAA,MAAC;AAAA;AAAA,QACA,iBAAe;AAAA,QACf,WAAU;AAAA,QACV,MAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QAEP;AAAA;AAAA,UACD,4CAAC,uCAAgB,WAAU,2BAA0B;AAAA;AAAA;AAAA,IACtD,GACD;AAAA,IACA,4CAAC,iCAAe,OAAM,SAAQ,WAAU,uBACvC,uDAAC,0BACA;AAAA,kDAAC,+BAAa,aAAY,sBAAqB;AAAA,MAC/C,6CAAC,8BACA;AAAA,oDAAC,+BAAa,gCAAkB;AAAA,QAChC,4CAAC,+BACC,qCAAU,IAAI,CAAC,SACf;AAAA,UAAC;AAAA;AAAA,YAEA,OAAO,KAAK;AAAA,YACZ,UAAU,CAAC,UAAU;AACpB,+BAAiB,KAAK;AACtB,sBAAQ,KAAK;AAAA,YACd;AAAA,YAEC;AAAA,mBAAK;AAAA,cACN;AAAA,gBAAC;AAAA;AAAA,kBACA,eAAW;AAAA,oBACV;AAAA,oBACA,YAAY,KAAK,QAAQ,mBAAmB;AAAA,kBAC7C;AAAA;AAAA,cACD;AAAA;AAAA;AAAA,UAbK,KAAK;AAAA,QAcX,CACA,GACF;AAAA,SACD;AAAA,OACD,GACD;AAAA,KACD;AAEF;","names":[]}
@@ -1,10 +1,11 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
2
+
3
+ // src/components/code-block-view/language-select.tsx
3
4
  import { CheckIcon, ChevronDownIcon } from "lucide-react";
4
5
  import { useState } from "react";
5
- import { LANGUAGES, getLanguageLabel } from "../../lib/languages";
6
- import { cn } from "../../lib/utils";
7
- import { Button } from "../ui/button";
6
+ import { LANGUAGES, getLanguageLabel } from "../../lib/languages.mjs";
7
+ import { cn } from "../../lib/utils.mjs";
8
+ import { Button } from "../ui/button.mjs";
8
9
  import {
9
10
  Command,
10
11
  CommandEmpty,
@@ -12,9 +13,10 @@ import {
12
13
  CommandInput,
13
14
  CommandItem,
14
15
  CommandList
15
- } from "../ui/command";
16
- import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
17
- const LanguageSelect = ({
16
+ } from "../ui/command.mjs";
17
+ import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover.mjs";
18
+ import { jsx, jsxs } from "react/jsx-runtime";
19
+ var LanguageSelect = ({
18
20
  language,
19
21
  onLanguageChange
20
22
  }) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-block-view/language-select.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { LANGUAGES, getLanguageLabel } from '../../lib/languages';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList\n} from '../ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nexport interface LanguageSelectProps {\n\t/** Current language value (e.g. \"typescript\"); empty / \"auto\" → \"Auto\" label */\n\tlanguage: string;\n\t/** Called with the new value when the user picks a language */\n\tonLanguageChange: (language: string) => void;\n}\n\nexport const LanguageSelect = ({\n\tlanguage,\n\tonLanguageChange\n}: LanguageSelectProps) => {\n\tconst [open, setOpen] = useState(false);\n\tconst current = language || 'auto';\n\tconst label = getLanguageLabel(current);\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild onClick={(e) => e.stopPropagation()}>\n\t\t\t\t<Button\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\tclassName=\"nt:h-7 nt:gap-1 nt:px-2 nt:text-xs\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t\t<ChevronDownIcon className=\"nt:size-3 nt:opacity-50\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent align=\"start\" className=\"nt:w-[200px] nt:p-0\">\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder=\"Search language...\" />\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>No language found.</CommandEmpty>\n\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t{LANGUAGES.map((item) => (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\t\tvalue={item.value}\n\t\t\t\t\t\t\t\t\tonSelect={(value) => {\n\t\t\t\t\t\t\t\t\t\tonLanguageChange(value);\n\t\t\t\t\t\t\t\t\t\tsetOpen(false);\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\t\t{item.label}\n\t\t\t\t\t\t\t\t\t<CheckIcon\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'nt:ml-auto nt:size-4',\n\t\t\t\t\t\t\t\t\t\t\tcurrent === item.value ? 'nt:opacity-100' : 'nt:opacity-0'\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n};\n"],"mappings":";AAoCI,SASC,KATD;AAlCJ,SAAS,WAAW,uBAAuB;AAC3C,SAAS,gBAAgB;AAEzB,SAAS,WAAW,wBAAwB;AAC5C,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,SAAS,gBAAgB,sBAAsB;AASjD,MAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AACD,MAA2B;AAC1B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,UAAU,YAAY;AAC5B,QAAM,QAAQ,iBAAiB,OAAO;AAEtC,SACC,qBAAC,WAAQ,MAAY,cAAc,SAClC;AAAA,wBAAC,kBAAe,SAAO,MAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GACzD;AAAA,MAAC;AAAA;AAAA,QACA,iBAAe;AAAA,QACf,WAAU;AAAA,QACV,MAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QAEP;AAAA;AAAA,UACD,oBAAC,mBAAgB,WAAU,2BAA0B;AAAA;AAAA;AAAA,IACtD,GACD;AAAA,IACA,oBAAC,kBAAe,OAAM,SAAQ,WAAU,uBACvC,+BAAC,WACA;AAAA,0BAAC,gBAAa,aAAY,sBAAqB;AAAA,MAC/C,qBAAC,eACA;AAAA,4BAAC,gBAAa,gCAAkB;AAAA,QAChC,oBAAC,gBACC,oBAAU,IAAI,CAAC,SACf;AAAA,UAAC;AAAA;AAAA,YAEA,OAAO,KAAK;AAAA,YACZ,UAAU,CAAC,UAAU;AACpB,+BAAiB,KAAK;AACtB,sBAAQ,KAAK;AAAA,YACd;AAAA,YAEC;AAAA,mBAAK;AAAA,cACN;AAAA,gBAAC;AAAA;AAAA,kBACA,WAAW;AAAA,oBACV;AAAA,oBACA,YAAY,KAAK,QAAQ,mBAAmB;AAAA,kBAC7C;AAAA;AAAA,cACD;AAAA;AAAA;AAAA,UAbK,KAAK;AAAA,QAcX,CACA,GACF;AAAA,SACD;AAAA,OACD,GACD;AAAA,KACD;AAEF;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/code-block-view/language-select.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { LANGUAGES, getLanguageLabel } from '../../lib/languages.js';\nimport { cn } from '../../lib/utils.js';\nimport { Button } from '../ui/button.js';\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList\n} from '../ui/command.js';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover.js';\n\nexport interface LanguageSelectProps {\n\t/** Current language value (e.g. \"typescript\"); empty / \"auto\" → \"Auto\" label */\n\tlanguage: string;\n\t/** Called with the new value when the user picks a language */\n\tonLanguageChange: (language: string) => void;\n}\n\nexport const LanguageSelect = ({\n\tlanguage,\n\tonLanguageChange\n}: LanguageSelectProps) => {\n\tconst [open, setOpen] = useState(false);\n\tconst current = language || 'auto';\n\tconst label = getLanguageLabel(current);\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild onClick={(e) => e.stopPropagation()}>\n\t\t\t\t<Button\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\tclassName=\"nt:h-7 nt:gap-1 nt:px-2 nt:text-xs\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t\t<ChevronDownIcon className=\"nt:size-3 nt:opacity-50\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent align=\"start\" className=\"nt:w-[200px] nt:p-0\">\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder=\"Search language...\" />\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>No language found.</CommandEmpty>\n\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t{LANGUAGES.map((item) => (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\t\tvalue={item.value}\n\t\t\t\t\t\t\t\t\tonSelect={(value) => {\n\t\t\t\t\t\t\t\t\t\tonLanguageChange(value);\n\t\t\t\t\t\t\t\t\t\tsetOpen(false);\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\t\t{item.label}\n\t\t\t\t\t\t\t\t\t<CheckIcon\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'nt:ml-auto nt:size-4',\n\t\t\t\t\t\t\t\t\t\t\tcurrent === item.value ? 'nt:opacity-100' : 'nt:opacity-0'\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n};\n"],"mappings":";;;AAEA,SAAS,WAAW,uBAAuB;AAC3C,SAAS,gBAAgB;AAEzB,SAAS,WAAW,wBAAwB;AAC5C,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,SAAS,gBAAgB,sBAAsB;AAoBpD,SASC,KATD;AAXG,IAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AACD,MAA2B;AAC1B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,UAAU,YAAY;AAC5B,QAAM,QAAQ,iBAAiB,OAAO;AAEtC,SACC,qBAAC,WAAQ,MAAY,cAAc,SAClC;AAAA,wBAAC,kBAAe,SAAO,MAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GACzD;AAAA,MAAC;AAAA;AAAA,QACA,iBAAe;AAAA,QACf,WAAU;AAAA,QACV,MAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QAEP;AAAA;AAAA,UACD,oBAAC,mBAAgB,WAAU,2BAA0B;AAAA;AAAA;AAAA,IACtD,GACD;AAAA,IACA,oBAAC,kBAAe,OAAM,SAAQ,WAAU,uBACvC,+BAAC,WACA;AAAA,0BAAC,gBAAa,aAAY,sBAAqB;AAAA,MAC/C,qBAAC,eACA;AAAA,4BAAC,gBAAa,gCAAkB;AAAA,QAChC,oBAAC,gBACC,oBAAU,IAAI,CAAC,SACf;AAAA,UAAC;AAAA;AAAA,YAEA,OAAO,KAAK;AAAA,YACZ,UAAU,CAAC,UAAU;AACpB,+BAAiB,KAAK;AACtB,sBAAQ,KAAK;AAAA,YACd;AAAA,YAEC;AAAA,mBAAK;AAAA,cACN;AAAA,gBAAC;AAAA;AAAA,kBACA,WAAW;AAAA,oBACV;AAAA,oBACA,YAAY,KAAK,QAAQ,mBAAmB;AAAA,kBAC7C;AAAA;AAAA,cACD;AAAA;AAAA;AAAA,UAbK,KAAK;AAAA,QAcX,CACA,GACF;AAAA,SACD;AAAA,OACD,GACD;AAAA,KACD;AAEF;","names":[]}
@@ -17,16 +17,18 @@ 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/components/copy-button.tsx
20
22
  var copy_button_exports = {};
21
23
  __export(copy_button_exports, {
22
24
  CopyButton: () => CopyButton
23
25
  });
24
26
  module.exports = __toCommonJS(copy_button_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
27
  var import_lucide_react = require("lucide-react");
27
- var import_use_copy_to_clipboard = require("../hooks/use-copy-to-clipboard");
28
- var import_button = require("./ui/button");
29
- const CopyButton = ({ value, className }) => {
28
+ var import_use_copy_to_clipboard = require("../hooks/use-copy-to-clipboard.cjs");
29
+ var import_button = require("./ui/button.cjs");
30
+ var import_jsx_runtime = require("react/jsx-runtime");
31
+ var CopyButton = ({ value, className }) => {
30
32
  const { isCopied, copyToClipboard } = (0, import_use_copy_to_clipboard.useCopyToClipboard)();
31
33
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
32
34
  import_button.Button,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/copy-button.tsx"],"sourcesContent":["'use client';\n\nimport { Check, Copy } from 'lucide-react';\n\nimport { useCopyToClipboard } from '../hooks/use-copy-to-clipboard';\nimport { Button } from './ui/button';\n\ninterface CopyButtonProps {\n\tvalue: string;\n\tclassName?: string;\n}\n\nexport const CopyButton = ({ value, className }: CopyButtonProps) => {\n\tconst { isCopied, copyToClipboard } = useCopyToClipboard();\n\n\treturn (\n\t\t<Button\n\t\t\tclassName={className}\n\t\t\tsize=\"icon\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={() => copyToClipboard(value)}\n\t\t>\n\t\t\t<span className=\"nt:sr-only\">Copy</span>\n\t\t\t{isCopied ? <Check /> : <Copy />}\n\t\t</Button>\n\t);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBE;AAdF,0BAA4B;AAE5B,mCAAmC;AACnC,oBAAuB;AAOhB,MAAM,aAAa,CAAC,EAAE,OAAO,UAAU,MAAuB;AACpE,QAAM,EAAE,UAAU,gBAAgB,QAAI,iDAAmB;AAEzD,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS,MAAM,gBAAgB,KAAK;AAAA,MAEpC;AAAA,oDAAC,UAAK,WAAU,cAAa,kBAAI;AAAA,QAChC,WAAW,4CAAC,6BAAM,IAAK,4CAAC,4BAAK;AAAA;AAAA;AAAA,EAC/B;AAEF;","names":[]}
1
+ {"version":3,"sources":["../../src/components/copy-button.tsx"],"sourcesContent":["'use client';\n\nimport { Check, Copy } from 'lucide-react';\n\nimport { useCopyToClipboard } from '../hooks/use-copy-to-clipboard.js';\nimport { Button } from './ui/button.js';\n\ninterface CopyButtonProps {\n\tvalue: string;\n\tclassName?: string;\n}\n\nexport const CopyButton = ({ value, className }: CopyButtonProps) => {\n\tconst { isCopied, copyToClipboard } = useCopyToClipboard();\n\n\treturn (\n\t\t<Button\n\t\t\tclassName={className}\n\t\t\tsize=\"icon\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={() => copyToClipboard(value)}\n\t\t>\n\t\t\t<span className=\"nt:sr-only\">Copy</span>\n\t\t\t{isCopied ? <Check /> : <Copy />}\n\t\t</Button>\n\t);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA4B;AAE5B,mCAAmC;AACnC,oBAAuB;AAWrB;AAJK,IAAM,aAAa,CAAC,EAAE,OAAO,UAAU,MAAuB;AACpE,QAAM,EAAE,UAAU,gBAAgB,QAAI,iDAAmB;AAEzD,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS,MAAM,gBAAgB,KAAK;AAAA,MAEpC;AAAA,oDAAC,UAAK,WAAU,cAAa,kBAAI;AAAA,QAChC,WAAW,4CAAC,6BAAM,IAAK,4CAAC,4BAAK;AAAA;AAAA;AAAA,EAC/B;AAEF;","names":[]}
@@ -1,9 +1,11 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
2
+
3
+ // src/components/copy-button.tsx
3
4
  import { Check, Copy } from "lucide-react";
4
- import { useCopyToClipboard } from "../hooks/use-copy-to-clipboard";
5
- import { Button } from "./ui/button";
6
- const CopyButton = ({ value, className }) => {
5
+ import { useCopyToClipboard } from "../hooks/use-copy-to-clipboard.mjs";
6
+ import { Button } from "./ui/button.mjs";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ var CopyButton = ({ value, className }) => {
7
9
  const { isCopied, copyToClipboard } = useCopyToClipboard();
8
10
  return /* @__PURE__ */ jsxs(
9
11
  Button,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/copy-button.tsx"],"sourcesContent":["'use client';\n\nimport { Check, Copy } from 'lucide-react';\n\nimport { useCopyToClipboard } from '../hooks/use-copy-to-clipboard';\nimport { Button } from './ui/button';\n\ninterface CopyButtonProps {\n\tvalue: string;\n\tclassName?: string;\n}\n\nexport const CopyButton = ({ value, className }: CopyButtonProps) => {\n\tconst { isCopied, copyToClipboard } = useCopyToClipboard();\n\n\treturn (\n\t\t<Button\n\t\t\tclassName={className}\n\t\t\tsize=\"icon\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={() => copyToClipboard(value)}\n\t\t>\n\t\t\t<span className=\"nt:sr-only\">Copy</span>\n\t\t\t{isCopied ? <Check /> : <Copy />}\n\t\t</Button>\n\t);\n};\n"],"mappings":";AAgBE,SAMC,KAND;AAdF,SAAS,OAAO,YAAY;AAE5B,SAAS,0BAA0B;AACnC,SAAS,cAAc;AAOhB,MAAM,aAAa,CAAC,EAAE,OAAO,UAAU,MAAuB;AACpE,QAAM,EAAE,UAAU,gBAAgB,IAAI,mBAAmB;AAEzD,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS,MAAM,gBAAgB,KAAK;AAAA,MAEpC;AAAA,4BAAC,UAAK,WAAU,cAAa,kBAAI;AAAA,QAChC,WAAW,oBAAC,SAAM,IAAK,oBAAC,QAAK;AAAA;AAAA;AAAA,EAC/B;AAEF;","names":[]}
1
+ {"version":3,"sources":["../../src/components/copy-button.tsx"],"sourcesContent":["'use client';\n\nimport { Check, Copy } from 'lucide-react';\n\nimport { useCopyToClipboard } from '../hooks/use-copy-to-clipboard.js';\nimport { Button } from './ui/button.js';\n\ninterface CopyButtonProps {\n\tvalue: string;\n\tclassName?: string;\n}\n\nexport const CopyButton = ({ value, className }: CopyButtonProps) => {\n\tconst { isCopied, copyToClipboard } = useCopyToClipboard();\n\n\treturn (\n\t\t<Button\n\t\t\tclassName={className}\n\t\t\tsize=\"icon\"\n\t\t\tvariant=\"ghost\"\n\t\t\tonClick={() => copyToClipboard(value)}\n\t\t>\n\t\t\t<span className=\"nt:sr-only\">Copy</span>\n\t\t\t{isCopied ? <Check /> : <Copy />}\n\t\t</Button>\n\t);\n};\n"],"mappings":";;;AAEA,SAAS,OAAO,YAAY;AAE5B,SAAS,0BAA0B;AACnC,SAAS,cAAc;AAWrB,SAMC,KAND;AAJK,IAAM,aAAa,CAAC,EAAE,OAAO,UAAU,MAAuB;AACpE,QAAM,EAAE,UAAU,gBAAgB,IAAI,mBAAmB;AAEzD,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS,MAAM,gBAAgB,KAAK;AAAA,MAEpC;AAAA,4BAAC,UAAK,WAAU,cAAa,kBAAI;AAAA,QAChC,WAAW,oBAAC,SAAM,IAAK,oBAAC,QAAK;AAAA;AAAA;AAAA,EAC/B;AAEF;","names":[]}
@@ -17,19 +17,21 @@ 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/components/heading-dropdown-menu/heading-dropdown-menu.tsx
20
22
  var heading_dropdown_menu_exports = {};
21
23
  __export(heading_dropdown_menu_exports, {
22
24
  HeadingDropdownMenu: () => HeadingDropdownMenu
23
25
  });
24
26
  module.exports = __toCommonJS(heading_dropdown_menu_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
27
  var import_lucide_react = require("lucide-react");
27
28
  var import_react = require("react");
28
- var import_heading_menu_item = require("./heading-menu-item");
29
- var import_use_heading = require("./use-heading");
30
- var import_button = require("../ui/button");
31
- var import_dropdown_menu = require("../ui/dropdown-menu");
32
- const HeadingDropdownMenu = (0, import_react.forwardRef)(({ editor, levels = [1, 2, 3, 4], ...buttonProps }, ref) => {
29
+ var import_heading_menu_item = require("./heading-menu-item.cjs");
30
+ var import_use_heading = require("./use-heading.cjs");
31
+ var import_button = require("../ui/button.cjs");
32
+ var import_dropdown_menu = require("../ui/dropdown-menu.cjs");
33
+ var import_jsx_runtime = require("react/jsx-runtime");
34
+ var HeadingDropdownMenu = (0, import_react.forwardRef)(({ editor, levels = [1, 2, 3, 4], ...buttonProps }, ref) => {
33
35
  const activeLevel = (0, import_use_heading.useActiveHeadingLevel)(editor, levels);
34
36
  const TriggerIcon = (0, import_use_heading.getHeadingTriggerIcon)(activeLevel);
35
37
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dropdown_menu.DropdownMenu, { children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/heading-dropdown-menu/heading-dropdown-menu.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDown } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nimport { HeadingMenuItem } from './heading-menu-item';\nimport {\n\tgetHeadingTriggerIcon,\n\tuseActiveHeadingLevel,\n\ttype HeadingLevel\n} from './use-heading';\nimport { Button } from '../ui/button';\nimport {\n\tDropdownMenu,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuGroup\n} from '../ui/dropdown-menu';\n\nimport type { Editor } from '@tiptap/core';\nimport type { ComponentProps } from 'react';\n\nexport interface HeadingDropdownMenuProps extends Omit<\n\tComponentProps<typeof Button>,\n\t'type'\n> {\n\teditor: Editor | null;\n\tlevels?: HeadingLevel[];\n}\n\nexport const HeadingDropdownMenu = forwardRef<\n\tHTMLButtonElement,\n\tHeadingDropdownMenuProps\n>(({ editor, levels = [1, 2, 3, 4], ...buttonProps }, ref) => {\n\tconst activeLevel = useActiveHeadingLevel(editor, levels);\n\tconst TriggerIcon = getHeadingTriggerIcon(activeLevel);\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tref={ref}\n\t\t\t\t\taria-label=\"Heading\"\n\t\t\t\t\tclassName=\"nt:gap-1 nt:px-2\"\n\t\t\t\t\tdata-active-state={activeLevel !== null ? 'on' : 'off'}\n\t\t\t\t\tsize=\"default\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t>\n\t\t\t\t\t<TriggerIcon\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tactiveLevel !== null\n\t\t\t\t\t\t\t\t? 'nt:text-[var(--tt-brand-color-500)]'\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ChevronDown className=\"nt:size-3\" />\n\t\t\t\t</Button>\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent align=\"start\">\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t{levels.map((level) => (\n\t\t\t\t\t\t<HeadingMenuItem key={level} editor={editor} level={level} />\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n});\n\nHeadingDropdownMenu.displayName = 'HeadingDropdownMenu';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwCI;AAtCJ,0BAA4B;AAC5B,mBAA2B;AAE3B,+BAAgC;AAChC,yBAIO;AACP,oBAAuB;AACvB,2BAKO;AAaA,MAAM,0BAAsB,yBAGjC,CAAC,EAAE,QAAQ,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,YAAY,GAAG,QAAQ;AAC7D,QAAM,kBAAc,0CAAsB,QAAQ,MAAM;AACxD,QAAM,kBAAc,0CAAsB,WAAW;AAErD,SACC,6CAAC,qCACA;AAAA,gDAAC,4CAAoB,SAAO,MAC3B;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,cAAW;AAAA,QACX,WAAU;AAAA,QACV,qBAAmB,gBAAgB,OAAO,OAAO;AAAA,QACjD,MAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QACP,GAAG;AAAA,QAEJ;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,WACC,gBAAgB,OACb,wCACA;AAAA;AAAA,UAEL;AAAA,UACA,4CAAC,mCAAY,WAAU,aAAY;AAAA;AAAA;AAAA,IACpC,GACD;AAAA,IACA,4CAAC,4CAAoB,OAAM,SAC1B,sDAAC,0CACC,iBAAO,IAAI,CAAC,UACZ,4CAAC,4CAA4B,QAAgB,SAAvB,KAAqC,CAC3D,GACF,GACD;AAAA,KACD;AAEF,CAAC;AAED,oBAAoB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/heading-dropdown-menu/heading-dropdown-menu.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDown } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nimport { HeadingMenuItem } from './heading-menu-item.js';\nimport {\n\tgetHeadingTriggerIcon,\n\tuseActiveHeadingLevel,\n\ttype HeadingLevel\n} from './use-heading.js';\nimport { Button } from '../ui/button.js';\nimport {\n\tDropdownMenu,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuGroup\n} from '../ui/dropdown-menu.js';\n\nimport type { Editor } from '@tiptap/core';\nimport type { ComponentProps } from 'react';\n\nexport interface HeadingDropdownMenuProps extends Omit<\n\tComponentProps<typeof Button>,\n\t'type'\n> {\n\teditor: Editor | null;\n\tlevels?: HeadingLevel[];\n}\n\nexport const HeadingDropdownMenu = forwardRef<\n\tHTMLButtonElement,\n\tHeadingDropdownMenuProps\n>(({ editor, levels = [1, 2, 3, 4], ...buttonProps }, ref) => {\n\tconst activeLevel = useActiveHeadingLevel(editor, levels);\n\tconst TriggerIcon = getHeadingTriggerIcon(activeLevel);\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tref={ref}\n\t\t\t\t\taria-label=\"Heading\"\n\t\t\t\t\tclassName=\"nt:gap-1 nt:px-2\"\n\t\t\t\t\tdata-active-state={activeLevel !== null ? 'on' : 'off'}\n\t\t\t\t\tsize=\"default\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t>\n\t\t\t\t\t<TriggerIcon\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tactiveLevel !== null\n\t\t\t\t\t\t\t\t? 'nt:text-[var(--tt-brand-color-500)]'\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ChevronDown className=\"nt:size-3\" />\n\t\t\t\t</Button>\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent align=\"start\">\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t{levels.map((level) => (\n\t\t\t\t\t\t<HeadingMenuItem key={level} editor={editor} level={level} />\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n});\n\nHeadingDropdownMenu.displayName = 'HeadingDropdownMenu';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA4B;AAC5B,mBAA2B;AAE3B,+BAAgC;AAChC,yBAIO;AACP,oBAAuB;AACvB,2BAKO;AAuBH;AAVG,IAAM,0BAAsB,yBAGjC,CAAC,EAAE,QAAQ,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,YAAY,GAAG,QAAQ;AAC7D,QAAM,kBAAc,0CAAsB,QAAQ,MAAM;AACxD,QAAM,kBAAc,0CAAsB,WAAW;AAErD,SACC,6CAAC,qCACA;AAAA,gDAAC,4CAAoB,SAAO,MAC3B;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,cAAW;AAAA,QACX,WAAU;AAAA,QACV,qBAAmB,gBAAgB,OAAO,OAAO;AAAA,QACjD,MAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QACP,GAAG;AAAA,QAEJ;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,WACC,gBAAgB,OACb,wCACA;AAAA;AAAA,UAEL;AAAA,UACA,4CAAC,mCAAY,WAAU,aAAY;AAAA;AAAA;AAAA,IACpC,GACD;AAAA,IACA,4CAAC,4CAAoB,OAAM,SAC1B,sDAAC,0CACC,iBAAO,IAAI,CAAC,UACZ,4CAAC,4CAA4B,QAAgB,SAAvB,KAAqC,CAC3D,GACF,GACD;AAAA,KACD;AAEF,CAAC;AAED,oBAAoB,cAAc;","names":[]}
@@ -1,20 +1,22 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
2
+
3
+ // src/components/heading-dropdown-menu/heading-dropdown-menu.tsx
3
4
  import { ChevronDown } from "lucide-react";
4
5
  import { forwardRef } from "react";
5
- import { HeadingMenuItem } from "./heading-menu-item";
6
+ import { HeadingMenuItem } from "./heading-menu-item.mjs";
6
7
  import {
7
8
  getHeadingTriggerIcon,
8
9
  useActiveHeadingLevel
9
- } from "./use-heading";
10
- import { Button } from "../ui/button";
10
+ } from "./use-heading.mjs";
11
+ import { Button } from "../ui/button.mjs";
11
12
  import {
12
13
  DropdownMenu,
13
14
  DropdownMenuTrigger,
14
15
  DropdownMenuContent,
15
16
  DropdownMenuGroup
16
- } from "../ui/dropdown-menu";
17
- const HeadingDropdownMenu = forwardRef(({ editor, levels = [1, 2, 3, 4], ...buttonProps }, ref) => {
17
+ } from "../ui/dropdown-menu.mjs";
18
+ import { jsx, jsxs } from "react/jsx-runtime";
19
+ var HeadingDropdownMenu = forwardRef(({ editor, levels = [1, 2, 3, 4], ...buttonProps }, ref) => {
18
20
  const activeLevel = useActiveHeadingLevel(editor, levels);
19
21
  const TriggerIcon = getHeadingTriggerIcon(activeLevel);
20
22
  return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/heading-dropdown-menu/heading-dropdown-menu.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDown } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nimport { HeadingMenuItem } from './heading-menu-item';\nimport {\n\tgetHeadingTriggerIcon,\n\tuseActiveHeadingLevel,\n\ttype HeadingLevel\n} from './use-heading';\nimport { Button } from '../ui/button';\nimport {\n\tDropdownMenu,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuGroup\n} from '../ui/dropdown-menu';\n\nimport type { Editor } from '@tiptap/core';\nimport type { ComponentProps } from 'react';\n\nexport interface HeadingDropdownMenuProps extends Omit<\n\tComponentProps<typeof Button>,\n\t'type'\n> {\n\teditor: Editor | null;\n\tlevels?: HeadingLevel[];\n}\n\nexport const HeadingDropdownMenu = forwardRef<\n\tHTMLButtonElement,\n\tHeadingDropdownMenuProps\n>(({ editor, levels = [1, 2, 3, 4], ...buttonProps }, ref) => {\n\tconst activeLevel = useActiveHeadingLevel(editor, levels);\n\tconst TriggerIcon = getHeadingTriggerIcon(activeLevel);\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tref={ref}\n\t\t\t\t\taria-label=\"Heading\"\n\t\t\t\t\tclassName=\"nt:gap-1 nt:px-2\"\n\t\t\t\t\tdata-active-state={activeLevel !== null ? 'on' : 'off'}\n\t\t\t\t\tsize=\"default\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t>\n\t\t\t\t\t<TriggerIcon\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tactiveLevel !== null\n\t\t\t\t\t\t\t\t? 'nt:text-[var(--tt-brand-color-500)]'\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ChevronDown className=\"nt:size-3\" />\n\t\t\t\t</Button>\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent align=\"start\">\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t{levels.map((level) => (\n\t\t\t\t\t\t<HeadingMenuItem key={level} editor={editor} level={level} />\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n});\n\nHeadingDropdownMenu.displayName = 'HeadingDropdownMenu';\n"],"mappings":";AAwCI,SAWC,KAXD;AAtCJ,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAE3B,SAAS,uBAAuB;AAChC;AAAA,EACC;AAAA,EACA;AAAA,OAEM;AACP,SAAS,cAAc;AACvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAaA,MAAM,sBAAsB,WAGjC,CAAC,EAAE,QAAQ,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,YAAY,GAAG,QAAQ;AAC7D,QAAM,cAAc,sBAAsB,QAAQ,MAAM;AACxD,QAAM,cAAc,sBAAsB,WAAW;AAErD,SACC,qBAAC,gBACA;AAAA,wBAAC,uBAAoB,SAAO,MAC3B;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,cAAW;AAAA,QACX,WAAU;AAAA,QACV,qBAAmB,gBAAgB,OAAO,OAAO;AAAA,QACjD,MAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QACP,GAAG;AAAA,QAEJ;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,WACC,gBAAgB,OACb,wCACA;AAAA;AAAA,UAEL;AAAA,UACA,oBAAC,eAAY,WAAU,aAAY;AAAA;AAAA;AAAA,IACpC,GACD;AAAA,IACA,oBAAC,uBAAoB,OAAM,SAC1B,8BAAC,qBACC,iBAAO,IAAI,CAAC,UACZ,oBAAC,mBAA4B,QAAgB,SAAvB,KAAqC,CAC3D,GACF,GACD;AAAA,KACD;AAEF,CAAC;AAED,oBAAoB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/heading-dropdown-menu/heading-dropdown-menu.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDown } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nimport { HeadingMenuItem } from './heading-menu-item.js';\nimport {\n\tgetHeadingTriggerIcon,\n\tuseActiveHeadingLevel,\n\ttype HeadingLevel\n} from './use-heading.js';\nimport { Button } from '../ui/button.js';\nimport {\n\tDropdownMenu,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuGroup\n} from '../ui/dropdown-menu.js';\n\nimport type { Editor } from '@tiptap/core';\nimport type { ComponentProps } from 'react';\n\nexport interface HeadingDropdownMenuProps extends Omit<\n\tComponentProps<typeof Button>,\n\t'type'\n> {\n\teditor: Editor | null;\n\tlevels?: HeadingLevel[];\n}\n\nexport const HeadingDropdownMenu = forwardRef<\n\tHTMLButtonElement,\n\tHeadingDropdownMenuProps\n>(({ editor, levels = [1, 2, 3, 4], ...buttonProps }, ref) => {\n\tconst activeLevel = useActiveHeadingLevel(editor, levels);\n\tconst TriggerIcon = getHeadingTriggerIcon(activeLevel);\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tref={ref}\n\t\t\t\t\taria-label=\"Heading\"\n\t\t\t\t\tclassName=\"nt:gap-1 nt:px-2\"\n\t\t\t\t\tdata-active-state={activeLevel !== null ? 'on' : 'off'}\n\t\t\t\t\tsize=\"default\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t>\n\t\t\t\t\t<TriggerIcon\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tactiveLevel !== null\n\t\t\t\t\t\t\t\t? 'nt:text-[var(--tt-brand-color-500)]'\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ChevronDown className=\"nt:size-3\" />\n\t\t\t\t</Button>\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent align=\"start\">\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t{levels.map((level) => (\n\t\t\t\t\t\t<HeadingMenuItem key={level} editor={editor} level={level} />\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n});\n\nHeadingDropdownMenu.displayName = 'HeadingDropdownMenu';\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAE3B,SAAS,uBAAuB;AAChC;AAAA,EACC;AAAA,EACA;AAAA,OAEM;AACP,SAAS,cAAc;AACvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAuBH,SAWC,KAXD;AAVG,IAAM,sBAAsB,WAGjC,CAAC,EAAE,QAAQ,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,YAAY,GAAG,QAAQ;AAC7D,QAAM,cAAc,sBAAsB,QAAQ,MAAM;AACxD,QAAM,cAAc,sBAAsB,WAAW;AAErD,SACC,qBAAC,gBACA;AAAA,wBAAC,uBAAoB,SAAO,MAC3B;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,cAAW;AAAA,QACX,WAAU;AAAA,QACV,qBAAmB,gBAAgB,OAAO,OAAO;AAAA,QACjD,MAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QACP,GAAG;AAAA,QAEJ;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,WACC,gBAAgB,OACb,wCACA;AAAA;AAAA,UAEL;AAAA,UACA,oBAAC,eAAY,WAAU,aAAY;AAAA;AAAA;AAAA,IACpC,GACD;AAAA,IACA,oBAAC,uBAAoB,OAAM,SAC1B,8BAAC,qBACC,iBAAO,IAAI,CAAC,UACZ,oBAAC,mBAA4B,QAAgB,SAAvB,KAAqC,CAC3D,GACF,GACD;AAAA,KACD;AAEF,CAAC;AAED,oBAAoB,cAAc;","names":[]}
@@ -16,16 +16,18 @@ 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/components/heading-dropdown-menu/heading-menu-item.tsx
19
21
  var heading_menu_item_exports = {};
20
22
  __export(heading_menu_item_exports, {
21
23
  HeadingMenuItem: () => HeadingMenuItem
22
24
  });
23
25
  module.exports = __toCommonJS(heading_menu_item_exports);
24
- var import_jsx_runtime = require("react/jsx-runtime");
25
26
  var import_react = require("react");
26
- var import_use_heading = require("./use-heading");
27
- var import_dropdown_menu = require("../ui/dropdown-menu");
28
- const HeadingMenuItem = (0, import_react.forwardRef)(
27
+ var import_use_heading = require("./use-heading.cjs");
28
+ var import_dropdown_menu = require("../ui/dropdown-menu.cjs");
29
+ var import_jsx_runtime = require("react/jsx-runtime");
30
+ var HeadingMenuItem = (0, import_react.forwardRef)(
29
31
  ({ editor, level }, ref) => {
30
32
  const { isActive, canToggle, handleToggle, label, Icon } = (0, import_use_heading.useHeading)({
31
33
  editor,