@tiptap/react 3.0.0-next.0 → 3.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/dist/index.cjs +996 -1126
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +334 -0
  4. package/dist/index.d.ts +334 -0
  5. package/dist/index.js +960 -1098
  6. package/dist/index.js.map +1 -1
  7. package/package.json +14 -15
  8. package/src/BubbleMenu.tsx +70 -50
  9. package/src/Context.tsx +15 -7
  10. package/src/Editor.ts +7 -8
  11. package/src/EditorContent.tsx +98 -50
  12. package/src/FloatingMenu.tsx +51 -45
  13. package/src/NodeViewContent.tsx +1 -0
  14. package/src/NodeViewWrapper.tsx +1 -0
  15. package/src/ReactNodeViewRenderer.tsx +163 -53
  16. package/src/ReactRenderer.tsx +42 -23
  17. package/src/index.ts +0 -1
  18. package/src/useEditor.ts +253 -92
  19. package/src/useEditorState.ts +122 -69
  20. package/dist/index.umd.js +0 -1176
  21. package/dist/index.umd.js.map +0 -1
  22. package/dist/packages/core/src/CommandManager.d.ts +0 -20
  23. package/dist/packages/core/src/Editor.d.ts +0 -159
  24. package/dist/packages/core/src/EventEmitter.d.ts +0 -11
  25. package/dist/packages/core/src/Extension.d.ts +0 -343
  26. package/dist/packages/core/src/ExtensionManager.d.ts +0 -55
  27. package/dist/packages/core/src/InputRule.d.ts +0 -42
  28. package/dist/packages/core/src/Mark.d.ts +0 -451
  29. package/dist/packages/core/src/Node.d.ts +0 -611
  30. package/dist/packages/core/src/NodePos.d.ts +0 -44
  31. package/dist/packages/core/src/NodeView.d.ts +0 -31
  32. package/dist/packages/core/src/PasteRule.d.ts +0 -50
  33. package/dist/packages/core/src/Tracker.d.ts +0 -11
  34. package/dist/packages/core/src/commands/blur.d.ts +0 -13
  35. package/dist/packages/core/src/commands/clearContent.d.ts +0 -14
  36. package/dist/packages/core/src/commands/clearNodes.d.ts +0 -13
  37. package/dist/packages/core/src/commands/command.d.ts +0 -18
  38. package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -13
  39. package/dist/packages/core/src/commands/cut.d.ts +0 -20
  40. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +0 -13
  41. package/dist/packages/core/src/commands/deleteNode.d.ts +0 -15
  42. package/dist/packages/core/src/commands/deleteRange.d.ts +0 -14
  43. package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -13
  44. package/dist/packages/core/src/commands/enter.d.ts +0 -13
  45. package/dist/packages/core/src/commands/exitCode.d.ts +0 -13
  46. package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -25
  47. package/dist/packages/core/src/commands/first.d.ts +0 -14
  48. package/dist/packages/core/src/commands/focus.d.ts +0 -27
  49. package/dist/packages/core/src/commands/forEach.d.ts +0 -14
  50. package/dist/packages/core/src/commands/index.d.ts +0 -55
  51. package/dist/packages/core/src/commands/insertContent.d.ts +0 -34
  52. package/dist/packages/core/src/commands/insertContentAt.d.ts +0 -47
  53. package/dist/packages/core/src/commands/join.d.ts +0 -41
  54. package/dist/packages/core/src/commands/joinItemBackward.d.ts +0 -13
  55. package/dist/packages/core/src/commands/joinItemForward.d.ts +0 -13
  56. package/dist/packages/core/src/commands/joinTextblockBackward.d.ts +0 -12
  57. package/dist/packages/core/src/commands/joinTextblockForward.d.ts +0 -12
  58. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -14
  59. package/dist/packages/core/src/commands/lift.d.ts +0 -17
  60. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -13
  61. package/dist/packages/core/src/commands/liftListItem.d.ts +0 -15
  62. package/dist/packages/core/src/commands/newlineInCode.d.ts +0 -13
  63. package/dist/packages/core/src/commands/resetAttributes.d.ts +0 -16
  64. package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -13
  65. package/dist/packages/core/src/commands/selectAll.d.ts +0 -13
  66. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -13
  67. package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -13
  68. package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -13
  69. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +0 -13
  70. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +0 -13
  71. package/dist/packages/core/src/commands/setContent.d.ts +0 -40
  72. package/dist/packages/core/src/commands/setMark.d.ts +0 -15
  73. package/dist/packages/core/src/commands/setMeta.d.ts +0 -15
  74. package/dist/packages/core/src/commands/setNode.d.ts +0 -16
  75. package/dist/packages/core/src/commands/setNodeSelection.d.ts +0 -14
  76. package/dist/packages/core/src/commands/setTextSelection.d.ts +0 -14
  77. package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -15
  78. package/dist/packages/core/src/commands/splitBlock.d.ts +0 -17
  79. package/dist/packages/core/src/commands/splitListItem.d.ts +0 -15
  80. package/dist/packages/core/src/commands/toggleList.d.ts +0 -18
  81. package/dist/packages/core/src/commands/toggleMark.d.ts +0 -30
  82. package/dist/packages/core/src/commands/toggleNode.d.ts +0 -17
  83. package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -16
  84. package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -13
  85. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -13
  86. package/dist/packages/core/src/commands/unsetMark.d.ts +0 -25
  87. package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -24
  88. package/dist/packages/core/src/commands/wrapIn.d.ts +0 -16
  89. package/dist/packages/core/src/commands/wrapInList.d.ts +0 -16
  90. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -5
  91. package/dist/packages/core/src/extensions/commands.d.ts +0 -3
  92. package/dist/packages/core/src/extensions/editable.d.ts +0 -2
  93. package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
  94. package/dist/packages/core/src/extensions/index.d.ts +0 -6
  95. package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
  96. package/dist/packages/core/src/extensions/tabindex.d.ts +0 -2
  97. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +0 -10
  98. package/dist/packages/core/src/helpers/createChainableState.d.ts +0 -10
  99. package/dist/packages/core/src/helpers/createDocument.d.ts +0 -12
  100. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -15
  101. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +0 -7
  102. package/dist/packages/core/src/helpers/findChildren.d.ts +0 -9
  103. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +0 -10
  104. package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -16
  105. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -17
  106. package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -8
  107. package/dist/packages/core/src/helpers/generateJSON.d.ts +0 -8
  108. package/dist/packages/core/src/helpers/generateText.d.ts +0 -12
  109. package/dist/packages/core/src/helpers/getAttributes.d.ts +0 -9
  110. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
  111. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +0 -11
  112. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +0 -8
  113. package/dist/packages/core/src/helpers/getExtensionField.d.ts +0 -9
  114. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
  115. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -3
  116. package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
  117. package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
  118. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
  119. package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +0 -11
  120. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -3
  121. package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
  122. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
  123. package/dist/packages/core/src/helpers/getSchema.d.ts +0 -4
  124. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +0 -10
  125. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -8
  126. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -8
  127. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -9
  128. package/dist/packages/core/src/helpers/getText.d.ts +0 -15
  129. package/dist/packages/core/src/helpers/getTextBetween.d.ts +0 -14
  130. package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +0 -8
  131. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +0 -8
  132. package/dist/packages/core/src/helpers/index.d.ts +0 -50
  133. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
  134. package/dist/packages/core/src/helpers/isActive.d.ts +0 -2
  135. package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +0 -2
  136. package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +0 -2
  137. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +0 -2
  138. package/dist/packages/core/src/helpers/isList.d.ts +0 -2
  139. package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -3
  140. package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -3
  141. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -8
  142. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
  143. package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
  144. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +0 -2
  145. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +0 -4
  146. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
  147. package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
  148. package/dist/packages/core/src/index.d.ts +0 -24
  149. package/dist/packages/core/src/inputRules/index.d.ts +0 -5
  150. package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -13
  151. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -23
  152. package/dist/packages/core/src/inputRules/textInputRule.d.ts +0 -10
  153. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +0 -15
  154. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +0 -28
  155. package/dist/packages/core/src/pasteRules/index.d.ts +0 -3
  156. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -13
  157. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +0 -13
  158. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +0 -10
  159. package/dist/packages/core/src/style.d.ts +0 -1
  160. package/dist/packages/core/src/types.d.ts +0 -253
  161. package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -9
  162. package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
  163. package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -6
  164. package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
  165. package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +0 -1
  166. package/dist/packages/core/src/utilities/findDuplicates.d.ts +0 -1
  167. package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
  168. package/dist/packages/core/src/utilities/index.d.ts +0 -20
  169. package/dist/packages/core/src/utilities/isAndroid.d.ts +0 -1
  170. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
  171. package/dist/packages/core/src/utilities/isFunction.d.ts +0 -1
  172. package/dist/packages/core/src/utilities/isMacOS.d.ts +0 -1
  173. package/dist/packages/core/src/utilities/isNumber.d.ts +0 -1
  174. package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
  175. package/dist/packages/core/src/utilities/isRegExp.d.ts +0 -1
  176. package/dist/packages/core/src/utilities/isString.d.ts +0 -1
  177. package/dist/packages/core/src/utilities/isiOS.d.ts +0 -1
  178. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -1
  179. package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -1
  180. package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
  181. package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -8
  182. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +0 -8
  183. package/dist/packages/extension-bubble-menu/src/bubble-menu-plugin.d.ts +0 -99
  184. package/dist/packages/extension-bubble-menu/src/bubble-menu.d.ts +0 -15
  185. package/dist/packages/extension-bubble-menu/src/index.d.ts +0 -4
  186. package/dist/packages/extension-floating-menu/src/floating-menu-plugin.d.ts +0 -81
  187. package/dist/packages/extension-floating-menu/src/floating-menu.d.ts +0 -15
  188. package/dist/packages/extension-floating-menu/src/index.d.ts +0 -4
  189. package/dist/packages/react/src/BubbleMenu.d.ts +0 -13
  190. package/dist/packages/react/src/Context.d.ts +0 -23
  191. package/dist/packages/react/src/Editor.d.ts +0 -12
  192. package/dist/packages/react/src/EditorContent.d.ts +0 -24
  193. package/dist/packages/react/src/FloatingMenu.d.ts +0 -11
  194. package/dist/packages/react/src/NodeViewContent.d.ts +0 -6
  195. package/dist/packages/react/src/NodeViewWrapper.d.ts +0 -6
  196. package/dist/packages/react/src/ReactNodeViewRenderer.d.ts +0 -16
  197. package/dist/packages/react/src/ReactRenderer.d.ts +0 -62
  198. package/dist/packages/react/src/index.d.ts +0 -13
  199. package/dist/packages/react/src/useEditor.d.ts +0 -39
  200. package/dist/packages/react/src/useEditorState.d.ts +0 -22
  201. package/dist/packages/react/src/useReactNodeView.d.ts +0 -6
@@ -0,0 +1,334 @@
1
+ import { BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu';
2
+ import * as React from 'react';
3
+ import React__default, { DependencyList, ReactNode, HTMLAttributes, HTMLProps, ForwardedRef, ComponentType as ComponentType$1 } from 'react';
4
+ import { EditorOptions, Editor, NodeViewRendererOptions, NodeViewProps, NodeView, NodeViewRenderer } from '@tiptap/core';
5
+ export * from '@tiptap/core';
6
+ import { FloatingMenuPluginProps } from '@tiptap/extension-floating-menu';
7
+ import { Node } from '@tiptap/pm/model';
8
+ import { Decoration, DecorationSource } from '@tiptap/pm/view';
9
+
10
+ type Optional$1<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
11
+ type BubbleMenuProps = Omit<Optional$1<BubbleMenuPluginProps, 'pluginKey'>, 'element' | 'editor'> & {
12
+ editor: BubbleMenuPluginProps['editor'] | null;
13
+ updateDelay?: number;
14
+ resizeDelay?: number;
15
+ options?: BubbleMenuPluginProps['options'];
16
+ } & React__default.HTMLAttributes<HTMLDivElement>;
17
+ declare const BubbleMenu: React__default.ForwardRefExoticComponent<Omit<Optional$1<BubbleMenuPluginProps, "pluginKey">, "editor" | "element"> & {
18
+ editor: BubbleMenuPluginProps["editor"] | null;
19
+ updateDelay?: number;
20
+ resizeDelay?: number;
21
+ options?: BubbleMenuPluginProps["options"];
22
+ } & React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
23
+
24
+ /**
25
+ * The options for the `useEditor` hook.
26
+ */
27
+ type UseEditorOptions = Partial<EditorOptions> & {
28
+ /**
29
+ * Whether to render the editor on the first render.
30
+ * If client-side rendering, set this to `true`.
31
+ * If server-side rendering, set this to `false`.
32
+ * @default true
33
+ */
34
+ immediatelyRender?: boolean;
35
+ /**
36
+ * Whether to re-render the editor on each transaction.
37
+ * This is legacy behavior that will be removed in future versions.
38
+ * @default false
39
+ */
40
+ shouldRerenderOnTransaction?: boolean;
41
+ };
42
+ /**
43
+ * This hook allows you to create an editor instance.
44
+ * @param options The editor options
45
+ * @param deps The dependencies to watch for changes
46
+ * @returns The editor instance
47
+ * @example const editor = useEditor({ extensions: [...] })
48
+ */
49
+ declare function useEditor(options: UseEditorOptions & {
50
+ immediatelyRender: false;
51
+ }, deps?: DependencyList): Editor | null;
52
+ /**
53
+ * This hook allows you to create an editor instance.
54
+ * @param options The editor options
55
+ * @param deps The dependencies to watch for changes
56
+ * @returns The editor instance
57
+ * @example const editor = useEditor({ extensions: [...] })
58
+ */
59
+ declare function useEditor(options: UseEditorOptions, deps?: DependencyList): Editor;
60
+
61
+ type EditorContextValue = {
62
+ editor: Editor | null;
63
+ };
64
+ declare const EditorContext: React__default.Context<EditorContextValue>;
65
+ declare const EditorConsumer: React__default.Consumer<EditorContextValue>;
66
+ /**
67
+ * A hook to get the current editor instance.
68
+ */
69
+ declare const useCurrentEditor: () => EditorContextValue;
70
+ type EditorProviderProps = {
71
+ children?: ReactNode;
72
+ slotBefore?: ReactNode;
73
+ slotAfter?: ReactNode;
74
+ editorContainerProps?: HTMLAttributes<HTMLDivElement>;
75
+ } & UseEditorOptions;
76
+ /**
77
+ * This is the provider component for the editor.
78
+ * It allows the editor to be accessible across the entire component tree
79
+ * with `useCurrentEditor`.
80
+ */
81
+ declare function EditorProvider({ children, slotAfter, slotBefore, editorContainerProps, ...editorOptions }: EditorProviderProps): React__default.JSX.Element | null;
82
+
83
+ interface EditorContentProps extends HTMLProps<HTMLDivElement> {
84
+ editor: Editor | null;
85
+ innerRef?: ForwardedRef<HTMLDivElement | null>;
86
+ }
87
+ declare class PureEditorContent extends React__default.Component<EditorContentProps, {
88
+ hasContentComponentInitialized: boolean;
89
+ }> {
90
+ editorContentRef: React__default.RefObject<any>;
91
+ initialized: boolean;
92
+ unsubscribeToContentComponent?: () => void;
93
+ constructor(props: EditorContentProps);
94
+ componentDidMount(): void;
95
+ componentDidUpdate(): void;
96
+ init(): void;
97
+ componentWillUnmount(): void;
98
+ render(): React__default.JSX.Element;
99
+ }
100
+ declare const EditorContent: React__default.MemoExoticComponent<React__default.ForwardRefExoticComponent<Omit<EditorContentProps, "ref"> & React__default.RefAttributes<HTMLDivElement>>>;
101
+
102
+ type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
103
+ type FloatingMenuProps = Omit<Optional<FloatingMenuPluginProps, 'pluginKey'>, 'element' | 'editor'> & {
104
+ editor: FloatingMenuPluginProps['editor'] | null;
105
+ options?: FloatingMenuPluginProps['options'];
106
+ } & React__default.HTMLAttributes<HTMLDivElement>;
107
+ declare const FloatingMenu: React__default.ForwardRefExoticComponent<Omit<Optional<FloatingMenuPluginProps, "pluginKey">, "editor" | "element"> & {
108
+ editor: FloatingMenuPluginProps["editor"] | null;
109
+ options?: FloatingMenuPluginProps["options"];
110
+ } & React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
111
+
112
+ interface NodeViewContentProps {
113
+ [key: string]: any;
114
+ as?: React__default.ElementType;
115
+ }
116
+ declare const NodeViewContent: React__default.FC<NodeViewContentProps>;
117
+
118
+ interface NodeViewWrapperProps {
119
+ [key: string]: any;
120
+ as?: React__default.ElementType;
121
+ }
122
+ declare const NodeViewWrapper: React__default.FC<NodeViewWrapperProps>;
123
+
124
+ interface ReactRendererOptions {
125
+ /**
126
+ * The editor instance.
127
+ * @type {Editor}
128
+ */
129
+ editor: Editor;
130
+ /**
131
+ * The props for the component.
132
+ * @type {Record<string, any>}
133
+ * @default {}
134
+ */
135
+ props?: Record<string, any>;
136
+ /**
137
+ * The tag name of the element.
138
+ * @type {string}
139
+ * @default 'div'
140
+ */
141
+ as?: string;
142
+ /**
143
+ * The class name of the element.
144
+ * @type {string}
145
+ * @default ''
146
+ * @example 'foo bar'
147
+ */
148
+ className?: string;
149
+ }
150
+ type ComponentType<R, P> = React__default.ComponentClass<P> | React__default.FunctionComponent<P> | React__default.ForwardRefExoticComponent<React__default.PropsWithoutRef<P> & React__default.RefAttributes<R>>;
151
+ /**
152
+ * The ReactRenderer class. It's responsible for rendering React components inside the editor.
153
+ * @example
154
+ * new ReactRenderer(MyComponent, {
155
+ * editor,
156
+ * props: {
157
+ * foo: 'bar',
158
+ * },
159
+ * as: 'span',
160
+ * })
161
+ */
162
+ declare class ReactRenderer<R = unknown, P extends Record<string, any> = {}> {
163
+ id: string;
164
+ editor: Editor;
165
+ component: any;
166
+ element: Element;
167
+ props: P;
168
+ reactElement: React__default.ReactNode;
169
+ ref: R | null;
170
+ /**
171
+ * Immediately creates element and renders the provided React component.
172
+ */
173
+ constructor(component: ComponentType<R, P>, { editor, props, as, className, }: ReactRendererOptions);
174
+ /**
175
+ * Render the React component.
176
+ */
177
+ render(): void;
178
+ /**
179
+ * Re-renders the React component with new props.
180
+ */
181
+ updateProps(props?: Record<string, any>): void;
182
+ /**
183
+ * Destroy the React component.
184
+ */
185
+ destroy(): void;
186
+ /**
187
+ * Update the attributes of the element that holds the React component.
188
+ */
189
+ updateAttributes(attributes: Record<string, string>): void;
190
+ }
191
+
192
+ interface ReactNodeViewRendererOptions extends NodeViewRendererOptions {
193
+ /**
194
+ * This function is called when the node view is updated.
195
+ * It allows you to compare the old node with the new node and decide if the component should update.
196
+ */
197
+ update: ((props: {
198
+ oldNode: Node;
199
+ oldDecorations: readonly Decoration[];
200
+ oldInnerDecorations: DecorationSource;
201
+ newNode: Node;
202
+ newDecorations: readonly Decoration[];
203
+ innerDecorations: DecorationSource;
204
+ updateProps: () => void;
205
+ }) => boolean) | null;
206
+ /**
207
+ * The tag name of the element wrapping the React component.
208
+ */
209
+ as?: string;
210
+ /**
211
+ * The class name of the element wrapping the React component.
212
+ */
213
+ className?: string;
214
+ /**
215
+ * Attributes that should be applied to the element wrapping the React component.
216
+ * If this is a function, it will be called each time the node view is updated.
217
+ * If this is an object, it will be applied once when the node view is mounted.
218
+ */
219
+ attrs?: Record<string, string> | ((props: {
220
+ node: Node;
221
+ HTMLAttributes: Record<string, any>;
222
+ }) => Record<string, string>);
223
+ }
224
+ declare class ReactNodeView<Component extends ComponentType$1<NodeViewProps> = ComponentType$1<NodeViewProps>, NodeEditor extends Editor = Editor, Options extends ReactNodeViewRendererOptions = ReactNodeViewRendererOptions> extends NodeView<Component, NodeEditor, Options> {
225
+ /**
226
+ * The renderer instance.
227
+ */
228
+ renderer: ReactRenderer<unknown, NodeViewProps>;
229
+ /**
230
+ * The element that holds the rich-text content of the node.
231
+ */
232
+ contentDOMElement: HTMLElement | null;
233
+ /**
234
+ * Setup the React component.
235
+ * Called on initialization.
236
+ */
237
+ mount(): void;
238
+ /**
239
+ * Return the DOM element.
240
+ * This is the element that will be used to display the node view.
241
+ */
242
+ get dom(): HTMLElement;
243
+ /**
244
+ * Return the content DOM element.
245
+ * This is the element that will be used to display the rich-text content of the node.
246
+ */
247
+ get contentDOM(): HTMLElement | null;
248
+ /**
249
+ * On editor selection update, check if the node is selected.
250
+ * If it is, call `selectNode`, otherwise call `deselectNode`.
251
+ */
252
+ handleSelectionUpdate(): void;
253
+ /**
254
+ * On update, update the React component.
255
+ * To prevent unnecessary updates, the `update` option can be used.
256
+ */
257
+ update(node: Node, decorations: readonly Decoration[], innerDecorations: DecorationSource): boolean;
258
+ /**
259
+ * Select the node.
260
+ * Add the `selected` prop and the `ProseMirror-selectednode` class.
261
+ */
262
+ selectNode(): void;
263
+ /**
264
+ * Deselect the node.
265
+ * Remove the `selected` prop and the `ProseMirror-selectednode` class.
266
+ */
267
+ deselectNode(): void;
268
+ /**
269
+ * Destroy the React component instance.
270
+ */
271
+ destroy(): void;
272
+ /**
273
+ * Update the attributes of the top-level element that holds the React component.
274
+ * Applying the attributes defined in the `attrs` option.
275
+ */
276
+ updateElementAttributes(): void;
277
+ }
278
+ /**
279
+ * Create a React node view renderer.
280
+ */
281
+ declare function ReactNodeViewRenderer(component: ComponentType$1<NodeViewProps>, options?: Partial<ReactNodeViewRendererOptions>): NodeViewRenderer;
282
+
283
+ type EditorStateSnapshot<TEditor extends Editor | null = Editor | null> = {
284
+ editor: TEditor;
285
+ transactionNumber: number;
286
+ };
287
+ type UseEditorStateOptions<TSelectorResult, TEditor extends Editor | null = Editor | null> = {
288
+ /**
289
+ * The editor instance.
290
+ */
291
+ editor: TEditor;
292
+ /**
293
+ * A selector function to determine the value to compare for re-rendering.
294
+ */
295
+ selector: (context: EditorStateSnapshot<TEditor>) => TSelectorResult;
296
+ /**
297
+ * A custom equality function to determine if the editor should re-render.
298
+ * @default `deepEqual` from `fast-deep-equal`
299
+ */
300
+ equalityFn?: (a: TSelectorResult, b: TSelectorResult | null) => boolean;
301
+ };
302
+ /**
303
+ * This hook allows you to watch for changes on the editor instance.
304
+ * It will allow you to select a part of the editor state and re-render the component when it changes.
305
+ * @example
306
+ * ```tsx
307
+ * const editor = useEditor({...options})
308
+ * const { currentSelection } = useEditorState({
309
+ * editor,
310
+ * selector: snapshot => ({ currentSelection: snapshot.editor.state.selection }),
311
+ * })
312
+ */
313
+ declare function useEditorState<TSelectorResult>(options: UseEditorStateOptions<TSelectorResult, Editor>): TSelectorResult;
314
+ /**
315
+ * This hook allows you to watch for changes on the editor instance.
316
+ * It will allow you to select a part of the editor state and re-render the component when it changes.
317
+ * @example
318
+ * ```tsx
319
+ * const editor = useEditor({...options})
320
+ * const { currentSelection } = useEditorState({
321
+ * editor,
322
+ * selector: snapshot => ({ currentSelection: snapshot.editor.state.selection }),
323
+ * })
324
+ */
325
+ declare function useEditorState<TSelectorResult>(options: UseEditorStateOptions<TSelectorResult, Editor | null>): TSelectorResult | null;
326
+
327
+ interface ReactNodeViewContextProps {
328
+ onDragStart: (event: DragEvent) => void;
329
+ nodeViewContentRef: (element: HTMLElement | null) => void;
330
+ }
331
+ declare const ReactNodeViewContext: React.Context<Partial<ReactNodeViewContextProps>>;
332
+ declare const useReactNodeView: () => Partial<ReactNodeViewContextProps>;
333
+
334
+ export { BubbleMenu, type BubbleMenuProps, EditorConsumer, EditorContent, type EditorContentProps, EditorContext, type EditorContextValue, EditorProvider, type EditorProviderProps, type EditorStateSnapshot, FloatingMenu, type FloatingMenuProps, NodeViewContent, type NodeViewContentProps, NodeViewWrapper, type NodeViewWrapperProps, PureEditorContent, ReactNodeView, ReactNodeViewContext, type ReactNodeViewContextProps, ReactNodeViewRenderer, type ReactNodeViewRendererOptions, ReactRenderer, type ReactRendererOptions, type UseEditorOptions, type UseEditorStateOptions, useCurrentEditor, useEditor, useEditorState, useReactNodeView };
@@ -0,0 +1,334 @@
1
+ import { BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu';
2
+ import * as React from 'react';
3
+ import React__default, { DependencyList, ReactNode, HTMLAttributes, HTMLProps, ForwardedRef, ComponentType as ComponentType$1 } from 'react';
4
+ import { EditorOptions, Editor, NodeViewRendererOptions, NodeViewProps, NodeView, NodeViewRenderer } from '@tiptap/core';
5
+ export * from '@tiptap/core';
6
+ import { FloatingMenuPluginProps } from '@tiptap/extension-floating-menu';
7
+ import { Node } from '@tiptap/pm/model';
8
+ import { Decoration, DecorationSource } from '@tiptap/pm/view';
9
+
10
+ type Optional$1<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
11
+ type BubbleMenuProps = Omit<Optional$1<BubbleMenuPluginProps, 'pluginKey'>, 'element' | 'editor'> & {
12
+ editor: BubbleMenuPluginProps['editor'] | null;
13
+ updateDelay?: number;
14
+ resizeDelay?: number;
15
+ options?: BubbleMenuPluginProps['options'];
16
+ } & React__default.HTMLAttributes<HTMLDivElement>;
17
+ declare const BubbleMenu: React__default.ForwardRefExoticComponent<Omit<Optional$1<BubbleMenuPluginProps, "pluginKey">, "editor" | "element"> & {
18
+ editor: BubbleMenuPluginProps["editor"] | null;
19
+ updateDelay?: number;
20
+ resizeDelay?: number;
21
+ options?: BubbleMenuPluginProps["options"];
22
+ } & React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
23
+
24
+ /**
25
+ * The options for the `useEditor` hook.
26
+ */
27
+ type UseEditorOptions = Partial<EditorOptions> & {
28
+ /**
29
+ * Whether to render the editor on the first render.
30
+ * If client-side rendering, set this to `true`.
31
+ * If server-side rendering, set this to `false`.
32
+ * @default true
33
+ */
34
+ immediatelyRender?: boolean;
35
+ /**
36
+ * Whether to re-render the editor on each transaction.
37
+ * This is legacy behavior that will be removed in future versions.
38
+ * @default false
39
+ */
40
+ shouldRerenderOnTransaction?: boolean;
41
+ };
42
+ /**
43
+ * This hook allows you to create an editor instance.
44
+ * @param options The editor options
45
+ * @param deps The dependencies to watch for changes
46
+ * @returns The editor instance
47
+ * @example const editor = useEditor({ extensions: [...] })
48
+ */
49
+ declare function useEditor(options: UseEditorOptions & {
50
+ immediatelyRender: false;
51
+ }, deps?: DependencyList): Editor | null;
52
+ /**
53
+ * This hook allows you to create an editor instance.
54
+ * @param options The editor options
55
+ * @param deps The dependencies to watch for changes
56
+ * @returns The editor instance
57
+ * @example const editor = useEditor({ extensions: [...] })
58
+ */
59
+ declare function useEditor(options: UseEditorOptions, deps?: DependencyList): Editor;
60
+
61
+ type EditorContextValue = {
62
+ editor: Editor | null;
63
+ };
64
+ declare const EditorContext: React__default.Context<EditorContextValue>;
65
+ declare const EditorConsumer: React__default.Consumer<EditorContextValue>;
66
+ /**
67
+ * A hook to get the current editor instance.
68
+ */
69
+ declare const useCurrentEditor: () => EditorContextValue;
70
+ type EditorProviderProps = {
71
+ children?: ReactNode;
72
+ slotBefore?: ReactNode;
73
+ slotAfter?: ReactNode;
74
+ editorContainerProps?: HTMLAttributes<HTMLDivElement>;
75
+ } & UseEditorOptions;
76
+ /**
77
+ * This is the provider component for the editor.
78
+ * It allows the editor to be accessible across the entire component tree
79
+ * with `useCurrentEditor`.
80
+ */
81
+ declare function EditorProvider({ children, slotAfter, slotBefore, editorContainerProps, ...editorOptions }: EditorProviderProps): React__default.JSX.Element | null;
82
+
83
+ interface EditorContentProps extends HTMLProps<HTMLDivElement> {
84
+ editor: Editor | null;
85
+ innerRef?: ForwardedRef<HTMLDivElement | null>;
86
+ }
87
+ declare class PureEditorContent extends React__default.Component<EditorContentProps, {
88
+ hasContentComponentInitialized: boolean;
89
+ }> {
90
+ editorContentRef: React__default.RefObject<any>;
91
+ initialized: boolean;
92
+ unsubscribeToContentComponent?: () => void;
93
+ constructor(props: EditorContentProps);
94
+ componentDidMount(): void;
95
+ componentDidUpdate(): void;
96
+ init(): void;
97
+ componentWillUnmount(): void;
98
+ render(): React__default.JSX.Element;
99
+ }
100
+ declare const EditorContent: React__default.MemoExoticComponent<React__default.ForwardRefExoticComponent<Omit<EditorContentProps, "ref"> & React__default.RefAttributes<HTMLDivElement>>>;
101
+
102
+ type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
103
+ type FloatingMenuProps = Omit<Optional<FloatingMenuPluginProps, 'pluginKey'>, 'element' | 'editor'> & {
104
+ editor: FloatingMenuPluginProps['editor'] | null;
105
+ options?: FloatingMenuPluginProps['options'];
106
+ } & React__default.HTMLAttributes<HTMLDivElement>;
107
+ declare const FloatingMenu: React__default.ForwardRefExoticComponent<Omit<Optional<FloatingMenuPluginProps, "pluginKey">, "editor" | "element"> & {
108
+ editor: FloatingMenuPluginProps["editor"] | null;
109
+ options?: FloatingMenuPluginProps["options"];
110
+ } & React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
111
+
112
+ interface NodeViewContentProps {
113
+ [key: string]: any;
114
+ as?: React__default.ElementType;
115
+ }
116
+ declare const NodeViewContent: React__default.FC<NodeViewContentProps>;
117
+
118
+ interface NodeViewWrapperProps {
119
+ [key: string]: any;
120
+ as?: React__default.ElementType;
121
+ }
122
+ declare const NodeViewWrapper: React__default.FC<NodeViewWrapperProps>;
123
+
124
+ interface ReactRendererOptions {
125
+ /**
126
+ * The editor instance.
127
+ * @type {Editor}
128
+ */
129
+ editor: Editor;
130
+ /**
131
+ * The props for the component.
132
+ * @type {Record<string, any>}
133
+ * @default {}
134
+ */
135
+ props?: Record<string, any>;
136
+ /**
137
+ * The tag name of the element.
138
+ * @type {string}
139
+ * @default 'div'
140
+ */
141
+ as?: string;
142
+ /**
143
+ * The class name of the element.
144
+ * @type {string}
145
+ * @default ''
146
+ * @example 'foo bar'
147
+ */
148
+ className?: string;
149
+ }
150
+ type ComponentType<R, P> = React__default.ComponentClass<P> | React__default.FunctionComponent<P> | React__default.ForwardRefExoticComponent<React__default.PropsWithoutRef<P> & React__default.RefAttributes<R>>;
151
+ /**
152
+ * The ReactRenderer class. It's responsible for rendering React components inside the editor.
153
+ * @example
154
+ * new ReactRenderer(MyComponent, {
155
+ * editor,
156
+ * props: {
157
+ * foo: 'bar',
158
+ * },
159
+ * as: 'span',
160
+ * })
161
+ */
162
+ declare class ReactRenderer<R = unknown, P extends Record<string, any> = {}> {
163
+ id: string;
164
+ editor: Editor;
165
+ component: any;
166
+ element: Element;
167
+ props: P;
168
+ reactElement: React__default.ReactNode;
169
+ ref: R | null;
170
+ /**
171
+ * Immediately creates element and renders the provided React component.
172
+ */
173
+ constructor(component: ComponentType<R, P>, { editor, props, as, className, }: ReactRendererOptions);
174
+ /**
175
+ * Render the React component.
176
+ */
177
+ render(): void;
178
+ /**
179
+ * Re-renders the React component with new props.
180
+ */
181
+ updateProps(props?: Record<string, any>): void;
182
+ /**
183
+ * Destroy the React component.
184
+ */
185
+ destroy(): void;
186
+ /**
187
+ * Update the attributes of the element that holds the React component.
188
+ */
189
+ updateAttributes(attributes: Record<string, string>): void;
190
+ }
191
+
192
+ interface ReactNodeViewRendererOptions extends NodeViewRendererOptions {
193
+ /**
194
+ * This function is called when the node view is updated.
195
+ * It allows you to compare the old node with the new node and decide if the component should update.
196
+ */
197
+ update: ((props: {
198
+ oldNode: Node;
199
+ oldDecorations: readonly Decoration[];
200
+ oldInnerDecorations: DecorationSource;
201
+ newNode: Node;
202
+ newDecorations: readonly Decoration[];
203
+ innerDecorations: DecorationSource;
204
+ updateProps: () => void;
205
+ }) => boolean) | null;
206
+ /**
207
+ * The tag name of the element wrapping the React component.
208
+ */
209
+ as?: string;
210
+ /**
211
+ * The class name of the element wrapping the React component.
212
+ */
213
+ className?: string;
214
+ /**
215
+ * Attributes that should be applied to the element wrapping the React component.
216
+ * If this is a function, it will be called each time the node view is updated.
217
+ * If this is an object, it will be applied once when the node view is mounted.
218
+ */
219
+ attrs?: Record<string, string> | ((props: {
220
+ node: Node;
221
+ HTMLAttributes: Record<string, any>;
222
+ }) => Record<string, string>);
223
+ }
224
+ declare class ReactNodeView<Component extends ComponentType$1<NodeViewProps> = ComponentType$1<NodeViewProps>, NodeEditor extends Editor = Editor, Options extends ReactNodeViewRendererOptions = ReactNodeViewRendererOptions> extends NodeView<Component, NodeEditor, Options> {
225
+ /**
226
+ * The renderer instance.
227
+ */
228
+ renderer: ReactRenderer<unknown, NodeViewProps>;
229
+ /**
230
+ * The element that holds the rich-text content of the node.
231
+ */
232
+ contentDOMElement: HTMLElement | null;
233
+ /**
234
+ * Setup the React component.
235
+ * Called on initialization.
236
+ */
237
+ mount(): void;
238
+ /**
239
+ * Return the DOM element.
240
+ * This is the element that will be used to display the node view.
241
+ */
242
+ get dom(): HTMLElement;
243
+ /**
244
+ * Return the content DOM element.
245
+ * This is the element that will be used to display the rich-text content of the node.
246
+ */
247
+ get contentDOM(): HTMLElement | null;
248
+ /**
249
+ * On editor selection update, check if the node is selected.
250
+ * If it is, call `selectNode`, otherwise call `deselectNode`.
251
+ */
252
+ handleSelectionUpdate(): void;
253
+ /**
254
+ * On update, update the React component.
255
+ * To prevent unnecessary updates, the `update` option can be used.
256
+ */
257
+ update(node: Node, decorations: readonly Decoration[], innerDecorations: DecorationSource): boolean;
258
+ /**
259
+ * Select the node.
260
+ * Add the `selected` prop and the `ProseMirror-selectednode` class.
261
+ */
262
+ selectNode(): void;
263
+ /**
264
+ * Deselect the node.
265
+ * Remove the `selected` prop and the `ProseMirror-selectednode` class.
266
+ */
267
+ deselectNode(): void;
268
+ /**
269
+ * Destroy the React component instance.
270
+ */
271
+ destroy(): void;
272
+ /**
273
+ * Update the attributes of the top-level element that holds the React component.
274
+ * Applying the attributes defined in the `attrs` option.
275
+ */
276
+ updateElementAttributes(): void;
277
+ }
278
+ /**
279
+ * Create a React node view renderer.
280
+ */
281
+ declare function ReactNodeViewRenderer(component: ComponentType$1<NodeViewProps>, options?: Partial<ReactNodeViewRendererOptions>): NodeViewRenderer;
282
+
283
+ type EditorStateSnapshot<TEditor extends Editor | null = Editor | null> = {
284
+ editor: TEditor;
285
+ transactionNumber: number;
286
+ };
287
+ type UseEditorStateOptions<TSelectorResult, TEditor extends Editor | null = Editor | null> = {
288
+ /**
289
+ * The editor instance.
290
+ */
291
+ editor: TEditor;
292
+ /**
293
+ * A selector function to determine the value to compare for re-rendering.
294
+ */
295
+ selector: (context: EditorStateSnapshot<TEditor>) => TSelectorResult;
296
+ /**
297
+ * A custom equality function to determine if the editor should re-render.
298
+ * @default `deepEqual` from `fast-deep-equal`
299
+ */
300
+ equalityFn?: (a: TSelectorResult, b: TSelectorResult | null) => boolean;
301
+ };
302
+ /**
303
+ * This hook allows you to watch for changes on the editor instance.
304
+ * It will allow you to select a part of the editor state and re-render the component when it changes.
305
+ * @example
306
+ * ```tsx
307
+ * const editor = useEditor({...options})
308
+ * const { currentSelection } = useEditorState({
309
+ * editor,
310
+ * selector: snapshot => ({ currentSelection: snapshot.editor.state.selection }),
311
+ * })
312
+ */
313
+ declare function useEditorState<TSelectorResult>(options: UseEditorStateOptions<TSelectorResult, Editor>): TSelectorResult;
314
+ /**
315
+ * This hook allows you to watch for changes on the editor instance.
316
+ * It will allow you to select a part of the editor state and re-render the component when it changes.
317
+ * @example
318
+ * ```tsx
319
+ * const editor = useEditor({...options})
320
+ * const { currentSelection } = useEditorState({
321
+ * editor,
322
+ * selector: snapshot => ({ currentSelection: snapshot.editor.state.selection }),
323
+ * })
324
+ */
325
+ declare function useEditorState<TSelectorResult>(options: UseEditorStateOptions<TSelectorResult, Editor | null>): TSelectorResult | null;
326
+
327
+ interface ReactNodeViewContextProps {
328
+ onDragStart: (event: DragEvent) => void;
329
+ nodeViewContentRef: (element: HTMLElement | null) => void;
330
+ }
331
+ declare const ReactNodeViewContext: React.Context<Partial<ReactNodeViewContextProps>>;
332
+ declare const useReactNodeView: () => Partial<ReactNodeViewContextProps>;
333
+
334
+ export { BubbleMenu, type BubbleMenuProps, EditorConsumer, EditorContent, type EditorContentProps, EditorContext, type EditorContextValue, EditorProvider, type EditorProviderProps, type EditorStateSnapshot, FloatingMenu, type FloatingMenuProps, NodeViewContent, type NodeViewContentProps, NodeViewWrapper, type NodeViewWrapperProps, PureEditorContent, ReactNodeView, ReactNodeViewContext, type ReactNodeViewContextProps, ReactNodeViewRenderer, type ReactNodeViewRendererOptions, ReactRenderer, type ReactRendererOptions, type UseEditorOptions, type UseEditorStateOptions, useCurrentEditor, useEditor, useEditorState, useReactNodeView };