@multiplatform.one/rich-text 6.3.0 → 6.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 (168) hide show
  1. package/dist/cjs/RichEditor.cjs +5 -0
  2. package/dist/cjs/RichEditor.native.js +22 -0
  3. package/dist/cjs/RichEditor.native.js.map +1 -1
  4. package/dist/cjs/RichTextEditor/index.cjs +2 -0
  5. package/dist/cjs/RichTextEditor/index.native.js +2 -0
  6. package/dist/cjs/RichTextEditor/index.native.js.map +1 -1
  7. package/dist/cjs/editor/SlashCommands.cjs +8 -1
  8. package/dist/cjs/editor/SlashCommands.native.js +14 -1
  9. package/dist/cjs/editor/SlashCommands.native.js.map +1 -1
  10. package/dist/cjs/editor/TentapEditor.native.js +15 -0
  11. package/dist/cjs/editor/TentapEditor.native.js.map +1 -1
  12. package/dist/cjs/editor/TiptapEditor.cjs +26 -230
  13. package/dist/cjs/editor/TiptapEditor.native.js +34 -280
  14. package/dist/cjs/editor/TiptapEditor.native.js.map +1 -1
  15. package/dist/cjs/editor/capabilities.cjs +37 -0
  16. package/dist/cjs/editor/capabilities.native.js +41 -0
  17. package/dist/cjs/editor/capabilities.native.js.map +1 -0
  18. package/dist/cjs/editor/extensions.cjs +275 -0
  19. package/dist/cjs/editor/extensions.native.js +328 -0
  20. package/dist/cjs/editor/extensions.native.js.map +1 -0
  21. package/dist/cjs/index.cjs +5 -2
  22. package/dist/cjs/index.native.js +4 -1
  23. package/dist/cjs/index.native.js.map +1 -1
  24. package/dist/cjs/toolbar/BubbleToolbar.cjs +9 -6
  25. package/dist/cjs/toolbar/BubbleToolbar.native.js +12 -7
  26. package/dist/cjs/toolbar/BubbleToolbar.native.js.map +1 -1
  27. package/dist/cjs/toolbar/FixedToolbar.cjs +6 -3
  28. package/dist/cjs/toolbar/MoreDropdown.cjs +17 -9
  29. package/dist/cjs/toolbar/MoreDropdown.native.js +21 -9
  30. package/dist/cjs/toolbar/MoreDropdown.native.js.map +1 -1
  31. package/dist/cjs/toolbar/TableBubble.cjs +15 -2
  32. package/dist/cjs/toolbar/TableBubble.native.js +17 -2
  33. package/dist/cjs/toolbar/TableBubble.native.js.map +1 -1
  34. package/dist/cjs/types.native.js.map +1 -1
  35. package/dist/esm/RichEditor.mjs +5 -0
  36. package/dist/esm/RichEditor.mjs.map +1 -1
  37. package/dist/esm/RichEditor.native.js +22 -0
  38. package/dist/esm/RichEditor.native.js.map +1 -1
  39. package/dist/esm/RichTextEditor/index.mjs +2 -0
  40. package/dist/esm/RichTextEditor/index.mjs.map +1 -1
  41. package/dist/esm/RichTextEditor/index.native.js +2 -0
  42. package/dist/esm/RichTextEditor/index.native.js.map +1 -1
  43. package/dist/esm/editor/SlashCommands.mjs +8 -1
  44. package/dist/esm/editor/SlashCommands.mjs.map +1 -1
  45. package/dist/esm/editor/SlashCommands.native.js +14 -1
  46. package/dist/esm/editor/SlashCommands.native.js.map +1 -1
  47. package/dist/esm/editor/TentapEditor.native.js +15 -0
  48. package/dist/esm/editor/TentapEditor.native.js.map +1 -1
  49. package/dist/esm/editor/TiptapEditor.mjs +28 -221
  50. package/dist/esm/editor/TiptapEditor.mjs.map +1 -1
  51. package/dist/esm/editor/TiptapEditor.native.js +36 -271
  52. package/dist/esm/editor/TiptapEditor.native.js.map +1 -1
  53. package/dist/esm/editor/capabilities.mjs +10 -0
  54. package/dist/esm/editor/capabilities.mjs.map +1 -0
  55. package/dist/esm/editor/capabilities.native.js +11 -0
  56. package/dist/esm/editor/capabilities.native.js.map +1 -0
  57. package/dist/esm/editor/extensions.mjs +236 -0
  58. package/dist/esm/editor/extensions.mjs.map +1 -0
  59. package/dist/esm/editor/extensions.native.js +286 -0
  60. package/dist/esm/editor/extensions.native.js.map +1 -0
  61. package/dist/esm/index.mjs +2 -1
  62. package/dist/esm/index.mjs.map +1 -1
  63. package/dist/esm/index.native.js +2 -1
  64. package/dist/esm/index.native.js.map +1 -1
  65. package/dist/esm/toolbar/BubbleToolbar.mjs +9 -6
  66. package/dist/esm/toolbar/BubbleToolbar.mjs.map +1 -1
  67. package/dist/esm/toolbar/BubbleToolbar.native.js +12 -7
  68. package/dist/esm/toolbar/BubbleToolbar.native.js.map +1 -1
  69. package/dist/esm/toolbar/FixedToolbar.mjs +6 -3
  70. package/dist/esm/toolbar/FixedToolbar.mjs.map +1 -1
  71. package/dist/esm/toolbar/MoreDropdown.mjs +17 -9
  72. package/dist/esm/toolbar/MoreDropdown.mjs.map +1 -1
  73. package/dist/esm/toolbar/MoreDropdown.native.js +21 -9
  74. package/dist/esm/toolbar/MoreDropdown.native.js.map +1 -1
  75. package/dist/esm/toolbar/TableBubble.mjs +15 -2
  76. package/dist/esm/toolbar/TableBubble.mjs.map +1 -1
  77. package/dist/esm/toolbar/TableBubble.native.js +17 -2
  78. package/dist/esm/toolbar/TableBubble.native.js.map +1 -1
  79. package/dist/esm/types.mjs.map +1 -1
  80. package/dist/esm/types.native.js.map +1 -1
  81. package/dist/jsx/RichEditor.mjs +5 -0
  82. package/dist/jsx/RichEditor.mjs.map +1 -1
  83. package/dist/jsx/RichEditor.native.js +22 -0
  84. package/dist/jsx/RichEditor.native.js.map +1 -1
  85. package/dist/jsx/RichTextEditor/index.mjs +2 -0
  86. package/dist/jsx/RichTextEditor/index.mjs.map +1 -1
  87. package/dist/jsx/RichTextEditor/index.native.js +2 -0
  88. package/dist/jsx/RichTextEditor/index.native.js.map +1 -1
  89. package/dist/jsx/editor/SlashCommands.mjs +8 -1
  90. package/dist/jsx/editor/SlashCommands.mjs.map +1 -1
  91. package/dist/jsx/editor/SlashCommands.native.js +14 -1
  92. package/dist/jsx/editor/SlashCommands.native.js.map +1 -1
  93. package/dist/jsx/editor/TentapEditor.native.js +15 -0
  94. package/dist/jsx/editor/TentapEditor.native.js.map +1 -1
  95. package/dist/jsx/editor/TiptapEditor.mjs +28 -221
  96. package/dist/jsx/editor/TiptapEditor.mjs.map +1 -1
  97. package/dist/jsx/editor/TiptapEditor.native.js +34 -280
  98. package/dist/jsx/editor/TiptapEditor.native.js.map +1 -1
  99. package/dist/jsx/editor/capabilities.mjs +10 -0
  100. package/dist/jsx/editor/capabilities.mjs.map +1 -0
  101. package/dist/jsx/editor/capabilities.native.js +41 -0
  102. package/dist/jsx/editor/capabilities.native.js.map +1 -0
  103. package/dist/jsx/editor/extensions.mjs +236 -0
  104. package/dist/jsx/editor/extensions.mjs.map +1 -0
  105. package/dist/jsx/editor/extensions.native.js +328 -0
  106. package/dist/jsx/editor/extensions.native.js.map +1 -0
  107. package/dist/jsx/index.js +2 -1
  108. package/dist/jsx/index.js.map +1 -1
  109. package/dist/jsx/index.mjs +2 -1
  110. package/dist/jsx/index.mjs.map +1 -1
  111. package/dist/jsx/index.native.js +4 -1
  112. package/dist/jsx/index.native.js.map +1 -1
  113. package/dist/jsx/toolbar/BubbleToolbar.mjs +9 -6
  114. package/dist/jsx/toolbar/BubbleToolbar.mjs.map +1 -1
  115. package/dist/jsx/toolbar/BubbleToolbar.native.js +12 -7
  116. package/dist/jsx/toolbar/BubbleToolbar.native.js.map +1 -1
  117. package/dist/jsx/toolbar/FixedToolbar.mjs +6 -3
  118. package/dist/jsx/toolbar/FixedToolbar.mjs.map +1 -1
  119. package/dist/jsx/toolbar/MoreDropdown.mjs +17 -9
  120. package/dist/jsx/toolbar/MoreDropdown.mjs.map +1 -1
  121. package/dist/jsx/toolbar/MoreDropdown.native.js +21 -9
  122. package/dist/jsx/toolbar/MoreDropdown.native.js.map +1 -1
  123. package/dist/jsx/toolbar/TableBubble.mjs +15 -2
  124. package/dist/jsx/toolbar/TableBubble.mjs.map +1 -1
  125. package/dist/jsx/toolbar/TableBubble.native.js +17 -2
  126. package/dist/jsx/toolbar/TableBubble.native.js.map +1 -1
  127. package/dist/jsx/types.mjs.map +1 -1
  128. package/dist/jsx/types.native.js.map +1 -1
  129. package/package.json +8 -8
  130. package/src/RichEditor.native.tsx +20 -0
  131. package/src/RichEditor.stories.tsx +32 -0
  132. package/src/RichEditor.tsx +5 -0
  133. package/src/RichTextEditor/index.tsx +14 -1
  134. package/src/editor/SlashCommands.tsx +10 -0
  135. package/src/editor/TentapEditor.native.tsx +13 -0
  136. package/src/editor/TiptapEditor.tsx +51 -279
  137. package/src/editor/capabilities.spec.ts +190 -0
  138. package/src/editor/capabilities.ts +76 -0
  139. package/src/editor/extensions.ts +315 -0
  140. package/src/index.ts +3 -0
  141. package/src/toolbar/BubbleToolbar.tsx +40 -28
  142. package/src/toolbar/FixedToolbar.tsx +20 -12
  143. package/src/toolbar/MoreDropdown.tsx +30 -6
  144. package/src/toolbar/TableBubble.tsx +65 -12
  145. package/src/types.ts +28 -1
  146. package/types/RichEditor.d.ts.map +1 -1
  147. package/types/RichEditor.native.d.ts.map +1 -1
  148. package/types/RichTextEditor/index.d.ts +7 -1
  149. package/types/RichTextEditor/index.d.ts.map +1 -1
  150. package/types/editor/SlashCommands.d.ts.map +1 -1
  151. package/types/editor/TentapEditor.native.d.ts.map +1 -1
  152. package/types/editor/TiptapEditor.d.ts.map +1 -1
  153. package/types/editor/capabilities.d.ts +29 -0
  154. package/types/editor/capabilities.d.ts.map +1 -0
  155. package/types/editor/extensions.d.ts +41 -0
  156. package/types/editor/extensions.d.ts.map +1 -0
  157. package/types/index.d.ts +2 -1
  158. package/types/index.d.ts.map +1 -1
  159. package/types/toolbar/BubbleToolbar.d.ts +4 -2
  160. package/types/toolbar/BubbleToolbar.d.ts.map +1 -1
  161. package/types/toolbar/FixedToolbar.d.ts +4 -2
  162. package/types/toolbar/FixedToolbar.d.ts.map +1 -1
  163. package/types/toolbar/MoreDropdown.d.ts +4 -2
  164. package/types/toolbar/MoreDropdown.d.ts.map +1 -1
  165. package/types/toolbar/TableBubble.d.ts +4 -1
  166. package/types/toolbar/TableBubble.d.ts.map +1 -1
  167. package/types/types.d.ts +23 -1
  168. package/types/types.d.ts.map +1 -1
@@ -10,42 +10,95 @@ import { useResolvedKnobs } from "@multiplatform.one/theme";
10
10
  import { ColumnsPlusRightIcon, RowsPlusBottomIcon, TrashIcon } from "@phosphor-icons/react";
11
11
  import { Popover, Text, XStack, YStack } from "tamagui";
12
12
  import { DropdownMenuItemFrame, ToolbarSeparatorFrame } from "../styled";
13
+ import type { EditorCapabilities } from "../types";
13
14
  import { getBlockVirtualElement } from "../editor/blockAnchor";
14
15
  import { ToolbarButton, ToolbarDropdownButton } from "./ToolbarButton";
15
16
  import { t } from "../shared/t";
16
17
 
17
18
  interface TableAction {
19
+ /** Stable identifier (capability filtering) */
20
+ id: string;
18
21
  label: () => string;
19
22
  action: (editor: Editor) => void;
20
23
  }
21
24
 
22
25
  const ROW_ACTIONS: TableAction[] = [
23
- { label: () => t("Add row above"), action: (e) => e.chain().focus().addRowBefore().run() },
24
- { label: () => t("Add row below"), action: (e) => e.chain().focus().addRowAfter().run() },
25
- { label: () => t("Delete row"), action: (e) => e.chain().focus().deleteRow().run() },
26
+ {
27
+ id: "addRowBefore",
28
+ label: () => t("Add row above"),
29
+ action: (e) => e.chain().focus().addRowBefore().run(),
30
+ },
31
+ {
32
+ id: "addRowAfter",
33
+ label: () => t("Add row below"),
34
+ action: (e) => e.chain().focus().addRowAfter().run(),
35
+ },
36
+ {
37
+ id: "deleteRow",
38
+ label: () => t("Delete row"),
39
+ action: (e) => e.chain().focus().deleteRow().run(),
40
+ },
26
41
  ];
27
42
 
28
43
  const COL_ACTIONS: TableAction[] = [
29
- { label: () => t("Add column before"), action: (e) => e.chain().focus().addColumnBefore().run() },
30
- { label: () => t("Add column after"), action: (e) => e.chain().focus().addColumnAfter().run() },
31
- { label: () => t("Delete column"), action: (e) => e.chain().focus().deleteColumn().run() },
44
+ {
45
+ id: "addColumnBefore",
46
+ label: () => t("Add column before"),
47
+ action: (e) => e.chain().focus().addColumnBefore().run(),
48
+ },
49
+ {
50
+ id: "addColumnAfter",
51
+ label: () => t("Add column after"),
52
+ action: (e) => e.chain().focus().addColumnAfter().run(),
53
+ },
54
+ {
55
+ id: "deleteColumn",
56
+ label: () => t("Delete column"),
57
+ action: (e) => e.chain().focus().deleteColumn().run(),
58
+ },
32
59
  ];
33
60
 
34
61
  const TABLE_ACTIONS: TableAction[] = [
35
- { label: () => t("Toggle header row"), action: (e) => e.chain().focus().toggleHeaderRow().run() },
36
- { label: () => t("Merge cells"), action: (e) => e.chain().focus().mergeCells().run() },
37
- { label: () => t("Split cell"), action: (e) => e.chain().focus().splitCell().run() },
38
- { label: () => t("Delete table"), action: (e) => e.chain().focus().deleteTable().run() },
62
+ {
63
+ id: "toggleHeaderRow",
64
+ label: () => t("Toggle header row"),
65
+ action: (e) => e.chain().focus().toggleHeaderRow().run(),
66
+ },
67
+ {
68
+ id: "mergeCells",
69
+ label: () => t("Merge cells"),
70
+ action: (e) => e.chain().focus().mergeCells().run(),
71
+ },
72
+ {
73
+ id: "splitCell",
74
+ label: () => t("Split cell"),
75
+ action: (e) => e.chain().focus().splitCell().run(),
76
+ },
77
+ {
78
+ id: "deleteTable",
79
+ label: () => t("Delete table"),
80
+ action: (e) => e.chain().focus().deleteTable().run(),
81
+ },
39
82
  ];
40
83
 
84
+ /** GFM pipe tables are simple grids — merge/split have no markdown form (LC-52) */
85
+ const MARKDOWN_EXCLUDED_TABLE_ACTIONS = new Set(["mergeCells", "splitCell"]);
86
+
41
87
  export interface TableBubbleProps {
42
88
  editor: Editor | null;
89
+ /** Capability surface — markdown drops merge/split (default "full") */
90
+ capabilities?: EditorCapabilities;
43
91
  }
44
92
 
45
- export function TableBubble({ editor }: TableBubbleProps) {
93
+ export function TableBubble({ editor, capabilities = "full" }: TableBubbleProps) {
46
94
  const { knobProps } = useResolvedKnobs();
47
95
  const [menuOpen, setMenuOpen] = useState(false);
48
96
 
97
+ const tableActions =
98
+ capabilities === "markdown"
99
+ ? TABLE_ACTIONS.filter((a) => !MARKDOWN_EXCLUDED_TABLE_ACTIONS.has(a.id))
100
+ : TABLE_ACTIONS;
101
+
49
102
  if (!editor) return null;
50
103
 
51
104
  return (
@@ -153,7 +206,7 @@ export function TableBubble({ editor }: TableBubbleProps) {
153
206
  marginHorizontal={0}
154
207
  />
155
208
  </XStack>
156
- {TABLE_ACTIONS.map((a) => {
209
+ {tableActions.map((a) => {
157
210
  const label = a.label();
158
211
  return (
159
212
  <DropdownMenuItemFrame
package/src/types.ts CHANGED
@@ -20,6 +20,22 @@ export interface RichTextMentionOptions {
20
20
  items: (query: string) => MentionItem[] | Promise<MentionItem[]>;
21
21
  }
22
22
 
23
+ // ===========================================================================
24
+ // Editor Capabilities
25
+ // ===========================================================================
26
+
27
+ /**
28
+ * Capability surface of the editor:
29
+ * - "full": every extension and toolbar control (default).
30
+ * - "markdown": WYSIWYG constrained to what GFM markdown can express —
31
+ * non-markdown extensions (underline, highlight, text color, alignment,
32
+ * sub/superscript, details, inline math, mentions) are NOT registered
33
+ * (commands absent, not just hidden), the toolbar shows only the
34
+ * markdown-expressible controls, `initialContent` is parsed as markdown,
35
+ * and `onChange` emits a markdown string.
36
+ */
37
+ export type EditorCapabilities = "full" | "markdown";
38
+
23
39
  // ===========================================================================
24
40
  // Editor Command
25
41
  // ===========================================================================
@@ -151,10 +167,14 @@ export interface RichEditorRef {
151
167
  getHTML: () => string;
152
168
  /** Get the content as JSON (ProseMirror format) */
153
169
  getJSON: () => any;
170
+ /** Get the content serialized to GFM markdown (web) */
171
+ getMarkdown: () => string;
154
172
  /** Set content from HTML */
155
173
  setHTML: (html: string) => void;
156
174
  /** Set content from JSON */
157
175
  setJSON: (json: any) => void;
176
+ /** Set content from a markdown string without emitting onChange (web) */
177
+ setMarkdown: (markdown: string) => void;
158
178
  /** Focus the editor */
159
179
  focus: () => void;
160
180
  /** Blur the editor */
@@ -162,7 +182,14 @@ export interface RichEditorRef {
162
182
  }
163
183
 
164
184
  export interface RichEditorProps {
165
- /** Initial content as HTML */
185
+ /**
186
+ * Capability preset (default "full"). With "markdown", only the
187
+ * markdown-expressible extensions register, the toolbar shows only the
188
+ * corresponding controls, `initialContent` is parsed as markdown, and
189
+ * `onChange` receives a markdown string. Fixed at mount.
190
+ */
191
+ capabilities?: EditorCapabilities;
192
+ /** Initial content as HTML ("full") or markdown ("markdown" capabilities) */
166
193
  initialContent?: string;
167
194
  /** Initial content as JSON (takes precedence over initialContent) */
168
195
  initialJSON?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"RichEditor.d.ts","sourceRoot":"","sources":["../src/RichEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,OAAO,KAAK,EAGV,eAAe,EACf,aAAa,EACb,cAAc,EACf,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAQxD,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,gCAAgC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA2ND,eAAO,MAAM,UAAU;;;;CAIrB,CAAC"}
1
+ {"version":3,"file":"RichEditor.d.ts","sourceRoot":"","sources":["../src/RichEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,OAAO,KAAK,EAGV,eAAe,EACf,aAAa,EACb,cAAc,EACf,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAQxD,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,gCAAgC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAgOD,eAAO,MAAM,UAAU;;;;CAIrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RichEditor.native.d.ts","sourceRoot":"","sources":["../src/RichEditor.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,OAAO,KAAK,EAAe,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI3F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAStD,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,gCAAgC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD,8EAA8E;AAC9E,iBAAS,mBAAmB,SAE3B;AA4dD,eAAO,MAAM,UAAU;;;;CAIrB,CAAC"}
1
+ {"version":3,"file":"RichEditor.native.d.ts","sourceRoot":"","sources":["../src/RichEditor.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,OAAO,KAAK,EAAe,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI3F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAUtD,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,gCAAgC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD,8EAA8E;AAC9E,iBAAS,mBAAmB,SAE3B;AA+eD,eAAO,MAAM,UAAU;;;;CAIrB,CAAC"}
@@ -13,7 +13,7 @@ import type { DeepKeys, DeepValue } from "@tanstack/form-core";
13
13
  import type React from "react";
14
14
  import type { LabelProps, SizeTokens } from "tamagui";
15
15
  import { type FormFieldProps, type FieldComponentProps, type Validator } from "@multiplatform.one/forms";
16
- import type { RichTextMentionOptions, ToolbarSection } from "../types";
16
+ import type { EditorCapabilities, RichTextMentionOptions, ToolbarSection } from "../types";
17
17
  export type RichTextEditorProps<TParentData = any, TName extends DeepKeys<TParentData> = any, TFieldValidator extends Validator<DeepValue<TParentData, TName>, unknown> | undefined = undefined, TFormValidator extends Validator<TParentData, unknown> | undefined = undefined, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = Omit<FormFieldProps<TParentData, TName, TFieldValidator, TFormValidator, TData>, "children" | "field"> & Partial<Omit<FieldComponentProps<TParentData, TName, TFieldValidator, TFormValidator, TData>, "children">> & {
18
18
  value?: string;
19
19
  defaultValue?: string;
@@ -38,6 +38,12 @@ export type RichTextEditorProps<TParentData = any, TName extends DeepKeys<TParen
38
38
  showBubbleToolbar?: boolean;
39
39
  /** Toolbar sections to display (shows all when omitted) */
40
40
  sections?: ToolbarSection[];
41
+ /**
42
+ * Capability surface (default "full"). "markdown" constrains the editor
43
+ * to markdown-expressible features and makes value/onChange markdown
44
+ * strings instead of HTML.
45
+ */
46
+ capabilities?: EditorCapabilities;
41
47
  /** When true, renders a skeleton placeholder instead of the editor */
42
48
  skeleton?: boolean;
43
49
  /** Controlled fullscreen state (web; uncontrolled when omitted) */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/RichTextEditor/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/RichTextEditor/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SlashCommands.d.ts","sourceRoot":"","sources":["../../src/editor/SlashCommands.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAsBlD,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAM3B,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5D;AAiMD,eAAO,MAAM,aAAa,qBAgDxB,CAAC"}
1
+ {"version":3,"file":"SlashCommands.d.ts","sourceRoot":"","sources":["../../src/editor/SlashCommands.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAsBlD,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAM3B,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5D;AAiMD,eAAO,MAAM,aAAa,qBA0DxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TentapEditor.native.d.ts","sourceRoot":"","sources":["../../src/editor/TentapEditor.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0BH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AAmB9E,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAID,eAAO,MAAM,YAAY,6GAkPxB,CAAC"}
1
+ {"version":3,"file":"TentapEditor.native.d.ts","sourceRoot":"","sources":["../../src/editor/TentapEditor.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0BH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AAoB9E,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAID,eAAO,MAAM,YAAY,6GA8PxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TiptapEditor.d.ts","sourceRoot":"","sources":["../../src/editor/TiptapEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuCH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AAyL9E,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACrC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAiBD,eAAO,MAAM,YAAY,wGAsgBxB,CAAC"}
1
+ {"version":3,"file":"TiptapEditor.d.ts","sourceRoot":"","sources":["../../src/editor/TiptapEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AA2B9E,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACrC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAiBD,eAAO,MAAM,YAAY,wGAqdxB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Editor capability presets.
3
+ *
4
+ * "markdown" constrains the WYSIWYG editor to exactly what GFM markdown can
5
+ * express (owner ruling, LC-52 MARKDOWN-EXPRESSIBLE-EDITING): bold, italic,
6
+ * strikethrough, inline code, links, headings, bullet/ordered/task lists,
7
+ * blockquote, fenced code blocks, images, horizontal rule, and simple pipe
8
+ * tables. Everything markdown cannot express — underline, highlight, text
9
+ * color, alignment, sub/superscript, collapsible details, inline math,
10
+ * mention chips, table cell merge/split — is ABSENT in this mode: the
11
+ * extensions are not registered (commands do not exist) and the toolbar
12
+ * controls do not render.
13
+ *
14
+ * This module is the single source of truth both the runtime (extension
15
+ * factory, toolbars, executeCommand guard) and the VERIFY specs consume.
16
+ */
17
+ import type { EditorCapabilities, EditorCommand } from "../types";
18
+ /** Commands expressible in GFM markdown (the "markdown" capability surface) */
19
+ export declare const MARKDOWN_COMMANDS: ReadonlySet<EditorCommand>;
20
+ /** True when the command exists in the given capability surface */
21
+ export declare function isCommandInCapabilities(command: EditorCommand, capabilities?: EditorCapabilities): boolean;
22
+ /**
23
+ * Slash-menu items excluded in markdown capabilities. Mermaid stays out of
24
+ * the INSERT surface to keep it strictly GFM (a hand-typed ``` fence still
25
+ * produces a plain code block); math and details have no markdown syntax.
26
+ * Emoji stays — it inserts a plain unicode character (just text).
27
+ */
28
+ export declare const MARKDOWN_EXCLUDED_SLASH_IDS: readonly string[];
29
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/editor/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAElE,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,aAAa,CAiCvD,CAAC;AAEH,mEAAmE;AACnE,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,kBAA2B,GACxC,OAAO,CAGT;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAKxD,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Extension factory for the web Tiptap editor.
3
+ *
4
+ * One canonical list (LC-16) consumed by TiptapEditor AND by the
5
+ * capability specs, so what ships is exactly what is verified. With
6
+ * `capabilities: "markdown"` the non-markdown extensions are NOT
7
+ * registered — their commands do not exist on the editor (LC-52
8
+ * MARKDOWN-EXPRESSIBLE-EDITING), and StarterKit's underline sub-extension
9
+ * is disabled.
10
+ */
11
+ import { Extension, type Extensions } from "@tiptap/core";
12
+ import type { EditorCapabilities } from "../types";
13
+ /**
14
+ * Tab / Shift-Tab indentation inside code blocks.
15
+ * Inserts or removes 2 spaces at the cursor (or start of each selected line).
16
+ */
17
+ export declare const CodeBlockTabIndent: Extension<any, any>;
18
+ /**
19
+ * Override Shift-Enter and Mod-Enter to create new paragraphs instead of
20
+ * hard breaks (<br>). Mirrors GitLab's approach: HardBreak node stays
21
+ * registered (so <br> in pasted HTML is preserved) but its keyboard
22
+ * shortcuts are replaced with the default enter (split paragraph) behavior.
23
+ */
24
+ export declare const ParagraphEnterKeys: Extension<any, any>;
25
+ /**
26
+ * Tab/Shift-Tab indent/dedent and Alt+Arrow move for list items.
27
+ * Tab sinks (indents), Shift-Tab lifts (dedents).
28
+ * Alt+Up/Down moves the list item up or down among siblings.
29
+ */
30
+ export declare const ListItemKeys: Extension<any, any>;
31
+ export interface BuildEditorExtensionsOptions {
32
+ /** Capability preset (default "full") */
33
+ capabilities?: EditorCapabilities;
34
+ /** Placeholder text (defaults to the translated "Start writing...") */
35
+ placeholder?: string;
36
+ /** Pre-built mention extension (ignored in markdown capabilities) */
37
+ mentionExtension?: Extensions[number] | null;
38
+ }
39
+ /** Build the production extension list for the given capability surface */
40
+ export declare function buildEditorExtensions({ capabilities, placeholder, mentionExtension, }?: BuildEditorExtensionsOptions): Extensions;
41
+ //# sourceMappingURL=extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/editor/extensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAoB1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAcnD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,qBAyE7B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,qBAsB7B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,qBAgCvB,CAAC;AAMH,MAAM,WAAW,4BAA4B;IAC3C,yCAAyC;IACzC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC9C;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,EACpC,YAAqB,EACrB,WAAW,EACX,gBAAuB,GACxB,GAAE,4BAAiC,GAAG,UAAU,CAuGhD"}
package/types/index.d.ts CHANGED
@@ -7,5 +7,6 @@ export { RichEditor } from "./RichEditor";
7
7
  export type { RichEditorCombinedProps } from "./RichEditor";
8
8
  export { RichTextEditor } from "./RichTextEditor";
9
9
  export type { RichTextEditorProps } from "./RichTextEditor";
10
- export type { RichEditorRef, RichEditorProps, EditorCommand, EditorState, RichTextMentionOptions, } from "./types";
10
+ export type { RichEditorRef, RichEditorProps, EditorCapabilities, EditorCommand, EditorState, RichTextMentionOptions, } from "./types";
11
+ export { MARKDOWN_COMMANDS, isCommandInCapabilities } from "./editor/capabilities";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,YAAY,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,YAAY,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -10,7 +10,7 @@
10
10
  * No native equivalent (10Tap does not support floating menus).
11
11
  */
12
12
  import type { Editor } from "@tiptap/react";
13
- import type { EditorState, RichEditorRef } from "../types";
13
+ import type { EditorCapabilities, EditorState, RichEditorRef } from "../types";
14
14
  export interface BubbleToolbarProps {
15
15
  /** Direct Tiptap editor instance (not through ref) */
16
16
  editor: Editor | null;
@@ -18,6 +18,8 @@ export interface BubbleToolbarProps {
18
18
  editorRef: React.RefObject<RichEditorRef | null>;
19
19
  /** Current editor state */
20
20
  state?: EditorState;
21
+ /** Capability surface — markdown hides non-markdown controls (default "full") */
22
+ capabilities?: EditorCapabilities;
21
23
  }
22
- export declare function BubbleToolbar({ editor, editorRef, state, }: BubbleToolbarProps): import("react/jsx-runtime").JSX.Element | null;
24
+ export declare function BubbleToolbar({ editor, editorRef, state, capabilities, }: BubbleToolbarProps): import("react/jsx-runtime").JSX.Element | null;
23
25
  //# sourceMappingURL=BubbleToolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BubbleToolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/BubbleToolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAqB3D,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iDAAiD;IACjD,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACjD,2BAA2B;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAMD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,KAA0B,GAC3B,EAAE,kBAAkB,kDAmGpB"}
1
+ {"version":3,"file":"BubbleToolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/BubbleToolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAsB/E,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iDAAiD;IACjD,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACjD,2BAA2B;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,iFAAiF;IACjF,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAMD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,KAA0B,EAC1B,YAAqB,GACtB,EAAE,kBAAkB,kDA2GpB"}
@@ -7,7 +7,7 @@
7
7
  * Overflow ("More" dropdown):
8
8
  * Subscript, Superscript | Alignment | Horizontal Rule, Clear Formatting
9
9
  */
10
- import type { EditorState, RichEditorRef, ToolbarSection } from "../types";
10
+ import type { EditorCapabilities, EditorState, RichEditorRef, ToolbarSection } from "../types";
11
11
  export interface FixedToolbarProps {
12
12
  /** Reference to the editor */
13
13
  editorRef: React.RefObject<RichEditorRef | null>;
@@ -15,6 +15,8 @@ export interface FixedToolbarProps {
15
15
  state?: EditorState;
16
16
  /** Toolbar sections to show (shows all when omitted) */
17
17
  sections?: ToolbarSection[];
18
+ /** Capability surface — markdown hides non-markdown controls (default "full") */
19
+ capabilities?: EditorCapabilities;
18
20
  /** Whether the toolbar has an error state */
19
21
  hasError?: boolean;
20
22
  /** Whether the editor is in fullscreen mode */
@@ -28,5 +30,5 @@ export interface FixedToolbarProps {
28
30
  /** Called when the link-dialog open state changes */
29
31
  onLinkDialogOpenChange?: (open: boolean) => void;
30
32
  }
31
- export declare function FixedToolbar({ editorRef, state, sections, hasError, fullscreen, onFullscreenToggle, linkDialogOpen, onLinkDialogOpenChange, }: FixedToolbarProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function FixedToolbar({ editorRef, state, sections, capabilities, hasError, fullscreen, onFullscreenToggle, linkDialogOpen, onLinkDialogOpenChange, }: FixedToolbarProps): import("react/jsx-runtime").JSX.Element;
32
34
  //# sourceMappingURL=FixedToolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FixedToolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/FixedToolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAoC3E,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACjD,2BAA2B;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,oEAAoE;IACpE,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC1B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAeD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,KAA0B,EAC1B,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,sBAAsB,GACvB,EAAE,iBAAiB,2CA4MnB"}
1
+ {"version":3,"file":"FixedToolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/FixedToolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAqC/F,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACjD,2BAA2B;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,iFAAiF;IACjF,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,oEAAoE;IACpE,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC1B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAeD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,KAA0B,EAC1B,QAAQ,EACR,YAAqB,EACrB,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,sBAAsB,GACvB,EAAE,iBAAiB,2CAgNnB"}
@@ -3,11 +3,13 @@
3
3
  * Groups: Subscript, Superscript | Alignment | Horizontal Rule, Clear Formatting
4
4
  */
5
5
  import type React from "react";
6
- import type { EditorState, RichEditorRef } from "../types";
6
+ import type { EditorCapabilities, EditorState, RichEditorRef } from "../types";
7
7
  export interface MoreDropdownProps {
8
8
  editorRef: React.RefObject<RichEditorRef | null>;
9
9
  state: EditorState;
10
+ /** Capability surface — markdown drops sub/superscript and alignment */
11
+ capabilities?: EditorCapabilities;
10
12
  disabled?: boolean;
11
13
  }
12
- export declare function MoreDropdown({ editorRef, state, disabled }: MoreDropdownProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function MoreDropdown({ editorRef, state, capabilities, disabled, }: MoreDropdownProps): import("react/jsx-runtime").JSX.Element;
13
15
  //# sourceMappingURL=MoreDropdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MoreDropdown.d.ts","sourceRoot":"","sources":["../../src/toolbar/MoreDropdown.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAiB,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAe1E,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACjD,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwGD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CA6C7E"}
1
+ {"version":3,"file":"MoreDropdown.d.ts","sourceRoot":"","sources":["../../src/toolbar/MoreDropdown.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,kBAAkB,EAAiB,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAgB9F,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACjD,KAAK,EAAE,WAAW,CAAC;IACnB,wEAAwE;IACxE,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwGD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,KAAK,EACL,YAAqB,EACrB,QAAQ,GACT,EAAE,iBAAiB,2CA6DnB"}
@@ -3,8 +3,11 @@
3
3
  * Provides row/column add/delete and table management actions.
4
4
  */
5
5
  import type { Editor } from "@tiptap/react";
6
+ import type { EditorCapabilities } from "../types";
6
7
  export interface TableBubbleProps {
7
8
  editor: Editor | null;
9
+ /** Capability surface — markdown drops merge/split (default "full") */
10
+ capabilities?: EditorCapabilities;
8
11
  }
9
- export declare function TableBubble({ editor }: TableBubbleProps): import("react/jsx-runtime").JSX.Element | null;
12
+ export declare function TableBubble({ editor, capabilities }: TableBubbleProps): import("react/jsx-runtime").JSX.Element | null;
10
13
  //# sourceMappingURL=TableBubble.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableBubble.d.ts","sourceRoot":"","sources":["../../src/toolbar/TableBubble.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAkC5C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,gBAAgB,kDA4IvD"}
1
+ {"version":3,"file":"TableBubble.d.ts","sourceRoot":"","sources":["../../src/toolbar/TableBubble.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAM5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AA0EnD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,YAAqB,EAAE,EAAE,gBAAgB,kDAiJ9E"}
package/types/types.d.ts CHANGED
@@ -13,6 +13,17 @@ export interface RichTextMentionOptions {
13
13
  /** Returns suggestion items for a query (sync or async) */
14
14
  items: (query: string) => MentionItem[] | Promise<MentionItem[]>;
15
15
  }
16
+ /**
17
+ * Capability surface of the editor:
18
+ * - "full": every extension and toolbar control (default).
19
+ * - "markdown": WYSIWYG constrained to what GFM markdown can express —
20
+ * non-markdown extensions (underline, highlight, text color, alignment,
21
+ * sub/superscript, details, inline math, mentions) are NOT registered
22
+ * (commands absent, not just hidden), the toolbar shows only the
23
+ * markdown-expressible controls, `initialContent` is parsed as markdown,
24
+ * and `onChange` emits a markdown string.
25
+ */
26
+ export type EditorCapabilities = "full" | "markdown";
16
27
  export type TextAlignment = "left" | "center" | "right" | "justify";
17
28
  export type EditorCommand = "bold" | "italic" | "underline" | "strike" | "code" | "subscript" | "superscript" | "heading1" | "heading2" | "heading3" | "heading4" | "heading5" | "heading6" | "paragraph" | "bulletList" | "orderedList" | "taskList" | "blockquote" | "codeBlock" | "link" | "image" | "undo" | "redo" | "alignLeft" | "alignCenter" | "alignRight" | "alignJustify" | "textColor" | "highlight" | "horizontalRule" | "clearFormatting" | "insertTable" | "addColumnBefore" | "addColumnAfter" | "deleteColumn" | "addRowBefore" | "addRowAfter" | "deleteRow" | "deleteTable" | "mergeCells" | "splitCell" | "toggleHeaderRow";
18
29
  export interface EditorState {
@@ -58,17 +69,28 @@ export interface RichEditorRef {
58
69
  getHTML: () => string;
59
70
  /** Get the content as JSON (ProseMirror format) */
60
71
  getJSON: () => any;
72
+ /** Get the content serialized to GFM markdown (web) */
73
+ getMarkdown: () => string;
61
74
  /** Set content from HTML */
62
75
  setHTML: (html: string) => void;
63
76
  /** Set content from JSON */
64
77
  setJSON: (json: any) => void;
78
+ /** Set content from a markdown string without emitting onChange (web) */
79
+ setMarkdown: (markdown: string) => void;
65
80
  /** Focus the editor */
66
81
  focus: () => void;
67
82
  /** Blur the editor */
68
83
  blur: () => void;
69
84
  }
70
85
  export interface RichEditorProps {
71
- /** Initial content as HTML */
86
+ /**
87
+ * Capability preset (default "full"). With "markdown", only the
88
+ * markdown-expressible extensions register, the toolbar shows only the
89
+ * corresponding controls, `initialContent` is parsed as markdown, and
90
+ * `onChange` receives a markdown string. Fixed at mount.
91
+ */
92
+ capabilities?: EditorCapabilities;
93
+ /** Initial content as HTML ("full") or markdown ("markdown" capabilities) */
72
94
  initialContent?: string;
73
95
  /** Initial content as JSON (takes precedence over initialContent) */
74
96
  initialJSON?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}