@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,24 +1,30 @@
1
1
  import { keymap } from '@tiptap/pm/keymap'
2
- import { Schema } from '@tiptap/pm/model'
3
- import { Plugin } from '@tiptap/pm/state'
4
- import { NodeViewConstructor } from '@tiptap/pm/view'
2
+ import type { Schema } from '@tiptap/pm/model'
3
+ import type { Plugin } from '@tiptap/pm/state'
4
+ import type { MarkViewConstructor, NodeViewConstructor } from '@tiptap/pm/view'
5
5
 
6
6
  import type { Editor } from './Editor.js'
7
- import { getAttributesFromExtensions } from './helpers/getAttributesFromExtensions.js'
8
- import { getExtensionField } from './helpers/getExtensionField.js'
9
- import { getNodeType } from './helpers/getNodeType.js'
10
- import { getRenderedAttributes } from './helpers/getRenderedAttributes.js'
11
- import { getSchemaByResolvedExtensions } from './helpers/getSchemaByResolvedExtensions.js'
12
- import { getSchemaTypeByName } from './helpers/getSchemaTypeByName.js'
13
- import { isExtensionRulesEnabled } from './helpers/isExtensionRulesEnabled.js'
14
- import { splitExtensions } from './helpers/splitExtensions.js'
15
- import type { NodeConfig } from './index.js'
16
- import { InputRule, inputRulesPlugin } from './InputRule.js'
7
+ import {
8
+ flattenExtensions,
9
+ getAttributesFromExtensions,
10
+ getExtensionField,
11
+ getNodeType,
12
+ getRenderedAttributes,
13
+ getSchemaByResolvedExtensions,
14
+ getSchemaTypeByName,
15
+ isExtensionRulesEnabled,
16
+ resolveExtensions,
17
+ sortExtensions,
18
+ splitExtensions,
19
+ } from './helpers/index.js'
20
+ import { type MarkConfig, type NodeConfig, type Storage, getMarkType } from './index.js'
21
+ import type { InputRule } from './InputRule.js'
22
+ import { inputRulesPlugin } from './InputRule.js'
17
23
  import { Mark } from './Mark.js'
18
- import { PasteRule, pasteRulesPlugin } from './PasteRule.js'
19
- import { AnyConfig, Extensions, RawCommands } from './types.js'
24
+ import type { PasteRule } from './PasteRule.js'
25
+ import { pasteRulesPlugin } from './PasteRule.js'
26
+ import type { AnyConfig, Extensions, RawCommands } from './types.js'
20
27
  import { callOrReturn } from './utilities/callOrReturn.js'
21
- import { findDuplicates } from './utilities/findDuplicates.js'
22
28
 
23
29
  export class ExtensionManager {
24
30
  editor: Editor
@@ -31,87 +37,16 @@ export class ExtensionManager {
31
37
 
32
38
  constructor(extensions: Extensions, editor: Editor) {
33
39
  this.editor = editor
34
- this.extensions = ExtensionManager.resolve(extensions)
40
+ this.extensions = resolveExtensions(extensions)
35
41
  this.schema = getSchemaByResolvedExtensions(this.extensions, editor)
36
42
  this.setupExtensions()
37
43
  }
38
44
 
39
- /**
40
- * Returns a flattened and sorted extension list while
41
- * also checking for duplicated extensions and warns the user.
42
- * @param extensions An array of Tiptap extensions
43
- * @returns An flattened and sorted array of Tiptap extensions
44
- */
45
- static resolve(extensions: Extensions): Extensions {
46
- const resolvedExtensions = ExtensionManager.sort(ExtensionManager.flatten(extensions))
47
- const duplicatedNames = findDuplicates(resolvedExtensions.map(extension => extension.name))
48
-
49
- if (duplicatedNames.length) {
50
- console.warn(
51
- `[tiptap warn]: Duplicate extension names found: [${duplicatedNames
52
- .map(item => `'${item}'`)
53
- .join(', ')}]. This can lead to issues.`,
54
- )
55
- }
45
+ static resolve = resolveExtensions
56
46
 
57
- return resolvedExtensions
58
- }
47
+ static sort = sortExtensions
59
48
 
60
- /**
61
- * Create a flattened array of extensions by traversing the `addExtensions` field.
62
- * @param extensions An array of Tiptap extensions
63
- * @returns A flattened array of Tiptap extensions
64
- */
65
- static flatten(extensions: Extensions): Extensions {
66
- return (
67
- extensions
68
- .map(extension => {
69
- const context = {
70
- name: extension.name,
71
- options: extension.options,
72
- storage: extension.storage,
73
- }
74
-
75
- const addExtensions = getExtensionField<AnyConfig['addExtensions']>(
76
- extension,
77
- 'addExtensions',
78
- context,
79
- )
80
-
81
- if (addExtensions) {
82
- return [extension, ...this.flatten(addExtensions())]
83
- }
84
-
85
- return extension
86
- })
87
- // `Infinity` will break TypeScript so we set a number that is probably high enough
88
- .flat(10)
89
- )
90
- }
91
-
92
- /**
93
- * Sort extensions by priority.
94
- * @param extensions An array of Tiptap extensions
95
- * @returns A sorted array of Tiptap extensions by priority
96
- */
97
- static sort(extensions: Extensions): Extensions {
98
- const defaultPriority = 100
99
-
100
- return extensions.sort((a, b) => {
101
- const priorityA = getExtensionField<AnyConfig['priority']>(a, 'priority') || defaultPriority
102
- const priorityB = getExtensionField<AnyConfig['priority']>(b, 'priority') || defaultPriority
103
-
104
- if (priorityA > priorityB) {
105
- return -1
106
- }
107
-
108
- if (priorityA < priorityB) {
109
- return 1
110
- }
111
-
112
- return 0
113
- })
114
- }
49
+ static flatten = flattenExtensions
115
50
 
116
51
  /**
117
52
  * Get all commands from the extensions.
@@ -122,16 +57,12 @@ export class ExtensionManager {
122
57
  const context = {
123
58
  name: extension.name,
124
59
  options: extension.options,
125
- storage: extension.storage,
60
+ storage: this.editor.extensionStorage[extension.name as keyof Storage],
126
61
  editor: this.editor,
127
62
  type: getSchemaTypeByName(extension.name, this.schema),
128
63
  }
129
64
 
130
- const addCommands = getExtensionField<AnyConfig['addCommands']>(
131
- extension,
132
- 'addCommands',
133
- context,
134
- )
65
+ const addCommands = getExtensionField<AnyConfig['addCommands']>(extension, 'addCommands', context)
135
66
 
136
67
  if (!addCommands) {
137
68
  return commands
@@ -156,7 +87,7 @@ export class ExtensionManager {
156
87
  // so it feels more natural to run plugins at the end of an array first.
157
88
  // That’s why we have to reverse the `extensions` array and sort again
158
89
  // based on the `priority` option.
159
- const extensions = ExtensionManager.sort([...this.extensions].reverse())
90
+ const extensions = sortExtensions([...this.extensions].reverse())
160
91
 
161
92
  const inputRules: InputRule[] = []
162
93
  const pasteRules: PasteRule[] = []
@@ -166,7 +97,7 @@ export class ExtensionManager {
166
97
  const context = {
167
98
  name: extension.name,
168
99
  options: extension.options,
169
- storage: extension.storage,
100
+ storage: this.editor.extensionStorage[extension.name as keyof Storage],
170
101
  editor,
171
102
  type: getSchemaTypeByName(extension.name, this.schema),
172
103
  }
@@ -182,7 +113,7 @@ export class ExtensionManager {
182
113
  let defaultBindings: Record<string, () => boolean> = {}
183
114
 
184
115
  // bind exit handling
185
- if (extension.type === 'mark' && getExtensionField<AnyConfig['exitable']>(extension, 'exitable', context)) {
116
+ if (extension.type === 'mark' && getExtensionField<MarkConfig['exitable']>(extension, 'exitable', context)) {
186
117
  defaultBindings.ArrowRight = () => Mark.handleExit({ editor, mark: extension as Mark })
187
118
  }
188
119
 
@@ -200,21 +131,13 @@ export class ExtensionManager {
200
131
 
201
132
  plugins.push(keyMapPlugin)
202
133
 
203
- const addInputRules = getExtensionField<AnyConfig['addInputRules']>(
204
- extension,
205
- 'addInputRules',
206
- context,
207
- )
134
+ const addInputRules = getExtensionField<AnyConfig['addInputRules']>(extension, 'addInputRules', context)
208
135
 
209
136
  if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {
210
137
  inputRules.push(...addInputRules())
211
138
  }
212
139
 
213
- const addPasteRules = getExtensionField<AnyConfig['addPasteRules']>(
214
- extension,
215
- 'addPasteRules',
216
- context,
217
- )
140
+ const addPasteRules = getExtensionField<AnyConfig['addPasteRules']>(extension, 'addPasteRules', context)
218
141
 
219
142
  if (isExtensionRulesEnabled(extension, editor.options.enablePasteRules) && addPasteRules) {
220
143
  pasteRules.push(...addPasteRules())
@@ -269,33 +192,21 @@ export class ExtensionManager {
269
192
  nodeExtensions
270
193
  .filter(extension => !!getExtensionField(extension, 'addNodeView'))
271
194
  .map(extension => {
272
- const extensionAttributes = this.attributes.filter(
273
- attribute => attribute.type === extension.name,
274
- )
195
+ const extensionAttributes = this.attributes.filter(attribute => attribute.type === extension.name)
275
196
  const context = {
276
197
  name: extension.name,
277
198
  options: extension.options,
278
- storage: extension.storage,
199
+ storage: this.editor.extensionStorage[extension.name as keyof Storage],
279
200
  editor,
280
201
  type: getNodeType(extension.name, this.schema),
281
202
  }
282
- const addNodeView = getExtensionField<NodeConfig['addNodeView']>(
283
- extension,
284
- 'addNodeView',
285
- context,
286
- )
203
+ const addNodeView = getExtensionField<NodeConfig['addNodeView']>(extension, 'addNodeView', context)
287
204
 
288
205
  if (!addNodeView) {
289
206
  return []
290
207
  }
291
208
 
292
- const nodeview: NodeViewConstructor = (
293
- node,
294
- view,
295
- getPos,
296
- decorations,
297
- innerDecorations,
298
- ) => {
209
+ const nodeview: NodeViewConstructor = (node, view, getPos, decorations, innerDecorations) => {
299
210
  const HTMLAttributes = getRenderedAttributes(node, extensionAttributes)
300
211
 
301
212
  return addNodeView()({
@@ -317,19 +228,64 @@ export class ExtensionManager {
317
228
  )
318
229
  }
319
230
 
231
+ get markViews(): Record<string, MarkViewConstructor> {
232
+ const { editor } = this
233
+ const { markExtensions } = splitExtensions(this.extensions)
234
+
235
+ return Object.fromEntries(
236
+ markExtensions
237
+ .filter(extension => !!getExtensionField(extension, 'addMarkView'))
238
+ .map(extension => {
239
+ const extensionAttributes = this.attributes.filter(attribute => attribute.type === extension.name)
240
+ const context = {
241
+ name: extension.name,
242
+ options: extension.options,
243
+ storage: this.editor.extensionStorage[extension.name as keyof Storage],
244
+ editor,
245
+ type: getMarkType(extension.name, this.schema),
246
+ }
247
+ const addMarkView = getExtensionField<MarkConfig['addMarkView']>(extension, 'addMarkView', context)
248
+
249
+ if (!addMarkView) {
250
+ return []
251
+ }
252
+
253
+ const markView: MarkViewConstructor = (mark, view, inline) => {
254
+ const HTMLAttributes = getRenderedAttributes(mark, extensionAttributes)
255
+
256
+ return addMarkView()({
257
+ // pass-through
258
+ mark,
259
+ view,
260
+ inline,
261
+ // tiptap-specific
262
+ editor,
263
+ extension,
264
+ HTMLAttributes,
265
+ })
266
+ }
267
+
268
+ return [extension.name, markView]
269
+ }),
270
+ )
271
+ }
272
+
320
273
  /**
321
274
  * Go through all extensions, create extension storages & setup marks
322
275
  * & bind editor event listener.
323
276
  */
324
277
  private setupExtensions() {
325
- this.extensions.forEach(extension => {
326
- // store extension storage in editor
327
- this.editor.extensionStorage[extension.name] = extension.storage
278
+ const extensions = this.extensions
279
+ // re-initialize the extension storage object instance
280
+ this.editor.extensionStorage = Object.fromEntries(
281
+ extensions.map(extension => [extension.name, extension.storage]),
282
+ ) as unknown as Storage
328
283
 
284
+ extensions.forEach(extension => {
329
285
  const context = {
330
286
  name: extension.name,
331
287
  options: extension.options,
332
- storage: extension.storage,
288
+ storage: this.editor.extensionStorage[extension.name as keyof Storage],
333
289
  editor: this.editor,
334
290
  type: getSchemaTypeByName(extension.name, this.schema),
335
291
  }
@@ -342,11 +298,7 @@ export class ExtensionManager {
342
298
  }
343
299
  }
344
300
 
345
- const onBeforeCreate = getExtensionField<AnyConfig['onBeforeCreate']>(
346
- extension,
347
- 'onBeforeCreate',
348
- context,
349
- )
301
+ const onBeforeCreate = getExtensionField<AnyConfig['onBeforeCreate']>(extension, 'onBeforeCreate', context)
350
302
  const onCreate = getExtensionField<AnyConfig['onCreate']>(extension, 'onCreate', context)
351
303
  const onUpdate = getExtensionField<AnyConfig['onUpdate']>(extension, 'onUpdate', context)
352
304
  const onSelectionUpdate = getExtensionField<AnyConfig['onSelectionUpdate']>(
@@ -354,11 +306,7 @@ export class ExtensionManager {
354
306
  'onSelectionUpdate',
355
307
  context,
356
308
  )
357
- const onTransaction = getExtensionField<AnyConfig['onTransaction']>(
358
- extension,
359
- 'onTransaction',
360
- context,
361
- )
309
+ const onTransaction = getExtensionField<AnyConfig['onTransaction']>(extension, 'onTransaction', context)
362
310
  const onFocus = getExtensionField<AnyConfig['onFocus']>(extension, 'onFocus', context)
363
311
  const onBlur = getExtensionField<AnyConfig['onBlur']>(extension, 'onBlur', context)
364
312
  const onDestroy = getExtensionField<AnyConfig['onDestroy']>(extension, 'onDestroy', context)
package/src/InputRule.ts CHANGED
@@ -1,62 +1,55 @@
1
- import { Fragment, Node as ProseMirrorNode } from '@tiptap/pm/model'
2
- import { EditorState, Plugin, TextSelection } from '@tiptap/pm/state'
1
+ import type { Node as ProseMirrorNode } from '@tiptap/pm/model'
2
+ import { Fragment } from '@tiptap/pm/model'
3
+ import type { EditorState, TextSelection } from '@tiptap/pm/state'
4
+ import { Plugin } from '@tiptap/pm/state'
3
5
 
4
6
  import { CommandManager } from './CommandManager.js'
5
- import { Editor } from './Editor.js'
7
+ import type { Editor } from './Editor.js'
6
8
  import { createChainableState } from './helpers/createChainableState.js'
7
9
  import { getHTMLFromFragment } from './helpers/getHTMLFromFragment.js'
8
10
  import { getTextContentFromNodes } from './helpers/getTextContentFromNodes.js'
9
- import {
10
- CanCommands,
11
- ChainedCommands,
12
- ExtendedRegExpMatchArray,
13
- Range,
14
- SingleCommands,
15
- } from './types.js'
11
+ import type { CanCommands, ChainedCommands, ExtendedRegExpMatchArray, Range, SingleCommands } from './types.js'
16
12
  import { isRegExp } from './utilities/isRegExp.js'
17
13
 
18
14
  export type InputRuleMatch = {
19
- index: number;
20
- text: string;
21
- replaceWith?: string;
22
- match?: RegExpMatchArray;
23
- data?: Record<string, any>;
24
- };
15
+ index: number
16
+ text: string
17
+ replaceWith?: string
18
+ match?: RegExpMatchArray
19
+ data?: Record<string, any>
20
+ }
25
21
 
26
- export type InputRuleFinder = RegExp | ((text: string) => InputRuleMatch | null);
22
+ export type InputRuleFinder = RegExp | ((text: string) => InputRuleMatch | null)
27
23
 
28
24
  export class InputRule {
29
25
  find: InputRuleFinder
30
26
 
31
27
  handler: (props: {
32
- state: EditorState;
33
- range: Range;
34
- match: ExtendedRegExpMatchArray;
35
- commands: SingleCommands;
36
- chain: () => ChainedCommands;
37
- can: () => CanCommands;
28
+ state: EditorState
29
+ range: Range
30
+ match: ExtendedRegExpMatchArray
31
+ commands: SingleCommands
32
+ chain: () => ChainedCommands
33
+ can: () => CanCommands
38
34
  }) => void | null
39
35
 
40
36
  constructor(config: {
41
- find: InputRuleFinder;
37
+ find: InputRuleFinder
42
38
  handler: (props: {
43
- state: EditorState;
44
- range: Range;
45
- match: ExtendedRegExpMatchArray;
46
- commands: SingleCommands;
47
- chain: () => ChainedCommands;
48
- can: () => CanCommands;
49
- }) => void | null;
39
+ state: EditorState
40
+ range: Range
41
+ match: ExtendedRegExpMatchArray
42
+ commands: SingleCommands
43
+ chain: () => ChainedCommands
44
+ can: () => CanCommands
45
+ }) => void | null
50
46
  }) {
51
47
  this.find = config.find
52
48
  this.handler = config.handler
53
49
  }
54
50
  }
55
51
 
56
- const inputRuleMatcherHandler = (
57
- text: string,
58
- find: InputRuleFinder,
59
- ): ExtendedRegExpMatchArray | null => {
52
+ const inputRuleMatcherHandler = (text: string, find: InputRuleFinder): ExtendedRegExpMatchArray | null => {
60
53
  if (isRegExp(find)) {
61
54
  return find.exec(text)
62
55
  }
@@ -75,9 +68,7 @@ const inputRuleMatcherHandler = (
75
68
 
76
69
  if (inputRuleMatch.replaceWith) {
77
70
  if (!inputRuleMatch.text.includes(inputRuleMatch.replaceWith)) {
78
- console.warn(
79
- '[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".',
80
- )
71
+ console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".')
81
72
  }
82
73
 
83
74
  result.push(inputRuleMatch.replaceWith)
@@ -87,16 +78,14 @@ const inputRuleMatcherHandler = (
87
78
  }
88
79
 
89
80
  function run(config: {
90
- editor: Editor;
91
- from: number;
92
- to: number;
93
- text: string;
94
- rules: InputRule[];
95
- plugin: Plugin;
81
+ editor: Editor
82
+ from: number
83
+ to: number
84
+ text: string
85
+ rules: InputRule[]
86
+ plugin: Plugin
96
87
  }): boolean {
97
- const {
98
- editor, from, to, text, rules, plugin,
99
- } = config
88
+ const { editor, from, to, text, rules, plugin } = config
100
89
  const { view } = editor
101
90
 
102
91
  if (view.composing) {
@@ -107,9 +96,9 @@ function run(config: {
107
96
 
108
97
  if (
109
98
  // check for code node
110
- $from.parent.type.spec.code
99
+ $from.parent.type.spec.code ||
111
100
  // check for code mark
112
- || !!($from.nodeBefore || $from.nodeAfter)?.marks.find(mark => mark.type.spec.code)
101
+ !!($from.nodeBefore || $from.nodeAfter)?.marks.find(mark => mark.type.spec.code)
113
102
  ) {
114
103
  return false
115
104
  }
@@ -197,8 +186,8 @@ export function inputRulesPlugin(props: { editor: Editor; rules: InputRule[] }):
197
186
  const simulatedInputMeta = tr.getMeta('applyInputRules') as
198
187
  | undefined
199
188
  | {
200
- from: number;
201
- text: string | ProseMirrorNode | Fragment;
189
+ from: number
190
+ text: string | ProseMirrorNode | Fragment
202
191
  }
203
192
  const isSimulatedInput = !!simulatedInputMeta
204
193