@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
@@ -0,0 +1,102 @@
1
+ import { Fragment, Node as ProseMirrorNode, ParseOptions } from '@tiptap/pm/model'
2
+
3
+ import { createNodeFromContent } from '../helpers/createNodeFromContent'
4
+ import { selectionToInsertionEnd } from '../helpers/selectionToInsertionEnd'
5
+ import { Content, Range, RawCommands } from '../types'
6
+
7
+ declare module '@tiptap/core' {
8
+ interface Commands<ReturnType> {
9
+ insertContentAt: {
10
+ /**
11
+ * Insert a node or string of HTML at a specific position.
12
+ */
13
+ insertContentAt: (
14
+ position: number | Range,
15
+ value: Content,
16
+ options?: {
17
+ parseOptions?: ParseOptions
18
+ updateSelection?: boolean
19
+ },
20
+ ) => ReturnType
21
+ }
22
+ }
23
+ }
24
+
25
+ const isFragment = (nodeOrFragment: ProseMirrorNode | Fragment): nodeOrFragment is Fragment => {
26
+ return nodeOrFragment.toString().startsWith('<')
27
+ }
28
+
29
+ export const insertContentAt: RawCommands['insertContentAt'] = (position, value, options) => ({ tr, dispatch, editor }) => {
30
+ if (dispatch) {
31
+ options = {
32
+ parseOptions: {},
33
+ updateSelection: true,
34
+ ...options,
35
+ }
36
+
37
+ const content = createNodeFromContent(value, editor.schema, {
38
+ parseOptions: {
39
+ preserveWhitespace: 'full',
40
+ ...options.parseOptions,
41
+ },
42
+ })
43
+
44
+ // don’t dispatch an empty fragment because this can lead to strange errors
45
+ if (content.toString() === '<>') {
46
+ return true
47
+ }
48
+
49
+ let { from, to } = typeof position === 'number' ? { from: position, to: position } : position
50
+
51
+ let isOnlyTextContent = true
52
+ let isOnlyBlockContent = true
53
+ const nodes = isFragment(content) ? content : [content]
54
+
55
+ nodes.forEach(node => {
56
+ // check if added node is valid
57
+ node.check()
58
+
59
+ isOnlyTextContent = isOnlyTextContent ? node.isText && node.marks.length === 0 : false
60
+
61
+ isOnlyBlockContent = isOnlyBlockContent ? node.isBlock : false
62
+ })
63
+
64
+ // check if we can replace the wrapping node by
65
+ // the newly inserted content
66
+ // example:
67
+ // replace an empty paragraph by an inserted image
68
+ // instead of inserting the image below the paragraph
69
+ if (from === to && isOnlyBlockContent) {
70
+ const { parent } = tr.doc.resolve(from)
71
+ const isEmptyTextBlock = parent.isTextblock && !parent.type.spec.code && !parent.childCount
72
+
73
+ if (isEmptyTextBlock) {
74
+ from -= 1
75
+ to += 1
76
+ }
77
+ }
78
+
79
+ // if there is only plain text we have to use `insertText`
80
+ // because this will keep the current marks
81
+ if (isOnlyTextContent) {
82
+ // if value is string, we can use it directly
83
+ // otherwise if it is an array, we have to join it
84
+ if (Array.isArray(value)) {
85
+ tr.insertText(value.map(v => v.text || '').join(''), from, to)
86
+ } else if (typeof value === 'object' && !!value && !!value.text) {
87
+ tr.insertText(value.text, from, to)
88
+ } else {
89
+ tr.insertText(value as string, from, to)
90
+ }
91
+ } else {
92
+ tr.replaceWith(from, to, content)
93
+ }
94
+
95
+ // set cursor at end of inserted content
96
+ if (options.updateSelection) {
97
+ selectionToInsertionEnd(tr, tr.steps.length - 1, -1)
98
+ }
99
+ }
100
+
101
+ return true
102
+ }
@@ -0,0 +1,53 @@
1
+ import {
2
+ joinBackward as originalJoinBackward,
3
+ joinDown as originalJoinDown,
4
+ joinForward as originalJoinForward,
5
+ joinUp as originalJoinUp,
6
+ } from '@tiptap/pm/commands'
7
+
8
+ import { RawCommands } from '../types'
9
+
10
+ declare module '@tiptap/core' {
11
+ interface Commands<ReturnType> {
12
+ joinUp: {
13
+ /**
14
+ * Join two nodes Up.
15
+ */
16
+ joinUp: () => ReturnType
17
+ }
18
+ joinDown: {
19
+ /**
20
+ * Join two nodes Down.
21
+ */
22
+ joinDown: () => ReturnType
23
+ }
24
+ joinBackward: {
25
+ /**
26
+ * Join two nodes Backwards.
27
+ */
28
+ joinBackward: () => ReturnType
29
+ }
30
+ joinForward: {
31
+ /**
32
+ * Join two nodes Forwards.
33
+ */
34
+ joinForward: () => ReturnType
35
+ }
36
+ }
37
+ }
38
+
39
+ export const joinUp: RawCommands['joinUp'] = () => ({ state, dispatch }) => {
40
+ return originalJoinUp(state, dispatch)
41
+ }
42
+
43
+ export const joinDown: RawCommands['joinDown'] = () => ({ state, dispatch }) => {
44
+ return originalJoinDown(state, dispatch)
45
+ }
46
+
47
+ export const joinBackward: RawCommands['joinBackward'] = () => ({ state, dispatch }) => {
48
+ return originalJoinBackward(state, dispatch)
49
+ }
50
+
51
+ export const joinForward: RawCommands['joinForward'] = () => ({ state, dispatch }) => {
52
+ return originalJoinForward(state, dispatch)
53
+ }
@@ -1,6 +1,6 @@
1
- import { Command, RawCommands } from '../types'
2
-
3
- const mac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false
1
+ import { RawCommands } from '../types'
2
+ import { isiOS } from '../utilities/isiOS'
3
+ import { isMacOS } from '../utilities/isMacOS'
4
4
 
5
5
  function normalizeKeyName(name: string) {
6
6
  const parts = name.split(/-(?!$)/)
@@ -27,7 +27,7 @@ function normalizeKeyName(name: string) {
27
27
  } else if (/^s(hift)?$/i.test(mod)) {
28
28
  shift = true
29
29
  } else if (/^mod$/i.test(mod)) {
30
- if (mac) {
30
+ if (isiOS() || isMacOS()) {
31
31
  meta = true
32
32
  } else {
33
33
  ctrl = true
@@ -57,12 +57,12 @@ function normalizeKeyName(name: string) {
57
57
  }
58
58
 
59
59
  declare module '@tiptap/core' {
60
- interface Commands {
60
+ interface Commands<ReturnType> {
61
61
  keyboardShortcut: {
62
62
  /**
63
63
  * Trigger a keyboard shortcut.
64
64
  */
65
- keyboardShortcut: (name: string) => Command,
65
+ keyboardShortcut: (name: string) => ReturnType,
66
66
  }
67
67
  }
68
68
  }
@@ -1,16 +1,17 @@
1
- import { lift as originalLift } from 'prosemirror-commands'
2
- import { NodeType } from 'prosemirror-model'
3
- import { Command, RawCommands, AnyObject } from '../types'
4
- import isNodeActive from '../helpers/isNodeActive'
5
- import getNodeType from '../helpers/getNodeType'
1
+ import { lift as originalLift } from '@tiptap/pm/commands'
2
+ import { NodeType } from '@tiptap/pm/model'
3
+
4
+ import { getNodeType } from '../helpers/getNodeType'
5
+ import { isNodeActive } from '../helpers/isNodeActive'
6
+ import { RawCommands } from '../types'
6
7
 
7
8
  declare module '@tiptap/core' {
8
- interface Commands {
9
+ interface Commands<ReturnType> {
9
10
  lift: {
10
11
  /**
11
12
  * Removes an existing wrap.
12
13
  */
13
- lift: (typeOrName: string | NodeType, attributes?: AnyObject) => Command,
14
+ lift: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType
14
15
  }
15
16
  }
16
17
  }
@@ -1,13 +1,14 @@
1
- import { liftEmptyBlock as originalLiftEmptyBlock } from 'prosemirror-commands'
2
- import { Command, RawCommands } from '../types'
1
+ import { liftEmptyBlock as originalLiftEmptyBlock } from '@tiptap/pm/commands'
2
+
3
+ import { RawCommands } from '../types'
3
4
 
4
5
  declare module '@tiptap/core' {
5
- interface Commands {
6
+ interface Commands<ReturnType> {
6
7
  liftEmptyBlock: {
7
8
  /**
8
9
  * Lift block if empty.
9
10
  */
10
- liftEmptyBlock: () => Command,
11
+ liftEmptyBlock: () => ReturnType,
11
12
  }
12
13
  }
13
14
  }
@@ -1,15 +1,16 @@
1
- import { liftListItem as originalLiftListItem } from 'prosemirror-schema-list'
2
- import { NodeType } from 'prosemirror-model'
3
- import { Command, RawCommands } from '../types'
4
- import getNodeType from '../helpers/getNodeType'
1
+ import { NodeType } from '@tiptap/pm/model'
2
+ import { liftListItem as originalLiftListItem } 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
  liftListItem: {
9
10
  /**
10
11
  * Lift the list item into a wrapping list.
11
12
  */
12
- liftListItem: (typeOrName: string | NodeType) => Command,
13
+ liftListItem: (typeOrName: string | NodeType) => ReturnType
13
14
  }
14
15
  }
15
16
  }
@@ -1,13 +1,14 @@
1
- import { newlineInCode as originalNewlineInCode } from 'prosemirror-commands'
2
- import { Command, RawCommands } from '../types'
1
+ import { newlineInCode as originalNewlineInCode } from '@tiptap/pm/commands'
2
+
3
+ import { RawCommands } from '../types'
3
4
 
4
5
  declare module '@tiptap/core' {
5
- interface Commands {
6
+ interface Commands<ReturnType> {
6
7
  newlineInCode: {
7
8
  /**
8
9
  * Add a newline character in code.
9
10
  */
10
- newlineInCode: () => Command,
11
+ newlineInCode: () => ReturnType
11
12
  }
12
13
  }
13
14
  }
@@ -1,17 +1,21 @@
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 deleteProps from '../utilities/deleteProps'
6
- import { 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'
7
+ import { deleteProps } from '../utilities/deleteProps'
7
8
 
8
9
  declare module '@tiptap/core' {
9
- interface Commands {
10
+ interface Commands<ReturnType> {
10
11
  resetAttributes: {
11
12
  /**
12
13
  * Resets some node attributes to the default value.
13
14
  */
14
- resetAttributes: (typeOrName: string | NodeType | MarkType, attributes: string | string[]) => Command,
15
+ resetAttributes: (
16
+ typeOrName: string | NodeType | MarkType,
17
+ attributes: string | string[],
18
+ ) => ReturnType
15
19
  }
16
20
  }
17
21
  }
@@ -21,9 +25,7 @@ export const resetAttributes: RawCommands['resetAttributes'] = (typeOrName, attr
21
25
  let markType: MarkType | null = null
22
26
 
23
27
  const schemaType = getSchemaTypeNameByName(
24
- typeof typeOrName === 'string'
25
- ? typeOrName
26
- : typeOrName.name,
28
+ typeof typeOrName === 'string' ? typeOrName : typeOrName.name,
27
29
  state.schema,
28
30
  )
29
31
 
@@ -49,7 +51,11 @@ export const resetAttributes: RawCommands['resetAttributes'] = (typeOrName, attr
49
51
  if (markType && node.marks.length) {
50
52
  node.marks.forEach(mark => {
51
53
  if (markType === mark.type) {
52
- tr.addMark(pos, pos + node.nodeSize, markType.create(deleteProps(mark.attrs, attributes)))
54
+ tr.addMark(
55
+ pos,
56
+ pos + node.nodeSize,
57
+ markType.create(deleteProps(mark.attrs, attributes)),
58
+ )
53
59
  }
54
60
  })
55
61
  }
@@ -1,12 +1,12 @@
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
  scrollIntoView: {
6
6
  /**
7
7
  * Scroll the selection into view.
8
8
  */
9
- scrollIntoView: () => Command,
9
+ scrollIntoView: () => ReturnType,
10
10
  }
11
11
  }
12
12
  }
@@ -1,17 +1,19 @@
1
- import { selectAll as originalSelectAll } from 'prosemirror-commands'
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
  selectAll: {
7
6
  /**
8
7
  * Select the whole document.
9
8
  */
10
- selectAll: () => Command,
9
+ selectAll: () => ReturnType,
11
10
  }
12
11
  }
13
12
  }
14
13
 
15
- export const selectAll: RawCommands['selectAll'] = () => ({ state, dispatch }) => {
16
- return originalSelectAll(state, dispatch)
14
+ export const selectAll: RawCommands['selectAll'] = () => ({ tr, commands }) => {
15
+ return commands.setTextSelection({
16
+ from: 0,
17
+ to: tr.doc.content.size,
18
+ })
17
19
  }
@@ -1,13 +1,14 @@
1
- import { selectNodeBackward as originalSelectNodeBackward } from 'prosemirror-commands'
2
- import { Command, RawCommands } from '../types'
1
+ import { selectNodeBackward as originalSelectNodeBackward } from '@tiptap/pm/commands'
2
+
3
+ import { RawCommands } from '../types'
3
4
 
4
5
  declare module '@tiptap/core' {
5
- interface Commands {
6
+ interface Commands<ReturnType> {
6
7
  selectNodeBackward: {
7
8
  /**
8
9
  * Select a node backward.
9
10
  */
10
- selectNodeBackward: () => Command,
11
+ selectNodeBackward: () => ReturnType
11
12
  }
12
13
  }
13
14
  }
@@ -1,13 +1,14 @@
1
- import { selectNodeForward as originalSelectNodeForward } from 'prosemirror-commands'
2
- import { Command, RawCommands } from '../types'
1
+ import { selectNodeForward as originalSelectNodeForward } from '@tiptap/pm/commands'
2
+
3
+ import { RawCommands } from '../types'
3
4
 
4
5
  declare module '@tiptap/core' {
5
- interface Commands {
6
+ interface Commands<ReturnType> {
6
7
  selectNodeForward: {
7
8
  /**
8
9
  * Select a node forward.
9
10
  */
10
- selectNodeForward: () => Command,
11
+ selectNodeForward: () => ReturnType
11
12
  }
12
13
  }
13
14
  }
@@ -1,13 +1,14 @@
1
- import { selectParentNode as originalSelectParentNode } from 'prosemirror-commands'
2
- import { Command, RawCommands } from '../types'
1
+ import { selectParentNode as originalSelectParentNode } from '@tiptap/pm/commands'
2
+
3
+ import { RawCommands } from '../types'
3
4
 
4
5
  declare module '@tiptap/core' {
5
- interface Commands {
6
+ interface Commands<ReturnType> {
6
7
  selectParentNode: {
7
8
  /**
8
9
  * Select the parent node.
9
10
  */
10
- selectParentNode: () => Command,
11
+ selectParentNode: () => ReturnType
11
12
  }
12
13
  }
13
14
  }
@@ -0,0 +1,20 @@
1
+ // @ts-ignore
2
+ // TODO: add types to @types/prosemirror-commands
3
+ import { selectTextblockEnd as originalSelectTextblockEnd } from '@tiptap/pm/commands'
4
+
5
+ import { RawCommands } from '../types'
6
+
7
+ declare module '@tiptap/core' {
8
+ interface Commands<ReturnType> {
9
+ selectTextblockEnd: {
10
+ /**
11
+ * Moves the cursor to the end of current text block.
12
+ */
13
+ selectTextblockEnd: () => ReturnType
14
+ }
15
+ }
16
+ }
17
+
18
+ export const selectTextblockEnd: RawCommands['selectTextblockEnd'] = () => ({ state, dispatch }) => {
19
+ return originalSelectTextblockEnd(state, dispatch)
20
+ }
@@ -0,0 +1,20 @@
1
+ // @ts-ignore
2
+ // TODO: add types to @types/prosemirror-commands
3
+ import { selectTextblockStart as originalSelectTextblockStart } from '@tiptap/pm/commands'
4
+
5
+ import { RawCommands } from '../types'
6
+
7
+ declare module '@tiptap/core' {
8
+ interface Commands<ReturnType> {
9
+ selectTextblockStart: {
10
+ /**
11
+ * Moves the cursor to the start of current text block.
12
+ */
13
+ selectTextblockStart: () => ReturnType
14
+ }
15
+ }
16
+ }
17
+
18
+ export const selectTextblockStart: RawCommands['selectTextblockStart'] = () => ({ state, dispatch }) => {
19
+ return originalSelectTextblockStart(state, dispatch)
20
+ }
@@ -1,23 +1,19 @@
1
- import { TextSelection } from 'prosemirror-state'
2
- import createDocument from '../helpers/createDocument'
3
- import {
4
- AnyObject,
5
- Command,
6
- RawCommands,
7
- Content,
8
- } from '../types'
1
+ import { ParseOptions } from '@tiptap/pm/model'
2
+
3
+ import { createDocument } from '../helpers/createDocument'
4
+ import { Content, RawCommands } from '../types'
9
5
 
10
6
  declare module '@tiptap/core' {
11
- interface Commands {
7
+ interface Commands<ReturnType> {
12
8
  setContent: {
13
9
  /**
14
10
  * Replace the whole document with new content.
15
11
  */
16
12
  setContent: (
17
13
  content: Content,
18
- emitUpdate?: Boolean,
19
- parseOptions?: AnyObject,
20
- ) => Command,
14
+ emitUpdate?: boolean,
15
+ parseOptions?: ParseOptions,
16
+ ) => ReturnType
21
17
  }
22
18
  }
23
19
  }
@@ -25,12 +21,9 @@ declare module '@tiptap/core' {
25
21
  export const setContent: RawCommands['setContent'] = (content, emitUpdate = false, parseOptions = {}) => ({ tr, editor, dispatch }) => {
26
22
  const { doc } = tr
27
23
  const document = createDocument(content, editor.schema, parseOptions)
28
- const selection = TextSelection.create(doc, 0, doc.content.size)
29
24
 
30
25
  if (dispatch) {
31
- tr.setSelection(selection)
32
- .replaceSelectionWith(document, false)
33
- .setMeta('preventUpdate', !emitUpdate)
26
+ tr.replaceWith(0, doc.content.size, document).setMeta('preventUpdate', !emitUpdate)
34
27
  }
35
28
 
36
29
  return true
@@ -1,38 +1,114 @@
1
- import { MarkType } from 'prosemirror-model'
2
- import { AnyObject, Command, RawCommands } from '../types'
3
- import getMarkType from '../helpers/getMarkType'
4
- import getMarkAttributes from '../helpers/getMarkAttributes'
1
+ import { MarkType, ResolvedPos } from '@tiptap/pm/model'
2
+ import { EditorState, Transaction } from '@tiptap/pm/state'
3
+
4
+ import { isTextSelection } from '../helpers'
5
+ import { getMarkAttributes } from '../helpers/getMarkAttributes'
6
+ import { getMarkType } from '../helpers/getMarkType'
7
+ import { RawCommands } from '../types'
5
8
 
6
9
  declare module '@tiptap/core' {
7
- interface Commands {
10
+ interface Commands<ReturnType> {
8
11
  setMark: {
9
12
  /**
10
13
  * Add a mark with new attributes.
11
14
  */
12
- setMark: (typeOrName: string | MarkType, attributes?: AnyObject) => Command,
15
+ setMark: (typeOrName: string | MarkType, attributes?: Record<string, any>) => ReturnType
13
16
  }
14
17
  }
15
18
  }
16
19
 
20
+ function canSetMark(state: EditorState, tr: Transaction, newMarkType: MarkType) {
21
+ const { selection } = tr
22
+ let cursor: ResolvedPos | null = null
23
+
24
+ if (isTextSelection(selection)) {
25
+ cursor = selection.$cursor
26
+ }
27
+
28
+ if (cursor) {
29
+ const currentMarks = state.storedMarks ?? cursor.marks()
30
+
31
+ // There can be no current marks that exclude the new mark
32
+ return (
33
+ !!newMarkType.isInSet(currentMarks)
34
+ || !currentMarks.some(mark => mark.type.excludes(newMarkType))
35
+ )
36
+ }
37
+
38
+ const { ranges } = selection
39
+
40
+ return ranges.some(({ $from, $to }) => {
41
+ let someNodeSupportsMark = $from.depth === 0
42
+ ? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType)
43
+ : false
44
+
45
+ state.doc.nodesBetween($from.pos, $to.pos, (node, _pos, parent) => {
46
+ // If we already found a mark that we can enable, return false to bypass the remaining search
47
+ if (someNodeSupportsMark) {
48
+ return false
49
+ }
50
+
51
+ if (node.isInline) {
52
+ const parentAllowsMarkType = !parent || parent.type.allowsMarkType(newMarkType)
53
+ const currentMarksAllowMarkType = !!newMarkType.isInSet(node.marks)
54
+ || !node.marks.some(otherMark => otherMark.type.excludes(newMarkType))
55
+
56
+ someNodeSupportsMark = parentAllowsMarkType && currentMarksAllowMarkType
57
+ }
58
+ return !someNodeSupportsMark
59
+ })
60
+
61
+ return someNodeSupportsMark
62
+ })
63
+ }
17
64
  export const setMark: RawCommands['setMark'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {
18
65
  const { selection } = tr
19
66
  const { empty, ranges } = selection
20
67
  const type = getMarkType(typeOrName, state.schema)
21
- const oldAttributes = getMarkAttributes(state, type)
22
- const newAttributes = {
23
- ...oldAttributes,
24
- ...attributes,
25
- }
26
68
 
27
69
  if (dispatch) {
28
70
  if (empty) {
29
- tr.addStoredMark(type.create(newAttributes))
71
+ const oldAttributes = getMarkAttributes(state, type)
72
+
73
+ tr.addStoredMark(
74
+ type.create({
75
+ ...oldAttributes,
76
+ ...attributes,
77
+ }),
78
+ )
30
79
  } else {
31
80
  ranges.forEach(range => {
32
- tr.addMark(range.$from.pos, range.$to.pos, type.create(newAttributes))
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
+ })
33
109
  })
34
110
  }
35
111
  }
36
112
 
37
- return true
113
+ return canSetMark(state, tr, type)
38
114
  }
@@ -0,0 +1,18 @@
1
+ import { RawCommands } from '../types'
2
+
3
+ declare module '@tiptap/core' {
4
+ interface Commands<ReturnType> {
5
+ setMeta: {
6
+ /**
7
+ * Store a metadata property in the current transaction.
8
+ */
9
+ setMeta: (key: string, value: any) => ReturnType,
10
+ }
11
+ }
12
+ }
13
+
14
+ export const setMeta: RawCommands['setMeta'] = (key, value) => ({ tr }) => {
15
+ tr.setMeta(key, value)
16
+
17
+ return true
18
+ }