@tiptap/core 2.0.0-beta.22 → 2.0.0-beta.220

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 (344) hide show
  1. package/README.md +2 -2
  2. package/dist/index.cjs +4354 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.js +4264 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.umd.js +4352 -0
  7. package/dist/index.umd.js.map +1 -0
  8. package/dist/packages/core/src/CommandManager.d.ts +14 -7
  9. package/dist/packages/core/src/Editor.d.ts +27 -22
  10. package/dist/packages/core/src/EventEmitter.d.ts +8 -4
  11. package/dist/packages/core/src/Extension.d.ts +93 -21
  12. package/dist/packages/core/src/ExtensionManager.d.ts +8 -14
  13. package/dist/packages/core/src/InputRule.d.ts +42 -0
  14. package/dist/packages/core/src/Mark.d.ts +132 -24
  15. package/dist/packages/core/src/Node.d.ts +150 -26
  16. package/dist/packages/core/src/NodeView.d.ts +11 -15
  17. package/dist/packages/core/src/PasteRule.d.ts +42 -0
  18. package/dist/packages/core/src/Tracker.d.ts +11 -0
  19. package/dist/packages/core/src/commands/blur.d.ts +3 -3
  20. package/dist/packages/core/src/commands/clearContent.d.ts +3 -3
  21. package/dist/packages/core/src/commands/clearNodes.d.ts +3 -3
  22. package/dist/packages/core/src/commands/command.d.ts +2 -2
  23. package/dist/packages/core/src/commands/createParagraphNear.d.ts +3 -3
  24. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +12 -0
  25. package/dist/packages/core/src/commands/deleteNode.d.ts +13 -0
  26. package/dist/packages/core/src/commands/deleteRange.d.ts +3 -3
  27. package/dist/packages/core/src/commands/deleteSelection.d.ts +3 -3
  28. package/dist/packages/core/src/commands/enter.d.ts +3 -3
  29. package/dist/packages/core/src/commands/exitCode.d.ts +3 -3
  30. package/dist/packages/core/src/commands/extendMarkRange.d.ts +4 -4
  31. package/dist/packages/core/src/commands/first.d.ts +3 -3
  32. package/dist/packages/core/src/commands/focus.d.ts +5 -3
  33. package/dist/packages/core/src/commands/forEach.d.ts +14 -0
  34. package/dist/packages/core/src/commands/index.d.ts +50 -0
  35. package/dist/packages/core/src/commands/insertContent.d.ts +7 -3
  36. package/dist/packages/core/src/commands/insertContentAt.d.ts +16 -0
  37. package/dist/packages/core/src/commands/join.d.ts +33 -0
  38. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +3 -3
  39. package/dist/packages/core/src/commands/lift.d.ts +4 -4
  40. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +3 -3
  41. package/dist/packages/core/src/commands/liftListItem.d.ts +4 -4
  42. package/dist/packages/core/src/commands/newlineInCode.d.ts +3 -3
  43. package/dist/packages/core/src/commands/resetAttributes.d.ts +4 -4
  44. package/dist/packages/core/src/commands/scrollIntoView.d.ts +3 -3
  45. package/dist/packages/core/src/commands/selectAll.d.ts +3 -3
  46. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +3 -3
  47. package/dist/packages/core/src/commands/selectNodeForward.d.ts +3 -3
  48. package/dist/packages/core/src/commands/selectParentNode.d.ts +3 -3
  49. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +12 -0
  50. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +12 -0
  51. package/dist/packages/core/src/commands/setContent.d.ts +4 -3
  52. package/dist/packages/core/src/commands/setMark.d.ts +4 -4
  53. package/dist/packages/core/src/commands/setMeta.d.ts +12 -0
  54. package/dist/packages/core/src/commands/setNode.d.ts +4 -4
  55. package/dist/packages/core/src/commands/setNodeSelection.d.ts +12 -0
  56. package/dist/packages/core/src/commands/setTextSelection.d.ts +12 -0
  57. package/dist/packages/core/src/commands/sinkListItem.d.ts +4 -4
  58. package/dist/packages/core/src/commands/splitBlock.d.ts +3 -3
  59. package/dist/packages/core/src/commands/splitListItem.d.ts +4 -4
  60. package/dist/packages/core/src/commands/toggleList.d.ts +4 -4
  61. package/dist/packages/core/src/commands/toggleMark.d.ts +9 -4
  62. package/dist/packages/core/src/commands/toggleNode.d.ts +4 -4
  63. package/dist/packages/core/src/commands/toggleWrap.d.ts +4 -4
  64. package/dist/packages/core/src/commands/undoInputRule.d.ts +3 -3
  65. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +3 -3
  66. package/dist/packages/core/src/commands/unsetMark.d.ts +9 -4
  67. package/dist/packages/core/src/commands/updateAttributes.d.ts +4 -4
  68. package/dist/packages/core/src/commands/wrapIn.d.ts +4 -4
  69. package/dist/packages/core/src/commands/wrapInList.d.ts +4 -4
  70. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +1 -1
  71. package/dist/packages/core/src/extensions/commands.d.ts +2 -99
  72. package/dist/packages/core/src/extensions/editable.d.ts +1 -1
  73. package/dist/packages/core/src/extensions/focusEvents.d.ts +1 -1
  74. package/dist/packages/core/src/extensions/index.d.ts +1 -0
  75. package/dist/packages/core/src/extensions/keymap.d.ts +1 -1
  76. package/dist/packages/core/src/extensions/tabindex.d.ts +2 -0
  77. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +7 -0
  78. package/dist/packages/core/src/helpers/createChainableState.d.ts +5 -0
  79. package/dist/packages/core/src/helpers/createDocument.d.ts +3 -4
  80. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +4 -5
  81. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +2 -0
  82. package/dist/packages/core/src/helpers/findChildren.d.ts +3 -8
  83. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +6 -0
  84. package/dist/packages/core/src/helpers/findParentNode.d.ts +3 -4
  85. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +3 -3
  86. package/dist/packages/core/src/helpers/generateHTML.d.ts +2 -2
  87. package/dist/packages/core/src/helpers/generateJSON.d.ts +2 -0
  88. package/dist/packages/core/src/helpers/generateText.d.ts +5 -0
  89. package/dist/packages/core/src/helpers/getAttributes.d.ts +3 -0
  90. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +2 -2
  91. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +11 -0
  92. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +8 -0
  93. package/dist/packages/core/src/helpers/getExtensionField.d.ts +2 -0
  94. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +2 -2
  95. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +3 -4
  96. package/dist/packages/core/src/helpers/getMarkRange.d.ts +2 -2
  97. package/dist/packages/core/src/helpers/getMarkType.d.ts +2 -2
  98. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +2 -2
  99. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +3 -4
  100. package/dist/packages/core/src/helpers/getNodeType.d.ts +2 -2
  101. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +3 -3
  102. package/dist/packages/core/src/helpers/getSchema.d.ts +2 -2
  103. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +3 -0
  104. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +2 -2
  105. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +2 -2
  106. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +2 -2
  107. package/dist/packages/core/src/helpers/getText.d.ts +6 -0
  108. package/dist/packages/core/src/helpers/getTextBetween.d.ts +6 -0
  109. package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +2 -0
  110. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +3 -0
  111. package/dist/packages/core/src/helpers/index.d.ts +47 -0
  112. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +2 -2
  113. package/dist/packages/core/src/helpers/isActive.d.ts +2 -3
  114. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +2 -0
  115. package/dist/packages/core/src/helpers/isList.d.ts +1 -1
  116. package/dist/packages/core/src/helpers/isMarkActive.d.ts +3 -4
  117. package/dist/packages/core/src/helpers/isNodeActive.d.ts +3 -4
  118. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +2 -2
  119. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +2 -2
  120. package/dist/packages/core/src/helpers/isTextSelection.d.ts +2 -2
  121. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +2 -0
  122. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +4 -0
  123. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +2 -2
  124. package/dist/packages/core/src/helpers/splitExtensions.d.ts +6 -6
  125. package/dist/packages/core/src/index.d.ts +14 -23
  126. package/dist/packages/core/src/inputRules/index.d.ts +5 -0
  127. package/dist/packages/core/src/inputRules/markInputRule.d.ts +12 -3
  128. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +12 -3
  129. package/dist/packages/core/src/inputRules/textInputRule.d.ts +9 -0
  130. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +14 -0
  131. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +27 -0
  132. package/dist/packages/core/src/pasteRules/index.d.ts +3 -0
  133. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +12 -3
  134. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +12 -0
  135. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +9 -0
  136. package/dist/packages/core/src/style.d.ts +1 -2
  137. package/dist/packages/core/src/types.d.ts +122 -62
  138. package/dist/packages/core/src/utilities/callOrReturn.d.ts +2 -1
  139. package/dist/packages/core/src/utilities/createStyleTag.d.ts +1 -1
  140. package/dist/packages/core/src/utilities/deleteProps.d.ts +1 -2
  141. package/dist/packages/core/src/utilities/elementFromString.d.ts +1 -1
  142. package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +1 -0
  143. package/dist/packages/core/src/utilities/findDuplicates.d.ts +1 -0
  144. package/dist/packages/core/src/utilities/fromString.d.ts +1 -1
  145. package/dist/packages/core/src/utilities/index.d.ts +20 -0
  146. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +1 -1
  147. package/dist/packages/core/src/utilities/isFunction.d.ts +1 -0
  148. package/dist/packages/core/src/utilities/isMacOS.d.ts +1 -0
  149. package/dist/packages/core/src/utilities/isNumber.d.ts +1 -0
  150. package/dist/packages/core/src/utilities/isPlainObject.d.ts +1 -1
  151. package/dist/packages/core/src/utilities/isRegExp.d.ts +1 -0
  152. package/dist/packages/core/src/utilities/isString.d.ts +1 -0
  153. package/dist/packages/core/src/utilities/isiOS.d.ts +1 -0
  154. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +1 -2
  155. package/dist/packages/core/src/utilities/mergeDeep.d.ts +1 -2
  156. package/dist/packages/core/src/utilities/minMax.d.ts +1 -1
  157. package/dist/packages/core/src/utilities/objectIncludes.d.ts +3 -2
  158. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +8 -0
  159. package/package.json +29 -24
  160. package/src/CommandManager.ts +76 -86
  161. package/src/Editor.ts +121 -79
  162. package/src/EventEmitter.ts +14 -4
  163. package/src/Extension.ts +276 -112
  164. package/src/ExtensionManager.ts +252 -110
  165. package/src/InputRule.ts +260 -0
  166. package/src/Mark.ts +394 -152
  167. package/src/Node.ts +433 -176
  168. package/src/NodeView.ts +144 -67
  169. package/src/PasteRule.ts +240 -0
  170. package/src/Tracker.ts +38 -0
  171. package/src/commands/blur.ts +12 -6
  172. package/src/commands/clearContent.ts +3 -3
  173. package/src/commands/clearNodes.ts +31 -19
  174. package/src/commands/command.ts +2 -2
  175. package/src/commands/createParagraphNear.ts +5 -4
  176. package/src/commands/deleteCurrentNode.ts +41 -0
  177. package/src/commands/deleteNode.ts +37 -0
  178. package/src/commands/deleteRange.ts +3 -3
  179. package/src/commands/deleteSelection.ts +5 -4
  180. package/src/commands/enter.ts +3 -3
  181. package/src/commands/exitCode.ts +5 -4
  182. package/src/commands/extendMarkRange.ts +16 -12
  183. package/src/commands/first.ts +3 -3
  184. package/src/commands/focus.ts +47 -44
  185. package/src/commands/forEach.ts +24 -0
  186. package/src/commands/index.ts +50 -0
  187. package/src/commands/insertContent.ts +17 -24
  188. package/src/commands/insertContentAt.ts +102 -0
  189. package/src/commands/join.ts +53 -0
  190. package/src/commands/keyboardShortcut.ts +6 -6
  191. package/src/commands/lift.ts +8 -7
  192. package/src/commands/liftEmptyBlock.ts +5 -4
  193. package/src/commands/liftListItem.ts +7 -6
  194. package/src/commands/newlineInCode.ts +5 -4
  195. package/src/commands/resetAttributes.ts +18 -12
  196. package/src/commands/scrollIntoView.ts +3 -3
  197. package/src/commands/selectAll.ts +8 -6
  198. package/src/commands/selectNodeBackward.ts +5 -4
  199. package/src/commands/selectNodeForward.ts +5 -4
  200. package/src/commands/selectParentNode.ts +5 -4
  201. package/src/commands/selectTextblockEnd.ts +20 -0
  202. package/src/commands/selectTextblockStart.ts +20 -0
  203. package/src/commands/setContent.ts +9 -16
  204. package/src/commands/setMark.ts +90 -14
  205. package/src/commands/setMeta.ts +18 -0
  206. package/src/commands/setNode.ts +32 -8
  207. package/src/commands/setNodeSelection.ts +27 -0
  208. package/src/commands/setTextSelection.ts +31 -0
  209. package/src/commands/sinkListItem.ts +7 -6
  210. package/src/commands/splitBlock.ts +31 -41
  211. package/src/commands/splitListItem.ts +58 -29
  212. package/src/commands/toggleList.ts +109 -20
  213. package/src/commands/toggleMark.ts +19 -8
  214. package/src/commands/toggleNode.ts +11 -6
  215. package/src/commands/toggleWrap.ts +10 -10
  216. package/src/commands/undoInputRule.ts +34 -5
  217. package/src/commands/unsetAllMarks.ts +7 -11
  218. package/src/commands/unsetMark.ts +36 -23
  219. package/src/commands/updateAttributes.ts +27 -15
  220. package/src/commands/wrapIn.ts +7 -12
  221. package/src/commands/wrapInList.ts +7 -6
  222. package/src/extensions/clipboardTextSerializer.ts +15 -36
  223. package/src/extensions/commands.ts +3 -147
  224. package/src/extensions/editable.ts +2 -1
  225. package/src/extensions/focusEvents.ts +4 -6
  226. package/src/extensions/index.ts +1 -0
  227. package/src/extensions/keymap.ts +106 -13
  228. package/src/extensions/tabindex.ts +18 -0
  229. package/src/helpers/combineTransactionSteps.ts +21 -0
  230. package/src/helpers/createChainableState.ts +38 -0
  231. package/src/helpers/createDocument.ts +5 -6
  232. package/src/helpers/createNodeFromContent.ts +20 -28
  233. package/src/helpers/defaultBlockAt.ts +13 -0
  234. package/src/helpers/findChildren.ts +3 -7
  235. package/src/helpers/findChildrenInRange.ts +36 -0
  236. package/src/helpers/findParentNode.ts +4 -3
  237. package/src/helpers/findParentNodeClosestToPos.ts +13 -7
  238. package/src/helpers/generateHTML.ts +7 -6
  239. package/src/helpers/generateJSON.ts +12 -0
  240. package/src/helpers/generateText.ts +27 -0
  241. package/src/helpers/getAttributes.ts +26 -0
  242. package/src/helpers/getAttributesFromExtensions.ts +42 -14
  243. package/src/helpers/getChangedRanges.ts +83 -0
  244. package/src/helpers/getDebugJSON.ts +54 -0
  245. package/src/helpers/getExtensionField.ts +25 -0
  246. package/src/helpers/getHTMLFromFragment.ts +5 -6
  247. package/src/helpers/getMarkAttributes.ts +18 -11
  248. package/src/helpers/getMarkRange.ts +41 -8
  249. package/src/helpers/getMarkType.ts +8 -2
  250. package/src/helpers/getMarksBetween.ts +34 -10
  251. package/src/helpers/getNodeAttributes.ts +14 -13
  252. package/src/helpers/getNodeType.ts +8 -2
  253. package/src/helpers/getRenderedAttributes.ts +9 -7
  254. package/src/helpers/getSchema.ts +7 -133
  255. package/src/helpers/getSchemaByResolvedExtensions.ts +192 -0
  256. package/src/helpers/getSchemaTypeByName.ts +3 -11
  257. package/src/helpers/getSchemaTypeNameByName.ts +2 -2
  258. package/src/helpers/getSplittedAttributes.ts +4 -4
  259. package/src/helpers/getText.ts +19 -0
  260. package/src/helpers/getTextBetween.ts +46 -0
  261. package/src/helpers/getTextContentFromNodes.ts +26 -0
  262. package/src/helpers/getTextSerializersFromSchema.ts +11 -0
  263. package/src/helpers/index.ts +47 -0
  264. package/src/helpers/injectExtensionAttributesToParseRule.ts +22 -23
  265. package/src/helpers/isActive.ts +10 -6
  266. package/src/helpers/isExtensionRulesEnabled.ts +15 -0
  267. package/src/helpers/isList.ts +14 -7
  268. package/src/helpers/isMarkActive.ts +49 -27
  269. package/src/helpers/isNodeActive.ts +29 -39
  270. package/src/helpers/isNodeEmpty.ts +2 -2
  271. package/src/helpers/isNodeSelection.ts +3 -4
  272. package/src/helpers/isTextSelection.ts +3 -4
  273. package/src/helpers/posToDOMRect.ts +35 -0
  274. package/src/helpers/resolveFocusPosition.ts +42 -0
  275. package/src/helpers/selectionToInsertionEnd.ts +3 -3
  276. package/src/helpers/splitExtensions.ts +3 -3
  277. package/src/index.ts +15 -26
  278. package/src/inputRules/index.ts +5 -0
  279. package/src/inputRules/markInputRule.ts +59 -40
  280. package/src/inputRules/nodeInputRule.ts +45 -12
  281. package/src/inputRules/textInputRule.ts +35 -0
  282. package/src/inputRules/textblockTypeInputRule.ts +37 -0
  283. package/src/inputRules/wrappingInputRule.ts +84 -0
  284. package/src/pasteRules/index.ts +3 -0
  285. package/src/pasteRules/markPasteRule.ts +61 -53
  286. package/src/pasteRules/nodePasteRule.ts +37 -0
  287. package/src/pasteRules/textPasteRule.ts +35 -0
  288. package/src/style.ts +16 -3
  289. package/src/types.ts +175 -97
  290. package/src/utilities/callOrReturn.ts +6 -3
  291. package/src/utilities/createStyleTag.ts +12 -1
  292. package/src/utilities/deleteProps.ts +2 -4
  293. package/src/utilities/elementFromString.ts +4 -5
  294. package/src/utilities/escapeForRegEx.ts +4 -0
  295. package/src/utilities/findDuplicates.ts +5 -0
  296. package/src/utilities/fromString.ts +2 -2
  297. package/src/utilities/index.ts +20 -0
  298. package/src/utilities/isEmptyObject.ts +2 -2
  299. package/src/utilities/isFunction.ts +3 -0
  300. package/src/utilities/isMacOS.ts +5 -0
  301. package/src/utilities/isNumber.ts +3 -0
  302. package/src/utilities/isPlainObject.ts +8 -5
  303. package/src/utilities/isRegExp.ts +3 -0
  304. package/src/utilities/isString.ts +3 -0
  305. package/src/utilities/isiOS.ts +12 -0
  306. package/src/utilities/mergeAttributes.ts +2 -3
  307. package/src/utilities/mergeDeep.ts +2 -3
  308. package/src/utilities/minMax.ts +1 -1
  309. package/src/utilities/objectIncludes.ts +17 -5
  310. package/src/utilities/removeDuplicates.ts +15 -0
  311. package/CHANGELOG.md +0 -373
  312. package/LICENSE.md +0 -21
  313. package/dist/packages/core/src/commands/insertHTML.d.ts +0 -12
  314. package/dist/packages/core/src/commands/insertNode.d.ts +0 -13
  315. package/dist/packages/core/src/commands/insertText.d.ts +0 -12
  316. package/dist/packages/core/src/commands/joinBackward.d.ts +0 -12
  317. package/dist/packages/core/src/commands/joinForward.d.ts +0 -12
  318. package/dist/packages/core/src/commands/replace.d.ts +0 -13
  319. package/dist/packages/core/src/commands/replaceRange.d.ts +0 -13
  320. package/dist/packages/core/src/commands/resetNodeAttributes.d.ts +0 -13
  321. package/dist/packages/core/src/commands/updateNodeAttributes.d.ts +0 -13
  322. package/dist/packages/core/src/utilities/isClass.d.ts +0 -1
  323. package/dist/packages/core/src/utilities/isObject.d.ts +0 -1
  324. package/dist/packages/core/src/utilities/removeElement.d.ts +0 -1
  325. package/dist/tiptap-core.bundle.umd.min.js +0 -17
  326. package/dist/tiptap-core.bundle.umd.min.js.map +0 -1
  327. package/dist/tiptap-core.cjs.js +0 -3048
  328. package/dist/tiptap-core.cjs.js.map +0 -1
  329. package/dist/tiptap-core.esm.js +0 -3021
  330. package/dist/tiptap-core.esm.js.map +0 -1
  331. package/dist/tiptap-core.umd.js +0 -3045
  332. package/dist/tiptap-core.umd.js.map +0 -1
  333. package/src/commands/insertHTML.ts +0 -30
  334. package/src/commands/insertNode.ts +0 -33
  335. package/src/commands/insertText.ts +0 -22
  336. package/src/commands/joinBackward.ts +0 -17
  337. package/src/commands/joinForward.ts +0 -17
  338. package/src/commands/replace.ts +0 -20
  339. package/src/commands/replaceRange.ts +0 -36
  340. package/src/commands/resetNodeAttributes.ts +0 -33
  341. package/src/commands/updateNodeAttributes.ts +0 -35
  342. package/src/utilities/isClass.ts +0 -7
  343. package/src/utilities/isObject.ts +0 -10
  344. package/src/utilities/removeElement.ts +0 -5
@@ -1,21 +1,45 @@
1
- import { NodeType } from 'prosemirror-model'
2
- import { setBlockType } from 'prosemirror-commands'
3
- import { AnyObject, Command, RawCommands } from '../types'
4
- import getNodeType from '../helpers/getNodeType'
1
+ import { setBlockType } from '@tiptap/pm/commands'
2
+ import { NodeType } from '@tiptap/pm/model'
3
+
4
+ import { getNodeType } from '../helpers/getNodeType'
5
+ import { RawCommands } from '../types'
5
6
 
6
7
  declare module '@tiptap/core' {
7
- interface Commands {
8
+ interface Commands<ReturnType> {
8
9
  setNode: {
9
10
  /**
10
11
  * Replace a given range with a node.
11
12
  */
12
- setNode: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,
13
+ setNode: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType
13
14
  }
14
15
  }
15
16
  }
16
17
 
17
- export const setNode: RawCommands['setNode'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {
18
+ export const setNode: RawCommands['setNode'] = (typeOrName, attributes = {}) => ({ state, dispatch, chain }) => {
18
19
  const type = getNodeType(typeOrName, state.schema)
19
20
 
20
- return setBlockType(type, attributes)(state, dispatch)
21
+ // TODO: use a fallback like insertContent?
22
+ if (!type.isTextblock) {
23
+ console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.')
24
+
25
+ return false
26
+ }
27
+
28
+ return (
29
+ chain()
30
+ // try to convert node to default node if needed
31
+ .command(({ commands }) => {
32
+ const canSetBlock = setBlockType(type, attributes)(state)
33
+
34
+ if (canSetBlock) {
35
+ return true
36
+ }
37
+
38
+ return commands.clearNodes()
39
+ })
40
+ .command(({ state: updatedState }) => {
41
+ return setBlockType(type, attributes)(updatedState, dispatch)
42
+ })
43
+ .run()
44
+ )
21
45
  }
@@ -0,0 +1,27 @@
1
+ import { NodeSelection } from '@tiptap/pm/state'
2
+
3
+ import { RawCommands } from '../types'
4
+ import { minMax } from '../utilities/minMax'
5
+
6
+ declare module '@tiptap/core' {
7
+ interface Commands<ReturnType> {
8
+ setNodeSelection: {
9
+ /**
10
+ * Creates a NodeSelection.
11
+ */
12
+ setNodeSelection: (position: number) => ReturnType
13
+ }
14
+ }
15
+ }
16
+
17
+ export const setNodeSelection: RawCommands['setNodeSelection'] = position => ({ tr, dispatch }) => {
18
+ if (dispatch) {
19
+ const { doc } = tr
20
+ const from = minMax(position, 0, doc.content.size)
21
+ const selection = NodeSelection.create(doc, from)
22
+
23
+ tr.setSelection(selection)
24
+ }
25
+
26
+ return true
27
+ }
@@ -0,0 +1,31 @@
1
+ import { TextSelection } from '@tiptap/pm/state'
2
+
3
+ import { Range, RawCommands } from '../types'
4
+ import { minMax } from '../utilities/minMax'
5
+
6
+ declare module '@tiptap/core' {
7
+ interface Commands<ReturnType> {
8
+ setTextSelection: {
9
+ /**
10
+ * Creates a TextSelection.
11
+ */
12
+ setTextSelection: (position: number | Range) => ReturnType
13
+ }
14
+ }
15
+ }
16
+
17
+ export const setTextSelection: RawCommands['setTextSelection'] = position => ({ tr, dispatch }) => {
18
+ if (dispatch) {
19
+ const { doc } = tr
20
+ const { from, to } = typeof position === 'number' ? { from: position, to: position } : position
21
+ const minPos = TextSelection.atStart(doc).from
22
+ const maxPos = TextSelection.atEnd(doc).to
23
+ const resolvedFrom = minMax(from, minPos, maxPos)
24
+ const resolvedEnd = minMax(to, minPos, maxPos)
25
+ const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd)
26
+
27
+ tr.setSelection(selection)
28
+ }
29
+
30
+ return true
31
+ }
@@ -1,15 +1,16 @@
1
- import { sinkListItem as originalSinkListItem } from 'prosemirror-schema-list'
2
- import { NodeType } from 'prosemirror-model'
3
- import { Command, RawCommands } from '../types'
4
- import getNodeType from '../helpers/getNodeType'
1
+ import { NodeType } from '@tiptap/pm/model'
2
+ import { sinkListItem as originalSinkListItem } from '@tiptap/pm/schema-list'
3
+
4
+ import { getNodeType } from '../helpers/getNodeType'
5
+ import { RawCommands } from '../types'
5
6
 
6
7
  declare module '@tiptap/core' {
7
- interface Commands {
8
+ interface Commands<ReturnType> {
8
9
  sinkListItem: {
9
10
  /**
10
11
  * Sink the list item down into an inner list.
11
12
  */
12
- sinkListItem: (typeOrName: string | NodeType) => Command,
13
+ sinkListItem: (typeOrName: string | NodeType) => ReturnType
13
14
  }
14
15
  }
15
16
  }
@@ -1,23 +1,12 @@
1
- import { canSplit } from 'prosemirror-transform'
2
- import { ContentMatch, Fragment } from 'prosemirror-model'
3
- import { EditorState, NodeSelection, TextSelection } from 'prosemirror-state'
4
- import { Command, RawCommands } from '../types'
5
- import getSplittedAttributes from '../helpers/getSplittedAttributes'
6
-
7
- function defaultBlockAt(match: ContentMatch) {
8
- for (let i = 0; i < match.edgeCount; i + 1) {
9
- const { type } = match.edge(i)
10
-
11
- if (type.isTextblock && !type.hasRequiredAttrs()) {
12
- return type
13
- }
14
- }
15
- return null
16
- }
1
+ import { EditorState, NodeSelection, TextSelection } from '@tiptap/pm/state'
2
+ import { canSplit } from '@tiptap/pm/transform'
3
+
4
+ import { defaultBlockAt } from '../helpers/defaultBlockAt'
5
+ import { getSplittedAttributes } from '../helpers/getSplittedAttributes'
6
+ import { RawCommands } from '../types'
17
7
 
18
8
  function ensureMarks(state: EditorState, splittableMarks?: string[]) {
19
- const marks = state.storedMarks
20
- || (state.selection.$to.parentOffset && state.selection.$from.marks())
9
+ const marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks())
21
10
 
22
11
  if (marks) {
23
12
  const filteredMarks = marks.filter(mark => splittableMarks?.includes(mark.type.name))
@@ -27,21 +16,18 @@ function ensureMarks(state: EditorState, splittableMarks?: string[]) {
27
16
  }
28
17
 
29
18
  declare module '@tiptap/core' {
30
- interface Commands {
19
+ interface Commands<ReturnType> {
31
20
  splitBlock: {
32
21
  /**
33
22
  * Forks a new node from an existing node.
34
23
  */
35
- splitBlock: (options?: { keepMarks?: boolean }) => Command,
24
+ splitBlock: (options?: { keepMarks?: boolean }) => ReturnType
36
25
  }
37
26
  }
38
27
  }
39
28
 
40
29
  export const splitBlock: RawCommands['splitBlock'] = ({ keepMarks = true } = {}) => ({
41
- tr,
42
- state,
43
- dispatch,
44
- editor,
30
+ tr, state, dispatch, editor,
45
31
  }) => {
46
32
  const { selection, doc } = tr
47
33
  const { $from, $to } = selection
@@ -84,38 +70,42 @@ export const splitBlock: RawCommands['splitBlock'] = ({ keepMarks = true } = {})
84
70
  : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)))
85
71
 
86
72
  let types = atEnd && deflt
87
- ? [{
88
- type: deflt,
89
- attrs: newAttributes,
90
- }]
73
+ ? [
74
+ {
75
+ type: deflt,
76
+ attrs: newAttributes,
77
+ },
78
+ ]
91
79
  : undefined
92
80
 
93
81
  let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types)
94
82
 
95
83
  if (
96
84
  !types
97
- && !can
98
- && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)
85
+ && !can
86
+ && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)
99
87
  ) {
100
88
  can = true
101
89
  types = deflt
102
- ? [{
103
- type: deflt,
104
- attrs: newAttributes,
105
- }]
90
+ ? [
91
+ {
92
+ type: deflt,
93
+ attrs: newAttributes,
94
+ },
95
+ ]
106
96
  : undefined
107
97
  }
108
98
 
109
99
  if (can) {
110
100
  tr.split(tr.mapping.map($from.pos), 1, types)
111
101
 
112
- if (
113
- !atEnd
114
- && !$from.parentOffset
115
- && $from.parent.type !== deflt
116
- && $from.node(-1).canReplace($from.index(-1), $from.indexAfter(-1), Fragment.from(deflt?.create()))
117
- ) {
118
- tr.setNodeMarkup(tr.mapping.map($from.before()), deflt || undefined)
102
+ if (deflt && !atEnd && !$from.parentOffset && $from.parent.type !== deflt) {
103
+ const first = tr.mapping.map($from.before())
104
+ const $first = tr.doc.resolve(first)
105
+
106
+ if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt)) {
107
+ tr.setNodeMarkup(tr.mapping.map($from.before()), deflt)
108
+ }
119
109
  }
120
110
  }
121
111
 
@@ -1,22 +1,20 @@
1
1
  import {
2
- NodeType,
3
- Node as ProseMirrorNode,
4
- Fragment,
5
- Slice,
6
- } from 'prosemirror-model'
7
- import { canSplit } from 'prosemirror-transform'
8
- import { TextSelection } from 'prosemirror-state'
9
- import { Command, RawCommands } from '../types'
10
- import getNodeType from '../helpers/getNodeType'
11
- import getSplittedAttributes from '../helpers/getSplittedAttributes'
2
+ Fragment, Node as ProseMirrorNode, NodeType, Slice,
3
+ } from '@tiptap/pm/model'
4
+ import { TextSelection } from '@tiptap/pm/state'
5
+ import { canSplit } from '@tiptap/pm/transform'
6
+
7
+ import { getNodeType } from '../helpers/getNodeType'
8
+ import { getSplittedAttributes } from '../helpers/getSplittedAttributes'
9
+ import { RawCommands } from '../types'
12
10
 
13
11
  declare module '@tiptap/core' {
14
- interface Commands {
12
+ interface Commands<ReturnType> {
15
13
  splitListItem: {
16
14
  /**
17
15
  * Splits one list item into two list items.
18
16
  */
19
- splitListItem: (typeOrName: string | NodeType) => Command,
17
+ splitListItem: (typeOrName: string | NodeType) => ReturnType
20
18
  }
21
19
  }
22
20
  }
@@ -29,7 +27,7 @@ export const splitListItem: RawCommands['splitListItem'] = typeOrName => ({
29
27
 
30
28
  // @ts-ignore
31
29
  // eslint-disable-next-line
32
- const node: ProseMirrorNode = state.selection.node
30
+ const node: ProseMirrorNode = state.selection.node
33
31
 
34
32
  if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) {
35
33
  return false
@@ -49,22 +47,26 @@ export const splitListItem: RawCommands['splitListItem'] = typeOrName => ({
49
47
  // command handle lifting.
50
48
  if (
51
49
  $from.depth === 2
52
- || $from.node(-3).type !== type
53
- || $from.index(-2) !== $from.node(-2).childCount - 1
50
+ || $from.node(-3).type !== type
51
+ || $from.index(-2) !== $from.node(-2).childCount - 1
54
52
  ) {
55
53
  return false
56
54
  }
57
55
 
58
56
  if (dispatch) {
59
57
  let wrap = Fragment.empty
60
- const keepItem = $from.index(-1) > 0
58
+ // eslint-disable-next-line
59
+ const depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3
61
60
 
62
61
  // Build a fragment containing empty versions of the structure
63
62
  // from the outer list item to the parent node of the cursor
64
- for (let d = $from.depth - (keepItem ? 1 : 2); d >= $from.depth - 3; d -= 1) {
63
+ for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d -= 1) {
65
64
  wrap = Fragment.from($from.node(d).copy(wrap))
66
65
  }
67
66
 
67
+ // eslint-disable-next-line
68
+ const depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1 : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3
69
+
68
70
  // Add a second list item with an empty default start node
69
71
  const newNextTypeAttributes = getSplittedAttributes(
70
72
  extensionAttributes,
@@ -72,24 +74,36 @@ export const splitListItem: RawCommands['splitListItem'] = typeOrName => ({
72
74
  $from.node().attrs,
73
75
  )
74
76
  const nextType = type.contentMatch.defaultType?.createAndFill(newNextTypeAttributes) || undefined
77
+
75
78
  wrap = wrap.append(Fragment.from(type.createAndFill(null, nextType) || undefined))
76
79
 
77
- tr
78
- .replace(
79
- $from.before(keepItem ? undefined : -1),
80
- $from.after(-3),
81
- new Slice(wrap, keepItem ? 3 : 2, 2),
82
- )
83
- .setSelection(TextSelection.near(tr.doc.resolve($from.pos + (keepItem ? 3 : 2))))
84
- .scrollIntoView()
80
+ const start = $from.before($from.depth - (depthBefore - 1))
81
+
82
+ tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0))
83
+
84
+ let sel = -1
85
+
86
+ tr.doc.nodesBetween(start, tr.doc.content.size, (n, pos) => {
87
+ if (sel > -1) {
88
+ return false
89
+ }
90
+
91
+ if (n.isTextblock && n.content.size === 0) {
92
+ sel = pos + 1
93
+ }
94
+ })
95
+
96
+ if (sel > -1) {
97
+ tr.setSelection(TextSelection.near(tr.doc.resolve(sel)))
98
+ }
99
+
100
+ tr.scrollIntoView()
85
101
  }
86
102
 
87
103
  return true
88
104
  }
89
105
 
90
- const nextType = $to.pos === $from.end()
91
- ? grandParent.contentMatchAt(0).defaultType
92
- : null
106
+ const nextType = $to.pos === $from.end() ? grandParent.contentMatchAt(0).defaultType : null
93
107
 
94
108
  const newTypeAttributes = getSplittedAttributes(
95
109
  extensionAttributes,
@@ -105,7 +119,10 @@ export const splitListItem: RawCommands['splitListItem'] = typeOrName => ({
105
119
  tr.delete($from.pos, $to.pos)
106
120
 
107
121
  const types = nextType
108
- ? [{ type, attrs: newTypeAttributes }, { type: nextType, attrs: newNextTypeAttributes }]
122
+ ? [
123
+ { type, attrs: newTypeAttributes },
124
+ { type: nextType, attrs: newNextTypeAttributes },
125
+ ]
109
126
  : [{ type, attrs: newTypeAttributes }]
110
127
 
111
128
  if (!canSplit(tr.doc, $from.pos, 2)) {
@@ -113,7 +130,19 @@ export const splitListItem: RawCommands['splitListItem'] = typeOrName => ({
113
130
  }
114
131
 
115
132
  if (dispatch) {
133
+ const { selection, storedMarks } = state
134
+ const { splittableMarks } = editor.extensionManager
135
+ const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks())
136
+
116
137
  tr.split($from.pos, 2, types).scrollIntoView()
138
+
139
+ if (!marks || !dispatch) {
140
+ return true
141
+ }
142
+
143
+ const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name))
144
+
145
+ tr.ensureMarks(filteredMarks)
117
146
  }
118
147
 
119
148
  return true
@@ -1,30 +1,85 @@
1
- import { NodeType } from 'prosemirror-model'
2
- import { Command, RawCommands } from '../types'
3
- import getNodeType from '../helpers/getNodeType'
4
- import findParentNode from '../helpers/findParentNode'
5
- import isList from '../helpers/isList'
1
+ import { NodeType } from '@tiptap/pm/model'
2
+ import { Transaction } from '@tiptap/pm/state'
3
+ import { canJoin } from '@tiptap/pm/transform'
4
+
5
+ import { findParentNode } from '../helpers/findParentNode'
6
+ import { getNodeType } from '../helpers/getNodeType'
7
+ import { isList } from '../helpers/isList'
8
+ import { RawCommands } from '../types'
9
+
10
+ const joinListBackwards = (tr: Transaction, listType: NodeType): boolean => {
11
+ const list = findParentNode(node => node.type === listType)(tr.selection)
12
+
13
+ if (!list) {
14
+ return true
15
+ }
16
+
17
+ const before = tr.doc.resolve(Math.max(0, list.pos - 1)).before(list.depth)
18
+
19
+ if (before === undefined) {
20
+ return true
21
+ }
22
+
23
+ const nodeBefore = tr.doc.nodeAt(before)
24
+ const canJoinBackwards = list.node.type === nodeBefore?.type && canJoin(tr.doc, list.pos)
25
+
26
+ if (!canJoinBackwards) {
27
+ return true
28
+ }
29
+
30
+ tr.join(list.pos)
31
+
32
+ return true
33
+ }
34
+
35
+ const joinListForwards = (tr: Transaction, listType: NodeType): boolean => {
36
+ const list = findParentNode(node => node.type === listType)(tr.selection)
37
+
38
+ if (!list) {
39
+ return true
40
+ }
41
+
42
+ const after = tr.doc.resolve(list.start).after(list.depth)
43
+
44
+ if (after === undefined) {
45
+ return true
46
+ }
47
+
48
+ const nodeAfter = tr.doc.nodeAt(after)
49
+ const canJoinForwards = list.node.type === nodeAfter?.type && canJoin(tr.doc, after)
50
+
51
+ if (!canJoinForwards) {
52
+ return true
53
+ }
54
+
55
+ tr.join(after)
56
+
57
+ return true
58
+ }
6
59
 
7
60
  declare module '@tiptap/core' {
8
- interface Commands {
61
+ interface Commands<ReturnType> {
9
62
  toggleList: {
10
63
  /**
11
64
  * Toggle between different list types.
12
65
  */
13
- toggleList: (listTypeOrName: string | NodeType, itemTypeOrName: string | NodeType) => Command,
66
+ toggleList: (listTypeOrName: string | NodeType, itemTypeOrName: string | NodeType, keepMarks?: boolean) => ReturnType;
14
67
  }
15
68
  }
16
69
  }
17
70
 
18
- export const toggleList: RawCommands['toggleList'] = (listTypeOrName, itemTypeOrName) => ({
71
+ export const toggleList: RawCommands['toggleList'] = (listTypeOrName, itemTypeOrName, keepMarks) => ({
19
72
  editor, tr, state, dispatch, chain, commands, can,
20
73
  }) => {
21
- const { extensions } = editor.options
74
+ const { extensions, splittableMarks } = editor.extensionManager
22
75
  const listType = getNodeType(listTypeOrName, state.schema)
23
76
  const itemType = getNodeType(itemTypeOrName, state.schema)
24
- const { selection } = state
77
+ const { selection, storedMarks } = state
25
78
  const { $from, $to } = selection
26
79
  const range = $from.blockRange($to)
27
80
 
81
+ const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks())
82
+
28
83
  if (!range) {
29
84
  return false
30
85
  }
@@ -40,24 +95,58 @@ export const toggleList: RawCommands['toggleList'] = (listTypeOrName, itemTypeOr
40
95
  // change list type
41
96
  if (
42
97
  isList(parentList.node.type.name, extensions)
43
- && listType.validContent(parentList.node.content)
44
- && dispatch
98
+ && listType.validContent(parentList.node.content)
99
+ && dispatch
45
100
  ) {
46
- tr.setNodeMarkup(parentList.pos, listType)
101
+ return chain()
102
+ .command(() => {
103
+ tr.setNodeMarkup(parentList.pos, listType)
47
104
 
48
- return true
105
+ return true
106
+ })
107
+ .command(() => joinListBackwards(tr, listType))
108
+ .command(() => joinListForwards(tr, listType))
109
+ .run()
49
110
  }
50
111
  }
112
+ if (!keepMarks || !marks || !dispatch) {
51
113
 
52
- const canWrapInList = can().wrapInList(listType)
53
-
54
- // try to convert node to paragraph if needed
55
- if (!canWrapInList) {
56
114
  return chain()
57
- .clearNodes()
115
+ // try to convert node to default node if needed
116
+ .command(() => {
117
+ const canWrapInList = can().wrapInList(listType)
118
+
119
+ if (canWrapInList) {
120
+ return true
121
+ }
122
+
123
+ return commands.clearNodes()
124
+ })
58
125
  .wrapInList(listType)
126
+ .command(() => joinListBackwards(tr, listType))
127
+ .command(() => joinListForwards(tr, listType))
59
128
  .run()
60
129
  }
61
130
 
62
- return commands.wrapInList(listType)
131
+ return (
132
+ chain()
133
+ // try to convert node to default node if needed
134
+ .command(() => {
135
+ const canWrapInList = can().wrapInList(listType)
136
+
137
+ const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name))
138
+
139
+ tr.ensureMarks(filteredMarks)
140
+
141
+ if (canWrapInList) {
142
+ return true
143
+ }
144
+
145
+ return commands.clearNodes()
146
+ })
147
+ .wrapInList(listType)
148
+ .command(() => joinListBackwards(tr, listType))
149
+ .command(() => joinListForwards(tr, listType))
150
+ .run()
151
+ )
63
152
  }
@@ -1,25 +1,36 @@
1
- import { MarkType } from 'prosemirror-model'
2
- import { AnyObject, Command, RawCommands } from '../types'
3
- import getMarkType from '../helpers/getMarkType'
4
- import isMarkActive from '../helpers/isMarkActive'
1
+ import { MarkType } from '@tiptap/pm/model'
2
+
3
+ import { getMarkType } from '../helpers/getMarkType'
4
+ import { isMarkActive } from '../helpers/isMarkActive'
5
+ import { RawCommands } from '../types'
5
6
 
6
7
  declare module '@tiptap/core' {
7
- interface Commands {
8
+ interface Commands<ReturnType> {
8
9
  toggleMark: {
9
10
  /**
10
11
  * Toggle a mark on and off.
11
12
  */
12
- toggleMark: (typeOrName: string | MarkType, attributes?: AnyObject) => Command,
13
+ toggleMark: (
14
+ typeOrName: string | MarkType,
15
+ attributes?: Record<string, any>,
16
+ options?: {
17
+ /**
18
+ * Removes the mark even across the current selection. Defaults to `false`.
19
+ */
20
+ extendEmptyMarkRange?: boolean
21
+ },
22
+ ) => ReturnType
13
23
  }
14
24
  }
15
25
  }
16
26
 
17
- export const toggleMark: RawCommands['toggleMark'] = (typeOrName, attributes = {}) => ({ state, commands }) => {
27
+ export const toggleMark: RawCommands['toggleMark'] = (typeOrName, attributes = {}, options = {}) => ({ state, commands }) => {
28
+ const { extendEmptyMarkRange = false } = options
18
29
  const type = getMarkType(typeOrName, state.schema)
19
30
  const isActive = isMarkActive(state, type, attributes)
20
31
 
21
32
  if (isActive) {
22
- return commands.unsetMark(type)
33
+ return commands.unsetMark(type, { extendEmptyMarkRange })
23
34
  }
24
35
 
25
36
  return commands.setMark(type, attributes)
@@ -1,15 +1,20 @@
1
- import { NodeType } from 'prosemirror-model'
2
- import { AnyObject, Command, RawCommands } from '../types'
3
- import isNodeActive from '../helpers/isNodeActive'
4
- import getNodeType from '../helpers/getNodeType'
1
+ import { NodeType } from '@tiptap/pm/model'
2
+
3
+ import { getNodeType } from '../helpers/getNodeType'
4
+ import { isNodeActive } from '../helpers/isNodeActive'
5
+ import { RawCommands } from '../types'
5
6
 
6
7
  declare module '@tiptap/core' {
7
- interface Commands {
8
+ interface Commands<ReturnType> {
8
9
  toggleNode: {
9
10
  /**
10
11
  * Toggle a node with another node.
11
12
  */
12
- toggleNode: (typeOrName: string | NodeType, toggleTypeOrName: string | NodeType, attributes?: AnyObject) => Command,
13
+ toggleNode: (
14
+ typeOrName: string | NodeType,
15
+ toggleTypeOrName: string | NodeType,
16
+ attributes?: Record<string, any>,
17
+ ) => ReturnType
13
18
  }
14
19
  }
15
20
  }