@tiptap/core 2.0.0-beta.209 → 2.0.0-beta.210

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 (259) hide show
  1. package/dist/index.cjs +4311 -0
  2. package/dist/index.d.ts +2330 -0
  3. package/dist/index.js +4311 -0
  4. package/package.json +24 -23
  5. package/src/CommandManager.ts +27 -36
  6. package/src/Editor.ts +27 -37
  7. package/src/Extension.ts +193 -179
  8. package/src/ExtensionManager.ts +82 -98
  9. package/src/InputRule.ts +38 -43
  10. package/src/Mark.ts +277 -264
  11. package/src/Node.ts +349 -314
  12. package/src/NodeView.ts +24 -23
  13. package/src/PasteRule.ts +37 -44
  14. package/src/Tracker.ts +4 -8
  15. package/src/commands/clearNodes.ts +1 -1
  16. package/src/commands/createParagraphNear.ts +2 -2
  17. package/src/commands/deleteNode.ts +1 -1
  18. package/src/commands/deleteSelection.ts +2 -2
  19. package/src/commands/exitCode.ts +2 -2
  20. package/src/commands/extendMarkRange.ts +6 -3
  21. package/src/commands/insertContent.ts +9 -5
  22. package/src/commands/insertContentAt.ts +10 -24
  23. package/src/commands/join.ts +9 -6
  24. package/src/commands/lift.ts +3 -3
  25. package/src/commands/liftEmptyBlock.ts +1 -1
  26. package/src/commands/liftListItem.ts +3 -3
  27. package/src/commands/newlineInCode.ts +2 -2
  28. package/src/commands/resetAttributes.ts +11 -6
  29. package/src/commands/selectNodeBackward.ts +2 -2
  30. package/src/commands/selectNodeForward.ts +2 -2
  31. package/src/commands/selectParentNode.ts +2 -2
  32. package/src/commands/selectTextblockEnd.ts +2 -2
  33. package/src/commands/selectTextblockStart.ts +2 -2
  34. package/src/commands/setContent.ts +3 -4
  35. package/src/commands/setMark.ts +26 -16
  36. package/src/commands/setNode.ts +19 -17
  37. package/src/commands/setNodeSelection.ts +2 -2
  38. package/src/commands/setTextSelection.ts +3 -5
  39. package/src/commands/sinkListItem.ts +3 -3
  40. package/src/commands/splitBlock.ts +20 -25
  41. package/src/commands/splitListItem.ts +15 -25
  42. package/src/commands/toggleList.ts +27 -24
  43. package/src/commands/toggleMark.ts +3 -3
  44. package/src/commands/toggleNode.ts +6 -2
  45. package/src/commands/toggleWrap.ts +2 -2
  46. package/src/commands/unsetMark.ts +3 -3
  47. package/src/commands/updateAttributes.ts +14 -9
  48. package/src/commands/wrapIn.ts +3 -3
  49. package/src/commands/wrapInList.ts +3 -3
  50. package/src/extensions/clipboardTextSerializer.ts +1 -1
  51. package/src/extensions/editable.ts +1 -1
  52. package/src/extensions/focusEvents.ts +1 -1
  53. package/src/extensions/keymap.ts +2 -7
  54. package/src/extensions/tabindex.ts +1 -1
  55. package/src/helpers/combineTransactionSteps.ts +7 -4
  56. package/src/helpers/createChainableState.ts +3 -3
  57. package/src/helpers/createDocument.ts +1 -1
  58. package/src/helpers/createNodeFromContent.ts +4 -10
  59. package/src/helpers/defaultBlockAt.ts +1 -1
  60. package/src/helpers/findChildren.ts +1 -1
  61. package/src/helpers/findChildrenInRange.ts +6 -2
  62. package/src/helpers/findParentNode.ts +1 -1
  63. package/src/helpers/findParentNodeClosestToPos.ts +12 -7
  64. package/src/helpers/generateHTML.ts +1 -1
  65. package/src/helpers/generateJSON.ts +2 -4
  66. package/src/helpers/generateText.ts +4 -7
  67. package/src/helpers/getAttributes.ts +3 -5
  68. package/src/helpers/getChangedRanges.ts +1 -1
  69. package/src/helpers/getDebugJSON.ts +4 -4
  70. package/src/helpers/getHTMLFromFragment.ts +2 -4
  71. package/src/helpers/getMarkAttributes.ts +6 -3
  72. package/src/helpers/getMarkRange.ts +1 -1
  73. package/src/helpers/getMarkType.ts +4 -2
  74. package/src/helpers/getMarksBetween.ts +8 -6
  75. package/src/helpers/getNodeAttributes.ts +7 -6
  76. package/src/helpers/getNodeType.ts +4 -2
  77. package/src/helpers/getRenderedAttributes.ts +5 -2
  78. package/src/helpers/getSchema.ts +1 -1
  79. package/src/helpers/getSchemaByResolvedExtensions.ts +151 -107
  80. package/src/helpers/getSchemaTypeByName.ts +1 -1
  81. package/src/helpers/getSchemaTypeNameByName.ts +1 -1
  82. package/src/helpers/getText.ts +3 -3
  83. package/src/helpers/getTextBetween.ts +4 -7
  84. package/src/helpers/getTextContentFromNodes.ts +8 -3
  85. package/src/helpers/getTextSerializersFromSchema.ts +6 -5
  86. package/src/helpers/injectExtensionAttributesToParseRule.ts +6 -5
  87. package/src/helpers/isActive.ts +6 -2
  88. package/src/helpers/isMarkActive.ts +12 -15
  89. package/src/helpers/isNodeActive.ts +4 -7
  90. package/src/helpers/isNodeEmpty.ts +1 -1
  91. package/src/helpers/isNodeSelection.ts +1 -1
  92. package/src/helpers/isTextSelection.ts +1 -1
  93. package/src/helpers/posToDOMRect.ts +1 -1
  94. package/src/helpers/resolveFocusPosition.ts +2 -3
  95. package/src/helpers/selectionToInsertionEnd.ts +2 -2
  96. package/src/inputRules/markInputRule.ts +3 -4
  97. package/src/inputRules/nodeInputRule.ts +3 -4
  98. package/src/inputRules/textblockTypeInputRule.ts +3 -4
  99. package/src/inputRules/wrappingInputRule.ts +5 -6
  100. package/src/pasteRules/markPasteRule.ts +3 -4
  101. package/src/pasteRules/nodePasteRule.ts +8 -10
  102. package/src/types.ts +109 -125
  103. package/dist/packages/core/src/CommandManager.d.ts +0 -20
  104. package/dist/packages/core/src/Editor.d.ts +0 -147
  105. package/dist/packages/core/src/EventEmitter.d.ts +0 -11
  106. package/dist/packages/core/src/Extension.d.ts +0 -227
  107. package/dist/packages/core/src/ExtensionManager.d.ts +0 -18
  108. package/dist/packages/core/src/InputRule.d.ts +0 -42
  109. package/dist/packages/core/src/Mark.d.ts +0 -327
  110. package/dist/packages/core/src/Node.d.ts +0 -397
  111. package/dist/packages/core/src/NodeView.d.ts +0 -27
  112. package/dist/packages/core/src/PasteRule.d.ts +0 -42
  113. package/dist/packages/core/src/Tracker.d.ts +0 -11
  114. package/dist/packages/core/src/commands/blur.d.ts +0 -12
  115. package/dist/packages/core/src/commands/clearContent.d.ts +0 -12
  116. package/dist/packages/core/src/commands/clearNodes.d.ts +0 -12
  117. package/dist/packages/core/src/commands/command.d.ts +0 -12
  118. package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -12
  119. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +0 -12
  120. package/dist/packages/core/src/commands/deleteNode.d.ts +0 -13
  121. package/dist/packages/core/src/commands/deleteRange.d.ts +0 -12
  122. package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -12
  123. package/dist/packages/core/src/commands/enter.d.ts +0 -12
  124. package/dist/packages/core/src/commands/exitCode.d.ts +0 -12
  125. package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -13
  126. package/dist/packages/core/src/commands/first.d.ts +0 -12
  127. package/dist/packages/core/src/commands/focus.d.ts +0 -14
  128. package/dist/packages/core/src/commands/forEach.d.ts +0 -14
  129. package/dist/packages/core/src/commands/index.d.ts +0 -50
  130. package/dist/packages/core/src/commands/insertContent.d.ts +0 -16
  131. package/dist/packages/core/src/commands/insertContentAt.d.ts +0 -16
  132. package/dist/packages/core/src/commands/join.d.ts +0 -33
  133. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -12
  134. package/dist/packages/core/src/commands/lift.d.ts +0 -13
  135. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -12
  136. package/dist/packages/core/src/commands/liftListItem.d.ts +0 -13
  137. package/dist/packages/core/src/commands/newlineInCode.d.ts +0 -12
  138. package/dist/packages/core/src/commands/resetAttributes.d.ts +0 -13
  139. package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -12
  140. package/dist/packages/core/src/commands/selectAll.d.ts +0 -12
  141. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -12
  142. package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -12
  143. package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -12
  144. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +0 -12
  145. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +0 -12
  146. package/dist/packages/core/src/commands/setContent.d.ts +0 -13
  147. package/dist/packages/core/src/commands/setMark.d.ts +0 -13
  148. package/dist/packages/core/src/commands/setMeta.d.ts +0 -12
  149. package/dist/packages/core/src/commands/setNode.d.ts +0 -13
  150. package/dist/packages/core/src/commands/setNodeSelection.d.ts +0 -12
  151. package/dist/packages/core/src/commands/setTextSelection.d.ts +0 -12
  152. package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -13
  153. package/dist/packages/core/src/commands/splitBlock.d.ts +0 -14
  154. package/dist/packages/core/src/commands/splitListItem.d.ts +0 -13
  155. package/dist/packages/core/src/commands/toggleList.d.ts +0 -13
  156. package/dist/packages/core/src/commands/toggleMark.d.ts +0 -18
  157. package/dist/packages/core/src/commands/toggleNode.d.ts +0 -13
  158. package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -13
  159. package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -12
  160. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -12
  161. package/dist/packages/core/src/commands/unsetMark.d.ts +0 -18
  162. package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -13
  163. package/dist/packages/core/src/commands/wrapIn.d.ts +0 -13
  164. package/dist/packages/core/src/commands/wrapInList.d.ts +0 -13
  165. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -2
  166. package/dist/packages/core/src/extensions/commands.d.ts +0 -3
  167. package/dist/packages/core/src/extensions/editable.d.ts +0 -2
  168. package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
  169. package/dist/packages/core/src/extensions/index.d.ts +0 -6
  170. package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
  171. package/dist/packages/core/src/extensions/tabindex.d.ts +0 -2
  172. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +0 -7
  173. package/dist/packages/core/src/helpers/createChainableState.d.ts +0 -5
  174. package/dist/packages/core/src/helpers/createDocument.d.ts +0 -3
  175. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -7
  176. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +0 -2
  177. package/dist/packages/core/src/helpers/findChildren.d.ts +0 -3
  178. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +0 -6
  179. package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -8
  180. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -8
  181. package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -2
  182. package/dist/packages/core/src/helpers/generateJSON.d.ts +0 -2
  183. package/dist/packages/core/src/helpers/generateText.d.ts +0 -5
  184. package/dist/packages/core/src/helpers/getAttributes.d.ts +0 -3
  185. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
  186. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +0 -11
  187. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +0 -8
  188. package/dist/packages/core/src/helpers/getExtensionField.d.ts +0 -2
  189. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
  190. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -3
  191. package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
  192. package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
  193. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
  194. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -3
  195. package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
  196. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
  197. package/dist/packages/core/src/helpers/getSchema.d.ts +0 -3
  198. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +0 -3
  199. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -2
  200. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -2
  201. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -2
  202. package/dist/packages/core/src/helpers/getText.d.ts +0 -6
  203. package/dist/packages/core/src/helpers/getTextBetween.d.ts +0 -6
  204. package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +0 -2
  205. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +0 -3
  206. package/dist/packages/core/src/helpers/index.d.ts +0 -33
  207. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
  208. package/dist/packages/core/src/helpers/isActive.d.ts +0 -2
  209. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +0 -2
  210. package/dist/packages/core/src/helpers/isList.d.ts +0 -2
  211. package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -3
  212. package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -3
  213. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -2
  214. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
  215. package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
  216. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +0 -2
  217. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +0 -4
  218. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
  219. package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
  220. package/dist/packages/core/src/index.d.ts +0 -23
  221. package/dist/packages/core/src/inputRules/index.d.ts +0 -5
  222. package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -12
  223. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -12
  224. package/dist/packages/core/src/inputRules/textInputRule.d.ts +0 -9
  225. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +0 -14
  226. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +0 -23
  227. package/dist/packages/core/src/pasteRules/index.d.ts +0 -3
  228. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -12
  229. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +0 -12
  230. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +0 -9
  231. package/dist/packages/core/src/style.d.ts +0 -1
  232. package/dist/packages/core/src/types.d.ts +0 -214
  233. package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -9
  234. package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
  235. package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -6
  236. package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
  237. package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +0 -1
  238. package/dist/packages/core/src/utilities/findDuplicates.d.ts +0 -1
  239. package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
  240. package/dist/packages/core/src/utilities/index.d.ts +0 -20
  241. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
  242. package/dist/packages/core/src/utilities/isFunction.d.ts +0 -1
  243. package/dist/packages/core/src/utilities/isMacOS.d.ts +0 -1
  244. package/dist/packages/core/src/utilities/isNumber.d.ts +0 -1
  245. package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
  246. package/dist/packages/core/src/utilities/isRegExp.d.ts +0 -1
  247. package/dist/packages/core/src/utilities/isString.d.ts +0 -1
  248. package/dist/packages/core/src/utilities/isiOS.d.ts +0 -1
  249. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -1
  250. package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -1
  251. package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
  252. package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -8
  253. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +0 -8
  254. package/dist/tiptap-core.cjs +0 -4360
  255. package/dist/tiptap-core.cjs.map +0 -1
  256. package/dist/tiptap-core.esm.js +0 -4284
  257. package/dist/tiptap-core.esm.js.map +0 -1
  258. package/dist/tiptap-core.umd.js +0 -4358
  259. package/dist/tiptap-core.umd.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { MarkSpec, NodeSpec, Schema } from 'prosemirror-model'
1
+ import { MarkSpec, NodeSpec, Schema } from '@tiptap/pm/model'
2
2
 
3
3
  import { MarkConfig, NodeConfig } from '..'
4
4
  import { AnyConfig, Extensions } from '../types'
@@ -11,13 +11,15 @@ import { injectExtensionAttributesToParseRule } from './injectExtensionAttribute
11
11
  import { splitExtensions } from './splitExtensions'
12
12
 
13
13
  function cleanUpSchemaItem<T>(data: T) {
14
- return Object.fromEntries(Object.entries(data).filter(([key, value]) => {
15
- if (key === 'attrs' && isEmptyObject(value)) {
16
- return false
17
- }
14
+ return Object.fromEntries(
15
+ Object.entries(data).filter(([key, value]) => {
16
+ if (key === 'attrs' && isEmptyObject(value)) {
17
+ return false
18
+ }
18
19
 
19
- return value !== null && value !== undefined
20
- })) as T
20
+ return value !== null && value !== undefined
21
+ }),
22
+ ) as T
21
23
  }
22
24
 
23
25
  export function getSchemaByResolvedExtensions(extensions: Extensions): Schema {
@@ -25,120 +27,162 @@ export function getSchemaByResolvedExtensions(extensions: Extensions): Schema {
25
27
  const { nodeExtensions, markExtensions } = splitExtensions(extensions)
26
28
  const topNode = nodeExtensions.find(extension => getExtensionField(extension, 'topNode'))?.name
27
29
 
28
- const nodes = Object.fromEntries(nodeExtensions.map(extension => {
29
- const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name)
30
- const context = {
31
- name: extension.name,
32
- options: extension.options,
33
- storage: extension.storage,
34
- }
35
-
36
- const extraNodeFields = extensions.reduce((fields, e) => {
37
- const extendNodeSchema = getExtensionField<AnyConfig['extendNodeSchema']>(
38
- e,
39
- 'extendNodeSchema',
40
- context,
30
+ const nodes = Object.fromEntries(
31
+ nodeExtensions.map(extension => {
32
+ const extensionAttributes = allAttributes.filter(
33
+ attribute => attribute.type === extension.name,
41
34
  )
42
-
43
- return {
44
- ...fields,
45
- ...(extendNodeSchema ? extendNodeSchema(extension) : {}),
35
+ const context = {
36
+ name: extension.name,
37
+ options: extension.options,
38
+ storage: extension.storage,
46
39
  }
47
- }, {})
48
-
49
- const schema: NodeSpec = cleanUpSchemaItem({
50
- ...extraNodeFields,
51
- content: callOrReturn(getExtensionField<NodeConfig['content']>(extension, 'content', context)),
52
- marks: callOrReturn(getExtensionField<NodeConfig['marks']>(extension, 'marks', context)),
53
- group: callOrReturn(getExtensionField<NodeConfig['group']>(extension, 'group', context)),
54
- inline: callOrReturn(getExtensionField<NodeConfig['inline']>(extension, 'inline', context)),
55
- atom: callOrReturn(getExtensionField<NodeConfig['atom']>(extension, 'atom', context)),
56
- selectable: callOrReturn(getExtensionField<NodeConfig['selectable']>(extension, 'selectable', context)),
57
- draggable: callOrReturn(getExtensionField<NodeConfig['draggable']>(extension, 'draggable', context)),
58
- code: callOrReturn(getExtensionField<NodeConfig['code']>(extension, 'code', context)),
59
- defining: callOrReturn(getExtensionField<NodeConfig['defining']>(extension, 'defining', context)),
60
- isolating: callOrReturn(getExtensionField<NodeConfig['isolating']>(extension, 'isolating', context)),
61
- attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {
62
- return [extensionAttribute.name, { default: extensionAttribute?.attribute?.default }]
63
- })),
64
- })
65
-
66
- const parseHTML = callOrReturn(getExtensionField<NodeConfig['parseHTML']>(extension, 'parseHTML', context))
67
-
68
- if (parseHTML) {
69
- schema.parseDOM = parseHTML
70
- .map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes))
71
- }
72
-
73
- const renderHTML = getExtensionField<NodeConfig['renderHTML']>(extension, 'renderHTML', context)
74
-
75
- if (renderHTML) {
76
- schema.toDOM = node => renderHTML({
77
- node,
78
- HTMLAttributes: getRenderedAttributes(node, extensionAttributes),
40
+
41
+ const extraNodeFields = extensions.reduce((fields, e) => {
42
+ const extendNodeSchema = getExtensionField<AnyConfig['extendNodeSchema']>(
43
+ e,
44
+ 'extendNodeSchema',
45
+ context,
46
+ )
47
+
48
+ return {
49
+ ...fields,
50
+ ...(extendNodeSchema ? extendNodeSchema(extension) : {}),
51
+ }
52
+ }, {})
53
+
54
+ const schema: NodeSpec = cleanUpSchemaItem({
55
+ ...extraNodeFields,
56
+ content: callOrReturn(
57
+ getExtensionField<NodeConfig['content']>(extension, 'content', context),
58
+ ),
59
+ marks: callOrReturn(getExtensionField<NodeConfig['marks']>(extension, 'marks', context)),
60
+ group: callOrReturn(getExtensionField<NodeConfig['group']>(extension, 'group', context)),
61
+ inline: callOrReturn(getExtensionField<NodeConfig['inline']>(extension, 'inline', context)),
62
+ atom: callOrReturn(getExtensionField<NodeConfig['atom']>(extension, 'atom', context)),
63
+ selectable: callOrReturn(
64
+ getExtensionField<NodeConfig['selectable']>(extension, 'selectable', context),
65
+ ),
66
+ draggable: callOrReturn(
67
+ getExtensionField<NodeConfig['draggable']>(extension, 'draggable', context),
68
+ ),
69
+ code: callOrReturn(getExtensionField<NodeConfig['code']>(extension, 'code', context)),
70
+ defining: callOrReturn(
71
+ getExtensionField<NodeConfig['defining']>(extension, 'defining', context),
72
+ ),
73
+ isolating: callOrReturn(
74
+ getExtensionField<NodeConfig['isolating']>(extension, 'isolating', context),
75
+ ),
76
+ attrs: Object.fromEntries(
77
+ extensionAttributes.map(extensionAttribute => {
78
+ return [extensionAttribute.name, { default: extensionAttribute?.attribute?.default }]
79
+ }),
80
+ ),
79
81
  })
80
- }
81
82
 
82
- const renderText = getExtensionField<NodeConfig['renderText']>(extension, 'renderText', context)
83
+ const parseHTML = callOrReturn(
84
+ getExtensionField<NodeConfig['parseHTML']>(extension, 'parseHTML', context),
85
+ )
83
86
 
84
- if (renderText) {
85
- schema.toText = renderText
86
- }
87
+ if (parseHTML) {
88
+ schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes))
89
+ }
87
90
 
88
- return [extension.name, schema]
89
- }))
91
+ const renderHTML = getExtensionField<NodeConfig['renderHTML']>(
92
+ extension,
93
+ 'renderHTML',
94
+ context,
95
+ )
90
96
 
91
- const marks = Object.fromEntries(markExtensions.map(extension => {
92
- const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name)
93
- const context = {
94
- name: extension.name,
95
- options: extension.options,
96
- storage: extension.storage,
97
- }
97
+ if (renderHTML) {
98
+ schema.toDOM = node => renderHTML({
99
+ node,
100
+ HTMLAttributes: getRenderedAttributes(node, extensionAttributes),
101
+ })
102
+ }
98
103
 
99
- const extraMarkFields = extensions.reduce((fields, e) => {
100
- const extendMarkSchema = getExtensionField<AnyConfig['extendMarkSchema']>(
101
- e,
102
- 'extendMarkSchema',
104
+ const renderText = getExtensionField<NodeConfig['renderText']>(
105
+ extension,
106
+ 'renderText',
103
107
  context,
104
108
  )
105
109
 
106
- return {
107
- ...fields,
108
- ...(extendMarkSchema ? extendMarkSchema(extension) : {}),
110
+ if (renderText) {
111
+ schema.toText = renderText
109
112
  }
110
- }, {})
111
-
112
- const schema: MarkSpec = cleanUpSchemaItem({
113
- ...extraMarkFields,
114
- inclusive: callOrReturn(getExtensionField<MarkConfig['inclusive']>(extension, 'inclusive', context)),
115
- excludes: callOrReturn(getExtensionField<MarkConfig['excludes']>(extension, 'excludes', context)),
116
- group: callOrReturn(getExtensionField<MarkConfig['group']>(extension, 'group', context)),
117
- spanning: callOrReturn(getExtensionField<MarkConfig['spanning']>(extension, 'spanning', context)),
118
- code: callOrReturn(getExtensionField<MarkConfig['code']>(extension, 'code', context)),
119
- attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {
120
- return [extensionAttribute.name, { default: extensionAttribute?.attribute?.default }]
121
- })),
122
- })
123
-
124
- const parseHTML = callOrReturn(getExtensionField<MarkConfig['parseHTML']>(extension, 'parseHTML', context))
125
-
126
- if (parseHTML) {
127
- schema.parseDOM = parseHTML
128
- .map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes))
129
- }
130
-
131
- const renderHTML = getExtensionField<MarkConfig['renderHTML']>(extension, 'renderHTML', context)
132
-
133
- if (renderHTML) {
134
- schema.toDOM = mark => renderHTML({
135
- mark,
136
- HTMLAttributes: getRenderedAttributes(mark, extensionAttributes),
113
+
114
+ return [extension.name, schema]
115
+ }),
116
+ )
117
+
118
+ const marks = Object.fromEntries(
119
+ markExtensions.map(extension => {
120
+ const extensionAttributes = allAttributes.filter(
121
+ attribute => attribute.type === extension.name,
122
+ )
123
+ const context = {
124
+ name: extension.name,
125
+ options: extension.options,
126
+ storage: extension.storage,
127
+ }
128
+
129
+ const extraMarkFields = extensions.reduce((fields, e) => {
130
+ const extendMarkSchema = getExtensionField<AnyConfig['extendMarkSchema']>(
131
+ e,
132
+ 'extendMarkSchema',
133
+ context,
134
+ )
135
+
136
+ return {
137
+ ...fields,
138
+ ...(extendMarkSchema ? extendMarkSchema(extension) : {}),
139
+ }
140
+ }, {})
141
+
142
+ const schema: MarkSpec = cleanUpSchemaItem({
143
+ ...extraMarkFields,
144
+ inclusive: callOrReturn(
145
+ getExtensionField<MarkConfig['inclusive']>(extension, 'inclusive', context),
146
+ ),
147
+ excludes: callOrReturn(
148
+ getExtensionField<MarkConfig['excludes']>(extension, 'excludes', context),
149
+ ),
150
+ group: callOrReturn(getExtensionField<MarkConfig['group']>(extension, 'group', context)),
151
+ spanning: callOrReturn(
152
+ getExtensionField<MarkConfig['spanning']>(extension, 'spanning', context),
153
+ ),
154
+ code: callOrReturn(getExtensionField<MarkConfig['code']>(extension, 'code', context)),
155
+ attrs: Object.fromEntries(
156
+ extensionAttributes.map(extensionAttribute => {
157
+ return [extensionAttribute.name, { default: extensionAttribute?.attribute?.default }]
158
+ }),
159
+ ),
137
160
  })
138
- }
139
161
 
140
- return [extension.name, schema]
141
- }))
162
+ const parseHTML = callOrReturn(
163
+ getExtensionField<MarkConfig['parseHTML']>(extension, 'parseHTML', context),
164
+ )
165
+
166
+ if (parseHTML) {
167
+ schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes))
168
+ }
169
+
170
+ const renderHTML = getExtensionField<MarkConfig['renderHTML']>(
171
+ extension,
172
+ 'renderHTML',
173
+ context,
174
+ )
175
+
176
+ if (renderHTML) {
177
+ schema.toDOM = mark => renderHTML({
178
+ mark,
179
+ HTMLAttributes: getRenderedAttributes(mark, extensionAttributes),
180
+ })
181
+ }
182
+
183
+ return [extension.name, schema]
184
+ }),
185
+ )
142
186
 
143
187
  return new Schema({
144
188
  topNode,
@@ -1,4 +1,4 @@
1
- import { MarkType, NodeType, Schema } from 'prosemirror-model'
1
+ import { MarkType, NodeType, Schema } from '@tiptap/pm/model'
2
2
 
3
3
  export function getSchemaTypeByName(name: string, schema: Schema): NodeType | MarkType | null {
4
4
  return schema.nodes[name] || schema.marks[name] || null
@@ -1,4 +1,4 @@
1
- import { Schema } from 'prosemirror-model'
1
+ import { Schema } from '@tiptap/pm/model'
2
2
 
3
3
  export function getSchemaTypeNameByName(name: string, schema: Schema): 'node' | 'mark' | null {
4
4
  if (schema.nodes[name]) {
@@ -1,4 +1,4 @@
1
- import { Node as ProseMirrorNode } from 'prosemirror-model'
1
+ import { Node as ProseMirrorNode } from '@tiptap/pm/model'
2
2
 
3
3
  import { TextSerializer } from '../types'
4
4
  import { getTextBetween } from './getTextBetween'
@@ -6,8 +6,8 @@ import { getTextBetween } from './getTextBetween'
6
6
  export function getText(
7
7
  node: ProseMirrorNode,
8
8
  options?: {
9
- blockSeparator?: string,
10
- textSerializers?: Record<string, TextSerializer>,
9
+ blockSeparator?: string
10
+ textSerializers?: Record<string, TextSerializer>
11
11
  },
12
12
  ) {
13
13
  const range = {
@@ -1,4 +1,4 @@
1
- import { Node as ProseMirrorNode } from 'prosemirror-model'
1
+ import { Node as ProseMirrorNode } from '@tiptap/pm/model'
2
2
 
3
3
  import { Range, TextSerializer } from '../types'
4
4
 
@@ -6,15 +6,12 @@ export function getTextBetween(
6
6
  startNode: ProseMirrorNode,
7
7
  range: Range,
8
8
  options?: {
9
- blockSeparator?: string,
10
- textSerializers?: Record<string, TextSerializer>,
9
+ blockSeparator?: string
10
+ textSerializers?: Record<string, TextSerializer>
11
11
  },
12
12
  ): string {
13
13
  const { from, to } = range
14
- const {
15
- blockSeparator = '\n\n',
16
- textSerializers = {},
17
- } = options || {}
14
+ const { blockSeparator = '\n\n', textSerializers = {} } = options || {}
18
15
  let text = ''
19
16
  let separated = true
20
17
 
@@ -1,4 +1,4 @@
1
- import { ResolvedPos } from 'prosemirror-model'
1
+ import { ResolvedPos } from '@tiptap/pm/model'
2
2
 
3
3
  export const getTextContentFromNodes = ($from: ResolvedPos, maxMatch = 500) => {
4
4
  let textBefore = ''
@@ -10,8 +10,13 @@ export const getTextContentFromNodes = ($from: ResolvedPos, maxMatch = 500) => {
10
10
  sliceEndPos,
11
11
  (node, pos, parent, index) => {
12
12
  const chunk = node.type.spec.toText?.({
13
- node, pos, parent, index,
14
- }) || node.textContent || '%leaf%'
13
+ node,
14
+ pos,
15
+ parent,
16
+ index,
17
+ })
18
+ || node.textContent
19
+ || '%leaf%'
15
20
 
16
21
  textBefore += chunk.slice(0, Math.max(0, sliceEndPos - pos))
17
22
  },
@@ -1,10 +1,11 @@
1
- import { Schema } from 'prosemirror-model'
1
+ import { Schema } from '@tiptap/pm/model'
2
2
 
3
3
  import { TextSerializer } from '../types'
4
4
 
5
5
  export function getTextSerializersFromSchema(schema: Schema): Record<string, TextSerializer> {
6
- return Object.fromEntries(Object
7
- .entries(schema.nodes)
8
- .filter(([, node]) => node.spec.toText)
9
- .map(([name, node]) => [name, node.spec.toText]))
6
+ return Object.fromEntries(
7
+ Object.entries(schema.nodes)
8
+ .filter(([, node]) => node.spec.toText)
9
+ .map(([name, node]) => [name, node.spec.toText]),
10
+ )
10
11
  }
@@ -1,4 +1,4 @@
1
- import { ParseRule } from 'prosemirror-model'
1
+ import { ParseRule } from '@tiptap/pm/model'
2
2
 
3
3
  import { ExtensionAttribute } from '../types'
4
4
  import { fromString } from '../utilities/fromString'
@@ -9,7 +9,10 @@ import { fromString } from '../utilities/fromString'
9
9
  * @param parseRule ProseMirror ParseRule
10
10
  * @param extensionAttributes List of attributes to inject
11
11
  */
12
- export function injectExtensionAttributesToParseRule(parseRule: ParseRule, extensionAttributes: ExtensionAttribute[]): ParseRule {
12
+ export function injectExtensionAttributesToParseRule(
13
+ parseRule: ParseRule,
14
+ extensionAttributes: ExtensionAttribute[],
15
+ ): ParseRule {
13
16
  if (parseRule.style) {
14
17
  return parseRule
15
18
  }
@@ -17,9 +20,7 @@ export function injectExtensionAttributesToParseRule(parseRule: ParseRule, exten
17
20
  return {
18
21
  ...parseRule,
19
22
  getAttrs: node => {
20
- const oldAttributes = parseRule.getAttrs
21
- ? parseRule.getAttrs(node)
22
- : parseRule.attrs
23
+ const oldAttributes = parseRule.getAttrs ? parseRule.getAttrs(node) : parseRule.attrs
23
24
 
24
25
  if (oldAttributes === false) {
25
26
  return false
@@ -1,10 +1,14 @@
1
- import { EditorState } from 'prosemirror-state'
1
+ import { EditorState } from '@tiptap/pm/state'
2
2
 
3
3
  import { getSchemaTypeNameByName } from './getSchemaTypeNameByName'
4
4
  import { isMarkActive } from './isMarkActive'
5
5
  import { isNodeActive } from './isNodeActive'
6
6
 
7
- export function isActive(state: EditorState, name: string | null, attributes: Record<string, any> = {}): boolean {
7
+ export function isActive(
8
+ state: EditorState,
9
+ name: string | null,
10
+ attributes: Record<string, any> = {},
11
+ ): boolean {
8
12
  if (!name) {
9
13
  return isNodeActive(state, null, attributes) || isMarkActive(state, null, attributes)
10
14
  }
@@ -1,5 +1,5 @@
1
- import { MarkType } from 'prosemirror-model'
2
- import { EditorState } from 'prosemirror-state'
1
+ import { MarkType } from '@tiptap/pm/model'
2
+ import { EditorState } from '@tiptap/pm/state'
3
3
 
4
4
  import { MarkRange } from '../types'
5
5
  import { objectIncludes } from '../utilities/objectIncludes'
@@ -11,9 +11,7 @@ export function isMarkActive(
11
11
  attributes: Record<string, any> = {},
12
12
  ): boolean {
13
13
  const { empty, ranges } = state.selection
14
- const type = typeOrName
15
- ? getMarkType(typeOrName, state.schema)
16
- : null
14
+ const type = typeOrName ? getMarkType(typeOrName, state.schema) : null
17
15
 
18
16
  if (empty) {
19
17
  return !!(state.storedMarks || state.selection.$from.marks())
@@ -45,11 +43,13 @@ export function isMarkActive(
45
43
 
46
44
  selectionRange += range
47
45
 
48
- markRanges.push(...node.marks.map(mark => ({
49
- mark,
50
- from: relativeFrom,
51
- to: relativeTo,
52
- })))
46
+ markRanges.push(
47
+ ...node.marks.map(mark => ({
48
+ mark,
49
+ from: relativeFrom,
50
+ to: relativeTo,
51
+ })),
52
+ )
53
53
  })
54
54
  })
55
55
 
@@ -77,16 +77,13 @@ export function isMarkActive(
77
77
  return true
78
78
  }
79
79
 
80
- return markRange.mark.type !== type
81
- && markRange.mark.type.excludes(type)
80
+ return markRange.mark.type !== type && markRange.mark.type.excludes(type)
82
81
  })
83
82
  .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0)
84
83
 
85
84
  // we only include the result of `excludedRange`
86
85
  // if there is a match at all
87
- const range = matchedRange > 0
88
- ? matchedRange + excludedRange
89
- : matchedRange
86
+ const range = matchedRange > 0 ? matchedRange + excludedRange : matchedRange
90
87
 
91
88
  return range >= selectionRange
92
89
  }
@@ -1,5 +1,5 @@
1
- import { NodeType } from 'prosemirror-model'
2
- import { EditorState } from 'prosemirror-state'
1
+ import { NodeType } from '@tiptap/pm/model'
2
+ import { EditorState } from '@tiptap/pm/state'
3
3
 
4
4
  import { NodeRange } from '../types'
5
5
  import { objectIncludes } from '../utilities/objectIncludes'
@@ -11,9 +11,7 @@ export function isNodeActive(
11
11
  attributes: Record<string, any> = {},
12
12
  ): boolean {
13
13
  const { from, to, empty } = state.selection
14
- const type = typeOrName
15
- ? getNodeType(typeOrName, state.schema)
16
- : null
14
+ const type = typeOrName ? getNodeType(typeOrName, state.schema) : null
17
15
 
18
16
  const nodeRanges: NodeRange[] = []
19
17
 
@@ -47,8 +45,7 @@ export function isNodeActive(
47
45
  return !!matchedNodeRanges.length
48
46
  }
49
47
 
50
- const range = matchedNodeRanges
51
- .reduce((sum, nodeRange) => sum + nodeRange.to - nodeRange.from, 0)
48
+ const range = matchedNodeRanges.reduce((sum, nodeRange) => sum + nodeRange.to - nodeRange.from, 0)
52
49
 
53
50
  return range >= selectionRange
54
51
  }
@@ -1,4 +1,4 @@
1
- import { Node as ProseMirrorNode } from 'prosemirror-model'
1
+ import { Node as ProseMirrorNode } from '@tiptap/pm/model'
2
2
 
3
3
  export function isNodeEmpty(node: ProseMirrorNode): boolean {
4
4
  const defaultContent = node.type.createAndFill()?.toJSON()
@@ -1,4 +1,4 @@
1
- import { NodeSelection } from 'prosemirror-state'
1
+ import { NodeSelection } from '@tiptap/pm/state'
2
2
 
3
3
  export function isNodeSelection(value: unknown): value is NodeSelection {
4
4
  return value instanceof NodeSelection
@@ -1,4 +1,4 @@
1
- import { TextSelection } from 'prosemirror-state'
1
+ import { TextSelection } from '@tiptap/pm/state'
2
2
 
3
3
  export function isTextSelection(value: unknown): value is TextSelection {
4
4
  return value instanceof TextSelection
@@ -1,4 +1,4 @@
1
- import { EditorView } from 'prosemirror-view'
1
+ import { EditorView } from '@tiptap/pm/view'
2
2
 
3
3
  import { minMax } from '../utilities/minMax'
4
4
 
@@ -1,5 +1,5 @@
1
- import { Node as ProseMirrorNode } from 'prosemirror-model'
2
- import { Selection, TextSelection } from 'prosemirror-state'
1
+ import { Node as ProseMirrorNode } from '@tiptap/pm/model'
2
+ import { Selection, TextSelection } from '@tiptap/pm/state'
3
3
 
4
4
  import { FocusPosition } from '../types'
5
5
  import { minMax } from '../utilities/minMax'
@@ -8,7 +8,6 @@ export function resolveFocusPosition(
8
8
  doc: ProseMirrorNode,
9
9
  position: FocusPosition = null,
10
10
  ): Selection | null {
11
-
12
11
  if (!position) {
13
12
  return null
14
13
  }
@@ -1,5 +1,5 @@
1
- import { Selection, Transaction } from 'prosemirror-state'
2
- import { ReplaceAroundStep, ReplaceStep } from 'prosemirror-transform'
1
+ import { Selection, Transaction } from '@tiptap/pm/state'
2
+ import { ReplaceAroundStep, ReplaceStep } from '@tiptap/pm/transform'
3
3
 
4
4
  // source: https://github.com/ProseMirror/prosemirror-state/blob/master/src/selection.js#L466
5
5
  export function selectionToInsertionEnd(tr: Transaction, startLen: number, bias: number) {
@@ -1,4 +1,4 @@
1
- import { MarkType } from 'prosemirror-model'
1
+ import { MarkType } from '@tiptap/pm/model'
2
2
 
3
3
  import { getMarksBetween } from '../helpers/getMarksBetween'
4
4
  import { InputRule, InputRuleFinder } from '../InputRule'
@@ -10,14 +10,13 @@ import { callOrReturn } from '../utilities/callOrReturn'
10
10
  * matched text is typed into it.
11
11
  */
12
12
  export function markInputRule(config: {
13
- find: InputRuleFinder,
14
- type: MarkType,
13
+ find: InputRuleFinder
14
+ type: MarkType
15
15
  getAttributes?:
16
16
  | Record<string, any>
17
17
  | ((match: ExtendedRegExpMatchArray) => Record<string, any>)
18
18
  | false
19
19
  | null
20
- ,
21
20
  }) {
22
21
  return new InputRule({
23
22
  find: config.find,
@@ -1,4 +1,4 @@
1
- import { NodeType } from 'prosemirror-model'
1
+ import { NodeType } from '@tiptap/pm/model'
2
2
 
3
3
  import { InputRule, InputRuleFinder } from '../InputRule'
4
4
  import { ExtendedRegExpMatchArray } from '../types'
@@ -9,14 +9,13 @@ import { callOrReturn } from '../utilities/callOrReturn'
9
9
  * matched text is typed into it.
10
10
  */
11
11
  export function nodeInputRule(config: {
12
- find: InputRuleFinder,
13
- type: NodeType,
12
+ find: InputRuleFinder
13
+ type: NodeType
14
14
  getAttributes?:
15
15
  | Record<string, any>
16
16
  | ((match: ExtendedRegExpMatchArray) => Record<string, any>)
17
17
  | false
18
18
  | null
19
- ,
20
19
  }) {
21
20
  return new InputRule({
22
21
  find: config.find,
@@ -1,4 +1,4 @@
1
- import { NodeType } from 'prosemirror-model'
1
+ import { NodeType } from '@tiptap/pm/model'
2
2
 
3
3
  import { InputRule, InputRuleFinder } from '../InputRule'
4
4
  import { ExtendedRegExpMatchArray } from '../types'
@@ -11,14 +11,13 @@ import { callOrReturn } from '../utilities/callOrReturn'
11
11
  * only occur at the start of a textblock.
12
12
  */
13
13
  export function textblockTypeInputRule(config: {
14
- find: InputRuleFinder,
15
- type: NodeType,
14
+ find: InputRuleFinder
15
+ type: NodeType
16
16
  getAttributes?:
17
17
  | Record<string, any>
18
18
  | ((match: ExtendedRegExpMatchArray) => Record<string, any>)
19
19
  | false
20
20
  | null
21
- ,
22
21
  }) {
23
22
  return new InputRule({
24
23
  find: config.find,