@tiptap/core 2.1.0-rc.0 → 2.1.0-rc.10

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 (244) hide show
  1. package/dist/index.cjs +94 -31
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +92 -32
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.umd.js +94 -31
  6. package/dist/index.umd.js.map +1 -1
  7. package/dist/packages/core/src/CommandManager.d.ts +2 -2
  8. package/dist/packages/core/src/Editor.d.ts +8 -4
  9. package/dist/packages/core/src/Extension.d.ts +7 -7
  10. package/dist/packages/core/src/ExtensionManager.d.ts +2 -2
  11. package/dist/packages/core/src/InputRule.d.ts +2 -2
  12. package/dist/packages/core/src/Mark.d.ts +6 -6
  13. package/dist/packages/core/src/Node.d.ts +5 -5
  14. package/dist/packages/core/src/NodeView.d.ts +3 -3
  15. package/dist/packages/core/src/PasteRule.d.ts +2 -2
  16. package/dist/packages/core/src/commands/blur.d.ts +1 -1
  17. package/dist/packages/core/src/commands/clearContent.d.ts +1 -1
  18. package/dist/packages/core/src/commands/clearNodes.d.ts +1 -1
  19. package/dist/packages/core/src/commands/command.d.ts +1 -1
  20. package/dist/packages/core/src/commands/createParagraphNear.d.ts +1 -1
  21. package/dist/packages/core/src/commands/cut.d.ts +15 -0
  22. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +1 -1
  23. package/dist/packages/core/src/commands/deleteNode.d.ts +1 -1
  24. package/dist/packages/core/src/commands/deleteRange.d.ts +1 -1
  25. package/dist/packages/core/src/commands/deleteSelection.d.ts +1 -1
  26. package/dist/packages/core/src/commands/enter.d.ts +1 -1
  27. package/dist/packages/core/src/commands/exitCode.d.ts +1 -1
  28. package/dist/packages/core/src/commands/extendMarkRange.d.ts +1 -1
  29. package/dist/packages/core/src/commands/first.d.ts +1 -1
  30. package/dist/packages/core/src/commands/focus.d.ts +1 -1
  31. package/dist/packages/core/src/commands/forEach.d.ts +1 -1
  32. package/dist/packages/core/src/commands/index.d.ts +51 -50
  33. package/dist/packages/core/src/commands/insertContent.d.ts +1 -1
  34. package/dist/packages/core/src/commands/insertContentAt.d.ts +1 -1
  35. package/dist/packages/core/src/commands/join.d.ts +1 -1
  36. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +1 -1
  37. package/dist/packages/core/src/commands/lift.d.ts +1 -1
  38. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +1 -1
  39. package/dist/packages/core/src/commands/liftListItem.d.ts +1 -1
  40. package/dist/packages/core/src/commands/newlineInCode.d.ts +1 -1
  41. package/dist/packages/core/src/commands/resetAttributes.d.ts +1 -1
  42. package/dist/packages/core/src/commands/scrollIntoView.d.ts +1 -1
  43. package/dist/packages/core/src/commands/selectAll.d.ts +1 -1
  44. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +1 -1
  45. package/dist/packages/core/src/commands/selectNodeForward.d.ts +1 -1
  46. package/dist/packages/core/src/commands/selectParentNode.d.ts +1 -1
  47. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +1 -1
  48. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +1 -1
  49. package/dist/packages/core/src/commands/setContent.d.ts +1 -1
  50. package/dist/packages/core/src/commands/setMark.d.ts +1 -1
  51. package/dist/packages/core/src/commands/setMeta.d.ts +1 -1
  52. package/dist/packages/core/src/commands/setNode.d.ts +1 -1
  53. package/dist/packages/core/src/commands/setNodeSelection.d.ts +1 -1
  54. package/dist/packages/core/src/commands/setTextSelection.d.ts +1 -1
  55. package/dist/packages/core/src/commands/sinkListItem.d.ts +1 -1
  56. package/dist/packages/core/src/commands/splitBlock.d.ts +1 -1
  57. package/dist/packages/core/src/commands/splitListItem.d.ts +1 -1
  58. package/dist/packages/core/src/commands/toggleList.d.ts +1 -1
  59. package/dist/packages/core/src/commands/toggleMark.d.ts +1 -1
  60. package/dist/packages/core/src/commands/toggleNode.d.ts +1 -1
  61. package/dist/packages/core/src/commands/toggleWrap.d.ts +1 -1
  62. package/dist/packages/core/src/commands/undoInputRule.d.ts +1 -1
  63. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +1 -1
  64. package/dist/packages/core/src/commands/unsetMark.d.ts +1 -1
  65. package/dist/packages/core/src/commands/updateAttributes.d.ts +1 -1
  66. package/dist/packages/core/src/commands/wrapIn.d.ts +1 -1
  67. package/dist/packages/core/src/commands/wrapInList.d.ts +1 -1
  68. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +1 -1
  69. package/dist/packages/core/src/extensions/commands.d.ts +2 -2
  70. package/dist/packages/core/src/extensions/editable.d.ts +1 -1
  71. package/dist/packages/core/src/extensions/focusEvents.d.ts +1 -1
  72. package/dist/packages/core/src/extensions/index.d.ts +6 -6
  73. package/dist/packages/core/src/extensions/keymap.d.ts +1 -1
  74. package/dist/packages/core/src/extensions/tabindex.d.ts +1 -1
  75. package/dist/packages/core/src/helpers/createDocument.d.ts +1 -1
  76. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +1 -1
  77. package/dist/packages/core/src/helpers/findChildren.d.ts +1 -1
  78. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +1 -1
  79. package/dist/packages/core/src/helpers/findParentNode.d.ts +1 -1
  80. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +1 -1
  81. package/dist/packages/core/src/helpers/generateHTML.d.ts +1 -1
  82. package/dist/packages/core/src/helpers/generateJSON.d.ts +1 -1
  83. package/dist/packages/core/src/helpers/generateText.d.ts +1 -1
  84. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +1 -1
  85. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +1 -1
  86. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +1 -1
  87. package/dist/packages/core/src/helpers/getExtensionField.d.ts +1 -1
  88. package/dist/packages/core/src/helpers/getMarkRange.d.ts +1 -1
  89. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +1 -1
  90. package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +11 -0
  91. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +1 -1
  92. package/dist/packages/core/src/helpers/getSchema.d.ts +2 -2
  93. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +2 -2
  94. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +1 -1
  95. package/dist/packages/core/src/helpers/getText.d.ts +1 -1
  96. package/dist/packages/core/src/helpers/getTextBetween.d.ts +1 -1
  97. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +1 -1
  98. package/dist/packages/core/src/helpers/index.d.ts +50 -47
  99. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +1 -1
  100. package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +2 -0
  101. package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +2 -0
  102. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +1 -1
  103. package/dist/packages/core/src/helpers/isList.d.ts +1 -1
  104. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +1 -1
  105. package/dist/packages/core/src/helpers/splitExtensions.d.ts +4 -4
  106. package/dist/packages/core/src/index.d.ts +15 -15
  107. package/dist/packages/core/src/inputRules/index.d.ts +5 -5
  108. package/dist/packages/core/src/inputRules/markInputRule.d.ts +2 -2
  109. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +2 -2
  110. package/dist/packages/core/src/inputRules/textInputRule.d.ts +1 -1
  111. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +2 -2
  112. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +3 -3
  113. package/dist/packages/core/src/pasteRules/index.d.ts +3 -3
  114. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +2 -2
  115. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +2 -2
  116. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +1 -1
  117. package/dist/packages/core/src/types.d.ts +5 -5
  118. package/dist/packages/core/src/utilities/callOrReturn.d.ts +1 -1
  119. package/dist/packages/core/src/utilities/index.d.ts +20 -20
  120. package/dist/packages/core/src/utilities/isAndroid.d.ts +1 -0
  121. package/package.json +2 -2
  122. package/src/CommandManager.ts +4 -8
  123. package/src/Editor.ts +24 -16
  124. package/src/Extension.ts +10 -10
  125. package/src/ExtensionManager.ts +15 -15
  126. package/src/InputRule.ts +6 -6
  127. package/src/Mark.ts +9 -9
  128. package/src/Node.ts +8 -8
  129. package/src/NodeView.ts +8 -6
  130. package/src/PasteRule.ts +6 -6
  131. package/src/commands/blur.ts +1 -1
  132. package/src/commands/clearContent.ts +1 -1
  133. package/src/commands/clearNodes.ts +1 -1
  134. package/src/commands/command.ts +1 -1
  135. package/src/commands/createParagraphNear.ts +1 -1
  136. package/src/commands/cut.ts +25 -0
  137. package/src/commands/deleteCurrentNode.ts +1 -1
  138. package/src/commands/deleteNode.ts +2 -2
  139. package/src/commands/deleteRange.ts +1 -1
  140. package/src/commands/deleteSelection.ts +1 -1
  141. package/src/commands/enter.ts +1 -1
  142. package/src/commands/exitCode.ts +1 -1
  143. package/src/commands/extendMarkRange.ts +3 -3
  144. package/src/commands/first.ts +1 -1
  145. package/src/commands/focus.ts +4 -4
  146. package/src/commands/forEach.ts +1 -1
  147. package/src/commands/index.ts +51 -50
  148. package/src/commands/insertContent.ts +1 -1
  149. package/src/commands/insertContentAt.ts +4 -4
  150. package/src/commands/join.ts +1 -1
  151. package/src/commands/keyboardShortcut.ts +3 -3
  152. package/src/commands/lift.ts +3 -3
  153. package/src/commands/liftEmptyBlock.ts +1 -1
  154. package/src/commands/liftListItem.ts +2 -2
  155. package/src/commands/newlineInCode.ts +1 -1
  156. package/src/commands/resetAttributes.ts +5 -5
  157. package/src/commands/scrollIntoView.ts +1 -1
  158. package/src/commands/selectAll.ts +1 -1
  159. package/src/commands/selectNodeBackward.ts +1 -1
  160. package/src/commands/selectNodeForward.ts +1 -1
  161. package/src/commands/selectParentNode.ts +1 -1
  162. package/src/commands/selectTextblockEnd.ts +1 -1
  163. package/src/commands/selectTextblockStart.ts +1 -1
  164. package/src/commands/setContent.ts +2 -2
  165. package/src/commands/setMark.ts +4 -4
  166. package/src/commands/setMeta.ts +1 -1
  167. package/src/commands/setNode.ts +2 -2
  168. package/src/commands/setNodeSelection.ts +2 -2
  169. package/src/commands/setTextSelection.ts +2 -2
  170. package/src/commands/sinkListItem.ts +2 -2
  171. package/src/commands/splitBlock.ts +3 -3
  172. package/src/commands/splitListItem.ts +3 -3
  173. package/src/commands/toggleList.ts +4 -4
  174. package/src/commands/toggleMark.ts +3 -3
  175. package/src/commands/toggleNode.ts +3 -3
  176. package/src/commands/toggleWrap.ts +3 -3
  177. package/src/commands/undoInputRule.ts +1 -1
  178. package/src/commands/unsetAllMarks.ts +1 -1
  179. package/src/commands/unsetMark.ts +3 -3
  180. package/src/commands/updateAttributes.ts +4 -4
  181. package/src/commands/wrapIn.ts +2 -2
  182. package/src/commands/wrapInList.ts +2 -2
  183. package/src/extensions/clipboardTextSerializer.ts +3 -3
  184. package/src/extensions/commands.ts +3 -3
  185. package/src/extensions/editable.ts +1 -1
  186. package/src/extensions/focusEvents.ts +1 -1
  187. package/src/extensions/index.ts +6 -6
  188. package/src/extensions/keymap.ts +5 -5
  189. package/src/extensions/tabindex.ts +1 -1
  190. package/src/helpers/createDocument.ts +2 -2
  191. package/src/helpers/createNodeFromContent.ts +2 -2
  192. package/src/helpers/findChildren.ts +1 -1
  193. package/src/helpers/findChildrenInRange.ts +1 -1
  194. package/src/helpers/findParentNode.ts +2 -2
  195. package/src/helpers/findParentNodeClosestToPos.ts +1 -1
  196. package/src/helpers/generateHTML.ts +3 -3
  197. package/src/helpers/generateJSON.ts +3 -3
  198. package/src/helpers/generateText.ts +4 -4
  199. package/src/helpers/getAttributes.ts +3 -3
  200. package/src/helpers/getAttributesFromExtensions.ts +4 -4
  201. package/src/helpers/getChangedRanges.ts +2 -2
  202. package/src/helpers/getDebugJSON.ts +1 -1
  203. package/src/helpers/getExtensionField.ts +1 -1
  204. package/src/helpers/getMarkAttributes.ts +1 -1
  205. package/src/helpers/getMarkRange.ts +2 -2
  206. package/src/helpers/getMarksBetween.ts +2 -2
  207. package/src/helpers/getNodeAtPosition.ts +29 -0
  208. package/src/helpers/getNodeAttributes.ts +1 -1
  209. package/src/helpers/getRenderedAttributes.ts +2 -2
  210. package/src/helpers/getSchema.ts +4 -4
  211. package/src/helpers/getSchemaByResolvedExtensions.ts +9 -9
  212. package/src/helpers/getSplittedAttributes.ts +1 -1
  213. package/src/helpers/getText.ts +2 -2
  214. package/src/helpers/getTextBetween.ts +1 -1
  215. package/src/helpers/getTextSerializersFromSchema.ts +1 -1
  216. package/src/helpers/index.ts +50 -47
  217. package/src/helpers/injectExtensionAttributesToParseRule.ts +2 -2
  218. package/src/helpers/isActive.ts +3 -3
  219. package/src/helpers/isAtEndOfNode.ts +11 -0
  220. package/src/helpers/isAtStartOfNode.ts +11 -0
  221. package/src/helpers/isExtensionRulesEnabled.ts +1 -1
  222. package/src/helpers/isList.ts +5 -5
  223. package/src/helpers/isMarkActive.ts +3 -3
  224. package/src/helpers/isNodeActive.ts +3 -3
  225. package/src/helpers/posToDOMRect.ts +1 -1
  226. package/src/helpers/resolveFocusPosition.ts +2 -2
  227. package/src/helpers/splitExtensions.ts +4 -4
  228. package/src/index.ts +15 -15
  229. package/src/inputRules/index.ts +5 -5
  230. package/src/inputRules/markInputRule.ts +5 -6
  231. package/src/inputRules/nodeInputRule.ts +3 -3
  232. package/src/inputRules/textInputRule.ts +1 -1
  233. package/src/inputRules/textblockTypeInputRule.ts +3 -3
  234. package/src/inputRules/wrappingInputRule.ts +4 -4
  235. package/src/pasteRules/index.ts +3 -3
  236. package/src/pasteRules/markPasteRule.ts +4 -4
  237. package/src/pasteRules/nodePasteRule.ts +3 -3
  238. package/src/pasteRules/textPasteRule.ts +1 -1
  239. package/src/types.ts +5 -5
  240. package/src/utilities/callOrReturn.ts +2 -2
  241. package/src/utilities/index.ts +20 -20
  242. package/src/utilities/isAndroid.ts +3 -0
  243. package/src/utilities/mergeDeep.ts +1 -1
  244. package/src/utilities/objectIncludes.ts +1 -1
package/dist/index.umd.js CHANGED
@@ -115,9 +115,6 @@
115
115
  buildProps(tr, shouldDispatch = true) {
116
116
  const { rawCommands, editor, state } = this;
117
117
  const { view } = editor;
118
- if (state.storedMarks) {
119
- tr.setStoredMarks(state.storedMarks);
120
- }
121
118
  const props = {
122
119
  tr,
123
120
  editor,
@@ -127,7 +124,7 @@
127
124
  transaction: tr,
128
125
  }),
129
126
  dispatch: shouldDispatch ? () => undefined : undefined,
130
- chain: () => this.createChain(tr),
127
+ chain: () => this.createChain(tr, shouldDispatch),
131
128
  can: () => this.createCan(tr),
132
129
  get commands() {
133
130
  return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {
@@ -1306,6 +1303,17 @@
1306
1303
  return commands$1.createParagraphNear(state, dispatch);
1307
1304
  };
1308
1305
 
1306
+ const cut = (originRange, targetPos) => ({ editor }) => {
1307
+ const { state } = editor;
1308
+ const contentSlice = state.doc.slice(originRange.from, originRange.to);
1309
+ return editor
1310
+ .chain()
1311
+ .deleteRange(originRange)
1312
+ .insertContentAt(targetPos, contentSlice.content.toJSON())
1313
+ .focus()
1314
+ .run();
1315
+ };
1316
+
1309
1317
  const deleteCurrentNode = () => ({ tr, dispatch }) => {
1310
1318
  const { selection } = tr;
1311
1319
  const currentNode = selection.$anchor.node();
@@ -1635,7 +1643,7 @@
1635
1643
  if (content.toString() === '<>') {
1636
1644
  return true;
1637
1645
  }
1638
- let { from, to } = typeof position === 'number' ? { from: position, to: position } : position;
1646
+ let { from, to } = typeof position === 'number' ? { from: tr.mapping.map(position), to: tr.mapping.map(position) } : { from: tr.mapping.map(position.from), to: tr.mapping.map(position.to) };
1639
1647
  let isOnlyTextContent = true;
1640
1648
  let isOnlyBlockContent = true;
1641
1649
  const nodes = isFragment(content) ? content : [content];
@@ -1943,6 +1951,28 @@
1943
1951
  return true;
1944
1952
  };
1945
1953
 
1954
+ function getMarkAttributes(state, typeOrName) {
1955
+ const type = getMarkType(typeOrName, state.schema);
1956
+ const { from, to, empty } = state.selection;
1957
+ const marks = [];
1958
+ if (empty) {
1959
+ if (state.storedMarks) {
1960
+ marks.push(...state.storedMarks);
1961
+ }
1962
+ marks.push(...state.selection.$head.marks());
1963
+ }
1964
+ else {
1965
+ state.doc.nodesBetween(from, to, node => {
1966
+ marks.push(...node.marks);
1967
+ });
1968
+ }
1969
+ const mark = marks.find(markItem => markItem.type.name === type.name);
1970
+ if (!mark) {
1971
+ return {};
1972
+ }
1973
+ return { ...mark.attrs };
1974
+ }
1975
+
1946
1976
  /**
1947
1977
  * Returns a new `Transform` based on all steps of the passed transactions.
1948
1978
  */
@@ -2068,28 +2098,6 @@
2068
2098
  });
2069
2099
  }
2070
2100
 
2071
- function getMarkAttributes(state, typeOrName) {
2072
- const type = getMarkType(typeOrName, state.schema);
2073
- const { from, to, empty } = state.selection;
2074
- const marks = [];
2075
- if (empty) {
2076
- if (state.storedMarks) {
2077
- marks.push(...state.storedMarks);
2078
- }
2079
- marks.push(...state.selection.$head.marks());
2080
- }
2081
- else {
2082
- state.doc.nodesBetween(from, to, node => {
2083
- marks.push(...node.marks);
2084
- });
2085
- }
2086
- const mark = marks.find(markItem => markItem.type.name === type.name);
2087
- if (!mark) {
2088
- return {};
2089
- }
2090
- return { ...mark.attrs };
2091
- }
2092
-
2093
2101
  function getNodeAttributes(state, typeOrName) {
2094
2102
  const type = getNodeType(typeOrName, state.schema);
2095
2103
  const { from, to } = state.selection;
@@ -2261,6 +2269,30 @@
2261
2269
  return marks;
2262
2270
  }
2263
2271
 
2272
+ /**
2273
+ * Finds the first node of a given type or name in the current selection.
2274
+ * @param state The editor state.
2275
+ * @param typeOrName The node type or name.
2276
+ * @param pos The position to start searching from.
2277
+ * @param maxDepth The maximum depth to search.
2278
+ * @returns The node and the depth as an array.
2279
+ */
2280
+ const getNodeAtPosition = (state, typeOrName, pos, maxDepth = 20) => {
2281
+ const $pos = state.doc.resolve(pos);
2282
+ let currentDepth = maxDepth;
2283
+ let node = null;
2284
+ while (currentDepth > 0 && node === null) {
2285
+ const currentNode = $pos.node(currentDepth);
2286
+ if ((currentNode === null || currentNode === void 0 ? void 0 : currentNode.type.name) === typeOrName) {
2287
+ node = currentNode;
2288
+ }
2289
+ else {
2290
+ currentDepth -= 1;
2291
+ }
2292
+ }
2293
+ return [node, currentDepth];
2294
+ };
2295
+
2264
2296
  function getSplittedAttributes(extensionAttributes, typeName, attributes) {
2265
2297
  return Object.fromEntries(Object
2266
2298
  .entries(attributes)
@@ -2351,6 +2383,22 @@
2351
2383
  return false;
2352
2384
  }
2353
2385
 
2386
+ const istAtEndOfNode = (state) => {
2387
+ const { $from, $to } = state.selection;
2388
+ if ($to.parentOffset < $to.parent.nodeSize - 2 || $from.pos !== $to.pos) {
2389
+ return false;
2390
+ }
2391
+ return true;
2392
+ };
2393
+
2394
+ const isAtStartOfNode = (state) => {
2395
+ const { $from, $to } = state.selection;
2396
+ if ($from.parentOffset > 0 || $from.pos !== $to.pos) {
2397
+ return false;
2398
+ }
2399
+ return true;
2400
+ };
2401
+
2354
2402
  function isList(name, extensions) {
2355
2403
  const { nodeExtensions } = splitExtensions(extensions);
2356
2404
  const extension = nodeExtensions.find(item => item.name === name);
@@ -2958,6 +3006,7 @@
2958
3006
  clearNodes: clearNodes,
2959
3007
  command: command,
2960
3008
  createParagraphNear: createParagraphNear,
3009
+ cut: cut,
2961
3010
  deleteCurrentNode: deleteCurrentNode,
2962
3011
  deleteNode: deleteNode,
2963
3012
  deleteRange: deleteRange,
@@ -3491,6 +3540,7 @@ img.ProseMirror-separator {
3491
3540
  });
3492
3541
  this.view.updateState(newState);
3493
3542
  this.createNodeViews();
3543
+ this.prependClass();
3494
3544
  // Let’s store the editor instance in the DOM element.
3495
3545
  // So we’ll have access to it for tests.
3496
3546
  const dom = this.view.dom;
@@ -3504,6 +3554,12 @@ img.ProseMirror-separator {
3504
3554
  nodeViews: this.extensionManager.nodeViews,
3505
3555
  });
3506
3556
  }
3557
+ /**
3558
+ * Prepend class name to element.
3559
+ */
3560
+ prependClass() {
3561
+ this.view.dom.className = `tiptap ${this.view.dom.className}`;
3562
+ }
3507
3563
  captureTransaction(fn) {
3508
3564
  this.isCapturingTransaction = true;
3509
3565
  fn();
@@ -3654,7 +3710,6 @@ img.ProseMirror-separator {
3654
3710
  const { tr } = state;
3655
3711
  const captureGroup = match[match.length - 1];
3656
3712
  const fullMatch = match[0];
3657
- let markEnd = range.to;
3658
3713
  if (captureGroup) {
3659
3714
  const startSpaces = fullMatch.search(/\S/);
3660
3715
  const textStart = range.from + fullMatch.indexOf(captureGroup);
@@ -3675,7 +3730,7 @@ img.ProseMirror-separator {
3675
3730
  if (textStart > range.from) {
3676
3731
  tr.delete(range.from + startSpaces, textStart);
3677
3732
  }
3678
- markEnd = range.from + startSpaces + captureGroup.length;
3733
+ const markEnd = range.from + startSpaces + captureGroup.length;
3679
3734
  tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));
3680
3735
  tr.removeStoredMark(config.type);
3681
3736
  }
@@ -3963,6 +4018,10 @@ img.ProseMirror-separator {
3963
4018
  }
3964
4019
  }
3965
4020
 
4021
+ function isAndroid() {
4022
+ return navigator.platform === 'Android' || /android/i.test(navigator.userAgent);
4023
+ }
4024
+
3966
4025
  class NodeView {
3967
4026
  constructor(component, props, options) {
3968
4027
  this.isDragging = false;
@@ -4103,13 +4162,14 @@ img.ProseMirror-separator {
4103
4162
  if (mutation.type === 'selection') {
4104
4163
  return false;
4105
4164
  }
4106
- // try to prevent a bug on iOS that will break node views on enter
4165
+ // try to prevent a bug on iOS and Android that will break node views on enter
4107
4166
  // this is because ProseMirror can’t preventDispatch on enter
4108
4167
  // this will lead to a re-render of the node view on enter
4109
4168
  // see: https://github.com/ueberdosis/tiptap/issues/1214
4169
+ // see: https://github.com/ueberdosis/tiptap/issues/2534
4110
4170
  if (this.dom.contains(mutation.target)
4111
4171
  && mutation.type === 'childList'
4112
- && isiOS()
4172
+ && (isiOS() || isAndroid())
4113
4173
  && this.editor.isFocused) {
4114
4174
  const changedNodes = [
4115
4175
  ...Array.from(mutation.addedNodes),
@@ -4312,6 +4372,7 @@ img.ProseMirror-separator {
4312
4372
  exports.getMarkRange = getMarkRange;
4313
4373
  exports.getMarkType = getMarkType;
4314
4374
  exports.getMarksBetween = getMarksBetween;
4375
+ exports.getNodeAtPosition = getNodeAtPosition;
4315
4376
  exports.getNodeAttributes = getNodeAttributes;
4316
4377
  exports.getNodeType = getNodeType;
4317
4378
  exports.getRenderedAttributes = getRenderedAttributes;
@@ -4327,6 +4388,7 @@ img.ProseMirror-separator {
4327
4388
  exports.injectExtensionAttributesToParseRule = injectExtensionAttributesToParseRule;
4328
4389
  exports.inputRulesPlugin = inputRulesPlugin;
4329
4390
  exports.isActive = isActive;
4391
+ exports.isAtStartOfNode = isAtStartOfNode;
4330
4392
  exports.isEmptyObject = isEmptyObject;
4331
4393
  exports.isExtensionRulesEnabled = isExtensionRulesEnabled;
4332
4394
  exports.isFunction = isFunction;
@@ -4342,6 +4404,7 @@ img.ProseMirror-separator {
4342
4404
  exports.isString = isString;
4343
4405
  exports.isTextSelection = isTextSelection;
4344
4406
  exports.isiOS = isiOS;
4407
+ exports.istAtEndOfNode = istAtEndOfNode;
4345
4408
  exports.markInputRule = markInputRule;
4346
4409
  exports.markPasteRule = markPasteRule;
4347
4410
  exports.mergeAttributes = mergeAttributes;