@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,27 +1,27 @@
1
- import { wrapIn, lift } from 'prosemirror-commands'
2
- import { NodeType } from 'prosemirror-model'
3
- import { AnyObject, Command, RawCommands } from '../types'
4
- import isNodeActive from '../helpers/isNodeActive'
5
- 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'
6
6
 
7
7
  declare module '@tiptap/core' {
8
- interface Commands {
8
+ interface Commands<ReturnType> {
9
9
  toggleWrap: {
10
10
  /**
11
11
  * Wraps nodes in another node, or removes an existing wrap.
12
12
  */
13
- toggleWrap: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,
13
+ toggleWrap: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType
14
14
  }
15
15
  }
16
16
  }
17
17
 
18
- export const toggleWrap: RawCommands['toggleWrap'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {
18
+ export const toggleWrap: RawCommands['toggleWrap'] = (typeOrName, attributes = {}) => ({ state, commands }) => {
19
19
  const type = getNodeType(typeOrName, state.schema)
20
20
  const isActive = isNodeActive(state, type, attributes)
21
21
 
22
22
  if (isActive) {
23
- return lift(state, dispatch)
23
+ return commands.lift(type)
24
24
  }
25
25
 
26
- return wrapIn(type, attributes)(state, dispatch)
26
+ return commands.wrapIn(type, attributes)
27
27
  }
@@ -1,17 +1,46 @@
1
- import { undoInputRule as originalUndoInputRule } from 'prosemirror-inputrules'
2
- import { Command, RawCommands } from '../types'
1
+ import { RawCommands } from '../types'
3
2
 
4
3
  declare module '@tiptap/core' {
5
- interface Commands {
4
+ interface Commands<ReturnType> {
6
5
  undoInputRule: {
7
6
  /**
8
7
  * Undo an input rule.
9
8
  */
10
- undoInputRule: () => Command,
9
+ undoInputRule: () => ReturnType,
11
10
  }
12
11
  }
13
12
  }
14
13
 
15
14
  export const undoInputRule: RawCommands['undoInputRule'] = () => ({ state, dispatch }) => {
16
- return originalUndoInputRule(state, dispatch)
15
+ const plugins = state.plugins
16
+
17
+ for (let i = 0; i < plugins.length; i += 1) {
18
+ const plugin = plugins[i]
19
+ let undoable
20
+
21
+ // @ts-ignore
22
+ // eslint-disable-next-line
23
+ if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {
24
+ if (dispatch) {
25
+ const tr = state.tr
26
+ const toUndo = undoable.transform
27
+
28
+ for (let j = toUndo.steps.length - 1; j >= 0; j -= 1) {
29
+ tr.step(toUndo.steps[j].invert(toUndo.docs[j]))
30
+ }
31
+
32
+ if (undoable.text) {
33
+ const marks = tr.doc.resolve(undoable.from).marks()
34
+
35
+ tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks))
36
+ } else {
37
+ tr.delete(undoable.from, undoable.to)
38
+ }
39
+ }
40
+
41
+ return true
42
+ }
43
+ }
44
+
45
+ return false
17
46
  }
@@ -1,17 +1,17 @@
1
- import { Command, RawCommands } from '../types'
1
+ import { RawCommands } from '../types'
2
2
 
3
3
  declare module '@tiptap/core' {
4
- interface Commands {
4
+ interface Commands<ReturnType> {
5
5
  unsetAllMarks: {
6
6
  /**
7
7
  * Remove all marks in the current selection.
8
8
  */
9
- unsetAllMarks: () => Command,
9
+ unsetAllMarks: () => ReturnType,
10
10
  }
11
11
  }
12
12
  }
13
13
 
14
- export const unsetAllMarks: RawCommands['unsetAllMarks'] = () => ({ tr, state, dispatch }) => {
14
+ export const unsetAllMarks: RawCommands['unsetAllMarks'] = () => ({ tr, dispatch }) => {
15
15
  const { selection } = tr
16
16
  const { empty, ranges } = selection
17
17
 
@@ -20,13 +20,9 @@ export const unsetAllMarks: RawCommands['unsetAllMarks'] = () => ({ tr, state, d
20
20
  }
21
21
 
22
22
  if (dispatch) {
23
- Object
24
- .entries(state.schema.marks)
25
- .forEach(([, mark]) => {
26
- ranges.forEach(range => {
27
- tr.removeMark(range.$from.pos, range.$to.pos, mark as any)
28
- })
29
- })
23
+ ranges.forEach(range => {
24
+ tr.removeMark(range.$from.pos, range.$to.pos)
25
+ })
30
26
  }
31
27
 
32
28
  return true
@@ -1,43 +1,56 @@
1
- import { MarkType } from 'prosemirror-model'
2
- import { Command, RawCommands } from '../types'
3
- import getMarkType from '../helpers/getMarkType'
4
- import getMarkRange from '../helpers/getMarkRange'
1
+ import { MarkType } from '@tiptap/pm/model'
2
+
3
+ import { getMarkRange } from '../helpers/getMarkRange'
4
+ import { getMarkType } from '../helpers/getMarkType'
5
+ import { RawCommands } from '../types'
5
6
 
6
7
  declare module '@tiptap/core' {
7
- interface Commands {
8
+ interface Commands<ReturnType> {
8
9
  unsetMark: {
9
10
  /**
10
11
  * Remove all marks in the current selection.
11
12
  */
12
- unsetMark: (typeOrName: string | MarkType) => Command,
13
+ unsetMark: (
14
+ typeOrName: string | MarkType,
15
+ options?: {
16
+ /**
17
+ * Removes the mark even across the current selection. Defaults to `false`.
18
+ */
19
+ extendEmptyMarkRange?: boolean
20
+ },
21
+ ) => ReturnType
13
22
  }
14
23
  }
15
24
  }
16
25
 
17
- export const unsetMark: RawCommands['unsetMark'] = typeOrName => ({ tr, state, dispatch }) => {
26
+ export const unsetMark: RawCommands['unsetMark'] = (typeOrName, options = {}) => ({ tr, state, dispatch }) => {
27
+ const { extendEmptyMarkRange = false } = options
18
28
  const { selection } = tr
19
29
  const type = getMarkType(typeOrName, state.schema)
20
30
  const { $from, empty, ranges } = selection
21
31
 
22
- if (dispatch) {
23
- if (empty) {
24
- let { from, to } = selection
25
- const range = getMarkRange($from, type)
26
-
27
- if (range) {
28
- from = range.from
29
- to = range.to
30
- }
31
-
32
- tr.removeMark(from, to, type)
33
- } else {
34
- ranges.forEach(range => {
35
- tr.removeMark(range.$from.pos, range.$to.pos, type)
36
- })
32
+ if (!dispatch) {
33
+ return true
34
+ }
35
+
36
+ if (empty && extendEmptyMarkRange) {
37
+ let { from, to } = selection
38
+ const attrs = $from.marks().find(mark => mark.type === type)?.attrs
39
+ const range = getMarkRange($from, type, attrs)
40
+
41
+ if (range) {
42
+ from = range.from
43
+ to = range.to
37
44
  }
38
45
 
39
- tr.removeStoredMark(type)
46
+ tr.removeMark(from, to, type)
47
+ } else {
48
+ ranges.forEach(range => {
49
+ tr.removeMark(range.$from.pos, range.$to.pos, type)
50
+ })
40
51
  }
41
52
 
53
+ tr.removeStoredMark(type)
54
+
42
55
  return true
43
56
  }
@@ -1,16 +1,20 @@
1
- import { NodeType, MarkType } from 'prosemirror-model'
2
- import getNodeType from '../helpers/getNodeType'
3
- import getMarkType from '../helpers/getMarkType'
4
- import getSchemaTypeNameByName from '../helpers/getSchemaTypeNameByName'
5
- import { AnyObject, Command, RawCommands } from '../types'
1
+ import { MarkType, NodeType } from '@tiptap/pm/model'
2
+
3
+ import { getMarkType } from '../helpers/getMarkType'
4
+ import { getNodeType } from '../helpers/getNodeType'
5
+ import { getSchemaTypeNameByName } from '../helpers/getSchemaTypeNameByName'
6
+ import { RawCommands } from '../types'
6
7
 
7
8
  declare module '@tiptap/core' {
8
- interface Commands {
9
+ interface Commands<ReturnType> {
9
10
  updateAttributes: {
10
11
  /**
11
12
  * Update attributes of a node or mark.
12
13
  */
13
- updateAttributes: (typeOrName: string | NodeType | MarkType, attributes: AnyObject) => Command,
14
+ updateAttributes: (
15
+ typeOrName: string | NodeType | MarkType,
16
+ attributes: Record<string, any>,
17
+ ) => ReturnType
14
18
  }
15
19
  }
16
20
  }
@@ -20,9 +24,7 @@ export const updateAttributes: RawCommands['updateAttributes'] = (typeOrName, at
20
24
  let markType: MarkType | null = null
21
25
 
22
26
  const schemaType = getSchemaTypeNameByName(
23
- typeof typeOrName === 'string'
24
- ? typeOrName
25
- : typeOrName.name,
27
+ typeof typeOrName === 'string' ? typeOrName : typeOrName.name,
26
28
  state.schema,
27
29
  )
28
30
 
@@ -40,7 +42,10 @@ export const updateAttributes: RawCommands['updateAttributes'] = (typeOrName, at
40
42
 
41
43
  if (dispatch) {
42
44
  tr.selection.ranges.forEach(range => {
43
- state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {
45
+ const from = range.$from.pos
46
+ const to = range.$to.pos
47
+
48
+ state.doc.nodesBetween(from, to, (node, pos) => {
44
49
  if (nodeType && nodeType === node.type) {
45
50
  tr.setNodeMarkup(pos, undefined, {
46
51
  ...node.attrs,
@@ -51,10 +56,17 @@ export const updateAttributes: RawCommands['updateAttributes'] = (typeOrName, at
51
56
  if (markType && node.marks.length) {
52
57
  node.marks.forEach(mark => {
53
58
  if (markType === mark.type) {
54
- tr.addMark(pos, pos + node.nodeSize, markType.create({
55
- ...mark.attrs,
56
- ...attributes,
57
- }))
59
+ const trimmedFrom = Math.max(pos, from)
60
+ const trimmedTo = Math.min(pos + node.nodeSize, to)
61
+
62
+ tr.addMark(
63
+ trimmedFrom,
64
+ trimmedTo,
65
+ markType.create({
66
+ ...mark.attrs,
67
+ ...attributes,
68
+ }),
69
+ )
58
70
  }
59
71
  })
60
72
  }
@@ -1,27 +1,22 @@
1
- import { wrapIn as originalWrapIn } from 'prosemirror-commands'
2
- import { NodeType } from 'prosemirror-model'
3
- import { AnyObject, Command, RawCommands } from '../types'
4
- import isNodeActive from '../helpers/isNodeActive'
5
- import getNodeType from '../helpers/getNodeType'
1
+ import { wrapIn as originalWrapIn } from '@tiptap/pm/commands'
2
+ import { NodeType } from '@tiptap/pm/model'
3
+
4
+ import { getNodeType } from '../helpers/getNodeType'
5
+ import { RawCommands } from '../types'
6
6
 
7
7
  declare module '@tiptap/core' {
8
- interface Commands {
8
+ interface Commands<ReturnType> {
9
9
  wrapIn: {
10
10
  /**
11
11
  * Wraps nodes in another node.
12
12
  */
13
- wrapIn: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,
13
+ wrapIn: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType
14
14
  }
15
15
  }
16
16
  }
17
17
 
18
18
  export const wrapIn: RawCommands['wrapIn'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {
19
19
  const type = getNodeType(typeOrName, state.schema)
20
- const isActive = isNodeActive(state, type, attributes)
21
-
22
- if (isActive) {
23
- return false
24
- }
25
20
 
26
21
  return originalWrapIn(type, attributes)(state, dispatch)
27
22
  }
@@ -1,15 +1,16 @@
1
- import { wrapInList as originalWrapInList } from 'prosemirror-schema-list'
2
- import { NodeType } from 'prosemirror-model'
3
- import { AnyObject, Command, RawCommands } from '../types'
4
- import getNodeType from '../helpers/getNodeType'
1
+ import { NodeType } from '@tiptap/pm/model'
2
+ import { wrapInList as originalWrapInList } 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
  wrapInList: {
9
10
  /**
10
11
  * Wrap a node in a list.
11
12
  */
12
- wrapInList: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,
13
+ wrapInList: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType
13
14
  }
14
15
  }
15
16
  }
@@ -1,40 +1,11 @@
1
- import { Editor } from '@tiptap/core'
2
- import { Plugin, PluginKey } from 'prosemirror-state'
3
- import { Extension } from '../Extension'
4
-
5
- const textBetween = (
6
- editor: Editor,
7
- from: number,
8
- to: number,
9
- blockSeparator?: string,
10
- leafText?: string,
11
- ): string => {
12
- let text = ''
13
- let separated = true
14
-
15
- editor.state.doc.nodesBetween(from, to, (node, pos) => {
16
- const textSerializer = editor.extensionManager.textSerializers[node.type.name]
1
+ import { Plugin, PluginKey } from '@tiptap/pm/state'
17
2
 
18
- if (textSerializer) {
19
- text += textSerializer({ node })
20
- separated = !blockSeparator
21
- } else if (node.isText) {
22
- text += node?.text?.slice(Math.max(from, pos) - pos, to - pos)
23
- separated = !blockSeparator
24
- } else if (node.isLeaf && leafText) {
25
- text += leafText
26
- separated = !blockSeparator
27
- } else if (!separated && node.isBlock) {
28
- text += blockSeparator
29
- separated = true
30
- }
31
- }, 0)
32
-
33
- return text
34
- }
3
+ import { Extension } from '../Extension'
4
+ import { getTextBetween } from '../helpers/getTextBetween'
5
+ import { getTextSerializersFromSchema } from '../helpers/getTextSerializersFromSchema'
35
6
 
36
7
  export const ClipboardTextSerializer = Extension.create({
37
- name: 'editable',
8
+ name: 'clipboardTextSerializer',
38
9
 
39
10
  addProseMirrorPlugins() {
40
11
  return [
@@ -43,9 +14,17 @@ export const ClipboardTextSerializer = Extension.create({
43
14
  props: {
44
15
  clipboardTextSerializer: () => {
45
16
  const { editor } = this
46
- const { from, to } = editor.state.selection
17
+ const { state, schema } = editor
18
+ const { doc, selection } = state
19
+ const { ranges } = selection
20
+ const from = Math.min(...ranges.map(range => range.$from.pos))
21
+ const to = Math.max(...ranges.map(range => range.$to.pos))
22
+ const textSerializers = getTextSerializersFromSchema(schema)
23
+ const range = { from, to }
47
24
 
48
- return textBetween(editor, from, to, '\n')
25
+ return getTextBetween(doc, range, {
26
+ textSerializers,
27
+ })
49
28
  },
50
29
  },
51
30
  }),
@@ -1,158 +1,14 @@
1
+ import * as commands from '../commands'
1
2
  import { Extension } from '../Extension'
2
- import * as blur from '../commands/blur'
3
- import * as clearContent from '../commands/clearContent'
4
- import * as clearNodes from '../commands/clearNodes'
5
- import * as command from '../commands/command'
6
- import * as createParagraphNear from '../commands/createParagraphNear'
7
- import * as deleteRange from '../commands/deleteRange'
8
- import * as deleteSelection from '../commands/deleteSelection'
9
- import * as enter from '../commands/enter'
10
- import * as exitCode from '../commands/exitCode'
11
- import * as extendMarkRange from '../commands/extendMarkRange'
12
- import * as first from '../commands/first'
13
- import * as focus from '../commands/focus'
14
- import * as insertContent from '../commands/insertContent'
15
- import * as insertHTML from '../commands/insertHTML'
16
- import * as insertNode from '../commands/insertNode'
17
- import * as insertText from '../commands/insertText'
18
- import * as joinBackward from '../commands/joinBackward'
19
- import * as joinForward from '../commands/joinForward'
20
- import * as keyboardShortcut from '../commands/keyboardShortcut'
21
- import * as lift from '../commands/lift'
22
- import * as liftEmptyBlock from '../commands/liftEmptyBlock'
23
- import * as liftListItem from '../commands/liftListItem'
24
- import * as newlineInCode from '../commands/newlineInCode'
25
- import * as replace from '../commands/replace'
26
- import * as replaceRange from '../commands/replaceRange'
27
- import * as resetAttributes from '../commands/resetAttributes'
28
- import * as resetNodeAttributes from '../commands/resetNodeAttributes'
29
- import * as scrollIntoView from '../commands/scrollIntoView'
30
- import * as selectAll from '../commands/selectAll'
31
- import * as selectNodeBackward from '../commands/selectNodeBackward'
32
- import * as selectNodeForward from '../commands/selectNodeForward'
33
- import * as selectParentNode from '../commands/selectParentNode'
34
- import * as setContent from '../commands/setContent'
35
- import * as setMark from '../commands/setMark'
36
- import * as setNode from '../commands/setNode'
37
- import * as sinkListItem from '../commands/sinkListItem'
38
- import * as splitBlock from '../commands/splitBlock'
39
- import * as splitListItem from '../commands/splitListItem'
40
- import * as toggleList from '../commands/toggleList'
41
- import * as toggleMark from '../commands/toggleMark'
42
- import * as toggleNode from '../commands/toggleNode'
43
- import * as toggleWrap from '../commands/toggleWrap'
44
- import * as undoInputRule from '../commands/undoInputRule'
45
- import * as unsetAllMarks from '../commands/unsetAllMarks'
46
- import * as unsetMark from '../commands/unsetMark'
47
- import * as updateAttributes from '../commands/updateAttributes'
48
- import * as updateNodeAttributes from '../commands/updateNodeAttributes'
49
- import * as wrapIn from '../commands/wrapIn'
50
- import * as wrapInList from '../commands/wrapInList'
51
3
 
52
- export { blur }
53
- export { clearContent }
54
- export { clearNodes }
55
- export { command }
56
- export { createParagraphNear }
57
- export { deleteRange }
58
- export { deleteSelection }
59
- export { enter }
60
- export { exitCode }
61
- export { extendMarkRange }
62
- export { first }
63
- export { focus }
64
- export { insertContent }
65
- export { insertHTML }
66
- export { insertNode }
67
- export { insertText }
68
- export { joinBackward }
69
- export { joinForward }
70
- export { keyboardShortcut }
71
- export { lift }
72
- export { liftEmptyBlock }
73
- export { liftListItem }
74
- export { newlineInCode }
75
- export { replace }
76
- export { replaceRange }
77
- export { resetAttributes }
78
- export { resetNodeAttributes }
79
- export { scrollIntoView }
80
- export { selectAll }
81
- export { selectNodeBackward }
82
- export { selectNodeForward }
83
- export { selectParentNode }
84
- export { setContent }
85
- export { setMark }
86
- export { setNode }
87
- export { sinkListItem }
88
- export { splitBlock }
89
- export { splitListItem }
90
- export { toggleList }
91
- export { toggleMark }
92
- export { toggleNode }
93
- export { toggleWrap }
94
- export { undoInputRule }
95
- export { unsetAllMarks }
96
- export { unsetMark }
97
- export { updateAttributes }
98
- export { updateNodeAttributes }
99
- export { wrapIn }
100
- export { wrapInList }
4
+ export * from '../commands'
101
5
 
102
6
  export const Commands = Extension.create({
103
7
  name: 'commands',
104
8
 
105
9
  addCommands() {
106
10
  return {
107
- ...blur,
108
- ...clearContent,
109
- ...clearNodes,
110
- ...command,
111
- ...createParagraphNear,
112
- ...deleteRange,
113
- ...deleteSelection,
114
- ...enter,
115
- ...exitCode,
116
- ...extendMarkRange,
117
- ...first,
118
- ...focus,
119
- ...insertContent,
120
- ...insertHTML,
121
- ...insertNode,
122
- ...insertText,
123
- ...joinBackward,
124
- ...joinForward,
125
- ...keyboardShortcut,
126
- ...lift,
127
- ...liftEmptyBlock,
128
- ...liftListItem,
129
- ...newlineInCode,
130
- ...replace,
131
- ...replaceRange,
132
- ...resetAttributes,
133
- ...resetNodeAttributes,
134
- ...scrollIntoView,
135
- ...selectAll,
136
- ...selectNodeBackward,
137
- ...selectNodeForward,
138
- ...selectParentNode,
139
- ...setContent,
140
- ...setMark,
141
- ...setNode,
142
- ...sinkListItem,
143
- ...splitBlock,
144
- ...splitListItem,
145
- ...toggleList,
146
- ...toggleMark,
147
- ...toggleNode,
148
- ...toggleWrap,
149
- ...undoInputRule,
150
- ...unsetAllMarks,
151
- ...unsetMark,
152
- ...updateAttributes,
153
- ...updateNodeAttributes,
154
- ...wrapIn,
155
- ...wrapInList,
11
+ ...commands,
156
12
  }
157
13
  },
158
14
  })
@@ -1,4 +1,5 @@
1
- import { Plugin, PluginKey } from 'prosemirror-state'
1
+ import { Plugin, PluginKey } from '@tiptap/pm/state'
2
+
2
3
  import { Extension } from '../Extension'
3
4
 
4
5
  export const Editable = Extension.create({
@@ -1,4 +1,5 @@
1
- import { Plugin, PluginKey } from 'prosemirror-state'
1
+ import { Plugin, PluginKey } from '@tiptap/pm/state'
2
+
2
3
  import { Extension } from '../Extension'
3
4
 
4
5
  export const FocusEvents = Extension.create({
@@ -11,11 +12,8 @@ export const FocusEvents = Extension.create({
11
12
  new Plugin({
12
13
  key: new PluginKey('focusEvents'),
13
14
  props: {
14
- attributes: {
15
- tabindex: '0',
16
- },
17
15
  handleDOMEvents: {
18
- focus: (view, event) => {
16
+ focus: (view, event: Event) => {
19
17
  editor.isFocused = true
20
18
 
21
19
  const transaction = editor.state.tr
@@ -26,7 +24,7 @@ export const FocusEvents = Extension.create({
26
24
 
27
25
  return false
28
26
  },
29
- blur: (view, event) => {
27
+ blur: (view, event: Event) => {
30
28
  editor.isFocused = false
31
29
 
32
30
  const transaction = editor.state.tr
@@ -3,3 +3,4 @@ export { Commands } from './commands'
3
3
  export { Editable } from './editable'
4
4
  export { FocusEvents } from './focusEvents'
5
5
  export { Keymap } from './keymap'
6
+ export { Tabindex } from './tabindex'