@tiptap/core 2.11.7 → 3.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +5 -1
  3. package/dist/index.cjs +5046 -5070
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +3326 -0
  6. package/dist/index.d.ts +3326 -25
  7. package/dist/index.js +4930 -4976
  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-runtime/index.cjs +1 -0
  16. package/jsx-runtime/index.d.cts +1 -0
  17. package/jsx-runtime/index.d.ts +1 -0
  18. package/jsx-runtime/index.js +1 -0
  19. package/package.json +28 -9
  20. package/src/CommandManager.ts +4 -11
  21. package/src/Editor.ts +219 -103
  22. package/src/EventEmitter.ts +7 -10
  23. package/src/Extendable.ts +484 -0
  24. package/src/Extension.ts +17 -492
  25. package/src/ExtensionManager.ts +88 -140
  26. package/src/InputRule.ts +40 -51
  27. package/src/Mark.ts +146 -623
  28. package/src/MarkView.ts +66 -0
  29. package/src/Node.ts +332 -825
  30. package/src/NodePos.ts +3 -5
  31. package/src/NodeView.ts +14 -26
  32. package/src/PasteRule.ts +46 -56
  33. package/src/Tracker.ts +8 -10
  34. package/src/commands/blur.ts +15 -13
  35. package/src/commands/clearContent.ts +13 -6
  36. package/src/commands/clearNodes.ts +33 -31
  37. package/src/commands/command.ts +2 -2
  38. package/src/commands/createParagraphNear.ts +6 -4
  39. package/src/commands/cut.ts +13 -11
  40. package/src/commands/deleteCurrentNode.ts +24 -22
  41. package/src/commands/deleteNode.ts +20 -18
  42. package/src/commands/deleteRange.ts +11 -9
  43. package/src/commands/deleteSelection.ts +6 -4
  44. package/src/commands/enter.ts +7 -5
  45. package/src/commands/exitCode.ts +6 -4
  46. package/src/commands/extendMarkRange.ts +16 -14
  47. package/src/commands/first.ts +3 -5
  48. package/src/commands/focus.ts +50 -53
  49. package/src/commands/forEach.ts +3 -3
  50. package/src/commands/insertContent.ts +14 -16
  51. package/src/commands/insertContentAt.ts +111 -95
  52. package/src/commands/join.ts +21 -13
  53. package/src/commands/joinItemBackward.ts +17 -19
  54. package/src/commands/joinItemForward.ts +17 -19
  55. package/src/commands/joinTextblockBackward.ts +6 -4
  56. package/src/commands/joinTextblockForward.ts +6 -4
  57. package/src/commands/keyboardShortcut.ts +30 -35
  58. package/src/commands/lift.ts +12 -10
  59. package/src/commands/liftEmptyBlock.ts +7 -5
  60. package/src/commands/liftListItem.ts +8 -6
  61. package/src/commands/newlineInCode.ts +6 -4
  62. package/src/commands/resetAttributes.ts +38 -43
  63. package/src/commands/scrollIntoView.ts +10 -8
  64. package/src/commands/selectAll.ts +11 -9
  65. package/src/commands/selectNodeBackward.ts +6 -4
  66. package/src/commands/selectNodeForward.ts +6 -4
  67. package/src/commands/selectParentNode.ts +6 -4
  68. package/src/commands/selectTextblockEnd.ts +6 -4
  69. package/src/commands/selectTextblockStart.ts +6 -4
  70. package/src/commands/setContent.ts +39 -38
  71. package/src/commands/setMark.ts +58 -60
  72. package/src/commands/setMeta.ts +8 -6
  73. package/src/commands/setNode.ts +34 -32
  74. package/src/commands/setNodeSelection.ts +12 -10
  75. package/src/commands/setTextSelection.ts +16 -14
  76. package/src/commands/sinkListItem.ts +8 -6
  77. package/src/commands/splitBlock.ts +70 -78
  78. package/src/commands/splitListItem.ts +95 -107
  79. package/src/commands/toggleList.ts +76 -74
  80. package/src/commands/toggleMark.ts +13 -11
  81. package/src/commands/toggleNode.ts +20 -18
  82. package/src/commands/toggleWrap.ts +12 -10
  83. package/src/commands/undoInputRule.ts +32 -30
  84. package/src/commands/unsetAllMarks.ts +17 -15
  85. package/src/commands/unsetMark.ts +29 -27
  86. package/src/commands/updateAttributes.ts +94 -102
  87. package/src/commands/wrapIn.ts +8 -6
  88. package/src/commands/wrapInList.ts +8 -6
  89. package/src/extensions/clipboardTextSerializer.ts +2 -4
  90. package/src/extensions/delete.ts +89 -0
  91. package/src/extensions/focusEvents.ts +2 -6
  92. package/src/extensions/index.ts +1 -0
  93. package/src/extensions/keymap.ts +54 -50
  94. package/src/extensions/paste.ts +0 -1
  95. package/src/extensions/tabindex.ts +1 -1
  96. package/src/helpers/combineTransactionSteps.ts +3 -6
  97. package/src/helpers/createChainableState.ts +2 -5
  98. package/src/helpers/createDocument.ts +2 -4
  99. package/src/helpers/createNodeFromContent.ts +7 -12
  100. package/src/helpers/defaultBlockAt.ts +1 -1
  101. package/src/helpers/findChildren.ts +2 -2
  102. package/src/helpers/findChildrenInRange.ts +3 -7
  103. package/src/helpers/findParentNode.ts +5 -3
  104. package/src/helpers/findParentNodeClosestToPos.ts +2 -2
  105. package/src/helpers/flattenExtensions.ts +30 -0
  106. package/src/helpers/generateHTML.ts +1 -1
  107. package/src/helpers/generateJSON.ts +1 -1
  108. package/src/helpers/generateText.ts +1 -1
  109. package/src/helpers/getAttributes.ts +3 -6
  110. package/src/helpers/getAttributesFromExtensions.ts +29 -38
  111. package/src/helpers/getChangedRanges.ts +15 -13
  112. package/src/helpers/getDebugJSON.ts +2 -2
  113. package/src/helpers/getExtensionField.ts +12 -12
  114. package/src/helpers/getHTMLFromFragment.ts +2 -1
  115. package/src/helpers/getMarkAttributes.ts +3 -6
  116. package/src/helpers/getMarkRange.ts +7 -17
  117. package/src/helpers/getMarkType.ts +2 -4
  118. package/src/helpers/getMarksBetween.ts +2 -2
  119. package/src/helpers/getNodeAtPosition.ts +2 -2
  120. package/src/helpers/getNodeAttributes.ts +3 -6
  121. package/src/helpers/getNodeType.ts +2 -4
  122. package/src/helpers/getRenderedAttributes.ts +3 -5
  123. package/src/helpers/getSchema.ts +5 -5
  124. package/src/helpers/getSchemaByResolvedExtensions.ts +47 -78
  125. package/src/helpers/getSchemaTypeByName.ts +1 -1
  126. package/src/helpers/getSchemaTypeNameByName.ts +1 -1
  127. package/src/helpers/getSplittedAttributes.ts +5 -5
  128. package/src/helpers/getText.ts +2 -2
  129. package/src/helpers/getTextBetween.ts +2 -2
  130. package/src/helpers/getTextContentFromNodes.ts +9 -12
  131. package/src/helpers/getTextSerializersFromSchema.ts +2 -2
  132. package/src/helpers/index.ts +3 -0
  133. package/src/helpers/injectExtensionAttributesToParseRule.ts +3 -3
  134. package/src/helpers/isActive.ts +2 -6
  135. package/src/helpers/isAtEndOfNode.ts +1 -1
  136. package/src/helpers/isAtStartOfNode.ts +1 -1
  137. package/src/helpers/isExtensionRulesEnabled.ts +2 -4
  138. package/src/helpers/isList.ts +2 -2
  139. package/src/helpers/isMarkActive.ts +3 -3
  140. package/src/helpers/isNodeActive.ts +3 -3
  141. package/src/helpers/isNodeEmpty.ts +3 -3
  142. package/src/helpers/posToDOMRect.ts +1 -1
  143. package/src/helpers/resolveExtensions.ts +25 -0
  144. package/src/helpers/resolveFocusPosition.ts +5 -16
  145. package/src/helpers/rewriteUnknownContent.ts +25 -24
  146. package/src/helpers/selectionToInsertionEnd.ts +2 -1
  147. package/src/helpers/sortExtensions.ts +26 -0
  148. package/src/helpers/splitExtensions.ts +4 -4
  149. package/src/index.ts +3 -7
  150. package/src/inputRules/markInputRule.ts +5 -8
  151. package/src/inputRules/nodeInputRule.ts +6 -12
  152. package/src/inputRules/textInputRule.ts +3 -5
  153. package/src/inputRules/textblockTypeInputRule.ts +6 -11
  154. package/src/inputRules/wrappingInputRule.ts +18 -23
  155. package/src/jsx-runtime.ts +64 -0
  156. package/src/pasteRules/markPasteRule.ts +5 -6
  157. package/src/pasteRules/nodePasteRule.ts +6 -11
  158. package/src/pasteRules/textPasteRule.ts +3 -5
  159. package/src/style.ts +0 -4
  160. package/src/types.ts +534 -179
  161. package/src/utilities/callOrReturn.ts +1 -1
  162. package/src/utilities/createStyleTag.ts +3 -1
  163. package/src/utilities/deleteProps.ts +7 -11
  164. package/src/utilities/elementFromString.ts +3 -0
  165. package/src/utilities/findDuplicates.ts +4 -1
  166. package/src/utilities/index.ts +1 -0
  167. package/src/utilities/isMacOS.ts +1 -3
  168. package/src/utilities/isiOS.ts +5 -10
  169. package/src/utilities/mergeAttributes.ts +16 -6
  170. package/src/utilities/removeDuplicates.ts +1 -3
  171. package/dist/CommandManager.d.ts +0 -21
  172. package/dist/CommandManager.d.ts.map +0 -1
  173. package/dist/Editor.d.ts +0 -166
  174. package/dist/Editor.d.ts.map +0 -1
  175. package/dist/EventEmitter.d.ts +0 -13
  176. package/dist/EventEmitter.d.ts.map +0 -1
  177. package/dist/Extension.d.ts +0 -345
  178. package/dist/Extension.d.ts.map +0 -1
  179. package/dist/ExtensionManager.d.ts +0 -57
  180. package/dist/ExtensionManager.d.ts.map +0 -1
  181. package/dist/InputRule.d.ts +0 -43
  182. package/dist/InputRule.d.ts.map +0 -1
  183. package/dist/Mark.d.ts +0 -453
  184. package/dist/Mark.d.ts.map +0 -1
  185. package/dist/Node.d.ts +0 -629
  186. package/dist/Node.d.ts.map +0 -1
  187. package/dist/NodePos.d.ts +0 -45
  188. package/dist/NodePos.d.ts.map +0 -1
  189. package/dist/NodeView.d.ts +0 -41
  190. package/dist/NodeView.d.ts.map +0 -1
  191. package/dist/PasteRule.d.ts +0 -51
  192. package/dist/PasteRule.d.ts.map +0 -1
  193. package/dist/Tracker.d.ts +0 -12
  194. package/dist/Tracker.d.ts.map +0 -1
  195. package/dist/commands/blur.d.ts +0 -14
  196. package/dist/commands/blur.d.ts.map +0 -1
  197. package/dist/commands/clearContent.d.ts +0 -15
  198. package/dist/commands/clearContent.d.ts.map +0 -1
  199. package/dist/commands/clearNodes.d.ts +0 -14
  200. package/dist/commands/clearNodes.d.ts.map +0 -1
  201. package/dist/commands/command.d.ts +0 -19
  202. package/dist/commands/command.d.ts.map +0 -1
  203. package/dist/commands/createParagraphNear.d.ts +0 -14
  204. package/dist/commands/createParagraphNear.d.ts.map +0 -1
  205. package/dist/commands/cut.d.ts +0 -21
  206. package/dist/commands/cut.d.ts.map +0 -1
  207. package/dist/commands/deleteCurrentNode.d.ts +0 -14
  208. package/dist/commands/deleteCurrentNode.d.ts.map +0 -1
  209. package/dist/commands/deleteNode.d.ts +0 -16
  210. package/dist/commands/deleteNode.d.ts.map +0 -1
  211. package/dist/commands/deleteRange.d.ts +0 -15
  212. package/dist/commands/deleteRange.d.ts.map +0 -1
  213. package/dist/commands/deleteSelection.d.ts +0 -14
  214. package/dist/commands/deleteSelection.d.ts.map +0 -1
  215. package/dist/commands/enter.d.ts +0 -14
  216. package/dist/commands/enter.d.ts.map +0 -1
  217. package/dist/commands/exitCode.d.ts +0 -14
  218. package/dist/commands/exitCode.d.ts.map +0 -1
  219. package/dist/commands/extendMarkRange.d.ts +0 -26
  220. package/dist/commands/extendMarkRange.d.ts.map +0 -1
  221. package/dist/commands/first.d.ts +0 -15
  222. package/dist/commands/first.d.ts.map +0 -1
  223. package/dist/commands/focus.d.ts +0 -28
  224. package/dist/commands/focus.d.ts.map +0 -1
  225. package/dist/commands/forEach.d.ts +0 -15
  226. package/dist/commands/forEach.d.ts.map +0 -1
  227. package/dist/commands/index.d.ts +0 -56
  228. package/dist/commands/index.d.ts.map +0 -1
  229. package/dist/commands/insertContent.d.ts +0 -35
  230. package/dist/commands/insertContent.d.ts.map +0 -1
  231. package/dist/commands/insertContentAt.d.ts +0 -48
  232. package/dist/commands/insertContentAt.d.ts.map +0 -1
  233. package/dist/commands/join.d.ts +0 -42
  234. package/dist/commands/join.d.ts.map +0 -1
  235. package/dist/commands/joinItemBackward.d.ts +0 -14
  236. package/dist/commands/joinItemBackward.d.ts.map +0 -1
  237. package/dist/commands/joinItemForward.d.ts +0 -14
  238. package/dist/commands/joinItemForward.d.ts.map +0 -1
  239. package/dist/commands/joinTextblockBackward.d.ts +0 -13
  240. package/dist/commands/joinTextblockBackward.d.ts.map +0 -1
  241. package/dist/commands/joinTextblockForward.d.ts +0 -13
  242. package/dist/commands/joinTextblockForward.d.ts.map +0 -1
  243. package/dist/commands/keyboardShortcut.d.ts +0 -15
  244. package/dist/commands/keyboardShortcut.d.ts.map +0 -1
  245. package/dist/commands/lift.d.ts +0 -18
  246. package/dist/commands/lift.d.ts.map +0 -1
  247. package/dist/commands/liftEmptyBlock.d.ts +0 -14
  248. package/dist/commands/liftEmptyBlock.d.ts.map +0 -1
  249. package/dist/commands/liftListItem.d.ts +0 -16
  250. package/dist/commands/liftListItem.d.ts.map +0 -1
  251. package/dist/commands/newlineInCode.d.ts +0 -14
  252. package/dist/commands/newlineInCode.d.ts.map +0 -1
  253. package/dist/commands/resetAttributes.d.ts +0 -17
  254. package/dist/commands/resetAttributes.d.ts.map +0 -1
  255. package/dist/commands/scrollIntoView.d.ts +0 -14
  256. package/dist/commands/scrollIntoView.d.ts.map +0 -1
  257. package/dist/commands/selectAll.d.ts +0 -14
  258. package/dist/commands/selectAll.d.ts.map +0 -1
  259. package/dist/commands/selectNodeBackward.d.ts +0 -14
  260. package/dist/commands/selectNodeBackward.d.ts.map +0 -1
  261. package/dist/commands/selectNodeForward.d.ts +0 -14
  262. package/dist/commands/selectNodeForward.d.ts.map +0 -1
  263. package/dist/commands/selectParentNode.d.ts +0 -14
  264. package/dist/commands/selectParentNode.d.ts.map +0 -1
  265. package/dist/commands/selectTextblockEnd.d.ts +0 -14
  266. package/dist/commands/selectTextblockEnd.d.ts.map +0 -1
  267. package/dist/commands/selectTextblockStart.d.ts +0 -14
  268. package/dist/commands/selectTextblockStart.d.ts.map +0 -1
  269. package/dist/commands/setContent.d.ts +0 -41
  270. package/dist/commands/setContent.d.ts.map +0 -1
  271. package/dist/commands/setMark.d.ts +0 -16
  272. package/dist/commands/setMark.d.ts.map +0 -1
  273. package/dist/commands/setMeta.d.ts +0 -17
  274. package/dist/commands/setMeta.d.ts.map +0 -1
  275. package/dist/commands/setNode.d.ts +0 -17
  276. package/dist/commands/setNode.d.ts.map +0 -1
  277. package/dist/commands/setNodeSelection.d.ts +0 -15
  278. package/dist/commands/setNodeSelection.d.ts.map +0 -1
  279. package/dist/commands/setTextSelection.d.ts +0 -15
  280. package/dist/commands/setTextSelection.d.ts.map +0 -1
  281. package/dist/commands/sinkListItem.d.ts +0 -16
  282. package/dist/commands/sinkListItem.d.ts.map +0 -1
  283. package/dist/commands/splitBlock.d.ts +0 -18
  284. package/dist/commands/splitBlock.d.ts.map +0 -1
  285. package/dist/commands/splitListItem.d.ts +0 -17
  286. package/dist/commands/splitListItem.d.ts.map +0 -1
  287. package/dist/commands/toggleList.d.ts +0 -19
  288. package/dist/commands/toggleList.d.ts.map +0 -1
  289. package/dist/commands/toggleMark.d.ts +0 -31
  290. package/dist/commands/toggleMark.d.ts.map +0 -1
  291. package/dist/commands/toggleNode.d.ts +0 -18
  292. package/dist/commands/toggleNode.d.ts.map +0 -1
  293. package/dist/commands/toggleWrap.d.ts +0 -17
  294. package/dist/commands/toggleWrap.d.ts.map +0 -1
  295. package/dist/commands/undoInputRule.d.ts +0 -14
  296. package/dist/commands/undoInputRule.d.ts.map +0 -1
  297. package/dist/commands/unsetAllMarks.d.ts +0 -14
  298. package/dist/commands/unsetAllMarks.d.ts.map +0 -1
  299. package/dist/commands/unsetMark.d.ts +0 -26
  300. package/dist/commands/unsetMark.d.ts.map +0 -1
  301. package/dist/commands/updateAttributes.d.ts +0 -25
  302. package/dist/commands/updateAttributes.d.ts.map +0 -1
  303. package/dist/commands/wrapIn.d.ts +0 -17
  304. package/dist/commands/wrapIn.d.ts.map +0 -1
  305. package/dist/commands/wrapInList.d.ts +0 -17
  306. package/dist/commands/wrapInList.d.ts.map +0 -1
  307. package/dist/extensions/clipboardTextSerializer.d.ts +0 -6
  308. package/dist/extensions/clipboardTextSerializer.d.ts.map +0 -1
  309. package/dist/extensions/commands.d.ts +0 -4
  310. package/dist/extensions/commands.d.ts.map +0 -1
  311. package/dist/extensions/drop.d.ts +0 -3
  312. package/dist/extensions/drop.d.ts.map +0 -1
  313. package/dist/extensions/editable.d.ts +0 -3
  314. package/dist/extensions/editable.d.ts.map +0 -1
  315. package/dist/extensions/focusEvents.d.ts +0 -5
  316. package/dist/extensions/focusEvents.d.ts.map +0 -1
  317. package/dist/extensions/index.d.ts +0 -9
  318. package/dist/extensions/index.d.ts.map +0 -1
  319. package/dist/extensions/keymap.d.ts +0 -3
  320. package/dist/extensions/keymap.d.ts.map +0 -1
  321. package/dist/extensions/paste.d.ts +0 -3
  322. package/dist/extensions/paste.d.ts.map +0 -1
  323. package/dist/extensions/tabindex.d.ts +0 -3
  324. package/dist/extensions/tabindex.d.ts.map +0 -1
  325. package/dist/helpers/combineTransactionSteps.d.ts +0 -11
  326. package/dist/helpers/combineTransactionSteps.d.ts.map +0 -1
  327. package/dist/helpers/createChainableState.d.ts +0 -11
  328. package/dist/helpers/createChainableState.d.ts.map +0 -1
  329. package/dist/helpers/createDocument.d.ts +0 -13
  330. package/dist/helpers/createDocument.d.ts.map +0 -1
  331. package/dist/helpers/createNodeFromContent.d.ts +0 -16
  332. package/dist/helpers/createNodeFromContent.d.ts.map +0 -1
  333. package/dist/helpers/defaultBlockAt.d.ts +0 -8
  334. package/dist/helpers/defaultBlockAt.d.ts.map +0 -1
  335. package/dist/helpers/findChildren.d.ts +0 -10
  336. package/dist/helpers/findChildren.d.ts.map +0 -1
  337. package/dist/helpers/findChildrenInRange.d.ts +0 -11
  338. package/dist/helpers/findChildrenInRange.d.ts.map +0 -1
  339. package/dist/helpers/findParentNode.d.ts +0 -17
  340. package/dist/helpers/findParentNode.d.ts.map +0 -1
  341. package/dist/helpers/findParentNodeClosestToPos.d.ts +0 -18
  342. package/dist/helpers/findParentNodeClosestToPos.d.ts.map +0 -1
  343. package/dist/helpers/generateHTML.d.ts +0 -9
  344. package/dist/helpers/generateHTML.d.ts.map +0 -1
  345. package/dist/helpers/generateJSON.d.ts +0 -9
  346. package/dist/helpers/generateJSON.d.ts.map +0 -1
  347. package/dist/helpers/generateText.d.ts +0 -13
  348. package/dist/helpers/generateText.d.ts.map +0 -1
  349. package/dist/helpers/getAttributes.d.ts +0 -10
  350. package/dist/helpers/getAttributes.d.ts.map +0 -1
  351. package/dist/helpers/getAttributesFromExtensions.d.ts +0 -7
  352. package/dist/helpers/getAttributesFromExtensions.d.ts.map +0 -1
  353. package/dist/helpers/getChangedRanges.d.ts +0 -12
  354. package/dist/helpers/getChangedRanges.d.ts.map +0 -1
  355. package/dist/helpers/getDebugJSON.d.ts +0 -9
  356. package/dist/helpers/getDebugJSON.d.ts.map +0 -1
  357. package/dist/helpers/getExtensionField.d.ts +0 -10
  358. package/dist/helpers/getExtensionField.d.ts.map +0 -1
  359. package/dist/helpers/getHTMLFromFragment.d.ts +0 -3
  360. package/dist/helpers/getHTMLFromFragment.d.ts.map +0 -1
  361. package/dist/helpers/getMarkAttributes.d.ts +0 -4
  362. package/dist/helpers/getMarkAttributes.d.ts.map +0 -1
  363. package/dist/helpers/getMarkRange.d.ts +0 -20
  364. package/dist/helpers/getMarkRange.d.ts.map +0 -1
  365. package/dist/helpers/getMarkType.d.ts +0 -3
  366. package/dist/helpers/getMarkType.d.ts.map +0 -1
  367. package/dist/helpers/getMarksBetween.d.ts +0 -4
  368. package/dist/helpers/getMarksBetween.d.ts.map +0 -1
  369. package/dist/helpers/getNodeAtPosition.d.ts +0 -12
  370. package/dist/helpers/getNodeAtPosition.d.ts.map +0 -1
  371. package/dist/helpers/getNodeAttributes.d.ts +0 -4
  372. package/dist/helpers/getNodeAttributes.d.ts.map +0 -1
  373. package/dist/helpers/getNodeType.d.ts +0 -3
  374. package/dist/helpers/getNodeType.d.ts.map +0 -1
  375. package/dist/helpers/getRenderedAttributes.d.ts +0 -4
  376. package/dist/helpers/getRenderedAttributes.d.ts.map +0 -1
  377. package/dist/helpers/getSchema.d.ts +0 -5
  378. package/dist/helpers/getSchema.d.ts.map +0 -1
  379. package/dist/helpers/getSchemaByResolvedExtensions.d.ts +0 -11
  380. package/dist/helpers/getSchemaByResolvedExtensions.d.ts.map +0 -1
  381. package/dist/helpers/getSchemaTypeByName.d.ts +0 -9
  382. package/dist/helpers/getSchemaTypeByName.d.ts.map +0 -1
  383. package/dist/helpers/getSchemaTypeNameByName.d.ts +0 -9
  384. package/dist/helpers/getSchemaTypeNameByName.d.ts.map +0 -1
  385. package/dist/helpers/getSplittedAttributes.d.ts +0 -10
  386. package/dist/helpers/getSplittedAttributes.d.ts.map +0 -1
  387. package/dist/helpers/getText.d.ts +0 -16
  388. package/dist/helpers/getText.d.ts.map +0 -1
  389. package/dist/helpers/getTextBetween.d.ts +0 -15
  390. package/dist/helpers/getTextBetween.d.ts.map +0 -1
  391. package/dist/helpers/getTextContentFromNodes.d.ts +0 -9
  392. package/dist/helpers/getTextContentFromNodes.d.ts.map +0 -1
  393. package/dist/helpers/getTextSerializersFromSchema.d.ts +0 -9
  394. package/dist/helpers/getTextSerializersFromSchema.d.ts.map +0 -1
  395. package/dist/helpers/index.d.ts +0 -52
  396. package/dist/helpers/index.d.ts.map +0 -1
  397. package/dist/helpers/injectExtensionAttributesToParseRule.d.ts +0 -10
  398. package/dist/helpers/injectExtensionAttributesToParseRule.d.ts.map +0 -1
  399. package/dist/helpers/isActive.d.ts +0 -3
  400. package/dist/helpers/isActive.d.ts.map +0 -1
  401. package/dist/helpers/isAtEndOfNode.d.ts +0 -3
  402. package/dist/helpers/isAtEndOfNode.d.ts.map +0 -1
  403. package/dist/helpers/isAtStartOfNode.d.ts +0 -3
  404. package/dist/helpers/isAtStartOfNode.d.ts.map +0 -1
  405. package/dist/helpers/isExtensionRulesEnabled.d.ts +0 -3
  406. package/dist/helpers/isExtensionRulesEnabled.d.ts.map +0 -1
  407. package/dist/helpers/isList.d.ts +0 -3
  408. package/dist/helpers/isList.d.ts.map +0 -1
  409. package/dist/helpers/isMarkActive.d.ts +0 -4
  410. package/dist/helpers/isMarkActive.d.ts.map +0 -1
  411. package/dist/helpers/isNodeActive.d.ts +0 -4
  412. package/dist/helpers/isNodeActive.d.ts.map +0 -1
  413. package/dist/helpers/isNodeEmpty.d.ts +0 -15
  414. package/dist/helpers/isNodeEmpty.d.ts.map +0 -1
  415. package/dist/helpers/isNodeSelection.d.ts +0 -3
  416. package/dist/helpers/isNodeSelection.d.ts.map +0 -1
  417. package/dist/helpers/isTextSelection.d.ts +0 -3
  418. package/dist/helpers/isTextSelection.d.ts.map +0 -1
  419. package/dist/helpers/posToDOMRect.d.ts +0 -3
  420. package/dist/helpers/posToDOMRect.d.ts.map +0 -1
  421. package/dist/helpers/resolveFocusPosition.d.ts +0 -5
  422. package/dist/helpers/resolveFocusPosition.d.ts.map +0 -1
  423. package/dist/helpers/rewriteUnknownContent.d.ts +0 -46
  424. package/dist/helpers/rewriteUnknownContent.d.ts.map +0 -1
  425. package/dist/helpers/selectionToInsertionEnd.d.ts +0 -3
  426. package/dist/helpers/selectionToInsertionEnd.d.ts.map +0 -1
  427. package/dist/helpers/splitExtensions.d.ts +0 -10
  428. package/dist/helpers/splitExtensions.d.ts.map +0 -1
  429. package/dist/index.d.ts.map +0 -1
  430. package/dist/index.umd.js +0 -5525
  431. package/dist/index.umd.js.map +0 -1
  432. package/dist/inputRules/index.d.ts +0 -6
  433. package/dist/inputRules/index.d.ts.map +0 -1
  434. package/dist/inputRules/markInputRule.d.ts +0 -14
  435. package/dist/inputRules/markInputRule.d.ts.map +0 -1
  436. package/dist/inputRules/nodeInputRule.d.ts +0 -24
  437. package/dist/inputRules/nodeInputRule.d.ts.map +0 -1
  438. package/dist/inputRules/textInputRule.d.ts +0 -11
  439. package/dist/inputRules/textInputRule.d.ts.map +0 -1
  440. package/dist/inputRules/textblockTypeInputRule.d.ts +0 -16
  441. package/dist/inputRules/textblockTypeInputRule.d.ts.map +0 -1
  442. package/dist/inputRules/wrappingInputRule.d.ts +0 -29
  443. package/dist/inputRules/wrappingInputRule.d.ts.map +0 -1
  444. package/dist/pasteRules/index.d.ts +0 -4
  445. package/dist/pasteRules/index.d.ts.map +0 -1
  446. package/dist/pasteRules/markPasteRule.d.ts +0 -14
  447. package/dist/pasteRules/markPasteRule.d.ts.map +0 -1
  448. package/dist/pasteRules/nodePasteRule.d.ts +0 -15
  449. package/dist/pasteRules/nodePasteRule.d.ts.map +0 -1
  450. package/dist/pasteRules/textPasteRule.d.ts +0 -11
  451. package/dist/pasteRules/textPasteRule.d.ts.map +0 -1
  452. package/dist/style.d.ts +0 -2
  453. package/dist/style.d.ts.map +0 -1
  454. package/dist/types.d.ts +0 -323
  455. package/dist/types.d.ts.map +0 -1
  456. package/dist/utilities/callOrReturn.d.ts +0 -10
  457. package/dist/utilities/callOrReturn.d.ts.map +0 -1
  458. package/dist/utilities/createStyleTag.d.ts +0 -2
  459. package/dist/utilities/createStyleTag.d.ts.map +0 -1
  460. package/dist/utilities/deleteProps.d.ts +0 -7
  461. package/dist/utilities/deleteProps.d.ts.map +0 -1
  462. package/dist/utilities/elementFromString.d.ts +0 -2
  463. package/dist/utilities/elementFromString.d.ts.map +0 -1
  464. package/dist/utilities/escapeForRegEx.d.ts +0 -2
  465. package/dist/utilities/escapeForRegEx.d.ts.map +0 -1
  466. package/dist/utilities/findDuplicates.d.ts +0 -2
  467. package/dist/utilities/findDuplicates.d.ts.map +0 -1
  468. package/dist/utilities/fromString.d.ts +0 -2
  469. package/dist/utilities/fromString.d.ts.map +0 -1
  470. package/dist/utilities/index.d.ts +0 -21
  471. package/dist/utilities/index.d.ts.map +0 -1
  472. package/dist/utilities/isAndroid.d.ts +0 -2
  473. package/dist/utilities/isAndroid.d.ts.map +0 -1
  474. package/dist/utilities/isEmptyObject.d.ts +0 -2
  475. package/dist/utilities/isEmptyObject.d.ts.map +0 -1
  476. package/dist/utilities/isFunction.d.ts +0 -2
  477. package/dist/utilities/isFunction.d.ts.map +0 -1
  478. package/dist/utilities/isMacOS.d.ts +0 -2
  479. package/dist/utilities/isMacOS.d.ts.map +0 -1
  480. package/dist/utilities/isNumber.d.ts +0 -2
  481. package/dist/utilities/isNumber.d.ts.map +0 -1
  482. package/dist/utilities/isPlainObject.d.ts +0 -2
  483. package/dist/utilities/isPlainObject.d.ts.map +0 -1
  484. package/dist/utilities/isRegExp.d.ts +0 -2
  485. package/dist/utilities/isRegExp.d.ts.map +0 -1
  486. package/dist/utilities/isString.d.ts +0 -2
  487. package/dist/utilities/isString.d.ts.map +0 -1
  488. package/dist/utilities/isiOS.d.ts +0 -2
  489. package/dist/utilities/isiOS.d.ts.map +0 -1
  490. package/dist/utilities/mergeAttributes.d.ts +0 -2
  491. package/dist/utilities/mergeAttributes.d.ts.map +0 -1
  492. package/dist/utilities/mergeDeep.d.ts +0 -2
  493. package/dist/utilities/mergeDeep.d.ts.map +0 -1
  494. package/dist/utilities/minMax.d.ts +0 -2
  495. package/dist/utilities/minMax.d.ts.map +0 -1
  496. package/dist/utilities/objectIncludes.d.ts +0 -9
  497. package/dist/utilities/objectIncludes.d.ts.map +0 -1
  498. package/dist/utilities/removeDuplicates.d.ts +0 -9
  499. package/dist/utilities/removeDuplicates.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
- import { Fragment, Node as ProseMirrorNode, ParseOptions } from '@tiptap/pm/model'
1
+ import type { Fragment, Node as ProseMirrorNode, ParseOptions } from '@tiptap/pm/model'
2
2
 
3
3
  import { createDocument } from '../helpers/createDocument.js'
4
- import { Content, RawCommands } from '../types.js'
4
+ import type { Content, RawCommands } from '../types.js'
5
5
 
6
6
  declare module '@tiptap/core' {
7
7
  interface Commands<ReturnType> {
@@ -19,55 +19,56 @@ declare module '@tiptap/core' {
19
19
  */
20
20
  content: Content | Fragment | ProseMirrorNode,
21
21
 
22
- /**
23
- * Whether to emit an update event.
24
- * @default false
25
- */
26
- emitUpdate?: boolean,
27
-
28
- /**
29
- * Options for parsing the content.
30
- * @default {}
31
- */
32
- parseOptions?: ParseOptions,
33
22
  /**
34
23
  * Options for `setContent`.
35
24
  */
36
25
  options?: {
26
+ /**
27
+ * Options for parsing the content.
28
+ * @default {}
29
+ */
30
+ parseOptions?: ParseOptions
31
+
37
32
  /**
38
33
  * Whether to throw an error if the content is invalid.
39
34
  */
40
- errorOnInvalidContent?: boolean;
41
- }
42
- ) => ReturnType;
43
- };
35
+ errorOnInvalidContent?: boolean
36
+
37
+ /**
38
+ * Whether to emit an update event.
39
+ * @default true
40
+ */
41
+ emitUpdate?: boolean
42
+ },
43
+ ) => ReturnType
44
+ }
44
45
  }
45
46
  }
46
47
 
47
- export const setContent: RawCommands['setContent'] = (content, emitUpdate = false, parseOptions = {}, options = {}) => ({
48
- editor, tr, dispatch, commands,
49
- }) => {
50
- const { doc } = tr
48
+ export const setContent: RawCommands['setContent'] =
49
+ (content, { errorOnInvalidContent, emitUpdate = true, parseOptions = {} } = {}) =>
50
+ ({ editor, tr, dispatch, commands }) => {
51
+ const { doc } = tr
51
52
 
52
- // This is to keep backward compatibility with the previous behavior
53
- // TODO remove this in the next major version
54
- if (parseOptions.preserveWhitespace !== 'full') {
55
- const document = createDocument(content, editor.schema, parseOptions, {
56
- errorOnInvalidContent: options.errorOnInvalidContent ?? editor.options.enableContentCheck,
57
- })
53
+ // This is to keep backward compatibility with the previous behavior
54
+ // TODO remove this in the next major version
55
+ if (parseOptions.preserveWhitespace !== 'full') {
56
+ const document = createDocument(content, editor.schema, parseOptions, {
57
+ errorOnInvalidContent: errorOnInvalidContent ?? editor.options.enableContentCheck,
58
+ })
59
+
60
+ if (dispatch) {
61
+ tr.replaceWith(0, doc.content.size, document).setMeta('preventUpdate', !emitUpdate)
62
+ }
63
+ return true
64
+ }
58
65
 
59
66
  if (dispatch) {
60
- tr.replaceWith(0, doc.content.size, document).setMeta('preventUpdate', !emitUpdate)
67
+ tr.setMeta('preventUpdate', !emitUpdate)
61
68
  }
62
- return true
63
- }
64
69
 
65
- if (dispatch) {
66
- tr.setMeta('preventUpdate', !emitUpdate)
70
+ return commands.insertContentAt({ from: 0, to: doc.content.size }, content, {
71
+ parseOptions,
72
+ errorOnInvalidContent: errorOnInvalidContent ?? editor.options.enableContentCheck,
73
+ })
67
74
  }
68
-
69
- return commands.insertContentAt({ from: 0, to: doc.content.size }, content, {
70
- parseOptions,
71
- errorOnInvalidContent: options.errorOnInvalidContent ?? editor.options.enableContentCheck,
72
- })
73
- }
@@ -1,10 +1,10 @@
1
- import { MarkType, ResolvedPos } from '@tiptap/pm/model'
2
- import { EditorState, Transaction } from '@tiptap/pm/state'
1
+ import type { MarkType, ResolvedPos } from '@tiptap/pm/model'
2
+ import type { EditorState, Transaction } from '@tiptap/pm/state'
3
3
 
4
4
  import { getMarkAttributes } from '../helpers/getMarkAttributes.js'
5
5
  import { getMarkType } from '../helpers/getMarkType.js'
6
6
  import { isTextSelection } from '../helpers/index.js'
7
- import { RawCommands } from '../types.js'
7
+ import type { RawCommands } from '../types.js'
8
8
 
9
9
  declare module '@tiptap/core' {
10
10
  interface Commands<ReturnType> {
@@ -31,18 +31,14 @@ function canSetMark(state: EditorState, tr: Transaction, newMarkType: MarkType)
31
31
  const currentMarks = state.storedMarks ?? cursor.marks()
32
32
 
33
33
  // There can be no current marks that exclude the new mark
34
- return (
35
- !!newMarkType.isInSet(currentMarks)
36
- || !currentMarks.some(mark => mark.type.excludes(newMarkType))
37
- )
34
+ return !!newMarkType.isInSet(currentMarks) || !currentMarks.some(mark => mark.type.excludes(newMarkType))
38
35
  }
39
36
 
40
37
  const { ranges } = selection
41
38
 
42
39
  return ranges.some(({ $from, $to }) => {
43
- let someNodeSupportsMark = $from.depth === 0
44
- ? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType)
45
- : false
40
+ let someNodeSupportsMark =
41
+ $from.depth === 0 ? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType) : false
46
42
 
47
43
  state.doc.nodesBetween($from.pos, $to.pos, (node, _pos, parent) => {
48
44
  // If we already found a mark that we can enable, return false to bypass the remaining search
@@ -52,8 +48,8 @@ function canSetMark(state: EditorState, tr: Transaction, newMarkType: MarkType)
52
48
 
53
49
  if (node.isInline) {
54
50
  const parentAllowsMarkType = !parent || parent.type.allowsMarkType(newMarkType)
55
- const currentMarksAllowMarkType = !!newMarkType.isInSet(node.marks)
56
- || !node.marks.some(otherMark => otherMark.type.excludes(newMarkType))
51
+ const currentMarksAllowMarkType =
52
+ !!newMarkType.isInSet(node.marks) || !node.marks.some(otherMark => otherMark.type.excludes(newMarkType))
57
53
 
58
54
  someNodeSupportsMark = parentAllowsMarkType && currentMarksAllowMarkType
59
55
  }
@@ -63,54 +59,56 @@ function canSetMark(state: EditorState, tr: Transaction, newMarkType: MarkType)
63
59
  return someNodeSupportsMark
64
60
  })
65
61
  }
66
- export const setMark: RawCommands['setMark'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {
67
- const { selection } = tr
68
- const { empty, ranges } = selection
69
- const type = getMarkType(typeOrName, state.schema)
70
-
71
- if (dispatch) {
72
- if (empty) {
73
- const oldAttributes = getMarkAttributes(state, type)
74
-
75
- tr.addStoredMark(
76
- type.create({
77
- ...oldAttributes,
78
- ...attributes,
79
- }),
80
- )
81
- } else {
82
- ranges.forEach(range => {
83
- const from = range.$from.pos
84
- const to = range.$to.pos
85
-
86
- state.doc.nodesBetween(from, to, (node, pos) => {
87
- const trimmedFrom = Math.max(pos, from)
88
- const trimmedTo = Math.min(pos + node.nodeSize, to)
89
- const someHasMark = node.marks.find(mark => mark.type === type)
90
-
91
- // if there is already a mark of this type
92
- // we know that we have to merge its attributes
93
- // otherwise we add a fresh new mark
94
- if (someHasMark) {
95
- node.marks.forEach(mark => {
96
- if (type === mark.type) {
97
- tr.addMark(
98
- trimmedFrom,
99
- trimmedTo,
100
- type.create({
101
- ...mark.attrs,
102
- ...attributes,
103
- }),
104
- )
105
- }
106
- })
107
- } else {
108
- tr.addMark(trimmedFrom, trimmedTo, type.create(attributes))
109
- }
62
+ export const setMark: RawCommands['setMark'] =
63
+ (typeOrName, attributes = {}) =>
64
+ ({ tr, state, dispatch }) => {
65
+ const { selection } = tr
66
+ const { empty, ranges } = selection
67
+ const type = getMarkType(typeOrName, state.schema)
68
+
69
+ if (dispatch) {
70
+ if (empty) {
71
+ const oldAttributes = getMarkAttributes(state, type)
72
+
73
+ tr.addStoredMark(
74
+ type.create({
75
+ ...oldAttributes,
76
+ ...attributes,
77
+ }),
78
+ )
79
+ } else {
80
+ ranges.forEach(range => {
81
+ const from = range.$from.pos
82
+ const to = range.$to.pos
83
+
84
+ state.doc.nodesBetween(from, to, (node, pos) => {
85
+ const trimmedFrom = Math.max(pos, from)
86
+ const trimmedTo = Math.min(pos + node.nodeSize, to)
87
+ const someHasMark = node.marks.find(mark => mark.type === type)
88
+
89
+ // if there is already a mark of this type
90
+ // we know that we have to merge its attributes
91
+ // otherwise we add a fresh new mark
92
+ if (someHasMark) {
93
+ node.marks.forEach(mark => {
94
+ if (type === mark.type) {
95
+ tr.addMark(
96
+ trimmedFrom,
97
+ trimmedTo,
98
+ type.create({
99
+ ...mark.attrs,
100
+ ...attributes,
101
+ }),
102
+ )
103
+ }
104
+ })
105
+ } else {
106
+ tr.addMark(trimmedFrom, trimmedTo, type.create(attributes))
107
+ }
108
+ })
110
109
  })
111
- })
110
+ }
112
111
  }
113
- }
114
112
 
115
- return canSetMark(state, tr, type)
116
- }
113
+ return canSetMark(state, tr, type)
114
+ }
@@ -1,6 +1,6 @@
1
1
  import type { Plugin, PluginKey } 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> {
@@ -11,13 +11,15 @@ declare module '@tiptap/core' {
11
11
  * @param value The value to store.
12
12
  * @example editor.commands.setMeta('foo', 'bar')
13
13
  */
14
- setMeta: (key: string | Plugin | PluginKey, value: any) => ReturnType,
14
+ setMeta: (key: string | Plugin | PluginKey, value: any) => ReturnType
15
15
  }
16
16
  }
17
17
  }
18
18
 
19
- export const setMeta: RawCommands['setMeta'] = (key, value) => ({ tr }) => {
20
- tr.setMeta(key, value)
19
+ export const setMeta: RawCommands['setMeta'] =
20
+ (key, value) =>
21
+ ({ tr }) => {
22
+ tr.setMeta(key, value)
21
23
 
22
- return true
23
- }
24
+ return true
25
+ }
@@ -1,8 +1,8 @@
1
1
  import { setBlockType } from '@tiptap/pm/commands'
2
- import { NodeType } from '@tiptap/pm/model'
2
+ import type { NodeType } from '@tiptap/pm/model'
3
3
 
4
4
  import { getNodeType } from '../helpers/getNodeType.js'
5
- import { RawCommands } from '../types.js'
5
+ import type { RawCommands } from '../types.js'
6
6
 
7
7
  declare module '@tiptap/core' {
8
8
  interface Commands<ReturnType> {
@@ -18,38 +18,40 @@ declare module '@tiptap/core' {
18
18
  }
19
19
  }
20
20
 
21
- export const setNode: RawCommands['setNode'] = (typeOrName, attributes = {}) => ({ state, dispatch, chain }) => {
22
- const type = getNodeType(typeOrName, state.schema)
21
+ export const setNode: RawCommands['setNode'] =
22
+ (typeOrName, attributes = {}) =>
23
+ ({ state, dispatch, chain }) => {
24
+ const type = getNodeType(typeOrName, state.schema)
23
25
 
24
- let attributesToCopy: Record<string, any> | undefined
26
+ let attributesToCopy: Record<string, any> | undefined
25
27
 
26
- if (state.selection.$anchor.sameParent(state.selection.$head)) {
27
- // only copy attributes if the selection is pointing to a node of the same type
28
- attributesToCopy = state.selection.$anchor.parent.attrs
29
- }
28
+ if (state.selection.$anchor.sameParent(state.selection.$head)) {
29
+ // only copy attributes if the selection is pointing to a node of the same type
30
+ attributesToCopy = state.selection.$anchor.parent.attrs
31
+ }
30
32
 
31
- // TODO: use a fallback like insertContent?
32
- if (!type.isTextblock) {
33
- console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.')
33
+ // TODO: use a fallback like insertContent?
34
+ if (!type.isTextblock) {
35
+ console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.')
34
36
 
35
- return false
36
- }
37
+ return false
38
+ }
37
39
 
38
- return (
39
- chain()
40
- // try to convert node to default node if needed
41
- .command(({ commands }) => {
42
- const canSetBlock = setBlockType(type, { ...attributesToCopy, ...attributes })(state)
43
-
44
- if (canSetBlock) {
45
- return true
46
- }
47
-
48
- return commands.clearNodes()
49
- })
50
- .command(({ state: updatedState }) => {
51
- return setBlockType(type, { ...attributesToCopy, ...attributes })(updatedState, dispatch)
52
- })
53
- .run()
54
- )
55
- }
40
+ return (
41
+ chain()
42
+ // try to convert node to default node if needed
43
+ .command(({ commands }) => {
44
+ const canSetBlock = setBlockType(type, { ...attributesToCopy, ...attributes })(state)
45
+
46
+ if (canSetBlock) {
47
+ return true
48
+ }
49
+
50
+ return commands.clearNodes()
51
+ })
52
+ .command(({ state: updatedState }) => {
53
+ return setBlockType(type, { ...attributesToCopy, ...attributes })(updatedState, dispatch)
54
+ })
55
+ .run()
56
+ )
57
+ }
@@ -1,6 +1,6 @@
1
1
  import { NodeSelection } from '@tiptap/pm/state'
2
2
 
3
- import { RawCommands } from '../types.js'
3
+ import type { RawCommands } from '../types.js'
4
4
  import { minMax } from '../utilities/minMax.js'
5
5
 
6
6
  declare module '@tiptap/core' {
@@ -16,14 +16,16 @@ declare module '@tiptap/core' {
16
16
  }
17
17
  }
18
18
 
19
- export const setNodeSelection: RawCommands['setNodeSelection'] = position => ({ tr, dispatch }) => {
20
- if (dispatch) {
21
- const { doc } = tr
22
- const from = minMax(position, 0, doc.content.size)
23
- const selection = NodeSelection.create(doc, from)
19
+ export const setNodeSelection: RawCommands['setNodeSelection'] =
20
+ position =>
21
+ ({ tr, dispatch }) => {
22
+ if (dispatch) {
23
+ const { doc } = tr
24
+ const from = minMax(position, 0, doc.content.size)
25
+ const selection = NodeSelection.create(doc, from)
24
26
 
25
- tr.setSelection(selection)
26
- }
27
+ tr.setSelection(selection)
28
+ }
27
29
 
28
- return true
29
- }
30
+ return true
31
+ }
@@ -1,6 +1,6 @@
1
1
  import { TextSelection } from '@tiptap/pm/state'
2
2
 
3
- import { Range, RawCommands } from '../types.js'
3
+ import type { Range, RawCommands } from '../types.js'
4
4
  import { minMax } from '../utilities/minMax.js'
5
5
 
6
6
  declare module '@tiptap/core' {
@@ -16,18 +16,20 @@ declare module '@tiptap/core' {
16
16
  }
17
17
  }
18
18
 
19
- export const setTextSelection: RawCommands['setTextSelection'] = position => ({ tr, dispatch }) => {
20
- if (dispatch) {
21
- const { doc } = tr
22
- const { from, to } = typeof position === 'number' ? { from: position, to: position } : position
23
- const minPos = TextSelection.atStart(doc).from
24
- const maxPos = TextSelection.atEnd(doc).to
25
- const resolvedFrom = minMax(from, minPos, maxPos)
26
- const resolvedEnd = minMax(to, minPos, maxPos)
27
- const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd)
19
+ export const setTextSelection: RawCommands['setTextSelection'] =
20
+ position =>
21
+ ({ tr, dispatch }) => {
22
+ if (dispatch) {
23
+ const { doc } = tr
24
+ const { from, to } = typeof position === 'number' ? { from: position, to: position } : position
25
+ const minPos = TextSelection.atStart(doc).from
26
+ const maxPos = TextSelection.atEnd(doc).to
27
+ const resolvedFrom = minMax(from, minPos, maxPos)
28
+ const resolvedEnd = minMax(to, minPos, maxPos)
29
+ const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd)
28
30
 
29
- tr.setSelection(selection)
30
- }
31
+ tr.setSelection(selection)
32
+ }
31
33
 
32
- return true
33
- }
34
+ return true
35
+ }
@@ -1,8 +1,8 @@
1
- import { NodeType } from '@tiptap/pm/model'
1
+ import type { NodeType } from '@tiptap/pm/model'
2
2
  import { sinkListItem as originalSinkListItem } from '@tiptap/pm/schema-list'
3
3
 
4
4
  import { getNodeType } from '../helpers/getNodeType.js'
5
- import { RawCommands } from '../types.js'
5
+ import type { RawCommands } from '../types.js'
6
6
 
7
7
  declare module '@tiptap/core' {
8
8
  interface Commands<ReturnType> {
@@ -17,8 +17,10 @@ declare module '@tiptap/core' {
17
17
  }
18
18
  }
19
19
 
20
- export const sinkListItem: RawCommands['sinkListItem'] = typeOrName => ({ state, dispatch }) => {
21
- const type = getNodeType(typeOrName, state.schema)
20
+ export const sinkListItem: RawCommands['sinkListItem'] =
21
+ typeOrName =>
22
+ ({ state, dispatch }) => {
23
+ const type = getNodeType(typeOrName, state.schema)
22
24
 
23
- return originalSinkListItem(type)(state, dispatch)
24
- }
25
+ return originalSinkListItem(type)(state, dispatch)
26
+ }
@@ -1,9 +1,10 @@
1
- import { EditorState, NodeSelection, TextSelection } from '@tiptap/pm/state'
1
+ import type { EditorState } from '@tiptap/pm/state'
2
+ import { NodeSelection, TextSelection } from '@tiptap/pm/state'
2
3
  import { canSplit } from '@tiptap/pm/transform'
3
4
 
4
5
  import { defaultBlockAt } from '../helpers/defaultBlockAt.js'
5
6
  import { getSplittedAttributes } from '../helpers/getSplittedAttributes.js'
6
- import { RawCommands } from '../types.js'
7
+ import type { RawCommands } from '../types.js'
7
8
 
8
9
  function ensureMarks(state: EditorState, splittableMarks?: string[]) {
9
10
  const marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks())
@@ -29,95 +30,86 @@ declare module '@tiptap/core' {
29
30
  }
30
31
  }
31
32
 
32
- export const splitBlock: RawCommands['splitBlock'] = ({ keepMarks = true } = {}) => ({
33
- tr, state, dispatch, editor,
34
- }) => {
35
- const { selection, doc } = tr
36
- const { $from, $to } = selection
37
- const extensionAttributes = editor.extensionManager.attributes
38
- const newAttributes = getSplittedAttributes(
39
- extensionAttributes,
40
- $from.node().type.name,
41
- $from.node().attrs,
42
- )
43
-
44
- if (selection instanceof NodeSelection && selection.node.isBlock) {
45
- if (!$from.parentOffset || !canSplit(doc, $from.pos)) {
46
- return false
47
- }
33
+ export const splitBlock: RawCommands['splitBlock'] =
34
+ ({ keepMarks = true } = {}) =>
35
+ ({ tr, state, dispatch, editor }) => {
36
+ const { selection, doc } = tr
37
+ const { $from, $to } = selection
38
+ const extensionAttributes = editor.extensionManager.attributes
39
+ const newAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs)
40
+
41
+ if (selection instanceof NodeSelection && selection.node.isBlock) {
42
+ if (!$from.parentOffset || !canSplit(doc, $from.pos)) {
43
+ return false
44
+ }
48
45
 
49
- if (dispatch) {
50
- if (keepMarks) {
51
- ensureMarks(state, editor.extensionManager.splittableMarks)
46
+ if (dispatch) {
47
+ if (keepMarks) {
48
+ ensureMarks(state, editor.extensionManager.splittableMarks)
49
+ }
50
+
51
+ tr.split($from.pos).scrollIntoView()
52
52
  }
53
53
 
54
- tr.split($from.pos).scrollIntoView()
54
+ return true
55
55
  }
56
56
 
57
- return true
58
- }
59
-
60
- if (!$from.parent.isBlock) {
61
- return false
62
- }
57
+ if (!$from.parent.isBlock) {
58
+ return false
59
+ }
63
60
 
64
- const atEnd = $to.parentOffset === $to.parent.content.size
65
-
66
- const deflt = $from.depth === 0
67
- ? undefined
68
- : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)))
69
-
70
- let types = atEnd && deflt
71
- ? [
72
- {
73
- type: deflt,
74
- attrs: newAttributes,
75
- },
76
- ]
77
- : undefined
78
-
79
- let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types)
80
-
81
- if (
82
- !types
83
- && !can
84
- && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)
85
- ) {
86
- can = true
87
- types = deflt
88
- ? [
89
- {
90
- type: deflt,
91
- attrs: newAttributes,
92
- },
93
- ]
94
- : undefined
95
- }
61
+ const atEnd = $to.parentOffset === $to.parent.content.size
62
+
63
+ const deflt = $from.depth === 0 ? undefined : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)))
64
+
65
+ let types =
66
+ atEnd && deflt
67
+ ? [
68
+ {
69
+ type: deflt,
70
+ attrs: newAttributes,
71
+ },
72
+ ]
73
+ : undefined
74
+
75
+ let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types)
76
+
77
+ if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {
78
+ can = true
79
+ types = deflt
80
+ ? [
81
+ {
82
+ type: deflt,
83
+ attrs: newAttributes,
84
+ },
85
+ ]
86
+ : undefined
87
+ }
96
88
 
97
- if (dispatch) {
98
- if (can) {
99
- if (selection instanceof TextSelection) {
100
- tr.deleteSelection()
101
- }
89
+ if (dispatch) {
90
+ if (can) {
91
+ if (selection instanceof TextSelection) {
92
+ tr.deleteSelection()
93
+ }
102
94
 
103
- tr.split(tr.mapping.map($from.pos), 1, types)
95
+ tr.split(tr.mapping.map($from.pos), 1, types)
104
96
 
105
- if (deflt && !atEnd && !$from.parentOffset && $from.parent.type !== deflt) {
106
- const first = tr.mapping.map($from.before())
107
- const $first = tr.doc.resolve(first)
97
+ if (deflt && !atEnd && !$from.parentOffset && $from.parent.type !== deflt) {
98
+ const first = tr.mapping.map($from.before())
99
+ const $first = tr.doc.resolve(first)
108
100
 
109
- if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt)) {
110
- tr.setNodeMarkup(tr.mapping.map($from.before()), deflt)
101
+ if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt)) {
102
+ tr.setNodeMarkup(tr.mapping.map($from.before()), deflt)
103
+ }
111
104
  }
112
105
  }
113
- }
114
106
 
115
- if (keepMarks) {
116
- ensureMarks(state, editor.extensionManager.splittableMarks)
107
+ if (keepMarks) {
108
+ ensureMarks(state, editor.extensionManager.splittableMarks)
109
+ }
110
+
111
+ tr.scrollIntoView()
117
112
  }
118
113
 
119
- tr.scrollIntoView()
114
+ return can
120
115
  }
121
-
122
- return can
123
- }