@tiptap/react 2.0.0-beta.10 → 2.0.0-beta.103

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 (301) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +2 -2
  3. package/dist/packages/core/src/CommandManager.d.ts +20 -0
  4. package/dist/packages/core/src/Editor.d.ts +147 -0
  5. package/dist/packages/core/src/EventEmitter.d.ts +11 -0
  6. package/dist/packages/core/src/Extension.d.ts +227 -0
  7. package/dist/packages/core/src/ExtensionManager.d.ts +18 -0
  8. package/dist/packages/core/src/InputRule.d.ts +42 -0
  9. package/dist/packages/core/src/Mark.d.ts +319 -0
  10. package/dist/packages/core/src/Node.d.ts +388 -0
  11. package/dist/packages/core/src/NodeView.d.ts +27 -0
  12. package/dist/packages/core/src/PasteRule.d.ts +42 -0
  13. package/dist/packages/core/src/Tracker.d.ts +11 -0
  14. package/dist/packages/core/src/commands/blur.d.ts +12 -0
  15. package/dist/packages/core/src/commands/clearContent.d.ts +12 -0
  16. package/dist/packages/core/src/commands/clearNodes.d.ts +12 -0
  17. package/dist/packages/core/src/commands/command.d.ts +12 -0
  18. package/dist/packages/core/src/commands/createParagraphNear.d.ts +12 -0
  19. package/dist/packages/core/src/commands/deleteNode.d.ts +13 -0
  20. package/dist/packages/core/src/commands/deleteRange.d.ts +12 -0
  21. package/dist/packages/core/src/commands/deleteSelection.d.ts +12 -0
  22. package/dist/packages/core/src/commands/enter.d.ts +12 -0
  23. package/dist/packages/core/src/commands/exitCode.d.ts +12 -0
  24. package/dist/packages/core/src/commands/extendMarkRange.d.ts +13 -0
  25. package/dist/packages/core/src/commands/first.d.ts +12 -0
  26. package/dist/packages/core/src/commands/focus.d.ts +14 -0
  27. package/dist/packages/core/src/commands/forEach.d.ts +14 -0
  28. package/dist/packages/core/src/commands/insertContent.d.ts +16 -0
  29. package/dist/packages/core/src/commands/insertContentAt.d.ts +16 -0
  30. package/dist/packages/core/src/commands/joinBackward.d.ts +12 -0
  31. package/dist/packages/core/src/commands/joinForward.d.ts +12 -0
  32. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +12 -0
  33. package/dist/packages/core/src/commands/lift.d.ts +13 -0
  34. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +12 -0
  35. package/dist/packages/core/src/commands/liftListItem.d.ts +13 -0
  36. package/dist/packages/core/src/commands/newlineInCode.d.ts +12 -0
  37. package/dist/packages/core/src/commands/resetAttributes.d.ts +13 -0
  38. package/dist/packages/core/src/commands/scrollIntoView.d.ts +12 -0
  39. package/dist/packages/core/src/commands/selectAll.d.ts +12 -0
  40. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +12 -0
  41. package/dist/packages/core/src/commands/selectNodeForward.d.ts +12 -0
  42. package/dist/packages/core/src/commands/selectParentNode.d.ts +12 -0
  43. package/dist/packages/core/src/commands/setContent.d.ts +13 -0
  44. package/dist/packages/core/src/commands/setMark.d.ts +13 -0
  45. package/dist/packages/core/src/commands/setMeta.d.ts +12 -0
  46. package/dist/packages/core/src/commands/setNode.d.ts +13 -0
  47. package/dist/packages/core/src/commands/setNodeSelection.d.ts +12 -0
  48. package/dist/packages/core/src/commands/setTextSelection.d.ts +12 -0
  49. package/dist/packages/core/src/commands/sinkListItem.d.ts +13 -0
  50. package/dist/packages/core/src/commands/splitBlock.d.ts +14 -0
  51. package/dist/packages/core/src/commands/splitListItem.d.ts +13 -0
  52. package/dist/packages/core/src/commands/toggleList.d.ts +13 -0
  53. package/dist/packages/core/src/commands/toggleMark.d.ts +18 -0
  54. package/dist/packages/core/src/commands/toggleNode.d.ts +13 -0
  55. package/dist/packages/core/src/commands/toggleWrap.d.ts +13 -0
  56. package/dist/packages/core/src/commands/undoInputRule.d.ts +12 -0
  57. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +12 -0
  58. package/dist/packages/core/src/commands/unsetMark.d.ts +18 -0
  59. package/dist/packages/core/src/commands/updateAttributes.d.ts +13 -0
  60. package/dist/packages/core/src/commands/wrapIn.d.ts +13 -0
  61. package/dist/packages/core/src/commands/wrapInList.d.ts +13 -0
  62. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +2 -0
  63. package/dist/packages/core/src/extensions/commands.d.ts +98 -0
  64. package/dist/packages/core/src/extensions/editable.d.ts +2 -0
  65. package/dist/packages/core/src/extensions/focusEvents.d.ts +2 -0
  66. package/dist/packages/core/src/extensions/index.d.ts +6 -0
  67. package/dist/packages/core/src/extensions/keymap.d.ts +2 -0
  68. package/dist/packages/core/src/extensions/tabindex.d.ts +2 -0
  69. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +7 -0
  70. package/dist/packages/core/src/helpers/createChainableState.d.ts +5 -0
  71. package/dist/packages/core/src/helpers/createDocument.d.ts +3 -0
  72. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +7 -0
  73. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +2 -0
  74. package/dist/packages/core/src/helpers/findChildren.d.ts +3 -0
  75. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +6 -0
  76. package/dist/packages/core/src/helpers/findParentNode.d.ts +9 -0
  77. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +8 -0
  78. package/dist/packages/core/src/helpers/generateHTML.d.ts +2 -0
  79. package/dist/packages/core/src/helpers/generateJSON.d.ts +2 -0
  80. package/dist/packages/core/src/helpers/generateText.d.ts +5 -0
  81. package/dist/packages/core/src/helpers/getAttributes.d.ts +3 -0
  82. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +6 -0
  83. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +11 -0
  84. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +8 -0
  85. package/dist/packages/core/src/helpers/getExtensionField.d.ts +2 -0
  86. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +2 -0
  87. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +3 -0
  88. package/dist/packages/core/src/helpers/getMarkRange.d.ts +3 -0
  89. package/dist/packages/core/src/helpers/getMarkType.d.ts +2 -0
  90. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +3 -0
  91. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +3 -0
  92. package/dist/packages/core/src/helpers/getNodeType.d.ts +2 -0
  93. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +3 -0
  94. package/dist/packages/core/src/helpers/getSchema.d.ts +3 -0
  95. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +3 -0
  96. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +2 -0
  97. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +2 -0
  98. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +2 -0
  99. package/dist/packages/core/src/helpers/getText.d.ts +6 -0
  100. package/dist/packages/core/src/helpers/getTextBetween.d.ts +6 -0
  101. package/dist/packages/core/src/helpers/getTextSeralizersFromSchema.d.ts +3 -0
  102. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +9 -0
  103. package/dist/packages/core/src/helpers/isActive.d.ts +2 -0
  104. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +2 -0
  105. package/dist/packages/core/src/helpers/isList.d.ts +2 -0
  106. package/dist/packages/core/src/helpers/isMarkActive.d.ts +3 -0
  107. package/dist/packages/core/src/helpers/isNodeActive.d.ts +3 -0
  108. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +2 -0
  109. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +2 -0
  110. package/dist/packages/core/src/helpers/isTextSelection.d.ts +2 -0
  111. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +2 -0
  112. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +4 -0
  113. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +2 -0
  114. package/dist/packages/core/src/helpers/splitExtensions.d.ts +9 -0
  115. package/dist/packages/core/src/index.d.ts +60 -0
  116. package/dist/packages/core/src/inputRules/markInputRule.d.ts +12 -0
  117. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +12 -0
  118. package/dist/packages/core/src/inputRules/textInputRule.d.ts +9 -0
  119. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +14 -0
  120. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +23 -0
  121. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +12 -0
  122. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +9 -0
  123. package/dist/packages/core/src/style.d.ts +1 -0
  124. package/dist/packages/core/src/types.d.ts +210 -0
  125. package/dist/packages/core/src/utilities/callOrReturn.d.ts +9 -0
  126. package/dist/packages/core/src/utilities/createStyleTag.d.ts +1 -0
  127. package/dist/packages/core/src/utilities/deleteProps.d.ts +6 -0
  128. package/dist/packages/core/src/utilities/elementFromString.d.ts +1 -0
  129. package/dist/packages/core/src/utilities/findDuplicates.d.ts +1 -0
  130. package/dist/packages/core/src/utilities/fromString.d.ts +1 -0
  131. package/dist/packages/core/src/utilities/isClass.d.ts +1 -0
  132. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +1 -0
  133. package/dist/packages/core/src/utilities/isFunction.d.ts +1 -0
  134. package/dist/packages/core/src/utilities/isNumber.d.ts +1 -0
  135. package/dist/packages/core/src/utilities/isObject.d.ts +1 -0
  136. package/dist/packages/core/src/utilities/isPlainObject.d.ts +1 -0
  137. package/dist/packages/core/src/utilities/isRegExp.d.ts +1 -0
  138. package/dist/packages/core/src/utilities/isString.d.ts +1 -0
  139. package/dist/packages/core/src/utilities/isiOS.d.ts +1 -0
  140. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +1 -0
  141. package/dist/packages/core/src/utilities/mergeDeep.d.ts +1 -0
  142. package/dist/packages/core/src/utilities/minMax.d.ts +1 -0
  143. package/dist/packages/core/src/utilities/objectIncludes.d.ts +8 -0
  144. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +8 -0
  145. package/dist/packages/extension-blockquote/src/blockquote.d.ts +24 -0
  146. package/dist/packages/extension-blockquote/src/index.d.ts +3 -0
  147. package/dist/packages/extension-bold/src/bold.d.ts +27 -0
  148. package/dist/packages/extension-bold/src/index.d.ts +3 -0
  149. package/dist/packages/extension-bubble-menu/src/bubble-menu-plugin.d.ts +43 -0
  150. package/dist/packages/extension-bubble-menu/src/bubble-menu.d.ts +6 -0
  151. package/dist/packages/extension-bubble-menu/src/index.d.ts +4 -0
  152. package/dist/packages/extension-bullet-list/src/bullet-list.d.ts +17 -0
  153. package/dist/packages/extension-bullet-list/src/index.d.ts +3 -0
  154. package/dist/packages/extension-character-count/src/character-count.d.ts +28 -0
  155. package/dist/packages/extension-character-count/src/index.d.ts +3 -0
  156. package/dist/packages/extension-code/src/code.d.ts +25 -0
  157. package/dist/packages/extension-code/src/index.d.ts +3 -0
  158. package/dist/packages/extension-code-block/src/code-block.d.ts +26 -0
  159. package/dist/packages/extension-code-block/src/index.d.ts +3 -0
  160. package/dist/packages/extension-code-block-lowlight/src/code-block-lowlight.d.ts +6 -0
  161. package/dist/packages/extension-code-block-lowlight/src/index.d.ts +3 -0
  162. package/dist/packages/extension-code-block-lowlight/src/lowlight-plugin.d.ts +6 -0
  163. package/dist/packages/extension-collaboration/src/collaboration.d.ts +30 -0
  164. package/dist/packages/extension-collaboration/src/helpers/isChangeOrigin.d.ts +2 -0
  165. package/dist/packages/extension-collaboration/src/index.d.ts +4 -0
  166. package/dist/packages/extension-collaboration-cursor/src/collaboration-cursor.d.ts +37 -0
  167. package/dist/packages/extension-collaboration-cursor/src/index.d.ts +3 -0
  168. package/dist/packages/extension-color/src/color.d.ts +20 -0
  169. package/dist/packages/extension-color/src/index.d.ts +3 -0
  170. package/dist/packages/extension-document/src/document.d.ts +2 -0
  171. package/dist/packages/extension-document/src/index.d.ts +3 -0
  172. package/dist/packages/extension-dropcursor/src/dropcursor.d.ts +7 -0
  173. package/dist/packages/extension-dropcursor/src/index.d.ts +3 -0
  174. package/dist/packages/extension-floating-menu/src/floating-menu-plugin.d.ts +40 -0
  175. package/dist/packages/extension-floating-menu/src/floating-menu.d.ts +6 -0
  176. package/dist/packages/extension-floating-menu/src/index.d.ts +4 -0
  177. package/dist/packages/extension-focus/src/focus.d.ts +6 -0
  178. package/dist/packages/extension-focus/src/index.d.ts +3 -0
  179. package/dist/packages/extension-font-family/src/font-family.d.ts +21 -0
  180. package/dist/packages/extension-font-family/src/index.d.ts +3 -0
  181. package/dist/packages/extension-gapcursor/src/gapcursor.d.ts +15 -0
  182. package/dist/packages/extension-gapcursor/src/index.d.ts +3 -0
  183. package/dist/packages/extension-hard-break/src/hard-break.d.ts +16 -0
  184. package/dist/packages/extension-hard-break/src/index.d.ts +3 -0
  185. package/dist/packages/extension-heading/src/heading.d.ts +26 -0
  186. package/dist/packages/extension-heading/src/index.d.ts +3 -0
  187. package/dist/packages/extension-highlight/src/highlight.d.ts +30 -0
  188. package/dist/packages/extension-highlight/src/index.d.ts +3 -0
  189. package/dist/packages/extension-history/src/history.d.ts +20 -0
  190. package/dist/packages/extension-history/src/index.d.ts +3 -0
  191. package/dist/packages/extension-horizontal-rule/src/horizontal-rule.d.ts +15 -0
  192. package/dist/packages/extension-horizontal-rule/src/index.d.ts +3 -0
  193. package/dist/packages/extension-image/src/image.d.ts +21 -0
  194. package/dist/packages/extension-image/src/index.d.ts +3 -0
  195. package/dist/packages/extension-italic/src/index.d.ts +3 -0
  196. package/dist/packages/extension-italic/src/italic.d.ts +27 -0
  197. package/dist/packages/extension-link/src/helpers/autolink.d.ts +7 -0
  198. package/dist/packages/extension-link/src/helpers/clickHandler.d.ts +7 -0
  199. package/dist/packages/extension-link/src/helpers/pasteHandler.d.ts +9 -0
  200. package/dist/packages/extension-link/src/index.d.ts +3 -0
  201. package/dist/packages/extension-link/src/link.d.ts +44 -0
  202. package/dist/packages/extension-list-item/src/index.d.ts +3 -0
  203. package/dist/packages/extension-list-item/src/list-item.d.ts +5 -0
  204. package/dist/packages/extension-mention/src/index.d.ts +3 -0
  205. package/dist/packages/extension-mention/src/mention.d.ts +14 -0
  206. package/dist/packages/extension-ordered-list/src/index.d.ts +3 -0
  207. package/dist/packages/extension-ordered-list/src/ordered-list.d.ts +17 -0
  208. package/dist/packages/extension-paragraph/src/index.d.ts +3 -0
  209. package/dist/packages/extension-paragraph/src/paragraph.d.ts +15 -0
  210. package/dist/packages/extension-placeholder/src/index.d.ts +3 -0
  211. package/dist/packages/extension-placeholder/src/placeholder.d.ts +15 -0
  212. package/dist/packages/extension-strike/src/index.d.ts +3 -0
  213. package/dist/packages/extension-strike/src/strike.d.ts +25 -0
  214. package/dist/packages/extension-subscript/src/index.d.ts +3 -0
  215. package/dist/packages/extension-subscript/src/subscript.d.ts +23 -0
  216. package/dist/packages/extension-superscript/src/index.d.ts +3 -0
  217. package/dist/packages/extension-superscript/src/superscript.d.ts +23 -0
  218. package/dist/packages/extension-table/src/TableView.d.ts +17 -0
  219. package/dist/packages/extension-table/src/index.d.ts +4 -0
  220. package/dist/packages/extension-table/src/table.d.ts +55 -0
  221. package/dist/packages/extension-table/src/utilities/createCell.d.ts +2 -0
  222. package/dist/packages/extension-table/src/utilities/createTable.d.ts +2 -0
  223. package/dist/packages/extension-table/src/utilities/deleteTableWhenAllCellsSelected.d.ts +2 -0
  224. package/dist/packages/extension-table/src/utilities/getTableNodeTypes.d.ts +4 -0
  225. package/dist/packages/extension-table/src/utilities/isCellSelection.d.ts +2 -0
  226. package/dist/packages/extension-table-cell/src/index.d.ts +3 -0
  227. package/dist/packages/extension-table-cell/src/table-cell.d.ts +5 -0
  228. package/dist/packages/extension-table-header/src/index.d.ts +3 -0
  229. package/dist/packages/extension-table-header/src/table-header.d.ts +5 -0
  230. package/dist/packages/extension-table-row/src/index.d.ts +3 -0
  231. package/dist/packages/extension-table-row/src/table-row.d.ts +5 -0
  232. package/dist/packages/extension-task-item/src/index.d.ts +3 -0
  233. package/dist/packages/extension-task-item/src/task-item.d.ts +7 -0
  234. package/dist/packages/extension-task-list/src/index.d.ts +3 -0
  235. package/dist/packages/extension-task-list/src/task-list.d.ts +16 -0
  236. package/dist/packages/extension-text/src/index.d.ts +3 -0
  237. package/dist/packages/extension-text/src/text.d.ts +2 -0
  238. package/dist/packages/extension-text-align/src/index.d.ts +3 -0
  239. package/dist/packages/extension-text-align/src/text-align.d.ts +21 -0
  240. package/dist/packages/extension-text-style/src/index.d.ts +3 -0
  241. package/dist/packages/extension-text-style/src/text-style.d.ts +15 -0
  242. package/dist/packages/extension-typography/src/index.d.ts +3 -0
  243. package/dist/packages/extension-typography/src/typography.d.ts +23 -0
  244. package/dist/packages/extension-underline/src/index.d.ts +3 -0
  245. package/dist/packages/extension-underline/src/underline.d.ts +23 -0
  246. package/dist/packages/html/src/generateHTML.d.ts +2 -0
  247. package/dist/packages/html/src/generateJSON.d.ts +2 -0
  248. package/dist/packages/html/src/getHTMLFromFragment.d.ts +2 -0
  249. package/dist/packages/html/src/index.d.ts +2 -0
  250. package/dist/packages/react/src/BubbleMenu.d.ts +3 -1
  251. package/dist/packages/react/src/EditorContent.d.ts +2 -2
  252. package/dist/packages/react/src/FloatingMenu.d.ts +8 -0
  253. package/dist/packages/react/src/NodeViewContent.d.ts +2 -2
  254. package/dist/packages/react/src/NodeViewWrapper.d.ts +2 -2
  255. package/dist/packages/react/src/ReactNodeViewRenderer.d.ts +10 -5
  256. package/dist/packages/react/src/ReactRenderer.d.ts +13 -10
  257. package/dist/packages/react/src/index.d.ts +1 -0
  258. package/dist/packages/react/src/useEditor.d.ts +2 -1
  259. package/dist/packages/react/src/useReactNodeView.d.ts +1 -1
  260. package/dist/packages/starter-kit/src/index.d.ts +3 -0
  261. package/dist/packages/starter-kit/src/starter-kit.d.ts +37 -0
  262. package/dist/packages/suggestion/src/findSuggestionMatch.d.ts +15 -0
  263. package/dist/packages/suggestion/src/index.d.ts +4 -0
  264. package/dist/packages/suggestion/src/suggestion.d.ts +49 -0
  265. package/dist/tests/cypress/integration/core/can.spec.d.ts +1 -0
  266. package/dist/tests/cypress/integration/core/editorProps.spec.d.ts +1 -0
  267. package/dist/tests/cypress/integration/core/extendExtensions.spec.d.ts +1 -0
  268. package/dist/tests/cypress/integration/core/extendMarkRange.spec.d.ts +1 -0
  269. package/dist/tests/cypress/integration/core/extensionOptions.spec.d.ts +1 -0
  270. package/dist/tests/cypress/integration/core/fromString.spec.d.ts +1 -0
  271. package/dist/tests/cypress/integration/core/generateHTML.spec.d.ts +1 -0
  272. package/dist/tests/cypress/integration/core/generateJSON.spec.d.ts +1 -0
  273. package/dist/tests/cypress/integration/core/isActive.spec.d.ts +1 -0
  274. package/dist/tests/cypress/integration/core/isClass.spec.d.ts +1 -0
  275. package/dist/tests/cypress/integration/core/mergeAttributes.spec.d.ts +1 -0
  276. package/dist/tests/cypress/integration/core/mergeDeep.spec.d.ts +1 -0
  277. package/dist/tests/cypress/integration/core/pluginOrder.spec.d.ts +1 -0
  278. package/dist/tests/cypress/integration/extensions/bold.spec.d.ts +1 -0
  279. package/dist/tests/cypress/integration/extensions/codeBlockLowlight.spec.d.ts +1 -0
  280. package/dist/tests/cypress/integration/html/generateHTML.spec.d.ts +1 -0
  281. package/dist/tests/cypress/integration/html/generateJSON.spec.d.ts +1 -0
  282. package/dist/tiptap-react.cjs.js +143 -60
  283. package/dist/tiptap-react.cjs.js.map +1 -1
  284. package/dist/tiptap-react.esm.js +137 -53
  285. package/dist/tiptap-react.esm.js.map +1 -1
  286. package/dist/tiptap-react.umd.js +147 -65
  287. package/dist/tiptap-react.umd.js.map +1 -1
  288. package/package.json +17 -9
  289. package/src/BubbleMenu.tsx +35 -14
  290. package/src/EditorContent.tsx +8 -7
  291. package/src/FloatingMenu.tsx +51 -0
  292. package/src/NodeViewContent.tsx +9 -6
  293. package/src/NodeViewWrapper.tsx +11 -9
  294. package/src/ReactNodeViewRenderer.tsx +74 -28
  295. package/src/ReactRenderer.tsx +37 -14
  296. package/src/index.ts +1 -0
  297. package/src/useEditor.ts +10 -4
  298. package/src/useReactNodeView.ts +1 -2
  299. package/CHANGELOG.md +0 -88
  300. package/dist/tiptap-react.bundle.umd.min.js +0 -54
  301. package/dist/tiptap-react.bundle.umd.min.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import React from 'react'
1
+ import React, { HTMLProps } from 'react'
2
2
  import ReactDOM from 'react-dom'
3
3
  import { Editor } from './Editor'
4
4
  import { ReactRenderer } from './ReactRenderer'
@@ -17,7 +17,7 @@ const Portals: React.FC<{ renderers: Map<string, ReactRenderer> }> = ({ renderer
17
17
  )
18
18
  }
19
19
 
20
- export interface EditorContentProps {
20
+ export interface EditorContentProps extends HTMLProps<HTMLDivElement> {
21
21
  editor: Editor | null,
22
22
  }
23
23
 
@@ -55,7 +55,7 @@ export class PureEditorContent extends React.Component<EditorContentProps, Edito
55
55
 
56
56
  const element = this.editorContentRef.current
57
57
 
58
- element.appendChild(editor.options.element.firstChild)
58
+ element.append(...editor.options.element.childNodes)
59
59
 
60
60
  editor.setOptions({
61
61
  element,
@@ -63,8 +63,7 @@ export class PureEditorContent extends React.Component<EditorContentProps, Edito
63
63
 
64
64
  editor.contentComponent = this
65
65
 
66
- // TODO: alternative to setTimeout?
67
- setTimeout(() => editor.createNodeViews(), 0)
66
+ editor.createNodeViews()
68
67
  }
69
68
  }
70
69
 
@@ -89,7 +88,7 @@ export class PureEditorContent extends React.Component<EditorContentProps, Edito
89
88
 
90
89
  const newElement = document.createElement('div')
91
90
 
92
- newElement.appendChild(editor.options.element.firstChild)
91
+ newElement.append(...editor.options.element.childNodes)
93
92
 
94
93
  editor.setOptions({
95
94
  element: newElement,
@@ -97,9 +96,11 @@ export class PureEditorContent extends React.Component<EditorContentProps, Edito
97
96
  }
98
97
 
99
98
  render() {
99
+ const { editor, ...rest } = this.props
100
+
100
101
  return (
101
102
  <>
102
- <div ref={this.editorContentRef} />
103
+ <div ref={this.editorContentRef} {...rest} />
103
104
  <Portals renderers={this.state.renderers} />
104
105
  </>
105
106
  )
@@ -0,0 +1,51 @@
1
+ import React, {
2
+ useEffect, useState,
3
+ } from 'react'
4
+ import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'
5
+
6
+ type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>
7
+
8
+ export type FloatingMenuProps = Omit<Optional<FloatingMenuPluginProps, 'pluginKey'>, 'element'> & {
9
+ className?: string,
10
+ }
11
+
12
+ export const FloatingMenu: React.FC<FloatingMenuProps> = props => {
13
+ const [element, setElement] = useState<HTMLDivElement | null>(null)
14
+
15
+ useEffect(() => {
16
+ if (!element) {
17
+ return
18
+ }
19
+
20
+ if (props.editor.isDestroyed) {
21
+ return
22
+ }
23
+
24
+ const {
25
+ pluginKey = 'floatingMenu',
26
+ editor,
27
+ tippyOptions = {},
28
+ shouldShow = null,
29
+ } = props
30
+
31
+ const plugin = FloatingMenuPlugin({
32
+ pluginKey,
33
+ editor,
34
+ element,
35
+ tippyOptions,
36
+ shouldShow,
37
+ })
38
+
39
+ editor.registerPlugin(plugin)
40
+ return () => editor.unregisterPlugin(pluginKey)
41
+ }, [
42
+ props.editor,
43
+ element,
44
+ ])
45
+
46
+ return (
47
+ <div ref={setElement} className={props.className} style={{ visibility: 'hidden' }}>
48
+ {props.children}
49
+ </div>
50
+ )
51
+ }
@@ -2,20 +2,23 @@ import React from 'react'
2
2
  import { useReactNodeView } from './useReactNodeView'
3
3
 
4
4
  export interface NodeViewContentProps {
5
- className?: string,
6
- as: React.ElementType,
5
+ [key: string]: any,
6
+ as?: React.ElementType,
7
7
  }
8
8
 
9
9
  export const NodeViewContent: React.FC<NodeViewContentProps> = props => {
10
- const { isEditable } = useReactNodeView()
11
10
  const Tag = props.as || 'div'
11
+ const { nodeViewContentRef } = useReactNodeView()
12
12
 
13
13
  return (
14
14
  <Tag
15
- className={props.className}
15
+ {...props}
16
+ ref={nodeViewContentRef}
16
17
  data-node-view-content=""
17
- contentEditable={isEditable}
18
- style={{ whiteSpace: 'pre-wrap' }}
18
+ style={{
19
+ ...props.style,
20
+ whiteSpace: 'pre-wrap',
21
+ }}
19
22
  />
20
23
  )
21
24
  }
@@ -2,22 +2,24 @@ import React from 'react'
2
2
  import { useReactNodeView } from './useReactNodeView'
3
3
 
4
4
  export interface NodeViewWrapperProps {
5
- className?: string,
6
- as: React.ElementType,
5
+ [key: string]: any,
6
+ as?: React.ElementType,
7
7
  }
8
8
 
9
- export const NodeViewWrapper: React.FC<NodeViewWrapperProps> = props => {
9
+ export const NodeViewWrapper: React.FC<NodeViewWrapperProps> = React.forwardRef((props, ref) => {
10
10
  const { onDragStart } = useReactNodeView()
11
11
  const Tag = props.as || 'div'
12
12
 
13
13
  return (
14
14
  <Tag
15
- className={props.className}
15
+ {...props}
16
+ ref={ref}
16
17
  data-node-view-wrapper=""
17
18
  onDragStart={onDragStart}
18
- style={{ whiteSpace: 'normal' }}
19
- >
20
- {props.children}
21
- </Tag>
19
+ style={{
20
+ ...props.style,
21
+ whiteSpace: 'normal',
22
+ }}
23
+ />
22
24
  )
23
- }
25
+ })
@@ -1,25 +1,34 @@
1
- import React, { useState, useEffect } from 'react'
1
+ import React from 'react'
2
2
  import {
3
3
  NodeView,
4
4
  NodeViewProps,
5
5
  NodeViewRenderer,
6
6
  NodeViewRendererProps,
7
+ NodeViewRendererOptions,
7
8
  } from '@tiptap/core'
8
9
  import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'
9
10
  import { Node as ProseMirrorNode } from 'prosemirror-model'
10
11
  import { Editor } from './Editor'
11
12
  import { ReactRenderer } from './ReactRenderer'
12
- import { ReactNodeViewContext } from './useReactNodeView'
13
-
14
- interface ReactNodeViewRendererOptions {
15
- stopEvent: ((event: Event) => boolean) | null,
16
- update: ((node: ProseMirrorNode, decorations: Decoration[]) => boolean) | null,
13
+ import { ReactNodeViewContext, ReactNodeViewContextProps } from './useReactNodeView'
14
+
15
+ export interface ReactNodeViewRendererOptions extends NodeViewRendererOptions {
16
+ update: ((props: {
17
+ oldNode: ProseMirrorNode,
18
+ oldDecorations: Decoration[],
19
+ newNode: ProseMirrorNode,
20
+ newDecorations: Decoration[],
21
+ updateProps: () => void,
22
+ }) => boolean) | null,
23
+ as?: string,
17
24
  }
18
25
 
19
- class ReactNodeView extends NodeView<React.FunctionComponent, Editor> {
26
+ class ReactNodeView extends NodeView<React.FunctionComponent, Editor, ReactNodeViewRendererOptions> {
20
27
 
21
28
  renderer!: ReactRenderer
22
29
 
30
+ contentDOMElement!: HTMLElement | null
31
+
23
32
  mount() {
24
33
  const props: NodeViewProps = {
25
34
  editor: this.editor,
@@ -29,6 +38,7 @@ class ReactNodeView extends NodeView<React.FunctionComponent, Editor> {
29
38
  extension: this.extension,
30
39
  getPos: () => this.getPos(),
31
40
  updateAttributes: (attributes = {}) => this.updateAttributes(attributes),
41
+ deleteNode: () => this.deleteNode(),
32
42
  }
33
43
 
34
44
  if (!(this.component as any).displayName) {
@@ -36,26 +46,24 @@ class ReactNodeView extends NodeView<React.FunctionComponent, Editor> {
36
46
  return string.charAt(0).toUpperCase() + string.substring(1)
37
47
  }
38
48
 
39
- // @ts-ignore
40
- this.component.displayName = capitalizeFirstChar(this.extension.config.name)
49
+ this.component.displayName = capitalizeFirstChar(this.extension.name)
41
50
  }
42
51
 
43
52
  const ReactNodeViewProvider: React.FunctionComponent = componentProps => {
44
- const [isEditable, setIsEditable] = useState(this.editor.isEditable)
45
- const onDragStart = this.onDragStart.bind(this)
46
- const onViewUpdate = () => setIsEditable(this.editor.isEditable)
47
53
  const Component = this.component
48
-
49
- useEffect(() => {
50
- this.editor.on('viewUpdate', onViewUpdate)
51
-
52
- return () => {
53
- this.editor.off('viewUpdate', onViewUpdate)
54
+ const onDragStart = this.onDragStart.bind(this)
55
+ const nodeViewContentRef: ReactNodeViewContextProps['nodeViewContentRef'] = element => {
56
+ if (
57
+ element
58
+ && this.contentDOMElement
59
+ && element.firstChild !== this.contentDOMElement
60
+ ) {
61
+ element.appendChild(this.contentDOMElement)
54
62
  }
55
- }, [])
63
+ }
56
64
 
57
65
  return (
58
- <ReactNodeViewContext.Provider value={{ onDragStart, isEditable }}>
66
+ <ReactNodeViewContext.Provider value={{ onDragStart, nodeViewContentRef }}>
59
67
  <Component {...componentProps} />
60
68
  </ReactNodeViewContext.Provider>
61
69
  )
@@ -63,15 +71,37 @@ class ReactNodeView extends NodeView<React.FunctionComponent, Editor> {
63
71
 
64
72
  ReactNodeViewProvider.displayName = 'ReactNodeView'
65
73
 
74
+ this.contentDOMElement = this.node.isLeaf
75
+ ? null
76
+ : document.createElement(this.node.isInline ? 'span' : 'div')
77
+
78
+ if (this.contentDOMElement) {
79
+ // For some reason the whiteSpace prop is not inherited properly in Chrome and Safari
80
+ // With this fix it seems to work fine
81
+ // See: https://github.com/ueberdosis/tiptap/issues/1197
82
+ this.contentDOMElement.style.whiteSpace = 'inherit'
83
+ }
84
+
85
+ let as = this.node.isInline ? 'span' : 'div'
86
+
87
+ if (this.options.as) {
88
+ as = this.options.as
89
+ }
90
+
66
91
  this.renderer = new ReactRenderer(ReactNodeViewProvider, {
67
92
  editor: this.editor,
68
93
  props,
94
+ as,
95
+ className: `node-${this.node.type.name}`,
69
96
  })
70
97
  }
71
98
 
72
99
  get dom() {
73
- if (!this.renderer.element.firstElementChild?.hasAttribute('data-node-view-wrapper')) {
74
- throw Error('Please use the ReactViewWrapper component for your node view.')
100
+ if (
101
+ this.renderer.element.firstElementChild
102
+ && !this.renderer.element.firstElementChild?.hasAttribute('data-node-view-wrapper')
103
+ ) {
104
+ throw Error('Please use the NodeViewWrapper component for your node view.')
75
105
  }
76
106
 
77
107
  return this.renderer.element
@@ -82,27 +112,42 @@ class ReactNodeView extends NodeView<React.FunctionComponent, Editor> {
82
112
  return null
83
113
  }
84
114
 
85
- const contentElement = this.dom.querySelector('[data-node-view-content]')
86
-
87
- return contentElement || this.dom
115
+ return this.contentDOMElement
88
116
  }
89
117
 
90
118
  update(node: ProseMirrorNode, decorations: Decoration[]) {
91
- if (typeof this.options.update === 'function') {
92
- return this.options.update(node, decorations)
119
+ const updateProps = (props?: Record<string, any>) => {
120
+ this.renderer.updateProps(props)
93
121
  }
94
122
 
95
123
  if (node.type !== this.node.type) {
96
124
  return false
97
125
  }
98
126
 
127
+ if (typeof this.options.update === 'function') {
128
+ const oldNode = this.node
129
+ const oldDecorations = this.decorations
130
+
131
+ this.node = node
132
+ this.decorations = decorations
133
+
134
+ return this.options.update({
135
+ oldNode,
136
+ oldDecorations,
137
+ newNode: node,
138
+ newDecorations: decorations,
139
+ updateProps: () => updateProps({ node, decorations }),
140
+ })
141
+ }
142
+
99
143
  if (node === this.node && this.decorations === decorations) {
100
144
  return true
101
145
  }
102
146
 
103
147
  this.node = node
104
148
  this.decorations = decorations
105
- this.renderer.updateProps({ node, decorations })
149
+
150
+ updateProps({ node, decorations })
106
151
 
107
152
  return true
108
153
  }
@@ -121,6 +166,7 @@ class ReactNodeView extends NodeView<React.FunctionComponent, Editor> {
121
166
 
122
167
  destroy() {
123
168
  this.renderer.destroy()
169
+ this.contentDOMElement = null
124
170
  }
125
171
  }
126
172
 
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
- import { AnyObject } from '@tiptap/core'
3
- import { Editor } from './Editor'
2
+ import { Editor } from '@tiptap/core'
3
+ import { Editor as ExtendedEditor } from './Editor'
4
4
 
5
5
  function isClassComponent(Component: any) {
6
6
  return !!(
@@ -10,34 +10,57 @@ function isClassComponent(Component: any) {
10
10
  )
11
11
  }
12
12
 
13
+ function isForwardRefComponent(Component: any) {
14
+ return !!(
15
+ typeof Component === 'object'
16
+ && Component.$$typeof?.toString() === 'Symbol(react.forward_ref)'
17
+ )
18
+ }
19
+
13
20
  export interface ReactRendererOptions {
14
- as?: string,
15
21
  editor: Editor,
16
- props?: AnyObject,
22
+ props?: Record<string, any>,
23
+ as?: string,
24
+ className?: string,
17
25
  }
18
26
 
19
- export class ReactRenderer {
27
+ type ComponentType<R, P> =
28
+ React.ComponentClass<P> |
29
+ React.FunctionComponent<P> |
30
+ React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<R>>;
31
+
32
+ export class ReactRenderer<R = unknown, P = unknown> {
20
33
  id: string
21
34
 
22
- editor: Editor
35
+ editor: ExtendedEditor
23
36
 
24
37
  component: any
25
38
 
26
39
  element: Element
27
40
 
28
- props: AnyObject
41
+ props: Record<string, any>
29
42
 
30
43
  reactElement: React.ReactNode
31
44
 
32
- ref: React.Component | null = null
45
+ ref: R | null = null
33
46
 
34
- constructor(component: React.Component | React.FunctionComponent, { props = {}, editor }: ReactRendererOptions) {
47
+ constructor(component: ComponentType<R, P>, {
48
+ editor,
49
+ props = {},
50
+ as = 'div',
51
+ className = '',
52
+ }: ReactRendererOptions) {
35
53
  this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()
36
54
  this.component = component
37
- this.editor = editor
55
+ this.editor = editor as ExtendedEditor
38
56
  this.props = props
39
- this.element = document.createElement('div')
57
+ this.element = document.createElement(as)
40
58
  this.element.classList.add('react-renderer')
59
+
60
+ if (className) {
61
+ this.element.classList.add(...className.split(' '))
62
+ }
63
+
41
64
  this.render()
42
65
  }
43
66
 
@@ -45,8 +68,8 @@ export class ReactRenderer {
45
68
  const Component = this.component
46
69
  const props = this.props
47
70
 
48
- if (isClassComponent(Component)) {
49
- props.ref = (ref: React.Component) => {
71
+ if (isClassComponent(Component) || isForwardRefComponent(Component)) {
72
+ props.ref = (ref: R) => {
50
73
  this.ref = ref
51
74
  }
52
75
  }
@@ -63,7 +86,7 @@ export class ReactRenderer {
63
86
  }
64
87
  }
65
88
 
66
- updateProps(props: AnyObject = {}): void {
89
+ updateProps(props: Record<string, any> = {}): void {
67
90
  this.props = {
68
91
  ...this.props,
69
92
  ...props,
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from '@tiptap/core'
2
2
  export * from './BubbleMenu'
3
3
  export { Editor } from './Editor'
4
+ export * from './FloatingMenu'
4
5
  export * from './useEditor'
5
6
  export * from './ReactRenderer'
6
7
  export * from './ReactNodeViewRenderer'
package/src/useEditor.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { useState, useEffect } from 'react'
1
+ import { useState, useEffect, DependencyList } from 'react'
2
2
  import { EditorOptions } from '@tiptap/core'
3
3
  import { Editor } from './Editor'
4
4
 
@@ -8,7 +8,7 @@ function useForceUpdate() {
8
8
  return () => setValue(value => value + 1)
9
9
  }
10
10
 
11
- export const useEditor = (options: Partial<EditorOptions> = {}) => {
11
+ export const useEditor = (options: Partial<EditorOptions> = {}, deps: DependencyList = []) => {
12
12
  const [editor, setEditor] = useState<Editor | null>(null)
13
13
  const forceUpdate = useForceUpdate()
14
14
 
@@ -17,12 +17,18 @@ export const useEditor = (options: Partial<EditorOptions> = {}) => {
17
17
 
18
18
  setEditor(instance)
19
19
 
20
- instance.on('transaction', forceUpdate)
20
+ instance.on('transaction', () => {
21
+ requestAnimationFrame(() => {
22
+ requestAnimationFrame(() => {
23
+ forceUpdate()
24
+ })
25
+ })
26
+ })
21
27
 
22
28
  return () => {
23
29
  instance.destroy()
24
30
  }
25
- }, [])
31
+ }, deps)
26
32
 
27
33
  return editor
28
34
  }
@@ -1,12 +1,11 @@
1
1
  import { createContext, useContext } from 'react'
2
2
 
3
3
  export interface ReactNodeViewContextProps {
4
- isEditable: boolean,
5
4
  onDragStart: (event: DragEvent) => void,
5
+ nodeViewContentRef: (element: HTMLElement | null) => void,
6
6
  }
7
7
 
8
8
  export const ReactNodeViewContext = createContext<Partial<ReactNodeViewContextProps>>({
9
- isEditable: undefined,
10
9
  onDragStart: undefined,
11
10
  })
12
11
 
package/CHANGELOG.md DELETED
@@ -1,88 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- # [2.0.0-beta.10](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.9...@tiptap/react@2.0.0-beta.10) (2021-04-01)
7
-
8
- **Note:** Version bump only for package @tiptap/react
9
-
10
-
11
-
12
-
13
-
14
- # [2.0.0-beta.9](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.8...@tiptap/react@2.0.0-beta.9) (2021-03-31)
15
-
16
- **Note:** Version bump only for package @tiptap/react
17
-
18
-
19
-
20
-
21
-
22
- # [2.0.0-beta.8](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.7...@tiptap/react@2.0.0-beta.8) (2021-03-31)
23
-
24
- **Note:** Version bump only for package @tiptap/react
25
-
26
-
27
-
28
-
29
-
30
- # [2.0.0-beta.7](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.6...@tiptap/react@2.0.0-beta.7) (2021-03-31)
31
-
32
- **Note:** Version bump only for package @tiptap/react
33
-
34
-
35
-
36
-
37
-
38
- # [2.0.0-beta.6](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.5...@tiptap/react@2.0.0-beta.6) (2021-03-28)
39
-
40
- **Note:** Version bump only for package @tiptap/react
41
-
42
-
43
-
44
-
45
-
46
- # [2.0.0-beta.5](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.4...@tiptap/react@2.0.0-beta.5) (2021-03-24)
47
-
48
- **Note:** Version bump only for package @tiptap/react
49
-
50
-
51
-
52
-
53
-
54
- # [2.0.0-beta.4](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.3...@tiptap/react@2.0.0-beta.4) (2021-03-18)
55
-
56
- **Note:** Version bump only for package @tiptap/react
57
-
58
-
59
-
60
-
61
-
62
- # [2.0.0-beta.3](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.2...@tiptap/react@2.0.0-beta.3) (2021-03-16)
63
-
64
- **Note:** Version bump only for package @tiptap/react
65
-
66
-
67
-
68
-
69
-
70
- # [2.0.0-beta.2](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-beta.1...@tiptap/react@2.0.0-beta.2) (2021-03-09)
71
-
72
- **Note:** Version bump only for package @tiptap/react
73
-
74
-
75
-
76
-
77
-
78
- # [2.0.0-beta.1](https://github.com/ueberdosis/tiptap-next/compare/@tiptap/react@2.0.0-alpha.2...@tiptap/react@2.0.0-beta.1) (2021-03-05)
79
-
80
- **Note:** Version bump only for package @tiptap/react
81
-
82
-
83
-
84
-
85
-
86
- # 2.0.0-alpha.2 (2021-02-26)
87
-
88
- **Note:** Version bump only for package @tiptap/react