@tiptap/core 3.0.0 → 3.0.1

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 (340) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +5 -1
  3. package/dist/index.cjs +5169 -4654
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +3356 -0
  6. package/dist/index.d.ts +3356 -0
  7. package/dist/index.js +5051 -4561
  8. package/dist/index.js.map +1 -1
  9. package/dist/jsx-runtime/jsx-runtime.cjs +56 -0
  10. package/dist/jsx-runtime/jsx-runtime.cjs.map +1 -0
  11. package/dist/jsx-runtime/jsx-runtime.d.cts +22 -0
  12. package/dist/jsx-runtime/jsx-runtime.d.ts +22 -0
  13. package/dist/jsx-runtime/jsx-runtime.js +26 -0
  14. package/dist/jsx-runtime/jsx-runtime.js.map +1 -0
  15. package/jsx-dev-runtime/index.cjs +1 -0
  16. package/jsx-dev-runtime/index.d.cts +1 -0
  17. package/jsx-dev-runtime/index.d.ts +1 -0
  18. package/jsx-dev-runtime/index.js +1 -0
  19. package/jsx-runtime/index.cjs +1 -0
  20. package/jsx-runtime/index.d.cts +1 -0
  21. package/jsx-runtime/index.d.ts +1 -0
  22. package/jsx-runtime/index.js +1 -0
  23. package/package.json +30 -10
  24. package/src/CommandManager.ts +4 -11
  25. package/src/Editor.ts +273 -100
  26. package/src/EventEmitter.ts +16 -10
  27. package/src/Extendable.ts +484 -0
  28. package/src/Extension.ts +29 -493
  29. package/src/ExtensionManager.ts +100 -143
  30. package/src/InputRule.ts +28 -24
  31. package/src/Mark.ts +157 -624
  32. package/src/MarkView.ts +122 -0
  33. package/src/Node.ts +343 -807
  34. package/src/NodePos.ts +18 -9
  35. package/src/NodeView.ts +58 -35
  36. package/src/PasteRule.ts +68 -24
  37. package/src/Tracker.ts +8 -10
  38. package/src/commands/blur.ts +15 -13
  39. package/src/commands/clearContent.ts +13 -6
  40. package/src/commands/clearNodes.ts +33 -31
  41. package/src/commands/command.ts +2 -2
  42. package/src/commands/createParagraphNear.ts +6 -4
  43. package/src/commands/cut.ts +13 -11
  44. package/src/commands/deleteCurrentNode.ts +24 -22
  45. package/src/commands/deleteNode.ts +20 -18
  46. package/src/commands/deleteRange.ts +11 -9
  47. package/src/commands/deleteSelection.ts +6 -4
  48. package/src/commands/enter.ts +7 -5
  49. package/src/commands/exitCode.ts +6 -4
  50. package/src/commands/extendMarkRange.ts +16 -14
  51. package/src/commands/first.ts +3 -5
  52. package/src/commands/focus.ts +51 -53
  53. package/src/commands/forEach.ts +3 -3
  54. package/src/commands/insertContent.ts +8 -10
  55. package/src/commands/insertContentAt.ts +131 -76
  56. package/src/commands/join.ts +21 -13
  57. package/src/commands/joinItemBackward.ts +17 -19
  58. package/src/commands/joinItemForward.ts +17 -19
  59. package/src/commands/joinTextblockBackward.ts +6 -4
  60. package/src/commands/joinTextblockForward.ts +6 -4
  61. package/src/commands/keyboardShortcut.ts +30 -35
  62. package/src/commands/lift.ts +12 -10
  63. package/src/commands/liftEmptyBlock.ts +7 -5
  64. package/src/commands/liftListItem.ts +8 -6
  65. package/src/commands/newlineInCode.ts +6 -4
  66. package/src/commands/resetAttributes.ts +38 -43
  67. package/src/commands/scrollIntoView.ts +10 -8
  68. package/src/commands/selectAll.ts +15 -8
  69. package/src/commands/selectNodeBackward.ts +6 -4
  70. package/src/commands/selectNodeForward.ts +6 -4
  71. package/src/commands/selectParentNode.ts +6 -4
  72. package/src/commands/selectTextblockEnd.ts +6 -4
  73. package/src/commands/selectTextblockStart.ts +6 -4
  74. package/src/commands/setContent.ts +37 -40
  75. package/src/commands/setMark.ts +58 -60
  76. package/src/commands/setMeta.ts +10 -6
  77. package/src/commands/setNode.ts +36 -27
  78. package/src/commands/setNodeSelection.ts +12 -10
  79. package/src/commands/setTextSelection.ts +16 -14
  80. package/src/commands/sinkListItem.ts +8 -6
  81. package/src/commands/splitBlock.ts +60 -68
  82. package/src/commands/splitListItem.ts +99 -101
  83. package/src/commands/toggleList.ts +76 -74
  84. package/src/commands/toggleMark.ts +13 -11
  85. package/src/commands/toggleNode.ts +22 -11
  86. package/src/commands/toggleWrap.ts +12 -10
  87. package/src/commands/undoInputRule.ts +32 -30
  88. package/src/commands/unsetAllMarks.ts +17 -15
  89. package/src/commands/unsetMark.ts +29 -27
  90. package/src/commands/updateAttributes.ts +97 -45
  91. package/src/commands/wrapIn.ts +8 -6
  92. package/src/commands/wrapInList.ts +8 -6
  93. package/src/extensions/clipboardTextSerializer.ts +2 -4
  94. package/src/extensions/delete.ts +89 -0
  95. package/src/extensions/drop.ts +26 -0
  96. package/src/extensions/focusEvents.ts +5 -7
  97. package/src/extensions/index.ts +4 -1
  98. package/src/extensions/keymap.ts +63 -52
  99. package/src/extensions/paste.ts +25 -0
  100. package/src/extensions/tabindex.ts +1 -1
  101. package/src/helpers/combineTransactionSteps.ts +3 -6
  102. package/src/helpers/createChainableState.ts +2 -5
  103. package/src/helpers/createDocument.ts +3 -3
  104. package/src/helpers/createNodeFromContent.ts +37 -25
  105. package/src/helpers/defaultBlockAt.ts +1 -1
  106. package/src/helpers/findChildren.ts +2 -2
  107. package/src/helpers/findChildrenInRange.ts +3 -7
  108. package/src/helpers/findParentNode.ts +5 -3
  109. package/src/helpers/findParentNodeClosestToPos.ts +2 -2
  110. package/src/helpers/flattenExtensions.ts +30 -0
  111. package/src/helpers/generateHTML.ts +1 -1
  112. package/src/helpers/generateJSON.ts +1 -1
  113. package/src/helpers/generateText.ts +1 -1
  114. package/src/helpers/getAttributes.ts +3 -6
  115. package/src/helpers/getAttributesFromExtensions.ts +29 -38
  116. package/src/helpers/getChangedRanges.ts +15 -13
  117. package/src/helpers/getDebugJSON.ts +2 -2
  118. package/src/helpers/getExtensionField.ts +12 -12
  119. package/src/helpers/getHTMLFromFragment.ts +2 -1
  120. package/src/helpers/getMarkAttributes.ts +3 -6
  121. package/src/helpers/getMarkRange.ts +36 -19
  122. package/src/helpers/getMarkType.ts +2 -4
  123. package/src/helpers/getMarksBetween.ts +3 -3
  124. package/src/helpers/getNodeAtPosition.ts +2 -2
  125. package/src/helpers/getNodeAttributes.ts +3 -6
  126. package/src/helpers/getNodeType.ts +2 -4
  127. package/src/helpers/getRenderedAttributes.ts +3 -2
  128. package/src/helpers/getSchema.ts +5 -5
  129. package/src/helpers/getSchemaByResolvedExtensions.ts +49 -79
  130. package/src/helpers/getSchemaTypeByName.ts +1 -1
  131. package/src/helpers/getSchemaTypeNameByName.ts +1 -1
  132. package/src/helpers/getSplittedAttributes.ts +5 -5
  133. package/src/helpers/getText.ts +2 -2
  134. package/src/helpers/getTextBetween.ts +2 -2
  135. package/src/helpers/getTextContentFromNodes.ts +9 -12
  136. package/src/helpers/getTextSerializersFromSchema.ts +2 -2
  137. package/src/helpers/index.ts +4 -0
  138. package/src/helpers/injectExtensionAttributesToParseRule.ts +3 -3
  139. package/src/helpers/isActive.ts +2 -6
  140. package/src/helpers/isAtEndOfNode.ts +1 -1
  141. package/src/helpers/isAtStartOfNode.ts +1 -1
  142. package/src/helpers/isExtensionRulesEnabled.ts +2 -4
  143. package/src/helpers/isList.ts +2 -2
  144. package/src/helpers/isMarkActive.ts +3 -3
  145. package/src/helpers/isNodeActive.ts +3 -3
  146. package/src/helpers/isNodeEmpty.ts +56 -5
  147. package/src/helpers/posToDOMRect.ts +1 -1
  148. package/src/helpers/resolveExtensions.ts +25 -0
  149. package/src/helpers/resolveFocusPosition.ts +5 -16
  150. package/src/helpers/rewriteUnknownContent.ts +149 -0
  151. package/src/helpers/selectionToInsertionEnd.ts +2 -1
  152. package/src/helpers/sortExtensions.ts +26 -0
  153. package/src/helpers/splitExtensions.ts +4 -4
  154. package/src/index.ts +3 -7
  155. package/src/inputRules/markInputRule.ts +6 -9
  156. package/src/inputRules/nodeInputRule.ts +7 -13
  157. package/src/inputRules/textInputRule.ts +4 -6
  158. package/src/inputRules/textblockTypeInputRule.ts +7 -12
  159. package/src/inputRules/wrappingInputRule.ts +19 -24
  160. package/src/jsx-runtime.ts +64 -0
  161. package/src/pasteRules/markPasteRule.ts +6 -7
  162. package/src/pasteRules/nodePasteRule.ts +15 -11
  163. package/src/pasteRules/textPasteRule.ts +4 -6
  164. package/src/style.ts +2 -6
  165. package/src/types.ts +513 -58
  166. package/src/utilities/callOrReturn.ts +1 -1
  167. package/src/utilities/canInsertNode.ts +30 -0
  168. package/src/utilities/createStyleTag.ts +3 -1
  169. package/src/utilities/deleteProps.ts +7 -11
  170. package/src/utilities/elementFromString.ts +3 -0
  171. package/src/utilities/findDuplicates.ts +5 -2
  172. package/src/utilities/index.ts +2 -0
  173. package/src/utilities/isFunction.ts +1 -0
  174. package/src/utilities/isMacOS.ts +1 -3
  175. package/src/utilities/isiOS.ts +5 -10
  176. package/src/utilities/mergeAttributes.ts +32 -5
  177. package/src/utilities/removeDuplicates.ts +1 -3
  178. package/dist/index.umd.js +0 -5098
  179. package/dist/index.umd.js.map +0 -1
  180. package/dist/packages/core/src/CommandManager.d.ts +0 -20
  181. package/dist/packages/core/src/Editor.d.ts +0 -161
  182. package/dist/packages/core/src/EventEmitter.d.ts +0 -11
  183. package/dist/packages/core/src/Extension.d.ts +0 -343
  184. package/dist/packages/core/src/ExtensionManager.d.ts +0 -55
  185. package/dist/packages/core/src/InputRule.d.ts +0 -42
  186. package/dist/packages/core/src/Mark.d.ts +0 -451
  187. package/dist/packages/core/src/Node.d.ts +0 -611
  188. package/dist/packages/core/src/NodePos.d.ts +0 -44
  189. package/dist/packages/core/src/NodeView.d.ts +0 -31
  190. package/dist/packages/core/src/PasteRule.d.ts +0 -50
  191. package/dist/packages/core/src/Tracker.d.ts +0 -11
  192. package/dist/packages/core/src/commands/blur.d.ts +0 -13
  193. package/dist/packages/core/src/commands/clearContent.d.ts +0 -14
  194. package/dist/packages/core/src/commands/clearNodes.d.ts +0 -13
  195. package/dist/packages/core/src/commands/command.d.ts +0 -18
  196. package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -13
  197. package/dist/packages/core/src/commands/cut.d.ts +0 -20
  198. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +0 -13
  199. package/dist/packages/core/src/commands/deleteNode.d.ts +0 -15
  200. package/dist/packages/core/src/commands/deleteRange.d.ts +0 -14
  201. package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -13
  202. package/dist/packages/core/src/commands/enter.d.ts +0 -13
  203. package/dist/packages/core/src/commands/exitCode.d.ts +0 -13
  204. package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -25
  205. package/dist/packages/core/src/commands/first.d.ts +0 -14
  206. package/dist/packages/core/src/commands/focus.d.ts +0 -27
  207. package/dist/packages/core/src/commands/forEach.d.ts +0 -14
  208. package/dist/packages/core/src/commands/index.d.ts +0 -55
  209. package/dist/packages/core/src/commands/insertContent.d.ts +0 -34
  210. package/dist/packages/core/src/commands/insertContentAt.d.ts +0 -47
  211. package/dist/packages/core/src/commands/join.d.ts +0 -41
  212. package/dist/packages/core/src/commands/joinItemBackward.d.ts +0 -13
  213. package/dist/packages/core/src/commands/joinItemForward.d.ts +0 -13
  214. package/dist/packages/core/src/commands/joinTextblockBackward.d.ts +0 -12
  215. package/dist/packages/core/src/commands/joinTextblockForward.d.ts +0 -12
  216. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -14
  217. package/dist/packages/core/src/commands/lift.d.ts +0 -17
  218. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -13
  219. package/dist/packages/core/src/commands/liftListItem.d.ts +0 -15
  220. package/dist/packages/core/src/commands/newlineInCode.d.ts +0 -13
  221. package/dist/packages/core/src/commands/resetAttributes.d.ts +0 -16
  222. package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -13
  223. package/dist/packages/core/src/commands/selectAll.d.ts +0 -13
  224. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -13
  225. package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -13
  226. package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -13
  227. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +0 -13
  228. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +0 -13
  229. package/dist/packages/core/src/commands/setContent.d.ts +0 -40
  230. package/dist/packages/core/src/commands/setMark.d.ts +0 -15
  231. package/dist/packages/core/src/commands/setMeta.d.ts +0 -15
  232. package/dist/packages/core/src/commands/setNode.d.ts +0 -16
  233. package/dist/packages/core/src/commands/setNodeSelection.d.ts +0 -14
  234. package/dist/packages/core/src/commands/setTextSelection.d.ts +0 -14
  235. package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -15
  236. package/dist/packages/core/src/commands/splitBlock.d.ts +0 -17
  237. package/dist/packages/core/src/commands/splitListItem.d.ts +0 -15
  238. package/dist/packages/core/src/commands/toggleList.d.ts +0 -18
  239. package/dist/packages/core/src/commands/toggleMark.d.ts +0 -30
  240. package/dist/packages/core/src/commands/toggleNode.d.ts +0 -17
  241. package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -16
  242. package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -13
  243. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -13
  244. package/dist/packages/core/src/commands/unsetMark.d.ts +0 -25
  245. package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -24
  246. package/dist/packages/core/src/commands/wrapIn.d.ts +0 -16
  247. package/dist/packages/core/src/commands/wrapInList.d.ts +0 -16
  248. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -5
  249. package/dist/packages/core/src/extensions/commands.d.ts +0 -3
  250. package/dist/packages/core/src/extensions/editable.d.ts +0 -2
  251. package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
  252. package/dist/packages/core/src/extensions/index.d.ts +0 -6
  253. package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
  254. package/dist/packages/core/src/extensions/tabindex.d.ts +0 -2
  255. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +0 -10
  256. package/dist/packages/core/src/helpers/createChainableState.d.ts +0 -10
  257. package/dist/packages/core/src/helpers/createDocument.d.ts +0 -12
  258. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -15
  259. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +0 -7
  260. package/dist/packages/core/src/helpers/findChildren.d.ts +0 -9
  261. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +0 -10
  262. package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -16
  263. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -17
  264. package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -8
  265. package/dist/packages/core/src/helpers/generateJSON.d.ts +0 -8
  266. package/dist/packages/core/src/helpers/generateText.d.ts +0 -12
  267. package/dist/packages/core/src/helpers/getAttributes.d.ts +0 -9
  268. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
  269. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +0 -11
  270. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +0 -8
  271. package/dist/packages/core/src/helpers/getExtensionField.d.ts +0 -9
  272. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
  273. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -3
  274. package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
  275. package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
  276. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
  277. package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +0 -11
  278. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -3
  279. package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
  280. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
  281. package/dist/packages/core/src/helpers/getSchema.d.ts +0 -4
  282. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +0 -10
  283. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -8
  284. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -8
  285. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -9
  286. package/dist/packages/core/src/helpers/getText.d.ts +0 -15
  287. package/dist/packages/core/src/helpers/getTextBetween.d.ts +0 -14
  288. package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +0 -8
  289. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +0 -8
  290. package/dist/packages/core/src/helpers/index.d.ts +0 -50
  291. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
  292. package/dist/packages/core/src/helpers/isActive.d.ts +0 -2
  293. package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +0 -2
  294. package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +0 -2
  295. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +0 -2
  296. package/dist/packages/core/src/helpers/isList.d.ts +0 -2
  297. package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -3
  298. package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -3
  299. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -2
  300. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
  301. package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
  302. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +0 -2
  303. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +0 -4
  304. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
  305. package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
  306. package/dist/packages/core/src/index.d.ts +0 -24
  307. package/dist/packages/core/src/inputRules/index.d.ts +0 -5
  308. package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -13
  309. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -23
  310. package/dist/packages/core/src/inputRules/textInputRule.d.ts +0 -10
  311. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +0 -15
  312. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +0 -28
  313. package/dist/packages/core/src/pasteRules/index.d.ts +0 -3
  314. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -13
  315. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +0 -13
  316. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +0 -10
  317. package/dist/packages/core/src/style.d.ts +0 -1
  318. package/dist/packages/core/src/types.d.ts +0 -255
  319. package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -9
  320. package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
  321. package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -6
  322. package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
  323. package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +0 -1
  324. package/dist/packages/core/src/utilities/findDuplicates.d.ts +0 -1
  325. package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
  326. package/dist/packages/core/src/utilities/index.d.ts +0 -20
  327. package/dist/packages/core/src/utilities/isAndroid.d.ts +0 -1
  328. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
  329. package/dist/packages/core/src/utilities/isFunction.d.ts +0 -1
  330. package/dist/packages/core/src/utilities/isMacOS.d.ts +0 -1
  331. package/dist/packages/core/src/utilities/isNumber.d.ts +0 -1
  332. package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
  333. package/dist/packages/core/src/utilities/isRegExp.d.ts +0 -1
  334. package/dist/packages/core/src/utilities/isString.d.ts +0 -1
  335. package/dist/packages/core/src/utilities/isiOS.d.ts +0 -1
  336. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -1
  337. package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -1
  338. package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
  339. package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -8
  340. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +0 -8
@@ -1,6 +1,6 @@
1
1
  import { TextSelection } from '@tiptap/pm/state'
2
2
 
3
- import { RawCommands } from '../types.js'
3
+ import type { RawCommands } from '../types.js'
4
4
 
5
5
  declare module '@tiptap/core' {
6
6
  interface Commands<ReturnType> {
@@ -13,22 +13,24 @@ declare module '@tiptap/core' {
13
13
  * @param targetPos The position to insert the content at.
14
14
  * @example editor.commands.cut({ from: 1, to: 3 }, 5)
15
15
  */
16
- cut: ({ from, to }: { from: number, to: number }, targetPos: number) => ReturnType,
16
+ cut: ({ from, to }: { from: number; to: number }, targetPos: number) => ReturnType
17
17
  }
18
18
  }
19
19
  }
20
20
 
21
- export const cut: RawCommands['cut'] = (originRange, targetPos) => ({ editor, tr }) => {
22
- const { state } = editor
21
+ export const cut: RawCommands['cut'] =
22
+ (originRange, targetPos) =>
23
+ ({ editor, tr }) => {
24
+ const { state } = editor
23
25
 
24
- const contentSlice = state.doc.slice(originRange.from, originRange.to)
26
+ const contentSlice = state.doc.slice(originRange.from, originRange.to)
25
27
 
26
- tr.deleteRange(originRange.from, originRange.to)
27
- const newPos = tr.mapping.map(targetPos)
28
+ tr.deleteRange(originRange.from, originRange.to)
29
+ const newPos = tr.mapping.map(targetPos)
28
30
 
29
- tr.insert(newPos, contentSlice.content)
31
+ tr.insert(newPos, contentSlice.content)
30
32
 
31
- tr.setSelection(new TextSelection(tr.doc.resolve(newPos - 1)))
33
+ tr.setSelection(new TextSelection(tr.doc.resolve(Math.max(newPos - 1, 0))))
32
34
 
33
- return true
34
- }
35
+ return true
36
+ }
@@ -1,4 +1,4 @@
1
- import { RawCommands } from '../types.js'
1
+ import type { RawCommands } from '../types.js'
2
2
 
3
3
  declare module '@tiptap/core' {
4
4
  interface Commands<ReturnType> {
@@ -7,36 +7,38 @@ declare module '@tiptap/core' {
7
7
  * Delete the node that currently has the selection anchor.
8
8
  * @example editor.commands.deleteCurrentNode()
9
9
  */
10
- deleteCurrentNode: () => ReturnType,
10
+ deleteCurrentNode: () => ReturnType
11
11
  }
12
12
  }
13
13
  }
14
14
 
15
- export const deleteCurrentNode: RawCommands['deleteCurrentNode'] = () => ({ tr, dispatch }) => {
16
- const { selection } = tr
17
- const currentNode = selection.$anchor.node()
15
+ export const deleteCurrentNode: RawCommands['deleteCurrentNode'] =
16
+ () =>
17
+ ({ tr, dispatch }) => {
18
+ const { selection } = tr
19
+ const currentNode = selection.$anchor.node()
18
20
 
19
- // if there is content inside the current node, break out of this command
20
- if (currentNode.content.size > 0) {
21
- return false
22
- }
21
+ // if there is content inside the current node, break out of this command
22
+ if (currentNode.content.size > 0) {
23
+ return false
24
+ }
23
25
 
24
- const $pos = tr.selection.$anchor
26
+ const $pos = tr.selection.$anchor
25
27
 
26
- for (let depth = $pos.depth; depth > 0; depth -= 1) {
27
- const node = $pos.node(depth)
28
+ for (let depth = $pos.depth; depth > 0; depth -= 1) {
29
+ const node = $pos.node(depth)
28
30
 
29
- if (node.type === currentNode.type) {
30
- if (dispatch) {
31
- const from = $pos.before(depth)
32
- const to = $pos.after(depth)
31
+ if (node.type === currentNode.type) {
32
+ if (dispatch) {
33
+ const from = $pos.before(depth)
34
+ const to = $pos.after(depth)
33
35
 
34
- tr.delete(from, to).scrollIntoView()
35
- }
36
+ tr.delete(from, to).scrollIntoView()
37
+ }
36
38
 
37
- return true
39
+ return true
40
+ }
38
41
  }
39
- }
40
42
 
41
- return false
42
- }
43
+ return false
44
+ }
@@ -1,7 +1,7 @@
1
- import { NodeType } from '@tiptap/pm/model'
1
+ import type { NodeType } from '@tiptap/pm/model'
2
2
 
3
3
  import { getNodeType } from '../helpers/getNodeType.js'
4
- import { RawCommands } from '../types.js'
4
+ import type { RawCommands } from '../types.js'
5
5
 
6
6
  declare module '@tiptap/core' {
7
7
  interface Commands<ReturnType> {
@@ -11,29 +11,31 @@ declare module '@tiptap/core' {
11
11
  * @param typeOrName The type or name of the node.
12
12
  * @example editor.commands.deleteNode('paragraph')
13
13
  */
14
- deleteNode: (typeOrName: string | NodeType) => ReturnType,
14
+ deleteNode: (typeOrName: string | NodeType) => ReturnType
15
15
  }
16
16
  }
17
17
  }
18
18
 
19
- export const deleteNode: RawCommands['deleteNode'] = typeOrName => ({ tr, state, dispatch }) => {
20
- const type = getNodeType(typeOrName, state.schema)
21
- const $pos = tr.selection.$anchor
19
+ export const deleteNode: RawCommands['deleteNode'] =
20
+ typeOrName =>
21
+ ({ tr, state, dispatch }) => {
22
+ const type = getNodeType(typeOrName, state.schema)
23
+ const $pos = tr.selection.$anchor
22
24
 
23
- for (let depth = $pos.depth; depth > 0; depth -= 1) {
24
- const node = $pos.node(depth)
25
+ for (let depth = $pos.depth; depth > 0; depth -= 1) {
26
+ const node = $pos.node(depth)
25
27
 
26
- if (node.type === type) {
27
- if (dispatch) {
28
- const from = $pos.before(depth)
29
- const to = $pos.after(depth)
28
+ if (node.type === type) {
29
+ if (dispatch) {
30
+ const from = $pos.before(depth)
31
+ const to = $pos.after(depth)
30
32
 
31
- tr.delete(from, to).scrollIntoView()
32
- }
33
+ tr.delete(from, to).scrollIntoView()
34
+ }
33
35
 
34
- return true
36
+ return true
37
+ }
35
38
  }
36
- }
37
39
 
38
- return false
39
- }
40
+ return false
41
+ }
@@ -1,4 +1,4 @@
1
- import { Range, RawCommands } from '../types.js'
1
+ import type { Range, RawCommands } from '../types.js'
2
2
 
3
3
  declare module '@tiptap/core' {
4
4
  interface Commands<ReturnType> {
@@ -8,17 +8,19 @@ declare module '@tiptap/core' {
8
8
  * @param range The range to delete.
9
9
  * @example editor.commands.deleteRange({ from: 1, to: 3 })
10
10
  */
11
- deleteRange: (range: Range) => ReturnType,
11
+ deleteRange: (range: Range) => ReturnType
12
12
  }
13
13
  }
14
14
  }
15
15
 
16
- export const deleteRange: RawCommands['deleteRange'] = range => ({ tr, dispatch }) => {
17
- const { from, to } = range
16
+ export const deleteRange: RawCommands['deleteRange'] =
17
+ range =>
18
+ ({ tr, dispatch }) => {
19
+ const { from, to } = range
18
20
 
19
- if (dispatch) {
20
- tr.delete(from, to)
21
- }
21
+ if (dispatch) {
22
+ tr.delete(from, to)
23
+ }
22
24
 
23
- return true
24
- }
25
+ return true
26
+ }
@@ -1,6 +1,6 @@
1
1
  import { deleteSelection as originalDeleteSelection } from '@tiptap/pm/commands'
2
2
 
3
- import { RawCommands } from '../types.js'
3
+ import type { RawCommands } from '../types.js'
4
4
 
5
5
  declare module '@tiptap/core' {
6
6
  interface Commands<ReturnType> {
@@ -14,6 +14,8 @@ declare module '@tiptap/core' {
14
14
  }
15
15
  }
16
16
 
17
- export const deleteSelection: RawCommands['deleteSelection'] = () => ({ state, dispatch }) => {
18
- return originalDeleteSelection(state, dispatch)
19
- }
17
+ export const deleteSelection: RawCommands['deleteSelection'] =
18
+ () =>
19
+ ({ state, dispatch }) => {
20
+ return originalDeleteSelection(state, dispatch)
21
+ }
@@ -1,4 +1,4 @@
1
- import { RawCommands } from '../types.js'
1
+ import type { RawCommands } from '../types.js'
2
2
 
3
3
  declare module '@tiptap/core' {
4
4
  interface Commands<ReturnType> {
@@ -7,11 +7,13 @@ declare module '@tiptap/core' {
7
7
  * Trigger enter.
8
8
  * @example editor.commands.enter()
9
9
  */
10
- enter: () => ReturnType,
10
+ enter: () => ReturnType
11
11
  }
12
12
  }
13
13
  }
14
14
 
15
- export const enter: RawCommands['enter'] = () => ({ commands }) => {
16
- return commands.keyboardShortcut('Enter')
17
- }
15
+ export const enter: RawCommands['enter'] =
16
+ () =>
17
+ ({ commands }) => {
18
+ return commands.keyboardShortcut('Enter')
19
+ }
@@ -1,6 +1,6 @@
1
1
  import { exitCode as originalExitCode } from '@tiptap/pm/commands'
2
2
 
3
- import { RawCommands } from '../types.js'
3
+ import type { RawCommands } from '../types.js'
4
4
 
5
5
  declare module '@tiptap/core' {
6
6
  interface Commands<ReturnType> {
@@ -14,6 +14,8 @@ declare module '@tiptap/core' {
14
14
  }
15
15
  }
16
16
 
17
- export const exitCode: RawCommands['exitCode'] = () => ({ state, dispatch }) => {
18
- return originalExitCode(state, dispatch)
19
- }
17
+ export const exitCode: RawCommands['exitCode'] =
18
+ () =>
19
+ ({ state, dispatch }) => {
20
+ return originalExitCode(state, dispatch)
21
+ }
@@ -1,9 +1,9 @@
1
- import { MarkType } from '@tiptap/pm/model'
1
+ import type { MarkType } from '@tiptap/pm/model'
2
2
  import { TextSelection } from '@tiptap/pm/state'
3
3
 
4
4
  import { getMarkRange } from '../helpers/getMarkRange.js'
5
5
  import { getMarkType } from '../helpers/getMarkType.js'
6
- import { RawCommands } from '../types.js'
6
+ import type { RawCommands } from '../types.js'
7
7
 
8
8
  declare module '@tiptap/core' {
9
9
  interface Commands<ReturnType> {
@@ -30,20 +30,22 @@ declare module '@tiptap/core' {
30
30
  }
31
31
  }
32
32
 
33
- export const extendMarkRange: RawCommands['extendMarkRange'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {
34
- const type = getMarkType(typeOrName, state.schema)
35
- const { doc, selection } = tr
36
- const { $from, from, to } = selection
33
+ export const extendMarkRange: RawCommands['extendMarkRange'] =
34
+ (typeOrName, attributes = {}) =>
35
+ ({ tr, state, dispatch }) => {
36
+ const type = getMarkType(typeOrName, state.schema)
37
+ const { doc, selection } = tr
38
+ const { $from, from, to } = selection
37
39
 
38
- if (dispatch) {
39
- const range = getMarkRange($from, type, attributes)
40
+ if (dispatch) {
41
+ const range = getMarkRange($from, type, attributes)
40
42
 
41
- if (range && range.from <= from && range.to >= to) {
42
- const newSelection = TextSelection.create(doc, range.from, range.to)
43
+ if (range && range.from <= from && range.to >= to) {
44
+ const newSelection = TextSelection.create(doc, range.from, range.to)
43
45
 
44
- tr.setSelection(newSelection)
46
+ tr.setSelection(newSelection)
47
+ }
45
48
  }
46
- }
47
49
 
48
- return true
49
- }
50
+ return true
51
+ }
@@ -1,4 +1,4 @@
1
- import { Command, CommandProps, RawCommands } from '../types.js'
1
+ import type { Command, CommandProps, RawCommands } from '../types.js'
2
2
 
3
3
  declare module '@tiptap/core' {
4
4
  interface Commands<ReturnType> {
@@ -8,15 +8,13 @@ declare module '@tiptap/core' {
8
8
  * @param commands The commands to run.
9
9
  * @example editor.commands.first([command1, command2])
10
10
  */
11
- first: (commands: Command[] | ((props: CommandProps) => Command[])) => ReturnType,
11
+ first: (commands: Command[] | ((props: CommandProps) => Command[])) => ReturnType
12
12
  }
13
13
  }
14
14
  }
15
15
 
16
16
  export const first: RawCommands['first'] = commands => props => {
17
- const items = typeof commands === 'function'
18
- ? commands(props)
19
- : commands
17
+ const items = typeof commands === 'function' ? commands(props) : commands
20
18
 
21
19
  for (let i = 0; i < items.length; i += 1) {
22
20
  if (items[i](props)) {
@@ -1,6 +1,7 @@
1
1
  import { isTextSelection } from '../helpers/isTextSelection.js'
2
2
  import { resolveFocusPosition } from '../helpers/resolveFocusPosition.js'
3
- import { FocusPosition, RawCommands } from '../types.js'
3
+ import type { FocusPosition, RawCommands } from '../types.js'
4
+ import { isAndroid } from '../utilities/isAndroid.js'
4
5
  import { isiOS } from '../utilities/isiOS.js'
5
6
 
6
7
  declare module '@tiptap/core' {
@@ -24,72 +25,69 @@ declare module '@tiptap/core' {
24
25
  * @default { scrollIntoView: true }
25
26
  */
26
27
  options?: {
27
- scrollIntoView?: boolean,
28
+ scrollIntoView?: boolean
28
29
  },
29
- ) => ReturnType,
30
+ ) => ReturnType
30
31
  }
31
32
  }
32
33
  }
33
34
 
34
- export const focus: RawCommands['focus'] = (position = null, options = {}) => ({
35
- editor,
36
- view,
37
- tr,
38
- dispatch,
39
- }) => {
40
- options = {
41
- scrollIntoView: true,
42
- ...options,
43
- }
44
-
45
- const delayedFocus = () => {
46
- // focus within `requestAnimationFrame` breaks focus on iOS
47
- // so we have to call this
48
- if (isiOS()) {
49
- (view.dom as HTMLElement).focus()
35
+ export const focus: RawCommands['focus'] =
36
+ (position = null, options = {}) =>
37
+ ({ editor, view, tr, dispatch }) => {
38
+ options = {
39
+ scrollIntoView: true,
40
+ ...options,
50
41
  }
51
42
 
52
- // For React we have to focus asynchronously. Otherwise wild things happen.
53
- // see: https://github.com/ueberdosis/tiptap/issues/1520
54
- requestAnimationFrame(() => {
55
- if (!editor.isDestroyed) {
56
- view.focus()
57
-
58
- if (options?.scrollIntoView) {
59
- editor.commands.scrollIntoView()
60
- }
43
+ const delayedFocus = () => {
44
+ // focus within `requestAnimationFrame` breaks focus on iOS and Android
45
+ // so we have to call this
46
+ if (isiOS() || isAndroid()) {
47
+ ;(view.dom as HTMLElement).focus()
61
48
  }
62
- })
63
- }
64
49
 
65
- if ((view.hasFocus() && position === null) || position === false) {
66
- return true
67
- }
50
+ // For React we have to focus asynchronously. Otherwise wild things happen.
51
+ // see: https://github.com/ueberdosis/tiptap/issues/1520
52
+ requestAnimationFrame(() => {
53
+ if (!editor.isDestroyed) {
54
+ view.focus()
68
55
 
69
- // we don’t try to resolve a NodeSelection or CellSelection
70
- if (dispatch && position === null && !isTextSelection(editor.state.selection)) {
71
- delayedFocus()
72
- return true
73
- }
56
+ if (options?.scrollIntoView) {
57
+ editor.commands.scrollIntoView()
58
+ }
59
+ }
60
+ })
61
+ }
74
62
 
75
- // pass through tr.doc instead of editor.state.doc
76
- // since transactions could change the editors state before this command has been run
77
- const selection = resolveFocusPosition(tr.doc, position) || editor.state.selection
78
- const isSameSelection = editor.state.selection.eq(selection)
63
+ if ((view.hasFocus() && position === null) || position === false) {
64
+ return true
65
+ }
79
66
 
80
- if (dispatch) {
81
- if (!isSameSelection) {
82
- tr.setSelection(selection)
67
+ // we don’t try to resolve a NodeSelection or CellSelection
68
+ if (dispatch && position === null && !isTextSelection(editor.state.selection)) {
69
+ delayedFocus()
70
+ return true
83
71
  }
84
72
 
85
- // `tr.setSelection` resets the stored marks
86
- // so we’ll restore them if the selection is the same as before
87
- if (isSameSelection && tr.storedMarks) {
88
- tr.setStoredMarks(tr.storedMarks)
73
+ // pass through tr.doc instead of editor.state.doc
74
+ // since transactions could change the editors state before this command has been run
75
+ const selection = resolveFocusPosition(tr.doc, position) || editor.state.selection
76
+ const isSameSelection = editor.state.selection.eq(selection)
77
+
78
+ if (dispatch) {
79
+ if (!isSameSelection) {
80
+ tr.setSelection(selection)
81
+ }
82
+
83
+ // `tr.setSelection` resets the stored marks
84
+ // so we’ll restore them if the selection is the same as before
85
+ if (isSameSelection && tr.storedMarks) {
86
+ tr.setStoredMarks(tr.storedMarks)
87
+ }
88
+
89
+ delayedFocus()
89
90
  }
90
91
 
91
- delayedFocus()
92
+ return true
92
93
  }
93
-
94
- return true
95
- }
@@ -1,4 +1,4 @@
1
- import { CommandProps, RawCommands } from '../types.js'
1
+ import type { CommandProps, RawCommands } from '../types.js'
2
2
 
3
3
  declare module '@tiptap/core' {
4
4
  interface Commands<ReturnType> {
@@ -11,10 +11,10 @@ declare module '@tiptap/core' {
11
11
  fn: (
12
12
  item: T,
13
13
  props: CommandProps & {
14
- index: number,
14
+ index: number
15
15
  },
16
16
  ) => boolean,
17
- ) => ReturnType,
17
+ ) => ReturnType
18
18
  }
19
19
  }
20
20
  }
@@ -1,6 +1,6 @@
1
- import { ParseOptions } from '@tiptap/pm/model'
1
+ import type { Fragment, Node as ProseMirrorNode, ParseOptions } from '@tiptap/pm/model'
2
2
 
3
- import { Content, RawCommands } from '../types.js'
3
+ import type { Content, RawCommands } from '../types.js'
4
4
 
5
5
  declare module '@tiptap/core' {
6
6
  interface Commands<ReturnType> {
@@ -14,7 +14,7 @@ declare module '@tiptap/core' {
14
14
  /**
15
15
  * The ProseMirror content to insert.
16
16
  */
17
- value: Content,
17
+ value: Content | ProseMirrorNode | Fragment,
18
18
 
19
19
  /**
20
20
  * Optional options
@@ -37,10 +37,8 @@ declare module '@tiptap/core' {
37
37
  }
38
38
  }
39
39
 
40
- export const insertContent: RawCommands['insertContent'] = (value, options) => ({ tr, commands }) => {
41
- return commands.insertContentAt(
42
- { from: tr.selection.from, to: tr.selection.to },
43
- value,
44
- options,
45
- )
46
- }
40
+ export const insertContent: RawCommands['insertContent'] =
41
+ (value, options) =>
42
+ ({ tr, commands }) => {
43
+ return commands.insertContentAt({ from: tr.selection.from, to: tr.selection.to }, value, options)
44
+ }