notra-editor 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +4 -8
  2. package/dist/components/blockquote-button/blockquote-button.cjs +91 -0
  3. package/dist/components/blockquote-button/blockquote-button.cjs.map +1 -0
  4. package/dist/components/blockquote-button/blockquote-button.d.cts +9 -0
  5. package/dist/components/blockquote-button/blockquote-button.d.ts +9 -0
  6. package/dist/components/blockquote-button/blockquote-button.mjs +67 -0
  7. package/dist/components/blockquote-button/blockquote-button.mjs.map +1 -0
  8. package/dist/components/code-block-button/code-block-button.cjs +91 -0
  9. package/dist/components/code-block-button/code-block-button.cjs.map +1 -0
  10. package/dist/components/code-block-button/code-block-button.d.cts +9 -0
  11. package/dist/components/code-block-button/code-block-button.d.ts +9 -0
  12. package/dist/components/code-block-button/code-block-button.mjs +67 -0
  13. package/dist/components/code-block-button/code-block-button.mjs.map +1 -0
  14. package/dist/components/code-block-view.cjs +39 -0
  15. package/dist/components/code-block-view.cjs.map +1 -0
  16. package/dist/components/code-block-view.d.cts +12 -0
  17. package/dist/components/code-block-view.d.ts +12 -0
  18. package/dist/components/code-block-view.mjs +17 -0
  19. package/dist/components/code-block-view.mjs.map +1 -0
  20. package/dist/components/copy-button.cjs +49 -0
  21. package/dist/components/copy-button.cjs.map +1 -0
  22. package/dist/components/copy-button.d.cts +9 -0
  23. package/dist/components/copy-button.d.ts +9 -0
  24. package/dist/components/copy-button.mjs +25 -0
  25. package/dist/components/copy-button.mjs.map +1 -0
  26. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.cjs +67 -0
  27. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.cjs.map +1 -0
  28. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.d.cts +17 -0
  29. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.d.ts +17 -0
  30. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.mjs +51 -0
  31. package/dist/components/heading-dropdown-menu/heading-dropdown-menu.mjs.map +1 -0
  32. package/dist/components/heading-dropdown-menu/heading-menu-item.cjs +56 -0
  33. package/dist/components/heading-dropdown-menu/heading-menu-item.cjs.map +1 -0
  34. package/dist/components/heading-dropdown-menu/heading-menu-item.d.cts +12 -0
  35. package/dist/components/heading-dropdown-menu/heading-menu-item.d.ts +12 -0
  36. package/dist/components/heading-dropdown-menu/heading-menu-item.mjs +32 -0
  37. package/dist/components/heading-dropdown-menu/heading-menu-item.mjs.map +1 -0
  38. package/dist/components/heading-dropdown-menu/use-heading.cjs +109 -0
  39. package/dist/components/heading-dropdown-menu/use-heading.cjs.map +1 -0
  40. package/dist/components/heading-dropdown-menu/use-heading.d.cts +19 -0
  41. package/dist/components/heading-dropdown-menu/use-heading.d.ts +19 -0
  42. package/dist/components/heading-dropdown-menu/use-heading.mjs +83 -0
  43. package/dist/components/heading-dropdown-menu/use-heading.mjs.map +1 -0
  44. package/dist/components/link-popover/link-popover.cjs +148 -0
  45. package/dist/components/link-popover/link-popover.cjs.map +1 -0
  46. package/dist/components/link-popover/link-popover.d.cts +9 -0
  47. package/dist/components/link-popover/link-popover.d.ts +9 -0
  48. package/dist/components/link-popover/link-popover.mjs +129 -0
  49. package/dist/components/link-popover/link-popover.mjs.map +1 -0
  50. package/dist/components/link-popover/use-link-popover.cjs +71 -0
  51. package/dist/components/link-popover/use-link-popover.cjs.map +1 -0
  52. package/dist/components/link-popover/use-link-popover.d.cts +17 -0
  53. package/dist/components/link-popover/use-link-popover.d.ts +17 -0
  54. package/dist/components/link-popover/use-link-popover.mjs +47 -0
  55. package/dist/components/link-popover/use-link-popover.mjs.map +1 -0
  56. package/dist/components/list-dropdown-menu/list-dropdown-menu.cjs +73 -0
  57. package/dist/components/list-dropdown-menu/list-dropdown-menu.cjs.map +1 -0
  58. package/dist/components/list-dropdown-menu/list-dropdown-menu.d.cts +17 -0
  59. package/dist/components/list-dropdown-menu/list-dropdown-menu.d.ts +17 -0
  60. package/dist/components/list-dropdown-menu/list-dropdown-menu.mjs +57 -0
  61. package/dist/components/list-dropdown-menu/list-dropdown-menu.mjs.map +1 -0
  62. package/dist/components/list-dropdown-menu/list-menu-item.cjs +56 -0
  63. package/dist/components/list-dropdown-menu/list-menu-item.cjs.map +1 -0
  64. package/dist/components/list-dropdown-menu/list-menu-item.d.cts +12 -0
  65. package/dist/components/list-dropdown-menu/list-menu-item.d.ts +12 -0
  66. package/dist/components/list-dropdown-menu/list-menu-item.mjs +32 -0
  67. package/dist/components/list-dropdown-menu/list-menu-item.mjs.map +1 -0
  68. package/dist/components/list-dropdown-menu/use-list.cjs +111 -0
  69. package/dist/components/list-dropdown-menu/use-list.cjs.map +1 -0
  70. package/dist/components/list-dropdown-menu/use-list.d.cts +19 -0
  71. package/dist/components/list-dropdown-menu/use-list.d.ts +19 -0
  72. package/dist/components/list-dropdown-menu/use-list.mjs +85 -0
  73. package/dist/components/list-dropdown-menu/use-list.mjs.map +1 -0
  74. package/dist/components/mark-button/mark-button.cjs +72 -0
  75. package/dist/components/mark-button/mark-button.cjs.map +1 -0
  76. package/dist/components/mark-button/mark-button.d.cts +12 -0
  77. package/dist/components/mark-button/mark-button.d.ts +12 -0
  78. package/dist/components/mark-button/mark-button.mjs +48 -0
  79. package/dist/components/mark-button/mark-button.mjs.map +1 -0
  80. package/dist/components/mark-button/use-mark.cjs +71 -0
  81. package/dist/components/mark-button/use-mark.cjs.map +1 -0
  82. package/dist/components/mark-button/use-mark.d.cts +17 -0
  83. package/dist/components/mark-button/use-mark.d.ts +17 -0
  84. package/dist/components/mark-button/use-mark.mjs +47 -0
  85. package/dist/components/mark-button/use-mark.mjs.map +1 -0
  86. package/dist/components/toolbar/toolbar.cjs +77 -0
  87. package/dist/components/toolbar/toolbar.cjs.map +1 -0
  88. package/dist/components/toolbar/toolbar.d.cts +14 -0
  89. package/dist/components/toolbar/toolbar.d.ts +14 -0
  90. package/dist/components/toolbar/toolbar.mjs +51 -0
  91. package/dist/components/toolbar/toolbar.mjs.map +1 -0
  92. package/dist/components/ui/button.cjs +82 -0
  93. package/dist/components/ui/button.cjs.map +1 -0
  94. package/dist/components/ui/button.d.cts +14 -0
  95. package/dist/components/ui/button.d.ts +14 -0
  96. package/dist/components/ui/button.mjs +57 -0
  97. package/dist/components/ui/button.mjs.map +1 -0
  98. package/dist/components/ui/dropdown-menu.cjs +290 -0
  99. package/dist/components/ui/dropdown-menu.cjs.map +1 -0
  100. package/dist/components/ui/dropdown-menu.d.cts +32 -0
  101. package/dist/components/ui/dropdown-menu.d.ts +32 -0
  102. package/dist/components/ui/dropdown-menu.mjs +252 -0
  103. package/dist/components/ui/dropdown-menu.mjs.map +1 -0
  104. package/dist/components/ui/input.cjs +44 -0
  105. package/dist/components/ui/input.cjs.map +1 -0
  106. package/dist/components/ui/input.d.cts +6 -0
  107. package/dist/components/ui/input.d.ts +6 -0
  108. package/dist/components/ui/input.mjs +20 -0
  109. package/dist/components/ui/input.mjs.map +1 -0
  110. package/dist/components/ui/popover.cjs +72 -0
  111. package/dist/components/ui/popover.cjs.map +1 -0
  112. package/dist/components/ui/popover.d.cts +10 -0
  113. package/dist/components/ui/popover.d.ts +10 -0
  114. package/dist/components/ui/popover.mjs +45 -0
  115. package/dist/components/ui/popover.mjs.map +1 -0
  116. package/dist/components/ui/separator.cjs +51 -0
  117. package/dist/components/ui/separator.cjs.map +1 -0
  118. package/dist/components/ui/separator.d.cts +7 -0
  119. package/dist/components/ui/separator.d.ts +7 -0
  120. package/dist/components/ui/separator.mjs +27 -0
  121. package/dist/components/ui/separator.mjs.map +1 -0
  122. package/dist/components/ui/spacer.cjs +32 -0
  123. package/dist/components/ui/spacer.cjs.map +1 -0
  124. package/dist/components/ui/spacer.d.cts +5 -0
  125. package/dist/components/ui/spacer.d.ts +5 -0
  126. package/dist/components/ui/spacer.mjs +8 -0
  127. package/dist/components/ui/spacer.mjs.map +1 -0
  128. package/dist/components/undo-redo-button/undo-redo-button.cjs +63 -0
  129. package/dist/components/undo-redo-button/undo-redo-button.cjs.map +1 -0
  130. package/dist/components/undo-redo-button/undo-redo-button.d.cts +12 -0
  131. package/dist/components/undo-redo-button/undo-redo-button.d.ts +12 -0
  132. package/dist/components/undo-redo-button/undo-redo-button.mjs +39 -0
  133. package/dist/components/undo-redo-button/undo-redo-button.mjs.map +1 -0
  134. package/dist/components/undo-redo-button/use-undo-redo.cjs +68 -0
  135. package/dist/components/undo-redo-button/use-undo-redo.cjs.map +1 -0
  136. package/dist/components/undo-redo-button/use-undo-redo.d.cts +17 -0
  137. package/dist/components/undo-redo-button/use-undo-redo.d.ts +17 -0
  138. package/dist/components/undo-redo-button/use-undo-redo.mjs +44 -0
  139. package/dist/components/undo-redo-button/use-undo-redo.mjs.map +1 -0
  140. package/dist/extensions/code-block.cjs +46 -0
  141. package/dist/extensions/code-block.cjs.map +1 -0
  142. package/dist/extensions/code-block.d.cts +6 -0
  143. package/dist/extensions/code-block.d.ts +6 -0
  144. package/dist/extensions/code-block.mjs +12 -0
  145. package/dist/extensions/code-block.mjs.map +1 -0
  146. package/dist/extensions/editor.cjs +53 -0
  147. package/dist/extensions/editor.cjs.map +1 -0
  148. package/dist/extensions/editor.d.cts +9 -0
  149. package/dist/extensions/editor.d.ts +9 -0
  150. package/dist/extensions/editor.mjs +19 -0
  151. package/dist/extensions/editor.mjs.map +1 -0
  152. package/dist/extensions/index.cjs +32 -0
  153. package/dist/extensions/index.cjs.map +1 -0
  154. package/dist/extensions/index.d.cts +7 -0
  155. package/dist/extensions/index.d.ts +7 -0
  156. package/dist/extensions/index.mjs +7 -0
  157. package/dist/extensions/index.mjs.map +1 -0
  158. package/dist/extensions/shared.cjs +64 -0
  159. package/dist/extensions/shared.cjs.map +1 -0
  160. package/dist/extensions/shared.d.cts +8 -0
  161. package/dist/extensions/shared.d.ts +8 -0
  162. package/dist/extensions/shared.mjs +29 -0
  163. package/dist/extensions/shared.mjs.map +1 -0
  164. package/dist/hooks/use-copy-to-clipboard.cjs +50 -0
  165. package/dist/hooks/use-copy-to-clipboard.cjs.map +1 -0
  166. package/dist/hooks/use-copy-to-clipboard.d.cts +10 -0
  167. package/dist/hooks/use-copy-to-clipboard.d.ts +10 -0
  168. package/dist/hooks/use-copy-to-clipboard.mjs +26 -0
  169. package/dist/hooks/use-copy-to-clipboard.mjs.map +1 -0
  170. package/dist/hooks/use-markdown-editor.cjs +80 -0
  171. package/dist/hooks/use-markdown-editor.cjs.map +1 -0
  172. package/dist/hooks/use-markdown-editor.d.cts +13 -0
  173. package/dist/hooks/use-markdown-editor.d.ts +13 -0
  174. package/dist/hooks/use-markdown-editor.mjs +56 -0
  175. package/dist/hooks/use-markdown-editor.mjs.map +1 -0
  176. package/dist/icons/redo-icon.cjs +54 -0
  177. package/dist/icons/redo-icon.cjs.map +1 -0
  178. package/dist/icons/redo-icon.d.cts +7 -0
  179. package/dist/icons/redo-icon.d.ts +7 -0
  180. package/dist/icons/redo-icon.mjs +30 -0
  181. package/dist/icons/redo-icon.mjs.map +1 -0
  182. package/dist/icons/undo-icon.cjs +54 -0
  183. package/dist/icons/undo-icon.cjs.map +1 -0
  184. package/dist/icons/undo-icon.d.cts +7 -0
  185. package/dist/icons/undo-icon.d.ts +7 -0
  186. package/dist/icons/undo-icon.mjs +30 -0
  187. package/dist/icons/undo-icon.mjs.map +1 -0
  188. package/dist/index.cjs +24 -1322
  189. package/dist/index.cjs.map +1 -1
  190. package/dist/index.d.cts +22 -105
  191. package/dist/index.d.ts +22 -105
  192. package/dist/index.mjs +14 -1301
  193. package/dist/index.mjs.map +1 -1
  194. package/dist/lib/utils.cjs +33 -0
  195. package/dist/lib/utils.cjs.map +1 -0
  196. package/dist/lib/utils.d.cts +5 -0
  197. package/dist/lib/utils.d.ts +5 -0
  198. package/dist/lib/utils.mjs +9 -0
  199. package/dist/lib/utils.mjs.map +1 -0
  200. package/dist/notra-editor.cjs +88 -0
  201. package/dist/notra-editor.cjs.map +1 -0
  202. package/dist/notra-editor.d.cts +17 -0
  203. package/dist/notra-editor.d.ts +17 -0
  204. package/dist/notra-editor.mjs +68 -0
  205. package/dist/notra-editor.mjs.map +1 -0
  206. package/dist/notra-reader.cjs +47 -0
  207. package/dist/notra-reader.cjs.map +1 -0
  208. package/dist/notra-reader.d.cts +11 -0
  209. package/dist/notra-reader.d.ts +11 -0
  210. package/dist/notra-reader.mjs +23 -0
  211. package/dist/notra-reader.mjs.map +1 -0
  212. package/dist/styles/globals.css +29 -0
  213. package/dist/themes/default/editor.css +2 -0
  214. package/dist/themes/default/reader.css +2 -0
  215. package/dist/utils/markdown-to-json.cjs +50 -0
  216. package/dist/utils/markdown-to-json.cjs.map +1 -0
  217. package/dist/utils/markdown-to-json.d.cts +7 -0
  218. package/dist/utils/markdown-to-json.d.ts +7 -0
  219. package/dist/utils/markdown-to-json.mjs +26 -0
  220. package/dist/utils/markdown-to-json.mjs.map +1 -0
  221. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/undo-redo-button/use-undo-redo.ts"],"sourcesContent":["import { Undo2, Redo2 } from 'lucide-react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport type { Editor } from '@tiptap/core';\n\nexport type UndoRedoAction = 'undo' | 'redo';\n\nexport interface UseUndoRedoConfig {\n\teditor: Editor | null;\n\taction: UndoRedoAction;\n}\n\nconst actionLabels: Record<UndoRedoAction, string> = {\n\tundo: 'Undo',\n\tredo: 'Redo'\n};\n\nconst actionIcons = {\n\tundo: Undo2,\n\tredo: Redo2\n};\n\nfunction canExecuteAction(\n\teditor: Editor | null,\n\taction: UndoRedoAction\n): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn action === 'undo' ? editor.can().undo() : editor.can().redo();\n}\n\nexport function useUndoRedo({ editor, action }: UseUndoRedoConfig) {\n\tconst [canExecute, setCanExecute] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst handleUpdate = () => {\n\t\t\tsetCanExecute(canExecuteAction(editor, action));\n\t\t};\n\n\t\thandleUpdate();\n\n\t\teditor.on('transaction', handleUpdate);\n\n\t\treturn () => {\n\t\t\teditor.off('transaction', handleUpdate);\n\t\t};\n\t}, [editor, action]);\n\n\tconst handleAction = useCallback(() => {\n\t\tif (!editor || !editor.isEditable) return false;\n\n\t\tif (!canExecuteAction(editor, action)) return false;\n\n\t\tconst chain = editor.chain().focus();\n\n\t\treturn action === 'undo' ? chain.undo().run() : chain.redo().run();\n\t}, [editor, action]);\n\n\treturn {\n\t\tcanExecute,\n\t\thandleAction,\n\t\tlabel: actionLabels[action],\n\t\tIcon: actionIcons[action]\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;AAC7B,mBAAiD;AAWjD,MAAM,eAA+C;AAAA,EACpD,MAAM;AAAA,EACN,MAAM;AACP;AAEA,MAAM,cAAc;AAAA,EACnB,MAAM;AAAA,EACN,MAAM;AACP;AAEA,SAAS,iBACR,QACA,QACU;AACV,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SAAO,WAAW,SAAS,OAAO,IAAI,EAAE,KAAK,IAAI,OAAO,IAAI,EAAE,KAAK;AACpE;AAEO,SAAS,YAAY,EAAE,QAAQ,OAAO,GAAsB;AAClE,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,KAAK;AAElD,8BAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,eAAe,MAAM;AAC1B,oBAAc,iBAAiB,QAAQ,MAAM,CAAC;AAAA,IAC/C;AAEA,iBAAa;AAEb,WAAO,GAAG,eAAe,YAAY;AAErC,WAAO,MAAM;AACZ,aAAO,IAAI,eAAe,YAAY;AAAA,IACvC;AAAA,EACD,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,QAAM,mBAAe,0BAAY,MAAM;AACtC,QAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,QAAI,CAAC,iBAAiB,QAAQ,MAAM,EAAG,QAAO;AAE9C,UAAM,QAAQ,OAAO,MAAM,EAAE,MAAM;AAEnC,WAAO,WAAW,SAAS,MAAM,KAAK,EAAE,IAAI,IAAI,MAAM,KAAK,EAAE,IAAI;AAAA,EAClE,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,OAAO,aAAa,MAAM;AAAA,IAC1B,MAAM,YAAY,MAAM;AAAA,EACzB;AACD;","names":[]}
@@ -0,0 +1,17 @@
1
+ import * as react from 'react';
2
+ import * as lucide_react from 'lucide-react';
3
+ import { Editor } from '@tiptap/core';
4
+
5
+ type UndoRedoAction = 'undo' | 'redo';
6
+ interface UseUndoRedoConfig {
7
+ editor: Editor | null;
8
+ action: UndoRedoAction;
9
+ }
10
+ declare function useUndoRedo({ editor, action }: UseUndoRedoConfig): {
11
+ canExecute: boolean;
12
+ handleAction: () => boolean;
13
+ label: string;
14
+ Icon: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
15
+ };
16
+
17
+ export { type UndoRedoAction, type UseUndoRedoConfig, useUndoRedo };
@@ -0,0 +1,17 @@
1
+ import * as react from 'react';
2
+ import * as lucide_react from 'lucide-react';
3
+ import { Editor } from '@tiptap/core';
4
+
5
+ type UndoRedoAction = 'undo' | 'redo';
6
+ interface UseUndoRedoConfig {
7
+ editor: Editor | null;
8
+ action: UndoRedoAction;
9
+ }
10
+ declare function useUndoRedo({ editor, action }: UseUndoRedoConfig): {
11
+ canExecute: boolean;
12
+ handleAction: () => boolean;
13
+ label: string;
14
+ Icon: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
15
+ };
16
+
17
+ export { type UndoRedoAction, type UseUndoRedoConfig, useUndoRedo };
@@ -0,0 +1,44 @@
1
+ import { Undo2, Redo2 } from "lucide-react";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ const actionLabels = {
4
+ undo: "Undo",
5
+ redo: "Redo"
6
+ };
7
+ const actionIcons = {
8
+ undo: Undo2,
9
+ redo: Redo2
10
+ };
11
+ function canExecuteAction(editor, action) {
12
+ if (!editor || !editor.isEditable) return false;
13
+ return action === "undo" ? editor.can().undo() : editor.can().redo();
14
+ }
15
+ function useUndoRedo({ editor, action }) {
16
+ const [canExecute, setCanExecute] = useState(false);
17
+ useEffect(() => {
18
+ if (!editor) return;
19
+ const handleUpdate = () => {
20
+ setCanExecute(canExecuteAction(editor, action));
21
+ };
22
+ handleUpdate();
23
+ editor.on("transaction", handleUpdate);
24
+ return () => {
25
+ editor.off("transaction", handleUpdate);
26
+ };
27
+ }, [editor, action]);
28
+ const handleAction = useCallback(() => {
29
+ if (!editor || !editor.isEditable) return false;
30
+ if (!canExecuteAction(editor, action)) return false;
31
+ const chain = editor.chain().focus();
32
+ return action === "undo" ? chain.undo().run() : chain.redo().run();
33
+ }, [editor, action]);
34
+ return {
35
+ canExecute,
36
+ handleAction,
37
+ label: actionLabels[action],
38
+ Icon: actionIcons[action]
39
+ };
40
+ }
41
+ export {
42
+ useUndoRedo
43
+ };
44
+ //# sourceMappingURL=use-undo-redo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/undo-redo-button/use-undo-redo.ts"],"sourcesContent":["import { Undo2, Redo2 } from 'lucide-react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport type { Editor } from '@tiptap/core';\n\nexport type UndoRedoAction = 'undo' | 'redo';\n\nexport interface UseUndoRedoConfig {\n\teditor: Editor | null;\n\taction: UndoRedoAction;\n}\n\nconst actionLabels: Record<UndoRedoAction, string> = {\n\tundo: 'Undo',\n\tredo: 'Redo'\n};\n\nconst actionIcons = {\n\tundo: Undo2,\n\tredo: Redo2\n};\n\nfunction canExecuteAction(\n\teditor: Editor | null,\n\taction: UndoRedoAction\n): boolean {\n\tif (!editor || !editor.isEditable) return false;\n\n\treturn action === 'undo' ? editor.can().undo() : editor.can().redo();\n}\n\nexport function useUndoRedo({ editor, action }: UseUndoRedoConfig) {\n\tconst [canExecute, setCanExecute] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\n\t\tconst handleUpdate = () => {\n\t\t\tsetCanExecute(canExecuteAction(editor, action));\n\t\t};\n\n\t\thandleUpdate();\n\n\t\teditor.on('transaction', handleUpdate);\n\n\t\treturn () => {\n\t\t\teditor.off('transaction', handleUpdate);\n\t\t};\n\t}, [editor, action]);\n\n\tconst handleAction = useCallback(() => {\n\t\tif (!editor || !editor.isEditable) return false;\n\n\t\tif (!canExecuteAction(editor, action)) return false;\n\n\t\tconst chain = editor.chain().focus();\n\n\t\treturn action === 'undo' ? chain.undo().run() : chain.redo().run();\n\t}, [editor, action]);\n\n\treturn {\n\t\tcanExecute,\n\t\thandleAction,\n\t\tlabel: actionLabels[action],\n\t\tIcon: actionIcons[action]\n\t};\n}\n"],"mappings":"AAAA,SAAS,OAAO,aAAa;AAC7B,SAAS,aAAa,WAAW,gBAAgB;AAWjD,MAAM,eAA+C;AAAA,EACpD,MAAM;AAAA,EACN,MAAM;AACP;AAEA,MAAM,cAAc;AAAA,EACnB,MAAM;AAAA,EACN,MAAM;AACP;AAEA,SAAS,iBACR,QACA,QACU;AACV,MAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,SAAO,WAAW,SAAS,OAAO,IAAI,EAAE,KAAK,IAAI,OAAO,IAAI,EAAE,KAAK;AACpE;AAEO,SAAS,YAAY,EAAE,QAAQ,OAAO,GAAsB;AAClE,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,YAAU,MAAM;AACf,QAAI,CAAC,OAAQ;AAEb,UAAM,eAAe,MAAM;AAC1B,oBAAc,iBAAiB,QAAQ,MAAM,CAAC;AAAA,IAC/C;AAEA,iBAAa;AAEb,WAAO,GAAG,eAAe,YAAY;AAErC,WAAO,MAAM;AACZ,aAAO,IAAI,eAAe,YAAY;AAAA,IACvC;AAAA,EACD,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,QAAM,eAAe,YAAY,MAAM;AACtC,QAAI,CAAC,UAAU,CAAC,OAAO,WAAY,QAAO;AAE1C,QAAI,CAAC,iBAAiB,QAAQ,MAAM,EAAG,QAAO;AAE9C,UAAM,QAAQ,OAAO,MAAM,EAAE,MAAM;AAEnC,WAAO,WAAW,SAAS,MAAM,KAAK,EAAE,IAAI,IAAI,MAAM,KAAK,EAAE,IAAI;AAAA,EAClE,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,OAAO,aAAa,MAAM;AAAA,IAC1B,MAAM,YAAY,MAAM;AAAA,EACzB;AACD;","names":[]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var code_block_exports = {};
30
+ __export(code_block_exports, {
31
+ CodeBlockExtension: () => CodeBlockExtension
32
+ });
33
+ module.exports = __toCommonJS(code_block_exports);
34
+ var import_extension_code_block = __toESM(require("@tiptap/extension-code-block"), 1);
35
+ var import_react = require("@tiptap/react");
36
+ var import_code_block_view = require("../components/code-block-view");
37
+ const CodeBlockExtension = import_extension_code_block.default.extend({
38
+ addNodeView() {
39
+ return (0, import_react.ReactNodeViewRenderer)(import_code_block_view.CodeBlockView);
40
+ }
41
+ });
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ CodeBlockExtension
45
+ });
46
+ //# sourceMappingURL=code-block.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/code-block.ts"],"sourcesContent":["import CodeBlock from '@tiptap/extension-code-block';\nimport { ReactNodeViewRenderer } from '@tiptap/react';\n\nimport { CodeBlockView } from '../components/code-block-view';\n\nexport const CodeBlockExtension = CodeBlock.extend({\n\taddNodeView() {\n\t\treturn ReactNodeViewRenderer(CodeBlockView);\n\t}\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAAsB;AACtB,mBAAsC;AAEtC,6BAA8B;AAEvB,MAAM,qBAAqB,4BAAAA,QAAU,OAAO;AAAA,EAClD,cAAc;AACb,eAAO,oCAAsB,oCAAa;AAAA,EAC3C;AACD,CAAC;","names":["CodeBlock"]}
@@ -0,0 +1,6 @@
1
+ import * as _tiptap_core from '@tiptap/core';
2
+ import * as _tiptap_extension_code_block from '@tiptap/extension-code-block';
3
+
4
+ declare const CodeBlockExtension: _tiptap_core.Node<_tiptap_extension_code_block.CodeBlockOptions, any>;
5
+
6
+ export { CodeBlockExtension };
@@ -0,0 +1,6 @@
1
+ import * as _tiptap_core from '@tiptap/core';
2
+ import * as _tiptap_extension_code_block from '@tiptap/extension-code-block';
3
+
4
+ declare const CodeBlockExtension: _tiptap_core.Node<_tiptap_extension_code_block.CodeBlockOptions, any>;
5
+
6
+ export { CodeBlockExtension };
@@ -0,0 +1,12 @@
1
+ import CodeBlock from "@tiptap/extension-code-block";
2
+ import { ReactNodeViewRenderer } from "@tiptap/react";
3
+ import { CodeBlockView } from "../components/code-block-view";
4
+ const CodeBlockExtension = CodeBlock.extend({
5
+ addNodeView() {
6
+ return ReactNodeViewRenderer(CodeBlockView);
7
+ }
8
+ });
9
+ export {
10
+ CodeBlockExtension
11
+ };
12
+ //# sourceMappingURL=code-block.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/code-block.ts"],"sourcesContent":["import CodeBlock from '@tiptap/extension-code-block';\nimport { ReactNodeViewRenderer } from '@tiptap/react';\n\nimport { CodeBlockView } from '../components/code-block-view';\n\nexport const CodeBlockExtension = CodeBlock.extend({\n\taddNodeView() {\n\t\treturn ReactNodeViewRenderer(CodeBlockView);\n\t}\n});\n"],"mappings":"AAAA,OAAO,eAAe;AACtB,SAAS,6BAA6B;AAEtC,SAAS,qBAAqB;AAEvB,MAAM,qBAAqB,UAAU,OAAO;AAAA,EAClD,cAAc;AACb,WAAO,sBAAsB,aAAa;AAAA,EAC3C;AACD,CAAC;","names":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var editor_exports = {};
30
+ __export(editor_exports, {
31
+ editorExtensions: () => editorExtensions
32
+ });
33
+ module.exports = __toCommonJS(editor_exports);
34
+ var import_extension_list = require("@tiptap/extension-list");
35
+ var import_starter_kit = __toESM(require("@tiptap/starter-kit"), 1);
36
+ var import_tiptap_markdown = require("tiptap-markdown");
37
+ var import_code_block = require("./code-block");
38
+ var import_shared = require("./shared");
39
+ const editorExtensions = [
40
+ import_starter_kit.default.configure({ ...import_shared.starterKitBaseConfig, codeBlock: false }),
41
+ import_extension_list.ListKit,
42
+ import_code_block.CodeBlockExtension,
43
+ import_tiptap_markdown.Markdown.configure({
44
+ html: false,
45
+ transformPastedText: true,
46
+ transformCopiedText: true
47
+ })
48
+ ];
49
+ // Annotate the CommonJS export names for ESM import in node:
50
+ 0 && (module.exports = {
51
+ editorExtensions
52
+ });
53
+ //# sourceMappingURL=editor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/editor.ts"],"sourcesContent":["import { ListKit } from '@tiptap/extension-list';\nimport StarterKit from '@tiptap/starter-kit';\nimport { Markdown } from 'tiptap-markdown';\n\nimport { CodeBlockExtension } from './code-block';\nimport { starterKitBaseConfig } from './shared';\n\n// Editor extensions = shared content model + interactive features + Markdown\n// codeBlock is disabled in StarterKit and replaced with the custom\n// CodeBlockExtension that mounts a NodeView (CodeBlockView).\nexport const editorExtensions = [\n\tStarterKit.configure({ ...starterKitBaseConfig, codeBlock: false }),\n\tListKit,\n\tCodeBlockExtension,\n\tMarkdown.configure({\n\t\thtml: false,\n\t\ttransformPastedText: true,\n\t\ttransformCopiedText: true\n\t})\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAwB;AACxB,yBAAuB;AACvB,6BAAyB;AAEzB,wBAAmC;AACnC,oBAAqC;AAK9B,MAAM,mBAAmB;AAAA,EAC/B,mBAAAA,QAAW,UAAU,EAAE,GAAG,oCAAsB,WAAW,MAAM,CAAC;AAAA,EAClE;AAAA,EACA;AAAA,EACA,gCAAS,UAAU;AAAA,IAClB,MAAM;AAAA,IACN,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,EACtB,CAAC;AACF;","names":["StarterKit"]}
@@ -0,0 +1,9 @@
1
+ import * as tiptap_markdown from 'tiptap-markdown';
2
+ import * as _tiptap_extension_code_block from '@tiptap/extension-code-block';
3
+ import * as _tiptap_extension_list from '@tiptap/extension-list';
4
+ import * as _tiptap_core from '@tiptap/core';
5
+ import * as _tiptap_starter_kit from '@tiptap/starter-kit';
6
+
7
+ declare const editorExtensions: (_tiptap_core.Extension<_tiptap_starter_kit.StarterKitOptions, any> | _tiptap_core.Extension<_tiptap_extension_list.ListKitOptions, any> | _tiptap_core.Node<_tiptap_extension_code_block.CodeBlockOptions, any> | _tiptap_core.Extension<tiptap_markdown.MarkdownOptions, tiptap_markdown.MarkdownStorage>)[];
8
+
9
+ export { editorExtensions };
@@ -0,0 +1,9 @@
1
+ import * as tiptap_markdown from 'tiptap-markdown';
2
+ import * as _tiptap_extension_code_block from '@tiptap/extension-code-block';
3
+ import * as _tiptap_extension_list from '@tiptap/extension-list';
4
+ import * as _tiptap_core from '@tiptap/core';
5
+ import * as _tiptap_starter_kit from '@tiptap/starter-kit';
6
+
7
+ declare const editorExtensions: (_tiptap_core.Extension<_tiptap_starter_kit.StarterKitOptions, any> | _tiptap_core.Extension<_tiptap_extension_list.ListKitOptions, any> | _tiptap_core.Node<_tiptap_extension_code_block.CodeBlockOptions, any> | _tiptap_core.Extension<tiptap_markdown.MarkdownOptions, tiptap_markdown.MarkdownStorage>)[];
8
+
9
+ export { editorExtensions };
@@ -0,0 +1,19 @@
1
+ import { ListKit } from "@tiptap/extension-list";
2
+ import StarterKit from "@tiptap/starter-kit";
3
+ import { Markdown } from "tiptap-markdown";
4
+ import { CodeBlockExtension } from "./code-block";
5
+ import { starterKitBaseConfig } from "./shared";
6
+ const editorExtensions = [
7
+ StarterKit.configure({ ...starterKitBaseConfig, codeBlock: false }),
8
+ ListKit,
9
+ CodeBlockExtension,
10
+ Markdown.configure({
11
+ html: false,
12
+ transformPastedText: true,
13
+ transformCopiedText: true
14
+ })
15
+ ];
16
+ export {
17
+ editorExtensions
18
+ };
19
+ //# sourceMappingURL=editor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/editor.ts"],"sourcesContent":["import { ListKit } from '@tiptap/extension-list';\nimport StarterKit from '@tiptap/starter-kit';\nimport { Markdown } from 'tiptap-markdown';\n\nimport { CodeBlockExtension } from './code-block';\nimport { starterKitBaseConfig } from './shared';\n\n// Editor extensions = shared content model + interactive features + Markdown\n// codeBlock is disabled in StarterKit and replaced with the custom\n// CodeBlockExtension that mounts a NodeView (CodeBlockView).\nexport const editorExtensions = [\n\tStarterKit.configure({ ...starterKitBaseConfig, codeBlock: false }),\n\tListKit,\n\tCodeBlockExtension,\n\tMarkdown.configure({\n\t\thtml: false,\n\t\ttransformPastedText: true,\n\t\ttransformCopiedText: true\n\t})\n];\n"],"mappings":"AAAA,SAAS,eAAe;AACxB,OAAO,gBAAgB;AACvB,SAAS,gBAAgB;AAEzB,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AAK9B,MAAM,mBAAmB;AAAA,EAC/B,WAAW,UAAU,EAAE,GAAG,sBAAsB,WAAW,MAAM,CAAC;AAAA,EAClE;AAAA,EACA;AAAA,EACA,SAAS,UAAU;AAAA,IAClB,MAAM;AAAA,IACN,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,EACtB,CAAC;AACF;","names":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var extensions_exports = {};
20
+ __export(extensions_exports, {
21
+ editorExtensions: () => import_editor.editorExtensions,
22
+ sharedExtensions: () => import_shared.sharedExtensions
23
+ });
24
+ module.exports = __toCommonJS(extensions_exports);
25
+ var import_shared = require("./shared");
26
+ var import_editor = require("./editor");
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ editorExtensions,
30
+ sharedExtensions
31
+ });
32
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/index.ts"],"sourcesContent":["export { sharedExtensions } from './shared';\nexport { editorExtensions } from './editor';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAiC;AACjC,oBAAiC;","names":[]}
@@ -0,0 +1,7 @@
1
+ export { sharedExtensions } from './shared.cjs';
2
+ export { editorExtensions } from './editor.cjs';
3
+ import '@tiptap/extension-list';
4
+ import '@tiptap/core';
5
+ import '@tiptap/starter-kit';
6
+ import 'tiptap-markdown';
7
+ import '@tiptap/extension-code-block';
@@ -0,0 +1,7 @@
1
+ export { sharedExtensions } from './shared.js';
2
+ export { editorExtensions } from './editor.js';
3
+ import '@tiptap/extension-list';
4
+ import '@tiptap/core';
5
+ import '@tiptap/starter-kit';
6
+ import 'tiptap-markdown';
7
+ import '@tiptap/extension-code-block';
@@ -0,0 +1,7 @@
1
+ import { sharedExtensions } from "./shared";
2
+ import { editorExtensions } from "./editor";
3
+ export {
4
+ editorExtensions,
5
+ sharedExtensions
6
+ };
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/index.ts"],"sourcesContent":["export { sharedExtensions } from './shared';\nexport { editorExtensions } from './editor';\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;","names":[]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var shared_exports = {};
30
+ __export(shared_exports, {
31
+ sharedExtensions: () => sharedExtensions,
32
+ starterKitBaseConfig: () => starterKitBaseConfig
33
+ });
34
+ module.exports = __toCommonJS(shared_exports);
35
+ var import_extension_list = require("@tiptap/extension-list");
36
+ var import_starter_kit = __toESM(require("@tiptap/starter-kit"), 1);
37
+ const starterKitBaseConfig = {
38
+ heading: { levels: [1, 2, 3, 4, 5, 6] },
39
+ link: {
40
+ openOnClick: false,
41
+ autolink: true
42
+ },
43
+ // Disable StarterKit's built-in list handling; use @tiptap/extension-list instead
44
+ bulletList: false,
45
+ orderedList: false,
46
+ listItem: false,
47
+ listKeymap: false
48
+ };
49
+ const sharedExtensions = [
50
+ import_starter_kit.default.configure({
51
+ ...starterKitBaseConfig,
52
+ dropcursor: false,
53
+ gapcursor: false,
54
+ undoRedo: false,
55
+ trailingNode: false
56
+ }),
57
+ import_extension_list.ListKit
58
+ ];
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ sharedExtensions,
62
+ starterKitBaseConfig
63
+ });
64
+ //# sourceMappingURL=shared.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/shared.ts"],"sourcesContent":["import { ListKit } from '@tiptap/extension-list';\nimport StarterKit, { type StarterKitOptions } from '@tiptap/starter-kit';\n\n// Shared StarterKit config: content nodes/marks, no lists (use ListKit instead)\nexport const starterKitBaseConfig: Partial<StarterKitOptions> = {\n\theading: { levels: [1, 2, 3, 4, 5, 6] },\n\tlink: {\n\t\topenOnClick: false,\n\t\tautolink: true\n\t},\n\t// Disable StarterKit's built-in list handling; use @tiptap/extension-list instead\n\tbulletList: false,\n\torderedList: false,\n\tlistItem: false,\n\tlistKeymap: false\n};\n\n// Content model extensions — shared by editor and reader\n// No interactive features (dropcursor, gapcursor, undoRedo, trailingNode)\nexport const sharedExtensions = [\n\tStarterKit.configure({\n\t\t...starterKitBaseConfig,\n\t\tdropcursor: false,\n\t\tgapcursor: false,\n\t\tundoRedo: false,\n\t\ttrailingNode: false\n\t}),\n\tListKit\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAwB;AACxB,yBAAmD;AAG5C,MAAM,uBAAmD;AAAA,EAC/D,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;AAAA,EACtC,MAAM;AAAA,IACL,aAAa;AAAA,IACb,UAAU;AAAA,EACX;AAAA;AAAA,EAEA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,YAAY;AACb;AAIO,MAAM,mBAAmB;AAAA,EAC/B,mBAAAA,QAAW,UAAU;AAAA,IACpB,GAAG;AAAA,IACH,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA,EACf,CAAC;AAAA,EACD;AACD;","names":["StarterKit"]}
@@ -0,0 +1,8 @@
1
+ import * as _tiptap_extension_list from '@tiptap/extension-list';
2
+ import * as _tiptap_core from '@tiptap/core';
3
+ import { StarterKitOptions } from '@tiptap/starter-kit';
4
+
5
+ declare const starterKitBaseConfig: Partial<StarterKitOptions>;
6
+ declare const sharedExtensions: (_tiptap_core.Extension<StarterKitOptions, any> | _tiptap_core.Extension<_tiptap_extension_list.ListKitOptions, any>)[];
7
+
8
+ export { sharedExtensions, starterKitBaseConfig };
@@ -0,0 +1,8 @@
1
+ import * as _tiptap_extension_list from '@tiptap/extension-list';
2
+ import * as _tiptap_core from '@tiptap/core';
3
+ import { StarterKitOptions } from '@tiptap/starter-kit';
4
+
5
+ declare const starterKitBaseConfig: Partial<StarterKitOptions>;
6
+ declare const sharedExtensions: (_tiptap_core.Extension<StarterKitOptions, any> | _tiptap_core.Extension<_tiptap_extension_list.ListKitOptions, any>)[];
7
+
8
+ export { sharedExtensions, starterKitBaseConfig };
@@ -0,0 +1,29 @@
1
+ import { ListKit } from "@tiptap/extension-list";
2
+ import StarterKit from "@tiptap/starter-kit";
3
+ const starterKitBaseConfig = {
4
+ heading: { levels: [1, 2, 3, 4, 5, 6] },
5
+ link: {
6
+ openOnClick: false,
7
+ autolink: true
8
+ },
9
+ // Disable StarterKit's built-in list handling; use @tiptap/extension-list instead
10
+ bulletList: false,
11
+ orderedList: false,
12
+ listItem: false,
13
+ listKeymap: false
14
+ };
15
+ const sharedExtensions = [
16
+ StarterKit.configure({
17
+ ...starterKitBaseConfig,
18
+ dropcursor: false,
19
+ gapcursor: false,
20
+ undoRedo: false,
21
+ trailingNode: false
22
+ }),
23
+ ListKit
24
+ ];
25
+ export {
26
+ sharedExtensions,
27
+ starterKitBaseConfig
28
+ };
29
+ //# sourceMappingURL=shared.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/shared.ts"],"sourcesContent":["import { ListKit } from '@tiptap/extension-list';\nimport StarterKit, { type StarterKitOptions } from '@tiptap/starter-kit';\n\n// Shared StarterKit config: content nodes/marks, no lists (use ListKit instead)\nexport const starterKitBaseConfig: Partial<StarterKitOptions> = {\n\theading: { levels: [1, 2, 3, 4, 5, 6] },\n\tlink: {\n\t\topenOnClick: false,\n\t\tautolink: true\n\t},\n\t// Disable StarterKit's built-in list handling; use @tiptap/extension-list instead\n\tbulletList: false,\n\torderedList: false,\n\tlistItem: false,\n\tlistKeymap: false\n};\n\n// Content model extensions — shared by editor and reader\n// No interactive features (dropcursor, gapcursor, undoRedo, trailingNode)\nexport const sharedExtensions = [\n\tStarterKit.configure({\n\t\t...starterKitBaseConfig,\n\t\tdropcursor: false,\n\t\tgapcursor: false,\n\t\tundoRedo: false,\n\t\ttrailingNode: false\n\t}),\n\tListKit\n];\n"],"mappings":"AAAA,SAAS,eAAe;AACxB,OAAO,gBAA4C;AAG5C,MAAM,uBAAmD;AAAA,EAC/D,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;AAAA,EACtC,MAAM;AAAA,IACL,aAAa;AAAA,IACb,UAAU;AAAA,EACX;AAAA;AAAA,EAEA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,YAAY;AACb;AAIO,MAAM,mBAAmB;AAAA,EAC/B,WAAW,UAAU;AAAA,IACpB,GAAG;AAAA,IACH,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA,EACf,CAAC;AAAA,EACD;AACD;","names":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var use_copy_to_clipboard_exports = {};
21
+ __export(use_copy_to_clipboard_exports, {
22
+ useCopyToClipboard: () => useCopyToClipboard
23
+ });
24
+ module.exports = __toCommonJS(use_copy_to_clipboard_exports);
25
+ var import_react = require("react");
26
+ const useCopyToClipboard = ({
27
+ timeout = 2e3,
28
+ onCopy
29
+ } = {}) => {
30
+ const [isCopied, setIsCopied] = (0, import_react.useState)(false);
31
+ const copyToClipboard = (value) => {
32
+ if (typeof window === "undefined" || !navigator.clipboard?.writeText) {
33
+ return;
34
+ }
35
+ if (!value) return;
36
+ navigator.clipboard.writeText(value).then(() => {
37
+ setIsCopied(true);
38
+ onCopy?.();
39
+ setTimeout(() => {
40
+ setIsCopied(false);
41
+ }, timeout);
42
+ }, console.error);
43
+ };
44
+ return { isCopied, copyToClipboard };
45
+ };
46
+ // Annotate the CommonJS export names for ESM import in node:
47
+ 0 && (module.exports = {
48
+ useCopyToClipboard
49
+ });
50
+ //# sourceMappingURL=use-copy-to-clipboard.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/use-copy-to-clipboard.ts"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\n\ninterface UseCopyToClipboardOptions {\n\ttimeout?: number;\n\tonCopy?: () => void;\n}\n\nexport const useCopyToClipboard = ({\n\ttimeout = 2000,\n\tonCopy\n}: UseCopyToClipboardOptions = {}) => {\n\tconst [isCopied, setIsCopied] = useState(false);\n\n\tconst copyToClipboard = (value: string) => {\n\t\tif (typeof window === 'undefined' || !navigator.clipboard?.writeText) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!value) return;\n\n\t\tnavigator.clipboard.writeText(value).then(() => {\n\t\t\tsetIsCopied(true);\n\t\t\tonCopy?.();\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetIsCopied(false);\n\t\t\t}, timeout);\n\t\t}, console.error);\n\t};\n\n\treturn { isCopied, copyToClipboard };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAyB;AAOlB,MAAM,qBAAqB,CAAC;AAAA,EAClC,UAAU;AAAA,EACV;AACD,IAA+B,CAAC,MAAM;AACrC,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAE9C,QAAM,kBAAkB,CAAC,UAAkB;AAC1C,QAAI,OAAO,WAAW,eAAe,CAAC,UAAU,WAAW,WAAW;AACrE;AAAA,IACD;AAEA,QAAI,CAAC,MAAO;AAEZ,cAAU,UAAU,UAAU,KAAK,EAAE,KAAK,MAAM;AAC/C,kBAAY,IAAI;AAChB,eAAS;AAET,iBAAW,MAAM;AAChB,oBAAY,KAAK;AAAA,MAClB,GAAG,OAAO;AAAA,IACX,GAAG,QAAQ,KAAK;AAAA,EACjB;AAEA,SAAO,EAAE,UAAU,gBAAgB;AACpC;","names":[]}
@@ -0,0 +1,10 @@
1
+ interface UseCopyToClipboardOptions {
2
+ timeout?: number;
3
+ onCopy?: () => void;
4
+ }
5
+ declare const useCopyToClipboard: ({ timeout, onCopy }?: UseCopyToClipboardOptions) => {
6
+ isCopied: boolean;
7
+ copyToClipboard: (value: string) => void;
8
+ };
9
+
10
+ export { useCopyToClipboard };
@@ -0,0 +1,10 @@
1
+ interface UseCopyToClipboardOptions {
2
+ timeout?: number;
3
+ onCopy?: () => void;
4
+ }
5
+ declare const useCopyToClipboard: ({ timeout, onCopy }?: UseCopyToClipboardOptions) => {
6
+ isCopied: boolean;
7
+ copyToClipboard: (value: string) => void;
8
+ };
9
+
10
+ export { useCopyToClipboard };
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { useState } from "react";
3
+ const useCopyToClipboard = ({
4
+ timeout = 2e3,
5
+ onCopy
6
+ } = {}) => {
7
+ const [isCopied, setIsCopied] = useState(false);
8
+ const copyToClipboard = (value) => {
9
+ if (typeof window === "undefined" || !navigator.clipboard?.writeText) {
10
+ return;
11
+ }
12
+ if (!value) return;
13
+ navigator.clipboard.writeText(value).then(() => {
14
+ setIsCopied(true);
15
+ onCopy?.();
16
+ setTimeout(() => {
17
+ setIsCopied(false);
18
+ }, timeout);
19
+ }, console.error);
20
+ };
21
+ return { isCopied, copyToClipboard };
22
+ };
23
+ export {
24
+ useCopyToClipboard
25
+ };
26
+ //# sourceMappingURL=use-copy-to-clipboard.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/use-copy-to-clipboard.ts"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\n\ninterface UseCopyToClipboardOptions {\n\ttimeout?: number;\n\tonCopy?: () => void;\n}\n\nexport const useCopyToClipboard = ({\n\ttimeout = 2000,\n\tonCopy\n}: UseCopyToClipboardOptions = {}) => {\n\tconst [isCopied, setIsCopied] = useState(false);\n\n\tconst copyToClipboard = (value: string) => {\n\t\tif (typeof window === 'undefined' || !navigator.clipboard?.writeText) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!value) return;\n\n\t\tnavigator.clipboard.writeText(value).then(() => {\n\t\t\tsetIsCopied(true);\n\t\t\tonCopy?.();\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetIsCopied(false);\n\t\t\t}, timeout);\n\t\t}, console.error);\n\t};\n\n\treturn { isCopied, copyToClipboard };\n};\n"],"mappings":";AAEA,SAAS,gBAAgB;AAOlB,MAAM,qBAAqB,CAAC;AAAA,EAClC,UAAU;AAAA,EACV;AACD,IAA+B,CAAC,MAAM;AACrC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,QAAM,kBAAkB,CAAC,UAAkB;AAC1C,QAAI,OAAO,WAAW,eAAe,CAAC,UAAU,WAAW,WAAW;AACrE;AAAA,IACD;AAEA,QAAI,CAAC,MAAO;AAEZ,cAAU,UAAU,UAAU,KAAK,EAAE,KAAK,MAAM;AAC/C,kBAAY,IAAI;AAChB,eAAS;AAET,iBAAW,MAAM;AAChB,oBAAY,KAAK;AAAA,MAClB,GAAG,OAAO;AAAA,IACX,GAAG,QAAQ,KAAK;AAAA,EACjB;AAEA,SAAO,EAAE,UAAU,gBAAgB;AACpC;","names":[]}